전체 글

CS/SQL

[SQL] 실행 계획(Execution Plan) 보는 방법

실행 계획이 만들어지면 DBMS는 그것을 바탕으로 데이터 접근을 수행한다. 그러나 여러 이유로 인해 SQL 실행이 지연될 수 있다. 이와 같이 지연이 발생했을 때는 가장 먼저 실행 계획을 살펴보아야 한다. 본 포스팅을 통해 간단하게 실행 계획의 핵심구성과 보는 방법에 대해 알아보자. 1. 실행 계획의 핵심구성 실행 계획에서 핵심적으로 봐야 하는 부분은 크게 다음의 3가지로 나뉜다. 1) 조작 대상 객체 SQL 구문이 실행되는 과정에서 수행되는 조작(Operation)의 대상이 되는 객체를 의미한다 테이블 외에 인덱스, 파티션, 시퀀스처럼 SQL 구문으로 조작할 수 있는 객체라면 무엇이라도 올 수 있다 2) 객체에 대한 조작의 종류 SQL 구문이 실행되는 과정에서 수행되는 조작(Operation)이 어떤 ..

프로그래밍 언어/Java + Kotlin

[Java] 제네릭 타입 소거(Generic Type Erasure)에 대해 알아보자

1. 의미타입 소거란 컴파일러가 제네릭 타입의 타입 파라미터 정보를 제거하는 것을 의미한다.즉, 런타임 시점에 제네릭 타입 정보가 제거되는 것이다., ,  → Object> → Comparable1) 클래스 타입 소거// 타입 소거 전 (컴파일 전)public class Stack { private E[] stackContent; public Stack(int capacity) { this.stackContent = (E[]) new Object[capacity]; } public void push(E data) { // .. } public E pop() { // .. }}// 타입 소거 후 (컴파일 후)public class ..

책/Effective Kotlin

[이펙티브 코틀린] 아이템 21: 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어라

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 프로퍼티 위임이란? 1) 의미 다른 객체의 메서드를 활용해서 프로퍼티 접근자(getter와 setter)를 만드는 것 쉽게 말해 다른 객체에게 프로퍼티의 접근 구현을 맡기는 것 2) 효과 일반적인 프로퍼티의 행위를 추출해서 사용할 수 있다 프로퍼티 접근 로직을 재활용하는 데 그 의의가 있다 2. 사용하는 방법 프로퍼티 위임을 사용할 땐 위임을 받은 객체의 메서드 이름이 중요한데, getter는 getValue, setter는 setValue 함수를 이용하여 정의해야 된다. 그리고 객체를 만든 뒤엔 by 키워드를 사용해서 클래스를 연결시켜줘야 한다..

책/Effective Kotlin

[이펙티브 코틀린] 아이템17: 이름 있는 아규먼트를 사용하라

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 책에서는 아규먼트라고 나왔지만, 이름 있는 아규먼트(Named Argument)보다는 이름 있는 파라미터(Named Parameter)가 더 보편적인 표현이므로 본문에서는 해당 단어를 사용하고자 한다(사실 책에서도 혼용해서 사용한다..). 1. 이름 있는 파라미터의 장점 1) 값이 어떤 의미를 지니는지 명확하게 표현할 수 있다 // 각각의 아규먼트가 어떤 의미를 지니는지 불명확함 listOf("John", "Tom", "Paul").joinToString(",", "Class:", "!!") // 보다 명확하게 의미를 파악할 수 있음 listOf("J..

책/Effective Kotlin

[이펙티브 코틀린] 아이템16: 프로퍼티는 동작이 아니라 상태를 나타내야 한다

본문은 Effective Kotlin을 읽고 간단하게 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 1. 코틀린의 프로퍼티 vs 자바의 필드 둘 다 데이터를 저장한다는 공통점이 있지만, 다음과 같은 차이가 있다. 1) 자바 필드는 "데이터" 자체를 의미한다. 데이터를 실제로 저장하거나 접근하기 위해선 getter와 setter를 추가적으로 선언해줘야 한다. 2) 프로퍼티는 개념적으로 접근자를 나타낸다. 추가적으로 프로퍼티는 필드보다 확장된 개념, 즉 프로퍼티 = 필드(Optional) + 접근자이다. val의 경우 getter, var의 경우 getter와 setter를 나타낸다. 이러한 이유로 인터페이스에서도 다음과 같이 프로퍼티를 정의할 수 있다..

코택
TaxFree