Java 썸네일형 리스트형 [탐색알고리즘] DFS halfstorage.tistory.com/84 [탐색알고리즘] 깊이 우선 탐색, 너비 우선 탐색 깊이 우선 탐색(depth-first search, DFS)은 부모노드부터 왼쪽부터 자식노드가 없을 때까지 탐색하고 탐색하려는 값이 없으면 루트의 다음 자식 노드를 탐색합니다. 장점 단지 현 경로상의 노드들만 halfstorage.tistory.com 이전에 포스팅 했던 탐색알고리즘 중 깊이 우선 탐색 알고리즘에 대해 포스팅하려고합니다. 우선 알고리즘 문제는 NHN 채용사이트에서 공개된 Pre-Test 문제를 참고했습니다. 문제가 된다면 다른 알고리즘 문제로 대체하도록 하겠습니다. 문제출처: https://recruit.nhn.com/pdf/%ED%94%84%EB%A6%AC%ED%85%8C%EC%8A%A4%.. 더보기 [Kafka] Java 테스트 애플리케이션 제작 및 테스트 간단하게 kafka의 cluster 구성에 성공했는지 테스트하기 위해서 프로젝트를 생성해보겠습니다. dependency는 kafka만 추가하셔도 됩니다. @Slf4j로 로그 출력을 위해 Lombok도 추가했습니다. application.yml에 카프카 설정을 추가합니다. KafkaConfig.java로 자바 파일을 생성하여 상단에 @Configuration @EnableKafka 카프카 설정을 위한 어노테이션을 추가합니다. yml에 선언한 변수를 @Value로 받아옵니다. ProducerConfig와 ConsumerConfig를 설정합니다. 추가한 설정을 Factory로 생성합니다. 테스트를 위해 Consumer 클래스를 생성했습니다. 이렇게 하면 테스트를 위한 애플리케이션 생성이 끝났습니다. 이제 이전.. 더보기 [Kafka] kafka manager(CMAK) 설치 최신 릴리즈 버전 확인: https://github.com/yahoo/CMAK/releases Releases · yahoo/CMAK CMAK is a tool for managing Apache Kafka clusters. Contribute to yahoo/CMAK development by creating an account on GitHub. github.com 1. 설치 $ wget https://github.com/yahoo/CMAK/archive/3.0.0.5.tar.gz 2. tar.gz 압축 해제 3. sbt 실행 $ ./sbt clean dist * CMAK 3.x버전부터는 jdk11로 빌드되어 있어 하위 jdk로는 실행이 불가능합니다. 서버에 설치된 jdk는 1.8이였기 때문에, 별도.. 더보기 lambda 1. 특징 - 익명: 구현해야 할 코드 감소 - 함수: 메서드와 달리 특정 클래스에 종속되지 않음, 메서드 처럼 파라미터 리스트, 바디, 반환 형식 가능한 예외 리스트를 포함 - 전달: 람다 표현식을 메서드 인수로 전달, 변수로 저장 가능 - 간결성: 코드 간결화 2. 람다 표현식의 구성 - 파라미터 리스트. - 화살표: 람다의 파라미터 리스트와 바디를 구분. - 람다 바디: 반환값. 기본 표현식: (parameters) -> expression 블록 스타일: (parameters)-> { statements; } 3. 람다 사용 3.1 함수형 인터페이스(@FunctionalInterface) 정의: 정확히 하나의 추상 메서드를 지정하는 인터페이스 사용: 전체 표현식을 함수형 인터페이스의 인스턴스로 취급.. 더보기 SimpleDateFormat 사용법 및 UTC 관련 기존에 년-월-일까지 받아서 포맷을 변경했었는데, 추가로 시:분:초까지 처리하게 되어 신규 포맷으로 생성했습니다. 그런데 전달받은 시간이 UTC가 추가되어 있어 simpleDateFormat으로 포맷했을 때는 아래와 같이 정상적으로 변경되지만 fullDateFormat으로 포맷했을 때는 null이 반환되었습니다. UTC 타임을 제거하도록 함수를 만들어 제거해서 사용했습니다. 이러한 현상의 원인은 보시는 바와 같이 simpleDateFormat에서는 시간을 별도로 처리하지 않기 때문에 Date형식으로 출력한 것을 보면 00:00:00으로 지정되어 있어 변환이 되지만 fullDateFormat으로 포맷하려고 할 경우 시간 형태를 SimpleDateFormat이 인식하지 못하여 발생한 문제였습니다. 그냥 Lo.. 더보기 BigDecimal 매출, 회계 등 금액적인 부분에 대한 개발을 하다 보면 BigDecimal을 사용하게 됩니다 JAVA에서 숫자를 가장 정밀하게 저장하고 표현할 수 있는 장점을 가지고 있습니다 저는 보통 소수점보다는 금액을 처리할 때 주로 사용합니다 다만, 속도가 느리다는 단점과 처음 사용할 때 사용법이 기본 자료형들과는 상이한 부분이 어색하게 느껴졌습니다 초기화 BigDecimal은 아래와 같이 초기화하여 사용할 수 있습니다 다만 BigDecimal은 실수를 표현할 때 문자열로 초기화하지 않으면 아래와 같이 경고를 발견할 수 있습니다 그래서 valueTest를 선언한 것과 같이 valueOf나 ""와 같이 문자열로 초기화해야 합니다. 연산 BigDecimal은 객체이기 때문에 주소값을 비교하는 연산자인 ==을 사용하면 .. 더보기 CBV(Call By Value), CBR(Call By Reference) - CBV(Call By Value)는 기본 자료형과 같이 대상에 주소값을 가지지 않고 값을 할당받아 사용됩니다. * 기본자료형 정수형: byte(1), short(2), int(4), long(8) 실수형: float(4), double(8) 문자형: char(2) 논리형: boolean(1) - CBR(Call By Reference)는 대상을 선언할 때 주소값이 부여되어 ==으로는 주소값이 달라 비교 연산을 할 수 없지만 equals와 같이 해당 주소에 있는 값에 대한 비교연산은 가능합니다. * Class, Object ==: 주소값을 비교 equals: 해당 주소의 값을 비교 기본 자료형은 stack메모리에 실제 값을 저장하기 때문에 == 비교 연산을 할 수 있습니다. 참조 자료형은 stack에 .. 더보기 [JUnit 5] @TestMethodOrder 테스트 순서를 정할 수 있는 @TestMethodOrder 어노테이션입니다. 아래와 같이 @Order(n)를 사용해서 먼저 실행될 메소드를 지정할 수 있습니다. 더보기 이전 1 2 다음