참조
블로그
블로그2
servlet과 webflux
요약설명
servlet
기존 서블릿 구조는 블록킹&&동기적을 기존구조로 동작한다 따라서 아래처럼 request 1개당 1개의 Thread를 활용하는 구조이다.
Thread per request model
Servlet Connector를 BIO에서 NIO로 변경하면 쓰레드 idle 시간을 20~30% 줄이면서 connector -> Servlet 쓰레드 할당 시점에 성능을 다소 올릴 수 있지만 Thread 할당 시점 이후부터는 다시 thread pe...
참고자료
https://colabear754.tistory.com/171
https://innovation123.tistory.com/196
스프링 시큐리티 getStart
refresh토큰 정책
Basic Authentication
유저가 접속 시도시 -> BasicAuthenticationFilter 에서 UsernamePasswordAuthenticationToken를 생성(HttpServletRequest에서 username, password 추출 및 객체화)
UsernamePasswordAuthent...
코틀린 기본 문법코틀린 출처
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291...
왜?
코드리뷰 당시에 @Transactional 에 대한 5가지 옵션에 대해서 각 설명을 해야하였으며, 지식의 부족함을 느꼈다.
@Transactional(readonly=true) 등의 옵션에 대해 각 특성을 확인해보자
@Transactional의 주요 옵션들
propagation: 트랜잭션 전파 방식을 정의합니다.
REQUIRED: 현재 트랜잭션이 존재하면 참여하고, 없으면 새로운 트랜잭션을 시작합니다.
REQUIRES_NEW: 항상 새로운 트랜잭션을 시작합니다. 현재 트랜잭션이 존재하면 일시 중단됩니다.
NESTED: ...
왜?간단하게 자바 주니어가 가르침 받아야할 목록 정리(요약)
출처
인프런강의
섹션1컨벤션
Get 은 인스턴스 반환, Find는 Optional 반환
isExist -> exist활용하기 (동사는 하나만)
Getter, setter 객체에 난발하지마라
객체는 자율적이고 객체지향적으로 코딩하자
user.setUserStatus(UserStatus.ACTIVE) -> user.login() 객체에 일을 시키자
Optional 사용하자 -> NPE 줄어듬
Collection.Map 남발하지마라 -&g...
왜?
테스트 코드는 불필요하다는 분위기가 형성되어있었고, SI, SM을 위주로 하다보니, 개발 시간이 우선순위가 높으므로, 유지보수, 안정성은 고려대상에서 제외되었다.
하지만 내가 개발하고 싶은 방향은 유지보수+안정성확보+테스트코드를 통한 걱정없는 배포! 을 위한 개발을 하고싶었다.
TDD란?
RED : 실패하는 테스트를 먼저 작성한다
GREEN : 실패하는 테스트를 성공시킨다.
BLUE : 리펙토링한다.
TDD 특징 및 장점
깨지는 테스트를 먼저 작성 -> 메서드(행동) 및 인터페이스에 대한 생각 강제된다.
What...
왜?
면접 질문에서 Vertual Thread 에 대한 질문을 받음. 답변하지 못함.
CompletableFuture는 기존 사용하던 비동기 API 였다.
둘을 비교해보고 특성을 정리해본다
참조
망나니 개발자님 블로그
Vertual Thread VS CompletableFuture 차이
OS Thread VS JAVA Thread
기존 CompletableFuture
특징
비동기 작업 — 결과를 기다리는 동안 메인 스레드를 차단하지 않습니다.
콜백 — future가 완료될 때 실행할 콜백을 등록할 수 있습니다.
연...
왜?
SOLID 원칙 중에 하나
면접에서 설계도를 리뷰하며, 단일 책임 원칙에 따라 기존 코드가 어떻게 변경되어야하는지 정확히 대답하지 못했다.
따라서 예시를 통해 재학습하기로 결정했다.
참고
출처1
단일 책임 원칙이란?
하나의 클래스로 너무 많은 일을 하지 말고 딱 한 가지 책임만 수행하라는 뜻이다
변경 사항이 일어났을 경우, 단일책임원칙을 지켰다면, 하나 클래스 내용만 변경될 것이다.
잘못된 예시
회계팀, 인사팀, 기술팀이 사용하는 메서드는 모두 calulateExtraHour() 에 의존적이다.
만약 인사팀에서 해...
https://www.grepiu.com/post/9
자료 구조
hashmap
linkedhashmap
해시 충돌과 완화 방법으로 hashmap은 separate chaining 기법을 사용하며, 한 버킷에 중복되는 index를 가진 entry를 나열한다. -> 단점으로는 최대 O(n)이 일어날수있다. 하지만 버킷이 많이없으므로 메모리 비용을 아낄수있다.
hashset
linkedhashset
arraylist
linkedlist
https://velog.io/@95qwer/%EC%9E%90%EB%B0...
왜?
팝업 테이블에는 1:N 관계로 이용권, 장치, 이미지 등이 존재하였다.
요구사항
매번 팝업을 등록 시 기존에 중복되는 팝업 valid
(이용권+기간+장치를 체크, 중복되는 팝업이 없는지 체크)
poc / 이용권 / 기간 하나라도 겹치는것이 있다면 노출 불가
전체(all) 등록시 -> [전체(all), 유료(paid) 이용권별, 무료(free)] 노출기간 중복 체크
무료(free) 등록시 -> [전체(all), 무료(free)] 노출기간 중복 체크
유로(paid) 등록시 -> [전체(all), 유료(...