독서
-
도커 볼륨 : 도커 이미지는 어떠한 경우로도 변경되지 않으며, 컨테이너 계층에 원래 이미지에서 변경된 파일시스템 등을 저장합니다. 이미지에 mysql을 실행하는 데 필요한 애플리케이션 파일이 들어있다면 컨테이너 계층에는 로그인 정보나 게시글 등과 같이 데이터베이스를 운용하면서 쌓이는 데이터가 저장됩니다. 그러나 mysql 컨테이너를 삭제하면 컨테이너 계층에 저장돼 있던 데이터베이스의 정보도 삭제된다는 점인데, 도커의 컨테이너는 생성과 삭제가 매우 쉽습니다. 이를 방지하기 위해 컨테이너의 데이터를 영속적 데이터로 활용할 수 있는 방법이 몇 가지 있는데, 가장 활용하기 쉬운 방법이 바로 볼륨을 활용하는 것입니다. 방법이 여러 가지 있는데 알아서 알아보아요. 1. 호스트 볼륨 공유 mysql 데이터베이스 컨테..
2. 도커 볼륨 & 도커 네트워크도커 볼륨 : 도커 이미지는 어떠한 경우로도 변경되지 않으며, 컨테이너 계층에 원래 이미지에서 변경된 파일시스템 등을 저장합니다. 이미지에 mysql을 실행하는 데 필요한 애플리케이션 파일이 들어있다면 컨테이너 계층에는 로그인 정보나 게시글 등과 같이 데이터베이스를 운용하면서 쌓이는 데이터가 저장됩니다. 그러나 mysql 컨테이너를 삭제하면 컨테이너 계층에 저장돼 있던 데이터베이스의 정보도 삭제된다는 점인데, 도커의 컨테이너는 생성과 삭제가 매우 쉽습니다. 이를 방지하기 위해 컨테이너의 데이터를 영속적 데이터로 활용할 수 있는 방법이 몇 가지 있는데, 가장 활용하기 쉬운 방법이 바로 볼륨을 활용하는 것입니다. 방법이 여러 가지 있는데 알아서 알아보아요. 1. 호스트 볼륨 공유 mysql 데이터베이스 컨테..
2023.11.28 -
도커 : 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트 Go 언어로 작성되어 있고. 도커 엔진은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 주 프로젝트이기 때문이다. 기존의 가상화 기술은 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었다. 이러한 여래 개의 운영체제는 가상 머신이라는 단위로 구별되고, 각 가상 머신에는 우분투, CentOs 등의 운영체제가 설치되어 사용됩니다. 각 게스트 운영체제는 다른 게스트 운영체제와는 달리 완전히 독립된 공간과 시스템 자원을 할당받아 사용합니다. 이러한 가상화 방식을 사용할 수 있는 대표적..
1. 도커도커 : 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트 Go 언어로 작성되어 있고. 도커 엔진은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 주 프로젝트이기 때문이다. 기존의 가상화 기술은 하이퍼바이저를 이용해 여러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었다. 이러한 여래 개의 운영체제는 가상 머신이라는 단위로 구별되고, 각 가상 머신에는 우분투, CentOs 등의 운영체제가 설치되어 사용됩니다. 각 게스트 운영체제는 다른 게스트 운영체제와는 달리 완전히 독립된 공간과 시스템 자원을 할당받아 사용합니다. 이러한 가상화 방식을 사용할 수 있는 대표적..
2023.11.24 -
step42: 익명 클래스보다는 람다를 사용하라 예전에는 자바에서 함수 타입을 표현할 때 추상 메서드를 하나만 담은 인터페이스를 사용했다. 이런 인터페이스의 인스턴스를 함수 객체라고 하여, 특정 함수나 동작을 나타내는데 사용했다. JDK 1.1이 등장하며, 함수 객체를 만드는 주요 수단은 익명 클래스가 되었다. 지금은 함수형 인터페이스라 부르는 이 인터페이스들의 인스턴스를 람다식을 사용해 만들 수 있게 된 것이다. 타입을 명시해야 코드가 더 명활할 때만 제외하고는, 람다의 모든 매개변수 타입은 생략하자. 익명 클래스 : 프로그램에서 일시적으로 한번만 사용되고 버려지는 객체 사용 이유? - 프로그램 내에서 일시적으로 한번만 사용하거나 재사용성이 없고 확장성을 활용하는 것이 유지보수에서 더 불리할 때 Col..
CH6 람다와 스트림step42: 익명 클래스보다는 람다를 사용하라 예전에는 자바에서 함수 타입을 표현할 때 추상 메서드를 하나만 담은 인터페이스를 사용했다. 이런 인터페이스의 인스턴스를 함수 객체라고 하여, 특정 함수나 동작을 나타내는데 사용했다. JDK 1.1이 등장하며, 함수 객체를 만드는 주요 수단은 익명 클래스가 되었다. 지금은 함수형 인터페이스라 부르는 이 인터페이스들의 인스턴스를 람다식을 사용해 만들 수 있게 된 것이다. 타입을 명시해야 코드가 더 명활할 때만 제외하고는, 람다의 모든 매개변수 타입은 생략하자. 익명 클래스 : 프로그램에서 일시적으로 한번만 사용되고 버려지는 객체 사용 이유? - 프로그램 내에서 일시적으로 한번만 사용하거나 재사용성이 없고 확장성을 활용하는 것이 유지보수에서 더 불리할 때 Col..
2023.05.15 -
step34: int 상수 대신 열거 타입을 사용하라 열거 타입은 일정 개수의 상수 값을 정의한 다음, 그 외의 값은 허용하지 않는 타입이다. 정수 열거 패턴기법에는 단점이 많은데, 타입 안전을 보자할 방법이 없으며 표현력도 좋지 않다. 정수 열거 패턴을 사용한 프로그램은 깨지기 쉽다. 평범한 상수를 나열한 것뿐이라 컴파일하면 그 값이 클라이언트 파일에 그대로 새겨진다. 따라서 상수의 값이 바뀌면 클라이언트도 반드시 다시 컴파일해야 한다. 다시 컴파일하지 않은 클라이언트는 실행이 되더라도 엉뚱하게 동작할 것이다. 정수 대신 문자열 상수를 사용하는 변형 패턴도 있다. 문자열 열거 패턴 이라 하는 이 번형은 도 나쁘다. 상수의 의미를 출력할 수 있다는 점은 좋지만, 경험이 부족한 프로그래머사 문자열 상수의 ..
CH05 열거 타입과 애너테이션step34: int 상수 대신 열거 타입을 사용하라 열거 타입은 일정 개수의 상수 값을 정의한 다음, 그 외의 값은 허용하지 않는 타입이다. 정수 열거 패턴기법에는 단점이 많은데, 타입 안전을 보자할 방법이 없으며 표현력도 좋지 않다. 정수 열거 패턴을 사용한 프로그램은 깨지기 쉽다. 평범한 상수를 나열한 것뿐이라 컴파일하면 그 값이 클라이언트 파일에 그대로 새겨진다. 따라서 상수의 값이 바뀌면 클라이언트도 반드시 다시 컴파일해야 한다. 다시 컴파일하지 않은 클라이언트는 실행이 되더라도 엉뚱하게 동작할 것이다. 정수 대신 문자열 상수를 사용하는 변형 패턴도 있다. 문자열 열거 패턴 이라 하는 이 번형은 도 나쁘다. 상수의 의미를 출력할 수 있다는 점은 좋지만, 경험이 부족한 프로그래머사 문자열 상수의 ..
2023.05.05 -
step26: Raw 타입은 사용하지 말라 클래스와 인터페이스 선언에 타입 매개변수가 쓰이면, 이를 제네릭 클래스 혹은 제네릭 인터페이스라 한다. 각각의 제네릭 타입은 일련의 매개변수화 타입을 정의한다. 먼저 클래스 이름이 나오고, 이어서 꺾쇠괄호 안에 실제 타입 매개변수들을 나열한다. List은 원소의 타입이 String인 리스트를 뜻하는 매개변수화 타입이다. 여기서 String이 정규 타입 매개변수 E에 해당하는 실제 타입 매개변수다. 마지막으로, 제네릭 타입을 하나 정의하면 그에 딸린 로 타입(raw type)도 함께 정의된다. 로 타입이란 제네릭 타입에서 타입 매개변수를 전혀 사용하지 않은 때를 말한다. 예로 List의 Raw type은 List다. Raw type을 쓰면 제네릭이 안겨주는 안전..
CH04 제네릭step26: Raw 타입은 사용하지 말라 클래스와 인터페이스 선언에 타입 매개변수가 쓰이면, 이를 제네릭 클래스 혹은 제네릭 인터페이스라 한다. 각각의 제네릭 타입은 일련의 매개변수화 타입을 정의한다. 먼저 클래스 이름이 나오고, 이어서 꺾쇠괄호 안에 실제 타입 매개변수들을 나열한다. List은 원소의 타입이 String인 리스트를 뜻하는 매개변수화 타입이다. 여기서 String이 정규 타입 매개변수 E에 해당하는 실제 타입 매개변수다. 마지막으로, 제네릭 타입을 하나 정의하면 그에 딸린 로 타입(raw type)도 함께 정의된다. 로 타입이란 제네릭 타입에서 타입 매개변수를 전혀 사용하지 않은 때를 말한다. 예로 List의 Raw type은 List다. Raw type을 쓰면 제네릭이 안겨주는 안전..
2023.05.02 -
step10: equals는 일반 규약을 지켜 재정의하라 equals를 재정의 하지 않아도 되는 경우 1st 각 인스턴스가 본질적으로 고유한 경우 - 값이 아닌 동작을 표현하는 클래스의 경우 - Thread 2nd 인스턴스의 논리적 동치성을 검사할 일이 없는 경우 3rd 상위 클래스에서 재정의한 equlas가 하위 클래스에서도 적용 되는 경우 - Set, Map, List의 경우 4th 클래스가 private 이거나, package-private여서 equals를 호출할 일이 없는 경우 5th 싱글턴을 보장하는 클래스 (인스턴스 통제 클래스, Enum인 경우) - 객체간 동등성, 동일성이 보장 equals를 재정의 하는 경우 지켜야 할 규약 equals를 재정의 해야 하는 경우는 객체 동일성을 확인해야 ..
Ch02 모든 객체의 공통 메서드step10: equals는 일반 규약을 지켜 재정의하라 equals를 재정의 하지 않아도 되는 경우 1st 각 인스턴스가 본질적으로 고유한 경우 - 값이 아닌 동작을 표현하는 클래스의 경우 - Thread 2nd 인스턴스의 논리적 동치성을 검사할 일이 없는 경우 3rd 상위 클래스에서 재정의한 equlas가 하위 클래스에서도 적용 되는 경우 - Set, Map, List의 경우 4th 클래스가 private 이거나, package-private여서 equals를 호출할 일이 없는 경우 5th 싱글턴을 보장하는 클래스 (인스턴스 통제 클래스, Enum인 경우) - 객체간 동등성, 동일성이 보장 equals를 재정의 하는 경우 지켜야 할 규약 equals를 재정의 해야 하는 경우는 객체 동일성을 확인해야 ..
2023.04.25