일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- MySQL
- resizer 구현
- resize image with go
- 코틀린 out
- Pitest
- kotlin
- cli 만들기
- 개인블로그 hugo
- standard output
- Convariance
- InnoDB
- 코틀린 in
- 객체지향
- 코틀린 노트북
- change refresh rate
- 코틀린
- hugo 로 블로그
- Test
- IntelliJ
- JPA
- 자바
- Mutation testing
- output stream
- image resizer with go
- standard input
- ruby
- 돌연변이 테스팅
- 의존성역전원칙
- Today
- Total
목록Kotlin (48)
Rlog
CoroutineBuilder Kotlin 에서 Suspend function 은 normal function 에서 호출할 수 없다. Suspend Function 은 오로지 Suspend Function 에서만 호출되어야 한다. 하지만 우리가 Suspend 를 사용해야 하는데, 모든 함수가 suspend 일 수 있을까? 적어도 main(프로그램 진입점) 은 suspend 하지 않을 수 있다. 그래서 코틀린은 suspend scope 를 만들 수 있도록 corutineBuilder 를 제공한다. 대표적으로 제공하는 세가지 corutineBuilder (launch, runBlocking, async) 에 대해 공부해보자. launch builder launch builder 는 concept 적으로 새로..
Kotlin Coroutines 에 대한 공부를 최근에 많이 하고 있는데 하면서 느껴지는 점은 Thread 간의 Context Switching 에 관한 내용을 Heap 으로 관리할께 라는 느낌이 강하게 들었다. 예전에는 어떻게 Context Switching 을 적은비용으로 한다는 거지 싶었는데, 이제는 대략적으로 이해가 간다. 언제 글을 정리할까 했다가 오늘 천천히 정리해보려고 한다. 기존 Context Switching 의 문제 일단 아주 간단하게 설명하겠다. 어차피 지금 글에서 이 내용이 중요한건 아니니까. 각 Thread 는 Local Stack 등 자신만의 데이터를 가지고 있는데, 다른 Thread 와 Switching 해야 할때 자신의 작업정보를 넘겨주어야 한다. 즉, Process Swit..
Week3 Kotlin OOP Constructor Kotlin 에서는 기존 Java 나 다른 언어처럼 아래와 같이 Constructor 를 선언하는 것이 가능하다. class TestUser { private val user: String, private val pw: String, constructor(user: String, pw: String) { // SubConstructor this.user = user this.pw = pw } constructor(user: String) { // SubConstructor Overloading this.user = user this.pw = pw } } 하지만 주 생성자에 한해서는 좀 더 다른 방법으로 선언이 가능하다. 코틀린에서 이렇게 선언되는 Con..
KClass KClass - 코틀린 클래스를 얻는 방법? 클래스::class 인스턴스::class KClass.members Collection KCallable 모든 호출가능한 요소 KProperty 속성 여기서 의문은 왜 Class Property 는 호출 가능한 요소인가? 라고 하면 Kotlin 에서는 값을 만들면 getter 또는 setter 를 자동으로 만들어준다. 물론 이건 변수가 val / var 냐의 차이도 있지만, kotlin delegate 를 공부해보면 kotlin property 는 호출 가능한 요소임을 좀 더 와닿게 알 수 있다. 예시가 허접하지만 대충 이렇게 된다 class Person { var name: String by PersonNameDelegator() } class ..
머릿글 들어가기에 앞서, 좋은 강의 영상을 제공해주신 코드스피츠에 감사합니다. 이 글은 코드스피츠 - 코틀린 강좌 영상을 주관적으로 정리한 글입니다. 그래서 영상의 내용도 많은데, 제가 오버랩되서 떠오른 내용도 많습니다 ㅎㅎ. 틀린 부분이 있다면 피드백 부탁드립니다. 영상 링크 코틀린에 대한 이해 코틀린은 독립된 언어로 여러 플랫폼에서 번역되는 가운데서도 고유의 철학을 유지 다만 JVM 에는 호환성이 높으나, 다른 언어는 Reflection 이나 GC가 없는 언어에서는 호환성이 그다지 높지 않음 안드로이드, IOS 를 코틀린으로 대체하면 사실상 공통로직 한벌짜는데는 좋은데, 플러터 처럼 공통 UI 를 지원하지는 않아서 인력이 증강될 확률이 높음. 언어 시스템의 형 원시형 (Primitive) 대입이나 함..
기존에 Spring 의 @Async 를 CustomThreadPool 을 이용해서 사용했었는데, 해당 부분이 엄청나게 빠른 요청이 초당 들어와서 Thread 가 부족해서 비즈니스 요건 상 discard 해도 크게 타격은 없기에 discardPolicy 를 사용하기도 했었다. 요즘 코루틴을 공부하면서 Coroutine 이 얼마나 효율적인지 배우고 있는데 이를 실무에 적용해봤더니 위와 같은 결과가 나왔다. 사실 근데 의문은 Coroutine 은 Continuous 를 Heap 에 담아두고 있는데 왜 Heap 사용량이 오히려 줄었지? 이런 생각이 들었다. 여하튼 아래를 보면 알 수 있듯이 CPU 사용량이 올랐다. 팍 튄 부분은 배포때문이고 16:00 때부터 코루틴으로 배포됬다고 생각하면 된다. CPU 사용량은..
Kotlin Coroutines 는 다른 언어에 있는 async / await 과 유사한 부분을 구현할 수 있게 만든 library 라고한다. Kotlin 의 suspend function 은 비동기 함수를 다루는데 Java 의 Future 보다도 안전하고 더 적은 버그가 있다고 한다. 일단 백문이 불여 일타 라고 코드로 먼져 보도록 하자 실습 fun main() = runBlocking { // this: CoroutineScope launch { // launch a new coroutine and continue delay(1000L) // non-blocking delay for 1 second (default time unit is ms) println("World!") // print afte..
변수의 스코프를 최소화 해라 만약 loop 안에서만 변수가 쓰인다면 loop 안으로 변수를 넣어서 scope 를 최소화 해라. 보통의 언어 에서 변수의 scope 는 보통 curly braces 안으로 생성지만, Kotlin 에서는 외부의 변수에도 접근 가능하다. 음, 내가 생각해도 뭔가 잘 읽기 힘들게 적은거 같아 코드로 적어보려고 한다. val a = 1 fun fizz() { val b = 2 print(a+b) } val buzz = { val c = 3 println(a + c) } 위의 예시를 보면, buzz 와 fizz 의 curly braces 지역 scope 에서 외부 변수인 a 에 접근할 수 있음을 알 수 있다. 반대로 모두 알고 있겠지만 Outer area 에서 inner functi..