분류 전체보기(68)
-
[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 -
JVM·JRE·JDK 개념 정리
현업에서 Java 프로젝트 세팅을 하면서 간간히 JVM,JRE를 볼때가 있다. 여기 저기 찾아가면서 세팅은 했지만 정확한 개념을 모르니 왜 이렇게 세팅을 해야하는 지 불분명해서 찾아봤다. JVM ( Java Virtual Machine ) JVM을 비유하자면 프로그램이라 할 수 있다. Java는 컴파일 언어이다.그리고 이 컴파일은 Java 코드를 바이너리의 기계어로 바꾸는 작업을 말하고 그 작업을 하는 대상이 컴파일러이다. 이 컴파일되어 바이너리 기계어로 바뀐 자바 코드를 OS등의 컴퓨터의 환경에 맞게 언어가 작동하도록 하는 프로그램인 것이다. 즉, 바이트 프로그램을 돌리기 위한 프로그램이다. JRE ( Java Runtime Environment ) JRE는 말 그대로 자바 런타임 환경이다 Ja..
2024.07.09 -
[OracleDB] SCOTT 계정 활성화 (19c 버전)
오랜만에 sql 공부나 다시 하려고 오라클 다운 받아서 예전 처럼 scott 계정을 활성화 하려 했더니scott계정이 존재하질 않는다... 알고 봤더니 19버전 부터는 scott 계정을 지원하지 않는 거였다....( 대책없이 그냥 최신버전 다운 받았더니 이런일을 겪는다....) 다시 다운 받자니 OracleDB는 삭제 과정이 귀찮고 다운로드 시간도 오래걸리기에 그냥 19버전에서 방법을 찾기로 결심했다. 많은 시도가 있었지만 찾은 방법은 의외로 간단했다.1. SYS 계정으로 접속CMD 창을 열고 다음을 입력sqlplus sys/설정한비밀번호 as sysdba >> 다음에 접속됨: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production..
2024.07.03 -
[기본문법] 2. 변수
C언어의 변수 선언은 Java와 매우 흡사하다. 하지만 몇가지 차이점이 있는데 1) 가비지 컬렉션이 없다 ㄴ> C언어는 garbage collection을 제공하지 않는다. 그래서 초기화가 중요하다. 2) 기본 자료형 long long / long double ㄴ> 8바이트 혹은 그 이상의 크기를 가진 자료형을 가지고 있다. 3) 상수 선언 ㄴ> Java는 상수 선언시 final를 붙이지만 C언어에서는 const로 선언을 한다. int main(){ const int num = 10; int const num2 = 15; } => 위와 같이 const와 자료형의 순서는 상관없다.
2024.04.15 -
[기본문법] 1. 표준입출력 함수
stdio Standard I/O를 줄인 단어로 STandard Input/Output 을 의미한다. 말그대로 표준입출력을 뜻하는데 이 함수를 헤더에 넣어줘야 데이터 입력 및 출력이 가능해진다. 1. 선언 방법 #include int main() { return 0; } #include는 소스코드 파일 내에서 다른 헤더파일이나 라이브러리를 포함시키는 역할을 한다 .h는 해당 메소드에 '.'좌변과 관련해서 헤더파일을 추가하겠다란 의미이다. C에서는 main문 선언이 없으면 에러가 생긴다. 그래서 main문은 필수로 들어가야한다. main문 앞에 선언한 데이터 타입은 해당 메소드가 반환할 return 타입이다. 즉 저 메소드는 stdio라는 표준입출력 함수를 헤더파일로 포함하는 정수를 반환하는 메인 메소드로..
2024.04.15