전체 글
-
[3] Filter심층분석 2024. 3. 12. 18:10
Filter란 client의 요청과 응답을 정제하는 역할인데, Dispatcher Servlet에 요청이 전달되기 전 / 후에 url 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수 있는 기능을 제공합니다. ( 다중 필터가 모여 체인을 형성할 수 있습니다. ) 즉, 필터는 스프링의 독자적인 기능이 아니라 톰캣과 같은 웹 컨테이너에 의해 관리가 되는 것이고, 스프링 범위 밖에서 처리되는 것이다. 주로 Filter는 요청에 대한 인증, 권한 체크등에 사용됩니다. 구체적으로 들어온 요청이 디스패치 서블릿에 전달하기 전에 검사해 인증 토큰 유무 / 유효성 검사를 합니다. ( 저는 프로젝트 구현할때 JWT를 구현하는데 있어서 사용하였습니다. ) https://github.com/T-Notes/Tnote-Ba..
-
[2] Redis심층분석 2024. 3. 12. 01:08
Redis 소개 Redis는 key-value 구조의 비정형 데이터를 저장하고 관리하기 위한 DBMS입니다. 데이터베이스, 캐시, 메시지 브로커로 사용되며 In-Memory 데이터 구조를 가진 저장소이며, 오픈소스로써 NoSQL로 분류되기도 합니다. ( PUB/SUB 형태의 기능을 제공하여 메세지 전달이 가능합니다. ) 또 Redis는 Remote Dictionary Server의 약자로써 외부에서 사용 가능한 key-value 쌍의 해시맵 형태의 서버라 별도의 쿼리문 없이 key 값으로 빠르게 데이터를 가져올 수 있습니다. 하지만, 메모리에 데이터를 저장하기에 저장 공간에 제약이 있어서 주로 보조 데이터 저장소로 사용되며, 이를 극복하기 위해서 레디스 클러스터 기능을 제공하여 주 저장소로도 사용합니다...
-
[Tnote] npm를 통해서 https로 변경하기T-note 2024. 3. 11. 19:12
Http를 Https로 변경하는 방법은 무료 / 유료로 나눠지기도 하며 정말 다양한 방법이 있는거 같다. aws를 통해서 ssl 인증서를 받거나, sslforfree 사이트에서 무료 인증서를 받아서 진행할 수 있다 나는 Nginx를 통해서 간편하게 진행해보았다. Nginx Proxy Manager (NPM)은 오프 소스 웹 인터페이스를 사용하여 Nginx reverse proxy를 관리하기 위한 툴인데, docker를 사용하여 배포 및 설치할 수 있어서 되게 간편하다 내가 NPM을 사용하게 된 이유는 1. SSL 인증서 관리 : 무료이면서 Let's Encrypt 인증서를 자동 갱신청하여 HTTPS 보안 연결을 쉽게 할 수 있기 때문이다. 2. 웹 기반 UI : 처음하는 입장에서 NginxProxyMan..
-
[알고리즘] 상어 초등학교 - 구현알고리즘 2024. 3. 11. 13:54
문제 https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 풀이 팁 ( 다른 풀이 블로그를 보면 하나의 함수에서 다들 list에 담아서 (x,y,like_cnt, empty_cnt)를 정렬하여 반환하는데 실제 코테에서는 그 생각을 못할거 같다 ) 1. 조건이 3가지가 있는데 2가지(1,2번)를 한번에 처리해준다. - how_many_friends_i_like 함수 참조 - 가독성 좋게 작성했으니 한눈에 이해하기 쉬울것이다. 2. arr안에..
-
[tnote] swap 메모리 설정T-note 2024. 3. 11. 12:16
문제 상황 AWS EC2 프리티어 유형인 t2.micro를 사용하여서 프로젝트를 진행중에 있는데, RAM이 1GB라서 그런건지 도커를 돌릴때 자주 서버가 먹통이 되는 문제가 있었다. 여기저기 구글링 해보니까 인스턴스 유형 업글이 아니라 swap 메모리 설정을 통해서 어느정도 해결을 할 수 있다는 사실을 알아서 이걸 통해서 해결해 보고자 합니다. 참고로 aws가 제공하는 권장 스왑 공간은 아래와 같습니다! 결국 RAM이 1GB이니까 2배인 2GB를 swap 공간에 할당하는 것을 권장합니다. 해결 방법 1. dd 명령을 통해 swap file 생성 sudo dd if=/dev/zero of=/swapfile bs=128M count=16 참고로, dd 명령어는 블록 단위로 파일을 복사하거나 파일 변환을 할 ..
-
[알고리즘] 치킨배달 - 백트래킹알고리즘 2024. 3. 8. 18:20
문제 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 풀이 팁 1. m개의 치킨집이 선택되어 나올 수 있는 "모든 경우의 수를 찾는 문제" - 모든 경우의 수는 : " 조합 or 백트래킹 " 이렇게 접근가능 하다고 생각한다 - 조합의 경우는 시간복잡도가 높게 나오기에 코테에서 못쓴다고 봐도 무방하다 - 그러므로 백트래킹으로 접근하는걸 추천한다 2. chicken집의 개수가 m개이상이므로 idx, cnt 2가지의 parame..
-
[알고리즘] 톱니바퀴알고리즘 2024. 3. 8. 12:27
문제 https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 풀이 팁 ( 주의점 ) 1. queue에서 왼쪽이동, 오른쪽이동은 rotate() 메소드를 사용하여 간편하게 이동시킬 수 있다. - rotate(1) 이면 오른쪽으로 1칸, rotate(-1)은 왼쪽으로 한칸 - 톱니바퀴가 원형으로 이루어져서 시계/반시계가 오른쪽/왼쪽으로 이동된다 2. 차례대로 한개씩 톱니를 움직이는게 아니라 한번에 이동 시켜야함 - 그러면 이동시킬 방향을 저장해주고 ..