전체 글 (70) 썸네일형 리스트형 AWS KMS in JAVA 의존성 추가(gradle) implementation group: 'com.amazonaws', name: 'aws-java-sdk-kms', version: '1.12.303' implementation group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.11.106' implementation group: 'com.amazonaws', name: 'aws-encryption-sdk-java', version: '1.3.1' JAVA 소스 인증 관련 부분은 필요 시에 따라 제거/추가가 필요하다.(추가:외부, 제거:내부(인증완료)) import java.io.IOException; import java.io.Reader; import java.nio.B.. [HeadFirst] 5장 싱글턴 패턴 용도 인스턴스를 한개 만 쓰기 위해서 특정 클래스에 객체 인스턴스가 하나만 만들어지도록 해줄때 전역 변수 대신 사용하기 위해, 전역 변수는 애플리케이션이 시작될 때 객체가 생성되는데, 자원을 많이 차지하게 됨 연결 풀이나 스레드 풀과 같은 자원풀을 사용할 때 싱글턴 패턴 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공합니다. 다른 어떤 클래스에서도 자신의 인스턴스를 추가로 만들지 못하게 해야한다. 필요하다면 클래스 자신을 거치도록 하게 합니다. 어디서든 그 인스턴스에 접근할 수 있도록 전역 접근 지점을 제공합니다. 리플렉션, 직렬화, 역질렬화에서 문제가 발생할 수 있다. (enum으로 싱글턴을 생성하면 해결가능) 멀티스레딩 문제 해결하기 인스턴스를 가져오는 함수에 synchronize.. [HeadFirst] 4장 팩토리 패턴 new 연산자가 눈에 띈다면 '구상'이라는 용어를 떠올리자 new를 사용하면 구상 클래스의 인스턴스가 만들어진다 인터페이스가 아닌 특정 구현을 사용하는 코드가 된다. 구상 클래스를 바탕으로 코딩하면 나중에 코드를 수정해야 할 가능성이 커지고 유연성이 떨어진다. 구상 클래스의 인스턴스 생성 부분을 나무지 부분으로 캡슐화 하자 Duck duck; if(picnic){ duck = new simpleDuck(); }else if(hunting){ duck = new DecoyDuck(); }.... 객체 생성 부분 캡슐화 객체 생성을 처리하는 클래스를 팩토리라고 부릅니다. 객체 생성 부분을 전담할 클래스를 정의해서 사용한다. 객체 생성 작업을 팩토리 클래스로 캡슐화 해놓으면 구현을 변경할 때 팩토리 클래스 하.. [HeadFirst] 3장 데코레이션 패턴 상속을 사용한다고 해서 무조건 유연하거나 관리하기 쉬운 디자인이 만들어지진 않는다. 구성과 위임으로 실행 중에 행동을 상속하는 방법이 있다. 객체를 동적으로 구성하면 기존 코드를 고치는 대신 새로운 코드를 마늗ㄹ어서 기능을 추가할 수 있다. 디자인 원칙 클래스는 확장에는 열려 있어야 하지만 변경에는 닫혀있어야 한다. 모순처럼 보이지만 직접 코드를 수정하지 않고도 코드를 확장할 수 잇게 해주는 기법이 있다. 코드에서 확장해야 할 부분을 선택할 때는 세심한 주의를 기울여야 한다. 무조건 Open-Closed Psrinciple을 적용한다면 괜히 쓸떼 없는 일을 하며 시간을 낭비할 수 있으며, 필요 이상으로 복잡하고 이해하기 힘든 코드를 만들게 되는 부작용이 발생할 수 있다. 객체 장식 EX DarkRoast.. [헤드퍼스트] 2장 옵저버 패턴 옵저버 패턴의 작동 원리 1. 객체가 등장해서는 주제한테 자기도 옵저버가 되고 싶다고 이야기합니다. 2. 옵저버 등록을 합니다. 3. 주제값이 바뀌면 모든 옵저버가 주제 값이 바뀌었다는 연락을 받습니다. 4. 기존 등록되어있는 객체가 탈퇴하고 싶다는 요청을 합니다. 5. 주제에 새로운 값이 등록되더라도 탈퇴한 객체는 연락을 받지 않습니다. 옵저버 패턴 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의합니다. 한 객체의 상태가 변경되면 그 객체에 의존하는 모든 객체에 연락이 갑니다. 옵저버 패턴은 신문사와 구독자로 이어지는 신문 구독 서비스와 비슷합니다. 주제가 상태를 저장하고 제어합니다. 따라서 상태가 들어이는 객체는 하나만 있.. [헤드퍼스트] 1장 전략패턴 클래스에 메서드를 추가할 상황일때(유연하지 않게 만든다면) 서브클래스에 상속을 이용해 구현(어떤 클래스는 추가된 메서드를 사용 안 할 수 있음 인터페이스를 사용해 구현(인터페이스를 구현해서 만든 코드를 재사용할 수 없음) 디자인원칙 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리한다. 바뀌는 부분은 따로 뽑아서 캡슐화한다. 그러면 나중에 바뀌지 않는 부분에는 영향을 미치지 않고 그 부분만 고치고나 확장할 수 있다. 구현보다는 인터페이스에 맞춰서 프로그래밍한다. 서브클래스에서 자체적 구현 X 클래스에서 구체적 구현 X 인터페이스를 구현한 별도의 클래스를 사용 > 클래스는 인터페이스를 사용하면 구체적으로 구현할 필요가 없어진다. 인터페이스에 맞춰서 프로그래밍한다는 말은 상위 형식에 맞춰.. AWS JAVA 1.8 설치 sudo yum install java-1.8.0-openjdk -y vi /etc/profile export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.amzn2.0.2.x86_64 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar source /etc/profile AWS 초기세팅(계정생성, 개인키공개키 로그인) sudo useradd pbwzo sudo vi /etc/sudoers pbwzo ALL=(ALL) NOPASSWD: ALL sudo su pbwzo cd /home/pbwzo/ ssh-keygen -t rsa vi .ssh/id_rsa.pub (기존파일복사) cp .ssh/id_rsa.pub .ssh/authorized_keys sudo chmod 700 .ssh/ -R sudo chmod 600 .ssh/authorized_keys 이전 1 2 3 4 5 ··· 9 다음