
WebClient는 Spring WebFlux에서 HTTP 요청을 비동기 방식으로 처리하는 강력한 도구이다. 비동기 처리는 주로 리액티브 프로그래밍에서 사용되며, 비동기 요청을 보내고 응답을 기다리는 동안 다른 작업을 병렬로 처리할 수 있게 한다. * 동기와 비동기/ 블럭과 넌블럭 차이 이해하기https://musma.github.io/2019/04/17/blocking-and-synchronous.html 동기와 비동기, 그리고 블럭과 넌블럭무릇 모든 개발자들, 아니 비단 개발자가 아니라 할지라도 컴퓨터 관련 산업계 종사자들이라면 오다 가다 한 번씩은 꼭 들어보고, 또 익혔음직한 내용이겠습니다. 이름하야, 동기(Synchronous)와 비musma.github.io 하지만 WebClient를 사용방법..

프로젝트 오픈 후 모니터링 중 타사의 API 호출이 안되는 경우가 발생했다. 에러 로그도 없이 호출이 안되는 상황....뭘까..? 상황은 이랬다. 우리 시스템으로 요청이 오면 서비스단에서 DB를 확인 한 후, 해당 데이터의 종료시간이 null인 경우에만 타시스템에 요청을 보내게 되어있다.문제는 타시스템에 요청을 하고 응답을 받는 시간이 꽤 길어서 마냥 기다리기만 할 수 없다는 것이다. 따라서, 쓰레드를 생성하여 요청을 하고(응답값은 프로그램에 영향을 미치지 않고,DB에만 저장된다), 원래의 단일 쓰레드에서 종료시간을 업데이트 했다. 이게, 단순히 테스트를 할 때는 문제가 되지 않았는데..오픈 후 많은 많은 요청이 발생하니 조회와 업데이트의 순서가 보장되지 않아, 실제로 요청을 보내야 할 건들의 종료시간이..

socket 통신을 통해 STT를 붙여야 하는 경우가 생겼다. 이전에도 여러번 socket으로 데이터를 주고 받은 적이 있기 때문에, 이 정도는 아무것도 아니지ㅋ 생각했는데, 업체로부터 제대로된 연동정의서가 아닌 C# 샘플 코드를 받았다. 흠 C#은 모르는데...?다행히 샘플 코드가 어렵지 않아 Java로 포팅하면서, 제대로 했다고 생각했는데....계속 잘못된 결과를 받았다. 그치..한번에 잘 될 일이 없지..ㅎ 그치만 아무리 봐도 뭐가 잘못인지 모르겠다.. 업체에 문의해봐도, 본인들도 그 결과는 처음본다고... 네..? 나에게 도움이 되는 답변은 아니었다.그래서 수석님에게 도움을 요청하니, 코드의 문제는 아닌거 같고, 엔디안 문제 아니냐는 힌트를 주셨다. 엔디안이요? 와 완전 처음 들어보는 말..엉엉..

Null의 문제점Java에서 null은 매우 오랜 시간 동안 객체가 없음을 나타내는 대표적인 방법이었다. 하지만 이 null이 시스템 전반에 걸쳐 여러 문제를 일으킬 수 있다. 1. NullPointerException (NPE)프로그램에서 객체가 null인 상태에서 그 객체에 접근하려 할 때, NPE가 발생하며 이는 개발자들이 자주 마주하는 에러 중에 하나이다.String name = null;System.out.println(name.length()); // NullPointerException 발생 2. 코드 가독성 저하null 처리를 위해 코드 전반에 if문을 사용해야하며 가독성이 떨어진다.if (user != null && user.getName() != null) { System.out..
avax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed 자바에서는 신뢰할 수 없는 인증서를 가진 서버(요청하는 site의 ssl 인증서가 사설인증서)로의 요청을 제한하는데, 이를 해결하기 위해서는 두가지 방법이 있다. 1. http 요청 시 인증서를 무시하도록 코드 작성- 솔직히 이것 때문에 코드 변경하기 싫어요🥲2. 해당 사이트의 인증서를 JVM의 신뢰할 수 있는 인증서 저장소(Truststore)에 추가 나는 고객사로부터 인증서를 받아 JVM에 설치하는 방법을 선택했다. JVM이 설치되어 있는 서버에서 아래의 명령어를 실행한 후 재시작을 하면 된다.keytool -tr..
객체지향 프로그래밍의 기본 원칙은 캡슐화(encapsulation), 상속(inheritance), 다형성(polymorphism)이며, 이들은 소프트웨어를 보다 모듈화하고 유지보수하기 쉽게 한다. 캡슐화(Encapsulation): 캡슐화는 관련된 데이터와 메서드를 하나의 단위로 묶는 것 클래스는 데이터(속성)와 해당 데이터를 다루는 메서드(함수)를 함께 캡슐화하여 객체를 형성 캡슐화는 정보 은닉(Information Hiding)을 통해 객체의 내부 구현을 외부로부터 숨기고, 외부에서는 객체의 인터페이스를 통해 상호작용한다. 상속(Inheritance): 상속은 기존의 클래스에서 정의된 속성과 메서드를 새로운 클래스에서 재사용할 수 있도록 하는 개념 상속을 통해 코드 중복을 줄이고, 기존 클래스의 기..

구글 stt 연동 예제를 살펴보다 try-with-resource 구문을 사용한 곳이 있어, try-with-resource에 대해서 공부하게 되었다. 잘 알고 있는 try-catch-finally 구문의 경우에는 아래의 예시 처럼 finally에서 사용한 자원을 직접 close를 시켜주어야한다. Scanner scanner = null; try { scanner = new Scanner(new File("test.txt")); while (scanner.hasNext()) { System.out.println(scanner.nextLine()); } } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (scanner != nu..
람다 표현식은 단일 추상 메서드 인터페이스를 구현하는 데 적합한데, 익명 내부 클래스를 람다식으로 변경 하기 위해서는 단 하나의 추상 메서드만을 가지고 있어야한다. 1. 익명 내부 클래스 방식 list.sort(new Comparator() { @Override public int compare(Player o1, Player o2) { return o2.height()-o1.height(); } }); 2. 람다 표현식 list.sort((o1, o2) -> o2.height()-o1.height());
- Total
- Today
- Yesterday
- 코딩테스트
- 자바스크립트
- 자바
- Kubernetes
- 리액트
- springboot
- 코테
- 오토에버코테
- Linux
- 자바코테
- softeer
- Spring
- java
- Docker
- nginx
- 스프링
- 현대
- 현대오토에버
- 도커
- centos
- 톰캣
- 쿠버네티스
- tomcat
- 전자정부프레임워크
- 아파치카프카
- javascript
- softeer java
- mysql
- react
- 현대코테
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |