본문 바로가기

반응형

IT/자바

코틀린 기본 문법 함수규칙 : fun + 함수명 +(+ 파라미터명 + 파라미터 변수형+)+ : + 반환 변수형 = 비즈니스 로직 이때 파라미터 변수형과 반환 변수형이 같은 경우 생략이 가능함. 자바의 void 함수를 표현할 경우 코틀린에선 unit 으로 선언함.fun main() { println("Hello World!") println(sum(1, 5)) println(sum1(1, 5)) sum2(1, 5)}//반환값을 정의한 함수fun sum(a: Int, b: Int):Int = a+b//파라미터와 반환값이 같은 경우 반환형 생략 가능fun sum1(a: Int, b: Int) = a+b//반환값이 없는 void 함수인 경우 unit으로 선언할 수 있음fun sum2(a: Int, b: In.. 더보기
4장 카프카 상세 개념 설명(2) 4-4) 스프링 카프카 스프링 카프카 : 카프카를 스프링 프레임워크에서 효과적으로 사용할 수 있도록 만들어진 라이브러리를 의미함 4-4-1) 스프링 카프카 프로듀서 카프카 템플릿 클래스를 통해서 데이터를 전송할 수 있음. [카프카 템플릿을 사용하는 방법] 1) 기본 카프카 템플릿을 사용하는 방법 [application.yaml] spring: kafka: producer: bootstrap-servers: my-kafka:9092 acks: all @SpringBootApplication public class DefaultKafkaProducer implements CommandLineRunner { private static String TOPIC_NAME = "test"; @Autowired pri.. 더보기
4장 카프카 상세 개념 설명 4-1) 토픽과 파티션 카프카에서 토픽은 가장 중요한 역할이며 토픽의 파티션 개수는 카프카의 성능과 관련이 많음 4-1-1)적정 파티션 개수 - 고려사항 : 데이터 처리량, 메시지 키 사용 여부, 브로커 & 컨슈머 영향도 1. 데이터 처리량 파티션 : 카프카 병렬처리의 핵심, 파티션-컨슈머 1:1 매핑임 => 그러므로 파티션 개수를 정할때 해당 토픽에 필요한 데이터 처리량을 측정하여 정하는게 중요함. 데이터 처리 속도를 올리는 방법 1) 컨슈머 처리량을 늘리는 방법 - 컨슈머 서버의 사양을 늘리거나 GC 튜닝 등을 활용할 수 있으나 컨슈머 특성상 다른 시스템(=오라클, 하둡..)과 연동하여 데이터 처리함으로 한계 존재 2) 파티션 개수 늘리는 방법 - 가장 확실한 방법임 프로듀서가 보내는 데이터양보다 파.. 더보기
3장 카프카 기본 개념 설명 3-1) 카프카 브로커, 클러스터, 주키퍼 브로커 : 클라이언트와 데이터를 주고받는 주체, 데이터 분산 저장으로 장애 발생에 대한 대응이 가능하도록 도와주는 애플리케이션 (한 클러스터(=렉)에 3대 이상의 브로커로 운영하길 권장함 - 클러스터로 묶인 브로커끼린 데이터 분산 저장 및 복제하는 역할) 프로듀서 -> 브로커 -> 컨슈머 관계로 데이터를 주고받는다. 프로듀서 : 데이터 전송 브로커 : 요청받은 토픽의 파티션에 데이터 저장 및 컨슈머가 데이터 요청하는 경우 데이터 전달 컨슈머 : 데이터 요청 config/server.properties의 log.dir 옵션에 정의된 디렉토리에 데이터를 저장함 카프카는 별도 db나 캐시 메모리를 사용하지 않고 파일 시스템에 데이터를 저장하기 때문에 파일 입출력으로 .. 더보기
Test-DrivenDevelopment : 테스트 주도 개발 테스트 주도 개발 도서를 읽으면서 TDD 개발 방법론을 익히고자 한다. 1부 화폐예제를 읽고 PG 결제 시스템의 결제 승인, 취소, 복합결제 기능을 샘플로 구현하면서 책에서 익힌 방법들을 적용해보았다. 카드결제, 계좌결제, 간편결제 객체는 Paymt라는 부모 객체를 상속받으며 주문서비스(OrderService)에서 PaymtType 인터페이스에 정의되어 있는 승인, 취소, 복합결제 기능을 간략하게 구현했습니다. 화폐의 통화 개념과 비슷하게 결제별 타입을 결제수단을 통해 카드, 계좌, 간편으로 구분되도록 했으며, 승인과 취소는 결제 금액을 +, - 처리하도록 구현했고 리스트로 여러결제를 받아 전체 결제금액을 세팅함으로써 복합결제 기능을 대신 표현했습니다. 책 설명과 동일하게 동치 비교 테스트, 결제승인, .. 더보기
자바 플레이그라운드 with TDD, 클린코드 강좌 후기 Day 3 대표적으로 테스트하기 어려운 코드 1. 내부 API : Random, Shuffle, 날짜 2. 외부 세계 : 외부 Rest API, 데이터베이스 API 테스트 힘든 코드 리펙토링 방법 테스트하기 힘든 코드로 랜덤 값으로 자동자 이동에 대한 단위테스트 케이스를 예시로 보면서 어떻게 작성함으로써 테스트 코드 작성이 가능한지 설명해주셨다. 먼저 아래와 같은 코드는 테스트를 실행할때마다 다른 랜덤 값으로 실행됨으로 결과를 예측하기 어렵고 테스트가 성공한게 맞는지 판단하기 어렵다 다음과 같은 방법으로 코드를 개선할 수 있다. 1. Car 클래스의 move 메소드를 protected 접근자 제한으로 변경 아래와 같이 test 클래스에서 move 메소드를 오버라이딩함으로써 테스트가 가능하다. 2. Car 클래스의 .. 더보기
자바 플레이그라운드 with TDD, 클린코드 강좌 후기 Day 2 학습 목표 : TDD 기반으로 프로그래밍법 메소드 분리 + 클래스를 분리 & 점진적으로 리팩토링하는 경험을 학습하고자 한다. 경험할 객체지향 생활 체조 원칙 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기만 한다. 규칙 2: else 예약어를 쓰지 않는다. 규칙 3: 모든 원시값과 문자열을 포장한다. 규칙 5: 줄여쓰지 않는다(축약 금지). 규칙 8: 일급 콜렉션을 쓴다. Clean Code 가이드 의미 있는 이름 의도를 분명히 밝혀라 그릇된 정보를 피하라 서로 흡사한 이름을 사용하지 않도록 주의한다. 유사한 개념은 유사한 표기법을 사용한다. 의미 있게 구분하라 인터페이스 클래스와 구현 클래스 인터페이스 이름은 접두어를 붙이지 않는 편이 낫다고 생각한다. 오히려 인터페이스를 ShapeFactory로 이름.. 더보기
자바 플레이그라운드 with TDD, 클린코드 강좌 후기 Day 1 학습 목표 : 넥스트스텝 강좌 중 TDD 교육을 들으면서 앞으로 매주 코딩 연습을 하고자 한다. 2️⃣ 숫자야구게임 구현 기능 요구 사항 기본적으로 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임이다. 같은 수가 같은 자리에 있으면 스트라이크, 다른 자리에 있으면 볼, 같은 수가 전혀 없으면 포볼 또는 낫싱이란 힌트를 얻고, 그 힌트를 이용해서 먼저 상대방(컴퓨터)의 수를 맞추면 승리한다. e.g. 상대방(컴퓨터)의 수가 425일 때, 123을 제시한 경우 : 1스트라이크, 456을 제시한 경우 : 1볼 1스트라이크, 789를 제시한 경우 : 낫싱 위 숫자 야구 게임에서 상대방의 역할을 컴퓨터가 한다. 컴퓨터는 1에서 9까지 서로 다른 임의의 수 3개를 선택한다. 게 임 플레이어는 컴퓨.. 더보기

반응형