전체 글
-
LeetCode - Longest Substring Without Repeating CharactersProblem Solving/leetcode 2020. 10. 2. 18:54
Given a string s, find the length of the longest substring without repeating characters. Example 1: Input: s = "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3. Example 2: Input: s = "bbbbb" Output: 1 Explanation: The answer is "b", with the length of 1. Example 3: Input: s = "pwwkew" Output: 3 Explanation: The answer is "wke", with the length of 3. Notice that the ans..
-
nginx (1) 특징 공부하기Web/Backend 2020. 10. 1. 02:50
nginx - 뜨고있는 apache와 같은 웹 서버 프로그램 " 더 적은자원으로 더 빠른 서비스 " - apache 보다 동작이 단순하고 동시접속처리에 특화되어있다. - 2018년 5월 기준, nginx는 23%, Apache는 25% Apache는 하락세이고 nginx 상승세라고 한다. 역할 1. 정적파일을 처리하는 HTTP 서버로서의 역할 2. Reverse proxy server로서의 역할 "로드밸런싱과 보안" 클라이언트의 요청을 각 Application server에 배분해준다. 클라이언트에서는 80포트로만 요청이 들어오는데, 이 들어오는 요청을 8080, 8081 등 여러 Application server로 보내준다. 일반적으로 리버스 프록시는 각 application server에 요청을 배분..
-
로드밸런서(Load Balancer)란??Computer Science/Network 2020. 9. 30. 23:22
- 동시에 수천만의 사용자가 하나의 서버에 요청을 한다면 서버가 다운될 수 있다. 두 가지 해결방법 존재 서버의 성능을 올리던가 = Scale-up 여러대의 서버를 둬서 나눠서 일을 하던가 = Scale-out Load Balancing이란? - 하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하여 서버의 로드율 증가, 부하량, 속도저하 등을 고려하여 적절히 분산처리하여 해결해주는 서비스 * 사전 개념* 네트워크 구조에 상관없이 개방형으로 통신할 수 있는 국제 표준 모델이 OSI 7layer입니다. L1~ L7 까지 나뉘어져있고 L4 장비 등의 말이 여기서 유래된 것입니다. L1 은 '랜선' 등의 장비를 의미하는 것이고 L2는 'Mac address', L3는 'IP'를 의미한..
-
람다식이란??Programming Language/java 2020. 9. 30. 17:32
JAVA8 버전부터 람다식 지원 함수형 프로그래밍 언어의 조건을 갖추게됨. ( 순수한 함수, 익명함수, 고계함수) - 먼저 알아야 할 내용 함수형 인터페이스 - 메소드 하나만 가지고 있는 인터페이스. Runnable, Comparator 같은 것들이 있다. @FuntionalInterface 어노테이션을 활용해 함수형 인터페이스임을 명시할 수 있다. (JAVA에선 함수라는 개념이 없기 때문에 함수형 인터페이스를 통해 람다식을 설계한 것 같다.) package java.lang; public interface Runnable{ public abstract void run(); } - 람다식 = 익명 메소드 람다식 구성 - (Long va1 , String val2) -> { va1+val2.length()..
-
백준 BOJ 10407 - 2타워Problem Solving/BOJ 2020. 9. 25. 02:21
1. "2가 짝수개 있으면 3으로 나눈 나머지는 1이다. " -> (A*B)%X = (A%X * B%X)%X -> 2가 2n개 있다면, ( (2*2)%3 * (2*2)%3 * ... *(2*2)%3 ) %3 = (1*1*...*1)%3 = 1 1 , 2, ... , n 2. "높이가 2이상인 2타워는 2가 짝수개다. " -> 높이 i+1의 수는 높이 i 의 수만큼 2를 곱한값이다. -> 높이 1은 짝수 -> 다음 높이는 짝수개만큼 2가 있음 = 2가 짝수개 -> 다음 높이는 그 짝수만큼 2가있음 -> 다음 높이는 그 짝수만큼 2가있음 .................... 3. "따라서 높이가 2이상인 2타워의 나머지는 1이다. " 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17..
-
프로그래머스 - 문자열 압축Problem Solving/Programmers 2020. 9. 4. 19:25
java나 python은 substr이 (start,end)로 end index 전까지인데 c++ 의 substr은 (시작위치, 개수) 인걸 헷갈렸었따... 문자열은 제일 앞부터 정해진 길이만큼 잘라야 하고 문자열의 길이가 최대 1000이므로 n^2으로 충분히 가능하다. substr으로 정해진길이의 다음 substr을 검사하면서 진행해준다. 이때 신경써야할 부분은 cnt의 숫자에 따라 문자열의 길이가 달라진다는 점이다. 최대 1000이므로 적당히 if else로 처리해준다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4..
-
프로그래머스 - 수식 최대화Problem Solving/Programmers 2020. 8. 28. 17:38
상반기에 실전에서 매우 애먹었던 문제이다. 다시 풀어보니 쉽게 풀 수 있었는데 깨달은 점이 하나 있었다. (이런 구현문제는 효율을 크게 생각안하고 시도 하는게 포인트인 것 같다.) 일단 연산자가 최대 3개이고 우선순위 경우의 수가 6가지이고 우선순위에 따른 계산 시 시간복잡도는 고려하지 않아도 될정도로 적으므로 (string 최대길이가 100이므로) 마음놓고 dfs 완탐을 해도 된다. 당시에 애먹었던 이유는 원본 벡터를 복사한 temp 벡터 하나만 가지고 연산을 하려했었다.. 그래서 list를 사용해야하나 아니면 vector로 remove하며 해야하나 고민하는데 시간을 허비했다. 굳이 그럴 필요없이 연산자에 의해 계산된 결과를 담는 벡터(t,tt)를 하나 더 이용하면 된다. 연산자의 개수 + 1 = 피연..