| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 보조스트림
- K8s
- Stream
- Stack
- Collection
- gradle
- Real MySQL
- SpringBoot
- thread
- 스트림
- 백준
- OS
- spring
- 쿠버네티스
- JPA
- GC
- 스프링
- list
- 자바 ORM 표준 JPA 프로그래밍
- Java
- 토비의 스프링 정리
- redis
- 자바
- IntellJ
- Kotlin
- 토비의 스프링
- MSA
- mysql
- 이스티오
- jvm
- Today
- Total
목록Java (60)
인생을 코딩하다.
첫 화면에서 로그인을 해야 기능을 사용할 수 있는 어떤 웹 사이트를 가정해보자.일반적으로 첫 화면에서 로그인을 하고, 나머지 기능들을 ui 클릭을 통해 사용할 것이다. 하지만, 어떤 사용자가 로그인을 해야만 하는 어떤 기능의 url을 복사해 뒀다가 로그인 없이 주소창에 그 url을 붙여넣는다면 어떨까? '별도의 처리' 가 없다면 아마 로그인 없이도 기능을 사용하게 되거나, 에러가 발생할 것이다. 그 '별도의 처리'가 포함된 로직은 일반적으로 아래와 같을 것이다. 1. 사용자는 로그인을 한다. 2. 시스템은 로그인한 사용자 정보를 세션에 저장한다. 3. 사용자는 기능을 요청한다. 4. 시스템은 사용자가 요청한 기능을 수행하기 전에 요청한 사용자의 세션을 체크한다. 5. 시스템은 올바른 세션일 경우 기능 승..
Serializable의 동작방식이 궁금하여 내부를 보았는데, 어라? 필드와 메소드가 한 개도 없었다. 이것을 마커 인터페이스라고 한다. 마커 인터페이스(marker interface) 아무 메서드도 담고 있지 않고, 단지 자신을 구현하는 클래스가 특정 속성을 가짐을 표시해주는 것 자바의 대표 마커 인터페이스로는 위에서 언급한 Serializable, Cloneable와 흔히 알지는 못하지만 Spring 에서 리스너를 사용한다면 보이는 EnentListener라는 인터페이스도 있다. 아무것도 담고 있지 않으면, 왜 쓰는 것일까? 아무것도 담지 않고 있지만, Serilaizable을 구현한 클래스의 인스턴스는 objectOutputStream을 통해 쓸 수 있다. 즉 직렬화 할 수 있다고 알려준다. 이 인..
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..