일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- OS
- list
- Kotlin
- gradle
- 자바
- MSA
- spring
- Real MySQL
- mysql
- Java
- 스트림
- Stream
- 보조스트림
- IntellJ
- 백준
- JPA
- Collection
- 토비의 스프링 정리
- 스프링
- GC
- K8s
- 이스티오
- 자바 ORM 표준 JPA 프로그래밍
- 토비의 스프링
- jvm
- Stack
- thread
- SpringBoot
- redis
- 쿠버네티스
- Today
- Total
목록Java (35)
인생을 코딩하다.
ArrayDeque란? 위위 사진은 ArrayDeque의 상속, 확장 구조 및 설명이다. 아래 접은 글은 번역이다. 더보기 "Deque 인터페이스의 크기 조정 가능한 어레이 구현. 어레이 데크에는 용량 제한이 없으며 필요에 따라 확장되어 사용량을 지원합니다. 외부 동기화가 없는 경우 여러 스레드에 의한 동시 액세스를 지원하지 않습니다. null 요소는 사용할 수 없습니다. 이 클래스는 스택으로 사용할 때 Stack보다 빠르며, 대기열로 사용할 때는 LinkedList보다 빠릅니다. 대부분의 ArrayDeque 작업은 상각된 상수 시간으로 실행됩니다. 제거, 제거 첫 번째 발생, 제거 마지막 발생, 포함, 반복기.remove() 및 대량 작업은 모두 선형 시간으로 실행됩니다. 이 클래스의 반복기 메서드에 ..
일급 컬렉션 이란? 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의 불변성을 보장 상태와 행위를 한 곳에서 관리 이름이 있는 컬렉션 비지..
AOP(Aspect-Oriented Programming)란? "형일, 회원가입 하는 시간 측정해서 로그로 남겨줄 수 있어요?" 난 회원가입 하는 서비스로 가서 시간을 측정해본다. 이렇게 객체로 분리하여 시간 측정을 하게된다. 그리고 log가 남는 것을 확인 할 수 있다. 그런데 이렇게 메서드에 스탑워트 기능을 추가하면 뭔가 이상하다. 스탑워치라는 시간을 재는 기능을 만들긴 했는데 서비스에 이 로직이 들어가는게 맞을까? 사실 여기서 필요한 핵심 로직은 위에 빨간색 박스에 있는 로직 아닐까? SRP에서 클래스를 변경하는 이유는 하나라고 했는데 여기에 서비스 로직 말고 위의 빨간 박스에 있는 로직들 처럼 부가기능이 들어간 것 같다는 생각을 할 수 있다. 사실 서비스에서 필요한 내용은 비즈니스 로직이라고 불리..
Spring 프레임워크는 자바 엔터프라이즈 애플리케이션을 개발하기 위한 프레임워크다 즉, 기업들에게 애플리케이션을 보다 쉽게 개발할 수 있도록 서비스를 제공한다 어떻게? 데이터베이스 연동이나 다른 시스템과의 연동같은 복잡한 로직을 분리시켜개발자가 비즈니스 로직 에만 신경쓰도록 만들어주는 핵심 기능이 IOC와 DI다. IOC (Inversion of Control) 제어의 역전 개발자가 아닌 프로그램이 코드의 흐름을 제어하는 것 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. public class HyungIl{ private Child child; public HyungIl(){ this.child = new Hosick(); } public v..
프록시는 대리자, 대변인이라는 뜻을 가진 언어다. 프록시 패턴프록시 패턴(Proxy Pattern) 대리자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스를 사용한다. 대리자는 실제 서비스에 대한 참조 변수를 갖는다.(합성) 대리자는 실제 서비스와 같은 이름을 가진 메서드를 호출하고 그 값을 클라이언트에게 돌려준다. 대리자는 실제 서비스의 메서드 호출 전후에 별도의 로직을 수행할 수도 있다. 대리자/대변인이라는 이름에 주목해 보자. 청화대 대변인, 백악관 대변인은 해당 기관의 입장을 대변할 뿐 그 입장에 자신의 입장을 가감하지 않는다. 프록시 패턴이 실제 서비스 매서드의 반환값에 가감하지 않는다는 것이 딱 느껴지지 않는가? 프록시 패턴은 실제 서비스 메서드의 반환값에 가감하는 것을 목적으..
web Server와 WAS의 차이를 알아보기전에 web과 server은 무엇일까? Web 인터넷을 기반으로 하여 정보를 공유, 검색 할 수 있게 하는 서비스 URL(주소) HTTP(통신 규칙) HTML(내용) Server 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템. H/W : 서버가 설치되어 있는 소형, 대형 컴퓨터. S/W : HTML, CSS, Javascript와 같은 정적 컨텐츠를 처리하는 서버를 의미. Web Server는 정적 컨텐츠를 제공할뿐 동적 컨텐츠의 처리는 할 수 없다. 이제 차이를 알아보자. Web Server 클라이언트로부터 HTTP 요청을 받아 HTML 문서나 각종 리소스(Resource)를 전달하는 컴퓨터 클라이언트는 웹서버에게 주소(url)를 가지..
어댑터패턴이란? 개체를 속성으로 만들어서 참조하는 디자인 패턴 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 호출하는 패턴 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 개방 폐쇄 원칙을 활용한 설계패턴 데이터베이스 관련 프로그램에서도 어댑터패턴을 볼 수 있다. 시스템을 공통의 인터페이스 ODBC 또는 JDBC를 이용해 조작할 수 있다는 사실을 알고 있을 것이다. 바로 ODBC/JDBC가 어댑터 패턴을 이용해 다양한 데이터베이스 시스템을 단일한 인터페이스로 조작할 수 있게 해주기 때문이다. 예제 코드를 통해 어댑터 패턴을 이해해보자. 먼저 어댑..
디자인 패턴의 꽃이라고 하는 전략 패턴을 알아보자. 전략 패턴을 구성하는 세 요소는 꼭 기억해둬야 한다. 전략 메서드를 가진 전략 객체 전략 객체를 사용하는 컨텍스트(전략 객체의 사용자/소비자) 전략 객체를 생성해 컨텍스트에 주입하는 클라이언트(제3자, 전략 객체의 공급자) 즉, 클라이언트가 전략을 생성해 전략을 실행할 컨텍스트에 주입하는 패턴 전략 패턴이란? 동일 계열의 알고리즘을 정의하고, 각 알고리즘을 캡슐화하여 이들을 상호교환이 가능하도록 만든다. 알고리즘을 사용하는 클라이언트와 상관없이 독립적으로 알고리즘을 다양하게 변경할 수 있게 한다. 즉, 특정한 기능을 수행하는데 있어서 다양한 알고리즘이 적용될 수 있는 경우에 상황에 따라 필요한 알고리즘을 선택하여 해결할 수 있는 디자인 패턴이다. t..