얕은 복사와 깊은 복사 얕은 복사 하나의 객체의 주소값을 복사하는 경우를 말한다. public static void main(String[] args) { Cat navi = new Cat("navi"); Cat yo = navi; yo.chgName("yo"); System.out.println(navi.getName()); System.out.println(yo.getName()); } //결과 yo yo 깊은 복사 하나의 객체의 값들을 복사하는 경우를 말한다. public class Cat implements Cloneable{ ... public Cat copy() throws CloneNotSupportedException { Cat ret = (Cat)this.clone(); return re..
HTTP 1.1 HTTP 1.1은 기본적으로 Connection당 하나의 요청을 처리하도록 설계되어 있는 것이다. HTTP 1.1은 기본적으로 연결당 하나의 요청과 응답을 처리하기 때문에 동시 전송 문제와 다수의 리소스를 처리하기에 속도와 성능 이슈를 가지고 있다. 이로 인해 HTTP 1.1은 HOL(Head Of Line) Blocking - 특정 응답 지연, RTT(Round Trip Time) 증가, 헤비한 Header 구조라는 문제점들을 가지고 있다. HOL(Head Of Line) Blocking - 특정 응답 지연 하나의 응답이 지연될 시 해당 응답이 완료될 때 까지 다음 요청은 무한대기상태가 된다. RTT(Round Trip Time) 증가 하나의 Connection에 하나의 요청을 처리하므..
프로토타입 패턴을 활용하면, 복잡한 인스턴스를 복사할 수 있다. 프로토타입은 생산 비용이 높은 인스턴스를 복사하여 쉽게 생성할 수 있도록 하는 패턴이다. 인스턴스 생산 비용이 높은 경우 종류가 너무 많아 클래스로 정리하기 어려운 경우 클래스로부터 인스턴스 생성이 어려운 경우 기본 설계 요구 사항 일러스트레이터와 같은 그림 그리기 툴을 개발중이다. 어떤 모양(shape)을 그릴 수 있도록 하고 복사 붙여넣기 기능을 구현해라. 소스 //Shape public interface Shape extends Cloneable{ Shape copy(); } //Circle public class Circle implements Shape{ private int x,y,r; public Circle(int x, int..
싱글톤이란, 하나의 인스턴스만 생성하도록 구현하는 것을 말한다. 기본적인 설계 요구사항 개발 중 시스템에서 스피커에 접근할 수 있는 클래스를 만들어달라. 싱글톤 객체 정의 public class SystemSpeaker { static private SystemSpeaker instance; private int volume; private SystemSpeaker() { volume = 5; } //하나의 인스턴스만을 만들기 위한 메소드 public static SystemSpeaker getInstance() { if(null == instance) { return instance = new SystemSpeaker(); } return instance; } public int getVolume() ..
팩토리 메소드 패턴 팩토리 메소드 패턴에서 템플릿 메소드 패턴의 사용됨을 알 수 있다. 팩토리 메소드 패턴에서의 구조와 구현의 분리를 이해하고 구조와 구현의 분리 장점을 알 수 있다. 템플릿 메소드 패턴 간략히 다시보기 어떤 알고리즘이 여러 단계의 step으로 나누어질 수 있다면, 여러 step으로 메소드를 선언하고 하위 클래스에서 해당 메소드의 구현을 하는 패턴이다. 기본 설계 Product를 생성하는 DefaultProduct가 있고, DefaultProduct에서 사용하려는 Product들을 구현하게 된다. 템플릿 메소드 패턴을 사용하는데, Creator가 여러 step으로 나누어져 있을 시 DefaultProductCreator에서 구현한다. 요구 사항 게임 아이템과 아이템 생성을 구현해라. 아이..
SSL 디지털 인증서 SSL 인증서는 클라이언트와 서버간의 통신을 제3자가 보증해주는 전자화된 문서이다. 클라이언트가 서버에 접속한 직후 서버는 클라이언트에게 이 인증서 정보를 전달한다. 클라이언트는 이 인증서 정보가 신뢰할 수 있는 것인지를 검증 한 후에 다음 절차를 수행하게 된다. 통신 내용이 공격자에게 노출되는 것을 막을 수 있다. 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버인지를 판단할 수 있다. 통신 내용의 악의적인 변경을 방지할 수 있다. SSL에서 사용하는 암호화의 종류 SSL의 핵심은 암호화이다. 대칭키 Key를 통해 암호화된 메시지를 복호화 하는 방식이다. Ex. LOVE라고 하는 메시지를 전송하자. 이 때, LOVE를 MPZF라는 메시지로 암호화하여 전송하게 되고, 해당 메시지를..
HTTPS vs HTTP HTTP는 Hypertext Transfer Protocol의 약자이다. 즉, HTML을 전송하기 위한 방식이다. HTTPS와 HTTP의 차이를 살펴보면 둘 다 HTML을 전송하기 위한 방식이라는 측면은 동일한데, S에서 차이가 판가름된다. HTTPS에서 마지막 S는 Over Secure Socket Layer의 약자로 보안이 강화된 HTTP라는 것을 짐작할 수 있다. HTTPS는 HTTP와 다르게 보안 장치가 덧붙여 있는 것으로 볼 수 있다. HTTPS를 이용하여 메시지를 전송하게 되면 제 3자는 해당 메시지를 감청할 수 없게된다. Ex. 로그인을 위해서 서버로 비밀번호를 전송할 때 HTTP를 사용하면 메시지를 중간에 감청할 수 있다. Ex. 중요 문서 같은 것을 전송하고자할 ..
일정한 프로세스를 가진 요구사항을 템플릿 메소드 패턴을 이용하여 구현할 수 있다. 템플릿은, 모양자 중 동그라미를 그리는데 여러 색의 색연필을 사용하면 하나의 도형에 여러 색의 도형을 만들 수 있는 의미로 말할 수 있다. 알고리즘의 구조를 메소드에 정의하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의하는 패턴이다. 사용 목적 구현하려는 알고리즘이 일정한 프로세스가 있다. (여러 단계로 나눌 수 있다.) 구현하려는 알고리즘이 변경 가능성이 클 때 사용한다. 템플릿 메소드 패턴의 단계 알고리즘을 여러 단계로 나눈다. 나눠진 알고리즘의 단계를 메소드로 선언한다. 알고리즘을 수행할 템플릿 메소드를 만든다. 하위 클래스에 나눠진 메소드들을 구현한다. 기본 설계 알고리즘을 각 operation1, 2..
- Total
- Today
- Yesterday
- effectivejava
- 점층적 생성 패턴
- junit
- 정적팩터리메서드
- 팩토리 메소드 패턴
- 김영한
- java
- JPA
- 스프링부트
- 빌더 패턴
- 복사 팩토리
- 빈 순환 참조
- 인프런
- 이펙티브자바
- mustache
- springboot
- @Lazy
- ifPresent
- try catch finally
- 생성자
- try with resources
- jdk버전
- 연관관계
- flatMap
- package-private
- Spring
- java8
- 이펙티브 자바
- Effective Java
- 자바8
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |