전체 글(69)
-
[window] 포트 kill 하는법
로컬에서 프로젝트를 실행하다보면 종종 닫았던 프로젝트가 여전히 백그라운드에서 돌고 있어서 port가 곂치는 문제가 생기기도 한다.이럴 때 여전히 돌고 있는 서버 포트를 꺼줘야하는데 window command는 익숙치 않기 때문에 정리해둔다.. 1. pid 조회netstat -an | find "포트번호" 2. killtaskkill /PID [프로세스ID] /F
2024.09.02 -
[GabageCollection] 가비지 컬렉션 알고리즘 종류와 구조
흔히 Java를 사용할 때의 장점을 말할 때 GC(GabageCollection)이 자주 나온다. 메모리 관리를 Java에 내장된 GC가 자동으로 해주면서개발자들이 일일이 메모리 관리에 시간을 쓸필요가 없기 때문이다. ( Java 이전의 언어들은 GC 같은 기능을 제공해주고 있지 않으나 파이썬이나 Node.js 계열 같이 자바 이후로 두각을 보이는 언어는 모두 자체적으로 메모리 관리 기능이 있다고 한다.) 오늘은 GC에 대한 정리를 하려한다. Gabage Collection GC(Gabage Collection)는 C언어 등에서 처럼 객체의 메모리를 직접 삭제해주는 로직이 없어도 자동으로 사용되지않는 객체에 할당된 메모리를 삭제해주는 역할을 한다. 여기서 메모리는 JVM의 힙(heap) 영역을 가리킨다...
2024.08.20 -
[ts] 1. 프로젝트 설정 및 실행
TypeScript 프로젝트 세팅타입스크립트는 데이터 타입을 명시하지 않는 기존 JS에서 일어나는 단점을 보완하기 위해 생겨났다.타입 명시가 안되었을 경우 데이터 핸들링과정에서 어려움이 따르고 디버깅하는 시간이 길어지는 게 대표적이다.1. TypeScript 설치$ npm init-y$ npm i -g typescript$ npm i typescript -D$ npm i -D ts-node 2. tsconfig.json 생성$ tsc --init 3. tsconfig.json 옵션 설정{ "compilerOptions": { "strict": true, "module": "commonjs", "moduleResolution": "node", "l..
2024.08.19 -
[spring] Webclient(1) - 개요: 스트리밍 데이터 처리
회사에서 LLM관련 프로젝트를 진행하면서 스프링부트로 구축한 Was 서버에서 AI 관련 서버로 부터 받은 응답값을 스트리밍으로 클라이언트에 값을 던져줘서 한글자씩 데이터가 출력되도록 보이는 비동기 통신 기능을 개발해야할 일이 생겼었다. 이를 개발하기 위해 가장먼저 떠오른 방법은 Web Socket 이었다. 실시간 채팅 기능 개발을 할 때 사용해 본 적이 있어서 먼저 떠오르긴 했지만 이 방식은 서버의 리소스 소모가 굉장히 심하다란 단점을 가지고 있다.일단 서버 로그부터 서버와 커넥션 연결관련 로그를 계속 출력하게 되기 때문에 디버깅 관점에서도 물론이고 로그의 용량문제부터 리소스를 아낌없이 쓰게된다. 또한 웹소켓은 버전 관리에서도 어려움을 겪는다. 웹소켓 버전이 바뀌면 수많은 버그와 맞서야한다. (이건 팀장..
2024.08.19 -
[SVN] ignored하기
(STS 기준) SVN Ignore 하는 법 형상관리하는 툴을 쓸 때면 커밋이 되면 안되는 파일이나 디렉토리 등이 있을것이다.이럴 때는 수동으로 그 부분만 빼서 커밋할 수도 있겠지만 고정적으로 커밋하면 안되는 부분일 경우Ignore 라는 방식을 사용한다. Ignore 을 하면 해당 경로는 commit 시 배제 되어 저장된다. Package Explorer > Ignore 하고 싶은 파일 우클릭 > Team > Add to svn:ignore... 클릭> 확인 클릭 (Ignore 내역 환경설정에 저장될 이름 설정인데 그냥 default로 해도 됨) 난 이미 ignore 시켜서 비활성화된 상태이다
2024.08.01 -
[PersonaAI - 비공개 프로젝트 d-3] GC Pause Full 발생
프로젝트를 개발 서버에 배포하고 테스트 진행중 웹이 멈추는 현상이 발생했다. 바로 해당 서버의 로그를 확인해보니 원인은 GC Pause Full 가비지 컬렉터의 메모리 문제였다. 일단은 서버복구가 급선무였고 마침 이전 프로젝트에서도 Java 서버에 heap out 이 된 경험이 있어서 root.xml에 가서 메모리를 늘려주고 기존에 멈춰버린 프로젝트를 직접 kill 하고 재실행 해줬다.( kill을 해줬는데 한번에 안죽어서 당황했다. 이런 상황에선 kill 하고나서 한번더 ps -ef로 다시 확인해보자!!) 하지만 이 상태로는 다시 GC의 메모리 문제가 생기는 것은 시간문제였기 때문에 소스 수정에 들어갔다. GC에 문제가 생길만한 부분은 불필요한 변수 또는 반복적인 객체 선언 그리고 데이터를 제대로 ..
2024.07.31