이전 글 2024.01.02 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : 연관에 대하여 [0/0] 2024.01.05 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : Legacy와 현재 구현한 코드 [2/0] 2024.01.07 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : 연관도 변화 [3/0] ⌨️ 캐시 1. 캐시 우선 왜 캐시를 사용했는지에 대해 얘기해 보자 1.1. 캐시의 사용목적 내가 생각하는 캐시의 사용목적은 이렇다 동일한 API 요청이 반복 API 응답이 변하지 않음 API 응답이 자주 업데이트 되지 않음 위와 ..
ALL
⌨️ DB 의존 설계? DB 모델 주도? 뭔가 말만 들어도 확 와닿지 않는다. 최근 본 영상인데 비슷한 관점이 많이들 있는 거 같아서 한 번 고민해 보게 되는 것 같다. 두 영상의 내용은 전체적으론 다르지만 그 안에서 DB의존 DB모델이라는 언급이 있다. 이 부분에 대해 짚고 가볼까 한다. 한쪽에서는 개념객체(*제미니의 개발실무) 한쪽에서는 유스케이스의 행위(*하찮은 오후)가 DB에 의존한 개발에서는 명확히 표현되지 않는다고 한다. --- 우선 개념객체라는 단어는 채널주께서 본인만의 언어로 사용하시는 건데, 나의 경우에서는 본능적으로 어떠한 개념이나 기능을 객체로 나타낸 것이라고 생각을 했다. --- 1. DB 모델 우선 그럼 DB 모델 혹은 DB 의존에 대한 합의부터 이루어져야 할 것 같다. 우리가 가..
1. 리스트 1.1 리스트란? 연결 리스트, 링크드 리스트는 각 노드가 데이터와 포인터를 가지고 한 줄(선형)로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조이다. (* wikipedia) 1.2. 리스트의 종류 1.2.1. 단일 연결리스트 각 노드가 앞에서 뒤로의 연결만을 가진 연결리스트 단일 연결이기에 각 노드의 포인터에는 후행 노드의 주소값이 저장되어 있다. -> 뒤에서 앞으로의 접근은 불가. public class Node { Node next = null; T data = null; } public class SinglyLinkedList { Node head = null; int length = 0; 이미 리스트가 구현되어 있으므로 구현법을 아는 것은 당장은 중요하지 않음 그러나 실력이 ..
이전 글 2024.01.02 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : 연관에 대하여 [0/0] 2024.01.05 - [PROJECT/KOSA] - [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : Legacy와 현재 구현한 코드 [2/0] ⌨️ 연관도 변화 게시물이 추가로 작성될 때마다, 이전 게시물도 연관도 변화에 따른 연관 게시물 변화가 필요하다. 이전 글에서도 말했지만, 예전에는 이 변화를 즉각적으로 반영시키고 싶었으나, 현재는 그 중요도가 즉각적으로 반응해야 할 정도는 아니라고 판단해서 Spring Batch + Scheduler로 주기적인 작업을 통해 해결하려고 했다. 1. Spring Batch 왜 배치..
⌨️ What About U? 앞으로 꾸준히 쓰게 될 포스팅 중 하나이다. 따로 어디 카테고리에 넣기가 애매해서 Dev에 넣고 꾸준히 쓰려고 한다. Spring에 대한 고민일 수도 있고, Java 혹은 DB에 대한 고민이 있을 수도 있다. 물론 당장은 신입이기에 신입의 시각에서 보는 관점이라 많이 틀릴 수도 있고 패러다임에 맞지 않을 수도 있지만, 사고하고 공유한다는 것에 의의를 두고 싶다. 1. Service Layer Layerd Pattern 하면 현재로선 Controller-Service-Repository가 꽤 눈에 익지 않을까 한다. 당연히 Controller가 하는 일 Service가 하는 일 이런 걸 쓰고자 했으면 안 썼을 포스팅이다. 내가 고민하고 예전과 생각이 달라진 점은 바로 Coup..
이전 글 https://romanc3.tistory.com/87 [PROJECT] KOSA 최종 프로젝트 진행 (1) - 연관 게시물 : 연관에 대하여 [0/0] ⌨️ 연관 게시물 구현 그동안 막혀 있던 혈이 하나 뚫린 듯한 기분이 드는 프로젝트였다. 이전 과제로 한번 받았던 내용인데 그때도 어찌어찌 완수는 했지만 완성도가 너무 낮았고, 이 프로젝 romanc3.tistory.com ⌨️ 예전 구현 코드와 현재 코드를 비교 이번 포스팅에서는 이전에 구현했던, 연관게시물 서비스 로직과 지금 구현 완료한(* 운영적인 측면을 제외한 로직만) 코드를 비교하며 달라진 점에 대해 포스팅하려 한다. 다음 글들에서는 이전 코드를 리팩토링 하면서 고민한 것들 그리고 공부한 내용들을 차근히 풀어나가려 한다. 연관도를 매..
1. 배열 1.1. 배열이란? 배열은 같은 자료형의 변수로 이루어진 구성 요소(component)가 모인 것. 1.1.1 배열의 선언법 int[] a; // 이 쪽을 더 선호함 int a[]; e.g.) 구성 요소의 자료형이 int형이고, 구성 요소의 개수가 5개인 배열 a = new int[5] 초기화 하지 않으면 0으로 초기화 1.1.2 배열 요소의 최댓값 구하기 max = a[0]; for(int i = 1; i max) max = a[i]; } 1.1.3 배열 요소를 역순으로 정렬하기 한번 고민해보세요 :) idx를 거꾸로 뒤집어도 될 것이고, 이분탐색 적으로 반으로 나누어서 각 요소를 치환해도 될 듯? 1.1.4 번외 -> 함수로 만들어 사용하는 방법 메서드를 쪼개서 사용하는 방법 1. 각 요소..
1. 완전 탐색 1.1. 문제를 해결하기 위해 확인해야 하는 모든 경우를 전부 탐색하는 방법 그 중에서도 Back-Tracking 을 통해야 하는 상황을 해결하기! 모든 코테 문제에서 기본적으로 접근해 봐야 한다. 많은 연습이 필요! 장점. 부분 점수 얻기 좋음. 어떻게든 해결하고자 하면 풀림 단점. 시간 복잡도가 좋지 않음 1.2. 완전 탐색 종류 완전 탐색은 함수 정의를 잘 하면 반 이상 해결 가능 1) N개 중 중복을 허용해서 순서 있게 나열 ex) N과M (3) 시간복잡도 : $O(N^M)$ 1초 안에 해결 가능 공간복잡도 : O(M) 2) N개 중 중복을 허용하지 않고 순서 있게 나열 ex) N과M (1) 시간복잡도 : $O(N!/(N-M)!)$ 공간복잡도 : O(M) 3) N개 중 중복을 허용..
⌨️ 연관 게시물 구현 그동안 막혀 있던 혈이 하나 뚫린 듯한 기분이 드는 프로젝트였다. 이전 과제로 한번 받았던 내용인데 그때도 어찌어찌 완수는 했지만 완성도가 너무 낮았고, 이 프로젝트를 하기 전까지 해야지 해야지 하면서 미루고 있었다. 이번 프로젝트를 하며 마침 기능을 붙힐 수 있다는 생각에 도전해 봤는데 좋은 결과가 나왔고, 개인적으로도 큰 성취감이 드는 기능 중 하나이다. 그리고 조금은 개발자라는 것에 대해 다시금 생각해보는 계기가 된 기능이다. 1. 연관에 대하여 연관이란 개념이 굉장히 모호 했다. 연관의 기준은? 무엇이 연관 게시물일까? 나는 아직 역량이 달려 이 부분에서 매우 힘들었다. 그동안 명확한 개념들에 대해서는 구현이 가능했지만, 이런 모호한 부분에 대해 기능을 구현하려니 사고가 마..