Java Concurrency Evolution

Java Concurrency EvolutionDZone에서 본 글인데 동시성 처리 관련 여러 방식을 비교하면서, 프로젝트 룸(Loom) 코드도 구경할 수 있어서 원글 작성자의 허락을 받고 우리말로 옮겨본다. 원문: https://dzone.com/articles/java-concurrency-evolution 자바는 초창기부터 스레드를 사용해서 동시성
Continue reading

Constants vs Util

Constants vs Util오늘 일하다 의견을 나누게 된 Constants와 Util 얘기 애플리케이션이 실행되는 서버 IP를 가져와서 로그에 남길 일이 있다. 이유는 모르겠지만 InetAddress.getLocalHost().getHostAddress()로 찍으면 127.0.0.1 이 출력돼서 다른 방법을 찾아보니 아래와 같이 NetworkInterf
Continue reading

Back to the Essence - Java-Servers - (2)

Back to the Essence - Java Servers - 2편1편에서 블로킹 방식의 싱글 스레드 소켓 서버를 만들어봤고 다음의 문제가 있음을 발견했다. 블로킹 방식의 싱글 스레드 소켓 서버는 시간 끄는 이상한 클라이언트가 하나만 들어와도 서버가 먹통이 되고, 다른 클라이언트까지 먹통될 수 있다. 이제 시간 끄는 이상한 클라이언트가 들어오더라
Continue reading

Back to the Essence - Java Servers - (1)

Back to the Essence - Java Servers - 1편서버 프로그래밍을 한다고는 하지만, 지난 수년 간 굴러도 스프링 위에서만 구르다보니 스프링 없이는, 아니 이제는 스프링만으로도 뭘 못할 것 같고 스프링 부트 없이는 간단한 메아리(Echo) 서버조차 못 만드는 경지지경에 이르렀다. 이 아니 부끄러운가.. 그래서 Java가 제공해주는 cla
Continue reading

Batch 작업과 Connection Pool

커넥션풀일반적으로 DB에 연결해서 어떤 작업을 할 때는 커넥션풀(Connection Pool)을 사용한다. DB 연결 자체가 비용이 많이 들기 때문에 미리 다수의 Connection 객체를 만들어서 풀에 넣어두고 필요할 때마다 꺼내쓰고 반납하기를 반복한다. 결국 응답 속도를 빠르게 하고 자원 효율성을 높이기 위해 커넥션풀을 사용한다. 커넥션풀을 사용하면 미
Continue reading

Java NIO FileChannel 과 DirectByteBuffer

Java 4에서 도입된 NIO 덕분에 FileChannel과 ByteBuffer를 이용해서 File I/O 를 수행할 수 있게 됐다. 그림 출처: https://www.happycoders.eu/java/filechannel-bytebuffer-memory-mapped-file-locks/ NIO의 장점은 https://homoefficio.github.i
Continue reading

Spring WebFlux RequestBody

Spring WebFlux RequestBody - Raw vs MonoWebFlux 사용 시 Controller 단에서 RequestBody 를 인자로 받을 때, 다음과 같이 Mono를 받아오도록 작성해야할까? 1234@PostMapping("/mono")public Mono<SellerOut> createWithMono(@RequestBody
Continue reading

JPA 필요한 것만 조회하자

JPA 필요한 것만 조회하자JPA 는 편리하지만 편리함 뒤에 숨어있는 성능 손실 위험이 있다. 이건 JPA가 그 자체로 성능 상 불리하다는 얘기가 아니라, 편하게만 쓰다보면 잘못 쓰는 길로 빠져서 성능에 해를 끼칠 위험도 꽤 있다는 얘기다. 여러가지 원칙이 있겠지만, 이번에 기억해둬야 할 원칙은 JPA는 필요한 것만 조회하자 엔티티아래는 어떤 카테고리를 나
Continue reading

IDE 에서는 되는데 jar 에서는 안 돼요 - Java Resource

IDE 에서는 되는데 jar 에서는 안 돼요 - Java Resource 한 줄 요약: 웬만하면 getResource() 쓰지 말고 getResourceAsStream() 쓰자 기본 폴더 구조자바에서는 메이븐이 널리 사용되면서 아래와 같은 폴더 구조가 표준처럼 사용되고 있다. src/main/java 폴더 하위에 있는 java 파일은 빌드 후 targe
Continue reading

Java Memory Monitoring

Java 메모리 모니터링두서 없이 이것저것 모아본 자바 메모리 모니터링 Heap Dump 힙에 있는 모든 객체 Dumpjmap -dump:format=b,file=HEAP_DUMP_OUTPUT_FILE_NAME.hprof PID 힙에 있는 Live 객체만 Dumpjmap -dump:live,format=b,file=HEAP_DUMP_OUTPUT_FILE_N
Continue reading

HomoEfficio


Seoul, Korea.