규칙 30: 상수 대신 enum을 사용해라.Enumerated type은 고정 개수의 상수들로 값이 구성되는 자료형이다. Java의 enum 자료형과 비슷하지만 다른 언어들보다 강력하다. 다른 언어들의 enum은 결국 int값이다.Enum 자료형은 실질적으로 final로 선언된 것이나 마찬가지여서 안전하다.Enum 상수에 데이터를 넣으려면 객체 필드를 선언하고 생성자를 통해 받은 데이터를 그 필드에 저장하면 된다.모든 enum 상수를 선언된 순서대로 저장하는 배열을 반환하는 static values 메서드가 기본으로 정의되어 있음에 주의하자.Enum 자료형에 상수별 class body 안에서 실제 메서드로 재정의할 수 있다.public enum Operation { PLUS(“+”) {double app..
용어예형인자 자료형(parameterized type)List실 형인자(actual type parameter)String제네릭 자료형(generic type)List형식 형인자(formal type parameter)E비한정적 와일드카드 자료형(unbounded wildcard type)List무인자 자료형(raw type)List한정적 형인자(bounded type parameter)재귀적 형 한정(recursive type bound)>한정적 와일드카드 자료형(bounded wildcard type)List제네릭 메서드(generic method)Static List asList(E[] a)자료형 토큰(type token)String.class규칙23: 새 코드에는 무인자 제네릭 자료형을 사용하지..
규칙 13: 클래스와 멤버의 접근 권한은 최소화하라.정보 은닉과 캡슐화를 통해 모듈의 재사용성을 높이고 병렬적인 개발을 가능하게 하자. 그것의 기초는 각 클래스와 멤버는 가능한 한 접근 불가능하도록 만드는 것이다. 1. 객체 필드는 절대로 public으로 선언하면 안 된다. 필드에 저장될 값을 제한할 수 없고 다중 스레드에 안전하지 않다.2. 길이가 0이 아닌 배열은 언제나 변경 가능하므로 배열 필드를 반환하는 접근자를 정의하면 안 된다. 규칙 14: public 클래스 안에는 public 필드를 두지 말고 접근자 메서드를 사용하라. 규칙 15: 변경 가능성을 최소화해라.변경 불가능 클래스를 지향해라. 아래의 다섯 규칙을 따르면 된다.객체 상태를 변경하는 메서드를 제공하지 않는다.상속할 수..
0. 들어가며면접 준비를 하면서 큰 도움을 주셨던 분께서 강력 추천해주셨던! 책인 Effective Java를 읽어보려고 합니다. 항상 그렇지만 읽기만 하는 것은 휘발성이 강하므로 글로 열심히 남겨서 정리할 예정입니다 :) 2장 객체의 생성과 삭제규칙1: 생성자 대신 정적 팩토리 메소드를 사용할 수 없는지 생각해보라정적 팩토리 메소드장점a) 생성자와는 달리 정적 팩토리 메소드에는 이름이 있다.b) 생성자와는 달리 호출할 때마다 새로운 객체를 생성할 필요는 없다.c) 생성자와는 달리 반환값 자료형의 하위 자료형 객체를 반환할 수 있다.d) 형인자 자료형(parametized type) 객체를 만들 때 편하다. (kotlin과 연관성)단점a) public이나 protected로 ..
본 내용은 real MySQL 책을 참조하여 쓰여졌습니다! 1. 트랜잭션 트랜잭션의 기본 개념에 대해서는 다음 블로그를 참조해주세요! 이 글은 트랜잭션에 대해 이미 이해하고 있음을 가정하고 있습니다.https://mangkyu.tistory.com/50 [Spring] Transaction(트랜잭션)이란?오늘은 단일 쿼리로는 해결할 수 없는 로직을 처리할 때 필요한 개념인 트랜잭션에 대해 알아보고, Spring에서 어떻게 활용하는지 확인해보도록 하겠습니다. 1. Transaction(트랜잭션)이란? [ Transactionmangkyu.tistory.com 트랜잭션의 경우 InnoDB 스토리지 엔진은 지원하지만 MyISAM이나 MEMORY는 지원하지 않습니다. 트랜잭션은 꼭 여러 쿼리가 조합되..
본 내용은 real MySQL 책을 참조하여 쓰여졌습니다! 1. 기본 아키텍쳐 크게 MySQL 엔진과 스토리지 엔진으로 구분할 수 있습니다. MySQL 엔진: 1) 커넥션 핸들러: 클라이언트의 접속 및 쿼리 요청을 처리2) SQL 파서: 클라이언트가 요청한 쿼리를 MySQL이 인식할 수 있는 단위 (토큰)로 분리해 트리형태 구조로 파싱3) 전처리기: 파서 트리 내 토큰과 개체(컬럼명, 내장함수, 객체 접근권한)를 비교해 쿼리 문장의 구조적 오류 확인.4) 옵티마이저: 쿼리의 최적화된 실행방법을 탐색. 클라이언트가 요청한 쿼리에 대해 최적(최저비용)의 처리경로(방법)을 결정하는 DBMS 내부의 핵심엔진 스토리지 엔진(=핸들러) - 실제 데이터를 디스크 스토리지에 저장하거나 디스크..