1. Validation 애노테이션 사용 시에 발생하는 ConstraintDeclarationException 에러[ Validation 애노테이션 사용 시에 발생하는 ConstraintDeclarationException 에러 ]에를 들어 다음과 같은 컨트롤러가 존재한다고 하자. 파라미터로 받는 name은 최소 길이가 10이여야 한다는 유효성 검사를 도와주는 @Length 애노테이션이 붙어 있다. 그리고 이를 추싱화한 TestControllerInterface에는 관련 애노테이션 정보가 존재하지 않는 상황이다. 이러한 상황에서 컨트롤러를 호출하게 되면 어떤 결과가 나올까?import org.hibernate.validator.constraints.Length;import org.springframewo..
1. synchronized의 한계를 극복하기 위한 Lock 인터페이스와 ReentrantLock 클래스이전 포스팅에서 설명하였듯, synchronized 키워드를 활용한 동시성 제어는 다음의 2가지 치명적인 문제가 있었다.공정성 문제: 락의 획득 순서가 보장되지 않음무한 대기 문제: 대기하는 스레드를 깨우는 등의 제어를 할 수 없음 이런 문제를 해결하기 위해 자바 1.5부터 java.util.concurrent 라는 동시성 문제 해결을 위한 라이브러리 패키지가 추가되었다. [ 무한 대기 문제를 해결하기 위한 LockSupport 클래스 ]먼저 무한 대기 문제를 해결하기 위해 LockSupport 클래스가 추가되었다. LockSupport는 스레드를 블로킹/언블로킹하기 위한 가장 기본적인 도구로, ..
1. 동시성 제어를 위한 synchronized 키워드의 의미와 한계점[ synchronized 키워드란? ]자바 언어는 설계 초기부터 대량의 요청을 처리할 수 있도록 멀티 스레드를 염두하여 설계되었다. 이를 위해 자바는 1.0부터 손쉽게 동시성을 제어할 수 있는 synchronized 키워드를 제공하였다. synchronized 키워드를 사용하면 임계 영역의 동기화를 쉽게 구현할 수 있다. synchronized 키워드는 메서드 선언부에 붙여 사용하거나 특정 객체를 대상으로 동기화 블록을 만들어 사용할 수도 있다.public class BankAccount { private int balance = 0; // synchronized 메서드 public synchronized void d..
2025년에는 어떤 때보다 많은 일들이 있었고, 그에 따라 인상깊었던 한 해였습니다. 어느덧 2026년을 목전에 두고 있기에, 이제 한 해를 보낼 준비를 할 때가 된 것 같습니다. 2025년을 돌이켜보며 개인적으로 느꼈던 감정들과 생각들을 정리해보고자 합니다. 1. 2025년 회고[ 2025년의 학습과 자기개발 ]1월: 기본기가 탄탄한 자바 개발자 (제2판)2월: 함께자라기3월: 자바 병렬 프로그래밍4월: 모던 자바 인 액션5월: 그로쓰 해킹 & 개발자를 위한 레디스6월: 컴퓨터 밑바닥의 비밀 & 직업으로서의 소설가7월: 린 스타트업 & 타입으로 견고하게, 다형성으로 유연하게8월: 가상면접 1권 & 기획은 2형식이다9월: 최고의 프롬프트 엔지니어링 강의10월: 아이디어 불패의 법칙 & 객체지향 시스템..
1. Claude Code(클로드 코드) 활용을 극대화하기 위한 최신 기술들(Skills, Slack, GitHub Actions, Chrome ETC)[ Claude Code and Slack ]오늘날 슬랙과 같은 협업 메신저는 업무의 중심에 존재하는 경우가 많다. 기능 요청, 엔지니어링 논의 뿐만 아니라 버그 리포트, 장애 회고 등 엔지니어링 작업과 관련된 중요한 문맥은 Slack에 담겨 있는 경우가 다반사다. 앤트로픽은 이러한 상황에 대해 인지하고, 버그 리포트가 올라오거나 팀원이 코드 수정을 요청할 때, Slack에서 Claude를 태그하여 주변 문맥을 활용해 자동으로 Claude Code 세션을 생성할 수 있는 기능을 추가하였다. 예를 들어 슬랙에서 Claude를 멘션하여 버그 조사와 수정을 ..
