| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- java
- 함수형프로그래밍
- ElasticSearch
- Kotlin
- 자바스크립트
- 오블완
- Effective Java
- Sort
- 스프링 핵심원리
- 카카오
- 김영한
- 스프링핵심원리
- 자바
- 스프링
- 이펙티브자바
- 클린아키텍처
- JavaScript
- 티스토리챌린지
- Effective Java 3
- 이펙티브 자바
- 알고리즘정렬
- k8s
- Spring
- 예제로 배우는 스프링 입문
- effectivejava
- 알고리즘
- 엘라스틱서치
- 스프링부트
- kubernetes
- springboot
- Today
- Total
목록개발/java basic (51)
Kim-Baek 개발자 이야기
이 글을 읽으면: 제가 코트알람 앱 개발 중 실제로 겪었던 성능 문제와 inline 함수로 해결한 과정을 배울 수 있습니다. 언제 inline을 써야 하고, 언제 쓰면 안 되는지 실전 경험을 바탕으로 완벽하게 알려드립니다.📌 목차들어가며 - 앱이 느려진 이유inline이 뭐길래? - 쉬운 설명언제 inline을 써야 할까?crossinline과 noinlinereified와 inline의 관계실제 성능 측정과 비교실전 최적화 사례마무리 - 다음 편 예고들어가며 - 앱이 느려진 이유코트알람 앱에서 겪은 실제 문제2024년 9월, 사용자 리뷰"앱이 너무 느려요. 코트 검색할 때마다 몇 초씩 걸려요. 😢" - ★★☆☆☆"로딩이 너무 길어서 다른 앱 쓸까 고민됩니다" - ★★★☆☆이 리뷰를 보고 밤새 코드..
이 글을 읽으면: 설정 파일, HTML, SQL 쿼리를 타입 안전하고 읽기 쉬운 Kotlin 코드로 작성하는 방법을 배울 수 있습니다. @DslMarker와 수신 객체 지정 람다로 직관적인 DSL을 만드는 실전 패턴을 완벽하게 마스터하세요.📌 목차들어가며 - DSL이 뭐길래?DSL 기초 - 수신 객체 지정 람다타입 안전성 - @DslMarkerHTML DSL 만들기설정 DSL - Config BuilderSQL DSL - 쿼리 빌더실전 DSL 패턴마무리 - 다음 편 예고들어가며 - DSL이 뭐길래?DSL (Domain Specific Language)"특정 도메인에 특화된 언어"일반 프로그래밍 언어 (Java, Kotlin):- 모든 것을 할 수 있음- 범용적DSL:- 특정 분야만 잘함- 전문적우리가 ..
이 글을 읽으면: Mockito 대신 Kotlin 친화적인 MockK로 테스트를 작성하는 방법을 배울 수 있습니다. Controller부터 Service, Repository까지 실전 테스트 패턴을 완벽하게 마스터하세요.📌 목차들어가며 - 왜 테스트 코드가 필요할까?테스트 환경 설정 - JUnit5 + MockKJUnit5 기본 - 테스트 작성법MockK - Kotlin 친화적 목 프레임워크Controller 테스트 - MockMvcService 테스트 - 비즈니스 로직Repository 테스트 - 데이터 계층통합 테스트 - 전체 플로우마무리 - 다음 편 예고들어가며 - 왜 테스트 코드가 필요할까?실제 프로젝트에서 겪은 사고2024년 12월, 금요일 오후 5시상황: 주문 시스템 배포 후 30분알림: "..
이 글을 읽으면: Java 중심의 Spring Boot를 Kotlin으로 더 간결하고 안전하게 작성하는 방법을 배울 수 있습니다. Controller부터 JPA, 코루틴 비동기 처리까지 실전 REST API 구현을 완벽하게 마스터하세요.📌 목차들어가며 - 왜 Spring Boot + Kotlin인가?프로젝트 설정 - Gradle + Kotlin DSLController와 REST APIJPA with Kotlin - Entity 설계Service와 비즈니스 로직코루틴으로 비동기 처리실전 REST API 구현마무리 - 다음 편 예고 들어가며 - 왜 Spring Boot + Kotlin인가?실제 프로젝트에서 겪은 변화2024년 11월, 레거시 전환 프로젝트기존: Java + Spring Boot- Gett..
이 글을 읽으면: 단일 값이 아닌 연속된 데이터를 안전하고 효율적으로 처리하는 Flow와 Channel을 마스터할 수 있습니다. 실시간 데이터, 이벤트 스트림, 반응형 프로그래밍을 실전 예제로 완벽하게 배워보세요.📌 목차들어가며 - 왜 Flow가 필요할까?Flow 기본 개념 - 흐르는 데이터Flow 연산자 - map, filter, collectStateFlow와 SharedFlowChannel - 코루틴 간 통신실전 반응형 패턴마무리 - 다음 편 예고들어가며 - 왜 Flow가 필요할까?실제 프로젝트에서 겪은 문제2024년 10월, 실시간 채팅 앱 개발요구사항:- 서버에서 실시간으로 메시지 수신- 사용자 타이핑 상태 업데이트- 접속자 수 실시간 표시→ "연속된 데이터"를 어떻게 처리하지?시도한 방법들:..
이 글을 읽으면: Thread의 복잡함 없이 Kotlin 코루틴으로 쉽고 안전하게 비동기 프로그래밍하는 방법을 배울 수 있습니다. 실무에서 바로 쓸 수 있는 launch, async, suspend 패턴을 실전 예제로 마스터하세요.📌 목차들어가며 - 왜 코루틴을 배워야 할까?코루틴이란? - Thread와의 차이launch - 결과 없이 실행하기async/await - 결과 받아오기suspend 함수 - 일시 중단의 마법CoroutineScope와 Job실전 비동기 패턴마무리 - 다음 편 예고들어가며 - 왜 코루틴을 배워야 할까?실제 프로젝트에서 겪은 문제2024년 9월, 신규 기능 개발 중요구사항: - 사용자 정보 조회 (DB, 300ms)- 주문 내역 조회 (DB, 400ms) - 추천 상품 조회 ..
이 글을 읽으면: Java의 복잡한 예외 처리를 넘어 Kotlin의 우아한 에러 핸들링 방법을 배울 수 있습니다. 실무에서 바로 쓸 수 있는 안전하고 읽기 쉬운 에러 처리 패턴을 실전 예제로 마스터하세요.📌 목차들어가며 - 예외 처리, 왜 중요할까?Java vs Kotlin 예외 처리try-catch-finally 기본runCatching - 함수형 예외 처리Result 타입 완벽 활용Custom Exception 설계실전 에러 핸들링 패턴마무리 - 다음 편 예고들어가며 - 예외 처리, 왜 중요할까?실제 프로젝트에서 겪은 사고2024년 8월, 월요일 오전 10시상황: 쇼핑몰 서비스 전체 다운원인: 결제 API에서 NullPointerException 발생 → try-catch 없이 예외가 그대..
이 글을 읽으면: Java의 반복적인 위임 코드를 Kotlin의 by 키워드로 한 줄로 해결하는 방법을 배울 수 있습니다. 클래스 위임, 프로퍼티 위임, 커스텀 위임까지 실전 예제로 완벽하게 마스터하세요.📌 목차들어가며 - Java 위임 패턴의 불편함클래스 위임 - by 키워드프로퍼티 위임 - lazy, observableMap 위임 - 동적 프로퍼티커스텀 위임 프로퍼티실전 위임 패턴마무리 - 다음 편 예고들어가며 - Java 위임 패턴의 불편함Java로 위임 패턴을 구현할 때 이런 경험 있으신가요?// Java - 수동 위임 (지루하고 반복적)interface Repository { void save(String data); String load(); void delete();}cla..
이 글을 읽으면: Java의 복잡한 상속 구조를 넘어 Kotlin의 안전하고 명확한 상속 시스템을 배울 수 있습니다. open, abstract, sealed 클래스와 인터페이스 다중 상속까지 실전 예제로 완벽하게 마스터하세요.📌 목차들어가며 - Java 상속의 문제점기본적으로 final - open 키워드추상 클래스 - abstract인터페이스 - interfaceSealed Class - 제한된 클래스 계층위임 - by 키워드실전 디자인 패턴마무리 - 다음 편 예고들어가며 - Java 상속의 문제점Java로 개발하면서 이런 경험 있으신가요?// Java - 모든 클래스가 기본적으로 상속 가능public class User { private String name; public Str..
이 글을 읽으면: Java 제네릭의 복잡함을 넘어 Kotlin의 강력한 타입 시스템을 배울 수 있습니다. 공변성(out), 반공변성(in), reified 타입 파라미터까지 실전 예제로 완벽하게 마스터하세요.📌 목차들어가며 - Java 제네릭의 한계제네릭 기본 - 타입 파라미터타입 제약 - where, upper bound공변성 out - 생산자반공변성 in - 소비자reified - 타입 소거 해결스타 프로젝션 *실전 패턴 모음마무리 - 다음 편 예고들어가며 - Java 제네릭의 한계Java 제네릭을 사용할 때 이런 경험 있으신가요?// Java - 타입 소거 때문에 런타임에 타입 확인 불가public void process(List list) { // if (list instanceof Li..
이 글을 읽으면: 함수를 값처럼 다루는 강력한 함수형 프로그래밍을 마스터할 수 있습니다. 람다 표현식, 고차 함수, 수신 객체 지정 람다를 활용해 더 간결하고 우아한 코드를 작성하는 방법을 실전 예제로 배워보세요.📌 목차들어가며 - 함수를 값처럼람다 표현식 기본고차 함수 - 함수를 인자로, 함수를 반환it 키워드와 underscore수신 객체 지정 람다inline, crossinline, noinline실전 DSL 패턴마무리 - 다음 편 예고들어가며 - 함수를 값처럼Java로 이벤트 리스너를 작성할 때 이런 경험 있으신가요?// Java - 익명 클래스로 콜백 구현button.setOnClickListener(new View.OnClickListener() { @Override public ..
이 글을 읽으면: Java의 Stream API보다 강력한 Kotlin 컬렉션 함수를 배울 수 있습니다. map, filter, groupBy 등 함수형 프로그래밍으로 데이터를 우아하게 처리하는 방법을 실전 예제로 마스터하세요.📌 목차들어가며 - Java 컬렉션의 불편함컬렉션 생성 - 불변 vs 가변List 컬렉션 완벽 정리Set과 Map함수형 연산 - map, filter, reduce고급 연산 - groupBy, partition, flatMapSequence - 성능 최적화실전 패턴 모음마무리 - 다음 편 예고들어가며 - Java 컬렉션의 불편함Java로 데이터 처리할 때 이런 경험 있으신가요?// Java - 장황한 컬렉션 처리List users = Arrays.asList( new Use..
이 글을 읽으면: Java 개발자의 악몽인 NullPointerException을 컴파일 타임에 완전히 차단하는 방법을 배울 수 있습니다. Nullable 타입, Safe Call, Elvis Operator, let 함수까지 실전 예제로 완벽하게 마스터하세요.📌 목차들어가며 - NPE의 공포Nullable Types - ? 연산자Safe Call - ?. 연산자Elvis Operator - ?: 연산자Not-null Assertion - !! 연산자let 함수와 Null Safety안전한 타입 캐스팅 - as?실전 패턴 모음마무리 - 다음 편 예고들어가며 - NPE의 공포Java로 개발하면서 이런 경험 있으신가요?// Java - 언제 터질지 모르는 시한폭탄public String getUserEma..
이 글을 읽으면: Kotlin의 변수 선언 방식인 val과 var의 차이를 완벽하게 이해하고, Java에는 없는 강력한 타입 추론과 Null Safety 시스템을 실전 예제로 배울 수 있습니다.📌 목차들어가며 - Java 변수 선언의 불편함val vs var - 언제 무엇을 쓸까?타입 추론 - 타입을 안 써도 되는 마법명시적 타입 선언 - 언제 필요할까?기본 타입 완벽 정리Nullable 타입 - NPE와의 전쟁타입 변환과 체크마무리 - 다음 편 예고들어가며 - Java 변수 선언의 불편함Java로 개발하면서 이런 경험 있으신가요?// Java - 매번 타입을 명시해야 함String name = "규철";int age = 30;List hobbies = new ArrayList(); // 타입 중복!..
이 글을 읽으면: Java의 장황한 클래스 선언을 단 1줄로 줄이는 방법을 배울 수 있습니다. data class, companion object, object 키워드를 활용해 더 간결하고 안전한 객체지향 프로그래밍을 실전 예제로 마스터하세요.📌 목차들어가며 - Java 클래스의 Boilerplate클래스 기본 선언 - constructor프로퍼티 - getter/setter 자동 생성Primary Constructor - 주 생성자Secondary Constructor - 보조 생성자data class - DTO의 완벽한 해결책companion object - static의 대안object - 싱글톤 패턴마무리 - 다음 편 예고들어가며 - Java 클래스의 BoilerplateJava로 간단한 Use..
이 글을 읽으면: Java의 제어문과 완전히 다른 Kotlin의 강력한 제어 구조를 배울 수 있습니다. if를 표현식으로 사용하고, when으로 switch를 대체하며, for 루프를 더 간결하게 작성하는 방법을 실전 예제로 마스터하세요.📌 목차들어가며 - Java 제어문의 한계if는 표현식이다 - 값을 반환하는 ifwhen - switch의 강력한 대안for 루프 - range와 컬렉션 순회while과 do-whilebreak, continue, return - 라벨 활용실전 패턴 모음마무리 - 다음 편 예고들어가며 - Java 제어문의 한계Java로 간단한 등급 계산을 할 때 이런 경험 있으신가요?// Java - if문은 statement (값 반환 불가)String grade;if (score ..
이 글을 읽으면: Java 메서드보다 훨씬 강력하고 유연한 Kotlin 함수 작성법을 배울 수 있습니다. 단일 표현식 함수, 기본 매개변수, Named Arguments, 확장 함수까지 실전 예제로 마스터하세요.📌 목차들어가며 - Java 메서드의 불편함함수 기본 문법 - fun 키워드반환 타입과 Unit단일 표현식 함수 - 한 줄로 끝내기기본 매개변수 - 오버로딩 필요 없음Named Arguments - 가독성 극대화가변 인자 - vararg확장 함수 - 기존 클래스 확장마무리 - 다음 편 예고들어가며 - Java 메서드의 불편함Java로 간단한 계산 메서드를 만들 때 이런 경험 있으신가요?// Java - 너무 장황함public class MathUtils { // 1. 항상 클래스 안..
이 글을 읽으면: Java 개발자가 Kotlin을 배워야 하는 이유와 5분 만에 첫 프로젝트를 시작하는 방법을 알 수 있습니다. IntelliJ 설치부터 Hello World까지 단계별로 따라하세요.📌 목차들어가며 - 왜 Kotlin을 배워야 할까?Kotlin vs Java - 코드량이 40% 줄어든다?개발 환경 설정 - IntelliJ IDEA 설치첫 프로젝트 만들기 - 5분이면 충분합니다Hello World 작성 및 실행변수 선언 맛보기 - val과 var마무리 - 다음 편 예고들어가며 - 왜 Kotlin을 배워야 할까?솔직히 말하면, 저도 처음엔 회의적이었습니다.5년간 Java로 Spring Boot, JPA, Stream API까지 다 익혔는데... "굳이 Kotlin을 배워야 하나?" 싶었죠...
Java 개발자가 Kotlin을 배워야 하는 이유와 5분 만에 시작하는 방법목차왜 Kotlin을 배워야 할까?개발 환경 설정Hello World - Java vs Kotlin변수 선언 - val과 var기본 타입과 타입 추론문자열 처리첫 번째 프로그램 만들기들어가며저는 5년간 Java로 개발했습니다. Spring Boot, JPA, Stream API까지 다 익숙했죠. 그런데 팀에서 Kotlin 도입을 결정했고, 처음에는 "굳이?"라는 생각이 들었습니다.하지만 첫 코드를 작성하고 놀랐습니다:// Java - 20줄public class User { private final Long id; private final String name; private final String email; ..
Mockito-Kotlin으로 더 간결하고 강력한 테스트 코드 작성하기목차Kotlin 테스트 환경 설정JUnit5 기본 테스트Mockito-Kotlin 소개Mock 객체 생성과 스터빙Argument Matchers와 CaptorsVerification - 호출 검증Spring Boot 통합 테스트실전 테스트 패턴들어가며Java에서 Mockito를 사용하다가 Kotlin으로 넘어왔을 때, 처음에는 당황스러웠습니다. when()이 Kotlin 예약어라서 컴파일 오류가 나고, any() matcher가 null을 허용하지 않아서 NPE가 발생했습니다.// ❌ 컴파일 오류when(userRepository.findById(1L)).thenReturn(user)// ❌ NPE 발생verify(userService..
