분류 전체보기
-
[Spring] Lombok을 이용해 Builder 패턴을 만들어보자.웹 개발/Spring Framework 2020. 3. 21. 17:10
Builder 패턴이란? Effective Java 규칙 2 - 조슈아 블로크 생성자에 인자가 많을 때는 빌더 패턴을 고려하라 빌더 패턴(Builder pattern) 이란 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다. (출처: 위키백과) 난 생성자가 많아지면 빌더 패턴을 만드는 편인데, 개발자 성향에 따라 다를수도 있구나를 느꼈다. 빌더패턴을 활용하면 어떤 필드에 어떤 인자를 넣어줬는지 명확히 알 수 있고, 넣어줄 필요 없는 필드(null)는 굳이 선언할 필요 없으니 좋다고 생각했다. 근데 다른 분은 어떤 필드에 null이 들어간다는걸 명확히 볼 수 있는 점 때문에 생성자를 통해 객체를 생성하시는 방법을 택했다고 하셨다. int..
-
20.03.09 ~ 20.03.14 TWIL개발 일기장/TWIL 2020. 3. 15. 23:52
refrence로 전달되는 리스트를 변형해서 값을 반환할 때는 안전하게 복사해서 사용하자. 코드 리뷰 당시 인자로 전달되는 객체를 사용하는 곳이 없어서 변경하지 않아도 됐지만, 안정적인 코드 개발을 위해 필요한 습관. 인자로 받는 객체를 다른 곳에서도 사용할 수 있는데, 인자로 받은 객체를 변경해버리면 다른 사용하는 곳에서도 변경이 일어나버리기 때문에 side effect를 생각해서 객체를 복사해서 사용하는게 낫다. public Product makeCookieBox(Ingredient ingredient) { return new Product( getCandy(ingredient), getChocolate(ingredient), // 예제 메서드 getSnack(ingredient) ); } // AS..
-
20.03.02 ~ 20.03.07 TWIL개발 일기장/TWIL 2020. 3. 7. 17:02
이번주 코드리뷰, 개발을 통해 배운 것들. 1. 가독성! private static final BASE_URL_PREFIX = "https://zorba91.tistory.com"; // Before String secondContentUrl = BASE_URL_PREFIX+"/2" // After // 문자열을 연결할 때 + 사이에 공백을 주자. String secondContentUrl = BASE_URL_PREFIX + "/2" // Before if(isMatch(args)) { // do something... } // After // if문 딱 붙이지말고, 뒤에 공백을 주자. if (isMatch(args)) { // do something... } 2. 외부 의존성을 띈 테스트는 줄이자. 통..
-
[운영체제] 운영체제와 정보기술의 원리 - 반효경IT, 기술 도서 2020. 3. 7. 09:59
CS(Computer science) 지식의 부족함을 느끼며 지냈기에 가벼우면서 간단하게 요약된 책을 찾고 있었다. 당장 일을 하기 위해 필요한 지식들을 습득하기에도 급급하기 때문에 흔히 OS를 한 방에 정리할 수 있는 '공룡책'을 읽을 시간적 여유, 마음적 여유가 없었고, 당장 내게 우선순위를 따졌을 때 OS의 깊이있는 공부는 우선순위가 높지 않았다. 그래서 찾은 책이 '운영체제와 정보기술의 원리'! (뵌적은 없지만 대단하다 생각하는 다른 개발자분의 블로그 글에서 칭찬하고 있었던 책이었다.) 책은 부담스럽게 두껍지 않고 약 300페이지 되는 분량이다. OS에 필요한 기본적인 목차들을 가져가며 이해하기 쉽게 설명하고 있다. '패스트캠퍼스'에서 OS 강의를 한 번 완강하긴 했지만, 공부란게 공부했던 것도 ..
-
[MySQL] B-tree, B+tree란? (인덱스와 연관지어서)DataBase/MariaDB & MySQL 2020. 2. 10. 20:37
B-tree는 인덱스를 이루고 있는 자료구조의 일종이다. B-tree에서 'B'는 정확히 어떤 의미라고 밝혀진 바는 없다. 아마 'Balanced'를 의미하는 'B'가 아닐까라는 추측만 있다. MySQL의 DB engine인 InnoDB는 B+tree로 이뤄져있는데, B-tree의 확장된 개념이다. 먼저 B-tree를 살펴보자. 트리 구조의 우위성 트리 구조는 꼭 데이터베이스에 한정하지 않더라도 시스템 세계에서는 데이터를 유지하기 위해 자주 사용하는 구조이다. '탐색' 시, 단시간 내에 실행할 수 있기 때문이다. B-tree의 핵심은 데이터가 정렬된 상태로 유지되어 있다는 것이다. 그림에 표시된 사각형으로 표시된 한 개 한 개의 데이터를 '노드(Node)'라고 한다. 가장 상단의 노드를 '루트 노드(Ro..
-
[MySQL] 인덱스(Index) 정리DataBase/MariaDB & MySQL 2020. 2. 9. 11:50
인덱스(Index) 정리 인덱스를 알아보기 전에 풀 스캔(Full Scan)과 레인지 스캔(Range Scan)을 이해해야 한다. 풀 스캔(Full Scan) & 레인지 스캔(Range Scan) 풀 스캔 : 테이블에 포함된 레코드를 처음부터 끝까지 읽어들인다. 레인지 스캔: 테이블의 일부 레코드에만 엑세스한다. 앞으로 예시로 들 테이블 구조 CREATE문 CREATE TABLE `user` ( `idx` bigint(20) NOT NULL AUTO_INCREMENT, `created_date` datetime DEFAULT NULL, `email` varchar(255) NOT NULL DEFAULT '', `name` varchar(255) DEFAULT NULL, `password` varchar(..
-
[WebFlux] publisher(발행) - subscriber(구독) 패턴에 대해서웹 개발/WebFlux 2020. 1. 24. 16:00
publisher(발행) - subscriber(구독)패턴에 대해서 처음 WebFlux를 썼을 때, publisher와 subscriber 모델의 개념을 이해하지 못해서 삽질을 많이했다. spring mvc로 동기식 개발을 할 때는 메서드 호출만 하면 결과값이 return 됐었다. 그러나, reactive하게 동작하는 WebFlux에서는 메서드만 호출해서는 아무 일이 일어나지 않는다. (reactive 선언문) 개념 publihser - subscriber패턴은 observer 디자인 패턴과 유사한 부분이 많다. 옵저버 패턴 위키피디아의 옵저버 패턴 설명을 보자. 옵서버 패턴(observer pattern)은 객체(subject)의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들(observers)의 목록을..