본문 바로가기

공부방

(97)
코틀린에서 연산자를 다루는 방법 1. 단항 연산자 / 산술 연산자 자바와 코틀린 완전 동일하게 사용할 수 있습니다. 단항 연산자 ++, -- 산술 연산자 +, 0, *, /, % 산술 대입 연산자 +=, -=, *=, /=, %= 2. 비교 연산자 자바에서는 객체에 있는 값을 이용한 비교를 할 때 compareTo를 override로 구현하고 이를 호출해서 비교합니다. 아래 JavaMoney라는 객체가 있습니다. public class JavaMoney implements Comparable { private final long amount; public JavaMoney(long amount) { this.amount = amount; } @Override public int compareTo(@NotNull JavaMoney o) ..
3. 코틀린에서 Type을 다루는 방법 1. 기본타입 코틀린에서는 선언된 기본값을 보고 타입을 추론한다. fun main() { val number1 = 3 // Int var number2 = 3L // Long } 자바: 기본 타입간의 변환은 암시적으로 int는 4byte, long은 8byte로 long이 더 크니까 타입 변환이 가능합니다. int -> long 암시적으로 변경 가능 public class Lec03Main { public static void main(String[] args) { int number1 = 4; long number2 = number1; System.out.println(number1 + number2); } } 코틀린: 기본 타입간의 변환은 명시적으로 반면 코틀린은 암시적으로 타입 변환이 불가능합니다...
코틀린에서 null을 다루는 방법 1. 자바 코드 예시 아래의 자바 코드를 살펴봅시다. 문제가 없는 코드라고 할 수도 있겠으나, 해당 코드는 null 값이 들어왔을 경우에는 NPE가 발생합니다. public class Lec02Main { // str이 null일 수 있기 때문에 NPE 위험성이 존재 public boolean startsWithA(String str) { return str.startsWith("A"); } } 2. 자바로 문제 해결 NPE를 해결하기 위해서 자바 코드는 아래와 같이 대처할 수 있을겁니다. str 값이 null인 경우 exception 처리 str 값이 null인 경우 null return str 값이 null인 경우 false return 다음과 같이 구현할 수 있을 것입니다. public class ..
1. 코틀린에서 변수를 다루는 방법 1. var (가변 변수) var (발) 은 variable의 약자이며 가변 변수를 의미합니다. 가변 변수이기 때문에 새로운 값을 할당할 수 있습니다. class Lec01Main { fun main() { // 변경 가능 variable var number = 10L } } 2. val (불변 변수) val (밸) 이란 valuable의 약자이며, java의 final이 들어가 있는 것과 동일합니다. val 값에 새로운 값을 할당하려고 하면 오류가 발생합니다. class Lec01Main { fun main() { // 변경 불가 valuable, java의 final과 동일 val number2 = 10L } } 3. type 지정 type지정은 필수가 아니지만 변수명 뒤에 ":"을 이용하여 타입을 ..
kafka-dump-log 명령어로 로그 파일의 메세지 내용 확인 multipart-topic 이라는 이름의 토픽을 만들어서 연습을 해볼 것이기 때문에 'multipart-topic'이라는 이름의 topic이 있다면 삭제하고 시작하도록 해보겠습니다. kafka-topics --bootstrap-server localhost:9092 --delete --topic multipart-topic multipart-topic 이라는 이름의 topic을 만들도록 해보겠습니다. kafka-topics --bootstrap-server localhost:9092 --create --topic multipart-topic --partitions 3 2000 개의 메세지를 넣어보고 로그를 확인해 보겠습니다. 2000개의 메세지를 만들고 보내보는 커맨드입니다. 2. keyload.log..
Kafka config 구분 및 이해 Kafka-configs 사용하기 broker에 있는 모든 컨피그를 확인해봅시다. broker의 name은 0이 default 값이기 때문에 아래와 같이 설정해주었습니다. kafka-configs --bootstrap-server localhost:9092 --entity-type brokers --entity-name 0 --all --describe topic에 있는 모든 컨피그를 확인해봅시다. kafka-configs --bootstrap-server localhost:9092 --entity-type topics --entity-name multipart-topic --all --describe topic에 있는 컨피그에서 max.message.bytes 값을 확인해봅시다. kafka-config..
Consumer group 과 Rebalancing 실습 // 파티션 3개 가지는 topic 생성 kafka-topics --bootstrap-server localhost:9092 --create --topic multipart-topic --partitions 3 // Consumer Group id group_01을 가지는 consumer를 3개 생성(아래 명령어 3번 수행) , ㅏkey,value 값을 보낼것이고 partition 값도 보여줘 // consumer를 생성할 때마다 broker에서 rebalancing 되는 것을 확인할 수 있을 것이다. (로그 확인) kafka-console-consumer --bootstrap-server localhost:9092 --group group_01 --topic multipart-topic \ --prop..
매핑 Mapping 동적 매핑 Elasticsearch 를 활용하면서 가장 손이 많이 가는 작업이 매핑 설정입니다. Elasticsearch 는 동적 매핑을 지원하기 때문에 미리 정의하지 않아도 인덱스에 도큐먼트를 새로 추가하면 자동으로 매핑이 생성됩니다. 만약 books 인덱스가 있다면 먼저 삭제해줍니다. DELETE books 인덱스가 없는 상태에서 다음의 도큐먼트를 books 인덱스에 입력 해 보겠습니다. PUT books/_doc/1 { "title": "Romeo and Juliet", "author": "William Shakespeare", "category": "Tragedies", "publish_date": "1562-12-01T00:00:00", "pages": 125 } mapping 정보는 RDBMS..