전체 글 350

Git 커밋 컨벤션

깃의 커밋 진행 시 가독성 향상과 협업을 위해, 일관성 있고 원칙을 가진 커밋 메세지를 작성할 필요가 있다. Commit 메세지 구조 Title(제목) type subject Body(본문) Footer(optional)(꼬리말) 제목, 본문, 꼬리말 세 파트로 나누며, 각 파트는 빈칸으로 구분된다. type : subject body footerCommit Type 제목을 구성하는 Type의 경우 어떠한 이유로 커밋을 진행했는지 적는다. 보통의 경우 type의 맨 앞 글자는 대문자로 적는다. Type description Feat 새로운 기능 추가 Fix 버그 수정 Docs 문서 수정 Refactor 코드 리펙터링 Test 테스트 코드, 리펙토링 테스트 코드 추가 Chore 빌드 업무 수정, 패키지 매..

Java의 Optional 클래스

자바 사용중 가장 많이 만나는 에러 중 하나가 바로 널 에러이다.(NPE - Null Pointer Exception) 개인적으로 Springboot의 JPA를 사용해서 값을 가져올 때에 이 null처리에 많은 신경을 써야 한다고 생각한다. Java8 이전까지 NPE를 해결하기 위해서는 두 가지들 중 하나를 택해야 했다. 예외 출력 예외를 던지는 것인데, 이것은 정말 예외가 발생하는 상황에 사용하도록 한다. null 반환 null을 실제로 받아오는 것으로, 클라이언트에서 별도로 처리해야 한다. 이런 식으로 처리하였는데, 이 로직을 수행하는 데에 코드가 복잡해 질 수도 있기 때문에 초기값을 사용하는 경우도 있었다. Java8 버전부터 Optional클래스를 사용하여 이 NPE를 해결할 수 있도록 도와준다...

이론 정리/java 2022.04.03

싱글톤(Singleton) 패턴에 관하여

Singleton Pattern이란, 어플리케이션 실행 시 최초 한번만 메모리를 할당하고, 이 메모리에 인스턴스를 만들어서 사용하는 디자인 패턴이다. 주로 DBCP(DataBase Connection Pool)처럼 공통 객체를 여러개 생성해서 사용해야 하는 경우 쓴다. 싱글톤 패턴의 장점 위에서 설명했듯, 싱글톤 패턴은 어플리케이션 실행 시 단 하나의 인스턴스를 한 번만 할당하게 된다. 따라서 만들어진 메모리 영역에 new연산자를 통해 접근하게 되면 이 접근에 대해 메모리 낭비를 방지할 수 있게 되며, 처음에 실행 시 만들어진 인스턴스에 접근만 하면 되므로 속도 측면에도 이득이 있다. 그리고 클래스 간 데이터 공유를 원할하게 해 준다. 싱글톤 패턴으로 만들어진 인스턴스는 static 전역 변수이기 때문이..

이론 정리/java 2022.04.03

필터와 인터셉트

필터와 인터셉트 게시판을 만들 때, 만약 해당 페이지의 가입자만이 사용할 수 있는 '회원게시판' 을 구현하려고 한다면 단순히 해당 게시판에 들어가는 것 뿐만이 아니라 이와 관련된 모든 부분(글쓰기, 읽기, 마이페이지 등등...) 에서 모두 로그인 로직을 검사해야 할 것이다. 그렇다면 이 로직은 어떻게 만들까?? 먼저 매번 모든 페이지에 해당 로직을 구현해서 넣어준다면...너무 귀찮고 문제 발생 가능성도 높을 것이다. 이럴 때에 사용하는것이 바로 필터와 인터센터이다. 해당 두 가지 방법을 통해 위의 방법을 구현해 낼 수 있다. 먼저 두 방식의 차이는 아래와 같다. 그림을 통해 알 수 있는사실은 Filter은 DispatcherServlet의 앞에서 이루어진다. Interceptor은 Disp..

이론 정리/java 2022.04.02

[백준 1461번] 도서관 - java

문제 설명 1. N권의 책, 한번에 들수있는 양 M이 주어진다. 2. 현재 위치 0으로부터 해당 책이 들어가야하는 위치가 N개 주어진다. 3. 모든 책을 원래 위치에 가져다 놓는 최소 거리를 구하라. 4. 마지막 책을 가져다가 두면 더이상 0위치로 돌아올 필요는 없다. 풀이 과정 1. 그리디 문제이고, 문제 풀이를 떠올리는것은 힘들지만 구현은 쉬운 문제이다. 2. 중요한 것은 거리가 +, - 두 가지로 주어진다는 것이고, 0의 위치를 지나가기 때문에 각각의 이동이 따로따로 행해져야 한다는 것이다. 3. 그리고 어느 쪽이든 가장 먼곳까지 갔다가 돌아오면 된다. 4. 마지막 책을 갖다 놓았을 때 더이상 0의 위치로 돌아올 필요는 없으니, 가장 먼곳에 마지막으로 책을 가져다 두면 될것이다. 5. (2)번의 문..

알고리즘 공부 2022.03.29

[백준 15810번] 풍선 공장 - java

문제 설명 1. N명의 스태프, 만들어야 하는 풍선M이 주어진다. 2. 각 N명의 스태프가 1개의 풍선을 부는 데 들어가는 시간이 주어진다. 3. M개의 풍선을 만드는 최소시간을 구하라 풀이 과정 1. 이분탐색이다. 2. 이분탐색 -> Long타입에 주의하자...허헣 풀이방법 자체는 이전하고 별반 차이는 없다. - 몇 분의 시간이 주어지고, 해당 시간동안 몇개의 풍선을 불 수 있는지 구하면 된다. 3. 왼쪽 -> 0으로 시작하면 된다. 4. 오른쪽 -> 풍선 부는데 제일 오래걸린 시간 * 풍선 개수면 일단 가장 오래걸리는 시간이 구해진다. 5. 만약 3, 5, 6분마다 한개씩 풍선을 만든다고 가정하면 7분이 주어지면 각각 2, 1, 1개를 만들것이다. 6. 현재 시간에 분 최대 풍선개수가 원하는 개수보다..

알고리즘 공부 2022.03.26

[백준 2792번] 보석 상자- java

문제 설명 1. 인원수 N, 보석의 색깔수 M이 주어진다. 2. M가지 색에 대해 각각의 개수가 주어진다. 3. 이 M개의 보석을 N명의 학생에게 나누어 줄 때, 모든 인원에게 나누어 줄 수 있는 최소 보석 개수를 구해주면 될것이다. 풀이 과정 1. 이분탐색이 어려워서 공부하기 위해 하나 더 풀어보았다. 이전문제에서 공부했어서 풀이 자체는 금방 도출했는데... 이번에는 뭔가 구현이 어려웠다. 더 풀어봐야 할 것 같다. 2. 중요한 값들에 대해 이야기하자면 A. 주어지는 보석개수의 차이가 아니라 개수 자체에 관한 문제라는것 -> 그냥 보석을 N명에게 모두 나누어 줄 수 있는 최소개수를 가지면 된다. B. 아예 보석을 못받는 학생이 있어도 괜찮다는것 -> 학생수보다 주는보석방법의 개수가 작거나 같으면 싹다 ..

알고리즘 공부 2022.03.26

[백준 2343번] 기타 - java

문제 설명 1. 강의의 수 N, 블루레이 녹화 개수 M이 주어진다. 2. N에 맞추어 강의가 하나씩 주어진다. 3. N개의 강의를 M개로 나누어 저장할 수 있는 가장 최소의 분단위를 구하면 된다. 풀이 과정 1. 이분 탐색 문제이다. 실버1 난이도인데 나는 왜이리 이분탐색이 어려운지 모르겠다... 2. 중요한 값들에 대해 이야기하자면 A. N개의 강의를 M개로 나누어 담는다는것 -> 한 개의 블루레이의 크기를 늘리고 줄이며 담을 수 있는 강의를 만들어가면 될것. B. 블루레이는 모두 같은 크기를 갖고, 최소의 크기로 만들어야 한다는것 -> 이분탐색을 M개의 값을 갖자마자 나가지 말고 그 최소를 구할것 이다. 3. 먼저 M은 N보다 작거나 같으므로 최소 블루레이 크기는 최대 길이 강의로부터 시작할 것이다...

알고리즘 공부 2022.03.26

[백준 4179번] 불! - java

문제 설명 1. 미로의 크기 R, C가 주어진다. 2. 불이 나고, 지훈이가 미로안에 있다(지훈이는 한명) 3. 불과 지훈이가 상하좌우로 움직일수 있고 지훈이는 불과 벽을 뛰어넘지 못한다. 4. 지훈이가 미로를 탈출(가장자리 도착)하는 가장 짧은 방법을 구하라. 풀이 과정 1. BFS에 약간의 구현을 더해서 진행하는 문제이다. 2. 먼저 둘이 동시에 이동한다 가정해보면 코드상에서는 지훈이의 이동보다 불의 이동이 먼저 일어나야 하는데, - 코드에서 지훈이가 불보다 먼저 움직이면 이후에 타죽는다. - 불이붙은 지역에 지훈이는 갈 수 없다. 그러므로 지훈이를 불보다 늦게 움직이도록 생각한다. 3. 지훈이는 미로의 가장자리에 있으면 탈출 가능하다. 즉 처음부터 가장자리에 있으면 그냥 탈출하면 된다. 4. 지훈이..

알고리즘 공부 2022.03.20

디프만 11기 면접 후기

신입 개발자로 취직하기 위해서 준비해야 하는것이 무엇이 있을까? 요즘 기업들은 코딩테스트를 많이 보기 때문에 알고리즘 관련 공부를 해야 할 것이고, 면접을 위한 CS나 개발 내용을 알아야 할 것이다. 그런데 최근들어 여러 대기업에서 코딩테스트보다는 포트폴리오에 더 관심을 많이 두는 것 같다. 그렇기 때문에 내 실력을 어필할 수 있는 포트폴리오가 중요할 것이다. 또, Git과 같은 형상관리 사용법을 알고 있는지, 다른 사람들과 어떻게 의사소통하여 프로젝트를 하는지 등 협업에 관한 요구도 많을 것이다. 이때에 가장 도움이 되는것이 바로 개발자 동아리라고 생각한다. 디프만은 [디자이너와 프로그래머의 만남] 의 줄임말로 말그대로 디자이너와 프로그래머가 함께 프로젝트를 진행하는 동아리이다. 서류 접수 서류는 자기..