Programing/Java 29

Gradle, Maven

Gradle, MavenMavenApache Maven쉬운 빌드일정한(Uniform)한 빌드 시스템2004년에 출시Gradle범용 빌드 도구멀티 프로젝트에 사용하기 좋음Groovy 빌드 스크립트Apache Ivy를 기반으로한 강력한 의존성 관리빌드를 구축하는 풍부한 도메인 모델원격 저장소나 pom, ivy 파일 없이 의존성 관리 지원Maven과 GradleGradle이 좋은점Gradle의 빌드 스크립트(Groovy based) 정의가 Maven의 xml에 비해 정의하기가 쉽다.Gradle의 Groovy를 사용하기 때문에 동적인 빌드는 Groovy Script를 구현하거나 호출하면 된다.Gradle Maven보다 100배이상 빠르다.Gradle DaemonBuild CacheSmart Classpath A..

Programing/Java 2018.12.10

Java CocurrentHashMap

Java CocurrentHashMap동시성 (Concurrency) 을 보장해주는 MapKey/Value값으로 null이 허용되지 않는다.get method는 blocking이 일어나지 않는다. hashCode()의 값을 동일한 값으로 나오는 Key값은 Map의 성능을 하락 시킨다 (이는 다른 HashMap 동일함) 생성자initialCapacity - 처음 초기 수용량 (Capacitiy)loadFactor - table의 densityconcurrencyLevel - 동시에 몇개의 Thread가 Update를 허용할 수치 Metric으로 사용되는 Counter를 저장하는 예counterMap.computeIfAbsent(key, key -> new Counter()).increment()comput..

Programing/Java 2018.11.27

URI

URIUniform Resource Identifier scheme:[//authority][/path][?query][#fragment]Sampleftp://ftp.is.co.za/rfc/rfc1808.txthttps://tools.ietf.org/html/rfc3986mailto:john@doe.com tel:+1-816-555-1212urn:oasis:names:docbook:dtd:xml:4.1urn:isbn:1234567890 UriComponentBuilder를 이용하여 URI를 생성하기Spring Framework에서 UriComponenBulder를 이용해서 UriComponents를 생성을 할수 있다.이를 통해 URI를 좀더 쉽게 생성을 할수 있다. UriComponents uriComp..

Programing/Java 2018.11.22

Java Jdbc를 이용한 데이터베이스 접근하기

Java Jdbc를 이용한 데이터베이스 접근하기Hive를 사용할때 결과값이 몇천건만인 경우에는 메모리가 부족해서 GC 에러가 발생이 될수가 있다.여러번을 쪼개서 가지기 오기에는 Hive 특성상 일정한 시간 (Map, Reduce로 전체 데이터를 로딩을 처리하는 과정)이 걸리기 때문에 속도가 느리다쿼리를 1번만에 처리를 하고 메모리가 부족하지 않게 하는 방법은 JDBC의 ResultSet를 활용을 하면 된다.Low Level 접근 방식중 하나인 ResultSet 디비로 부터 fetchSize만큼 데이터를 가지고 온다.데이터의 결과가 큰 경우에는 ResultSet을 이용하여 Chunk 단위로 파일을 생성하는 방법으로 할수가 있다.1. Connection 생성하기# DriverManager를 통해 Connec..

Programing/Java 2018.10.23

Guava Eventbus @AllowConcurrentEvents

Guava Eventbus @AllowConcurrentEvents@Subscribe@AllowConcurrentEventspublic void receive(String message) throws InterruptedException {log.info("Receiving message... {}", message);receiving(3, message);log.info("Done");}@Subscribe 만 쓴 경우에는 synchronized로 감싸져서 호출이 되기 때문에 멀티 쓰레드에서 동시 호출이 막혀있다. 이는 성능에 엄청난 영향을 미치게 된다.@Subscribe 매서드를 Thread-Safe하게 개발을 한뒤 @AllowConcurrentEvents를 붙어 주면 멀티 쓰레드 상황에서 문제없이 사..

Programing/Java 2018.10.10