일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- @Setter
- 전화번호 목록
- 정렬
- 프로그래머스
- 크론 표현식
- Java
- 완주하지 못한 선수
- 롬복 어노테이션
- 검색 기능 확장
- @configuration
- 기능개발
- @Getter
- 쿠버네티스
- 알고리즘
- K번째수
- 가장 큰 수
- H-index
- 스택/큐
- @EnableScheduling
- 모던 자바 인 액션
- 코딩 테스트
- 스프링 스케쥴러
- 커링
- 루씬 인 액션
- 영속 자료구조
- kubenetes
- 해시
- @Data
- 다리를 지나는 트럭
- 고차원 함수
- Today
- Total
목록Kotlin (16)
Today I Learned
코루틴과 동시 실행 병렬 vs 동시성 먹는 행위와 듣는 행위는 병렬 먹는 행위와 말하는 행위는 동시성 함수의 협력, 코루틴 서브루틴은 실행이 완료된 이후 호출자에게 반환되는 함수 서브루틴은 호출 사이에 아무런 상태도 관리하지 않으며, 동일한 서브루틴에 대한 다른 호출은 처음 호출과 동일하다. 코루틴은 여러 엔트리를 가지고 호출 사이에 상태를 기억하며, 이전 호출에서 중단된 코루틴의 중간으로 들어갈 수 있다. 코루틴을 이용한 동시 실행 순차적 실행으로 시작하기 코드 일반적인 프로그램처럼 task1()이 완료되고 task2()가 실행되고 완료된다. run()은 Any 클래스의 확장 함수로, run을 실행하고 람다를 아규먼트로 전달한다. start start task1 in Thread Thread[main,..

범용 프로그래밍 언어가 가진 엄격하고 완전한 능력이 필요할 때가 있다.반면에 특화되고, 규모가 작고 효율적인 도메인 특화 언어(domain-specific languages :DSL)이 필요한 경우도 있다.CSS, 정규표현식, XML, Gradle 또는 Rake 빌드파일, React JSX 등도 모두 DSL이라 부를 수 있다.이번 챕터는 DSL을 사용하는 방법이 아니라 DSL을 설계하는 방법을 살펴본다. DSL의 타입과 특징외부 DSL vs 내부 DSL외부 DSL은 자유도가 높지만 DSL을 파싱하고 처리할 파서를 만들어야 한다.내부 또는 임베디드 DSL은 언어의 컴파일러와 툴들이 파서의 역할을 해주지만, 자연스럼과 표현력을 확보하기 위한 노력이 필요하다. 컨텍스트 주도와 유창성DSL은 컨텍스트 주도적이고..

함수 확장 코틀린의 Function은 andThen() 메소드를 가지고 있지 않지만, 인젝트해서 사용할 수 있다. fun ((T) -> R).andThen(next: (R) -> U): (T) -> U = { input: T -> next(this(input)) } fun increment(number: Int): Double = number + 1.toDouble() fun double(number: Double) = number * 2 val incrementAndDouble = ::increment.andThen(::double) println(incrementAndDouble(5)) //12.0 ::구문을 이용한 increment()의 참조에 andThen() 메소드를 호추랬고, double() ..

연산자 오버로딩 코틀린에서는 +, -, * 같은 연산자를 오버로딩해서 숫자 타입 뿐만 아니라 객체에도 사용할 수 있다. operator fun Pair.plus(other: Pair) = Pair(first + other.first, second + other.second) 연산자를 오버로딩하기 위해서 함수는 operator 키워드로 정의되어 있어야 한다. 연산자와 대응하는 메소드 이름은 아래 표와 같다. 연산자 대응하는 메소드 주의사항 +x x.unaryPlus() -x x.unaryMinus() !x x.not() x + y x.plus(y) x - y x.minus(y) x * y x.times(y) x / y x.div(y) x % y x.rem(y) ++x x.inc() x는 할당 가능해야 함 ..