java(3)
-
문자열 합치기 방식 비교 (concat VS "+" VS StringBuilder VS StringBuffer)
내가 작성한 로직중 "+"로 문자열을 합친 부분이 있었는데 코드 리뷰를 받던 중 +로 합치지말고 concat으로 합치라는 말을 들었다. 하지만 지적하신분이 "왜?" 라는 질문에 대답을 애매하게 "메모리 관리면에서 그게 좋다고 들었다"라고 하셔서직접 알아봤다. 1. concat()- String 클래스에서 기본 제공- 동작방식 : 합친 문자열을 String으로 재생성 ( -> 문자열을 추가할때마다 새로운 인스턴스가 할당되기에 성능, 속도 모두 좋지 않다.)- 사용시기 : 되도록 지양할 것!2. "+" 연산자- 동작방식 : JDK 1.5 미만 => 문자열 추가시 새 인스턴스에 할당 JDK 1.5 이후 => StringBuilder로 변환해서 처리 ( StringBuilder 객체 생성 ->..
2024.09.05 -
[SpringBoot] 파일 다운로드 구현
File Download Method웹개발을 하면서 제일 자주 잊어먹고 개발 할때마다 reference를 찾아서 하는 것이 파일 다운로드였다.막상 개발해보면 로직이 어렵지 않지만 어떤 모듈을 써서 개발했는지 헷갈려서 매번 다시 찾아서 했었다. 그렇게 개발하다보니 몇가지 다운로드 구현 방식의 패턴이 보였고직접 사용해 보지 못한 방식까지 찾아서 같이 포스팅한다. 방법 1. HttpServletResponse ( return Type : Void ) 직접 구현해본 다운로드 기능 중 가장 많은 비중을 차지 한 방식이다.이 방식은 Spring Framwork를 사용해보기전 Pure Java로 처음 Java 개발할 때부터 사용한 방식이라 자주 사용한 것 같다. @Controllerpublic class FileC..
2024.07.30 -
[PersonaAI - 비공개 프로젝트 d] myBatis useGeneratedKeys 안될때
회사 솔루션에 새로 들어갈 기능 일부를 맡아서 개발을 시작했다. 내가 맡은 부분은 트리구조로 사용자가 사내 on-premise로 운영중인 서버 내의 NAS 서버 디렉토리 안에 디렉토리를 자유롭게 생성하고 파일을 저장하고 그 파일을 RAG에 자동으로 Embedding 시키는 것 까지가 내 역할이었다. 순조롭게 개발되다가 예상치 못한 부분에서 막혀버렸다. 하지만 파일 저장 후 Embedding을 하는데 예외처리를 하면서 실패/성공 사유를 로그로 쌓으려고 DB에 저장된 파일 정보의 Index를 받아오려했지만 실패한것이다. 해당 솔루션은 속도이슈로 JPA 를 걷어내고 myBatis를 쓰고 있었기 때문에 무난하고 쉽게 insert 태그에 useGeneratedKeys를 활용해서 만들었었다. 디버깅 모드로 확인해 ..
2024.07.25