본문 바로가기

분류 전체보기

(187)
구조패턴 - 프록시 1. 프록시 패턴이란? 일반적으로 프록시는 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스이다. 프록시는 어떠한 것(이를테면 네트워크 연결, 메모리 안의 커다란 객체, 파일, 또 복제할 수 없거나 수요가 많은 리소스)과도 인터페이스의 역할을 수행할 수 있다. 쉽게 말해 특정 객체에 대한 접근을 제어하거나 기능을 추가할 수 있는 패턴이다. 2. 샘플코드 유저가 로그인 할 때 프록시에 아이디와 패스워드를 캐싱하여 접근 권한을 판단할 수 있는 기능을 만들어보겠다. 억지스러운 코드긴 하지만 중간에 대리자가 있다는 개념 위주로 이해하면 될 것 같다. RepositoryService public interface RepositoryService { boolean loginUser(String id, Stri..
APK가 만들어지는 과정 안드로이드 apk가 만들어지는 과정 안드로이드에서는 자바, d8, r8 컴파일러가 있음. 여기서 자바 컴파일러는 해당 .java 파일을 .class의 바이트 코드로 변환해줌. 하지만 .class 같은 경우 JVM에서만 사용가능하지 달빅머신에서는 사용할수없음. 따라서 바이트코드를 달빅머신에 맞는 바이트코드로 변경해주어야 하는데 이 과정을 D8 컴파일러가 해줌. R8은 프로가드 컴파일러라고 보면 됨. 프로가드는 개발자의 코드를 난독화 및 최적화 해주는 툴임. 예를 들어 Class Java { private String name = "JAVA"; } -> Class a{ private String b= "JAVA"; } 처럼 간결하게 코드를 최적화해줌.
Socket 내용 Socket 프로그래밍의 개념 요약 create : 소켓 생성 bind : IP와 포트번호가 중복되어 있는지 확인하는 역할 listen : 클라이언트의 접속 기다림 클라이언트가 접속 되었을 때 연결 요청에 대한 정보는 시스템 내부적으로 관리되는 큐에 쌓임. 이상태를 not entablished state(대기 상태) 라고함 대기 중인 연결 요청을 큐로부터 꺼내와서 연결을 완료하기 위해서는 accept() api를 호출 accept : 클라이언트의 연결 요청을 받아들여 소켓 간 연결을 수립, 이전에 생성한 socket이 아닌 accept에서 새로운 소켓이 생성된다. 해당 소켓을 통해 데이터 통신이 이루어짐 close : 서버 소켓에서는 accept에서 생성된 소켓도 관리해야 함. 최종적으로 멀티플렉싱을 지..
구조패턴 - 데코레이션 패턴 1. 데코레이션 패턴이란? 데코레이터 패턴(Decorator pattern)이란 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴이다. 요리를 만들 때 음식을 맛깔스럽게 만들기 위해 데코를 한다고 하는데 이와 같이 무언가를 첨가한다는 개념으로 이해하면 좋을 것 같다. 2. 언제 사용하는지? 기존 기능은 유지하면서 새로운 기능을 더해야 할 때 사용할 수 있다.물론 기존 클래스를 상속 받아 새로운 서브 클래스를 만들어도 되지만 기능을 조합해야 하는 상황이라면 데코레이션 패턴이 더 유리하다. 3. 샘플코드 Http 통신할 때 Request Parameter를 체크하는 서비스를 만든다는 가정으로 작성하였다. ParamService interface ParamService { boolean check..
구조패턴 - 컴포짓패턴 1. 컴포짓패턴이란? 컴포지트 패턴(Composite pattern)이란 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다. 2. 언제 사용하는지? 위 내용에 나와 있듯이 컴포지트 패턴은 클라이언트가 복합 객체나 단일 객체를 동일하게 취급하는 것을 목적으로 한다. 기본적으로 트리 구조로 작성되며 복합 객체와 단일 객체의 처리 방법이 다르지 않을 경우 전체 - 부분 관계로 정의하여 사용한다. 트리 구조의 가장 대표적인 예로 파일과 디렉토리 관계를 예로 들 수 있다. 3. 샘플 코드 Component // Component 역할 public interface Component { public int getSize(); } ..
생성패턴 - 팩토리메서드 1. 팩토리메서드 패턴이란? Factory method는 부모 클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며 자식 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 2. 종류 - 단순한 방식 팩토리메소드 패턴 중 가장 간단한 유형으로 생성 클래스를 외부에 두어 타입에 맞는 객체를 생성하여 반환하는 방식이다. CoffeeFacotry(생성 클래스) public class CoffeeFactory { public static Coffee orderCoffee(String recipe) { if (recipe.equals("LATTE")) { return new Latte(recipe, 4000); } else if (recipe.equals("AMERICANO")) { return ..
생성패턴- 싱글톤 1. 싱글톤 패턴이란? 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다. 설정 값과 같이 여러 클래스에서 접근 가능하며 공통된 값들을 공유할 때 많이 사용하는 방식이다. 2. 주의점 - 멀티쓰레드 안정성 싱글톤은 하나의 인스턴스를 공유하기 때문에 멀티쓰레드 환경에 유의하여 작성되어야 한다. public class Settings { private Settings() { } private Settings INSTANCE = null; public Settings getInstance() { if (INSTANCE == null) INSTANCE = new Setting..
정보처리기사 암기 위주 정리 - 서버프로그램 구현 재사용 : 목표 시스템의 개발 시간 및 비용 절감을 위하여 검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업이다. 재사용 형태 - 편의적 재사용(내부, 외부) - 계획적 재사용 재사용 방법 - 합성 중심 - 생성 중심 모듈 : 특정 기능을 처리할 수 있는 싱행 코드를 의미하며 자체적으로 컴파일 가능하고 다른 프로그램에서 재사용이 가능하다. 소프트웨어 취약점 1. 메모리 보안 침임 - 버퍼 오버플로 - 허상 포인터 2. 입력 확인 오류 - 포맷 스트링 버그 - SQL 인젝션 - 코드 인젝션 - 이메일 인젝션 - HTTP 헤더 인젝션 - HTTP 응답 분할 - 디렉토리 접근 공격 - XSS 3. 경쟁 상태 - 심볼릭 링크 경쟁 4. 권한 혼동 버그 - CSRF : 사용자가 자신의 의지와는..