일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 칭기즈칸의 위대한 장군 수부타이
- java
- 모두가 기다리는 사람
- kubernetes
- 월칙
- 부자의그릇
- 공헌감
- Infresh
- colllection
- HTML
- ESG
- 뉴 컨피던스
- try width resources
- sentry
- Container
- try-with-resources
- 이펙티브 자바
- 쿠버네티스
- 비메모리 자원
- 히든 스토리
- apache kafka
- docker
- CSS
- 아웃풋법칙
- 참조 계수
- node
- 과제의 분리
- 도파민형 인간
- 레퍼런스 복사
- 수부타이
- Today
- Total
목록Programming/Java (38)
Hi
대부분의 규칙은 몇 개의 기본적 원칙 - 명료함(clarity)과 단순함(simplicity) 각 모듈은 사용자가 예상할 수 없는 방식으로 동장하면 안됨(가능한 작아야 하지만, 그렇다고 너무 작아져서는 안된) 모듈 - 재사용 가능한 컴포넌트. (개별 메소드 뿐 아니라 여러 패키지로 구성된 복잡한 시스템까지 아우름) '코드'는 복사하기보단 재사용해야 한다. 모듈 간 의존성은 가능한 줄여야 한다. 오류는 코드에 끼어든 즉시, 바람직하게는 컴파일 시점에 탐지가능 하도록 한다. 자바는 네 가지 유형의 자료형(type)을 지원. - 인터페이스(interface. 어노테이션 포함), 클래스(class, 열거 자료형 enum 포함), 배열(array), 기본 자료형(primitive type) 참조 자료형 (refe..
스택을 만들어보자 Vector, HashTable, StringBuffer => 멀티 스레드 안정성 잘못 설계된 라이브러리의 특징 : 동기화의 정책을 라이브러리가 결정하면 안된다.List, Map, StringBuilder스레드 안정성이 없다. int n = 0; ++n; => 원자적이지 않기 때문에, 문제가 발생한다. import java.lang.ref.SoftReference; class User { private String name; private int age; private String cache = null; public User(String name, int age) { this.name = name; this.age = age; } @Override public String toStri..
스택을 만들어보자 Stack을 만들어 보자. 1. List를 한쪽 방향으로 넣거나 빼면 스택이다. 2. 기존 클래스(ArrayList, LinkedList)를 재활용해서 만들어보자. 상속: is-a 포함 현대적인 객체 지향 설계에서는 상속을 재사용을 위해 사용하지 않는다. 상속의 목적? : 다형성 4. 상속의 문제점 => 깨지기 쉬운 기반 클래스의 문제기존 클래스의 인터페이스를 변경해서 새로운 클래스처럼 보이게 하는 설계 방법 => 어댑터(Adapter) import java.util.*; //import java.util.Stack; // 라이브러리를 설계할 때 // : 사용하기 편리하게 해야 한다. // 잘못 사용하기도 어렵게 만들어야 한다. // Generic // : 알고리즘은 동일한데, 타입만 ..
순회 순회(Traverse) => Stack을 다른 사람들이 내부 구조를 알지 못한다고 하더라도 순회를 하게 하고 싶다.컬렉션(Collection)의 내부 구조에 상관없이 요소를 순회(열거)하고 싶다 => Iterator나의 컬렉션이 Iterator를 제공하고 있다. => Iterable반복자(Iterator)를 사용할 때 주의할점 => 순회 동안 절대 내부 요소에 크기의 변경이 발생하면 안된다. : Concurrent Modification Exception import org.junit.Test; import java.util.Iterator; import java.util.Stack; // Iterator -> Enumerator // Iterable -> Enumrable class CountDo..
인터페이스 추상클래스와 인터페이스의 차이점 => 상태를 가질수 있다 없다. 추상 클래스는 부모가 기본적인 구현을 제공할 수 있다. import java.util.Iterator; interface MP3 { void play(); void stop(); // default(defender) method - Java 8 default void playOneMinute() { play(); //... stop(); } } interface MP4 { default void playOneMinute() { // play(); //... // stop(); } } class Person { public void playMusic(MP3 mp3) { mp3.play(); } } class SmartPhone im..
Iterator Iterable와 Iterator Iterable 를 상속하는 클래스 안에 내부클래스로 Iterator를 상속하는 클래스를 만들면 좋다. import java.util.Iterator; class CountDown implements Iterable { private int n; public CountDown(int n) { this.n = n ; } @Override public Iterator iterator() { return new CountDownIterator(n); } // inner class vs nested class // => 구체적인 타입을 감출 수 있다. private class CountDownIterator implements Iterator { private ..
#SOLID => 절차 지향 프로그래밍OOP=> 객체 지향 프로그래밍 좋은 설계SOLID - 로버트 C 마틴(엉클 밥) '마틴 파울러'리팩토링: 기능에는 변화 X구조를 개선하는 작업 SRP: Single Responsibility Principle=> 단일 책임의 원칙모듈은 단 하나의 책임을 가져야 한다.class, 변수, 함수, 패키지=> 유지보수=> 이름 => rename OCP: Open Close Principle=> 개방 폐쇄의 원칙=> 목표모듈은 수정에는 닫혀 있고, 확장에는 열려 있어야 한다.=> 새로운 기능이 추가되어도 기존 코드는 수정되면 안된다. LSP: Liskov Substitution Principle=> 리스코프 대체(치환) 원칙=> 자식 클래스는 부모 클래스로 대체될 수 있어야..
IPC(Inter Process Communication) : 프로세스의 주소 공간을 분리되어 있기 때문에 두 개 이상의 프로세스가 데이터를 주고 받기 위해서는 IPC가 필요하다. 메세지 큐 파이프 ... 소켓 : (UNIX 개념으로)네트워크 카드를 파일처럼, 개념화한 것. IP (Internet Protocol) 컴퓨터 주소 - IP Address 프로세스 주소 - Port 서버 - 클라이언트 OSI(Open System Interconnection) 참조 모델