Java & Kotlin33 프록시패턴(Proxy Pattern)이란? 목차프록시패턴(Proxy Pattern)이란?프록시 패턴 구조패턴 적용하기장점과 단점자바와 스프링에서 찾아보는 패턴1. 프록시패턴(Proxy Pattern)이란?프록시 패턴은 대상 원본 객체를 대리하여 대신 처리하게 함으로써 로직의 흐름을 제어하는 행동 패턴이다.프록시를 번역하면 대리자, 대변인의 의미를 갖고 있다. 즉, 프록시에게 어떤 일을 대신 시키는 것이다.객체 지향 프로그래밍에 접목해보면 클라이언트가 대상 객체를 직접 쓰는게 아니라 중간에 프록시(대리인)을 거쳐서 쓰는 코드 패턴이라고 보면 된다. 따라서 대상 객체(Subject)의 메소드를 직접 실행하는 것이 아닌, 대상 객체에 접근하기 전에 프록시(Proxy) 객체의 메서드를 접근한 후 추가적인 로직을 처리한뒤 접근하게 된다.그냥 객체를 이용하.. 2023. 11. 22. 어댑터패턴(Adapter Pattern)이란? 목차어댑터 패턴1-1. 어댑터 패턴이 해결하는 문제1-2. 문제 해결 예제 11-3. 문제 해결 예제 2패턴 적용하기장점과단점자바와 스프링에서 찾아보는 패턴4-1. Collection 예제4-2. java.io 패키지 예제4-3. 스프링의 HandlerAdapter1. 어댑터 패턴이란?일상에서 흔히 볼 수 있는 콘센트라 보면 된다.우리가 110V 콘센트를 220V에 꽂거나, 반대로 220V 콘센트를 110V에 꽂으려고 할 때, 그 사이에 쓰는 어댑터(돼지코)를 비유하면 가장 쉽게 이해 할 수 있다.소프트웨어적으로 보면, 기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴을 말한다.즉, 클라이언트가 사용하는 인터페이스를 따르지 않는 기존 코드를 재사용할 수 있게 해준다.1-1. 어댑터 패.. 2023. 11. 21. 멀티프로세스 vs 멀티스레드 목차프로세스 vs 스레드1-1. 프로세스1-2. 스레드멀티프로세스 vs 멀티스레드2-1. 멀티프로세스2-2. 멀티스레드결론1. 프로세스 vs 스레드프로세스는 독립적인 실행환경을 가지고 있는 프로그램의 인스턴스를 의미하고, 쓰레드는 프로세스 내에서 실행되는 실행단위이다.1. 프로세스프로그램을 실행 시켜 동적으로 프로그램이 돌아가고 있는 상태를 말한다. 작업 중인 프로그램을 의미한다.흔히 우리가 컴퓨터를 사용할때 사용했던 작업관리자를 보면 실행중인 프로그램(프로세스)를 확인 할 수 있으며 작업 끝내기를 눌러 실행중인 프로세스를 끝내는 경우가 있었을 것이다.즉, 프로세스는 메모리에 적재되고 CPU자원을 할당받아 프로그램이 실행되고 있는 상태를 말한다.프로그램을 실행하면 프로세스가 만들어지면서 메모리 영역으로 .. 2023. 5. 30. __GC 방식에는 어떤 것들이 있을까?__ 목차개요Serial GCParallel GCParallel Old GC(Parallel Compacting GC)Concurrent Mark & Sweep GC(이하 CMS)G1(Garbage First) GC결론 1. 개요Old 영역은 기본적으로 데이터가 가득 차면 GC를 실행하는데 이때 GC방식에 따라 처리 절차가 달라진다. 어떤 GC방식이 있는지 살펴보고 이해해보자.2. Serial GC운영서버에서 절대 사용하면 안되는 방식이며 데스크톱의 CPU 코어가 하나만 있을때 사용하기 위해 만든 방식이다.하나의 쓰레드로 GC를 실행하기에 Stop-The-World 시간이 길어지므로 애플리케이션의 성능이 많이 덜어진다.Serial GC는 적은 메모리와 CPU 코어 개수가 적을 때 적합한 방식이다.3. Para.. 2023. 5. 4. GC**(GarbageCollection)**는 어떻게 동작하며 왜 필요할까? 목차GC는 무엇인가?GC는 왜 필요할까?GC 알고리즘3-1. Reference Counting3-2. Mark And SweepGC는 어떻게 동작하는가?4-1. 동작구조4-2. Minor GC랑 Major GC는 무슨 차이지?4-3. young영역과 old영역 왜 나눠놨지?5. 결론1. GC는 무엇인가?위키백과를 보면 다음과 같이 나와있다.즉, 동적 할당된 메모리 영역 가운데 더 이상 사용할 수 없게 된 영역을 탐지하여 자동으로 해제해준다.2. GC는 왜 필요할까?GC를 사용하면 수동으로 메모리 관리를 했던 여러 작업이나 에러들을 방지할 수 있다.장점메모리 누수를 막을 수 있다해제된 메모리에 접근을 막을 수 있다.해제한 메모리 또 해제하는 경우를 막을 수 있다단점GC 작업은 순수 오버헤드개발자는 언제 G.. 2023. 5. 2. Hashmap vs Hashtable vs __**ConcurrentHashMap**__ 목차개요HashTableHashMapConcurrentHashMap4-1. 동기화처리 방식HashMap vs HashTable vs ConcurrentHashMap결론1. 개요Hashtable, HashMap, ConcurrentHashMap 모두 Map 인터페이스를 구현한 컬렉션들이다. 기본적으로 key와 value구조를 가지게 되는데 서로 어떤 차이가 있는지 구현체를 비교해보자.2. Hashtable(key, value) Null 허용 X동기화보장 OHashtable은 thread-safe하며 데이터를 다루는 메소드인 get, put, remove 등 과 같은 메소드들이 아래 코드 처럼 synchronized가 붙은 메소드로 이루어져있다. 메소드를 호출하기전에 쓰레드간 락을 걸기에 멀티쓰레드 환경에서.. 2023. 4. 20. 이전 1 2 3 4 5 6 다음