Dev
traceroute
traceroute traceroute는 패킷이 전송되는 네트워크 경로를 표시하고 전송 지연을 측정하는 네트워크 진단 유틸리티 사용법 traceroute www.google.com # www.google.com으로가는 traceroute 정보 traceroute -4 www.google.com # IPv4 사용 (-4) traceroute -p 80 www.google.com # 목적지 포트 (-p) traceroute -m 10 www.google.com # 패킷이 거쳐가는 홉의 최대 수 (-m) traceroute -4 -p 80 -m 10 www.google.com # 여러 조건을 조합하여 사용가능
tcpdump
tcpdump tcpdump는 네트워크 인터페이스에서 송수신되는 패킷을 가로채고 표시해주는 명령어 사용법 tcpdump -i enp3s0 # 네트워크 인터페이스가 enp3s0인 패킷 tcpdump src 127.0.0.1 # 소스 IP가 127.0.0.1인 패킷 tcpdump dst 127.0.0.1 # 목적지 IP가 127.0.0.1인 패킷 tcpdump tcp port 80 # tcp 80포트로 통신하는 패킷 tcpdump tcp # tcp 패킷 tcpdump udp # udp 패킷 tcpdump src port 3000 # 소스 포트가 3000인 패킷 tcpdump dst port 3000 # 목적지 포트가 3000인 패킷 tcpdump -w tcpdump.log # tcpdump.log 파일에 결..
netstat
netstat netstat은 전송제어 프로토콜, 라우팅 테이블, 네트워크 인터페이스, 네트워크 프로토콜 통계 정보를 출력하는 명령어 사용법 netstat -r: 라우팅 정보 -i: 인터페이스 정보 -s: 통계정보 -n: 이름으로 표시하지 않음 (예: 포트 8080을 http-alt로 표시하지 않음) -N: 하드웨어 이름으로 표시 -p: 프로그램 pid/프로그램이름 표시 -c: 연속적으로 확인 -t: tcp 소켓 -u: udp 소켓 -l: 리스닝 소켓 -a: 모든 소켓 netstat -tnlp # 리스닝 중인 tcp 정보를 PID 포함하여 출력 netstat -tn # tcp 연결 정보 출력 netstat -un # UDP 소켓 정보 출력 netstat -an # 모든 소켓 정보 출력
mtr
mtr mtr은 traceroute, ping 프로그램 기능을 단일 도구에 결합한 크로스 플랫폼 명령 행 네트워크 진단도구 mtr은 패킷이 mtr이 실행되는 호스트에서 사용자가 지정한 대상 호스트로 이동하는 경로에 대한 정보를 출력 사용법 mtr www.google.com # www.google.com으로가는 traceroute 정보 mtr -n www.google.com # 호스트 네임대신 IP주소로 표시 mtr -b www.google.com # 호스트, IP 모두 표시 mtr -c5 www.google.com # ping 5번 제한 (끝나면 자동종료) mtr -rw -c5 www.google.com > result.txt # result.txt에 결과 저장
Merge Sort (병합정렬)
Merge Sort (병합정렬) 병합정렬은 대표적인 분할 정복 알고리즘(Divide and conquer algorithm)입니다. 정렬되지 않은 리스트를 하나의 원소만 포함하는 n개의 리스트로 분할한 후 부분 리스트가 하나만 남을 때까지 반복해서 병합하여 정렬합니다. N개의 크기의 배열을 logN의 단계로 정렬을 수행해 NlogN의 시간복잡도를 가집니다. Merge Sort 정렬 과정 초기상태: [3 5 6 1 2 4 0 7] 하나의 큰 리스트를 하나의 원소만 포함하는 8개의 리스트로 분할합니다.[3 5 6 1] [2 4 0 7][3] [5] [6] [1] [2] [4] [0] [7] [3 5] [6 1] [2 4] [0 7] [3 5 6 1 2 4 0 7] 하나의 리스트가 남을때까지 병합하면서 정렬합..
ingress에서 특정 path 호출을 막는 방법
ingress에서 특정 path 호출을 막는 방법 ingress에서 특정 path에 대한 호출을 막아야 하는 경우가 있습니다. nginx.ingress.kubernetes.io/server-snippet 를 이용하면 ingress의 특정 path의 호출을 막을 수 있습니다. 아래는 ingress에서 actuator관련 URI호출을 막는 예시입니다. apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/server-snippet: | location ~* "^/(.*)/actuator" { deny all; return 403; }
HikariCP Pool Locking 케이스 스터디
HikariCP Pool Locking 케이스 스터디 HikariCP Deadlock 발생 케이스 및 해결방법을 정리한 내용입니다. Pool Locking 발생 예시 환경 (가정) Thead Count: 8개 MaximumPoolSize: 5개 한 쓰레드에서 생성되는 DB 커넥션 수: 2개 1) 모든 커넥션을 사용하는 상태 Pool에 Idle Connection이 없기 때문에 handOffQueue에서 5개 쓰레드가 대기 (※ C는 Connecting, W는 Waiting, T1~T8은 Thread) Connection Timeout이 되면 SQLTransientConnectionException 발생 Exception이 발생하면 Transaction이 Rollback되면서 Connection Pool에..
목적지 포트 확인
목적지 포트 확인 서버를 운영할 때 목적지 서버의 포트가 열려있는지 확인이 필요할 때가 있습니다. nmap과 같은 오픈소스 네트워크 스캐너를 이용하여 확인이 가능하지만 서버에 설치되어있지 않은 경우에는 다른 방법이 필요합니다. 여러가지 방법이 있지만 그 중 bash의 내장된 기능인 /dev/{tcp,udp}를 활용하여 목적지 서버 포트가 열려 있는지 확인하는 방법을 정리하였습니다. 명령어 예시 및 상황별 Exit status 값 1) 포트가 열려있는 경우 포트가 열려있는 경우에는 Exit Status로 0을 반환합니다 $ bash -c "
Flexbox Layout
Flexbox Layout Flexbox Layout은 CSS3 웹 레이아웃 모델로 화면크기에 따라 container안의 element를 배치하는 효율적인 방법을 제공합니다. Flex Container display flex를 이용하기 위해서는 display속성을 flex로 설정하여야 합니다. .container { display: flex; } flex-direction flex-direction 속성은 flex item의 방향을 결정합니다. .container { flex-direction: row | row-reverse | column | column-reverse; } flex-wrap flex item은 기본적으로 한 줄에 모두 위치하도록 되어있습니다. flex-wrap을 이용하여 여러 줄로 ..
다익스트라(Dijkstra) 알고리즘
다익스트라(Dijkstra) 알고리즘 다익스트라(Dijkstra) 알고리즘은 한 정점에서 다른 모든 정점으로 가는 최단경로를 구하는 알고리즘입니다. 다익스트라 알고리즘은 첫 정점을 기준으로 연결되어 있는 정점을 추가해가면서 최단거리를 갱신하는 DP(Dynamic Programming)문제입니다. 정점을 잇기 전까지는 시작점을 제외한 모든 정점은 무한대입니다. 다익스트라 알고리즘 동작 출발 정점을 선택합니다. 출발 정점에 연결되어있는 각 정점의 최단거리를 갱신합니다. 방문하지 않은 정점 중 가장 거리가 짧은 정점을 선택합니다. 선택한 정점에 연결되어 있는 각 정점의 최단거리를 갱신합니다. 3~4번을 반복합니다. 예시 n = 노드갯수 k = 시작노드 [소스노드, 타겟노드, 거리] [ [1,2,6], [1,3..