일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Mutation testing
- 개인블로그 hugo
- output stream
- resizer 구현
- 의존성역전원칙
- ruby
- 자바
- Test
- change refresh rate
- 코틀린 out
- InnoDB
- 공짜블로그
- IntelliJ
- standard input
- cli 만들기
- resize image with go
- kotlin
- hugo 로 블로그
- JPA
- 코틀린 노트북
- 객체지향
- Java
- 코틀린
- 코틀린 in
- 돌연변이 테스팅
- image resizer with go
- Pitest
- MySQL
- standard output
- Convariance
- Today
- Total
목록분류 전체보기 (160)
Rlog
CPS Style 들어가기에 앞서 이 글에서는 이를 이해하기 위해 알아야 할 기초 개념들을 내가 알고 있는 CS 지식으로 설명하려고 한다. 여담이지만, 이 글의 깊이가 사실 내가 컴퓨터를 이해하고 있는 깊이와 비슷하다고 생각해도 좋다.. 그래서 잘못된 부분이 있으면 피드백해주면 정말 고마울 것 같다. 틀린 내용이 있을 수도 있습니다. (틀린 내용이 있다면 댓글로 알려주세요~! FeedBack 은 언제든지 환영입니다.) 개인적으로 EventLoop 나 상세 구현체는 구현하지는 않았다. 개념을 설명하는데 구현하기에는 너무 어렵고 복잡성을 높일 수 있다고 판단했다. CPS Style? CPS Style 은 suspend 의 개념을 익히기 위해서 반드시 알아야 하는 개념 중 하나라고 생각한다. 일단 CPS 의 ..
Bit Operation CD 같은 곳을 자세히 보면 굴곡 같은게 져있음을 확인할 수 있는데, 이를 빛으로 확인해서 어떤 값이 저장되어 있는지 확인할 수 있다. 예를 들면 긴줄은 1, 짧은 줄은 0 이라 해서 어떤 값을 표현할 수 있다는 것이다. Integer Integer 값을 저장하기 위해서 Java 에서는 4 Byte 의 저장공간이 필요하고 이는 Bit 로 표현하면 32 bits 에 해당한다. Int i = 8 을 저장한다면 다음과 같이 저장될 것이다. 즉 Integer 가 표현할 수 있는 가짓수는 (0,1)^32 - 1 에 속하게 되므로 2^32 - 1 에 속한다. 즉 4,294,967,296 가짓수의 수가 표현 가능하다. 하지만 보통 음의 정수를 표현해야 하므로 맨앞의 비트를 부호 비트로 두게 ..
Why we should use interrupt method in java Why we should check thread was interrupted in multi-thread programming? For Example, Can you expected result to this code? When execute code, Thread start sleeping for 10000000 mils. And Main Thread is blocking by Other Thread. The application will not stop. So, we should kill sleeping Thread. In Java, we have two method to kill thread. call Interrupted..
Kotlin Collection 과 Hot Data Stream And Cold data stream Kotlin Collection 은 Java Collection 과 무엇이 다를까? 일단 Java 를 쓰다가 Kotlin 으로 넘어온 사람이 이 Collection Class Diagram 을 봤을때는 사뭇 Java 와 약간 차이가 있음을 느낄 것이다. 일단 구체적인 설명은 Diagram 을 보고 하는게 편하니, 아래 Diagram 을 보도록 하자. PlantUML 로 직접 작성했다. Iterator 일단 위의 Collection Class Diagram 을 살펴보면 기본적으로 최상위 Interface 가 Iterator 임을 알 수 있다. 왜 Kotlin 은 이런 구조를 채택했을까? 일단 Iterato..
Actor CS 에서 Actor 라는 동시성 모델이 있다. 음, 일단 말이 되게 어려운데 쉽게 말하면 동시성 연산을 수행해주는 모델이라고 생각하면 된다. 이 Actor 라는 녀석은 private 한 state 를 가지는데, 이건 외부에 message 로 인해 영향을 받아 변경될 수 있다. 이게 말이 참 어려운데 코드를 보면 편하다. 이해시키기 위해 코드를 하나 작성해왔다. interface Operation { fun compute(value: Value): Int } sealed class Operator : Operation object Plus : Operator() { override fun compute(value: Value): Int { return value.num1 + value.num2..
Channel 채널 API 는 Coroutine 간의 상호 통신용으로 사용된다. Coroutine 과 Coroutine 사이에서 Channel 을 이용하여 어떠한 데이터든 주고 받을 수 있다. 특징 채널의 경우 Producer 와 Consumer 갯수에 제한이 없다. Channel 은 아래 두개 interface 를 구현하고 있다. SendChannel ReceivceChannel Receive 가 또는 Send 가 Suspend 되는 경우 Recevice 는 Channel 에서 Element 를 받아오는 함수이다. 근데 만약에 Channel 에 Element 가 없다면 어떻게 될까? 해당 Coroutine 은 가져올 수 있는 Element 가 있을때 까지 suspend 된다. Send 가 Suspend..
병합정렬 Merge Sort 는 Java Collection API 에서도 사용하는 것으로 알고있을 정도로 안전하다. 가끔 왜 Quick Sort 를 쓰지않고, Merge Sort 를 사용하여 구현하는 것에 대한 이야기가 있는데 Quick Sort 를 구현해봤다면 Quick sort 는 stability 하지 않다는 것을 알것이다. 따라서 충분히 objcet 의 경우에 sort 에서 순서가 뒤바뀌는 현상을 경험하기 충분하며 그로인한 사이드 이펙트를 유발할 수 있다. 일단 이 얘기는 뒤로하고 알고리즘에 대해 알아보도록 하자. 도식 나는 이런 Recursive 하게 짜야되는 Algorithm 을 작성할때는 항상 도식을 그리는 편이다. 그래야 Call Stack 생각도 잘나고, 코드도 잘 작성되는 것 같다. ..
우리가 코루틴을 사용할때 보통 일정한 값을 기다려야 할때 아래와 같이 runBlocking 을 이용할 수도 있다. fun test() = runBlocking { launch { // Some Api Calls println("hello, ") } return@runBlocking "ApiCalls Result" } fun main() { println(test()) } 위와 같이 작성하면 어떻게 될까? runBlocking 에서 한가지 알아야 할 점이 있는데, runBlocking 은 처음에 자신만의 Thread 를 고정시켜버린다. 따라서 아래와 같이 Thread 이름을 출력하는 형태로 코드를 작성해서 확인해보면 결과는 아래와 같다. fun test() = runBlocking { launch { pr..