SOLID 원칙을 실무적으로 어떻게 이해해야 하는가 Notes SOLID는 객체지향 설계의 다섯 가지 원칙을 묶은 이름이다. 면접에서는 종종 정의를 외우듯 말하게 되지만, 실무에서는 “변경이 들어왔을 때 코드가 어디서 깨지는가”를 줄이기 위한 기준으로 보는 편이 훨씬 유용하다. SOLID가 필요한 이유 기능은 계속 바뀌고, 요구사항은 뒤늦게 들어오며, 처음 설계한 구조가 끝까지 유지되는 경우는 거의 없다. S... 2021/01/14 Notes, Programming
2021-01-13-TIL TIL 2021-01-13-TIL JDK 소스코드 열어보기 IntelliJ 에서 열어보기 아무 프로젝트나 생성해서 찾고자하는 라이브러리를 import한다. import java.util.ArrayList; 그리고 command + 왼쪽마우스 클릭을 하면 자동으로 External Library로 부터 소스코드가 펼쳐지면서 보인다. JDK 경로로... 2021/01/13 TIL, 2021-TIL
2021-01-12-TIL TIL 2021-01-12-TIL 이메일로 일하는 법 알고리즘은 사용하는 일이 거의 없다. 하지만 자료구조는 매우 빈번하게 사용된다. 알고리즘의 정의 알고리즘의 조건 : 입력, 출력, 유한성 The Art of Programming 유한성(Fitness) 명확성(Defiteness) 입력(Input) 출력(Output) 성능은 ... 2021/01/12 TIL, 2021-TIL
Java에서 배열과 리스트를 어떻게 구분해야 하는가 Notes Java에서 여러 값을 담는 가장 기본적인 선택지는 배열과 리스트다. 둘 다 순서를 가진 데이터를 담는다는 점은 같지만, 사용 방식과 제약은 꽤 다르다. 배열의 특징 배열은 같은 타입의 값을 고정된 크기로 담는 구조다. int[] numbers = new int[10]; 배열의 핵심 특징: 크기가 고정된다 인덱스로 접근한다 메모... 2021/01/12 Notes, Java
배열과 연결 리스트는 언제 차이가 커지는가 Notes 배열과 연결 리스트는 모두 선형 자료구조지만, 성능 특성과 사용 시나리오는 꽤 다르다. 차이는 결국 어디에 강하고 어디에서 비용이 드는가에 있다. 배열의 강점 인덱스 접근이 빠르다 메모리 구조가 연속적이다 캐시 친화적이다 그래서 조회 중심 작업에서는 배열 기반 구조가 유리한 경우가 많다. 연결 리스트의 강점 삽입과 삭제가 ... 2021/01/12 Notes, Java
LinkedList로 Deque를 구현할 때 알아야 할 것 Notes Deque는 양쪽 끝에서 삽입과 삭제가 가능한 자료구조다. 이름 그대로 double-ended queue이며, 스택과 큐의 성질을 모두 표현할 수 있다. Deque가 필요한 이유 한쪽 끝만 쓰는 큐나 스택으로는 표현이 애매한 경우가 있다. 앞뒤에서 모두 원소를 넣고 빼야 할 때 슬라이딩 윈도우처럼 양 끝 갱신이 필요한 경우 BFS 변... 2021/01/12 Notes, Java
LinkedList로 Queue를 구현할 때 핵심은 무엇인가 Notes Queue는 먼저 들어온 데이터가 먼저 나가는 FIFO(First-In, First-Out) 구조다. 프린터 작업 대기열, 메시지 처리, BFS 탐색처럼 순서 보장이 필요한 상황에서 자주 쓰인다. Queue의 핵심 연산 enqueue: 뒤에 넣기 dequeue: 앞에서 빼기 peek: 앞 원소 확인 이 세 가지가 자연스럽게 빠르게 ... 2021/01/12 Notes, Java
단일, 이중, 환형 연결 리스트는 어떻게 다른가 Notes 연결 리스트는 노드가 다음 노드를 참조하는 방식으로 이어지는 자료구조다. 구현 방식에 따라 단일 연결 리스트, 이중 연결 리스트, 환형 연결 리스트로 나뉜다. 단일 연결 리스트 각 노드가 다음 노드만 가리키는 구조다. 구현이 단순하다 메모리 오버헤드가 적다 뒤로 이동은 어렵다 앞에서 순차적으로 순회하는 용도에는 충분하지만, 이전 ... 2021/01/12 Notes, Java
빅 오(Big-O)와 시간복잡도를 어떻게 봐야 하는가 Notes 알고리즘이나 자료구조를 공부할 때 가장 먼저 만나게 되는 개념이 시간복잡도다. 하지만 실무에서는 빅 오 표기법을 공식을 외우듯 쓰기보다, 입력 크기가 커질 때 어떤 비용이 병목이 되는지를 판단하는 도구로 이해하는 편이 더 중요하다. 시간복잡도와 공간복잡도 시간복잡도: 입력 크기가 증가할 때 실행 시간이 어떻게 늘어나는가 공간복잡도: 입력 ... 2021/01/12 Notes, Programming
2021-01-11-TIL TIL 2021-01-11-TIL Json, Bson 제이슨, 비산 Java에서 Random 문자열 생성 https://needneo.tistory.com/23 Java Linked List https://freestrokes.tistory.com/84 자료구조와 알고리즘 빅오 표기법 링크드 리스트 싱... 2021/01/11