본문 바로가기
728x90
반응형

분류 전체보기129

HashMap이 저장되는 형태와 원리, heap, stack 메모리구조 자바 11 에서 HashMap 라이브러리를 살펴보았습니다.    최종 형태부터 보자면 Array가 있고 거기에 LinkedList와 Red-Black Tree가 주렁주렁? 달려있는 모양입니다. 열매마다 key, value가 저장되어 있습니다.   1. 기본 방식 일반적인 HashMap을 사용하는 코드입니다. 메모리영역을 그려보면 다음과 같습니다. new HashMap(); 을 하면 HsahMap 인스턴스가 생성됩니다. put을 하게 되면 HsahMap 인스턴스 안에 Bucket Array가 생성됩니다. 한칸 한칸을 버킷이라고 합니다.Bucket Array 는 Entry 객체 array 입니다. Bucket Array의 최초 길이는 16입니다.  Node 객체는 Entry 인터페이스의 구현체입니다. key.. 2024. 6. 10.
[SpringBoot] 필터, 인터셉터 호출 흐름, 적용 방법 필터 - 서블릿이 제공하는 기능인터셉터 - 스프링이 제공하는 기능 웹과 관련된 공통 관심사항을 처리함적용되는 순서와 범위, 사용방법이 다름인터셉터가 더 편리하고 다양한 기능을 제공함   필터 필터 제한HTTP 요청 -> WAS -> 필터 -> 디스패쳐 서블릿 -> 컨트롤러 //로그인 사용자 HTTP 요청 -> WAS -> 필터(적절하지 않은 요청이라 판단, 서블릿 호출X) //비 로그인 사용자  필터 체인HTTP 요청 -> WAS -> 필터1 -> 필터2 -> 필터3 -> 서블릿 -> 컨트롤러필터는 체인으로 구성되는데, 중간에 필터를 자유롭게 추가할 수 있다. 예를 들어서 로그를 남기는 필터를 먼저 적용하 고, 그 다음에 로그인 여부를 체크하는 필터를 만들 수 있다.  필터 인터페이스를 구현하고 등록하면.. 2024. 5. 20.
쿠키, 세션 구현, 동작 원리 이해를 위한 쿠키, 세션 구현. 실제로는 이미 다 구현이 되어있음.    쿠키 만들기public class MyComtroller { public String login(... , HttpServletResponse response) { // 쿠키에 시간정보를 안주면 세션쿠키(브라우저 종료 시 모두 삭제) Cookie idCookie = new Cookie("memberId", String.valueOf(loginMember.getId())); response.addCookie(idCookie); }} HttpServletResponse 객체를 추가하고 new Cookie 로 쿠키를 만들어서 response 객체에 추가쿠키 이름 : memberId / 값 : 회원의 idRespo.. 2024. 5. 17.
bindingResult 가 쌓이는 과정, @Valid BindingResult 는 @ModelAttribute, @RequestBody, @RequestParam 뒤에 올 수 있다.@PathVariable 만 BindingResult를 사용할 수 없다. 에러가 나면 바로 종료한다.  validation 체크(로직 있는 경우) ex) @NotNull, @Lenth(12, 15)validation 미충족시 스프링이 new FiendError(...) 객체 생성new FieldError(objectName:product, field:price, rejectedValue:"aaa", bindingFailure:true, codes:new String[]{"info.product.price"}, arguments:new Object[]{1000, 10000}, d.. 2024. 5. 16.
Spring MVC 구조와 동작 원리 인프런에서 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의를 학습하고 정리한 내용입니다.모든 이미지는 제가 다시 만든 것이므로 복사해서 쓰시는 경우 출처를 남겨주시기 바랍니다.     1. http request를 처리 할 수 있는 핸들러(컨트롤러) 있는지 찾기    2. 해당 컨트롤러를 동작시킬 수 있는 어댑터 찾기    3. 어댑터를 통해 컨트롤러 실행을 요청한다.    4. 어댑터는 필요한 리졸버를 찾아 컨트롤러에게 파라미터를 전달해주도록 한다. 컨트롤러를 보고 필요한 리졸버를 찾고(위에선 3개), 이 3개를 for loop을 돌려 실행한다. 스프링은 30개가 넘는 ArgumentResolver 를 기본으로 제공한다. (인터페이스 HandlerMethodArgumentResolver 의 .. 2024. 5. 9.
728x90
반응형