Guava- 구글이 개발한 자바 오픈소스 유틸리티 라이브러리.CacheCollectionFunctionalStringOthers 1. Local Cachesample codeprivate LoadingCache sampleCache = CacheBuilder.newBuilder().maximumSize(100000).expireAfterWrite(1, TimeUnit.MINUTES).build(new CacheLoader() {@Overridepublic String load(Long targetId) {return targetRepository.findById(targetId);}}); public void refresh(Long id) {sampleCache.refresh(targetId)} publ..
Observer Pattern- 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메소드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. pubish/subscribe 패턴으로 알려져 있기도 하다.- 특정 인스턴스에 특정 인터페이스를 구현하는 클레스를 등록한다.- 특정 인스턴스에서 등록된 클레스의 인터페이스의 메소드를 호출한다. public class Orcs implements WeatherObserver { @Override public void update(WeatherType currentWeather) { switch (currentWeather) { case CO..
Factory Method Pattern- 팩토리 객체는 공통 인터페이스 타입 객체를 만드는 팩토리 메소드를 가지고 있다.- 외부에서 특정 타입 및 파라미터를 받으면 해당 타입에 맞는 팩토리를 호출하여 객체를 생성한다. public enum WeaponType { SHORT_SWORD("short sword"), SPEAR("spear"), AXE("axe"), UNDEFINED(""); private String title; WeaponType(String title) { this.title = title; }} public class OrcWeapon implements Weapon { private WeaponType weaponType; public OrcWeapon(WeaponType weapo..
Builder Pattern- 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다.- 별도의 Builder는 자신을 리턴하여 stream 형태로 데이터를 입력받을 수 있다.- Builder를 생성자로 입력받아 Builder에 입력된 파라미터로 인스턴스를 생성한다. public final class Hero { private final String profession; private final String name; private final String hairType; private final String hairColor; private final String armor; private final String weapon; privat..
Template Method Pattern- 추상클레스에서 전체 비지니스 로직이 템플릿 형태로 존재하고, 특정 디테일 메소드를 추상 메소드로 선언하여 상속받은 각 클레스에서 처리한다.- 전체적인 로직은 비슷하지만, 일부 로직만 틀릴 경우에 사용한다. public class SubtleMethod extends StealingMethod { @Override protected String pickTarget() { return "shop keeper"; } @Override protected void confuseTarget(String target) { System.out.println("Approach the {} with tears running and hug him!", target); } @Ove..
Strategy Pattern- 전략 패턴은 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다. - 특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다. - 전략은 알고리즘을 사용하는 클라이언트와는 독립적으로 다양하게 만든다. public class MeleeStrategy implements DragonSlayingStrategy { @Override public void execute() { System.out.println("With your Excalibur you sever the dragon's head!"); }} public class ProjectileStrategy implements Dra..
Flyway- Flyway 명령어만 실행하면 설정한 DB 테이블이 초기화 , 생성되므로 협업시 발생할 수 있는 테이블 동기화 문제를 피할 수 있다. 1. Build Gradle 설정buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "gradle.plugin.com.boxfuse.client:flyway-release:4.0.3" }} subprojects { apply plugin: 'org.flywaydb.flyway' flyway {url = "jdbc:mysql://127.0.0.1:3306?useSSL=false"schemas = ['dbSchema']driver ..
1. BDD?- BDD (Behaviour-Driven Development) - 이해하기 쉽게 시나리오 형태로 테스트 케이스를 작성하는 방법으로 같략히는 아래와 같은 형식으로 작성한다.ex) given: 어떤 값이 주어졌을때 | when: 어떤 것을 실행하면 | then: 어떤 값이 나온다. 2. Spock- Reference : http://spockframework.org- Groovy로 만들어진 BDD기반 Test Framwork로 groovy언어 뿐만 아니라 같은 JVM (ex: java) 형태로도 작성할 수 있다. 3. Specification: 4. Fields- def target = new Target() : 상수처럼 사용되며 선언과 동시에 초기화 한다. - @Shared // == se..
1. JMX 란? - JMX는 JCP(Java Community Process)에 의해 개발된 아래 두가지 스펙에 의해 정의된다.- JSR 3 : Java Management Extensions (JMX) Specification- JSR 160 : Java Management Extensions (JMX) Remote API 1.0에 의해 정의된다.** JSR (Java Specification Request)- JDK 1.5부터 기본적으로 탑재되어 제공되고 있다. - 자바 어플리케이션의 모니터링과 관리 기능을 제공한다.- Non-Java resources와 하드웨어에 대해 wrapping한 인터페이스를 제공하며, API를 외부로 노출해 application 설정 및 통계데이터를 수집할 수 있다. - ..
DI (Dependency Injection) DI는 Spring의 꽃이다. Class 간의 직접적인 관계를 끊어주기 때문이다. DI가 아니면 A Class에서 B Class를 사용하려면 인스턴스를 생성하거나 생성자 혹은 Setter를 사용해야 한다. Spring DI를 사용하면 아래 코드처럼 사용할 수 있다. // DI AS - IS class A { private B b; public void setB(B b) { this.b = b; } public String testMethod() { return b.service(); } } or class A { private B b; public A(B b) { b = b; } public String testMethod() { return b.servic..
- Total
- Today
- Yesterday
- Spring JDBC Template
- scikit-learn
- RetryTemplate
- DI
- Charles proxy
- spring spel
- @Primary
- Discriminate Mapping
- Registrar
- 복합키 Mapping
- Criteria
- Query DSL
- JPA
- SmartLifecycle
- Embeddable Mapping
- java generic
- guava
- Property
- Typesafe Config
- java EqualsAndHashCode
- java Equals
- Akka
- Embedded Mapping
- Join Table
- docker
- Mapping
- JPA Criteria
- Spring
- Sprint RetryTemplate
- Spring Registrar
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |