API 동시성 문제 개선하기 (MAX + 1 Key 채번)😡
·
Develop/Trouble Shooting
결제 API  동시성 이슈.. 전자락카 매출정보를 연동하는 API 동시성 문제를 개선해보자!작업 할 당시에 개발 환경은 jdk 17 , spring boot , mybatis , oracle 이다. 키오스크에서 결제를 하면 VAN 결제정보 데이터를  API를 이용하여 저장하는 단순한 구조이다.   api 응답시간 0.3초 키오스크를 이용하는 손님도 적고 문제가 생길거라고는...미처 생각하지 못했다 😒 이러고 시간이 한참 지나고나서.....이용자수가 엄청 늘었다... 혹시? 동시성 문제가 생기진 않았을까.. 로그를 보니중복키 로그가........ 😓 개선하고자테스트코드를 수정하고 디버깅을 진행 하였다.문제점 찾기예시 코드 AS-IS @Transactional(rollbackFor = Excepti..
[Request processing failed: org.springframework.jdbc.UncategorizedSQLException: Error attempting to get column '컬럼명' from result set. Cause: java.sql.SQLException: 부적합한 열 유형: getBLOB not implemented for class oracle.jdbc.driver.T4CLongRawAccessor 오류 해결 하
·
Develop/Trouble Shooting
[Request processing failed: org.mybatis.spring.MyBatisSystemException] with root causejava.sql.SQLException: 부적합한 열 유형: getBLOB not implemented for class oracle.jdbc.driver.T4CLongRawAccessor at oracle.jdbc.driver.GeneratedAccessor.getBLOB(GeneratedAccessor.java:1021) ~[ojdbc8-21.9.0.0.jar:21.9.0.0.0] at oracle.jdbc.driver.GeneratedStatement.getBLOB(GeneratedStatement.java:289) ~[ojdbc8-21.9.0.0..
[Java] 리플렉션(Reflection) 이란 무엇인가요?
·
Develop/Back-End
지난 번 운이 좋아 여러 대기업 면접을 보게 되었는데k사 기술 면접에서자바 리플렉션이라고 물었던 적이 있다..난 당시에 대답을 시원하게 하지 못했다 😓  사실 웹 개발자가 리플렉션을 사용할 일은 드물것이라고 생각이 든다...    그래서 ..  Java Reflection 이란 무엇인가요? 🤔자바 리플렉션은 프로그램이 실행 중일 때 클래스, 메서드, 필드 등을 동적으로 조회하고 조작할 수 있게 해주는 기능이를 통해 런타임에 클래스의 구조를 알아내고, 객체의 메서드를 호출하거나 필드의 값을 수정할 수 있다.자바에서 이미 로딩이 완료된 클래스에서 또 다른 클래스를 동적으로 로딩 (Dynamic Loading)하여 생성자(Constructor), 멤버 필드(Member Variables) 그리고 멤버 메서..
uncategorized SQLException; SQL state [99999]; error code [17056]; 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16KSC5601 에러 해결 방법! 🛠️
·
Develop/Trouble Shooting
Cause: java.sql.SQLException: 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16KSC5601 ; uncategorized SQLException; SQL state [99999]; error code [17056]; 지원되지 않는 문자 집합(클래스 경로에 orai18n.jar 추가): KO16KSC5601] with root cause 환경 구성 중 오류가 발생하였다. 😡오류를 자세히 읽어보면.. 답이!!!!!!!!!!  라이브러리를 다운받아 종속성을 추가하면 해결할 수 있다. gradle// https://mvnrepository.com/artifact/com.oracle.ojdbc/orai18nimplementation group: 'com.ora..
[Java] 모던 자바(Modern JAVA) 란 무엇인가!!!!😒 (feat. 새롭게 추가된 기능들)
·
Develop/Back-End
"모던 자바(Modern Java)"는 주로 자바 프로그래밍 언어의 최신 기능과 개선된 패러다임을 지칭합니다. 기존의 자바 버전에서 도입된 기능들과는 달리, 자바 8 이후부터의 새로운 기능과 변경된 프로그래밍 스타일을 포함합니다. 모던 자바에서는 함수형 프로그래밍의 개념을 도입하고, 람다 표현식과 스트림 API 등을 통해 코드를 더욱 간결하고 유연하게 작성할 수 있습니다. 또한, 형식 추론(var 키워드), 모듈 시스템, 레코드(Records) 등과 같은 새로운 기능들이 추가되어 프로그래머가 코드를 작성하고 유지보수하는 데 도움이 됩니다. 따라서 모던 자바는 자바 언어를 사용하여 최신의 개발 트렌드와 요구 사항에 부합하는 현대적이고 효율적인 코드를 작성하는 것을 의미합니다. 자바8 이후에 새로운 기능들을..
스프링 배치(Spring Batch) 시작하기 !😭
·
Develop/Back-End
스프링 배치 5가 릴리즈된지 거의 1년이 흘렀는데 이 때는 안보고 있다가.. 😛 급하게 스케줄러와 배치를 이용해야 되는 일이 생겻다 😥 내가 만들어야 할 프로그램 프로세스 흐름은 이와 같다. 프로그램 한 사이클이 돌아가는데 약 2시간 조금 안되게 걸리고 있는 상황인데, ( 마스터 데이터가 늘어날 수록 시간이 곱이 되는 상황) 개발 하고 나서 어느점을 보완해야 되는지 설명 하는게 더 빠를 것 같아서 일단 개발한다.. 배치 was,api was가 버틸수 있을 지 모르겠다.. 스케줄 시간보다 잡이 더 길어질수도 있는 상황.😑 기술적으로 자문을 구할 수 있는 상황이 아니며.. 정책적으로도 풀 수 없는 상황이라 참 난처하다.. 최대한 스케일 아웃으로 풀어야 하는데.. 머리가 너무 아프다 😩 일단 만들어보자 😵 아..
테이블 매핑 안 되는 데이터 조회 API 속도 개선하기
·
변소
C 데이터를 이용하여 A,B 데이터를 서로 조인하여 데이터를 가지고 와야 되는 상황 테이블 튜닝 x (인덱스나 컬럼 및 외부 테이블 추가가 불가능한 상황) A 마스터 테이블 B 정보성 테이블 C 프로젝트 외 API 1. 데이터 연관 관계 모두 1:N , 1:N ( 화면에서 표출 될 땐 A-C 1:1 관계로 표출) 2. 백엔드에서 내부 반복을 통하여 데이터를 조립하는 수 외에는 뾰족한 수가 없음 😒 3. 서버단에서 C데이터를 조회 후 내부 반복 시작 4. 내부 반복중 A-B 조인 데이터 C데이터와 조립 as-is 10~9s to-be 5~7s Sol. 1.조건으로 최대한 데이터 필터링 2.외부반복보다는 내부반복 이용 (퍼포먼스를 위해) 더 좋은 접근 방법이 있다면 댓글 부탁드립니다 😢
[백엔드 개발자 면접 단골 질문 뿌시기 - 3] 스레드(thread)와 프로세스(process)의 차이를 설명해 줄 수 있어요? 😲
·
Develop/CS
전공자라면 운영체제(OS) 를 배우기 때문에 프로세스와 스레드 개념을 알고 있겠지만 비전공자에게는 익숙치 않다. 😥 면접 단골 질문인 만큼 이 글을 통해 프로세스와 스레드 개념을 이해하고 차이점에 대해 간략하게나마 기억에 남기기 위해 글을 작성해둔다. 😆 0. 프로그램과 프로세스(Process) 10분 테코톡 코다님 영상에서는 프로그램과 프로세스에 대해서 피자집에 간 상황으로 비유하고 있는데 피자 레시피 = 프로그램 피자 = 프로세스 이처럼 프로그램 자체는 실행시키기 전에는 코드가 구현되어 있는 파일일 뿐 피자를 주문하기 위한 종이 레시피가 피자가 되는 것 처럼 프로그램이 실행이 되어 사용할 수 있는 무언가가 되는게 프로세스이다 1. 프로세스와 스레드의 정의 프로세스 (Process) 스레드 (Threa..