본문 바로가기

전체 글50

[Java] Java 메모리 구조 (JVM, Stack, Heap, Static) Java의 메모리구조를 이해하기 위해서는 JVM을 어느정도 알아야한다. 사실 JVM의 메모리구조라고 하는 것이 맞을수도 있겠다. 본격적인 시작 전에 JVM의 동작 과정을 간단하게 설명해보겠다. 사전지식1 (JVM의 구조와 동작 과정) 먼저, 우리가 java 언어로 작성한 코드가 어떻게 프로그램 위에서 돌아가는지를 알아야한다. 1. 개발자가 코딩을 하면 .java 파일이 생성이 된다. 2. .java 파일은 자바컴파일러(javac)에 의해 .class 파일(바이트 코드)로 컴파일된다. 3. .class 파일은 JVM의 ClassLoader에 의해 Runtime Data Area에 로드된다. 4. Runtime Data Area에 로드된 .class들은 Execution Engine을 통해 해석된다. (**.. 2024. 1. 30.
[2023회고] 1일 1커밋 이제 안녕! 2022년 1월 27일 부터 시작했던 1일 1커밋을 오늘부로 그만 놔주려고한다.😮 (공부법을 바꿔보려고 그만두는 것! 언젠가 다시 시작할 수도 있다!) 그만두려고 마음을 먹은 이유는 아래와 같다. 코드에 대한 이해 없이 일단 커밋하고 보는 상황이 발생. 초반에야 토이프로젝트도 해야하고, 강의도 들어야했기 때문에 별 무리 없이 일일커밋을 진행했다. 그 땐 그저 기능을 구현하는 것에 집중했기 때문에, 코드를 이해하지 못했어도 기능이 정상적으로 작동하면 그냥 넘어가는 경우가 많았다. 하지만 지금은 상황이 다르다. 작고 귀엽지만 1년이라는 경력도 생겼고, 어느덧 '개발'이라는 세계에 들어온지 2년차가 되었다. 이제는 코드 한 줄을 쓰더라도 이유가 있어야하고, 내가 짠 코드에 대한 이해가 필수라고 생각한다. 그렇.. 2023. 6. 1.
[개발일지] Maven ➡ Gradle 마이그레이션 하기 Spring Framework ➡ Spring Boot 마이그레이션에 이어 이번엔 Maven ➡ Gradle 마이그레이션 과정이다. 빌드툴을 변경해주는 것도 마이그레이션이라고 하는지는 잘 모르겠다!!!!!! 그냥 변경하기라고 해야하나!!! 근데 난 위 과정들을 한 번에 하고 있기 때문에 그냥 마이그레이션이라고 하겠다! 바로 시작해보도록 하자. Maven -> Gradle Gradle 설치 maven빌드를 gradle로 변경시키기 위해선 gradle을 설치해주어야한다. 설치방법 1. https://gradle.org/releases/ 로 들어가서 원하는 버전의 binary 파일을 다운로드한다. 나는 7.6버전을 선택했는데, 버전의 차이를 잘 모르다보니 일단 spring.io로 gradle프로젝트를 만들었을.. 2023. 4. 18.
[개발일지] Spring Framework ➡ Spring Boot 마이그레이션 하기 1년 전쯤 만들었던 Spring Framework 기반의 개인 프로젝트를 Spring Boot로 마이그레이션을 해보기로 했다. 마이그레이션이 끝나면 다시 이 프로젝트를 살려서 더 기능을 붙이고 배포까지 해보는 게 목표다! 마이그레이션을 진행할 프로젝트(RunningGo)의 개발환경은 아래와 같다. (OS는 Window를 사용한다.) [Java11, Spring Framework 5.0, Maven 3.8, MyBatis, MySQL 8, JSP, JQuery] 마이그레이션이 진행될 환경과 버전은 아래와 같다. [Java11, Spring Boot 2.7, Gradle, MyBatis, MySQL8] MyBatis가 아닌 JPA로 바꿀까 고민했지만, 아직은 JPA를 배우고 있는 입장이라 일단 마이그레이션을.. 2023. 4. 16.
[개발일지] base64가 DB에 저장되면 일어나는 일 문제 얼마 전 내가 맡고 있는 서비스의 board-api에서 부하가 많이 걸린다며(?) 한 번 확인해 달라는 요청이 들어왔다. 해당 서비스의 board-api는 지금은 퇴사한 직원이 만든 api이고, 내가 투입되던 시점(7월)부터는 큰 이슈가 없었기에 건드린 적이 없는 api였다. 원인 분석 어떤 작업에서 부하가 많이 걸리는지 확인하기 위해 먼저 로그를 살펴봤다. 로그창을 열자마자 알 수 없는 문자들이 촤라라라라라라라라락 지나갔고, 일단 해당 로그를 뱉어내는 api를 호출해 봤다. 해당 api는 게시글 리스트를 불러오는 api였으며, 이를 호출했을 때 응답 시간이 오래 걸리는 것(6초~15초)을 확인했다. 뭐지? 데이터가 이렇게 많지 않을 텐데? [문제 해결 전 api 응답속도] 게시판 응답 데이터 개수.. 2023. 2. 21.
[리뷰][BOOK] 읽기 좋은 코드가 좋은 코드다 [읽기 좋은 코드가 좋은 코드다] 개발자는 누구나 자신의 코드가 클린코드이기를 원한다. 하지만 클린코드라는 개념은 뜬 구름 잡는 얘기일 수 밖에 없다. 왜냐? 답이 없기 때문이다. 내가 작성한 코드가 누군가에겐 클린코드, 또 다른 누군가에겐 냄새나는(?) 코드일 수 있다. 그럼에도 개발자들은 이 뜬 구름을 잡으려고 여러 서적도 읽고, 고민하고 적용도 해보며 클린코드를 작성하기 위해 노력을 하고 있다. 나도 같은 고민을 하며 어떤 서적을 읽어볼까 고민하던 도중 해당 책을 알게되어 읽어본 후 후기를 남긴다. 1. 책을 선택한 이유 2. 내용 요약 3. 후기 1. 책을 선택한 이유 '대체 클린코드가 뭐야? 코드가 짧아야한다고? 변수명을 알아보기 쉽게 쓰는거라고? 그럼 이게 클린코드야?' 개발을 처음 시작했을 .. 2023. 2. 17.