Sequence Sequence란 Kotlin에서 제공하는 기본 Collection으로 Java의 Stream에 대응되는 기능입니다. Sequence는 Iterable과 같은 기능을 제공하고 있지만 복잡한 연산이나 많은 단계의 연산을 수행할때 좀 더 향상된 성능을 제공해줍니다. Sequence vs Iterable 연산 처리 방식 Sequence는 하나의 요소마다 지정한 연산을 모두 적용 Iterable은 요소 전체에 지정한 연산을 모두 적용 Sequence는 연산에 대해 Lazy Evaluation(지연 계산)으로 처리하지만 Iterable은 Eager Evaluation(즉시 계산)으로 처리합니다. Lazy Evaluation (지연 계산) Lazy Evaluation(지연 계산) 이란 결과가 필요한..
회사에서 개발을 하던 중에 문득 컴마(,) 가 눈에 들어왔는데 눈에 들어온 이유는 아래와 같이 사용이 되고 있어서였다. class StudentService( private studentRepository: StudentRepository, ) --- data class StudentDto( val name: String, val age: Int, ) 이렇게 보면 뭐가 이상하지??🤔 싶을수도 있다. 자세히 보면 StudentDto의 val age:Int 부분 마지막에 컴마(,) 가 붙어 있는것을 볼 수 있다. 가장 처음 든 생각은 이건 컴파일 에러아닌가?? 왜 인텔리제이가 오류로 잡아 내지 않을까 하는 의문이었다. 알고보니 코틀린 1.4 버전 이상부터는 컴마(,) 를 마지막 아규먼트, 마지막 파라미터, ..
코틀린(Kotlin) 답지 않은 문법 사용 팀원분에게 코드리뷰를 받으면서 내 코드가 코틀린(Kotlin)스럽지 않은 부분이 있다고 깨달은 부분이 있다. 일단 기존의 코드를 먼저 보자. fun findAll(): List { val couponList = couponRepository.findAll() return couponList.stream() .map { CouponDto.fromEntity(it) } .collect(Collectors.toList()) } 위 코드의 return 부분을 살펴보자. 아마 바로 이상함을 느꼈을 수도 있고 아무런 이상함을 느끼지 못하셨을 수도 있다. 나는 별다른 이상함을 느끼지 못하고 사용하고 있던 코드였다. 그런 어떤 부분이 코틀린스럽지 못한 부분이었을까?? 바로 s..
인텔리제이에서 코드를 작성하다보면 같은 단어를 한번에 수정하게 되는 경우가 종종있습니다. 이럴때 유용하게 사용할 수 있는 단축키를 소개합니다. 1. 같은 단어 일괄 선택 (Multiple selection) 단축키 : ⌘⇧G (Command + Control + G) 실행 순서 변경하고 싶은 단어에 커서를 이동시킨다 ⌘ ⇧ G 단축키를 누른다 변경하고 싶은 단어를 입력한다 단어 변경이 완료되면 esc를 누른다. 2. 같은 단어 연속적으로 선택 (Consecutive Multiple selection) 단축키 : ⌘G (Command + G) 실행 순서 변경하고 싶은 단어에 커서를 이동시킨다 ⌘ G 를 통해 변경할 단어들을 선택한다. 변경하고 싶은 단어를 입력한다. 단어 변경이 완료되면 esc를 누른다. ..
가변성과 읽기 전용 프로퍼티 코틀린을 처음 공부하다보니 가변성, 읽기 전용 프로퍼티라는 키워드를 많이 보게되는데 계속 보다보니 점점 더 헷갈려서 한번 정리를 해보려고 합니다. 이번 글에서 정리할 내용은 크게 3가지입니다. 1. 읽기 전용 프로퍼티(val) vs 가변 프로퍼티(var) 2. 읽기 전용 컬렉션(List) vs 가변 컬렉션(MutableList) 3. 1번 2번을 같이 사용할 때 읽기 전용 프로퍼티(val) vs 가변 프로퍼티(var) 코틀린을 조금이라도 사용해보았다면 val, var을 사용해 보았을 거다. val, var의 간단한 특징은 아래와 같다. val: 읽기 전용 프로퍼티, 값을 할당하면 변경이 불가능하다, 값(Value)의 약자 var: 가변 프로퍼티, 값을 할당한 후에도 변경이 가..
해당 글은 Intellij 에서 Kotlin을 Java 언어로 간단하게 Decompile 하는 방법을 설명하는 글 입니다. 이 글 추천 대상 해당 글은 Java에서 Kotlin으로 넘어간 경우에 추천드립니다. 저의 경우 Java언어를 조금 사용하다가 Kotlin으로 넘어간 케이스입니다. 저와 같은 케이스의 경우에 초반에는 Java언어가 좀 더 익숙하기 때문에 Kotlin언어를 공부하실때 Java언어로 변환해보면서 공부를 하시면 많은 도움을 받을 수 있을것 같아요. 때로는 길고 자세한 설명 글보다 한 줄의 코드가 이해가 쉽고 도움이 되는 경우도 있으니까요. Kotlin → Java 변환 변환 방법 Tool → Kotlin → Show Kotlin Bytecode → Decompile 먼저 변환이 잘 되는지..
개발을 하다 보니 Security 인증 후에 로그인 한 객체의 정보가 필요한 경우가 발생했습니다. SpringBoot에서 Security 인증 후에 로그인 한 객체의 정보를 가져오고 싶다면 어떻게 해야 할까요?? 1. SecurityContextHolder 로 직접 가져오기 인증 후 로그인한 객체의 정보를 가져오기 위해서는 객체의 정보가 어디에 저장되는지를 알아야 한다. 아래 그림을 보면 Security의 객체 정보는 SecurityContextHolder 내부에 들어 있다. 그러면 SecurityContextHolder 구조를 한번 살펴보자. SecurityContextHolder 는 시큐리티가 인증한 내용들을 가지고 있으며, SecurityContext 를 포함하고 있고 SecurityContext를..
트랜잭션 특성 ACID A(Atomicity) 원자성 DBMS는 수행 중인 트랜잭션에서 데이터를 일부만 변경하고 나머지는 수행하지 않은 채 커밋 할 수 없습니다. C(Consistency) 일관성 트랜잭션에 의해 데이터 간의 일관성이 어긋나서는 안된다. I(Isolation) 고립성 트랜잭션끼리는 고립되고 독립되어 있다 D(Durability) 지속성 커밋한 트랜잭션은 장애가 발생하더라도 데이터는 반드시 복구되어야 한다 데이터베이스의 중요한 특징인 커밋한 데이터를 지키는 특성을 구현하기 위해서는 로그(변경 로그)를 채용하여 성능과 지속성을 양립시킵니다. REDO로그에 데이터를 한꺼번에 기록하는 것으로 I/O의 횟수가 줄어들고, 시퀀셜 액세스를 사용하여 I/O에 소모되는 시간을 줄였기 때문입니다. 또한 I..
- Total
- Today
- Yesterday
- test
- datasource
- trailing comma
- assertj
- A레코드
- Mockito
- JUnit5
- spring data jpa
- Spring
- mockito-kotlin
- 클린 아키텍처
- 시나리오 테스트
- mockK
- asSequence
- scenario test
- AWS INDUSTRY WEEK
- WrongTypeOfReturnValue
- prinicipal
- kotlin
- ExitStatus
- Parameterized
- GSLB
- Collection
- Spring Batch
- meta-data
- autoconfigure
- java
- BatchStatus
- Stream
- IntelliJ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |