카샤의 만개시기
close
프로필 배경
프로필 로고

카샤의 만개시기

  • 분류 전체보기 (102)
    • 만개시기 (1)
    • Foundation (12)
      • Algorithm (3)
      • Operation (1)
      • Network (1)
      • Programming (1)
      • Design Pattern (5)
    • Architecture (1)
      • DDD (1)
    • Java (21)
      • POJO (9)
      • Spring (4)
      • Liferay (1)
      • MSA (7)
    • Kotlin (13)
    • Go언어 (6)
    • Javascript (2)
      • EcmaScript (0)
      • Node.js (0)
      • React (0)
    • Swift (0)
    • Python (0)
    • Android (0)
    • IOS (0)
    • Database (4)
      • mySQL (3)
      • MongoDB (0)
      • Oracle (0)
      • Redis (0)
    • DevOps (25)
      • Docker & K8S (17)
      • Ansible (2)
      • Performance Test (4)
      • APM (1)
      • Fluentd (1)
    • Machine Learning (12)
    • Big Data (0)
      • pyspark (0)
    • Review (3)
    • 유용한 정보 (1)
    • 일상 (1)
  • 홈
  • 카테고리
  • 방명록

Go의 고루틴, Kotlin의 코루틴, 그리고 Java 21의 가상 스레드

1. Kotlin 코루틴, Go 고루틴, Java 21의 가상 스레드 요약Kotlin 코루틴: Kotlin은 JVM 기반 언어로, 비동기 프로그래밍을 처리하는 데 매우 유용한 코루틴을 도입했습니다. 코루틴은 비동기 처리를 간결하고 효율적으로 만들어주는 기능으로, 스레드를 차단하지 않고 여러 작업을 동시에 처리할 수 있게 도와줍니다.Go 고루틴: Go는 동시성을 매우 효율적으로 처리할 수 있는 고루틴을 제공합니다. 고루틴은 경량 스레드로, 운영 체제의 스레드를 직접 사용하지 않고, Go 런타임에서 관리하는 방식으로 동시성 처리를 최적화합니다. Go의 고루틴은 사용하기 간단하며, 동시성 작업을 자동으로 관리해줍니다.Java 21 가상 스레드: Java 21은 가상 스레드라는 새로운 기능을 도입하여, JVM ..

  • format_list_bulleted Go언어
  • · 2025. 8. 4.
  • textsms

Kotlin Coroutine(코루틴) - Channel(채널)

채널은 넌블로킹 전송 개념으로 SendChannel과 ReceiveChannel 인터페이스를 이용해 값들의 스트림을 전송하는 방법을 제공합니다. fun main() = runBlocking { val channel = Channel() launch { // 여기에 다량의 CPU 연산작업이나 비동기 로직을 둘 수 있다. for (x in 1..5) channel.send(x * x) } // 5개의 값을 채널로부터 받는다 repeat(5) { println(channel.receive()) } println("Done!") launch { for (x in 1..5) channel.send(x * x) channel.close() // 모두 보내고 닫기 명시 } // for 루프를 사용해 끝까지 읽기 fo..

  • format_list_bulleted Kotlin
  • · 2019. 12. 14.
  • textsms

Kotlin Coroutine(코루틴) - 개념과 사용법

프로그램에서 태스크를 수행할 때 운영체제를 사용할 수 있게 하고 특정한 작업에 작업 시간을 할당하는 것을 선점한다라고 합니다. 선점형 멀티태스킹(Preemptive Multitasking)은 운영체제가 강제로 태스크의 실행을 바꾸는 개념이고 협력형 멀티태스킹은 태스크들이 자발적으로 양보하며 실행을 바꿀 수 있는 개념입니다. 코루틴은 이러한 협력형 멀티태스킹을 이용하여 동시성 프로그래밍을 지원하는데, 해당 루틴을 일시 중단(Suspended)하는 방식으로 Context-Switching을 없애고, 최적화된 비동기 함수를 통해 비선점형으로 작동하기 때문에 복잡한 넌블로킹 코드를 간결하게 해주며 더 나은 성능을 지원합니다. launch와 async 코루틴에서 사용되는 함수는 suspend()로 선언된 지연 함..

  • format_list_bulleted Kotlin
  • · 2019. 12. 8.
  • textsms

Kotlin Sequence(시퀀스)

시퀀스는 순차적인 컬렉션으로 요소의 크기를 특정하지 않고, 나중에 결정할 수 있는 컬렉션이다. 예를 들어 특정 파일을 줄 단위로 읽어서 마지막 라인 수를 모를때 사용할 수 있다. 따라서 시퀀스는 처리 중에는 계산하고 있지 않다가 toList()나 count()와 같은 최종 연산에 의해 결정 된다. generateSequence()로 생성 fun main() { // 시드값 1을 시작으로 1씩 증가하는 시퀀스 정의 val nums: Sequence = generateSequence(1) { it + 1 } // take()를 사용해 원하는 요소 개수만큼 획득하고 toList()를 사용해 List 컬렉션으로 반환 println(nums.take(10).toList()) }위 코드에서 take(10)을 했을때..

  • format_list_bulleted Kotlin
  • · 2019. 12. 8.
  • textsms

코틀린의 DSL (Domain-Specific Language)과 DslMarker

DSL(Domain-Specific Language)은 특정 주제에 특화된 언어를 의미하며, 데이터베이스에 접근하기 위한 SQL이 대표적인 DSL이다. 이 밖에도 화면 레이아웃을 단순화한 DSL이나 웹 접근을 단순화한 DSL 등의 많은 프레임워크가 만들어져 있다. 코틀린에서는 고차함수와 람다식의 특징을 이용하여 읽기 좋고 간략한 코드를 만들수 있다. 우리가 목표로 할 DSL 코드는 다음과 같다 data class Person( var name: String? = null, var age: Int? = null, var job: Job? = null) data class Job( var category: String? = null, var position: String? = null, var extensi..

  • format_list_bulleted Kotlin
  • · 2019. 12. 8.
  • textsms

Kotlin takeIf와 takeUnless함수

takeIf 함수 람다식이 true이면 결과값을 반환. public inline fun T.takeIf(predicate: (T) -> Boolean): T? = if (predicate(this)) this else nulltakeUnless 함수 람다식이 false이면 결과값을 반환. public inline fun T.takeIf(predicate: (T) -> Boolean): T? = if (!predicate(this)) this else null예제 val user = "KaSha" val str = "Sha" var index = 0 index = user.indexOf(str).takeIf { it >= 0 } ?: -1 index = user.indexOf(str).takeUnless ..

  • format_list_bulleted Kotlin
  • · 2019. 12. 8.
  • textsms
  • navigate_before
  • 1
  • 2
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (102)
    • 만개시기 (1)
    • Foundation (12)
      • Algorithm (3)
      • Operation (1)
      • Network (1)
      • Programming (1)
      • Design Pattern (5)
    • Architecture (1)
      • DDD (1)
    • Java (21)
      • POJO (9)
      • Spring (4)
      • Liferay (1)
      • MSA (7)
    • Kotlin (13)
    • Go언어 (6)
    • Javascript (2)
      • EcmaScript (0)
      • Node.js (0)
      • React (0)
    • Swift (0)
    • Python (0)
    • Android (0)
    • IOS (0)
    • Database (4)
      • mySQL (3)
      • MongoDB (0)
      • Oracle (0)
      • Redis (0)
    • DevOps (25)
      • Docker & K8S (17)
      • Ansible (2)
      • Performance Test (4)
      • APM (1)
      • Fluentd (1)
    • Machine Learning (12)
    • Big Data (0)
      • pyspark (0)
    • Review (3)
    • 유용한 정보 (1)
    • 일상 (1)
최근 글
인기 글
최근 댓글
태그
  • #devops
  • #클라우드 네이티브
  • #cloud native
  • #Spring
  • #코틀린
  • #쿠버네티스
  • #Microservice
  • #MSA
  • #java
  • #Kotlin
전체 방문자
오늘
어제
전체

티스토리툴바