세션은 통로 , 연결하는 통로를 의미하는데
웹에서는 http는 비연결지향이기 때문에 모호하다 그래서 웹에서는 시작에서부터 종료될때까지를 세션으로 본다 이 시작과 종료를 어떻게 볼지 생각해봐야한다.
세션의 트래킹 모드
이 세션을 어떻게 식별하고 저장하고 보내는지
set-Cookie로 header에 포함해서 나간다.
(사람이 하나여도 브라우저가 여러개면 그 브라우저당 하나씩 부여된다)
멜론? 비로그인? 재생목록? 부하 분산을 위해서 클라이언트에 쿠키를 남겨둔다.
단점 :
1. 마샬링, 직렬화 (요청을 받은쪽 역직렬화, 언마샬링)
2. 데이터의 사이즈가 일정 부분이하로 제한되어있다.
3. 쿠키가 클라이언트에 있는 것 언제든지 지울수 있다. 누구나 열어 볼수 있 다. 보안에 취약하다.
그래서 쿠키라는 트래킹 모드도 이 단점을 고스란히 가지고 있다.
제일 안전한 종료는 invailidate처리
그래서 나머지 종료 이벤트를 써야했던것
timeout,브라우저 종료(반드시 그런것은 아니다. timeout과 같다), 쿠키삭제
세션과 쿠키의 개념이 중요해서 기술 면접에 종종 등장하니 잘 정의해두자
부하를 신경써야한다. 그래서 속성데이터를 지워야할 수도 있다.
공유데이터맵 SCOPE영역의 차이점을 이야기하라 반드시 생명주기를 논한다.
모델 2 적용한 인원 제공페이지
form 데이터 전송시 브라우저에 걸려있는 서블릿 페이지로 전송된다.
멤버 이름
멤버 페이지 주소
멤버 식별코드
VO(ValueObject), DTO(DataTransferObject), MODEL
한가지 객체의 상태를 담기 위한녀석
자바빈 이해, Scope를 어디에 써야하는지 이해
탐색기 로컬 파일, 저기서 서버파일을 탐색기 구현해보기, 비동기 요청으로, 파일 복사, 이동, Control + 이동시 복사, treeUI : fancytree(https://github.com/mar10/fancytree)
이 API 활용해볼것
회원 가입 페이지도 만들어주기
이메일, 이름, 패스워드
모델 방식 제한 없음, 최대한 많이 써보자
인메모리 DB
레이어드 아키텍처(DAO, 저장 위치가 인메모리 DB)
getInstance()가 두개 이상의 쓰레드에서
두번 불려진다면 더 이상 싱글턴이 아니게 된다.
동기화를 해서 락을 걸더라고 인스턴스 생성이 오래걸리는데 생성하는 쓰레드가 아닌 다른 쓰레드에서 생성하는 동안 접근을 할 수 있다 그러면 getInstance()를 다시 부르게 되는데 이렇게 되면 싱글턴 객체가 하나가 아닌 두개가 되게 된다.
검색어 : multi thread singleton
참고1 : https://medium.com/@joongwon/multi-thread-%ED%99%98%EA%B2%BD%EC%97%90%EC%84%9C%EC%9D%98-%EC%98%AC%EB%B0%94%EB%A5%B8-singleton-578d9511fd42
참고2 : https://ciwhiz.tistory.com/284
1과제가 수월해 질것이다.