목록전체 글 (82)
호비시의 끄적끄적
Singleton Pattern 싱글톤 패턴이란 디자인 패턴중 하나로, 애플리케이션이 시작될 때 객채의 인스턴스가 오직 1개만 생성되는 패턴을 말한다. 사용하는 이유 메모리 낭비 방지 하나의 인스턴스만 고정 메모리 영역에 생성하기 때문에 해당 객체에 접근할 때 메모리 낭비를 방지할 수 있다. 속도 빠름 이미 생성된 인스턴스를 활용하기에 속도 측면에서 이점이 있다. 데이터 공유하기 유리 전역으로 사용하는 인스턴스이기 때문에 다른 여러 클래스에서 데이터를 공유하기 쉽다. 주의할 점 싱글톤 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유할 경우 다른 클래스의 인스턴스들 간에 결합도가 높아진다. 따라서 수정이 어려워지고, 테스트하기가 어렵다. 또한 멀티스레드 환경에서 문제점이 많다. 여러개의 인스턴스가 생..
Static 선언 class StaticSample{ // non - static 필드, 메소드 int n; void g() { ... } // static 필드, 메소드 static int m; static void f() { ... } } 특성 static 멤버는 클래스당 하나만 생성되는 멤버로서, 동일한 클래스의 모든 객체들이 공유한다. non-static 멤버는 객체가 생길 때 함께 생성되고, 객체가 사라지면 함께 소멸된다. 그러나 static 멤버는 프로그램을 시작할 때나 클래스 로딩 시에 생성된다. 그러므로 객체를 생성하기 전에 staic 멤버를 사용할 수 있다. 또한 생성된 객체가 소멸 후에도 static 멤버는 여전히 살아 있으며, 프로그램이 종료할 때 함께 소멸된다. static meth..
Spring Security 인증과 인가 인증 : 사용자가 본인이 맞는지 확인하는 절차 인가 : 인증된 사용자가 요청한 자원에 접근권한 여부를 판단하는 절차 Security 인증 방식 credential : 아이디 + 비밀번호를 이용 principal : 아이디 Security 의 주요 모듈 SecurityContext : Authentication를 가지고 있고 SecurityContextHolder에 담아 보관한다. Security 인증 과정 클라이언트가 아이디 비밀번호로 로그인 요청 AuthenticationFilter에서 UsernamePasswordAuthenticationToken을 생성하여 AuthenticationManager에 전달 AuthenticationManager는 Authenti..
Dead Lock 이란? 운영체제에서 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태. 다른 프로세스가 점유하고 있는 자원을 둘 이상의 프로세스가 서로 기다릴 때 무한 대기에 빠지는 상황이다. Dead Lock 이 발생하는 상황 Dead Lock이 발생하려면 한 시스템 내에서 4가지 조건이 동시에 성립할 때 발생한다. 상호 배제 한 번에 한 프로세스만 사용할 수 있어야 한다. 사용중인 자원을 다른 프로세스가 사용하려면 요청한 자원이 해제될 때까지 기다려야 한다. 점유 대기 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다. 비선점 이미 할당된 자원을 강제로 빼앗을 수 없다. 순환 대기 대기 프로세스의 집합이 순환 형태로 자원을 대기하고..
Stack Stack은 책을 차곡차곡 쌓은 것 처럼 LIFO(Last In First Out) 방식을 활용한 자료구조이다. Method push(data) : 맨 앞에 데이터 넣기 pop() : 맨 앞의 데이터 추출 peek() : 맨 앞의 데이터 보기 isEmpty() : 비어있는지 안 비어있는지 여부 반환 활용 웹 브라우저 방문기록 되돌리기(Ctrl + Z) Stack stack = new Stack(); stack.push(1); // 1 넣기 stack.push(2); // 2 넣기 stack.push(3); // 3 넣기 stack.peek(); // top 보기, 3 출력 stack.pop(); // top 추출, 3 꺼내짐 stack.isEmpty(); // false Queue Queue는..