✍🏻study

    코루틴이란?

    그동안 멈춰왔던, 글쓰기를 시작해보려고 합니다.현재 내가 쓰는 언어인 kotlin에 대해서 좀 더 알아보고, 공부할 수 있는 시간을 가져보겠습니다.kotlin docs에 있는 코루틴에 관한 내용 번역과 제가 공부한 내용들을 정리해보겠습니다. 코루틴이란?코루틴은 suspendable computation이다. 개념적으로 쓰레드와 비슷하다. 나머지 코드를 실행시키는 동시에, 코루틴에서 로직을 실행시킨다는 점에서 비슷히다. 하지만, 코루틴은 특정 쓰레드에 국한되지 않는다. 한 쓰레드에서 실행을 멈추고 다른 쓰레드에서 실행을 시킬 수 있다.코루틴을 경량의 쓰레드로 생각할 수 있다. 하지만, 실제 사용에서 쓰레드와 매우 다르게 만드는 중요한 차이점이 몇 가지 있다.여기서 suspendable computation..

    Auto Commit 오해

    Auto Commit 오해

    글을 쓰게 된 계기 다른 팀원의 auto commit에 관한 발표를 듣고 궁금한 점이 생겼다. Application 단에서, hikariCP의 auto commit 설정을 false로 하면, 디비에 요청시에, auto commit을 set하는 쿼리들이 날아가지 더 이상 날라가지 않아, DB 부하를 줄일 수 있고, DB 커넥션을 얻는 시간을 지연 시켜, 자원을 효율적으로 사용할 수 있다는 발표였다. 여기서 나는 궁금증이 생겼다. HikcariCP의 auto commit 설정을 false로 하면, 트랜잭션의 auto commit 설정은 DB의 설정을 따라갈 것이다. 그래서, 우리 회사의 경우에는 auto commit이 true로 되어 있기에, 해당 transaction의 auto commit이 true가 설..

    이터레이터 패턴이란❓

    이터레이터 패턴이란❓

    이터레이터 패턴 행동 패턴이란?🤔 어떤 처리의 책임을 어느 객체에 할당하는 것이 좋은지, 알고리즘은 어느 객체에 정의하는 것이 좋은지 다루는 패턴. 이터레이터 패턴이란?🤔 집합 객체를 순회하는 패턴 집합 객체의 "내부 구조"를 "노출시키지 않고", 순회하는 방법을 제공하는 패턴. 내부 구조를 들어내지 않고 클라이언트가 요소들을 순회할 수 있도록 한다. 집합 객체를 순회는 클라이언트 코드를 변경하지 않고 다양한 순회 방법을 제공할 수 있다. 집합 객체를 순회하는 다양한 방법을 지원하고 싶을 때 - 트리를 순회 방법.(ex. 중위 순회, 전위 순회, 후위 순회) - 객체의 특성에 따라 원하는 대로 Iterator를 구현하여, 순회 가능 Aggregate: 집합체를 의미하는 인터페이스. Iterator를 만들..

    브릿지 패턴이란❓

    브릿지 패턴이란❓

    구조 패턴이란❓ 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴. 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나, 객체들을 서로 묶어 새로운 기능을 제공하는 패턴 구조 패턴 특징✌️ 서로 독립적으로 개발한 클래스 라이브러리를 마치 하나인 것처럼 사용할 수 있다. 여러 인터페이스를 “합성”하여 서로 다른 인터페이스들의 통일된 추상을 제공한다. 인터페이스나 구현을 복합하는 것이 아니라 객체를 "합성”하는 방법을 재공한다. 브릿지 패턴이란❓ 추상적인 것과 구체적인 것을 분리하여 연결하는 패턴이다. 여기서 연결이라는 표현이 브릿지를 의미한다. 추상적인 것과 구체적인 것을 구분짓는 것에 집중을 해야된다. client : abstraction을 사용하는 코드 abstrac..

    Sync vs Async, blocking vs non-blocking

    잡아 놓고 가면 좋은 개념일 거 같아서 정리를 하려고 한다. Sync, Async를 비교하고, blocking, non-blocking을 비교한 후, 두 개의 조합에 대해서 비교를 하겠다. 알아보기 이전에 용어에 대해서 알아보면 좋을 거 같다. 1. 제어권 - 제어권은 자신의 코드를 실행할 권리 같은 것이다. 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려준다. blocking, non-blocking을 설명할 때 사용할 용어이다. 2. 결과값을 기다린다 - A 함수에서 B 함수를 호출했을 때, A 함수가 B 함수의 결과값을 기다리느냐의 여부를 의미한다. Blocking과 Non-Blocking A 함수가 B 함수를 호출했을 때, "제어권"을 어떻게 처리하느냐에 따라서..