분류 전체보기
-
2022년 정리잡담 2023. 1. 1. 20:15
1월 - 17 ~ 18일 부산 여행 2월 - 3 ~ 4일 천안 카라반 여행 3월 - 3학년 1학기 시작 4월 - 7 ~ 8일 대부도 카라반 여행 6월 - 3학년 1학기 종강 : 성적 3.83 / 4 (전체 / 전공) - 30 ~ 7.1 연남동 에어비앤비 8월 - 1 ~ 2일 가평 카라반 여행 9월 - 3학년 2학기 시작 - 네터스 가입 - 일일백준 시작 - 16 ~ 23일 코로나 11월 - 일일백준 종료 : 최다풀이상 12월 - 3학년 2학기 종료 : 4 / 4.25 (전체 / 전공) - 22 ~ 23일 명동 여행 - 26 ~ 28일 친할머니 장례식 2022년에는 여행과 추억을 많이 쌓지 못했고 성적도 아쉽고 활동도 많이 하지 못했다. 하지만 네터스에서 주관하는 활동들을 거의 다 참여하면서 내가 하는 만..
-
디자인 패턴 (Design Pattern)의 개요Design Pattern 2022. 11. 10. 21:54
디자인 패턴(Design Pattern)이란 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책이다. 디자인 패턴을 사용해야 하는 이유 유연성 - 코드를 유연하게 만들어준다. 재사용성 - 코드를 재사용할 수 있게 한다. 공유 용어 - 공유 용어를 사용하면서 다른 사람의 코드를 더 쉽게 이해할 수 있다. 베스트 프랙티스 - 비숙련자도 소프트웨어 디자인을 배울 수 있다. 객체지향 프로그래밍에서의 디자인 패턴에 대해 알아볼 것이다. 카테고리 Creational patterns : 객체 인스턴스화 과정에서 사용하는 패턴이다. Abstract Factory Builder Factory Method Prototype Singleton Structural pat..
-
자바 서블릿 (Java Servlet) 정리프로그래밍 2022. 10. 31. 23:24
Java Servlet Specification 정리 - 서블릿 동작 원리를 알기 위해 정리하는 것으로, 세부적인 내용은 모두 생략했다. 1. Overview 1.1 What is a Servlet? 서블릿(Servlet)은 동적 컨텐츠를 생성하는 컨테이너에 의해 관리되는 자바 기반 웹 컴포넌트이다. 다른 자바 기반 컴포넌트처럼, 서블릿은 플랫폼과 독립적이다. 따라서 자바 기반 웹 서버라면 어느 플랫폼이던 실행 가능하다. 서블릿 엔진이라고도 불리는 컨테이너(Container)는 서블릿 기능을 제공하는 웹 서버 확장(Extension)이다. 서블릿은 서블릿 컨테이너에 의해 구현된 request/response 패러다임을 통해 웹 클라이언트와 상호작용한다. 1.2 What is a Servlet Contai..
-
이진 탐색 (Binary Search)CS/알고리즘 2022. 10. 29. 20:01
이진 탐색은 정렬된 배열에서 탐색 시간을 줄이기 위한 알고리즘이다. 배열 안에서 어떤 원소 E를 찾을 때, 단순 선형 탐색으로 구현할 경우 O(N) 시간이 걸린다. 하지만 이진 탐색을 수행하면 O(log N) 시간에 수행할 수 있다. 위 그림과 같이 크기가 7인 배열이 존재하고, 이 배열은 오름차순으로 정렬되어있다. 인덱스는 0부터 시작하여 6까지 존재하게 된다. 이진 탐색은 정렬된 배열의 가운데와 구해야 하는 원소를 비교하여 절반만큼 비교 범위를 줄여나가는 것이다. 위 그림에서 mid = (low + high) / 2 를 구하면, (0 + 6) / 2 = 3이고, 3번 인덱스의 값인 6과 비교하게 된다. 만약 구해야 하는 숫자 M = 7이라고 가정하자. 7은 mid보다 크므로, [low = mid + ..
-
Spring Web MVC 레퍼런스프로그래밍 2022. 10. 29. 19:40
1. Spring Web MVC Spring Web MVC는 Servlet API를 기반으로 구축되었다. 1.1 DispatcherServlet Spring MVC는 DispatcherServlet이라는 중앙 서블릿이 request를 처리하지만, 실제 작업은 대리자에 의해 수행된다. DispatcherServlet은 다른 서블릿들과 마찬가지로 java configuration이나 web.xml을 통해 선언되고 매핑되어야 한다. 그 다음, DispatcherServlet은 Spring configuration을 이용하여 request 매핑이나 view resolution, 예외 처리를 위한 대리자를 찾는다. 아래 코드는 자바 설정을 등록하고 DispatcherServlet을 초기화하는데, 이는 서블릿 컨테..
-
투 포인터 (Two Pointer)CS/알고리즘 2022. 10. 27. 22:19
투 포인터는 말 그대로 두 개의 포인터를 사용하여 탐색을 수행하는 알고리즘이다. 어떤 특정한 조건을 만족하는 쌍을 구하고자 할 경우, 단순 이중 루프를 이용하여 계산하면 O(N^2) 시간이 걸리는데, 이는 입력값 N이 100000만 넘어가게 되도 100억번을 수행해야 하므로 굉장히 느리다. 이 때 투 포인터 기법을 사용하면 O(N) 시간에 가능하게 된다. 투 포인터의 경우 보통 두 가지 경우로 사용할 수 있는데, 한 가지는 한 포인터는 배열의 맨 앞에, 다른 포인터는 배열의 맨 뒤에 위치하고 조건에 따라 점점 중간으로 가는 방식이고, 다른 한 가지는 앞이나 뒤에서 동시에 출발하여 다른 끝까지 도달하는 방식이다. 위 그림의 경우 첫번째 방식인데, 이 때 배열이 반드시 정렬되어 있어야 한다. 보통 오름차순으..
-
세그먼트 트리 (Segment Tree)CS/자료구조 2022. 10. 26. 22:27
세그먼트 트리는 구간 합을 구할 때 사용할 수 있다. 구간 합을 단순 반복문으로 linear하게 계산하면 O(N) 시간이 소요된다. 세그먼트 트리를 사용하면 O(log N) 시간에 구할 수 있어 더 빠르다. 위 사진은 0부터 5까지의 인덱스를 가진 배열, 즉 6개의 숫자가 들어있는 배열을 세그먼트 트리로 만든 것이다. 이진 탐색(Binary Search)의 메커니즘을 이용하여 트리를 만든다. 세그먼트 트리는 배열을 이용한 트리 구현 방법을 사용하는 것이 편하다. 이 때, 트리의 인덱스를 1부터 시작하게 만들면 index * 2 는 왼쪽 자식 노드를 가리키고, index * 2 + 1 은 오른쪽 자식 노드를 가리키게 되어 간편하다. 참고로 입력받을 배열도 인덱스를 1부터 시작하게 만드는 것이 구현하기 더 ..
-
스프링 시큐리티 레퍼런스프로그래밍 2022. 10. 24. 20:07
spring security reference 5.7.4 Servlet Applications - Sprint Security는 표준 서블릿 Filter를 이용하여 서블릿 컨테이너와 결합되있는 것으로 Servlet-based application에서는 사용하지 않아도 된다. 자동 설정 - springSecurityFilterChain 이라는 빈을 생성함으로써 서블릿 Filter를 자동 생성한다. - UserDetailsService 빈을 자동 생성한다. - 서블릿 컨테이너에 springSecurityFilterChain 빈을 자동으로 등록한다. 아키텍쳐 표준 서블릿 필터 리뷰 - 클라이언트가 request를 보내면, 컨테이너가 FilterChain을 생성한다. FilterChain 사용 예제 public..