Reactive Streams with Sequence Diagram

Reactive Streams with Sequence Diagram1 req == 1 therad인 서블릿 방식의 한계를 뛰어넘기 위해 Spring에서 WebFlux를 내놨다.Spring WebFlux는 내부적으로 Reactor를 사용하는데, Reactor는 Reactive Streams 구현체다.Reactive Streams는 홈페이지에 다음과 같이 간
Continue reading

Java Concurrency Evolution

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

무부심 프로그래밍 십계명

무부심 프로그래밍 십계명코딩 호러의 글 The Ten Commandments of Egoless Programming을 무부심 프로그래밍 십계명이라는 이름으로 옮겨봤다. 무부심이라는 표현은 법정 스님의 무소유에서 따왔다.무소유는 소유하지 말자가 아니라, 불필요한 소유에서 벗어나자는 것이다. 마찬가지로 자부심을 갖지 말자가 아니라, 불필요하게 지나친 자부심에
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

HomoEfficio


Seoul, Korea.