- 방문자수
전체 방문자
오늘 방문자
어제 방문자
인기 길
-
[Server] netstat 명령어 - 네트워크 통계 정보
netstat이란 network statistics의 약자 네트워크 접속, 라우팅 테이블, 네트워크 인터페이스의 통계 정보를 보여주는 도구 netstat 옵션 -a : 현재 다른 PC와 연결(Established)되어 있거나 대기(Listening) 중인 상태 -l (listen) : 연결 가능한 상태 -t (tcp) : tcp -u (udp) : udp -p : 프로그램 이름 / PID -n (number port) : 포트 넘버 netstat field 정보 $ netstat -antplF Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN - - Pro..
-
[DOCKER] Docker restart 옵션
linux 서버에 docker를 설치하고 실행하면 docker daemon을 stop 하거나 종료할 일이 거의 없지만 만약, local PC에서 docker desktop을 사용한다면 pc를 재부팅할 때마다 docker daemon을 종료할 경우도 생긴다. 이러한 경우 다시 docker daemon을 재시작하는 경우 내부에 docker container의 start 관련 동작을 설정할 수 있다. restart option docker run -d --restart {option} redis no Don't automatically restart the container (default) on-failure[:max-retries] container가 정상적으로 종료되지 않은 경우(exit code가 0이..
-
[NGINX] client ip설정 (proxy_set_header, remote_addr, http_x_forwarded_for, proxy_add_x_forwarded_for)
location 하위 블록에 proxy_set_header를 통해서 X-Forwarded-For, X-Real_IP와 같은 header를 세팅한다. 그러면 Tomcat과 같은 WAS Layer에서 해당 설정을 읽어서 IP 정보를 사용하게 된다. user nginx; worker_processes 2; ... http { include mime.types; upstream back-server { server 127.0.0.1:3000; keepalive 32; } ... server { ... location / { proxy_pass http://back-server; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP..
-
[Redis][MSA] Redis-Exporter를 통한 모니터링(Grafana, Prometheus)
서비스 모니터링은 서비스를 운영하는데 매우 중요한 요소이다.Redis는 캐시 용도로 사용되기도 하지만, 빠른 접근이 필요하지만 다소 중요하지 않는 정보를 저장하는 저장소로도 사용이 될 수 있다.이러한 경우에는 데이터가 저장되기 때문에 redis 장애 시 시스템에 문제가 생길 수도 있다.이러한 상황을 빠르게 탐지하고, 사전에 차단하기 위해서는 모니터링 시스템이 필요하다. 기본 구성은 Prometheus, Grafana를 활용한다. https://kkang-joo.tistory.com/72 https://kkang-joo.tistory.com/76 Redis Exporter 설치prometheus doc의 다양한 exporter : https://prometheus.io/docs/instrumentin..
-
[Nginx] nginx keepalive 설정(client-nginx-tomcat)
keepalive란 서버와 클라이언트가 맺은 연결을 유지하는 방식을 의미 HTTP 트랜잭션이 완료된 후에도 클라이언트와 서버 간의 TCP 연결을 열어둔다. 클라이언트가 다른 HTTP 트랜잭션을 수행해야 하는 경우 새 TCP 연결을 만드는 대신 유휴 Keepalive 연결을 사용한다. 장점 3-way handshacking overhead 줄임 단점 메모리 사용 증가 - connection을 열고 대기 server - keepalive 설정 https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout 하위에 해당하는 server 블록에 keepalive-timeout 설정 기본값 75s 해당 값에 0을 설정하면 keepalive 기능..
최신 글
-
[LeetCode] 209 Minimum Size Subarray Sum
주어진 배열의 모둔 숫자는 양수이다.target과 같거나 큰 수를 구성하는 subArray의 길이를 리턴하라단, 가장작은 길이를 리턴하라.만약 없다면 0을 리턴하라.class Solution { public int minSubArrayLen(int target, int[] nums) { }} 앞에서 풀어본 find pivot index와 유사하게 sliding 관련 문제이다.다만, 앞에 문제는 왼쪽의 끝이 정해져 있던 느낌이라면이번 문제는 왼쪽을 향해 움직이고, 그와 동시에 조건이 만족하면 오른쪽도 차차 움직이며 조건을 검증해가는sliding + two pointer의 느낌이다. 더보기{ int right = 0; int left = 0; int sum = 0; ..
-
[LeetCode] 724 Find Pivot Index
주어진 배열에서 pivot 인덱스를 기준으로 오른쪽, 왼쪽 값의 합이 같은 위치를 찾아라.만약 pivot의 위치가 0인 경우 왼쪽 배열의 합은 0인 것이다. class Solution { public int pivotIndex(int[] nums) { }} 배열 문제를 푸는 핵심 방법 중에 하나인 slide를 적용해서 문제를 해결할 수 있다. 먼저 전체 sum을 구하고 전체 sum에서 pivot의 위치에 해당하는 값을 뺀 것이 오른쪽 sumpivot이 지나간 값들의 합이 왼쪽 sum으로 두고 각각의 값의 변화를 비교하면 된다. 더보기{ int sum = Arrays.stream(nums).sum(); int leftsum = 0; int r..
-
[LeetCode] 283 Move zeros
배열에 존재하는 0을 모두 배열의 끝으로 옮겨라 단, 새로운 배열을 정의하지 않고 주어진 배열에서만 문제를 해결하라0 이외에 숫자들의 순서는 변경되지 않아야 한다.class Solution { public void moveZeroes(int[] nums) { }} 배열 문제를 바라보는 기본적인 시각을 길러주는 문제이다.포인터 두 개를 이용해서 문제의 요구사항을 처리하는 것! 하나는 숫자를 찾는 포인터나머지는 0의 위치를 가리키는 포인터 숫자를 찾는 포인터가 for문을 돌며 숫자를 찾고 숫자를 찾았다면 0의 위치를 가리키는 포인터와 swap swap이 된 경우에는 0의 위치를 가리키는 포인터는 숫자로 채워졌으니 ++1 하여 다음 위치를 가리킨다. 더보기{ int i = ..
-
[LeetCode] 704 Binary Search
정렬된 배열이 주어지고, 거기서 target을 가지고 있는 인덱스를 리턴하라. 없다면 -1을 리턴시간 복잡도는 O(log n)이여야 한다. class Solution { public int search(int[] nums, int target) { }} 정렬된 배열에서 원하는 target을 찾는 방법으로 binary search가 있는데 이를 구현하는 문제이다. 더보기{ int left = 0, right = nums.length - 1; while (left target) { right = mid - 1; } else if (nums[mid] 문제를 풀다 햇갈렸던 부분으로는 while을 진행하는 조건에 left, right 값 비교..
-
[코딩테스트] Array
코딩 테스트를 준비하는 과정에서 학습한 내역들을 기록해 보자.가장 간단한 배열부터 시작해 보자. 배열이란데이터들이 연속적으로 이어져서 랜덤 액세스를 지원하는 자료구조.(랜덤 액세스를 지원하지 않는 자료구조는?! linked list)(랜덤 액세스란? 각 element들의 인덱스를 통해서 바로 접근하는 것. nums[0], nums[3]..) 배열만으로 알고리즘 문제가 만들어지기보다는BinaryTree, BackTracking과 같은 알고리즘에서 사용되는 자료구조라고 보면 된다.추후에 차근차근 알아보자.. 배열 자료구조의 기본이 되는 문제는 정렬(sorting)이다.-> quick sort, merge sort.. 다양하게 존재-> 시간 복잡도 O(nlogn)-> stable, unstable(정렬 전의..