본문 바로가기
728x90

전체 글249

3장 - 중단은 어떻게 작동할까? 중단 함수는 코틀린 코루틴의 핵심이다. 코루틴은 중단되었을 때 Continuation 객체를 반환한다. 중단했을 때 어떤 자원도 사용하지 않는다 실행이 중지 되어있을 때 스레드를 차지하지 않아 다른 작업에 스레드를 할당할 수 있다는 뜻. delay - 중단 코루틴의 실행을 지정된 시간 동안 일시적으로 중단하는 데 사용된다. delay(timeInMillis) 함수는 매개변수(ms) 단위로 현재 코루틴을 중단하며 시간이 지나면 자동으로 다시 시작된다. 비블로킹 특성을 가진다. 스레드를 차단하지 않는다. 코루틴은 일시 중단되지만, 그 로쿠틴이 실행되고 있던 스레드는 다른 작업을 계속 수행할 수 있다. 지정된 시간이 지난 후에는 중단되었던 지점에서 실행을 재개하는데, 이과정은 코루틴의 컨티뉴에이션 매커니즘을 .. 2024. 1. 13.
2장 - 시퀀스 빌더 코틀린 시퀀스는 데이터를 연속적으로 처리하는 데 사용되는 컬렉션 타입 중 하나 요구되는 연산을 최소한으로 수행 무한정이 될 수 있음 메모리 사용이 효율 시퀀스 좀 알고 갈까 리스트를 사용할 경우 val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val result = mutableListOf() for (number in numbers) { if (number % 2 == 0) { val squared = number * number result.add(squared) } } println(result) // [4, 16, 36, 64, 100] 위 코드는 리스트를 사용하여 짝수를 찾고 제곱한 값을 구합니다. 중간 결과를 담을 result 리스트를 생성하고, 반.. 2024. 1. 13.
1장 - 코틀린 코루틴을 배워야 하는 이유 스레드 사용의 비용: 스레드를 사용하는 데는 자원이 많이 소모된다. 스레드는 운영 체제 수준에서 관리되며, 스레드를 생성하고 관리하는 데 필요한 오버헤드가 존재한다. 자바에서 Thread.sleep의 비용: Thread.sleep() 을 사용하면 해당 스레드는 정해진 시간 동안 실행을 멈추고 다른 스레드가 실행될 수 있게 한다. 이 과정에서도 스레드는 계속 자원을 점유하고 있으며, 컨텍스트 스위칭에도 비용이 발생한다. 코루틴의 중단과 재개: 코루틴은 스레드와 다르게 작동한다. 필요에 따라 실행을 중단(suspend)하고, 재개(resume)할 수 있다. 이 과정에서 코루틴은 스데르를 잠들게 하지 않고, 실행 중인 스레드를 활용하여 다른 작업으로 전환할 수 있다. 이러한 특성으로 인하여 컨텍스트 비용을 줄.. 2024. 1. 13.
개발자를 위한 레디스 - 1 String 키:값 저장시 string 512MB 의 문자열 데이터를 저장할 . 수있으며, 이진 데이터를 포함하는 모든 종류의 문자열이 binary-safe 하게 처리되기 때문에 JPEG 이미지와 같은 바이트 값, HTTP 응답값 등의 다양한 데이터를 저장하는 것도 가능. binary-safe 문자열이란? 데이터 손실없이 null 바이트를 포함한 모든 바이트 시퀀스를 저장, 처리 조작할 수 있는 문자열 처리 방식이다. text, number, binary data 등을 인코딩 걱정 없이 저장할 수 있다는 것을 얘기 list list 에는 최대 42억여 개의 아이템을 저장할 수 있다. sorted Set 스코어에 따라 정렬되는 고유한 문자열의 집합 list 와 sorted set 모두 순서를 갖는 자료 구.. 2023. 11. 28.
from 메서드 to 메서드 from 메서드명: from 메서드명은 일반적으로 DTO에서 도메인 객체로 변환하는 메서드에 사용됩니다. DTO는 데이터 전송을 위해 사용되는 객체이므로, DTO로부터 도메인 객체로 데이터를 매핑할 때 from 메서드를 사용합니다. 예를 들어, UserDTO에서 User 도메인 객체로 변환하는 메서드를 작성할 때 from 메서드명을 사용할 수 있습니다: User.fromDTO(userDTO). to 메서드명: to 메서드명은 일반적으로 도메인 객체에서 DTO로 변환하는 메서드에 사용됩니다. 도메인 객체는 비즈니스 로직을 담고 있으므로, 도메인 객체의 데이터를 DTO로 변환하여 외부로 노출할 때 to 메서드를 사용합니다. 예를 들어, User 도메인 객체에서 UserDTO로 변환하는 메서드를 작성할 때 t.. 2023. 8. 6.
개념 SUT System under test (테스트 하려는 대상) BDD Behaviour driven dvelopment(given - when - then) 테스트를 하려는 순간 어디에 어떻게 넣어야 하지 라는 질문을 마주하게 됩니다. 그때 BDD 가 말한다 "행동에 집중해야 한다" 유저가 시스템을 사용하는 user story 를 강조하고 시나리오를 강조한다. 이를 지키기 위한 뼈대로 다음과 같은 구조로 테스트코드를 추천한다. given - 어떤 상황이 주어졌을 떄 when - 이 행동을 한다면 then - 결과는 이렇다 3A 라고 불리기도 함. 상호 작용 테스트 (Interation test) 대상 함수의 구현을 호출하지 않으면서 그 함수가 어떻게 호출되는지를 검증하는 기법(메서드가 실제로 호출됐는지 .. 2023. 7. 4.
요즘 악재가 한번에 몰려온다.feat.벌꿀오소리 건강부터 시작해서 악재가 한번에 몰려왔다. 세상 억까 당하는거 같아서 억울했다. 하지만 난 벌꿀오소리 같은 녀석이니깐 이겨낼것이다. 할 수 있고 해야만 한다.언제나까지 악재만 올 수 없다. 드디어 밑 바닥 까지 다 온거 같다.올라갈 일만 남았다. 난 벌꿀오소리 이니깐!! 2023. 6. 7.
코틀린 Csv file read, file read fun csvReader() { val filePath = "root/file.csv" CSVReaderBuilder(FileReader(filePath)).build().use { reader -> //필요 작업.. } } import java.io.BufferedReader import java.io.File import java.io.FileReader fun main() { val file = File("root") val reader = BufferedReader(FileReader(file, Charsets.UTF_8)) reader.lines().forEach { println(it) } } - 스트림을 사용해도될듯..취향차이.. 2023. 5. 19.
스프링배치 - Flow FlowJob 기본개념 Step 을 순차적으로만 구성하는 것이 아닌 특정한 상태에 따라 흐름을 전환하도록 구성할 수 있으며 FlowJobBuilder 에 의해 생성된다. Step 이 실패 하더라도 Job 은 실패로 끝나지 않도록 해야 하는 경우 Step 이 성공 했을 때 다음에 실행해야 할 Step 을 구분해서 실행 해야 하는 경우 특정 Step 은 전혀 실행되지 않게 구성 해야 하는 경우 Flow 와 Job 의 흐름을 구성하는데만 관여하고 실제 비즈니스 로직은 Step 에서 이루어진다. 내부적으로 SimpleFlow 객체를 포함하고 있으며 Job 실행 시 호출한다. 배치 상태 유형 BatchStatus JobExecution 과 StepExeccution 의 속성으로 Job 과 Step 의 종료 후 최.. 2023. 4. 13.
728x90