java 18

java Virtual Thread Producer Consumer 패턴

가상 스레드 생산자 소비자 패턴 구성 생산자 Thread는 Virtual Thread 구성, N개소비자 Thread는 OS Thread 구성, 1~2개 더보기ConcurrentLinkedQueue()    offer()    poll()ReentrantLock(true)    lock()    unlock() import java.nio.ByteBuffer;import java.util.concurrent.locks.ReentrantLock;import java.util.concurrent.locks.StampedLock;import java.util.concurrent.Semaphore;public final class HeapBufferPool {... private final Reentrant..

java 2024.07.04

java 정규식 문자열 추출

java 정규식 사용해서 텍스트 파일 문자열 추출 정규식 패턴에 사용한 특수 문자더보기#{...}"..."텍스트 파일 내부 문자열 추출  file1.txt더보기User.class : ID=#{id}, EMAIL=#{email}Account.class : AID=#{id}, EMAIL=#{email}Member.class : MID=#{id}, EMAIL=#{email}import java.io.FileInputStream;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Regex1 { public static void main(String[] args) throws Excep..

java 2024.07.04

java BigDecimal 지수 표현

생성자 전달 값 그대로 표현System.out.println(new BigDecimal(2174000.0D).toString());System.out.println(new BigDecimal("2564000").toString());System.out.println(new BigDecimal("2.564E6").toString()); 실행 결과>더보기217400025640002.564E+6지수 표현 제거, toPlainString 메서드 사용System.out.println(new BigDecimal(1.150216E7).toPlainString());System.out.println(new BigDecimal(1.150216E7D).toPlainString());System.out.println(new..

java 2024.07.04

java assert 키워드

사용법은 두 가지 형식이 있는데 다음과 같습니다. assert expression1;assert expression1: expression2; 첫 번째는 인자로 boolean으로 평가되는 표현식 또는 값을 받아서 참이면 그냥 지나가고, 거짓이면 AssertionError 예외가 발생합니다.두 번째는 표현식 1이 거짓인 경우 두 번째 표현식의 값이 예외 메시지로 보이게 됩니다.Assertion은 디버깅 용도로 사용되어서 JVM 기본 설정으로 프로그램을 실행하게 되면 assert문은 모두 실행에서 제외됩니다.assert가 동작하게 하려면 실행 시 -ea 옵션을 사용해서 실행합니다.더보기java -ea 클래스명 referenceshttps://offbyone.tistory.com/294

java 2024.07.04

java jsckson2 라이브러리 사용 null and default value ignore

java jsckson2null and default value ignorejson 데이터의 경우 널 및 기본값을 json에서 제외하면 데이터 사이즈를 줄일 수 있다.import com.fasterxml.jackson.annotation.JsonInclude;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import static com.fasterxml.jackson.annotation.JsonInclude.Include;public class JsonExample { public static void main(String[] args) { ..

java 2024.07.04

java 21 Virtual Thread Tcp Socket Server

Java Virtual Thread Tcp Socket Server​java 11 소켓 클래스 java.net.SocketInputStreamjava 21 소켓 클래스 sun.nio.ch.NioSocketImpl​JEP 353 (Reimplement the legacy Socket API) https://openjdk.org/jeps/353에서 Socket API들을 재구현함으로써 코드의 변경 없이 가상 스레드를 사용할 수 있도록 하였다.​golang의 tcp 소켓 서버의 net poll 방식 구현과 유사한 방식으로 구현하였다.​java 1.4 버전 이전의 tcp io socket server와 다른 부분은 연결 클라이언트 처리를 가상 스레드로 한다.​연결 클라이언트 관리, 단편화된 패킷 수신 처리, 버..

java 2024.06.30