Language \ Framework/Java 3

SOLID 원칙

시작작년에 회사에 입사를 하고, 이번에 추가 기능에 대한 프로젝트를 하나 맡았는데, 기존 구조나 코드가 조금 복잡한 감이 없지 않았다.개발 진행 중에, CTO님도 이 부분에 대한 문제를 기존부터 염두에 두고 계셔서, 이 참에 조금 대대적인 리팩토링을 하기로 했다.기존 로직을 건드리는 것이 어떻게 보면 조금 위험하긴 하다보니, 여태 이렇게 운영이 된 것 같다. 그런데, 하다보니 어떤식으로 리팩토링 하는 것이 좋은지에 대한 고민이 항상 있다보니 가끔은 머리가 아프기도 했다.개발을 하다보면 불필요한 로직이나 코드, 혹은 어느 한줄만 없어지면 다음 로직이 조금 간단해질 수 있는 여지가 있는 코드 등등 뭔가 조금 거슬리는 코드 들이 있는데, 이런 부분들을 좋게 개선하려다 보니 SOLID 원칙이 생각이 났다.생각이..

[JAVA] ReentrantLock, ReentrantReadWriteLock

1. 개념동시성을 제어할 수 있는 객체.synchronized 와 유사하나, 더 세밀한 제어와 확장된 기능을 제공함.2. 차이점ReentrantLock은 단일 잠금을 제공하고, ReentrantReadWriteLock의 경우는 읽기와 쓰기의 잠금을 별도로 관리할 수 있음.ReentrantLock은 선택적으로 공정한 잠금정책을 제공할 수 있지만, ReentrantReadWriteLock은 지원하지 않음.읽기 작업이 많은 경우, ReentrantReadWriteLock이 더 나은 성능을 보여줌.재진입의 의미!ReentrantLock에서 '재진입’이란 이미 특정 스레드에 의해 잠금이 획득된 상태에서 같은 스레드가 다시 그 잠금을 획득하는 것을 의미.3. ReentrantLockReentrantLock lock..

[JAVA] CompletableFuture

1. 개념자바에서 비동기 프로그래밍을 가능하게 하는 클래스.기존 Future 라는 인터페이스를 Implements📓 사용 이유자바에서 비동기 프로그래밍을 사용해야 하는 상황에 해당 클래스를 사용한다.그리고 Future라는 인터페이스가 있으나, 반드시 예외 처리를 해줘야 하는 부분이 있고,get() 함수를 사용하거나, 타임아웃을 걸어주기 전까지는 다른 작업을 할 수 없다.CompletableFuture의 경우는 다양한 상황의 비동기적 프로그래밍을 할 수 있고,때에 따라서는 동기적 흐름을 만들 수 있다.예를 들어, 메소드 A와 메소드 B의 관계에서, A와 B의 반환 값이 모두 필요한 상황이라면 A와 B를 동시에 실행하고, 두개의 메소드가 전부 완료되는 시점에 반환값들을 처리할 수 있다.다른 상황으로는, A..