전체 글
-
[네트워크] HTTP/2CS/네트워크 2021. 4. 22. 19:06
HTTP/1.1의 단점 TCP 기반 위에서 동작하는 프로토콜이기 때문에 신뢰성 확보를 위해 연결을 맺고 끊는 핸드 셰이크가 이루어진다. HTTP는 비연결성 프로토콜이기 때문에 한 번의 요청과 응답이 끝나면 연결을 끊어 버린다. 핸드 셰이크 오버헤드 극복? Keep-alive 기능 추가 한 번 맺어졌던 연결을 끊지 않고 지속적으로 유지 파이브라이닝 하나의 커넥션에서 한 번에 순차적으로 여러 요청을 연속적으로 하고 그 순서에 맞춰 응답을 받는 방식으로 지연 시간을 줄이는 방법 HOL(Head Of Line) Blocking 이슈 발생 먼저 받은 요청이 끝나지 않으면 그 뒤의 요청이 끝났더라도 기다려야 하는 이슈 HTTP/2 바이너리 프레이밍 계층을 이용해 요청과 응답의 멀티플렉싱을 지원 (양방향 스트림 통신..
-
[네트워크] Sticky SessionCS/네트워크 2021. 4. 22. 17:55
로드 밸런싱 대용량 트래픽을 장애 없이 처리하기 위해 여러 대의 서버에 적절히 트래픽을 분배하는 것 라운드로빈 방식 (Round Robin Method) 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식 가중 라운드로빈 방식 (Weighted Round Robin Method) 각각의 서버마다 가중치를 매기고 가중치가 높은 서버에 클라이언트 요청을 우선적으로 배분합니다. IP 해시 방식 (IP Hash Method) 클라이언트의 IP 주소를 특정 서버에 매핑하여 요청을 처리하는 방식 IP 주소를 해싱해 로드를 분산하기 때문에 동일한 서버로 연결되는 것을 보장한다. 최소 연결 방식 (Least Connection Method) 요청이 들어온 시점에 가장 적은 연결상태를 보이는 서버에 우선적으로 트래픽을..
-
[JAVA] Garbage CollectionCS/개발 언어 (JAVA) 2021. 4. 21. 13:18
stop-the-world GC을 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것이다. stop-the-world가 발생하면 GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춘다. 대개의 경우 GC 튜닝이란 이 stop-the-world 시간을 줄이는 것이다. Java는 프로그램 코드에서 메모리를 명시적으로 지정하여 해지하지 않기 때문에 가비지 컬렉터(Garbage Collector)가 더 이상 필요없는 객체를 찾아 지우는 작업을 한다. 이 가비지 컬렉터는 두 가지 가정하에 만들어졌다. 대부분의 객체는 금방 접근 불가능 상태(unreacheable)가 된다. 오래된 객체에서 젊은 객체로의 참조는 아주 적게 존재한다. 이 가정의 장점을 최대한 살리기 위해 HotSpot VM에서는 크게 ..
-
[알고리즘] Maximum Subarray알고리즘/배열 2021. 4. 21. 11:30
Problem Key Point 현재 값과 이전까지 더한 합 중 큰 값을 sum으로 설정 sum = Math.max(nums[i], sum + nums[i]); 현재 max값과 sum 중에서 큰 값을 max으로 설정 max = Math.max(max, sum); Code public class MaxSubArray { public int solution(int[] nums) { int sum = nums[0]; int max = nums[0]; for (int i = 1; i < nums.length; i++) { sum = Math.max(nums[i], sum + nums[i]); max = Math.max(max, sum); } return max; } public static void main(S..
-
[알고리즘] Longest Substring알고리즘/배열 2021. 4. 21. 11:06
Problem Input : ccaabbb Output : 5 Key Point 새로운 문자가 나오면 기존 것과 비교해서 Max 값을 구한다. (while(counter > 2)) Code public class LongestSubMostDist { public int solution(String s) { int counter = 0, start = 0, length = 0; Map map = new HashMap(); for (int i = 0; i 2) { char st..
-
[알고리즘] Unique Email Addresses알고리즘/배열 2021. 4. 21. 10:59
Problem Key Point String 클래스의 subString(), indexOf() String str = "abcdefg"; str.subString(5); // fg str.subString(2,4) // cd (2포함O, 4포함X) String email = "abc@naver.com"; str.indexOf("@");// 3 Code public class UniqueEmailAddress { public int solution(String[] emails) { Set emailSet = new HashSet(); for (String email : emails) { String localName = getLocalName(email); String domainName = getDoma..
-
[알고리즘] Move Zeroes알고리즘/배열 2021. 4. 20. 11:15
Problem Code public class MoveZeros { public void solve(int[] numbers) { int index = 0; // 01. 0이 아닌 것을 array에 넣는다. for (int i = 0; i < numbers.length; i++) { if (numbers[i] != 0) { numbers[index++] = numbers[i]; } } // 02. index에서 numbers.length에 0을 넣는다. while (index < numbers.length) { numbers[index++] = 0; } System.out.println(Arrays.toString(numbers)); } public static void main(String[] args..