일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- junit 5
- 스파르타코딩클럽
- System.out
- 함수형 인터페이스
- raw 타입
- 브릿지 메소드
- 로컬 클래스
- 항해99
- auto.create.topics.enable
- 익명 클래스
- 정렬
- 바운디드 타입
- 프리미티브 타입
- 상속
- 자바할래
- throwable
- 자바스터디
- 접근지시자
- System.in
- Switch Expressions
- System.err
- annotation processor
- docker
- 제네릭 와일드 카드
- github api
- 합병 정렬
- yield
- 람다식
- 제네릭 타입
- Study Halle
- Today
- Total
목록전체 글 (253)
코딩하는 털보
목적 오직 하나의 인스턴스만 제공해야 할 때 사용한다. 언제일까? RestTemplate, JDBC 같은 외부 커넥션 풀을 만드는 인스턴스 전역 캐시 데이터 로그 기록 담당 클래스 이런 클래스들이 요청마다 생성된다면 매번 불필요한 객체 생성 과정이 발생하거나 메모리를 굉장히 비효율적이게 사용하게 될 수 있다. 특징 new를 사용해서 생성할 수 있게 하면 안된다. 싱글톤 인스턴스에 접근하게 해주는 클래스가 필요하다. public class WaitingQueue { private Queue queue = new PriorityQueue(); private static WaitingQueue instance; //처음에만 생성하고 두번째 요청부터는 생성된 싱글톤 인스턴스 반환 public static Wai..
https://ko.wikipedia.org/wiki/%ED%80%B5_%EC%A0%95%EB%A0%AC 퀵 정렬은 병합 정렬과 동일하게 분할 정복을 사용하여 정렬 문제를 해결한다. 퀵 정렬의 특별한 점은 pivot이라는 개념을 사용하는데, 배열 요소 중 하나를 pivot으로 정하여 pivot보다 작은 값을 왼쪽으로 큰 값을 오른쪽으로 배치하고 분할된 두 영역에 다시 위 과정을 크기가 1이 될 때 까지 반복하여 마지막에 모두 합치면 정렬되는 방식이다. 퀵 정렬의 시간복잡도는 O(nlogn)이다. Big O notation은 알다시피 가장 최악의 상황에서의 시간복잡도를 표현하는데, 퀵정렬의 최악의 시나리오에서 시간복잡도는 O(n^2)이다. 하지만 퀵 정렬은 특별하게 pivot을 어떤 요소로 선택하느냐에 따..
Mongodb Replica set Mongodb의 replication 방식 Mongodb에서 Replica set을 구성하려면 Failover를 위해 최소 3개의 노드가 필요함. 이는 데이터 복제본이 3개여야 하는건 아니고 장애 복구 시 어떤 노드를 Primary로 승급하는지 투표를 하기 위해 3개의 노드가 필요한 것. 그렇기 때문에 복제 노드를 2개 추가로 구성(PSS)하거나 또는 복제 노드 구성에 대한 부담을 줄이기 위해 복제 노드 하나와 오직 투표만 수행하는 Arbiter를 구성(PSA)하는 두가지 방식을 통해 Replica set을 구성할 수 있다. 동기화 secondary node는 primary node의 oplog(데이터 작업 로그)를 사용하여 데이터를 비동기적으로 적용한다. 이로써 no..
합병 정렬은 분할 정복 알고리즘을 이용한 정렬 방법이다. 분할 정복은 큰 문제를 작은 문제로 쪼개어 작은 단위의 문제를 먼저 해결하면서 병합시켜 마지막으로 가장 큰 문제를 해결하는 문제 풀이 방법이다. 합병 정렬의 과정은 크게 배열을 분할하는 부분과 분할된 배열을 다시 합병하는 부분으로 나뉘어 진다. 분할에서는 배열을 두 개의 배열로 분할한다. 합병에서는 두 배열을 정렬을 하면서 합친다. 시간복잡도는 분할에서 log2(N), 합병에서 N으로 분할이되는 만큼 다시 합병하기 때문에 둘을 곱하여 N*log2(N)이 된다. 성능이 선택, 버블, 삽입 정렬과 비교하여 효율적이고 안정적이기 때문에 자주 사용되는 정렬 방법 중 하나이다. Java의 Arrays.sort() 및 Python sorted() 또한 합병 ..
버블 정렬은 배열에서 차례대로 두 개의 붙어있는 인덱스를 비교하여 더 큰 값을 뒤로 보내는 정렬 방법이다. 가장 큰 값이 먼저 맨 뒤로 보내지고 그 다음 뒤에서부터 순차적으로 정렬이 완성된다. n = array length 처음엔 인덱스 0부터 n-2까지 그다음 인덱스와 비교하면서 다음 인덱스가 크면 서로 교환 위 절차를 0~n-3, 0~n-4, 0~n-5, ... 0~0으로 총 n-1번 순회 i : 0~n-2 j : 0~n-2-i 최선의 경우, 최악의 경우 모두 시간 복잡도가 O(n^2)으로 성능이 좋지 못하여 구현이 쉽다는 장점 말고는 다른 정렬 방법과 비교했을 때 좋은 정렬 방법이 아님.
배열이나 리스트의 원소를 하나씩 비교하면서 알맞은 위치에 삽입하여 정렬하는 방법 쉽게 생각하면 배열 앞부분부터 정렬을 시작하고 모든 배열이 정렬될 때 까지 하나씩 정렬 영역에 알맞는 위치에 삽입하는 정렬 방법이다. 선택 정렬과 마찬가지로 O(n^2)의 비효율적인 시간 복잡도를 가지게 된다. 정렬을 하는 방법인데 정렬이 안되어있을수록 성능이 떨어지게 된다. 정렬이 어느정도 잘 되어있다는 보장이 있다면 좋을 수 있지만 그렇지 않다면 다른 정렬 방법이 선호된다.
선택 정렬은 배열의 부분 배열에서 최소값(또는 최대값)을 찾아 부분 배열의 시작 인덱스와 값을 교환하는 정렬 방법이다. 선택 정렬 알고리즘의 구체적인 과정은 다음과 같다. 배열의 첫 번째 원소를 선택 이후 원소들 중에서 최소값 검색 최소값을 찾았다면, 해당 최소값을 현재 선택한 원소와 교환 배열의 다음 원소를 선택하여 위 과정을 반복 모든 원소에 대해 위 과정을 반복하여 정렬을 완료 코드만 봐도 알수 있듯이 이 정렬법의 시간 복잡도는 O(n^2)이다. 배열의 크기가 클수록 성능이 좋지 못하므로 일반적으로는 이보다 더 효율적인 정렬 알고리즘을 사용하게 된다.
Dockerfile FROM openjdk:11 MAINTAINER JeongIn Lee # set Time Zone ENV TZ=Asia/Seoul RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ARG MIRROR=https://dlcdn.apache.org/flume ARG VERSION=1.11.0 ARG BIN_VERSION=apache-flume-${VERSION} RUN apt-get update && apt-get install wget ca-certificates #install apache flume RUN mkdir -p /opt/flume/plugins.d/agent/lib \ && mkdi..
QueryDSL 적용후 빌드에서 아래와 같은 에러 발생 /Users/E8L-20220010/IdeaProjects/dataIngest/agentManager/build/generated/querydsl/kr/co/e8ight/ndxpro/agentManager/domain/QAgentHistory.java:39: error: cannot find symbol public QAgentHistory(Path
카프카를 사용하다 자주 마주친 에러. 바로 메시지를 produce/consume할 토픽이 없다는 에러이다. 2023-02-01 16:01:58,034 WARN [kafka-producer-network-thread | producer-1] (org.apache.kafka.clients.NetworkClient$DefaultMetadataUpdater.handleSuccessfulResponse:1119) - [Pr oducer clientId=producer-1] Error while fetching metadata with correlation id 3 : {dev.pintel.simul.org.vehicle.json=UNKNOWN_TOPIC_OR_PARTITION}KAFKA topic은 DB 테이블처..