일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kotlin coroutine
- Linux
- Elasticsearch
- APM
- kotlin
- 정보처리기사실기 기출문제
- AWS EKS
- IntelliJ
- Java
- CKA 기출문제
- 정보처리기사 실기 기출문제
- Spring
- kotlin spring
- Kubernetes
- CloudWatch
- 정보처리기사 실기
- 오블완
- AI
- 공부
- CKA
- aws
- 티스토리챌린지
- Pinpoint
- PETERICA
- 코틀린 코루틴의 정석
- 기록으로 실력을 쌓자
- kotlin querydsl
- MySQL
- minikube
- mysql 튜닝
- Today
- Total
목록2024/05 (31)
피터의 개발이야기
ㅁ 들어가며ㅇ 코틀린 코루틴의 정석 책을 보고 정리한 글입니다. 4장 코루틴 빌더와 Jobㅁ 코루틴 빌더// Job 객체 생성val job: Job = launch(Dispatchers.IO) { println("job은 생성된 코루틴의 상태를 추적하고 실행과 정지를 수행할 수 된다.")}ㅇ runBlocking 함수와 launch 함수는 코루틴을 만들기 위한 코루틴 빌더 함수이다.ㅇ 코루틴 빌더는 코루틴을 추상화하나 Job 객체를 통해 코루틴의 상태를 추적하고 일시 중단 및 재실행을 할 수 있다. ㅁ join함수를 이용한 순차처리 val firstJob = launch(Dispatchers.IO) { println("[${Thread.currentThread().name}] firtst jo..
ㅁ 들어가며ㅇ 코틀린 코루틴의 정석 책을 보고 정리한 글입니다. 2장 정리ㅇ 현재 실행 중인 스레드의 이름 출력: Thread.currentThread().nameㅇ 스레드의 이름 출력: JVM의 VM options에 -Dkotlinx.coroutines.debugㅇ CoroutineName으로 코루틴의 이름을 지정 ㅁ 실행 중인 코루틴의 이름 출력 VM option-Dkotlinx.coroutines.debug[main @coroutine#1] Start]종료 코드 0(으)로 완료된 프로세스ㅇ 스레드 출력 시 코루틴의 이름이 표출된다. ㅁ launch로 개별 스레트 할당하기fun main() = runBlocking { println("[${Thread.currentThread().name}]..
ㅁ 들어가며ㅇ 코틀린 코루틴의 정석 책을 보고 정리한 글입니다.ㅇ 이번 글에서는 1장 스레드 기반 작업의 한계와 코루틴의 등장을 읽거, 코루틴이 단일 스레드, 멀티스레드의 한계인 스레드 블러킹을 해결하는 원리인 경량 스레드에 대해서 정리하였다. ㅁ 단일 스레드의 한계와 멀티스레드 ㅇ 메인 스레드는 일반적으로 프로세스의 시작과 끝을 함께 하는 역할을 한다.ㅇ JVM의 프로세스는 기본적으로 메인 스레드 단일 스레드로 실행된다. ㅇ 단일 스레드의 한계 ㄴ 단일 스레드는 동시작업을 수행할 수 없기 때문에 하나의 작업이 오래 걸리면 다른 작업의 처리도 지연된다.ㅇ 멀티 스레드 ㄴ 오래 걸리는 작업은 멀티 스레드를 이용하여 백그라운드로 처리한다. ㄴ 실시간성으로 처리해야 할 화면 그리기나 사용자 이벤..
ㅁ 들어가며ㅇ 코틀린 코루틴의 개념을 정리하였다.ㅇ 최근 트랜드인 비동기처리에 있어서 코틀린 코루틴의 차이점에 대해 알아보았다. ㅁ Coroutine이란?Coroutines은 Co + Routines 약자로, Co 는 Cooperation을 의미하고, Routines는 하나의 테스크를 의미한다. 풀어서 말하자면, 서로 협력하는 함수를 의미한다. ㅁ 간결하고 읽기 쉬운 코드ㅇ 코루틴을 사용하면 복잡한 비동기 작업을 마치 동기 코드처럼 작성할 수 있다. ㅇ 이는 콜백 지옥을 피하고 코드의 가독성을 크게 향상시킨다.ㅇ 아래는 코틀린의 가독성을 확인하기 위해 Callback 지옥, RxKotlin, coroutine을 비교해 보았다. Callback 지옥fun goWork(person: Person) { ..
ㅁ 들어가며ㅇ Terraform으로 minikube를 구축하는 테스트를 진행해 보았습니다. ㅁ minikube 환경ㅇ minikube의 기본으로 설치하였다. ㅇ minikube를 우선 시작한 후에 terraform으로 내부 리소스를 생성한다. ㅁ Provider 설정terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = "2.11.0" } }}provider "kubernetes" { config_path = "~/.kube/config" config_context = "minikube"}ㅇ providers.tf 파일을 생성하였다. ㅁ k8s 설정resour..
ㅁ 들어가며ㅇ spring boot tutorial를 참조하여 나만의 확장 프로그램 만들기를 구현해 보았습니다. ㅁ Configuration propertiesㅇ Kotlin에서 애플리케이션 속성을 관리하는 데 권장되는 방법은 읽기 전용 properties을 사용하는 것입니다. @ConfigurationProperties("blog")data class BlogProperties(var title: String, val banner: Banner) { data class Banner(val title: String? = null, val content: String)}ㅇ BlogProperties.kt을 생성합니다. ㅁ Application Enable Properties 설정@SpringBootApp..
ㅁ 들어가며ㅇ spring boot tutorial를 참조하여 나만의 확장 프로그램 만들기를 구현해 보았습니다. ㅁ RestController 생성@RestController@RequestMapping("/api/article")class ArticleController(private val repository: ArticleRepository) { @GetMapping("/") fun findAll() = repository.findAllByOrderByAddedAtDesc() @GetMapping("/{slug}") fun findOne(@PathVariable slug: String) = repository.findBySlug(slug) ?: throw ResponseStatusEx..
ㅁ 들어가며ㅇ spring boot tutorial를 참조하여 나만의 확장 프로그램 만들기를 구현해 보았습니다. ㅁ Gradle 수정plugins { ... kotlin("plugin.allopen") version "1.9.22"}allOpen { annotation("jakarta.persistence.Entity") annotation("jakarta.persistence.Embeddable") annotation("jakarta.persistence.MappedSuperclass")}ㅇ 코틀린에서 JPA를 사용하기 위해서는 allopen 플러그인을 사용해야한다.ㅇ allopen 플로그인과 JPA를 사용하기 위한 추가 annotation을 설정하였다.ㅇ 수정파일: build.gradle.k..
ㅁ 들어가며ㅇ 코틀린을 처음부터 코드로 잘 코딩할 수는 없다.ㅇ 기존 자바코드를 코틀린으로, 코틀린에서 자바로 변경하는 방법을 정리하였다.ㅁ Java -> Kotlin ㅇ 코드 > Java 파일을 Kotlin 파일로 변환을 클릭한다.ㅇ Kotlin 파일 변경 전에 Kotlin 구성을 수행해야 한다. ㅇ Kotlin 구성을 수행 완료 후에 개별 파일들을 Kotlin으로 변환처리하면 변환된 코틀린 소스를 확인 할 수 있다. ㅇ 왼쪽은 자바 소스이고 오른쪽은 변환된 코틀린 소스이다. ㅁ Kotlin -> Javaㅇ Kotlin에서 자바로 변경하기 위해서는 바이트코드로 중간 과정을 거쳐야 한다.ㅇ 원하는 Kotlin 소스를 선택 후 도구 > Kotlin > 바이트코드표시를 선택한다.ㅇ 오른쪽에 바이트코드 표시..
ㅁ 들어가며ㅇ spring boot tutorial를 참조하여 나만의 확장 프로그램 만들기를 구현해 보았습니다. ㅁ 확장 함수란? 확장 함수는 이미 정의된 클래스나 인터페이스에 상속 없이 함수를 추가 정의할 수 있도록 Kotlin에서 제공되는 기능입니다.예를 들어, 수정할 수 없는 타사 라이브러리의 클래스 또는 인터페이스에 대한 새 함수를 작성할 수 있습니다. 이러한 함수는 마치 원래 클래스의 메서드인 것처럼 일반적인 방법으로 호출할 수 있습니다. 이 메커니즘을 확장 기능 이라고 합니다. 기존 클래스에 대한 새 속성을 정의할 수 있는 확장 속성도 있습니다. ㅁ Extensions.kt// 영어 날짜 형식으로 텍스트 생성, 기존 format() 유형에 함수를 추가fun LocalDateTime.forma..