GET 방식으로 URL 요청 시, 특수문자를 포함하면 "The valid characters are defined in RFC 7230 and RFC 3986"과 같은 오류가 발생하기도 합니다. 해당 이슈는 특정 버전 이상의 Tomcat을 사용하면 문제 발생하지 않지만 낮은 버전의 Tomcat에서는 종종 발생합니다. 해결 방법은 server.xml relaxedQueryChars 속성을 추가하는 방법입니다.1. Tomcat 에 추가(server.xml) 위와 같이 relaxedQueryChars 속성을 이용해 특수문자를 처리할 수 있습니다. 2. application.yml 파일에 추가server: tomcat: relaxed-query-chars: '[,],{,},(,),^,|,"' rel..

GC(Garbage Collection) 이란 더이상 사용하지 않는 객체를 메모리에서 삭제하는 작업입니다.GC 의 처리과정을 이해하려면 우선 JVM 메모리 구조에 대해 알 필요가 있습니다. JVM 의 동작 과정은 아래와 같습니다.1. Java Compiler 에 의해 .Java 파일은 Byte Code(.class) 파일로 변환됩니다.2. JVM 의 Class Loader 는 Byte Code(.class) 파일을 JVM 내로 로드하고 Link 작업을 통해 일련의 작업을합니다.3. 이후 실행 엔진을 통해 Byte Code 들을 명령어 단위로 실행시킵니다. 위 구조로 인해 JVM은 OS와 플랫폼 종류에 의존적이지 않고 독립적으로 Java 프로그램이 실행됩니다. 또한 자동으로 메모리 관리를 해주는데 아래..
application.yml 파일에 설정값을 입력하고 @Value 를 통해 데이터를 가져오는 방식에서, 값을 제대로 설정하였음에도 Null 값을 불러오는 경우가 종종 있습니다. 그럴 땐 @Value 를 작성한 Service 를 new 로 호출하지 않았는지 확인할 필요가 있습니다. 기본적으로 Spring 은 DI 컨테이너가 @Autowired 나 @RequiredArgsConstructor 를 통해 인스턴스를 싱글톤으로 유지합니다. Spring 이 실행될 때, @Value 값이 맵핑된 상태로 인스턴스가 유지가 되던중 new 를 만나게 되면 새로운 인스턴스를 생성해 @Value 값이 맵핑된 변수는 Null 이 됩니다. # application.ymlspring: file: profile-path: f..
유용한 단축키 모음입니다. 계속해서 추가로 작성할 예정입니다.Eclipse메서드 참조 찾기 : Ctrl+Shitf+G미사용 메서드 삭제 : Ctrl+Shitf+O소스 정렬 : Ctrl+Shitf+F소스이동 : Alt+방향키 IntelliJ소스정렬 : Ctrl+Alt+L미사용 메서드 삭제 : Ctrl+Alt+O전체바꾸기 : Ctrl+Shift+R전체검색 : Ctrl+Shift+F메서드 참조 찾기 : Alt+F7소스이동 : Ctrl+Alt+방향키
Postman 을 사용하다보면 Body 에 주석을 달고 싶을때가 있습니다. 그럴땐 Pre-req 탭을 통해 아래 스크립트를 작성하면 됩니다.if (pm?.request?.body?.options?.raw?.language === 'json') { const rawData = pm.request.body.toString(); const strippedData = rawData.replace( /\\"|"(?:\\"|[^"])*"|(\/\/.*|\/\*[\s\S]*?\*\/)/g, (m, g) => g ? "" : m ); pm.request.body.update(JSON.stringify(JSON.parse(strippedData)));} 아래처럼 reque..
Spring + Mybatis 사용 시, @Mapper를 사용해 Auto Commit을 한다면 1 row를 insert 할 때, 1번의 Transaction 이 발생하게 됩니다. 이는 DB의 과도한 Transaction을 발생시켜 문제를 야기하기도 합니다. 이를 해결하기 위해 1,000건씩 잘라 Update 하는 방법에 대해 간략히 알아보겠습니다. 1. SqlSessionFactory 주입@Autowiredprivate SqlSessionFactory sqlSessionFactory; 2. ExcutorType 작성SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH); 3. 1000건씩 Batch Updateint cursor..
객체 지향(Object-Oriented Programming) 설계와 특징에 대해 기록한 페이지입니다. SOLID 원칙 : 객체지행 프로그래밍의 5가지 설계 원칙1. 단일 책임 원칙(SRP, Single Responsibility Principle) ▶ 하나의 모듈은 하나의 책임을 가져야 한다는 원칙 2. 개방 폐쇄 원칙(OCP, Open Closed Principle) ▶ 확장은 열려있고, 수정은 닫혀있어야 한다는 원칙 3. 리스코프 치환 원칙(LSP, Liskov Substitution Principle) ▶ 하위 타입은 상위 타입을 대체할 수 있어야 한다는 원칙 4. 인터페이스 분리 원칙(ISP, Interface Segregation Principle) ▶ 용도에 맞는 인터페이스..
본인이 만들어둔 프로젝트를 Git 에 올리고 싶다면, 아래와 같은 순서로 입력하면 됩니다.git init --initial-branch=maingit remote add origin http://ip:port/경로/프로젝트.gitgit add .git commit -m "init"git push --set-upstream origin main 혹시 아래와 같은 오류가 발생한다면, Git 에선 관련기록이 없던 두 프로젝트를 병합할 때, 기본적으로 merge 를 거부하기 때문에 발생합니다.fatal: refusing to merge unrelated histories따라서 아래 명령어를 이용하여 병합 허용 설정을 해주어야 합니다.git pull origin main --allow-unrelated-his..
- Total
- Today
- Yesterday