본문 바로가기
반응형

Java19

Objects 시리즈_1장.객체, 설계 오브젝트의 1장인 객체, 설계를 간단히 정리해보았다. 객체, 설계 패러다임 정의 모델, 패턴, 또는 전형적인 예를 의미 한 시대의 사회 전체가 공유하는 이론이나 방법, 문제의식 등의 체계 과거의 패러다임이 새로운 패러다임에 의해 대체됨으로써 정상 과학의 방향과 성격이 변하는 것을 패러다임 전환이라 함. 예) 우주를 바라보는 패러다임이 천동설에서 지동설로 변화 . 특성 패러다임과 패러다임을 채용하는 언어는 특정한 종류의 문제를 해결하는데 필요한 일련의 개념들을 지원한다. 두 개의 패러다임은 하나의 언어에 함께 존재할 수 있으며, 함께 공존함으로써 서로의 장단점을 보완할 수 있다. 이러한 언어를 다중패러다임 언어라고 한다. 절차 + 객체 = C++ 함수 + 객체 = Scala . 결론 은총알은 없으며, 객체.. 2020. 4. 14.
Objects 시리즈_0장.오리엔테이션 오브젝트란 책은 지금까지 내가 해왔던 자바 프로그래밍을 돌아보게 하는 책이다. 지금까지의 코드가 전혀 객체 지향 적이지 못했으며, 고객의 수정 요청이 발생했을 때 코드가 진도 9.0 지진처럼 흔들렸던 이유를 깨닫게 해주기 충분했다. . 캡슐화, 응집도와 결합도, 상속, 합성, SOLID, 서브 클래싱, 서브 타입 등 객체 지향과 관련된 내용들이 정말 알차게 구성되어 있고 쉽게 이해 되었다. . 하지만 말로 표현하지 못하는 지식은 완전히 숙지하고 있는 지식이 아니라고 배워왔다. . 이 Objects 시리즈를 연재하며 책에서 핵심이 되는 내용을 우선 정리하며 명확히 정립하고, 이를 기반으로 2부에서 나의 말과 언어로 다시 한번 정리해볼 계획이다. . 시리즈를 읽으며 이해가 안되거나 의문이 가는 사항은 비판 .. 2020. 4. 14.
토비의 봄을 담은 제네릭 2편 람다와 인터섹션 시작하는 글 1편에서 설명했던 제네릭의 개념을 바탕으로 하여 람다와 인터섹션에 대해 학습해보자. 람다란? 람다 표현식은 익명 클래스와 익명 메소드, 함수형 인터페이스를 단순화하여 표현한 것이다. public class LambdaAndIntersection { public static void main(String[] args) { hello(o -> o); hello(o -> { return o; }); hello( new Function(){ @Override public Object apply(Object o) { return o; } }); } private static void hello(Function o) { } } 위 예제를 보면 hello 란 정적 메소드에 할당된 파라미터 들은 람다에 익.. 2020. 3. 26.
토비의 봄을 담은 제네릭 1편 작성 계기 자바 공부 5년차 자알못이 분수를 깨닫고 부족한 개념을 쌓기 위한 첫 걸음으로, Java 5에 처음 등장해 활약 중인 제네릭에 대하여 토비 님의 강의를 듣고 정리해보았다. 이펙티브 자바나 구글링을 통해서도 이해하기 힘들었던 제네릭이 완전히 이해되었다. 이 글을 쓰며 내 머릿 속을 다시 한 번 정리하고, 기록하고자 한다. 제네릭 제네릭이란? 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법이다. 아래 예제를 보자. public class GenericEx1 { public static void main(String[] args) { Jordy stringJordy = new Jordy (); stringJordy.setT("죠르디"); System.out.println(stringJo.. 2020. 3. 26.
쓰레드와 프로세스, 그리고 자바 비동기 API Thread And Process in OS Level 프로세스란? 독립된 실행의 단위 CPU 자원은 OS의 스케줄러에 의해 Time Slice 만큼 실행. Memory는 OS로 부터 할당 받은 메모리 공간 사용.(CODE, DATA, HEAP, STACK) 쓰레드(s) + 메모리공간 프로그램 코드: 개발자가 작성한 코드 데이터: 컴파일 타임에 정해 지는 전역 변수 및 상수 데이터 영역 확보 런타임에 힙과 스택 영역 생성 CPU - Memory 통신 방법 CPU와 메모리에 직접 접근 할 수 없어서 가상 메모리를 두는데, 가상 메모리는 페이지 테이블이라고도 불리며 프로세스의 페이지 정보를 저장한다. 개별 프로세스의 페이지는 다른 프로세스가 접근할 수 없다. 가상 메모리 또는 가상 기억 장치는 RAM을 관리.. 2020. 3. 10.
자바 링크 성능 https://blog.jooq.org/2015/02/05/top-10-easy-performance-optimisations-in-java/ 자료구조 https://velog.io/@dudrkdl777/Set%EA%B3%BC-Map-e7k1omvrsl 스프링 https://ohjongsung.io/2017/06/02/%ED%95%84%EB%93%9C-%EC%A3%BC%EC%9E%85-field-injection-%EC%9D%84-%ED%94%BC%ED%95%98%EC%9E%90 https://coding-start.tistory.com/250 https://madplay.github.io/post/why-constructor-injection-is-better-than-field-injection.. 2020. 3. 6.
Item 35. int 상수 대신 열거 타입을 사용하라 열거 타입의 정의와 필요성 열거 타입은 일정 개수의 상수 값을 정의한 다음, 그 외의 값은 허용하지 않는 타입이다. 사계절, 태양계의 행성 등이 좋은 예다. 열거 타입은 정적 변수를 나열해 놓은 정수 열거 패턴과 많이 비교 되곤 한다. // 정수 열거 패턴 예시 public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; public static final int ORANGE_NAVEL = 0; public static final int ORANGE_TEMPLE = 1; public static final int ORANGE_BLOOD.. 2020. 3. 4.
빌더 메서드로 배열을 리스트로 만드는 법 Java 8 Arrays.asList("하나", "둘", "셋") Java 11 List.of("하나", "둘", "셋"); ex) HashSet set = new HashSet(Arrays.asList("하나", "둘", "셋");); 단일 행으로 Set을 생성하는 것이 가능하다. 활용도가 무궁무진해 보인다. 2020. 2. 25.
SOLID SOLID 로버트.C.마틴은 긴 세월 동안 수 많은 시행착오와 Best Practice 속에서 객체 지향 설계의 정수라 할 수 있는 5원칙이 집대성 되었는데 그것이 SOLID다. 객체지향 프로그램을 잘 개발하고 설계하기 위한 5원칙 SOLID에 대해서 알아보자. 단일 책임 원칙(SRP, Single Responsibillity Principle): 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. 너무 책임이 너무 많을 경우, 변화가 생겼을 때 다른 연관 클래스에 영향을 줌 EX) 남자 클래스가 여자친구, 부모, 상사, 친구 클래스와 상호작용할 수 있게 구현되어 있을 때, 여자친구와의 연관성을 끊을 경우 그 변화의 영향도가 관련된 모든 클래스에게 뻣친다. SOC(Seperate of Conce.. 2020. 2. 8.
반응형