일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- javascript
- reactive
- Java
- Lombok
- Linux
- AWS
- mongodb
- Static
- html
- 네트워크
- effective
- socket
- redis
- mybatis
- network
- VCS
- 데이터통신
- cache
- Heap
- reactor
- libuv
- spring
- r
- nodejs
- git
- HTTP
- NoSQL
- ajax
- github
- Elk
- Today
- Total
목록Java (29)
빨간색코딩
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
본격적인 리액티브 프레임워크를 사용하기 전에, 옵저버 패턴 - 발행구독 패턴으로 만들어진 Spring Event와 SSE를 통해 리액티브 어플리케이션을 만들어보자 cf) 옵저버 패턴 포스팅 : https://sjh836.tistory.com/180 1. Spring 에서 Event 를 다룬다? 스프링 프레임워크에서는 EventListener를 통해 발행-구독(Pub/Sub) 패턴, 이벤트 버스(EventBus) 등을 지원한다. ApplicationContext 레벨에서 지원 도메인 서비스간 강한 결합, 강한 의존성을 Event 기반으로 풀어내면, 느슨한 결합 등을 얻을 수 있다. 개인적으론, 이것은 상황에 따라 장점이 될수도 있고, 단점이 될 수도 있다고 본다. 핵심 비즈니스 이외, 부가적인 비즈니스 로..
1. 관찰자(Observer) 패턴이란? 리액티브 프로그래밍의 기초이며, 대부분의 MVC, UI라이브러리들이 내부적으로 사용하는 디자인 패턴이다. Model = Subject(=Observable) , View = Observer 라고 보면, 모델 데이터의 변화에 따라 UI가 바뀌어보이는 것들 Swing 에서 각종 버튼들과 리스너들 관찰자 패턴에는 이벤트를 발생시키는 역할(주체)와 이벤트를 수신하는 역할(관찰자)가 있다. 주체(subject)는 관찰자(observer)에게 상태변경을 알려준다. 이벤트 기반 처리 일대다 의존성 등록 가능 단방향 통신 2. UML과 인터페이스 public interface Subject { void registerObserver(Observer observer); // 동시..
해당 내용은 이펙티브 자바 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://d2.naver.com/helloworld/10963관련 포스팅 : http://sjh836.tistory.com/1211. 들어가며1-1. 스레드의 종류Daemon Thread작업을 돕는 보조적인 역할을 수행하는 쓰레드 (GC 도 여기에 해당)프로세스 종료시 데몬 쓰레드는 강제적으로 자동종료언제든지 종료가 되어도 상관없는 작업 시에 사용 (그래서 주로 데몬쓰레드를 쓴다)Thread t = new Thread(); t.setDaemon(true); 로 설정가능Non-Daemon Thread실제 주 작업을 하는 스레드프로세스 종료시 논데몬 쓰레드가 살아있는 경우 종료 불가능 (가끔 톰캣을 종료했지만 안꺼져서 kill 해야되는 이유)매우 중요한 데이터 처리시에 사용하는 것이 일반적..
1. java에서 가변인자를?jdk 1.5 부터 추가되었다. 비정형 인자라고도 하며, 몇개의 인자가 넘어올지 모를 때 사용하면 좋다. 배열로 간주되며, 메소드가 호출될 때 배열의 길이를 결정한다. 배열타입을 인자로 받기에는 너무 작아서 아쉬울때 주로 쓴다고 한다..ㅋㅋ2. 어떻게 쓰는가메소드명(String ... args) 이런식으로 ... 을 찍으면 된다. 주의할 점은 가장 마지막 인수에 위치해야한다. (The variable argument type String of the method print must be the last parameter)
1. JDBC 란?Java Database Connectivity 의 약자이다. java에서 DB에 접속할 수 있도록 하는 API이다. JDBC는 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다. 패키지는 java.sql와 javax.sql에 있다.2. ODBC 와 차이ODBC는 Open Database Connectivity 의 약자이다. ODBC는 모든 응용 프로그램(프로그래밍 언어 무관)에서 모든 데이터베이스 시스템과 통신하는 데 사용할 수있는 개방형 인터페이스이다. 즉, JDBC가 java만 지원하는 것과 다르게 ODBC는 언어와 독립적이다.3. JDBC 아키텍처 JDBC 드라이버매니저는 DB에 맞는 드라이버를 load하여 JDBC를 초기화한다.JDBC 드라이버들은 자바 어플리케이션..
참조문서 : https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html1. enum 이란?enumeration의 앞글자로 열거라는 뜻이다. JDK 1.5 부터 관련이 있는 상수들의 집합을 사용할 때 enum을 사용한다. enum은 완전한 클래스이다. 그 이전에는 열거형 상수를 선언하려면 다음과 같이 했다.클래스 내에 final static 로 변수 선언interface 에 상수선언기존방식의 문제한 클래스에 final static 으로 다 선언하자니 네임충돌 발생할 수도 있고, 복잡함인터페이스를 사용하면 위 문제는 해결되나, 타입안정성이 떨어짐 (컴파일 때 형검사를 하지 않으므로 오류발생 소지)enum의 장점코드가 단순해지고, 가독성이 짱인스턴스 생성과 ..
1. 엘리먼트 : 루트 엘리먼트namespace : 유일한 id 만드는데 도움을 준다. ex. 네임스페이스.id : select 구문에 사용id : 필수속성, 유일한 id를 써야함parameterType : 인자 타입, 보통 패키지까지 안쓰고 로 간결하게 씀.resultType : 필수속성, select의 결과로 반환된 resultSet이 매핑될 객체의 타입 : insert 구문에 사용idparameterTypekeyPropertyresultType : update 구문에 사용idparameterType : delete 구문에 사용idparameter : select문에서 resultType 대신 resultMap 을 사용 가능하다. 검색 쿼리가 단순 테이블 조회가 아닌 join 구문을 포함할 때는 하나..