분류 전체보기 (99) 썸네일형 리스트형 Java Executors, ExecutorService Executor 는 쓰레드 풀의 구현을 위한 인터페이스이다.등록된 작업을 실행작업 실행을 책임public interface Executor { void execute(Runnable command);} Executors 는 Executor, ExecutorService, ScheduledExecutorService, ThreadFactory 등을 위한 정적 팩토리 메서드를 지원해주는 클래스다.newFixedThreadPool(int n)고정된 쓰레드 풀을 생성한다.CPU 코어 수 기준으로 생성 시 좋은 성능을 얻을 수 있다.newCachedThreadPool()필요한 만큼 쓰레드 풀을 생성한다.쓰레드를 캐싱하는 쓰레드풀일정 시간 동안 쓰레드를 검사하여 60초 동안 작업이 없으면 Pool에서 제거한다.쓰레.. Redis-HA 구성하기 Redis ReplicationMaster-Slave 구조하나 이상의 마스터 서버가 있고, 각 마스터 서버는 하나 이상 복제된 서버를 가질 수 있습니다.장애 조치마스터 서버가 다운되었을 때, Redis Sentinel이 복제된 서버 중 하나를 마스터 서버로 승격시키고 클라이언트에게 알리는 메커니즘 존재Redisversion: '3'networks: app-tier: driver: bridgeservices: redis: image: 'bitnami/redis:latest' container_name: redis environment: - REDIS_REPLICATION_MODE=master - ALLOW_EMPTY_PASSWORD=yes networks: .. Spring Boot에서 전략 패턴 사용하기 전략패턴 전략 패턴은 런타임 중에 알고리즘 전략을 선택하여 객체 동작을 실시간으로 바뀌도록 할 수 있게 하는 행위 디자인 패턴 어떤 일을 수행하는 알고리즘이 여러가지 일때, 동작들을 미리 전략으로 정의함으로써 손쉽게 전략을 교체할 수 있는, 알고리즘 변형이 빈번하게 필요한 경우 적합한 패턴이다. 첫 번째 시도 우선 전략 패턴을 위한 인터페이스와 enum을 작성하였다. public interface Strategy { void execute(); } @Getter @RequiredArgsConstructor public enum StrategyType { A("strategyA"), B("strategyB"), C("strategyC") private final strategyName; } 전략 패턴을 위.. JAVA를 사용한 외부 API 호출 방법 Java로 외부 API를 통신하는 HTTP Library에 대해 알아보겠습니다. HttpURLConnection Java에서 기본적인 HTTP 통신을 수행하기 위한 클래스이다. 장점 Java 표준 라이브러리에 포함되어 있어 추가적인 의존성이 필요 없다 간단한 HTTP 통신에 적합하며 기본적인 요청 및 응답 처리가 가능하다. 단점 기능이 제한적이며, 고급 기능이나 편의 기능이 부족할 수 있다. 코드가 비교적 복잡하다. 응답코드가 4xx 이거나 5xx 일 경우 IOException 타임아웃을 설정할 수 없다. 쿠키 제어가 불가능하다. HttpClient Java 11에 도입된 새로운 HTTP 클라이언트이고 HTTP/2, WebSocket을 지원한다. HttpURLConnection은 비동기 처리를 위해 별도.. 이진탐색을 활용하는 여러가지 경우 구현 이진 탐색 이진탐색이란 중복 값이 없는 정렬된 배열에서 원하는 값을 찾는 효율적인 알고리즘이다. 핵심 로직 배열의 중앙값을 구한다. 중앙값과 찾고자 하는 값(target)과 비교한다. 중앙값 target 인 경우 : 끝점을 중앙값의 -1 값으로 선택 (중앙 기준 오른쪽을 버린다.) 배열에 있는 값의 인덱스 찾기 public static int search(int[] temp, int target) { int start = 0; int end = temp.length - 1; int result = -1; while(start target){ end = mid - 1; } else { return m.. Dockerfile에 대해서 알아보자 Dockerfile 이란 Docker Image를 만드는 스크립트이다. Docker Hub에서 미리 만들어져있는 Image를 사용하는 것이 아니라 사용자가 직접 Custom 하여 Image를 만들 수 있는 파일 Dockerfile 명령어 FROM 생성할 이미지의 베이스가 되는 이미지 ex) Ubuntu, CentOS, JDK, Node.js WORKDIR 컨테이너 내에서 작업할 디렉토리 설정 COPY host에서 이미지에 파일 복사하여 추가 ADD host안에 있는 파일/디렉토리 추가 copy와 다른 점은 압축파일은 해제하여 추가해준다 EXPOSE host와 연결할 포트 번호를 설정 컨테이너 실행 시 -p 로 대체 가능 ENV 환경변수 설정 RUN 컨테이너 내부에서 돌아갈 명령어 이미지가 생성 되기 전에.. [Git] LF will be replaced by CRLF in 해결방법 LF will be replaced by CRLF in 해결 방법 warning: LF will be replaced by CRLF in (파일경로) The file will have its original line endings in your working directory git add . 사용 시 해당 경고가 발생했다. 이것은 운영체제마다 사용되는 줄바꿈 문자열이 다르기 때문에 git에서 어떤 의미로 받아들여야 할지 몰라서 발생하는 것이다. LF Mac, Linux에서 사용되는 줄바꿈 문자열(\n) CRLF Windows에서 사용되는 줄바꿈 문자열(\r\n) 해결방법 core.autocrlf Git에 코드를 커밋할 때 LF와 CRLF를 서로 변환해주는 기능 시스템 전체에 적용할 경우 global 옵.. Fluent Bit 오픈소스 멀티플랫폼 로그 프로세서입니다. 1. 용어 설명 1) Event or Record flunet bit가 log나 metric으로부터 가져오는 모든 데이터들을 event 또는 record로 간주합니다. 2) filtering event를 변경 또는 삭제하는 과정을 filtering이라고 합니다. 필터링이 필요한 사례 ip 주소나 메타데이터와 같은 특정 정보를 이벤트에 추가합니다. event 내용의 특정 부분 사용 특정 패턴과 일치하는 event를 삭제 3) Tag fluent bit으로 들어가는 모든 event에는 tag가 부여됩니다. 이러한 태그를 확인하여 필터 또는 출력 단계를 결정합니다. 대부분의 태그는 구성에서 수동으로 할당합니다. 태그가 설정되지 않으면 자동으로 해당 이벤트가 발생한 in.. 이전 1 2 3 4 ··· 13 다음