일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- redis
- IntellJ
- 토비의 스프링
- 토비의 스프링 정리
- SpringBoot
- K8s
- 스프링
- Stack
- Kotlin
- 보조스트림
- Stream
- Java
- 백준
- 이스티오
- gradle
- Real MySQL
- list
- mysql
- 자바
- GC
- 스트림
- jvm
- 자바 ORM 표준 JPA 프로그래밍
- MSA
- 쿠버네티스
- JPA
- thread
- spring
- Collection
- OS
- Today
- Total
목록Java (58)
인생을 코딩하다.
ArrayDeque란? 위위 사진은 ArrayDeque의 상속, 확장 구조 및 설명이다. 아래 접은 글은 번역이다. 더보기 "Deque 인터페이스의 크기 조정 가능한 어레이 구현. 어레이 데크에는 용량 제한이 없으며 필요에 따라 확장되어 사용량을 지원합니다. 외부 동기화가 없는 경우 여러 스레드에 의한 동시 액세스를 지원하지 않습니다. null 요소는 사용할 수 없습니다. 이 클래스는 스택으로 사용할 때 Stack보다 빠르며, 대기열로 사용할 때는 LinkedList보다 빠릅니다. 대부분의 ArrayDeque 작업은 상각된 상수 시간으로 실행됩니다. 제거, 제거 첫 번째 발생, 제거 마지막 발생, 포함, 반복기.remove() 및 대량 작업은 모두 선형 시간으로 실행됩니다. 이 클래스의 반복기 메서드에 ..
팩토리는 공장을 의미한다. 공장은 물건을 생산하는데 객체 지향에서 팩터리는 객체를 생성한다. 결국 팩터리 메서드는 객체를 생성 반환하는 메서드를 말한다. 여기에 패턴이 붙으면 하위 클래스에서 팩터리 메서드를 오버라이딩 해서 객체를 반환하게 하는 것을 의미한다. package DesignPattern.FactoryMethodPattern; public abstract class Animal { // 추상 팩터리 메서드 abstract AnimalToy getToy(); } package DesignPattern.FactoryMethodPattern; // 팩터리 메서드가 생성할 객체의 상위 클래스 public abstract class AnimalToy { abstract void identify(); }..
일급 컬렉션 이란? Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라 합니다. 간단하게 설명해보겠습니다. Map map = new HashMap(); map.put("1", "the"); map.put("2", "na"); map.put("3", "un"); 위의 코드를 Wrapping하는 것을 이야기 합니다. public class MyCollection { private Map map; public MyCollection(Map map) { this.map = map; } } Wrapping 함으로써 아래와 같은 장점을 가지게 됩니다. 비지니스에 종속적인 자료구조 Collection의 불변성을 보장 상태와 행위를 한 곳에서 관리 이름이 있는 컬렉션 비지..
프록시는 대리자, 대변인이라는 뜻을 가진 언어다. 프록시 패턴프록시 패턴(Proxy Pattern) 대리자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스를 사용한다. 대리자는 실제 서비스에 대한 참조 변수를 갖는다.(합성) 대리자는 실제 서비스와 같은 이름을 가진 메서드를 호출하고 그 값을 클라이언트에게 돌려준다. 대리자는 실제 서비스의 메서드 호출 전후에 별도의 로직을 수행할 수도 있다. 대리자/대변인이라는 이름에 주목해 보자. 청화대 대변인, 백악관 대변인은 해당 기관의 입장을 대변할 뿐 그 입장에 자신의 입장을 가감하지 않는다. 프록시 패턴이 실제 서비스 매서드의 반환값에 가감하지 않는다는 것이 딱 느껴지지 않는가? 프록시 패턴은 실제 서비스 메서드의 반환값에 가감하는 것을 목적으..
어댑터패턴이란? 개체를 속성으로 만들어서 참조하는 디자인 패턴 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 호출하는 패턴 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 개방 폐쇄 원칙을 활용한 설계패턴 데이터베이스 관련 프로그램에서도 어댑터패턴을 볼 수 있다. 시스템을 공통의 인터페이스 ODBC 또는 JDBC를 이용해 조작할 수 있다는 사실을 알고 있을 것이다. 바로 ODBC/JDBC가 어댑터 패턴을 이용해 다양한 데이터베이스 시스템을 단일한 인터페이스로 조작할 수 있게 해주기 때문이다. 예제 코드를 통해 어댑터 패턴을 이해해보자. 먼저 어댑..
디자인 패턴의 꽃이라고 하는 전략 패턴을 알아보자. 전략 패턴을 구성하는 세 요소는 꼭 기억해둬야 한다. 전략 메서드를 가진 전략 객체 전략 객체를 사용하는 컨텍스트(전략 객체의 사용자/소비자) 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트(제3자, 전략 객체의 공급자) 즉, 클라이언트가 전략을 생성해 전략을 실행할 컨텍스트에 주입하는 패턴 전략 패턴이란? 동일 계열의 알고리즘을 정의하고, 각 알고리즘을 캡슐화하여 이들을 상호교환이 가능하도록 만든다. 알고리즘을 사용하는 클라이언트와 상관없이 독립적으로 알고리즘을 다양하게 변경할 수 있게 한다. 즉, 특정한 기능을 수행하는데 있어서 다양한 알고리즘이 적용될 수 있는 경우에 상황에 따라 필요한 알고리즘을 선택하여 해결할 수 있는 디자인 패턴이다. t..
ConcurrentHashMap의 내부구조 ConcurrentHashMap이란? ConcurrentHashMap은 Java 1.5 버전에서 HashTable의 대안으로 소개 되었다. Java 1.5 버전 이전에는 concurrent하고 multi-threaded 를 고려한 map을 구현하려면 HashTable 또는 synchronized map을 사용해야 했다. 왜냐하면 HashMap은 thread-safe 하지 않았기 때문이다. ConcurrentHashMap은 concurrent multi-threaded 환경에서 안정적으로 동작하고 HashTable과 synchronized map 보다 더 나은 성능을 가지고 있다. 그 이유는, ConcurrentHashMap은 map의 일부에만 lock을 거는데 ..
Fork Join Pool의 상속구조 java.lang.Object java.util.concurrent.AbstractExecutorService java.util.concurrent.ForkJoinPool Fork Join Pool 이란? ForkJoinPool 은 Java7부터 사용가능한 Java Concurrency 툴이며, 동일한 작업을 여러개의 Sub Task로 분리(Fork)하여 각각 처리하고, 이를 최종적으로 합쳐서(Join) 결과를 만들어내는 방식이다. 위의 그림과 같이 Fork를 통해서 업무를 분담하고 Join을 통해서 업무를 취합한다. 더 자세하게 아래 그림을 보자. 하나의 작업 큐를 가지고 있으며, 이러한 작업들을 Fork Join Pool에서 관리하는 여러 스레드에서 접근하여 작업..