분류 전체보기

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회 요청 최대 오브..

ALGORITHM

[LIS] 백준 2631 줄 세우기

https://www.acmicpc.net/problem/2631 2631번: 줄세우기 KOI 어린이집에는 N명의 아이들이 있다. 오늘은 소풍을 가는 날이다. 선생님은 1번부터 N번까지 번호가 적혀있는 번호표를 아이들의 가슴에 붙여주었다. 선생님은 아이들을 효과적으로 보호하기 www.acmicpc.net 최장 증가 수열 (LIS, Longest Increasing Subsequence) 출처 : https://4legs-study.tistory.com/106 😢 수열의 한 원소에 대해, 그 원소에서 끝나는 최장 증가 수열을 생각해보자. 그 최장 증가 수열의 k를 제외한 모든 원소들은 반드시 k보다 작아야 할 것이다. , 따라서 k의 앞 순서에 있는 모든 원소들 중 값이 k보다 작은 원소에 대해, 그 각각..

ALGORITHM

[LIS] 백준 11053 가장 긴 증가하는 부분 수열

import java.util.*; public class Lis { public static void main(String[] args) { // Scanner sc = new Scanner(System.in); // int size = Integer.parseInt(sc.nextLine()); // String arrays = sc.nextLine(); // String[] ttee = arrays.split(" "); // int[] target = Arrays.stream(ttee).mapToInt(Integer::parseInt).toArray(); int size = 6; int[] target = {10,20,10,30,20,50}; int sol = 0; int[] dp = new int[..

카테고리 없음

[React / JS] redux-toolkit

redux를 통해 state를 유연하게 관리 할 필요가 있다. 상위 컴포넌트에서 하위 컴포넌트를 계속해서 호출 할 경우, props 지옥에서 벗어나기 위해서도 필요하기 때문임. 설정 : $ npm install @reduxjs/toolkit react-redux 혹은 $ npx create-react-app my-app --template redux template으로 지정해서 생성. cra로 react 프로젝트를 만든다면, 필요없는 라이브러리가 많이 설치되어, 추천하지 않는 경우도 있다. CRA 커맨드가 아닌 수동으로 만든 프로젝트라면, # NPM npm install redux # Yarn yarn add redux 커맨드를 사용해도 된다. toolkit 을 쓰는 이유는 공식 문서 상에서 추천 할 뿐..

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