일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 16235
- spring oauth
- spring security
- 백준 17779
- 백준 17626
- java 기술면접
- Kotlin
- Spring
- Spring Boot
- re.split
- java
- 백준 16719
- MySQL
- 백준 16236
- sql 기술면접
- 프로래머스
- 백준 15685
- 백준 파이썬
- with recursive
- 백준 19238
- 웹어플리케이션 서버
- JVM
- 파이썬
- 프로그래머스
- springboot
- Coroutine
- 백준
- spring cloud
- JPA
- MSA
- Today
- Total
목록Kotlin (4)
시작이 반
https://github.com/tmdrl5779/login-boilerplate Spring Boot Spring Security JWT : Token Redis : For RefreshToken sava Kotlin : Language JPA : ORM H2 : DataBase
Kotlin은 비동기 작업을 다룰 수 있는 동시성 라이브러리 이다. 동시성에는 잘못된 사용으로 여러 문제를 발생시킬 수 있는데 공유 데이터가 그중 하나이다. 여러 코루틴이 동시에 공유된 변수나 자료구조에 접근 하는 경우 데이터 경합이 발생할 수 있으며 이럴 때 해결할 수 있는 방법에 대해서 알아보자. 문제 코드 import kotlinx.coroutines.* import kotlin.random.Random import kotlin.system.measureTimeMillis suspend fun massiveRun(action: suspend () -> Unit){ val n = 100 val k = 1000 val elapsed = measureTimeMillis { coroutineScope { ..
여러개의 코드를 동시에 실행시키기 위해서는 Coroutine을 알기 전에는 쓰레드라는 개념밖에 생각나지 않았다. 쓰레드는 다수의 작업을 동시에 처리할 수 있으며, 일반적으로 쓰레드는 선점형으로 멀티태스킹이 가능하다. 하나의 작업이 한 쓰레드에서 발생하고 여러개의 작업을 동시 실행시키기위해 멀티 쓰레드를 사용한다. 멀티쓰레드 환경에서 CPU가 여러 Task를 바꿔 실행하기 위해 Context Switching을 하게 되고 이때 현재 PCB, 다음 PCB등에 대한 정보를 적재시키기는 등 Overhead가 매우 커질 수 있다. Coroutine 또한 여러 작업을 병렬적으로 처리하는 방법으로 비선점형으로 멀티태스킹이 가능하다. suspend와 resume을 사용하여 서브루틴을 구성하고 하나의 쓰레드에서 여러개의..
JVM기반의 언어를 사용하다가 (Java, Kotlin) 보면 OS에 독립적이라는 말이 나온다. 옛날에는 JVM위에서 동작하기 때문에 OS에 독립적이구나 하고 넘어갔는데 최근에 왜 OS에 독립적인지 정확히 알고싶어 졌다. 자바의 런타임 과정은 아래와 같다. JDK를 통해 바이트코드 생성 ( .java -> .class ) 바이트코드를 JRE에 전달 ( .class ) JRE를 통해 바이트코드를 JAVA 명령어로 실행 이를 JVM이 실행 여기서 JVM이 내부에서 특정 OS에 맞게 자바 언어를 인터프리터나 JIT를 통해 기계어로 변환시켜준다. 때문에 어떤 OS를 사용하든간에 JVM이 JAVA가 실행되는 것을 보장한다. 옜날에는 Java언어는 다른 언어에 비해서 느리다는 말이 나왔었는데 이는 위에 런타임과정에..