Garbage Collector
·
Study
💡 쓰지 않는, 불필요한 메모리를 제거한다. 명시적으로 불필요한 데이터를 표현하기 위해서 null 선언 객체는 일회성이고, 금방 사라진다(Unreachable)는 개념 아래에 힙 영역을 두 개로 나누게 되었다. 이 두 개의 힙 영역은 객체의 생존 기간에 따라 Young, Old로 나눈다 Young 새롭게 생성된 객체가 할당되는 영역 대부분의 객체가 Unreachable하다. Minor GC가 이루어진다. Old Young 영역보다 크지만 GC가 덜 이루어진다. Major GC가 이루어진다. Minor GC & Major GC 동작과정
로드 밸런서
·
Server
로드 밸런서란? 서버나 장비의 부하를 분산하기 위해 사용하는 장비 4계층(전송 계층) 이상에서 동작하며 IP주소나 4계층 정보, 애플리케이션 정보를 확인, 수정한다 주로 웹 서버의 부하를 분산한다. 로드 밸런서의 종류 1. L4 로드 밸런싱 일반적인 로드 밸런서 동작 방식 TCP, UDP 기반(포트 넘버) 4계층 정보로만 분산 처리하는 경우 2. L7 로드 밸런싱 - ADC(Application Delivery Controller) HTTP, FTP. SMTP와 같이 애플리케이션 프로토콜 정보를 기반으로 로드 밸런싱 수행 HTTP 헤더 정보, URI 정보 기반으로 프로토콜 이해한 후 부하를 분산 - ADC, Proxy 역할 수행 (Squid, Nginx에서 제공하는 리버스 프록시와 유사한 기능) 정적 콘..
File->MultipartFile
·
Spring
build.gradle dependency 추가 implementation 'commons-fileupload:commons-fileupload:1.4' compile 'commons-io:commons-io:2.11.0' File->MultipartFile 변환 코드 File file = new File(fileName); FileItem fileItem = new DiskFileItem("file", Files.probeContentType(file.toPath()), false, file.getName(), (int) file.length(), file.getParentFile()); try { FileInputStream fileInputStream = new FileInputStream(file..
20220717 WIL
·
Memorization
이번 주는 구현하느라 정신없는 날이었다...! MVP를 진행하는 동안 다뤄보았던 기술 스택을 정리해 보자면 WebClient를 공부했고 Lazy Subscription으로 MVC 패턴에 적용해 보았다. 😅 그 과정에서 Reactive Progrmming, WebFlux를 학습했으나 RestTemplate의 속도가 10%가량 빨라 프로젝트에는 RestTemplate를 주로 사용하고, JMeter를 적용해 Concurrent User에 대해 성능 테스트를 해 볼 예정이다. RestTemplate을 도입한 이유는 공공 API, 카카오맵 API를 이용하기 위함이다. 공공 API에서 배리어 프리 업장을 얻어오고, 공공 API 데이터를 검증하고 더 많은 정보를 얻어오기 위해 카카오맵 로컬 API(키워드 검색, 위도..
QueryDSL 사용 전 환경설정
·
Spring
QueryDSL이란? SQL과 유사한 구문으로 안전한 쿼리를 생성할 수 있는 광범위한 Java 프레임워크 재 JPA, JDO, SQL, Java 컬렉션, RDF, Lucene, Hibernate Search, MongoDB를 포함한 별도의 모듈을 사용하여 다양한 백엔드를 광범위하게 지원한다. IDE에서 코드 완성, 리팩토링이 가능하고 , Type-Safe, Syntax-Safe 하다! QueryDSL 설정을 해 보자! 1. build.gradle 설정 추가 plugins { id 'org.springframework.boot' version '2.7.1' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id "com.ewerk.gradle.p..
20220711 TIL
·
Memorization
Entity Class의 첫 설계가 중요한 것 같다! 자연 상태의 그대로를 저장하는 것이 좋은 것 같다. 현재 우리의 위도/경도는 String으로 선언되어있다. Repository에 있는 시작 위도/경도, 끝 위도/경도에 해당하는 범위에 있는 Store를 호출하고자 한다. 이 때 형변환이 필요하기 때문에 QueryDSL를 사용해보고자 한다. 현재 오류가 나는 QueryDSL 코드는 return queryFactory.selectFrom(store) .where(store.latitude.castToNum(Double.class).goe(latStart), store.latitude.castToNum(Double.class).loe(latEnd), store.longitude.castToNum(Double..