본문 바로가기

프로그래밍

(13)
[ORACLE] Null 속성 이해 1. Null 값의 연산은 언제나 Null이다 - Null 값은 '공백이나 숫자 0' 과는 전혀 다른 의미 - '아직 정의되지 않은 미지의 값' 또는 '현재 데이터를 입력하지 못하는 경우'를 의미 - 주문 데이터 -주문번호주문금액주문취소금액1100,00020,000215,000 SELECT 주문금액 - 주문취소금액 COL1 , NVL(주문금액 - 주문취소금액, 0) COL2 , NVL(주문금액, 0) - NVL(주문취소금액, 0) COL3 FROM 주문  - SQL 수행 결과 -COL1COL2COL380,00080,00080,000 015,000 2. 집계함수는 Null 값을 제외하고 처리한다(1) SUM- 주문 데이터 -주문번호주문금액주문취소금액1100,000 215,000 340,00..
HikariCP 커넥션 지연 이슈 오라클 버전업 11g -> 19c 이후 HikariCP 커넥션 30초 지연이슈가 발생함 구글링을 통하여 urandom 변경 등 시도해봤지만 해결되지 않음 사용중이던 ojdbc8 버전이 19.3.0.0 이었는데 19.6.0.0 또는 그이상으로 변경시 해결됨 개발기도 환경은 동일한데 왜 운영기에서만 발생한건지는 확인하지 못함 * 실제 미들웨어나 서버 설정에 따라 pom.xml 등 디펜던시에 명시된 라이브러리가 사용되지 않을수 있음 예로 jeus에 기본적으로 별도 라이브러리 관리를 하고 해당 라이브러리를 참조해서 사용
[Spring] 동작 원리 Spring 동작 원리는 아래 그림과 같다. 1. DispatcherServlet : 최초 요청을 받는 역할 2. HandlerMapping : 해당 요청을 처리할 Controller를 찾는 역할 3. Controller : 비즈니스 로직을 처리(Service -> Repositoy -> Database)하고 뷰 정보를 담아서 리턴 4. ViewResolver : 실제 뷰를 찾는 역할 5. View : 화면 표시 처리 - 참고 : https://starkying.tistory.com/entry/Spring-MVC-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC-%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C
[Spring] Transaction marked as rollbackOnly 스프링의 선언적 트랜잭션(@Transactional) 내부 메소드 내에서 예외를 잡아서 처리하는데 커밋될거라는 예상과 달리 Transaction marked as rollbackOnly 예외가 발생하면서 롤백되는 현상이 있었습니다. 상황 코드 @Service @Transactional public class AService { @Autowired private BService bService; public void test() { try { bService.runtimeExceptionTest(); } catch (RuntimeException re) { log.warn("BService RuntimeException", re.getMessage()); } } } @Service @Transactiona..
[Java] jar 내부 파일 확인 안녕하세요. 오늘은 log4j, logback 관련 취약점 개선을 진행하는 과정에서 jar로 묶여서 실행되는 배치 시스템이 있어서 빌드 후 서버에 배포하여 정상적으로 업데이트된 라이브러리가 빌드됬는지 확인이 필요하여 jar -tf 파일명.jar 명령어로 내부 파일을 확인한 경험을 작성해봅니다. 명령어 jar -tf 파일명.jar 아래와 같은 구조로 조회되며, BOOT-INF/lib 밑에 업데이트된 라이브러리 확인 example.jar | +-META-INF | +-MANIFEST.MF +-org | +-springframework | +-boot | +-loader | +- +-BOOT-INF +-classes | +-mycompany | +-project | +-YourClasses.class +-li..
[ORACLE] LISTAGG 사용하여 여러행을 하나의 컬럼으로 합치기 오늘은 업무를 진행하면서 데이터 추출요청으로 특정기간 고객별 상위 매출 3건의 브랜드를 추출해달라는 요청이 있었습니다. 예전에 MS-SQL를 사용할때 STUFF와 FOR XML PATH를 이용하여 조회했던 기억으로 오라클도 관련 방법을 검색했더니 LISTAGG를 사용하는 방법이 있어서 관련 내용 간단히 작성해봅니다. LISTAGG는 11g부터 사용가능하며 9i는 XMLLOG, 10g는 WM_CONCAT등을 사용하여 처리하여야 합니다. 샘플테이블 회원번호 매출일자 브랜드 1 2022-01-01 샤넬 1 2022-01-03 루이비통 결과 회원번호 브랜드 1 샤넬,루이비통 사용방법 SELECT LISTAGG(브랜드, ',') WITHIN GROUP (ORDER BY 매출일자) OVER (PARTITION BY..
[Python] 이미지파일 용량 줄이기 파이썬 Pillow 라이브러리를 사용하여 이미지파일 용량을 간단하게 줄일수 있는 방법이 있어서 작성해봅니다. #!/usr/bin/python # -*- coding: utf-8 -*- import os from PIL import Image path = 'C:/Users/HS/Desktop/사진_이름변경/' # 원본 폴더 resultPath = 'C:/Users/HS/Desktop/사진_크기변경/' # 대상 폴더 if not os.path.exists(resultPath): os.mkdir(resultPath) list = os.listdir(path) list.sort() for filename in list: file = path + filename img = Image.open(file) img.s..
[Python] 파일 이름 일괄 변경하기 프로젝트 진행 중 임직원 사진파일을 일괄 등록해야 하는 작업이 있었습니다. 전달받은 사진파일의 이름 패턴은 "사번_이름" 형태였고, 시스템에서 읽어오는 패턴은 "사번"이어서 일괄적으로 사진파일의 이름을 "사번"으로 변경해야 하는 작업이 필요하여 파이썬을 사용하여 간단하게 작업한 내용을 작성해봅니다. #!/usr/bin/python # -*- coding: utf-8 -*- import os import shutil path = 'C:/Users/HS/Desktop/사진/' # 원본 폴더 resultPath = 'C:/Users/HS/Desktop/사진_이름변경/' # 대상 폴더 if not os.path.exists(resultPath): os.mkdir(resultPath) list = os.listd..