전체 글 93

컬럼의 DEFAULT 조건에 대한 고찰

💻 내가 가진 개발 습관 중 하나는 TABLE에 DEFAULT로 값을 정해놓은 컬럼이 있더라도INSERT시 쿼리문에 명시적으로 해당 DEFAULT값을 입력하는 것이 습관이었다. 예를 들어, 과일 이름을 기록하는 FRUIT라는 테이블이 있다고 가정하자.튜플이 입력된 시간을 기록하는 INSERTDATE라는 컬럼에 DEFAULT값으로 CURRENT_TIMESTAMP가 설정되어있다고 하자. 이 경우에도 나는 아래와 같이 INSERT문에 NOW()라고 명시적으로 적었다. INSERT INTO FRUIT(FRUITNAME, INSERTDATE) VALUES ('APPLE', NOW()); INSERT INTO FRUIT(FRUITNAME, INSERTDATE) VALUES ('BANANA&#3..

개발/기타 2021.06.08

@Controller와 @RestController 차이점

🗣️ 간단하게 말하자면, @Controller는 view를 반환하고, @RestController는 Json 형식의 HTTP 응답을 직접 반환한다. 따라서 서버의 목적에 따라 골라서 사용하면 되겠다. @Controller는 웹서버에서 사용하기 적당해보이고, @RestController는 API 서버에서 사용하기 적당해보인다. ❓웹서버랑 API 서버의 차이는? 웹서버는 jsp등의 브라우저가 읽을 페이지를 반환하는 서버이고, API 서버는 웹서버가 따로 있는 경우, 혹은 Server to Server로 통신하는 경우 json등의 포맷으로 값을 전달하는 서버이다. 📄@Controller의 Document를 확인하면 아래와 같다. Indicates that an annotated class is a "Contr..

Java] Multi Thread 환경에서 Singleton 패턴을 Thread Safe하게 사용하기

Multi Thread 환경에서 Singleton 패턴을 Thread Safe하게 사용하기 해당 글과 관련된 Singleton Pattern을 테스트 해볼 수 있는 git주소를 첨부합니다 🍗 https://github.com/SimYeJu/HelloSingletonPattern/tree/main/src ❓Singleton이란? 하나의 인스턴스만 존재해야 할 경우에 Singleton 패턴을 사용한다. 예를 들어, DBCP(DataBase Connection Pool)나 로그를 기록하는 객체 등 공통된 객체를 여러 다른 클래스에서 사용해야 할 때, 하나의 인스턴스만 생성할 수 있게끔 만드는 것이 좋다. 그 이유는 같은 역할을 하는 객체가 여러개 만들어지지 않는게 메모리 사용면에서 좋기 때문이다. Single..

개발/Java 2021.05.18

Java] ExecutorService란?

❓ ExecutorService란? 병렬 작업 시 여러 개의 작업을 효율적으로 처리하기 위해 제공되는 JAVA 라이브러리이다. ❔ ExecutorService가 없었다면? 각기 다른 Thread를 생성해서 작업을 처리하고, 처리가 완료되면 해당 Thread를 제거하는 작업을 손수 진행해야하는 것을 ExecutorService 클래스를 이용하면 쉽게 처리가능하다. 🎉 ExecutorService ExecutorService에 Task만 지정해주면 친절하게 알아서 ThreadPool을 이용해서 Task를 실행하고 관리한다. 🤹 Task는 뭐로 관리가 되나? Queue로 관리된다. ThreadPool에 있는 Thread수보다 Task가 많으면, 미실행된 Task는 Queue에 저장되고, 실행을 마친 Threa..

개발/Java 2021.04.12

코딩테스트] 코딩테스트가 처음이라면? 혹은 오랜만이라면? 간단 로드맵

코딩테스트 공부를 하려고 할 때, 기본적인 정렬 기본적으로 아래의 것들은 구현할 줄 알아야 한다고 생각한다. 일차원 배열 순서대로 print / 역순으로 print 이차원 배열 순서대로 print / 역순으로 print int형 일차원 배열 오름차순 정렬 / 내림차순 정렬 string형 일차원 배열 오름차순 정렬 / 내림차순 정렬 리스트 오름차순 / 내림차순 정렬 심화 이 후에 구현할 줄 알아야 하는 알고리즘들은 아래와 같다고 생각한다. 조합 순열 BFS DFS 위 알고리즘들을 사용한 '완전탐색' 문제들도 풀어보기를 권장한다. 완전탐색이 생각보다 구현에 까다로운 문제들이 많다고 생각한다. 그래프 이 후에 공부해야 할 것들은 기타 그래프 문제들이다. 다익스트라 최소 신장 트리 (MST, 크루..