정적 팩토리 메소드를 사용할 때의 장점 1. 메소드가 이름을 가질 수 있다. 즉, 메소드에서 반환될 객체의 특성을 잘 알 수 있다. 한 클래스에 생성자가 여러 개 필요할 것 같다면 정적 팩터리 메서드로 바꾸고 각각의 차이를 잘 드러내는 이름을 지어주자. class Menu { String name; String description; public static Menu createMenu(String name, String description) { return new Menu(name, description); } public static Menu createMenuWithoutDescription(String name) { return new Menu(name, ""); } private Menu(St..
컴포지트 패턴(Composite Pattern) 객체를 트리구조로 구성해 트리 전체의 복합적인 객체와 개별 객체를 똑같은 방법으로 다룰 수 있도록 도와주는 패턴입니다. 메뉴, 서브메뉴, 서브서브메뉴로 구성된 트리구조 각각이 모두 복합 객체가 될 수 있습니다. 간단한 코드로도 똑같은 작업을 전체 메뉴 구조에 반복적으로 적용할 수 있습니다. 구조 1. Component 인터페이스: 트리에 들어가는 모든 요소들의 공통적인 인터페이스를 정의합니다. 2. Leaf 클래스: 트리의 기본 요소로, Composite에서 지원하는 기능을 구현합니다. 3. Composite 클래스: 자식이 있는 구성 요소로, 행동을 정의하고 자식 구성 요소를 저장하는 역할을 맡습니다. 요청을 받으면 작업을 자식 구성 요소에게 전달하고, ..
반복자 패턴(Iterator Pattern) 반복 작업을 Iterator 인터페이스로 캡슐화해 데이터가 저장될 컬렉션을 외부로 노출시키지 않으면서 컬렉션 내 모든 항목에 접근할 수 있는 패턴입니다. 어떤 식으로 구현되어 있는지 전혀 모르는 상태에서 반복 작업을 수행할 수 있습니다. 배열이든, 리스트이든 컬렉션의 종류와 상관없이 작업을 처리할 수 있습니다. 모든 항목에 일일이 접근하는 작업을 컬렉션이 아닌 반복자 객체가 담당합니다. 구조 1. Iterator 인터페이스: 모든 반복자가 구현해야 하는 인터페이스로 컬렉션을 순회하는데 필요한 작업들을 제공합니다. 2. ConcreateIterator 구상 클래스: 컬렉션을 순회하기 위한 알고리즘을 구현합니다. 3. IterableCollection 인터페이스:..
서론 23년 2월, GDSC Sookmyung에서 '찍어 먹는 디자인패턴'이라는 주제로 Speaker Session을 진행했습니다 :) 세션에서는 자꾸 다운되는 게임 서버를 오브젝트 풀링(또는 플라이웨이트) 디자인 패턴으로 최적화했던 경험을 발표했습니다. 오브젝트 풀링 패턴이란? 런타임 중에 동적으로 객체를 생성하기 위해서는 상당한 CPU와 메모리 비용을 필요로 합니다. 그렇기에 실시간으로 1초에 수백 또는 수천 개의 객체를 생성하는 것은 곧 CPU의 과부하를 초래합니다. 많은 유저들이 즐기는 FPS 게임에서는 어떻게 1초 동안 전장에서 수백 개의 총알이 날아다닐 수 있는 걸까요? 동적으로 생성하지 않고 정적으로 객체를 미리 생성하여 객체 생성과 삭제 비용을 절약했기 때문입니다. 오브젝트 풀링 패턴은 많..
자바의 예외 종류와 기본적인 예외 처리 방법부터 간단히 알아보자! 그 뒤에 스프링에서의 예외 처리 방법을 살펴보면 이해가 훨씬 편할 것이다 :) 예외의 종류: 체크 예외와 언체크 예외 자바의 예외는 java.lang.Exception 클래스와 그의 하위 클래스들로 이루어져 있다. 예외는 RuntimeException 클래스의 상속 여부를 기준으로 다시 체크 예외와 언체크 예외로 나뉜다. 체크 예외 체크 예외는 RuntimeException을 상속하지 않는 예외 클래스들을 말한다. 복구가 가능한 예외들이기 때문에 반드시 예외 처리 구문이 필요하다. try ~ catch문을 통해 해당 메소드 안에서 예외를 처리하거나 throws 문으로 해당 메소드를 호출하는 상위 메소드에게 예외를 넘길 수 있다. 체크 예외..
아파치 카프카 애플리케이션 프로그래밍 with 자바 - YES24 아파치 카프카 애플리케이션 개발을 위한 「실전 가이드」아파치 카프카란 무엇일까? 카프카 애플리케이션은 어떻게 만들까? 데이터 파이프라인을 만들기 위해 어떤 카프카 라이브러리를 사용 www.yes24.com CHAPTER 4. 상세 개념 토픽과 파티션 토픽을 사용함에 있어 발생하는 여러 가지 고려사항을 짚어보자. 적정 파티션 개수 토픽 생성 시 파티션 개수 고려사항 데이터 처리량 메시지 키 사용 여부 브로커, 컨슈머 영향도 데이터 처리 속도를 올리는 방법 컨슈머의 처리량을 늘린다. 컨슈머 서버의 사양을 올린다.(스케일 업) GC 튜닝 파티션 개수를 늘리고 그만큼 컨슈머를 추가한다. 컨슈머를 추가해 병렬처리량을 늘린다. 📝 프로듀서 전송 데이..
- Total
- Today
- Yesterday
- 백준
- OnActivityForResult
- 리눅스
- Baekjoon27219
- baekjoon
- virtualbox
- E_FAIL
- whatis
- 코테
- api문서
- linuxtouch
- GitHubAPIforJava
- atq
- 리눅스cron
- Linux
- SELECT #SELECTFROM #WHERE #ORDERBY #GROUPBY #HAVING #EXISTS #NOTEXISTS #UNION #MINUS #INTERSECTION #SQL #SQLPLUS
- Baekjoon27211
- 백준27211
- 사용자ID
- linuxawk
- GithubAPI
- 백준27219
- 쇼미더코드
- 버추억박스에러
- linuxgedit
- cron시스템
- 버추억박스오류
- linux파일
- awk프로그램
- cat
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |