[Effective-Java] Chapter12 #89. 인스턴스 수를 통제해야 한다면 readResolve보다는 열거 타입을 사용하라
·
Reference/Effective-Java
📌 Singleton 패턴과 직렬화 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() { ... } public void leavingTheBuilding() {...} } 위 클래스는 외부 생성자 호출을 막음으로써, 인스턴스가 오직 하나만 만들어짐을 보장하는 싱글턴 패턴이다. 하지만 `implements Serializable`을 추가하는 순간 더 이상 싱글턴이 아니게 된다. 기본 직렬화(Item 87)을 쓰지 않고, 명시적인 readObject(Item 88)을 사용해도 소용없다. writeObject()를 제공하더라도 소용이 없다. 🤔 과연 그럴까? public class Main { publi..
[Spring Boot] Service Layer 분리에 대하여
·
Backend/Spring Boot & JPA
1. As-is. Service 계층의 순환 참조 Spring을 가장 처음 배우면, Web Application 5계층에 대해서 배우게 된다. 그리고 User라는 Domain에 대해 코드를 작성하면 아래 클래스들을 작성하고 시작한다. UserController UserService UserRepository UserDto 간단한 CRUD 기능만을 구현할 거라면 전혀 문제가 되지 않지만, 복잡한 Use case에 대한 비지니스 로직을 처리해야 하는 경우 Service가 Service를 호출하여 순조롭게 순환참조로 Application이 오작동 하는 상황을 마주할 수 있게 된다. 예를 들어, 내가 (처음) 구현했던 JWT을 이용해 로그아웃 과정을 수행하려면 다음 일련의 작업을 수행해야 했다. Client로부..
[MySQL] goormIDE에 MySQL 서버 구축하기
·
Backend/MySQL
💡 해당 포스팅은 2021년 10월 8일 이전에 등록한 goorm 계정이 있어야 합니다. 현재 진행 중인 개인 프로젝트가 있는데, 클라우드에서 지원하는 MySQL을 사용하자니 요금이 어마무시하게 청구가 되길래 고민하던 중 goormIDE에서 컨테이너 1개를 무료로 제공해준다는 사실을 알게되어, DB 서버로 사용하게 되었다. 이로써 AWS를 빌드 서버로 만들고, NCP를 배포 서버, goorm을 DB 서버로 만드는 대환장 아키텍처를 실현할 수 있게 되었다. ㅋㅋㅋㅋㅋ 구름HOME 구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다. www.goorm.io 위 링크에서 회원가입을 하고 컨테이너를 생성해주어야 한다. 나는 이미 ..
[C++] 10265 - MT (플래티넘4)
·
Coding Test/Solution
1. 문제 설명 10265번: MT 남규는 동기들과 엠티를 가기 위해 버스를 대절했다. 그런데 과사의 실수로 대절버스의 인원이 잘못되어 남규의 동기들을 모두 태울 수 없었다. 이 와중에 동기들은 화를 내며 다음과 같은 www.acmicpc.net 이제 MT 갈 때 됐으니, MT 문제를 풀어보라던 스터디원의 권유로 보게 된 문제. 오랜만에 코테 문제 푼다고 새벽 3시까지 못잤다. 장장 10시간 정도를 풀었던 것 같다. 🤮 물론, 그 사이에 프로젝트 때문에 개발을 멀티로 수행했다는 것도 문제였던 거 같기도 한데, 문제만 봤어도 금방은 못 풀었을 것 같다. 2. 아이디어 보자마자 위상정렬(Topological Sort) 문제겠거니 했다. "내가 가려면 누군가(선행조건)가 가야 한다."식의 문제이므로, '나'의..