전체 글
PriorityQueue 살펴보기
공부하게 된 계기 PriorityQueue를 꽤나 자주 사용하지만, 우선순위로 정렬하여 결과를 보여준다라고만 생각하고 있었습니다. 우선순위로 정렬을 하니, 전형적인 큐의 특성만 생각하여 넣을때마다 선형적으로 정렬되어 들어있을거라고 막연히 생각했었습니다. 최근에 알고리즘 문제를 풀며 PriorityQueue를 쓰게 되었는 데, 디버깅 과정에서 예상과는 다르게 정렬되어 있지 않은 것을 발견하고 왜 그런가를 확인해보게 되었습니다. public class Person { private int age; private String name; public Person(int age, String name) { this.age = age; this.name = name; } public int getAge() { re..
정렬을 돕는 Comparable, Comparator
자바에는 정렬을 도와주는 인터페이스인 Comparable, Comparator 가 있습니다.Collection 을 통해 정렬을 간편히 수행할 수 있는 데, Comparable 이나 Comparator 를 구현하는 구현체이거나 람다를 이용하여 정렬방법을 구현해야 합니다. primitive 타입 배열과 같은 것들은 자연스러운 순서로 정렬이 됩니다.(Arrays.sort 는 DualPivotQuicksort 라는 알고리즘을 사용합니다.) Comparable Comparable 은 일반적으로 생각할 수 있는 정렬을 정의할 때 구현하는 인터페이스입니다. (물론, 꼭 그럴 이유는 없습니다만 JavaDoc 의 주석으로 되어있으므로, 일반적인 용례를 생각하면 그에 따르는 것이 혼란을 줄일 수 있습니다.) Compara..
Spring Security (7) - ExceptionTranslationFilter
ExceptionTranslationFilter AbstractSecurityInterceptor 의 하위 클래스에서 AuthenticationException 타입의 예외가 발생하면 처리하는 필터입니다. 처리할 수 있는 예외가 발생하였다면 (AuthenticationException, AccessDeniedException) 인증과 인가에 대한 처리를 해줍니다. 인증실패 - sendStartAuthentication 메소드 호출 인가실패 2-1. 익명사용자(비로그인) : sendStartAuthentication 메소드 호출 2-2. 로그인 사용자 : accessDeniedHandler 에게 처리를 위임 인가 실패 핸들러 커스텀 구현http.exceptionHandling() .accessDeniedH..
Spring Security (6) - LogoutFilter
역할 로그아웃에 대한 처리를 담당하는 필터입니다. 로그아웃 요청이 들어온 경우에만 적용되는 필터입니다. => 로그아웃일 경우에만 뭔가를 실행 LogoutHandler 로그아웃시 필요한 처리를 합니다 Composite 패턴으로 여러 핸들러를 중첩으로 사용할 수 있도록 합니다. CompositeLogoutHandler 가 해당 패턴을 사용할 수 있도록 하는 헬퍼클래스입니다. CsrfLogoutHandler, SecurityContextLogoutHandler 가 기본으로 등록되는 핸들러입니다. LogoutSuccessHandler 로그아웃 후의 처리를 합니다. SimpleUrlLogoutSuccessHandler 를 기본으로 사용합니다. logout options 다양한 옵션으로 로그아웃 처리를 할 수 있습..
Spring Security (5) - SecurityContextPersistenceFilter
SecurityContextPersistenceFilter 는 HttpRequest 와 HttpResponse 를 wrapping 한 HttpRequestResponseHolder 를 SecurityContextRepository 에게 전달하여 SecurityContext 를 반환받습니다. 접속정보가 없으면 SecurityContext 를 새로 생성합니다. 접속정보가 있으면 SecurityContextRepository 로부터 SecurityContext 를 가져옵니다. 저장 장소는 기본적으로 HttpSessionSecurityRepository 이며, 이 클래스는 HttpSession 에 SecurityContext 를 저장합니다. HttpSessionSecurityRepository 의 loadCon..