분류 전체보기
-
Java 9 모듈 프로그래밍후기/Book Review 2018. 6. 16. 15:27
작년 9월에 자바9가 출시되었고, 9에서 가장 눈에 띄게 달라진 부분은모듈프로그래밍이라고 할 수 있다. 자바가 처음 출시된 지 20년이 지난 지금까지 하위호환성을 지키고 있다는 점은 다른 언어로서는 상상하기 힘든 장점이다. jdk1.4에서 컴파일한 클래스파일이 jre8에서도 여전히 잘 돌아간다는 뜻이다. 하지만 호환성을 지키기 위해 포기해야 하는 부분들이 있었는데 바로 jre의 사이즈이다. deprecated되거나 거의 쓰지도 않는 CORBA 클래스 같은 것들을 지원하기 위해 상위 jre에서는 계속 가져가야한다. 그러다보니 버전이 올라갈 때마다 rt.jar의 사이즈는 계속 커질 수 밖에 없다. 그 부분들을 해결하기 위해 나온것이 바로 자바9의 모듈인 것이다. 목차자바 9 모듈화 소개첫 번째 자바 모듈 만..
-
[IntelliJ] Error: java: invalid source release: nJava/IDE 2018. 6. 2. 11:20
한 PC에 여러 JDK를 깔고 프로젝트마다 다르게 혹은 한 프로젝트 내에서 JDK 버전을 다르게 설정하며 쓸 수가 있다. 예를들어 JDK10을 깔았지만 sbt에서 인식을 못해서 스칼라 프로젝트에서는 JDK1.8로 설정을 해야 한다든가 할 필요가 있다(아직 기본으로 9나 10을 쓰기는 무리인거 같다. 호환 안되는 경우가 왕왕 있음). 사실 저 위에 에러가 나는 이유는 한 프로젝트 내에서 처음에 9 or 10으로 빌드했다가, 나중에 실행할 때는 1.8버전으로 실행해서 생기는 문제다. 해결법은 아래와 같다. 1. 프로젝트 run을 하려할 때, Error: java: invalid source release: 9가 발생 2. Project Structure - Modules (윈도우는 Ctrl + Alt + S..
-
[2018.05.26] [카프카, 데이터 플랫폼의 최강자] 저자 직강 세미나후기/세미나 2018. 5. 28. 23:54
지난주 토요일 카프카 세미나를 다녀왔다. 금요일 새벽에 페이스북에서 한다는 사실을 알고 급하게 신청했다. 다양하게 카프카가 사용되고 있지만 직접 구축하고 사용해보지는 않아서 카프카에 대해 두루뭉술한 상태였다. 그런 궁금증을 해소하고자 세미나도 참석하고 가는길에 책도 구입했다. 세션1. 저자 고승범(peter)님 첫번째 세션에서는 피터가 실무에서 직접 겪은 다양한 사례들을 공유해주셨다. 사내 공용 카프카를 설계하고 운영까지 하게 된 계기, 장애상황, 성능 비교 등을 나누어 주셨다. 정말 실무에서 산전수전 다 겪은 노력이 보였다. 덕분에 사내 공용 카프카를 잘 쓰고 있다. 세션2. 저자 공용준(Andrew)님 두번째 세션은 앤드류가 Kafka Streams와 KSQL에 대해 나누어 주셨다. Kafka도 잘 ..
-
[Java9] IOJava/기본 2018. 5. 14. 00:19
InputStreamjava.io.InputStream읽기/복사에 관한 3개의 메소드 추가됨readAllBytes() : intput stream의 모든 바이트들을 읽음readNBytes(byte[] b, int off, int len) : b배열의 off위치부터 len byte만큼 읽음transferTo(OutputStream out) : input stream에서 모든 bytes를 읽고, OutputStream에 씀이제 Apache Commons IO 같은거 안써도 됨 The ObjectInputStream Filter객체를 저장하거나 네트워크 전송을 위해 직렬화 함데이터를 객체로 역직렬화 할 때 데이터가 유효한지 검증이 필요함이제 입력을 필터링하기 위해 java.io.ObjectInputStream..
-
관계형 데이터베이스 실전 입문후기/Book Review 2018. 5. 13. 18:49
NoSQL 철저 입문을 했으니 이번에는 RDB를 철저 입문했다. 간단히 CRUD를 할 줄 아는 사람들은 많을 것이다. 하지만 좀 더 근본적으로 그 속내와 철학을 알고 바르게 사용 하는 사람들은 얼마 없을 것 같다. RDB를 조금 더 RDB 답게 사용하고자 하는 사람들에게 추천할 만한 책이다. 목차SQL과 관계형 모델술어논리와 관계형 모델정규화 논리(첫 번째) - 함수 종속성정규화 이론(두 번째) - 결합 종속성릴레이션의 직교성도메인 설계 전략NULL과의 싸움SELECT를 공략하자이력 데이터와 친해지기그래프에 맞서다인덱스 설계 전략웹 응용프로그램을 위한 데이터 구조리팩터링 최적의 해결책트랜잭션의 본질 기존의 SQL 설명서 같은 책들과 확연하게 구분되는 점이 있다. 바로 SQL과 관계형 모델을 철저하게 분리..
-
[Java9] Variable HandlesJava/기본 2018. 5. 2. 21:46
개요java.util.concurrent.atomic이나 sun.misc.Unsafe을 이용하여 값들을 읽기/쓰기 했었는데, 보다 일관적인 방법을 제공한다. 목적안정성: 유효한 메모리 바운더리안에서 사용무결정: final 필드 값을 업데이트 할 수 없음성능: sun.misc.Unsafe보다 성능이 비슷하거나 좋음사용성: sun.misc.Unsafe API, java.util.concurrent.atomic API보다 사용하기 좋음자극 자바에서 동시 및 병렬 프로그래밍이 할 일이 많아졌다. counter 값을 원자적으로(thread safe하게) 변경 하기 위해서는 AtomicInteger(공간문제나 추가 작업등으로 오버헤드가 큼)나 sun.misc.Unsafe API(안전하지 않고 이식성이 안좋음)을 사..
-
[Java9] try-with-resources ImprovementJava/기본 2018. 4. 28. 23:44
예전에 Java7에서 변화된 try-with-resources(이하 TWR)에 대해 포스팅을 했었다. Java9에서는 더 발전된 TWR가 나왔다. Java7의 TWR만 해도 확실히 편해졌지만 불편한 점이 여전히 존재했다. 자원 할당을 try 밖에서 하면 그 변수를 가지고 바로 try문 안에서 사용할 수는 없었다. 따로 try안에서 새로운 변수를 선언하여 사용해야 했다. 아래 코드를 보자. 하지만 Java9에서는 그럴 필요가 없게 되었다. 세미콜론을 이용해서 복수개의 변수를 가질 수도 있다. 한 가지 주의할 점은 사용할 변수가 final이거나 effectively final(초기화 된 이후 절대 바뀌지 않는 변수)이어야 한다는 점이다. 참고http://javasampleapproach.com/java/ja..
-
Docker container & image 모두 삭제Docker 2018. 4. 21. 10:12
도커로 이것저것 하다보면 불필요한 이미지나 컨테이너들이 많이 쌓이게 된다. (특히 컨테이너)새로운 마음으로 깨끗하게 정리하고 싶을 때 사용하면 된다. 모든 도커 컨테이너 삭제(remove all docker containers)구동중인 모든 도커 컨테이너들을 중지시키고, 삭제한다. docker stop $(docker ps -a -q) docker rm $(docker ps -a -q) 모든 도커 이미지 삭제(remove all docker images) docker rmi $(docker images -q)