전체 글

· ETC
1. 서론 개발자에게 있어 영어는 아주 중요한 영역이라고 생각합니다. 코드 작성 뿐만 아니라, 문서, 검색, 질문, 답변 등 모든 영역들이 영어와 밀접하게 연결되어 있습니다. [ 개발자 영어 ] 강의에서 언급하고 있는 내용들을 정리해보도록 하겠습니다. (내용이 많으니 궁금하신 부분들을 목차를 활용해서 보시는 것을 추천드립니다.) 2. 개발자에게 영어란? 2.1 개발자에게 영어가 중요한 이유 지식과 정보의 보고 대다수 최신 정보는 영어 남들보다 한 걸음 앞서는 토대 프로그래밍 언어 영어권에서 개발 의사 소통을 위해 작명 관례가 중요 변수 이름을 gab(값)으로 하면? 깨끗한 코드의 중요성 의사 소통 도구 공동체 참여(특히 오픈 소스) 묻고 답하기(Stack Overflow, Quora)/메일링 리스트 등에..
· Spring Boot
0. 서론 동시성을 제어하는 방법은 각 상황에 따라 여러 가지가 존재합니다. 1. Java Application Level Synchronized Atomic ReentrantLock ConcurrentHashMap 2. Database Level Pessismistic Lock Optimistic Lock Named Lock 3. 분산 시스템 Redis Zookeeper 이번 글에서는 Database Level 의 Lock을 Spring JPA 환경에서 어떻게 사용할 수 있는지 알아보도록 하겠습니다. 들어가기에 앞서 공통으로 사용될 코드들을 먼저 작성해 보겠습니다. 재고의 정보를 저장할 간단한 Entity 입니다. 재고의 양을 quantity에 저장하고 있으며, decre..
· ETC
1. 강의 구성 해당 강의는 5시간 30분 정도의 강의이며 각 챕터별로 퀴즈를 제공해주고 있습니다. 이뿐만 아니라 솔루션과 함께 코딩 연습을 할 수 있도록 제공해 주는 등 강의를 듣는 사람들이 학습에 더 몰입할 수 있도록 다양한 환경을 제공해주고 있습니다. 간단한 내용부터 시작해서 점점 심화되는 내용들을 배우며 알찬 강의 구성을 가지고 있습니다. 강의의 교육 철학에도 나와 있듯이 해당 강의는 물고기를 잡아주는 것이 아닌, 낚시하는 법을 직접 배울 수 있도록 설계되어 있습니다. 2. 강의 내용 강의 제목과 같이 해당 강의는 Java에 초점이 맞춰져 있으며 멀티스레딩, 병행성 및 성능 최적화에 대한 내용을 다루고 있습니다. Java에서 Thread를 사용하는 방법, 스레드 간의 데이터 공유, 병행성 문제를 ..
· Spring Boot
1. Feign Client 란? Spring Cloud Open Feign은 마이크로서비스 아키텍처에서 서비스 간의 HTTP 기반 통신을 간소화하는 데 사용되는 선언적 웹 서비스 클라이언트입니다. Netflix에서 개발되었으며, Spring Cloud에서는 이를 Spring 애플리케이션에 쉽게 통합할 수 있도록 지원해주고 있습니다. Feign의 주요 목적은 마이크로서비스 간의 통신 코드를 최소화하고, 서비스 호출을 간단하고 선언적인 방식으로 구현하는 것입니다. 주요 특징 선언적 REST 클라이언트 Feign을 사용하면 인터페이스에 어노테이션을 추가함으로써 외부 RESTful 서비스를 쉽게 호출할 수 있습니다. 개발자는 HTTP 요청을 보내고 응답을 처리하는 로우 레벨의 세부 사항을 신경 쓸 필요가 없습..
· Spring Boot
Spring Boot에서 Dependency Injection(DI)을 해주기 위해서 @RequiredArgsConstructor를 주로 사용하곤 합니다. Dependency Injection 이 어떠한 과정을 통해서 이루어지는 것인지 디버깅을 통해서 알아보도록 하겠습니다. productService 라는 serivce 클래스에 productRepository, wishClient 2개의 repository를 주입해 보겠습니다. 들어가기에 앞서, 바로 코드를 보면 과정이 길고 복잡하기에 흐름을 놓칠 수 있다고 생각되어 사용되는 클래스와 메서드들을 먼저 정리해 보았습니다. (1번에서 설명한 코드가 2번에서 사용되는 형태로 진행됩니다.) 1. 목차 및 순서 (Interface) [BeanUtils.java]..
· Java
1. 동시성(Concurrency)이란? 동시성은 여러 스레드가 동시에 실행될 때 발생합니다. 각 스레드는 독립적으로 작업을 수행하지만, 때때로 공유 자원(예: 데이터베이스)에 접근할 필요가 있습니다. 이때, 올바른 동시성 관리 없이 여러 스레드가 동시에 같은 자원에 접근하면 데이터 무결성을 위협하고 예측 불가능한 결과를 초래할 수 있습니다. 동시성 문제를 해결하지 못하면 데이터 불일치, 교착 상태(Deadlock), 성능 저하 등의 문제가 발생할 수 있습니다. 정확하고 효율적인 데이터 처리를 위해 이러한 문제들을 관리하는 것이 필요합니다. 2. 원자성과 가시성 1) 원자성(Atomicity) 원자성은 어떤 작업이 '전부 아니면 전혀'의 상태로만 존재한다는 원칙입니다. 은행 계좌에서 돈을 이체할 때로 예..
howik
howik