Java 11

[Java] junit5 test 진행 중 DuplicateJsonObjectContextCustomizer

현상 단위 테스트 실행시 아래와 같이 JSONObject 관련해서 중복되는 class path가 존재한다는 로그가 출력되었다. . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.3.1.RELEASE) 2020-07-15 14:35:10.047 WARN 32292 --- [ main] ory$DuplicateJsonObjectContex..

Programming/Java 2022.11.03

[Linux] Ubuntu 18.04 dpkg error

우분투에 자바를 설치하는 과정에서 아래와 같은 에러가 발생하였다. 그래서 apt가 문제 인가 싶어서 update도 하고, process도 죽여보고 다 해봤지만 해결이 안됬다. sudo update sudo killall apt-get 결국 해결한 방법은 관련된 파일을 삭제하는 것이다. 삭제 할 목록 /var/lib/apt/lists/lock /var/cache/apt/archives/lock /var/lib/dpkg/lock* rm 명령어로 삭제한다. log@ubuntu:/usr/local/java$ sudo rm /var/lib/apt/lists/lock log@ubuntu:/usr/local/java$ sudo rm /var/cache/apt/archives/lock log@ubuntu:/usr/lo..

Programming/Server 2020.09.16

[kafka] Confluent Platform Versions

카프카 구축 프로젝트를 진행하다보면, Confluent 에서 제공하는 플랫폼 버전과 카프카 버전을 확인해야할 때가 있다. 2020년 5월 18일 기준 버전은 아래와 같다 컨플루언트 플랫폼 릴리즈 버전 지원 종료 날짜는 부 버전 (예 : 5.5.x)에만 적용됩니다. 유지 관리 버전은 동일한 2 년 수명주기를 따릅니다. 2 년 지원 정책이 표준입니다. 프리미엄 지원 플랜에는 연장 지원 정책이 적용될 수 있습니다. 각 버전의 Confluent Platform에는 특정 Confluent Platform 버전에서만 호환되는 여러 구성 요소 서비스가 포함되어 있습니다. 여러 버전에서 사용할 수있는 클라이언트 및 Confluent Control Center를 포함한 예외가 있습니다. Apache Kafka® 및 그 ..

Programming/Kafka 2020.05.20

[Youtube][이팩티브 자바] #3 싱글톤을 만드는 여러가지 방법 그중에 최선은?

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 3: private 생성자 또는 enum 타입을 사용해서 싱글톤으로 만들 것. 오직 한 인스턴스만 만드는 클래스를 싱글톤이라 부른다. 보통 함수 같은 Stateless 객체 또는 본질적으로 유일한 시스템 컴포넌트를 그렇게 만든다. 싱글톤은 패턴의 이름. 애플리케이션을 통틀어서 패턴에 인스턴스가 하나만 사용되는 것. 싱글톤을 사용하는 클라이언트 코드를 테스트 하는게 어렵다. 싱글톤이 인터페이스를 구현한게 아니라면 mock으로 교체하는게 어렵기 때문이다. 싱글톤으로 만드는 두가지 방법이 있는데, 두 방법 모두 생성자를 prirvate으로 만들고 public static 멤버를 사용해서 유일..

Programming/Java 2020.05.06

[kafka] spring kafka vs kafka clients

Java 기반 어플리케이션으로 kafka를 적용할때 사용하는 라이브러리는 spring kafka vs kafka clients 2가지가 있다. spring-kafka는 kafka-clients보다 레퍼런스가 풍부하며, 고수준의 라이브러리로 사용자가 사용하기 편리한 장점이 있다. kafka clients는 저수준의 라이브러리로 사용자가 직접 Configuration을 해줘야하며, spring-kafka : springboot 기반으로 편리하게 사용가능 spring-kafka가 Spring 기반으로 미리 등록된 빈으로 활용하여 환경설정이나 Consumer, Producer 기능을 비교적 쉽게 구현할 수 있다. 아래는 Consumer, Producer 환경 설정의 예시 코드 이다. ① pom.xml에 spri..

Programming/Kafka 2020.05.06

[알고리즘][코딩 인터뷰 완전 분석 정리] 01 배열과 문자열

해시 테이블 효율적인 탐색을 위한 자료구조로서 키(key)를 값(value)에 대응시킴. 해시테이블 구현방법 연결리스트(linked list)와 해시코드(hash code function)함수 같이 사용. 키(문자열 혹은 다른 어떤 자료형도 가능)와 값을 해시테이블에 넣을때 과정 처음엔 키의 해시코드를 계산. 키의 자료형은 보통 int 혹은 long. 키의 갯수는 무한한데 반해 int의 개수는 유한하기 대문에 서로 다른두개의 키가 같은 해시 코드를 가리킬수 있다. 그다음엔 hash(key) % array_length와 같은 방식으로 해시코드를 이용해 배열의 인덱스를 구한다. 배열의 각 인덱스에는 키와 값으로 이루어진 연결리스트가 존재한다. 키와 값을 해당 인덱스에 저장. 충돌에 대비해서 반드시 연결리스트..

Study/Alogorithm 2020.05.05

[Java] 간단한 junit 테스트 방법 IntelliJ

IntelliJ에서 간단한 junit 테스트 방법을 구현해 봅시다. 1. 기능 구현 클래스 생성 클래스는 Main, AddNumber 두개를 만들어준다. 우선 간단한 덧셈을 구현한 클래스와 메소드를 생성해준다. 1 2 3 4 5 6 7 8 9 10 11 12 public class AddNumber { public int add(int a , int b){ return a+b; } public int add(int a, int b , int c){ return a+b+c; } } 그리고, 그 메소드를 실행시키는 메인 메소드를 구현한다. 1 2 3 4 5 6 7 8 9 10 11 public class Main { public static void main(String[] args) { AddNumber ..

Programming/Java 2020.04.29

[JAVA] Instance Time

개념 시간을 타임스탬프로 다루기 위해서 사용한다. 타임스탬프는 UTC 기준으로 EPOCH TIME(1970-01-01 00:00:00)을 0으로 정하고, 그로부터 경과된 시간을 양수 또는 음수의 나노초 단위로 표현한다. Date형으로변환 가능하다 항상 UTC(+0:00) Timezone을 사용하기 때문에 주의해야 한다. (시간대를 고려해야 할 경우는 OffsetDateTime사용한다) immutable 하면서 thread safe하기 때문에 쓰레드간 경합 상황에서도 사용이 가능하다. 예제 현재 시간의 타임스탬프 값을 구하기 1 2 3 4 5 6 7 8 Instant current = Instant.now(); System.out.println("Current Instant = "+ current); lo..

Programming/Java 2020.04.07

[JAVA] protected 접근 단계

개념 protected 접근 단계는 기본 접근 단계하고 거의 똑같은데, 하위클래스에서 protected로 지정된 것도 상속할수 있다는 점이 다르다. 그 하위클래스가 상위클래스가 속해 있는 패키지와 다른 패키지에 속해 있는 경우도 해당된다. 그 점을 제외하면 똑같다. protected는 하위 클래스가 상위클래스와 다른 패키지에 들어 있어도 메소드나 생성자와 같은 클래스 안에 있는 것을 상속할 수 있는 기능을 제공해 준다. 특징 설계 방법에 따라 protected 접근 단계를 사용하는 경우도 있고 언젠가는 꼭 그 접근 단계가 필요한 경우도 있다. protected의 특징 가운데 (다른 접근 단계와는 달리) protected 접근 단계는 상속에만 적용된다는 점이 있다. 다른 패키지에 들어있는 하위클래스에 상위..

Programming/Java 2020.04.01

[자바] public protected private

자바에는 접근 단계 4개와 접근 변경자 3개가 있다. 기본 접근 단계(아무 변경자도 쓰지 않았을 경우의 접근 단계)도 하나의 접근 단계기 때무에 변경자는 3개 밖에 없다. 접근단계 (제한이 적은것에서 제한이 심한 순서대로) public protected defualt private public public으로 지정된 것(클래스, 변수, 메소드, 생성자 등)은 어디에 있는 어떤 코드에서도 접근할 수 있다. protected protected는 default하고 거의 똑같다.(같은 패캐지에 있는 코드에서 접근할 수 있다. 하지만 다른 패키지에 속하는 하위클래스에서도 상속할 수 있다는 차이점이 있다. default 기본 접근 단계에서는 그 클래스와 같은 패키지에 들어 있는 클래스에서만 접근할 수 있는것을 의미..

Programming/Java 2020.03.31