분류 전체보기

SERVER

[Server] Session 과 JWT

🥕 Http 프로토콜에서는 클라이언트와 서버의 통신이 끝나자마자 상태정보를 잊어버린다 (Stateless) 따라서 통신을 할 때마다, 클라이언트의 정보를 요구한다. 이를 해결하기 위한 방법으로 인증을 하게된다. 로그인을 통해 사용자에게 권한을 부여하고, 인증을 통해 사용자의 권한을 확인하고, 반복되는 리소스 낭비를 피하게 된다. 인증에 자주 쓰이는 세션과 토큰을 비교한다. 😢 Session : 유저 인증 성공 이후 서버에 세션 저장. 저장 후 response를 통해 유저의 쿠키에 세션 ID 가 저장되도록 한다. 유저 측에서 http를 요청할 떄에는 Session id 가 포함된 쿠키가 헤더에 포함되며, 서버는 Session id 및 Session Storage에서의 정보를 대조 후, 유저 및 로그인 정보..

ALGORITHM

[피보나치 수열] 재귀호출, 배열

🤢 1 ~ 45 번째 항으로 구한 피보나치 수열은 다음과 같다. 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 메모이제이션을 사용한 재귀 호출로 구현 할 경우 : package com.org.jmc; import java.util.Scanner; public class 피보나치..

ALGORITHM

[이진 탐색] Binary Search Algorithm

오름차순 정렬이 필수인 알고리즘이다. 특정한 값의 위치를 찾으려 할 때, 중간값을 선택하고 찾고자 하는 값의 크고 작음을 비교한다. O(log n) 의 시간복잡도를 가진다. 하지만 최악의 경우에는 한쪽으로 편향된 트리가 될 수 있다. 이러한 케이스에는 시간복잡도가 O(n) 이 된다. public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = Integer.parseInt(sc.next()); int m = Integer.parseInt(sc.next()); int[] array = new int[n]; for (int i=0; i< n; i++) { array[i] = Integer.parseInt(sc.nex..

WAS

[WAS & WEB SERVER] Tomcat 동작 과정

TOMCAT 동작 방식 과 트래픽이 많아 서버가 감당하지 못하는 상황을 어떻게 예방 할 지에 대해 정리해본다. 🦐 WEB-SERVER 는 아파치 기준, WAS는 tomcat 기준으로 본다. 🤨 사용자의 요청이 Tomcat에 도달해 응답하기까지. 🥸 동작 순서 : → 사용자가 웹 브라우저 접근, 사용자의 요청 발생. → 80 포트로 web server 전달 → web server에서 처리 할 정적인 컨텐츠가 아니라면 tomcat으로 요청 ( AJP 포트 통상 8009 ) → Tomcat Connector에서 체크 → Tomcat Servlet Container 에서 사용자의 요청 분석 및 HttpServletRequest , HttpServletResponse 생성 → 어느 서블릿에 대한 요청인지 확인. ..

카테고리 없음

[FTP] Centos 8 vsftpd 설정

🥞 centos 8 -> vsftd 설치 및 계정 및 포트 설정 $ yum -y install vsftpd $ cd /etc/vsftpd/ $ vi vsftpd.conf vsftpd의 설정 파일에 아래 LINE의 옵션을 설정한다. ( line 추가가 아닌 수정 && 주석일 경우 주석 해제) anonymous_enable=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list listen=YES listen_ipv6=NO 🧇 ipv4 와 ipv6 를 동시에 열어 놓는 설정일 경우 ftp 실행 시 에러가 발생 할 수 있다. $ vi /etc/vsftpd/chroot_list 접속 할 사용자 계정을 chroot_list에 추가한다. 위 설정이 끝..

AWS

[AWS S3] 임시테이블을 활용한 1억 4천만건 데이터 삭제 요청

https://girinprogram93.tistory.com/62 [CURSOR PAGING] 커서 페이징처리. 🥞 오프셋 기반 페이징에서 -> 커서 방식 페이징으로 변경하기 전에 미리 알아보려 한다. 🥞🥞 오프셋 기반 페이징의 단점 : LIMIT / OFFSET 을 이용할 경우 offset이 늘어나는 양에 따라 비효율적인 girinprogram93.tistory.com 작업 환경 : java 1.8 / spring boot / gradle / jdbcTemplate / tomcat 9.06 / MySQL 🍔 지난번의 커서 기반 페이징 S3 삭제 요청에 이어서 최종본이다. ( 지금은 삭제된 데이터를 전수검사하고 있다. ) 🥣 상황 : S3 스토리지에 삭제 대상인 특정 오브젝트가 1억 4천만건이 존재하며..

ALGORITHM

[ALGORITHM] Dynamic programming / 동적 계획법

👌 동적 계획법. 핵심은 top down / bottom up 방식에서 중복되는 연산을 피하는 것. -> O(2^n)의 시간복잡도를 가지게 될 경우 ( 재귀 함수 ) -> 연산의 횟수가 늘어난다. -> 콜 스택이 많이 늘어나므로 성능이 안좋아진다. 성능뿐만이 아닌 한계점까지 갈 경우 에러도 발생한다. 이미 연산을 한 과정을 다시 연산하는 부분이 생겨난다. 😔 피보나치 수열로 예시를 많이 든다. public class pbnc { public static void main(String[] args) { int n = 10; } // 반복되는 연산을 고려하지 않음. static int ffibo1( int x ) { if (x == 1 || x== 2) { return 1; } return ffibo1(x-..

AWS

[EC2] + [EFS] 마운트

EC2 인스턴스의 공간이 부족해서 EFS를 새로 마운트 하려한다. 🍟 기존 EC2에서 EFS를 마운트 하되 경로는 /data로 설정하였다. 최종 결과는 다음과 같이 보임. $ df -h 설정 : EFS를 생성한다 가용 영역은 EFS를 사용하고자하는 EC2 인스턴스가 있는곳으로 설정한다. 마운트하고자하는 EC2 인스턴스에서 네트워크 - 보안 탭의 인바운드 규칙을 편집한다. 보안그룹 규칙과 원본의 보안그룹이 EFS에 마운트하는 보안그룹과 일치해야 한다. 생성 시, NFS 프로토콜로 생성해야 함에 유의. EFS 를 선택하고 우측 상단 연결버튼 클릭 🍕 탑재 헬퍼를 쓴다면, aws에서 제공하는 amazon-efs-utils 패키지를 설치해야 한다. 탑재 헬퍼 명령어를 복사해서 , EC2 인스턴스에서 아래 커맨드..

JAVA/SPRING

[NAVER maps 길 찾기] springboot + webClient 로 API 호출

spring boot / java 11 / react client 🥨 개인 프로젝트에서 naver 길찾기 api를 사용한 과정을 적어두려한다. 🥪 공식 문서를 보는 것이 가장 정확하므로 공식문서를 참고하는게 제일 베스트이다. 🍶 설정부터 API 요청까지, API 요청에서 response data를 받아오기까지 정리하려 한다. 🍫 길찾기 API는 우선 네이버 클라우드 플랫폼에서 서비스 사용을 위한 등록이 먼저 되어야 한다. https://console.ncloud.com **** 서비스 등록은 생략 🍿 인증을 위한 키값이므로, 유출되지 않도록 조심해야 한다. ** 등록이 되었다면 실제 API를 요청해야 하는데 처음 시도 할 때에 클라이언트에서 직접 요청한 값을 쓰려 했으나, 현재는 JS 요청을 NAVER ..

DB

[CURSOR PAGING] 커서 페이징처리.

🥞 오프셋 기반 페이징에서 -> 커서 방식 페이징으로 변경하기 전에 미리 알아보려 한다. 🥞🥞 오프셋 기반 페이징의 단점 : LIMIT / OFFSET 을 이용할 경우 offset이 늘어나는 양에 따라 비효율적인 동작을 하게된다. 오프셋 이전의 데이터를 모두 조회하고 limit 와 offset에 해당하는 값만 가져오는 방식이기 때문에 대량의 데이터를 가져오는 페이징에 적합하지 않다. 아래는 여러건의 데이터를 삭제하기 위한 쓰레드 작업에 커서 페이징을 적용하려다가 실패한 케이스이다. [AWS S3] object 여러 건 삭제 요청 /220811 수정 목적 : 삭제 총 타겟 : DB상에 있는 데이터 기준으로 1억 8천만 건에 해당. JAVA 에서 aws SDK 를 이용한 삭제 요청시에는 1회 요청 최대 오브..

girin_dev
'분류 전체보기' 카테고리의 글 목록 (7 Page)