[ALGORITHM] LRU 캐시
·
ALGORITHM & DATA STRUCTURE
캐시 정의 빠른 검색과 조회를 위해 자주 사용되는 데이터나 값을 미리 복사해 놓는 임시 장소 주로 데이터 접근시 오래걸리거나 값을 다시 계산해야할 때 절약해야 하는 경우 사용 LRU (Least Recently Used) 캐시 최근에 가장 오래 사용하지 않은 페이지를 교체하는 기법 캐시에 공간이 부족시 가장 최근에 사용하지 않은 데이터(가장 오래된 데이터)를 제거 메모리 상에서 가장 오래된 데이터를 새로운 데이터로 갱신함 자바 구현 예시 LinkedList로 구현 public class LRUCache { public int size; public LinkedList cache; public LRUCache(int size) { this.size = size; this.cache = new LinkedL..
[IntelliJ] error: unmappable character (0xEB) for encoding x-windows-949 해결
·
IDE
error: unmappable character (0xEB) for encoding x-windows-949 발생시 방법 File -> Settings -> File Encodings -> Global Encoding, Project Encoding UTF-8 변경 Help -> Edit Custom VM Options -> -Dfile.encoding=UTF-8 추가 위에 두 방법이 안되면, Gradle을 빌드로 Default 설정되었을 때 발생함 ㅡㅡ Settings -> Build, Execution, Deployment -> Build Tools Gradle -> Build and run using을 IntelliJ로 변경
[SPRING] AOP
·
SPRING
AOP (Aspect Oriented Programming) 관점지향 프로그래밍, 핵심관점(업무로직) + 횡단관점(트랜잭션/로그/보안/인증 처리등)으로 관심의 분리를 실현 중복을 줄여서 적은 코드 수정으로 전체 변경을 할 수 있게 하자라는 목적에서 출발 중복되는 코드 제거, 효율적인 유지보수, 높은 생산성, 재활용성 극대화, 변화 수용이 용이 등의 장점이 있음 자바진영에서 사용되는 AOP도구로는 AspectJ, Spring AOP가 존재함 Aspect로 모듈화하여 핵심적인 비즈니스 로직에 분리하여 재사용하겠다는 것이 AOP의 취지 AOP는 횡단관심사를 깔끔하게 처리하기 어려운 OOP의 부족한 부분을 보조하려는 목적으로 나옴 AOP 개념 Joinpoint : 메소드를 호출하는 '시점', 예외가 발생하는 '..
[JAVA] DBCP (DB Connection Pool)
·
JAVA
DBCP 정의 미리 일정 수의 Connection을 만들어서 Pool에 담아 뒀다가 사용자의 요청이 발생하면 연결을 해주고 연결종료 시 Pool에 다시 반환하여 보관하는 데이터베이스 연결 캐시 DBCP 사용목적 DB에 Connection을 생성할 때 연결정보 생성 시간 비용이 많이 소모됨, DBCP를 사용하면 Connection 정보를 메모리영역에서 저장 / 관리하기 때문에 어플리케이션 단에서 비용 문제를 줄일 수가 있음 DBCP 장점 DB Connection 수를 제한할 수 있어 과다한 접속으로 인한 서버의 자원 고갈을 예방 DB 접속 모듈을 공통화하여 DB서버환경이 바뀔 경우 유지보수를 수월하게 함 메모리영역에 커넥션 정보를 관리하기 때문에 클라이언트가 그만큼 접속을 더빠르게 할 수 있음 DBCP 종..
[JAVA] Stack / Deque
·
JAVA
Stack 리스트의 한쪽 끝으로만 자료 삽입, 삭제 작업이 이루어지는 자료구조를 구현한 클래스 Vector를 상속받은 스택메모리 구조의 클래스를 제공 (Vector 동기화선언이되어 Deque Queue 인터페이스를 확장한 인터페이스 자료의 입출력을 양쪽 끝에서 할 수 있음 인덱스로 요소에 액세스, 삽입, 제거를 허용안 함 Stack / Deque 비교 Deque는 인터페이스로 구현해야 하기 때문에 객체지향설계 관점에서 Stack보다 더 낳은 유연성을 제공 Stack은 Vector로 상속받아서 구현한 클래스라 동기화되기 때문에 단일쓰레드 환경에서는 성능적 이슈가 발생할 수가 있음 Deque의 경우 멀티쓰레드 같은 경우 동기화 이슈가 발생할 수 있지만 ArrayDeque에 대한 동기화 데코레이터를 구현할 수..
[OTHER] 모놀리식 아키텍처
·
OTHER
MSA 개념 살펴보기전에 알아두기 (알긴아는데 기록), MSA 등장전 대부분 애플리케이션은 모놀리식 아키텍처였음 모놀리식 아키텍처 개념 UI 및 비즈니스 로직, DB 액세스 로직 모두 하나의 애플리케이션 산출물로 패키징 되어 애플리케이션에 배포되는 형태 하나의 서비스 또는 어플리케이션이 하나의 거대한 아키텍처를 가질때를 뜻함 장점 모든 것이 하나로 구성되어 있기 때문에 개발, 빌드 배포, 테스트가 복잡하지 않음 하나로 구성되어 있기 때문에 Scale up하거나 Scale out하기 용이함 개발환경과 방법이 통일되어 있음 단점 규모가 커질 수록, 유지보수가 어려워지며, 애플리케이션 구동시간도 그만큼 늘어나고, 빌드 배포시간도 길어짐 작은 수정사항이 생길경우 전체 영향이 있기 때문에 불안정함 내부 요소간의 ..
[NETTY] 개념 정리
·
NETTY
Netty 정의 유지관리가 용이한 고성능 프로토콜 서버와 클라이언트를 신속하게 개발하기위한 비동기식 이벤트기반 네트워크 애플리케이션 프레임워크 Netty 특징 범주 특징 설계 단일 API로 블로킹과 논블로킹 방식의 여러 전송 유형을 지원, 단순하지만 강력한 스레딩 모델, 비연결 데이터그램 소켓 지원, 재사용 지원을 위한 논리 컴포넌트 연결 이용 편이성 JDK 1.6을 제외한 추가 의존성이 없음 성능 코어 자바 API보다 높은 처리량과 짧은 지연시간, 풀링과 재사용을 통한 리소스 소비 감소, 메모리 복사 최소화 견고성 저속, 고속 또는 과부하연결로 인한 OutOfMemoryError가 발생하지 않음, 고속 네트워크 상의 NIO에서 일반적인 읽기/쓰기 비율 불균형이 발생하지 않음 보안 완벽한 SSL / TL..
[OS] Process (프로세스)
·
OS
Process 정의 실행중인 프로그램을 뜻함 주기억장치에 저장된 프로그램 작업 스케줄러에 의해서 생성되어 주기억장치에 진입함을 뜻함 프로세스 내부에는 최소 하나의 스레드를 가지고 있으며, 실제로 스레드 단위로 스케쥴링을 함 Process 메모리 구조 Heap : 동적할당을 위한 메모리 영역 Data : 전역변수, static 변수 할당 Stack : 지역변수, 함수 호출시 전달되는 파라미터를 위한 메모리 영역 Process 상태 신규 (new) 실행 (Run) : 준비 상태에 있는 프로세스가 CPU를 얻어 실제 작업을 수행하는 상태 준비 (Ready) :하나의 프로세스가 중앙처리장치를 사용할 수 잇는 상태 대기 (Waiting) : 프로세스가 어떤 사건이 일어나기를 기다리는 상태 완료 (Termnated..
[SPRING] Interceptor
·
SPRING
Interceptor 정의 컨트롤러의 핸들러는 호출하기 전과 후의 요청과 응답을 참조하여 가공할 수 있게 중간에 가로채서 처리하는 기능 Interceptor 실행하는 시점 Filter는 DispatcherServlet 앞단에 처리되며, Intercepter는 그 후인 Handler와 사이 구간에서 실행이 됨 왠만하면 Spring과 관련된 작업을 구현할 때는 Intercepter를 사용하는게 좋아보임 Interceptor 구성 public interface HandlerInterceptor { boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler); void postHandle(HttpServlet..