마크다운으로 작성한 글들을 정리해서 블로그에 올리고 있습니다.
아래 링크를 클릭하면 블로그로 연결되고, 아직 정리하지 않은 글은 마크다운으로 연결됩니다.
- Java List의 두가지 remove 메서드 : 값과 인덱스 어떤 게 호출될까?
- Java for-each 문에서 ConcurrentModificationException이 발생하는 이유
- 서블릿 컨테이너 초기화와 스프링의 처리 방식
- BeanFactory와 ApplicationContext
- Bean 등록할 때 @Configuration을 사용해야 하는 이유
- @NotNull, @NotEmpty, @NotBlank 비교
- 1부: 자바 애플리케이션에서 외부 설정 조회 방법
- 2부: 스프링 외부 설정 통합 관리 : Environment와 PropertySource의 동작 구조
- 3부: 스프링 레거시와 스프링부트의 외부 설정 비교
- 4부: @ConfigurationProperties으로 타입 안전하게 외부 설정 관리
- @ManyToOne의 Optional 속성에 따라 변경되는 JOIN 방식 (LEFT JOIN vs INNER JOIN)
- JPA save와 saveAll 비교(feat. @Transactional의 영향)
- Tomcat 버전별 Jakarta 설정 및 서블릿 디펜던시 설정
- WAS(Tomcat)이 필요한 이유
- JSP 동작구조
- Jsp 사용할 때 루트 경로에서 index.jsp가 작동하는 이유
- 서블릿 매핑 우선순위
- MySQL은 문자열 대소문자 구분을 하지 않는다.
- MySQL에서 SELECT 별칭은 GROUP BY, ORDER BY, HAVING 절에서 사용 가능하다
- SQL IN절에서 NULL이 예상대로 동작하지 않는 이유
- MySQL에서 날짜 차이 계산하는 방법
- COUNT 함수와 SUM 함수의 차이점
- MySQL ONLY_FULL_GROUP_BY 이해하기
- window 함수 활용법(feat. group by와 다른점)
- Servlet으로 쇼핑몰 프로젝트 만들기 다시 시작
- 첫 스프링 컨트리뷰트 도전기(feat.실패)
- Java Unchecked Warning 해결 방법
- DispatcherServet 커스텀 구현 시 주의할 점
- Tailwind CSS 사용하기
- 개발자도구만 열면 CSS가 깨지는 이유? DevTools 재정의 문제 해결
- JPA getSingleResult 사용 시 값이 없을 떄.md
- Maven 프로젝트에서 Lombok이 인식되지 않는 문제 해결
- Logback 설정 실수로 인해 로그가 출력되지 않은 문제 해결 과정
- DBCP2에서 HikariCP로 전환
- 설정파일 암호화 로직 리팩토링으로 의존성 분리
- Object Storage 업로드 방식과 이미지 조회 방식 변경
- 주소 도메인 테이블 구조 리팩토링으로 성능·동시성 문제 해결
- 요청 DTO에서 ConstraintValidator로 Enum 검증하기
- 이미지 업로드와 DB 저장에 대한 고민과 해결과정
- 카테고리 구조 리팩토링: N+1 문제 해결과 계층 구조 설계 개선
- Java 11에서 17, Maven에서 Gradle, Spring Boot 2.7에서 3.4까지 마이그레이션
- 생일 쿠폰 배치 성능 99.7% 개선 과정 (3시간 48분에서 43초까지)
- 선착순 쿠폰 발급 동시성 제어와 성능 개선