일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- HTTP
- reactor
- effective
- Lombok
- cache
- mybatis
- git
- NoSQL
- html
- Java
- reactive
- 네트워크
- mongodb
- AWS
- network
- VCS
- spring
- javascript
- Linux
- socket
- Heap
- Static
- libuv
- redis
- r
- github
- nodejs
- Elk
- ajax
- 데이터통신
- Today
- Total
목록Java (37)
빨간색코딩
참조문서 https://hibernate.org/orm/documentation/5.4/ https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html https://docs.jboss.org/hibernate/jpa/2.2/api/overview-summary.html 자바 ORM 표준 JPA 프로그래밍 (김영한 저) https://www.slideshare.net/NHNFORWARD/2018-mybatis-jpa 1. JPA 란? Java Persistence API 의 약자로 java진영의 ORM 표준스펙이다. 높은 생산성을 가져다주며, 동아시아(한중일)를 제외하고는 Data Access 레이어에 JPA..
참조문서 https://projectreactor.io/ https://github.com/reactor/reactor-core https://godekdls.github.io/Reactor%20Core/contents/ 리액티브 스트림을 기본적으로 이해해야, Reactor 도 수월하게 이해할 수 있다. cf) 리액티브 스트림 포스팅 : https://sjh836.tistory.com/182 예제코드는 io.projectreactor:reactor-core:3.4.2 기준으로 작성되었다. 1. Reactor의 탄생 reactor 1.0은 13년 7월에 출시되었다. spring 프레임워크의 개발팀인 pivotal 에서 만든 오픈소스이다. 리액터 패턴, 함수형 프로그래밍, 메세지 기반 등의 설계와 모범사례들..
1. RxJava는? https://github.com/ReactiveX/RxJava 리액티브 프레임워크 중 하나이다. 다른 구현체로는 Akka, 리액터 등 RxJava 1.3.8을 끝으로 EOL 되었지만, 개념을 익히는 용도로만 사용해보자 RxJava 2.x 나 3.x 사용 권장 아래에서 사용하는 API들은 매우 기본적인 거라, 다른 버전에서도 호환됨 2. 스트림의 생산과 소비 @Test public void 스트림의_생산과_소비() { // 스트림 생산 : 이벤트 생성기 Observable observable = Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber
참조문서 http://www.reactive-streams.org https://github.com/reactive-streams/reactive-streams-jvm/ https://engineering.linecorp.com/ko/blog/reactive-streams-with-armeria-1/ 1. Reactive Streams 란? 리액티브 스트림 스펙을 정의하고, 인터페이스를 제공하는 reactive-streams.org 를 살펴보면, 다음과 같다. Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure. non-blocking b..
enum 이전 포스팅 : https://sjh836.tistory.com/134 1. 이놈(Enum...)을 효율적으로 찾는 방법 장르, 카테고리, 각종 컨텐츠 타입 등 enum 의 활용은 무궁무진하다. enum 을 잘 선언했다면, enum 을 잘 찾는 것도 중요하다 예를들어 DB에 enum name 이 아닌.. 무언가 코드값만 저장하고, 꺼내쓸 때 코드를 enum 으로 바꾸는 상황을 가정해보자. 다른 예제로는 API 응답값 내 코드를 우리 서비스의 enum 으로 바꿔쳐야한다던지.. 아래에서는 enum 을 찾아내는 3가지 예제 코드들이다. @Getter @AllArgsConstructor public enum OperatingSystemType { WINDOW("100"), UBUNTU("101"), M..
해당 내용은 이펙티브 자바 3판 (조슈아 블로크 지음, 이복연 옮김)를 읽고 나같은 초심자의 눈으로 이해한 내용을 정리해보았다.책에 있는 내용을 기반으로 썼지만 책에 없는 내용도 조금 적었다. (익명클래스와 람다 비교, 성능적 관점, 함수형 인터페이스와 default메소드, 코드블록-람다블록 비교, Collectors API의 구체적 설명 등)7장의 아이템 목록익명 클래스보다는 람다를 사용하라람다보다는 메소드 참조를 사용하라표준 함수형 인터페이스를 사용하라스트림은 주의해서 사용하라스트림에서는 부작용없는 함수를 사용하라반환 타입으로는 스트림보다 컬렉션이 낫다스트림 병렬화는 주의해서 적용하라아이템42. 익명 클래스보다는 람다를 사용하라람다는 이름이 없고 문서화도 못한다. 따라서 코드 자체로 동작이 명확히 설..
해당 내용은 이펙티브 자바 3판 (조슈아 블로크 지음, 이복연 옮김)를 읽고 나같은 초심자의 눈으로 이해한 내용을 정리해보았다.이전 장은 아직 정리가 덜 끝나서... 먼저 끝난 9장부터 포스팅한다. 책에 있는 내용을 기반으로 썼지만 책에 없는 내용도 조금 적었다. (인터페이스화에 대한 고찰, 컴파일러의 문자열연산 최적화 등) 9장의 아이템 목록지역변수의 범위를 최소화하라전통적인 for문보다는 foreach문을 사용하여라라이브러리를 익히고 사용하라정확한 답이 필요하다면 float와 double은 피하라박싱된 기본 타입보다는 기본 타입을 사용하라다른 타입이 적절하다면 문자열 사용을 피하라문자열 연결은 느리니 주의하라객체는 인터페이스를 사용해 참조하라리플렉션보다는 인터페이스를 사용하라네이티브 메소드는 신중히 ..
해당 내용은 이펙티브 자바 3판 (조슈아 블로크 지음, 이복연 옮김)를 읽고 나같은 초심자의 눈으로 이해한 내용을 정리해보았다. 제네릭 자체를 공부좀 해봐야겠다는 생각이 드는... 챕터였다ㅋㅋㅠ5장의 아이템 목록raw type은 사용하지 마라비검사 경고를 제거하라배열보다는 리스트를 사용하라이왕이면 제네릭 타입으로 만들어라이왕이면 제네릭 메소드로 만들어라한정적 와일드카드를 사용해 API 유연성을 높여라제네릭과 가변인수를 함께 쓸 때는 신중해라타입 안전 이종 컨테이너를 고려하라서문제네릭은 jdk1.5 부터 사용할 수 있다. 제네릭을 지원하기 전에는 컬렉션에서 객체를 꺼낼 때 마다 형변환을 해야 했다. 1.5 부터는 제네릭을 사용하면 컬렉션에 담을 수 있는 타입을 컴파일러에게 알려주며, 컴파일러가 알아서 형변..
해당 내용은 이펙티브 자바 3판 (조슈아 블로크 지음, 이복연 옮김)를 읽고 나같은 초심자의 눈으로 이해한 내용을 정리해보았다. 책에 있는 내용을 기반으로 썼지만, 책에 없는 내용도 조금 적었다. (guava Immutable, 템플릿메소드, 중첩클래스 등) 또한 이번 정리부터는 조금 더 많이 요약해서 기술할 것이며, 코드예제도 많이 뺐다. 참고로 책의 코드는 https://github.com/WegraLee/effective-java-3e-source-code 에서 볼 수 있다. 4장의 아이템 목록클래스와 멤버의 접근 권한을 최소화하라public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라변경 가능성을 최소화하라상속보다는 컴포지션을 사용하라상속을 고려해 설계하고 문서화하라. 그렇지 않..
해당 내용은 이펙티브 자바 3판 (조슈아 블로크 지음, 이복연 옮김)를 읽고 나같은 초심자의 눈으로 이해한 내용을 정리해보았다. 책에 있는 내용을 기반으로 썼지만, 책에 없는 내용도 조금 적었다. (commons의 각종 빌더, lombok 등) 조슈아 블로크님이 구글에 다녀서 그러신가.. 구글 라이브러리(AutoValue 등)들을 책 전면에서 홍보하고 있는 느낌이 있다..ㅋㅋㅋㅋ 구글의 라이브러리들도 물론 좋지만, apache commons나 lombok 을 (국내에서는) 아마 더 많이 실무에 쓰고 계시지 않을까 추측해본다. 3장의 아이템 목록equals는 일반 규약을 지켜 재정의하라equals를 재정의하려거든 hashCode도 재정의하라toString을 항상 재정의하라clone 재정의는 주의해서 진행하..
이펙티브자바 3판이 드디어 번역되어 출판되었다. (2달전에 2판샀는데 다 읽지도않았는데...) 해당 내용은 이펙티브 자바 3판 (조슈아 블로크 지음, 이복연 옮김)를 읽고 나같은 초심자의 눈으로 이해한 내용을 정리해보았다. (정리된 글만 보는 것보단 이 책은 꼭 사길..바랍니다) 책에 있는 내용을 기반으로 썼지만, 책에 없는 내용도 조금 적었다. (자바빈 패턴에서 필수인자 받기, 직렬화, Weak Reference 등) 2장의 아이템 목록생성자 대신 정적 팩터리 메서드를 고려하라생성자에 매개변수가 많다면 빌더를 고려하라private 생성자나 열거 타입으로 싱글턴임을 보증하라인스턴스화를 막으려거든 private 생성자를 사용하라자원을 직접 명시하지 말고 의존 객체 주입을 사용하라불필요한 객체 생성을 피하라..
참조문서 : http://www.baeldung.com/jackson-annotations1. jackson 이란?jackson은 자바진영 json 라이브러리로 잘 알려져 있지만 json 뿐만 아니라 XML, YAML, CSV 등 다양한 형식의 데이타를 지원하는 data-processing 툴이다.스트림 방식이므로 속도가 빠르며 유연하며 다양한 third party 데이터 타입을 지원하며 annotation 방식으로 메타 데이타를 기술할 수 있으므로 JSON 의 약점중 하나인 문서화와 데이타 validation 문제를 해결할 수 있다.2. 의존성 추가databind 는 jackson-core, jackson-annotation 에 의존성이 있으므로 pom 파일에는 databind 모듈만 기술한다. 2.9..
참조문서https://docs.oracle.com/javase/8/docs/api/java/util/function/package-frame.htmlhttps://skyoo2003.github.io/post/2016/11/09/java8-lambda-expressionhttps://homoefficio.github.io/2017/02/19/Java8-%EB%9E%8C%EB%8B%A4-%EA%B4%80%EB%A0%A8-%EC%8A%A4%ED%8E%99-%EC%A0%95%EB%A6%AC/1. 람다란?람다란 코드블록이다. 기존에는 코드블록은 반드시 메서드 내에 존재해야 했다. 코드블록을 가지려면 메소드, 클래스를 선언해야 했다. 하지만 자바8부터는 람다를 통해 코드블록만 가질 수 있도록 한 것이다. (js f..
참조문서http://www.nextree.co.kr/p6960/http://slenderankle.tistory.com/162 1. SOLID란?객체지향 설계는 긴 세월과 수많은 시행착오를 거치며 5가지 원칙이 정리되었다. 이것은 객체지향 설계의 5원칙이라고 하며, 앞글자를 따서 SOLID라고 한다.SPR(Single Responsibility Principle) : 단일 책임 원칙OCP(Open Closed Principle) : 개방 폐쇄 원칙LSP(Liskov Substitution Principle) : 리스코프 치환 원칙ISP(Interface Segregation Principle) : 인터페이스 분리 원칙DIP(Dependency Inversion Principle) : 의존 역전 원칙이 원..
1. 클래스와 객체가장 흔한 설명중에 대표적으로 잘못된 것은 붕어빵이야기다. 클래스 = 붕어빵틀, 객체 = 붕어빵에 비유하며, 붕어빵틀에서 붕어빵을 찍어낸다는 이야기다. 하지만 코드로 보면 이 비유는 틀렸다. 클래스 객체변수명 = new 클래스(); 에 대입해보면, 붕어빵틀 붕어빵 = new 붕어빵틀(); 이다. 말이 안되는 예제이다. 여기서 붕어빵틀은 붕어빵을 만드는 Factory로 이해를 해야지, 클래스와 객체관계로 이해하면 안된다. 클래스는 추상적이고, 클래스라는 단어대로 분류에 대한 개념이지, 실체가 아니다. 하지만 객체는 실체이다. class Person이 있고, Person ljh = new Person(); 이 말이 되는 것이다.클래스 : 같은 특성을 지닌 여러 객체를 총칭하는 집합의 개념객..