본문 바로가기
728x90
반응형

분류 전체보기182

[Java21] Virtual Thread 요약 Java 8 이후 세 번째 LTS버전인 Java 21이 2023년 9월에 릴리즈 예정인데, 이 버전에 Virtual Thread 기능이 추가될 예정입니다. (현재 Java 19에 Preview Features로 들어가 있음)그래서 Virtual Thread 주제로 포스팅하려고 보니 이미 잘 정리되어 있는 포스팅이 많아서 요약정리만 하겠습니다. 높은 처리량을 보장하는 Reactive Programming인 Spring Webflux는 Mono나 FLux와 같은 Publisher 타입으로 값을 래핑 해야 하기 때문에 코드 가독성이 좋지 않고, 고성능을 보장하더라도 유지보수가 어렵고 러닝커브가 존재합니다.최신 pinpoint 버전에서는 webflux도 지원하지만 이전 버전에서는 pinpoint로 안 잡힘Vir.. 2023. 5. 15.
[Spring Security] DaoAuthenticationProvider org.springframework.security.authentication.dao.DaoAuthenticationProvider DaoAuthenticationProvider는 UserDetailsService 및 PasswordEncoder를 사용하여 사용자 아이디와 암호를 인증하는 AuthenticationProvider 구현입니다. The authentication Filter는 ProviderManager에 의해 구현되는 AuthenticationManager에 UsernamePasswordAuthenticationToken을 전달합니다. ProviderManager는 DaoAuthenticationProvider 타입의 AuthenticationProvider를 사용하도록 구성됩니다. Dao.. 2023. 5. 9.
[CloudFront] JA3 TLS Client Fingerprint Amazon CloudFront에서 CloudFront-Viewer-JA3-Fingerprint 헤더를 지원하고 있습니다. JA3 fingerprint는 request가 알려진 클라이언트로부터 온 것인지, malware나 악성 봇인지, 예상되는(허용 목록에 있는) 애플리케이션인지 판단하는 데 도움이 될 수 있습니다. 이 헤더는 뷰어의 SSL/TLS Client Hello 패킷에 의존하며 HTTPS 요청에만 존재합니다. JA3 메서드는 Client Hello 패킷의 TLSVersion, Ciphers, Extensions, EllipticCurves, EllipticCurvePointFormats 필드에 대한 바이트의 10진수 값을 수집하는 데 사용됩니다. 각 필드를 ,(comma)로 구분하고 -(Hyph.. 2023. 4. 19.
[Spring] webSocket 보호되어 있는 글 입니다. 2023. 4. 5.
[Toast-UI Editor] 이미지 업로드 기능 변경 Toast UI Editor에서 이미지 업로드를 하면 base64 형식으로 에디터에 입력됩니다. base64 형식은 해상도가 올라갈수록 글자수가 어마어마하게 늘어나서, servlet의 max-file-size와 max-request-size를 초과할 수 있습니다. 그리고 그대로 DB에 저장하고 싶지 않겠죠? Toast UI Editor API 문서를 확인해 보면 다음과 같은 기능이 존재합니다. 다음은 addImageBlobHook으로 file에서 받아온 이미지 데이터를 업로드 후 url로 처리하는 로직입니다. const editor = new toastui.Editor({ el: document.querySelector(selectors), height: '300px', initialEditType: '.. 2023. 3. 20.
[Java11] Exception이 성능에 미치는 영향 예전에 Exception에 대해 포스팅했었는데, 이번엔 Exception이 성능에 미치는 영향에 대해 알아보겠습니다. [java] 예외처리 Exception handling이 글은 Java의 정석 (남궁성/도우출판) 기반으로 작성되었습니다. 1. 프로그램 오류 컴파일 에러(compile-time error): 컴파일할 때 발생하는 에러 런타임 에러(runtime error): 실행할 때 발생하는 에러 에moonsiri.tistory.com  예외 처리 장점프로그램 실행 완료를 위한 제공프로그램 코드 및 오류 처리 코드를 쉽게 식별오류 전파의미 있는 오류 보고오류 유형 식별  JVM 예외 처리 순서예외가 발생하게 되면, JVM은 발생한 예외를 처리할 수 있는 exception handler(try-catc.. 2023. 3. 19.
[Java11] Customizing redisCodec for redisCommands redis command를 날렸을 때 Key는 String, Value는 Object class로 받고 싶어서 커스텀 한 redisCodec입니다.key는 io.lettuce.core.codec.StringCodec, value는 io.lettuce.core.codec.ByteArrayCodec 참조하여 구현import io.lettuce.core.codec.RedisCodec;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;import io.netty.util.CharsetUtil;import org.springframework.util.SerializationUtils;import java.nio.ByteBuffer;import java.. 2023. 2. 9.
[Spring] @Transactional 과 UnexpectedRollbackException org.springframework.transaction.UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only 아래 코드와 같이 예외가 발생했더라도 트랜잭션이 시작된 메서드에서 예외를 잡았으니 롤백 없이 커밋되고 정상적으로 값을 리턴할 것이라고 생각하였습니다. @Service public class AccountService { @Resource private HistoryService historyService; @Transactional public UserDetails signUp(UserVO param) { // ... try { historyService.add.. 2023. 2. 1.
ChatGPT - 대화형 인공지능 챗봇 ChatGPT는 OpenAPI가 개발한 GPT3.5를 기반으로 하는 프로토타입 대화형 인공지능 챗봇입니다. https://chat.openai.com/chat 현재는 간단한 회원가입 후 무료로 이용할 수 있습니다. 홈페이지의 공식 설명은 아래와 같습니다. ☀ 예시 "간단한 용어로 양자 컴퓨팅 설명" "10살 생일을 위한 창의적인 아이디어가 있나요?" "Javascript에서 HTTP 요청을 하려면 어떻게 해야 하나요?" ⚡ 기능 사용자가 대화 초반에 말한 내용을 기억함 사용자가 답변 내용을 수정 요청할 수 있음 부적절한 요청을 거절하도록 훈련됨 ⚠ 한계 때때로 잘못된 정보를 제공할 수 있음 때때로 유해하거나 편향된 정보를 제공할 수 있음 2021년 이후의 지식은 제한됨 정리하자면 ChatGPT는 다른 챗.. 2023. 1. 21.
[webFlux] SwitchIfEmpty가 항상 호출되는 이슈 해결 (Lazy Evaluation) webflux에서 if else문으로 switchIfEmpty를 주로 사용하는데, empty가 아닌 경우에도 switchIfEmpty를 항상 호출합니다. 왜 그러는 것인지, 어떻게 하면 호출을 안 하게 할 수 있는지 알아보겠습니다. 1: String str = "str"; 2: Mono.just(str) 3: .map(s -> { 4: System.out.println(s); 5: return s; 6: }) 7: .switchIfEmpty({ 8: System.out.println("defaultStr"); 9: return Mono.just("default"); 10: }) 11: .subscribe(); 위 코드를 보면 str이 비어 있지 않으니 문자열 "str"만 출력할 것이라고 생각하겠지만, 실.. 2022. 12. 20.
728x90
반응형