일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 멀티프로세서
- DirectX12
- 그리디 알고리즘
- 자료구조
- OS
- directx
- 컨디션 변수
- 병행성
- Direct12
- 스케줄링
- 디자인패턴
- 알고리즘
- 다이나믹 프로그래밍
- DirectX 12
- 다이나믹프로그래밍
- 락
- 동적계획법
- 타입 객체
- 영속성
- I/O장치
- 멀티쓰레드
- 그리디알고리즘
- codility
- 쓰레드
- 프로그래머스
- 운영체제
- 파일시스템 구현
- 병행성 관련 오류
- 렌더링 파이프라인
- 백준
- Today
- Total
목록Java (23)
기록공간
싱글턴이란? 싱글턴이란 디자인 패턴에서 생성 패턴 중 하나로 오직 하나의 인스턴스만 생성하도록 약속하는 패턴이다. 보통 싱글턴 패턴은 무상태(Stateless) 객체나 시스템 객체같 유일해야 하는 객체를 생성하는데에 사용된다. 싱글턴 패턴의 한계는 그 특성에서도 알 수 있다. 하나의 인스턴스만 생성 가능 하다는 특성 말이다. 싱글턴을 사용하려는 클라이언트를 테스트하기가 어려워 질 수 있다. 왜냐하면 테스트를 위한 가짜(mock)객체를 구현하는 것으로는 싱글턴을 대체 할 수 없기 때문이다. 싱글턴 생성 방법 첫번째 방법은 public 정적 final 멤버변수를 사용하는 방법이다. public class Elvis { public static final Elvis INSTANCE = new Elvis(); ..
정적 팩터리 메서드 혹은 생성자에는 서로 공통적인 제약이 하나 있다. 선택적 매개변수가 많을 경우 적절히 대응이 어렵다는 것이다. ex) 영양정보는 20개가 넘어가지만, 대다수의 값이 0인 경우 이를 해결하기 위해 여러 대안이 있는데, 한번 살펴보도록 하자. 점층적 생성자 패턴 (Telescoping Constructor Pattern) 매개변수를 점층적으로 받을 수 있게 생성자를 구성하는 것이다. 필수 매개변수만 받는 생성자 필수 매개변수 선택 매개변수 1개 받는 생성자 선택 매개변수 2개 받는 생성자 ... public class NutritionFacts { private final int servingSize; // 1회 제공량 필수 private final int servings; // 총 n회..
인스턴스를 얻을 수 있는 전통적인 수단 ==> 생성자(Constructor) 하지만, 클래스는 생성자와 별도로 정적 팩터리 메서드를 제공한다. - 래퍼 클래스 Boolean에서 발췌한 간단한 예 // static(정적) // valueOf(메서드) public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 정적 팩터리 메서드 장점 1. 이름을 가질 수 있다. 생성자 자체 만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 하지만 정적 팩터리 메서드는 메서드명을 잘 짓는다면 객체의 특성을 쉽게 묘사할 수 있다. 기본 생성자 => BigInteger(int, int, Random) 정적 팩터리 메서드 => Bi..
작게 만들어라! 함수를 만드는 가장 중요한 규칙은 '작게!'이다. 이 규칙은 근거를 대기가 곤란하다. 함수가 작을수록 더 좋다는 증거를 제시하기도 어렵다. 하지만 여러 프로그래머의 수년 동안의 경험을 바탕으로 이 결론이 도출된 것은 저명한 사실이다. 오랜 시행착오로부터 우러나오는 경험을 바탕으로 함수는 작을수록 좋다는 것을 도출해낸 것이다. 그렇다면 얼마나 짧아야 좋을까? 다음 코드를 보자. public static String renderPageWithSetupsAndTeardowns ( PageData pageData, boolean isSuite) throws Exception { if(isTestPage(pageData)) includeSetupAndTeardownPages(pageData, is..
소프트웨어에서 이름은 어디에나 쓰인다. 변수에도 이름을 붙이고, 함수에도 이름을 붙이고, 인수와 클래스와 패키지에도 이름을 붙인다. 소스 파일에도 이름을 붙이고, 소스 파일이 담긴 디렉터리에도 이름을 붙인다. 이렇듯 많이 사용하기 때문에 이름을 잘 지으면 여러모로 편하다. 의도를 분명하게 밝혀라 의도가 분명한 이름을 지으라고 말하기는 쉽다. 여기서는 의도가 분명한 이름이 정말로 중요하다는 사실을 거듭 강조한다. 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다. 변수(함수, 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 이에 대한 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 ..
코드가 존재하리라 코드는 요구사항을 상세히 표현하는 수단이다. 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 이것이 프로그래밍이고, 이렇게 명시한 결과가 바로 코드이다. 언젠가는 코드가 사라져 시키는 대로 돌아가는 무언가가 나올 거라 기대하는 사람들이 있지만, 이는 절대로 불가능한 기대이다. 창의력과 직관을 보유한 인간조차도 성공적인 시스템을 구현하기 힘들다. 궁극적으로 코드는 요구사항을 표현하는 언어라는 사실을 명심하자. 요구사항에 가까운 언어를 만들 수도 있고, 정형 구조를 뽑아내는 도구를 만들 수도 있다. 하지만 어느 순간에는 정밀한 표현이 필요하다. 그 필요성을 없앨 방법은 없다. 그러므로 코드도 항상 존재하리라. 나쁜 코드 프로그래머들은 좋은 코드가 중요하다는 사실을 안다. 왜냐면 오..
개요 기존에 zen coding 이라는 이름으로 사용되었다. 이후 Google 에서 이 도구를 수용하면서 Emmet 이라는 이름으로 변경되었다. HTML 생산성 도구(HTML 코딩을 빠르게 하기 위한 플러그인) CSS 선택자 사용 (CSS3 지원) → HTML을 CSS 선택자를 통해 검색하는 방법 대신 CSS 선택자를 통해 HTML 을 생성하도록 하는 개념 환경 설정 대부분의 툴에서 지원하고 있음. (※ 대부분의 편집기 내 액션 키 : Ctrl + E) http://Emmet.io 좌측 상단 메뉴들 중 DOWNLOAD 클릭 → https://emmet.io/download/ 로 이동 페이지 본문의 내용 중 Eclipse/Aptana 항목 클릭 → https://github.com/emmetio/emmet..
『 ` 』 : GRAVE(그레이브) 『 ~ 』 : TILDE(틸드) 『 ! 』 : EXCLAMATION POINT(국내에서는 굳이 이렇게 부를필요 없음) 『 @ 』 : AT SIGN(엣사인), COMMERCIAL AI(커머셜 엣) 『 # 』 : CROSSHATCH(크로스해치) / SHARP(샵) 『 $ 』 : DOLLAR SIGN 『 % 』 : PERCENT SIGN 『 ^ 』 : CIRCUMFLEX(서컴플렉스) 『 & 』 : AMPERSAND(엔퍼샌드) 『 * 』 : ASTERISK 『 ( 』 : LEFT PARENTHESIS(이렇게 부를 필요 X) 『 ) 』 : RIGHT PARENTHESIS(이렇게 부를 필요 X) 『 () 』 : PARENTHESIS(이렇게 부를 필요 X) 『 - 』 : HYPHE..