일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Serial GC
- Transaction Pattern
- 타입스크립트
- 멀티스레드
- spring batch
- The law of Demeter
- 체인 패턴
- 디자인 패턴
- 키클락
- saga pattern
- TypeScript
- JPA
- java 정렬
- 스레드
- 알고리즘
- 디자인패턴
- 스프링 배치
- Spring Cloud Netfilx Eureka
- zipkin
- MSA
- Spring Boot Actuator
- thread
- spring cloud
- Parallel Old GC
- Resilinece4j
- 생산자 소비자 패턴
- Action Pattern
- 사가 패턴
- Java
- 배치
- Today
- Total
목록전체 글 (84)
PSD( Private-Self-Development )
소스 분석 과 인터넷 강의를 듣던 중 @Autowired 어노테이션 대신, @RequiredArgsConstructor 를 사용을 지향하여 이유를 찾아보게 되었다. 의존성 주입 ? Spring 프레임워크는 사용자가 new 키워드를 사용하여 객체를 생성 및 소멸시키는 과정을 대신 해주는데 객체간의 의존성을 주입해주고(DI) Spring 컨테이너가 Bean들의 생명 주기를 관리한다.(IoC) 이러한 의존성 주입에는 3가지 방식이 있는데, 이 중 생성자 주입을 지향해야 한다. 이유를 알아보자. 의존성 주입의 종류 1. 필드 주입 @Service public class AService{ @Autowired pivate ARepository aRepository; @Autowired pivate BService ..
Nginx 란? 트래픽이 많은 웹사이트의 서버(was)를 도와주는 비동기 이벤트 기반 구조의 웹서버 프로그램 Nginx 의 특징 적은 자원을 사용해 고성능을 발휘한다. 요청에 의한 정적 파일(HTML, CSS, Javascript, image 등) 을 응답해주는 웹서버 로드 벨런서의 역할도 수행 웹 클라이언트와 was 서버 사이에 위치한다. 캐싱 지원 ( http 프로토콜을 사용하여 전달하는 콘텐츠를 캐싱, 한 번 서버에서 응답받은 것을 스스로 보관하고 클라이언트에 전달 ) 콘텍스트 스위칭 의 비용이 적다. 동적 설정 변경 지원 단점 개발자가 직접 모듈을 만들기 까다롭다.(확장성이 좋지 못하다.) 기존 Apache 서버와의 차이점 (사용 이유) 기존에 사용하던 apache 서버는 요청이 들어오면 커넥션 ..
Spring Batch 란? Spring Batch는 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 리소스 관리와 같이 대용량 레코드 처리에 필수적인 서버이다. 주로 Quartz, Scheduler, Jenkins 등의 스케줄러와 같이 사용하여 특정 시간에 동작 가능한 Job 을 구현한다. 배치 핵심 패턴 Read : DB, 파일, 큐 에서 다량의 데이터 조회 Process : 특정 방법으로 데이터 가공 Write : 데이터를 다시 저장 배치 시나리오 배치 프로세스 주기적 커밋 전략 제공 동시 다발적인 Job(서로 독립적) 의 배치 처리, 대용량 병렬 처리 실패 후 수동 또는 스케줄링에 의한 재시작 의존관계가 있는 step 여러 개를 순차적으로 처리 조건적 Flow 구성을 통한 체계적이고 유연한 배..
힙 정렬 알고리즘? 최대 힙 이나 최소 힙을 구성해 정렬하는 방법 내림차순은 최대 힙, 오름차순은 최소 힙 힙? https://chjysm.tistory.com/33 힙(heap) 힙 이란? 완전 이진트리의 일종이며, 우선순위 큐를 위해 만들어진 자료구조이다. 우선순위 큐? 우선순위 개념을 큐에 적용한 자료 구조이다. 가장 우선순위가 높은 데이터가 먼저 나간다. 배열, chjysm.tistory.com 정렬 절차 정렬해야 할 n개의 요소들로 힙 을 만든다. 그 다음으로 한 번에 하나씩 요소를 힙에서 꺼내서 배열에 저장한다. 특징 장점 성능이 좋은편이다. 전체 자료를 정렬하는 기능 보다는 가장 큰 값과 작은 값이 필요한 경우이다. 구현 public static void heapSort( int[] targ..
힙 이란? 완전 이진트리의 일종이며, 우선순위 큐를 위해 만들어진 자료구조이다. 우선순위 큐? 우선순위 개념을 큐에 적용한 자료 구조이다. 가장 우선순위가 높은 데이터가 먼저 나간다. 배열, 연결 리스트, 힙으로 구현 가능하다. 이중 힙으로 구현하는 것이 가장 성능이 좋다. 힙 특징 힙은 일종의 반정렬 상태를 유지한다.( 큰 값이 위에 있으면 작은 값은 아래에 있다는 정도 ) 부모 노드의 값이 자식 노드보다 항상 크거나 작은 이진트리이다. 중복을 허용한다. 최대값, 최소값을 조회하기 좋다 힙 종류 최대 힙 부모 노드가 자식 노드보다 크거나 같은 완전 이진트리 최소 힙 부모 노드가 자식 노드보다 작거나 같은 완전 이진트리 힙 구현 힙을 저장하는 표준 자료구조는 배열이다. 배열의 첫 번째 인덱스인 0은 사용..
퀵 정렬 알고리즘? 불안정 정렬이며, 다른 원소와의 비교만으로 정렬을 수행하는 비교 정렬이다. 분할 정복 알고리즘 병합 정렬( Merge sort )과는 다르게 리스트를 비 균등하게 분할한다. 정렬 절차 분할(Divide): 입력 배열을 피벗을 기준으로 비 균등하게 2개의 부분 배열(피벗을 중심으로 왼쪽: 피벗보다 작은 요소들, 오른쪽: 피벗보다 큰 요소들)로 분할한다. 정복(Conquer): 부분 배열의 크기가 충분히 작지 않으면 순환 호출을 이용하여 다시 분할 정복 방법을 적용한다. 결합(Combine): 정렬된 부분 배열들을 하나의 배열에 병합한다. 기준값인 피벗(pivot) 과 high, low 인덱스로 비교 및 교환 진행한다. 루틴이 한번 돌때마다 피벗은 제 위치를 찾아나간다. 특징 장점 속도가..
병합 정렬 알고리즘? 안정 정렬 이자 분할 정복 알고리즘이다. 작은 단위로 리스트를 나누어 이를 정렬 및 병합하여 결국 정렬된 결과를 가지게 된다. 정렬 절차 분할(Divide) : 입력 배열을 같은 크기의 2개의 부분 배열로 분할한다. 정복(Conquer) : 부분 배열을 정렬한다. 부분 배열의 크기가 충분히 작지 않으면 재귀를 이용하여 다시 분할 정복 방법을 적용한다. 결합(Combine) : 정렬된 부분 배열들을 하나의 배열에 합병한다. 추가적인 리스트가 필요하다. 각 부분 배열을 정렬할 때도 합병 정렬을 순환적으로 호출하여 적용한다. 합병 정렬에서 실제로 정렬이 이루어지는 시점은 2개의 리스트를 합병(merge)하는 단계이다. 특징 장점 안정적인 정렬 방법 데이터의 분포에 영향을 덜 받는다. 즉,..
쉘 정렬 알고리즘? 삽입 정렬을 보완한 알고리즘 정렬 절차 먼저 정렬해야 할 리스트를 일정한 기준( ex. 일정 간격 마다 자른다 )에 따라 분류 연속적이지 않은 여러 개의 부분 리스트를 생성 각 부분 리스트를 삽입 정렬을 이용하여 정렬 모든 부분 리스트가 정렬되면 다시 전체 리스트를 더 적은 개수의 부분 리스트로 만든 후에 알고리즘을 반복 위의 과정을 부분 리스트의 개수가 1이 될 때까지 반복 특징 장점 삽입 정렬 보다 성능이 좋다. 삽입 정렬의 단점인 레코딩 이동이 많은 점을 보완 알고리즘이 간단하여 쉽게 구현 가능하다. 구현 public static void shellSort( int[] target ){ shellSort( target, getGap( target.length ) ); } publ..