불변 클래스란 불변 클래스란 그 인스턴스의 내부 값을 수정할 수 없는 클래스를 말한다. 클래스는 꼭 필요한 경우가 아니라면 반드시 불변이어야 한다. 불변 클래스가 가변 클래스보다 무수히 많은 장점들을 갖고 있기 때문이다. 불변 클래스의 예시 ex. Java에서 String, BigInteger, BigDecimal, 기본 타입의 박싱된 클래스(Integer, Double, Long 등) 클래스를 불변으로 만들고 싶다면 1. 객체의 상태를 변경하는 메서드를 제공하지 않는다. 2. 클래스를 확장할 수 없도록 한다. 3. 모든 필드를 final로 선언한다. 4. 모든 필드를 private으로 선언한다. 5. 자신 외엔 내부의 가변적인 컴포넌트에 접근할 수 없도록 한다. (생성자, 접근자, readObject ..
단위 테스트는 얼마나 격리되어야 하나요? 올해 새로운 토이 프로젝트에 TDD를 처음으로 적용해봤는데요. 테스트 코드를 짜던 와중에 과연 이 코드가 단위 테스트의 개념에 잘 부합하고 있는지 궁금해지기 시작했습니다. 대충 여러 자료를 찾아보니 대체로 모든 글에서 단위 테스트를 아래의 개념으로 설명하고 있었습니다.단위 테스트란 상대적으로 격리된 방식으로 코드의 구별된 단위를 테스트하는 것 😥.. 단위 테스트의 개념은 정말 애매하지 않나요?구별된 단위란 함수일까요, 아니면 클래스를 말하는 걸까요?테스트 대상을 대체 얼마나 격리해서 테스트해야 할까요?저는 단위 테스트를 작성하며 이 두 가지의 모호한 개념을 이렇게 인식했습니다. 1. 구별된 단위Spring Boot 기반 서버에서 Service Layer의 각 메..
Object.clone 메소드 알아보기 Object.clone: Cloneable 인터페이스의 구현 클래스 인스턴스들을 복사할 때 사용하는 메소드입니다. Object.clone 메서드의 선언부는 다음과 같습니다. public class Object { ... protected native Object clone() throws CloneNotSupportedException { ... } ... } clone을 호출하면 복사 대상 객체의 필드들을 하나하나 복사한 객체를 반환합니다. 만일 Cloneable 인터페이스를 상속하지 않은 클래스에서 clone을 호출하면 CloneNotSupportedException 예외를 던집니다. Object (Java Platform SE 8 ) Called by the ..
사전에 의존하고 있는 맞춤법 검사기를 자바 클래스로 한 번 구현해봅시다. 정적 유틸리티를 사용한 첫 번째 예시 public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker() {} // 객체 생성 방지 public static boolean isValid(String word) { ... } public List suggestions(String type) { ... } } 싱글턴을 사용한 두 번째 예시 public class SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker(...) {} publ..
무중단 배포(Heterogeneous deployments)란 무중단 배포란 두 개 이상의 인프라 환경을 사용해 애플리케이션을 배포하는 것 Heterogeneous deployments를 구축하는 방법에는 2가지의 종류가 있습니다. 1. 멀티 클라우드: 여러 클라우드 환경을 사용하기 2. 하이브리드(public-private 클라우드): 온프레미스 환경과 클라우드 환경을 함께 사용하기 이번 게시글에서는 쿠버네티스를 활용하여 Heterogeneous deployments를 구축할 예정입니다 :) 우리가 이번 글에서 사용할 deployment 객체를 먼저 자세히 살펴보도록 하겠습니다. kubectl explain 해당 쿠버네티스 객체의 내부 구조와 그에 대한 설명을 확인할 수 있습니다. -- recursiv..
쿠버네티스란? 여러 컨테이너 클러스터를 쉽게 다룰 수 있도록 도와주는 오케스트레이션 플랫폼 사실 도커 컨테이너를 관리할 수 있는 오케스트레이션 플랫폼은 여러 가지가 있습니다. 그러나 그 중에서도 쿠버네티스가 급부상한 이유는 다음과 같은 이점을 갖고 있기 때문입니다. 1. Load balancing(부하 분산) 들어오는 트래픽을 여러 가상 머신 인스턴스로 분산시켜주는 컴퓨터 네트워크 기법을 제공합니다. 특징 애플리케이션을 확장할 수 있습니다. 더 높은 트래픽을 지원합니다. 비정상적인 인스턴스를 감지해 자동으로 삭제합니다. 트래픽을 가장 가까운 가상 머신으로 라우팅합니다. 2. Node pools 클러스터 내에서 구성이 모두 동일한 노드 그룹을 말합니다. 여기서 말하는 '노드'란 컨테이너화된 가상 서버를 말..
- Total
- Today
- Yesterday
- linuxawk
- 백준27211
- 버추억박스에러
- Baekjoon27211
- 코테
- 쇼미더코드
- 사용자ID
- Linux
- GithubAPI
- E_FAIL
- linuxtouch
- api문서
- awk프로그램
- virtualbox
- cron시스템
- atq
- cat
- 리눅스
- 리눅스cron
- GitHubAPIforJava
- whatis
- SELECT #SELECTFROM #WHERE #ORDERBY #GROUPBY #HAVING #EXISTS #NOTEXISTS #UNION #MINUS #INTERSECTION #SQL #SQLPLUS
- 백준27219
- 백준
- Baekjoon27219
- OnActivityForResult
- 버추억박스오류
- baekjoon
- linuxgedit
- linux파일
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |