🥕 Http 프로토콜에서는 클라이언트와 서버의 통신이 끝나자마자 상태정보를 잊어버린다 (Stateless) 따라서 통신을 할 때마다, 클라이언트의 정보를 요구한다. 이를 해결하기 위한 방법으로 인증을 하게된다. 로그인을 통해 사용자에게 권한을 부여하고, 인증을 통해 사용자의 권한을 확인하고, 반복되는 리소스 낭비를 피하게 된다. 인증에 자주 쓰이는 세션과 토큰을 비교한다. 😢 Session : 유저 인증 성공 이후 서버에 세션 저장. 저장 후 response를 통해 유저의 쿠키에 세션 ID 가 저장되도록 한다. 유저 측에서 http를 요청할 떄에는 Session id 가 포함된 쿠키가 헤더에 포함되며, 서버는 Session id 및 Session Storage에서의 정보를 대조 후, 유저 및 로그인 정보..
오름차순 정렬이 필수인 알고리즘이다. 특정한 값의 위치를 찾으려 할 때, 중간값을 선택하고 찾고자 하는 값의 크고 작음을 비교한다. 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..
TOMCAT 동작 방식 과 트래픽이 많아 서버가 감당하지 못하는 상황을 어떻게 예방 할 지에 대해 정리해본다. 🦐 WEB-SERVER 는 아파치 기준, WAS는 tomcat 기준으로 본다. 🤨 사용자의 요청이 Tomcat에 도달해 응답하기까지. 🥸 동작 순서 : → 사용자가 웹 브라우저 접근, 사용자의 요청 발생. → 80 포트로 web server 전달 → web server에서 처리 할 정적인 컨텐츠가 아니라면 tomcat으로 요청 ( AJP 포트 통상 8009 ) → Tomcat Connector에서 체크 → Tomcat Servlet Container 에서 사용자의 요청 분석 및 HttpServletRequest , HttpServletResponse 생성 → 어느 서블릿에 대한 요청인지 확인. ..
🥞 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에 추가한다. 위 설정이 끝..
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천만건이 존재하며..
👌 동적 계획법. 핵심은 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-..
EC2 인스턴스의 공간이 부족해서 EFS를 새로 마운트 하려한다. 🍟 기존 EC2에서 EFS를 마운트 하되 경로는 /data로 설정하였다. 최종 결과는 다음과 같이 보임. $ df -h 설정 : EFS를 생성한다 가용 영역은 EFS를 사용하고자하는 EC2 인스턴스가 있는곳으로 설정한다. 마운트하고자하는 EC2 인스턴스에서 네트워크 - 보안 탭의 인바운드 규칙을 편집한다. 보안그룹 규칙과 원본의 보안그룹이 EFS에 마운트하는 보안그룹과 일치해야 한다. 생성 시, NFS 프로토콜로 생성해야 함에 유의. EFS 를 선택하고 우측 상단 연결버튼 클릭 🍕 탑재 헬퍼를 쓴다면, aws에서 제공하는 amazon-efs-utils 패키지를 설치해야 한다. 탑재 헬퍼 명령어를 복사해서 , EC2 인스턴스에서 아래 커맨드..
spring boot / java 11 / react client 🥨 개인 프로젝트에서 naver 길찾기 api를 사용한 과정을 적어두려한다. 🥪 공식 문서를 보는 것이 가장 정확하므로 공식문서를 참고하는게 제일 베스트이다. 🍶 설정부터 API 요청까지, API 요청에서 response data를 받아오기까지 정리하려 한다. 🍫 길찾기 API는 우선 네이버 클라우드 플랫폼에서 서비스 사용을 위한 등록이 먼저 되어야 한다. https://console.ncloud.com **** 서비스 등록은 생략 🍿 인증을 위한 키값이므로, 유출되지 않도록 조심해야 한다. ** 등록이 되었다면 실제 API를 요청해야 하는데 처음 시도 할 때에 클라이언트에서 직접 요청한 값을 쓰려 했으나, 현재는 JS 요청을 NAVER ..
🥞 오프셋 기반 페이징에서 -> 커서 방식 페이징으로 변경하기 전에 미리 알아보려 한다. 🥞🥞 오프셋 기반 페이징의 단점 : LIMIT / OFFSET 을 이용할 경우 offset이 늘어나는 양에 따라 비효율적인 동작을 하게된다. 오프셋 이전의 데이터를 모두 조회하고 limit 와 offset에 해당하는 값만 가져오는 방식이기 때문에 대량의 데이터를 가져오는 페이징에 적합하지 않다. 아래는 여러건의 데이터를 삭제하기 위한 쓰레드 작업에 커서 페이징을 적용하려다가 실패한 케이스이다. [AWS S3] object 여러 건 삭제 요청 /220811 수정 목적 : 삭제 총 타겟 : DB상에 있는 데이터 기준으로 1억 8천만 건에 해당. JAVA 에서 aws SDK 를 이용한 삭제 요청시에는 1회 요청 최대 오브..