일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- nGrinder
- 멘토링
- MySQL
- 코딩테스트
- grafana
- DB
- backend
- 알고리즘
- error
- 에프랩
- IntelliJ
- 자바
- FLAB
- java
- F-Lab
- AWS
- 백준
- 트러블슈팅
- EC2
- 백엔드
- 부트캠프
- Spring
- 플러터
- github
- 성능테스트
- 데이터구조
- Flutter
- 도커
- 후기
- 자바백엔드
- Today
- Total
목록전체 글 (157)
민스씨의 일취일장

JPA Fetch Join에 distinct 적용안해도 중복이 제거 돼있는 이슈에 대한 내용이다.상황인프런 강의의 '섹션5 - 주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화' 실습 중 distinct를 적용하지 않았음에도 중복이 제거되는 상황이 발생했다.혹시 코드를 잘못적은 것은 아닌지 여러번 확인해 보았지만 코드에 상에는 문제가 없어 보였다. 원인을 찾던 중, 버전 차이 때문은 아닌지 알아보았다.원인파악현재 실습을 진행환경은 Java 17, 스프링부트 3.3이다.스프링 3.3은 HIbernate 6을 사용한다.Hibernate 6 공식문서를 확인해 보면, 해당 내용이 명시 되어있다.하이버네이트 6부터는 distinct를 적용하지 않아도 중복 데이터를 메모리에서 제거하기 때문에, dis..

프로젝트 재실행 없이 UI 변경사항 반영되도록 하는 방법에 대한 글이다.Thymeleaf - 재실행 없이 변경사항 반영되도록 하는 방법 타임리프(Thymeleaf)와 같은 템플릿 엔진을 이용해 UI를 개발하고 있을 때, 변경사항이 제대로 반영되었는지 확인하기 위해 반복적으로 프로젝트 전체를 재실행하는 것은 생각보다 많은 시간을 잡아먹는다. 그렇다고 프로젝트 Rebuild를 진행한다고 반영되는 것도 아니다. 이럴 때 사용하면 좋은 도구가 있어 소개하려고 한다.devtoolsbuild.gradle(또는 pom.xml)에서 devtools를 추가해주면 된다. devtools는 알아서 캐시를 지워주고 UI를 빌드해줘, 프로젝트를 재싱행하지 않고, 브라우저 새로고침만으로 변경사항을 바로 확인할 수 있도록 해주는 ..

백준 1524를 해결하기 위해 작성한 코드를 리팩토링하는 글입니다.코드 클리닉 - 백준 1524 코드 리뷰 작성한 코드처음에 작성한 로직이다. Queue를 사용할 때 poll()만 사용한 한계가 엿보인다. 로직이 다소 복잡해, 어떤 걸 표현하고 싶은지 직관적으로 이해가 잘 안간다.private static String play(PriorityQueue A, PriorityQueue B){ int a = A.poll(); int b = B.poll(); while(!A.isEmpty() && !B.isEmpty()){ if (a >= b) { b = B.poll(); } else { a = A.poll(); } ..

백준 31217을 해결하기 위해 작성한 코드를 리뷰하는 글입니다.코드 클리닉 - 백준 31217 코드 리뷰요즘 '실용주의 프로그래머'라는 책을 읽고 있다. 이 책에서 '깨진 창문을 만들지 말라'는 팁을 받았다. 이 이야기를 듣고 조금 충격적이었다. 내가 작성하는 코드가 수없이 많은 깨진 창문들이지 않았을까 하는 생각에. 더이상 깨진 창문을 만들지 않고 싶어 작성하는 코드들을 들여다 보려고 한다. 오늘 푼 백준 31217 문제의 코드를 살펴보면서, 내가 작성한 코드가 깨진 창문인지 살펴보고, 깨져 있다면 수리해 보려고 한다.작성한 코드import java.util.*;import java.io.*;public class baekjoon31217 { // Part 1 static int N, M;..

F-Lab Java Backend 과정 5개월 후기 글이다.F-Lab Java Backend 과정 멘토링 5개월 후기에프랩 멘토링을 한 달 연장하였고, 5개월을 끝으로 5개월의 멘토링을 마무리하였다.공채 시즌4개월차와 5개월차는 공채 시즌으로 다양한 기업에 원서를 쓰고 코딩테스트를 준비하면서 보냈다.자기소개서프로젝트를 계획적으로 진행하기 어려운 가장 큰 이유가 자기소개서였다. 프로젝트도 시간이 얼마나 걸릴지 완벽히 계획하기 어려운데, 자기소개서는 더 예측하기 어려웠다. 과거의 나의 이야기를 쓰는 것일 뿐인데 참 작성이 안된다. 하지만 그렇다고 시스템에 의지해 투두리스트를 채우듯 하기엔 글쓰기가 그정도로 능숙하진 못하다. 결론적으로 정말 많은 시간을 자기소개서를 작성하는 시간으로 보냈다. 스스로를 돌아보는..

F-Lab Java Backend 과정 4개월 후기 글이다.F-Lab Java Backend 과정 멘토링 4개월 후기원래 처음 계획된 F-Lab에서의 4개월이 끝났다.네 달 동안 진행 내용공부 주제매 달 후기글에 작성하는 커리큘럼 내용이다.1주차 : 객체지향 프로그래밍 / 객체지향 4가지 속성/ 자바 컴파일 과정2주차 : JVM 메모리 구조 / 자바 GC / Thread Safty와 동기화 / static, final3주차 : Exception, Generic, Collection, Synchronized Collection, Concurrent Collection, HashMap4주차 : JSP, Servlet, MVC Pattern, Cookie, Session, HTTP Method, HTTP St..

F-Lab Java Backend 과정 17주차~18주차 후기글입니다.F-Lab Java Backend 과자어 17주차 ~ 18주차17주차 ~ 18주차 멘토링 주제라이브 코딩1. 동시성 컨트롤이론1. Database View2. url 요청 보낸 후 일어나는 일들3. RDBMS vs. NoSQL4. LRU/LFU/FIFO 캐시 알고리즘프로젝트라이브 코딩17주차에는 16주차에 이어서 동시성 컨트롤에 대한 라이브 코딩을 진행했다. 동시성 컨트롤이라는 걸 한다면 직관적으로 아주 간단하게 synchronized를 적용하는 것을 생각했었다. 하지만 여기까지만 해서는 단순히 동시성 컨트롤을 했지만, 잘했다 소리는 듣지 못한다. 왜냐하면 synchronized는 해당 로직에 접근하는 모든 경우에 lock을 걸기 때문..

Java Backend 과정 16주차 후기글입니다.F-Lab Java Backend 과정 16주차16주차 멘토링 주제라이브 코딩이론1. 객체 직렬화(Serialization)와 역직렬화(Deserialization)2. Java Thread 생명주기멘토링이 일단 막바지(연장 연부가 결정이 안돼서)이고 요즘 한창 취업 원서 접수하고 있어 취업 관련 주제에 집중하고 있다. 하지만 프로젝트는 여전히 조용히 계속 진행중에 있다!라이브 코딩혹시 발생할 수 있는 라이브 코딩을 대비하기 위해 이번 멘토링 시간엔 짧은 원서 접수 이야기를 나눈 뒤 라이브 코딩에 집중했다. 지난 라이브 코딩은 알고리즘에 포커스를 맞췄다면, 이번에는 실무관점에서 구현에 포커스를 맞춰 진행했다. 빈 클래스 2개에 내용을 넣어가는 방식으로 진..

PaymentService에 적용된 Redis Cache를 분산 캐시(distributed cache)로 전환하는 과정(GitHub Issues #28)에 대한 글이다.Redis를 클러스터로 만들어 분산캐시 도입하기작업 순서 계획1. redis.conf 작성 및 적용2. 새로운 Redis용 인스턴스 생성3. Redis 노드(컨테이너)들을 클러스터 구성(생성) 명령 수행4. Redis 분산 캐시를 사용할 수 있도록 애플리케이션 설정 수정1. redis.conf 작성 및 적용nginx.conf와 마찬가지로, redis.conf를 작성해준다. 이 파일은 Redis 컨테이너 실행시 Volume으로 연결 해 줄 것이다. 경로는 어디다 해도 상관 없지만 민스씨 본인은 redis/redis.conf 경로로 할 것이다..