목록경력 실무경험 (57)
공부한것들을 정리하는 블로그 입니다.
* 해당 글은 계속 수정 예정입니다. 최초 작성일 2022.03 마지막 수정일 2023.04 #상황 설명 이중화 되어있는 서버(A,B)의 엔드포인트에서 추가적으로 분산처리를 위하여 라운드로빈 방식을 사용중인 상황이라 가정 => 동일한 지불수단의 거래여도 1번,2번 컨테이너로 순차적으로 서비스를 호출 #상황 흐름 1. L4제어 L4를 통해 A서버의 거래를 제어하여, A서버의 A1컨테이너로 거래가 들어오지 않도록 제어 거래비 A:B = 50:50 A1 컨테이너 : 25 A2 컨테이너 : 25 B1 컨테이너 : 25 B2 컨테이너 : 25 => (L4 제어) 거래비 A:B = 50:50 A1 컨테이너 : 0 A2 컨테이너 : 50 B1 컨테이너 : 25 B2 컨테이너 : 25 2. DB변경 A서버의 A1 컨테..
* 해당 글은 계속 수정 예정입니다. 최초 작성일 2022.03 마지막 수정일 2023.04 # SELECT ~ FOR UPDATE SELECT FOR UPDATE 구문은, 동시성 제어를 위하여 특정 데이터 ROW에 대해 배타적 락(Exclusive LOCK)을 거는 기능입니다. ex) 영화관 예매 시스템의 잔여좌석 조회 등에 사용 가능 보통은 DB보안 관련 툴(DBSafer 등)을 사용중인 경우에 DDL, 운영DB로의 DML, LOCK 등이 차단되어야 마땅하나 위 SELECT FOR UPDATE 구문 등은 차단되지 않아 배타적 락이 걸리는 경우가 있습니다. 즉, 개발자가 해당 쿼리를 잘못 수행 할 경우, 세션이 유지되는 동안에는 해당 테이블/ROW에 락이 걸리게 될 수 있습니다. 개발자 입장에서 로컬P..
* 해당 글은 계속 수정 예정입니다. 최초 작성일 2021.01 마지막 수정일 2023.04 # 메시지 길이 설정 방식 메시지 길이 설정 방식에는 여러가지 종류가 있다. 헤더에 길이 정보를 포함하거나, 고정길이를 사용하거나, 데이터가 한번에 들어오는 경우에는 End of Data로 길이를 읽는 다거나 할 수 있다. 이 중에서 'End of Data로 한 번에 메시지가 들어오는 경우'(EOD)의 경우 발생할 수 있는 오류에 대해 알아보자 # End of Data로 한 번에 메시지가 들어오는 경우(EOD) 해당 방식은 TCP 특성상 네크워크가 느릴 경우 오류 발생 소지가 높으므로 사용에 주의해야 하는데, 네트워크가 느린 경우는 결국 요청건의 개수가 많을 경우에도 적용이 된다. 요청건을 처리하는데 병목이 발생..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
* 해당 글은 계속 수정 예정입니다. 최초 작성일 2023.04 마지막 수정일 2023.04 # 쿼리의 결과값이 없으면 Empty Resultset 발생 Empty ResultSet 으로 인한 Illegal operation 에러 상황을 가정해보겠습니다. 가령, 1번쿼리를 수행 후 결과값을 이용해 2번쿼리를 돌리도록 작성하였다면, (ex) 1번쿼리 수행결과 -> while문 -> 2번쿼리 수행) 1번쿼리의 결과가 없거나, 혹은 1번쿼리의 결과는 있더라도 2번쿼리의 결과가 없을 경우. Empty Resultset이 발생합니다. # setEmptyResultCheck 설정 setEmptyResultCheck 설정 후 쿼리 조회결과가 없는 결과의 에러처리는 아래와 같다. 1. setEmptyResultChec..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
보호되어 있는 글입니다.
* 해당 글은 계속 수정 예정입니다. 최초 작성일 2020.11 마지막 수정일 2023.04 # 전각문자를 반각문자로 치환 - 바이트의 차이(반각은 1바이트, 전각은 2바이트로 표현됨)을 고려 할 것 ex) 5바이트가 남은 경우 전각문자는 두개만 삽입 가능 - 특히 공백('0x20')에 대해 주의하고, - 0xfee0 이상의 문자는 전각문자이므로 0xfee0를 빼서 일반 문자로 변환하면 반각문자가 나온다는 것을 이해 할 것. public static String fullToHalf(String str) { StringBuffer sb = new StringBuffer(); char c = 0; int length = PgStringUtils.length(str); for (int i = 0; i < le..