일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- querydsl
- 스프링부트
- 자료구조공부
- K8S
- 프로그래머스
- nestjs
- 스프링부트공부
- 코테준비
- 알고리즘공부
- Axon framework
- Kafka
- JPA
- JPA 공부
- 카프카
- JPA공부
- Flutter
- nestjs스터디
- DDD
- JPA스터디
- 코테공부
- 플러터 공부
- 플러터 개발
- nestjs공부
- JPA예제
- 자바공부
- 스프링
- 스프링공부
- 기술면접공부
- 기술공부
- 스프링 공부
- Today
- Total
목록Language (93)
DevBoi
싱글턴 패턴은 클래스의 인스턴스를 하나만 생성해서 사용하는 패턴이다. 주로 특정 객체를 여러곳에서 공유해야 할 떄 사용한다. 싱글턴 패턴을 이용함으로써, 메모리에 인스턴스를 하나만 등록해 여러 쓰레드에서 동시에 하나의 객체를 이용할 수 있도록 하기 위함이다. 문제는 동기화 문제인데, 동기화 문ㅁ제만 잘 해결한다면, 리소스의 효율을 가져다 줄 수 있다. 일단 싱글턴 테스트 코드를 적어보자 package com.practice.demo.config; public class SingleTon { private static SingleTon instance; private int msg; private SingleTon(int msg) { this.msg = msg; } public static SingleTo..
자바 디자인 행동 패턴에 대해서 알아보자 Chain of Responsibility : 책임연쇄 패턴, 책임들이 연결되어있어 내가 책임을 못지면, 다른 책임자에게 자동으로 넘어가는 구조이다. Command :명령어를 각각 구현하는 것보다는 하나의 추상 클래스에 메서드를 하나 만들고, 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행한다. Interpreter : 문법 규칙을 클래스화한 구조를 갖는 SQL언어나 통신 프로토콜 같은 것을 개발할 때 사용한다. Iterator : 반복이 필요한 자료구조를 모두 동일한 인터페이스를 통해 접근할 수 있도록 메서드를 이용해 자료구조를 활용할 수 있도록 해준다. Mediator : 클래스 간의 복잡한 상호작용을 캡슐화하여 한 클래스에 위임해서 처리한다. Me..
어댑터 - 기존의 클래스를 재사용하거나, 사용자가 원하는 인터페이스를 하도록 클래스를 활용하기 위해 많이 쓰인다. 브릿지 - 기능의 확장과 구현의 확장 계층을 분리 하기 위함 컴포지트 - 비슷한 기능을 하는 구성요소들로 설계를 구성하는 패턴 데코레이터 - 종속적인 기능들이 공통적으로 동작하게 끔 동작하는 패턴 퍼샤드 - 하위 수준에서 사용되는 여러 기술들을 상위 기술에서 단순화 하여 제공하는 패턴 플라이웨이트 - 생성해야하는 객체나 클래스가 많은 경우 사용하면 효과적이다. 프록시 - 실제 동작하는 클래스가 아닌, 대체자, 대행자를 두어 그 프록시 클래스가 대신 수행하도록 해준다.
생각해보니 전 회사에서 Java 6 -> 8에 대한 컨버전을 진행했다. 근데, 지금 회사에서는 자바 11을 쓴다. 어떤게 어떻게 다를까? 1) String 문자열 관련 메소드가 많다. isBlank(),line(),repeat(),stripLeading(),stripTrailing(),strip()과 같은 문자열 관련 메소드가 많이 도입됬다. 2) 파일에 대해서 많은 작업을 수행할 수 있다. writerString,readString,isSameFile과 같은 메소드들이 지원된다. 3) 패턴인식이 가능하다. asMatchPredicate()메소드 도움을 받을 수 있따. 4) 컬렉션 인터페이스, 메서드 추가 5) Predicate 인터페이스 static not 메서드 추가 해당 과 같이, static no..
하나씩 깊게 파보기 전에, 디자인 패턴 한개씩 써머리? 요약?을 진행해보자 하나씩 하나씩 요약을 진행하면서 간단하게 정리를 하고, 한개씩 깊게 파보도록 하자 * 싱글턴 패턴 : 생성자가 한번만 인스턴스를 생성하고, 이후 호출에서는 해당 생성된 인스턴스가 리턴되는 패턴 * 프로토타입 : 객체들의 인스턴스가 프로토타입인스턴스를 바탕으로 생성되는 것을 결정, 해당 결정되어 생성된 인스턴스를 사용 * 팩토리 메소드 : 기본 생성자나 생성자 메소드가 아니라 서브클래스(팩토리) 메서드에게 생성을 위임, 해당 클래스에서 생성을 한다. * 빌더 : 생성 객체의 속성이 옵셔널한 경우가 좀더 적합, 다양한 표현으로 생성자를 사용할 수 있다. * 추상 팩토리 패턴 : 관련 클래스들을 팩토리로 한데 모으고, 이 전체를 캡슐화..
갑자기 데일리로 디자인 패턴 공부를 하고싶어졌다.. 해야겠다. 짧게나마 공부를 하고 익혀야겠다. 뭔가 디자인 패턴같은건 많이 알수록 좋다고 생각이든다.. ㅎㅎ 일단 목록을 나열해보자. 하루에 하나씩 진행해보고 정리해볼 리스트 말이다. Gof 디자인 패턴 위주로 공부하고 추가로 더 있다면, 뭐 하면되지 ㅋ * 싱글턴 패턴 * 프로토타입 * 팩토리 메소드 * 빌더 * 추상 팩토리 패턴 * 어댑터 * 브릿지 * 컴포지트 * 데코레이터 * 퍼샤드 * 플라이웨이트 * 프록시 * Chain of Responsibility * Command * Interpreter * Iterator * Mediator * Memento * Observer * State * Strategy * Template Method * Vis..
갑자기 사이드 프로젝트하다가 생각나서 정리했다. ArrayList 를 1천 ~ 2천건 , List
자바8에서 사용되는 Funtional api이다. 자바8에서 람다랑 스트림이 추가되었는데, 왜 추가되었을까? 함수형 프로그래밍을 받아들이기 위해서이다. 1.람다 표현식 람다의 핵심은 지울수있는건 모두 지우자 이다. 모든걸 컴파일러의 추론에 의지하고, 코드로 표현하는 건 다 없애서, 간결하게 만드는 것을 목표로한다. 인터페이스 내 추상메서드가 한개로 정의가 되어있다면, 간략하게 람다식으로 구현을 할수 있다. 이런식으로 interface에 대한 추상메서드가 한개 존재할때, 해당 식을 람다로 간략하게 표현할 수 있다. 그런데 만약에 인터페이스 내 추상메서드가 2개 이상이라면? 이러한 람다식을 사용할 수 없다. 추후 운영 관리를 하다가 만약에 다른 사람이 인터페이스에서 메서드를 한개 추가하면, 해당 기존에 사용..
싱글턴이란 객체를 하나만 생성하는 것이다. 인터페이스를 구현한 싱글턴 객체가 아니라면 , mock을 사용하여 테스트 하기 어렵다. 내부 인스턴스를 static final로 두고, private 생성자로서 사용한다면, 내부 static 인스턴스가 초기화 될떄 딱 한번만 privatee 생성자가 돌고, 이 인자는 하나뿐임을 보장한다. 유일하게 인스턴스 get 부분만 public 인경우, instance를 하나만 가지고 있고 이를 return 하는 것을 보장할 수있다. (final) 장점 향후 확장성이 있다. 다른 인스턴스(새로운 인스턴스)가 필요하다면 언제든지 신규 메소드를 추가해서 사용할 수 있다 리플렉션 방어가 된다. setAccessible 를 사용해 private 생성자에 접근 할 수 있는데 이떄 i..
자바 빈즈 패턴 - 생성자를 파라미터 없이 생성하고, setter를 사용해서 관리 하나의 객체를 생성하고 여러개의 메서드를 사용해야한다. 점층적 생성자 - 속성이 늘어날떄마다 생성자 인수를 하나씩 늘려서 사용 인자가 늘어날떄마다 추가 해줘야하는 값이 계속 늘어난다. 빌더 패턴 -빌더 패턴은 넘기는 매게 변수에 따라 자동으로 다른 객체를 생성할 수도 있고 메서드 체이닝으로 어떤 변수에 어떤값을 넣을지를 명시적으로 선언하여 확실하게 객체를 생성할 수있다. 빌더 생성비용때문에, 인자가 4개 이상부터 값어치를 하고, 인자가 많은 객체나 대부분의 인자가 선택적일때 사용하면 유용하다