전체 글

전체 글

    트러블 슈팅 툴

    트러블 슈팅 툴 GC GCViewer IBM GC Analyzer Java VisualVM Java Heap Eclipse Memory Analyzer Java Decompiler Java Decompiler Thread Dump IBM Thread Dump Analyzer Thread Logic

    덤프파일 생성방법

    덤프파일 생성방법 Heap dump jmap은 JVM 프로세스의 heap 덤프를 생성하는 명령어이다. jmap -dump:format=b,file=`hostname`_dump.hprof $pid Thread dump jstack은 JVM 프로세스의 thread 덤프를 생성하는 명령어이다. jstack -l $pid >> `hostname`_thread_dump.txt CPU 사용량 (top) top은 실시간 리눅스 CPU, 메모리 사용량을 체크할 수 있는 도구이다. top -H -n 1 -p $pid >> `hostname`_cpu.txt 프로세스 스택 정보 (pstack) pstack은 프로세스의 스택 정보를 보여주는 명령어지만, 멀티 쓰레드 프로그램의 경우 쓰레드 별 스택 정보를 확인할 수 있어 쓰레..

    리눅스 sudo 패스워드 없이 사용

    sudo 패스워드없이 사용 리눅스에서 sudo를 패스워드없이 사용하는 방법입니다. root 계정으로 /etc/sudoers.d/[사용자명] 파일에 아래 내용을 추가합니다. 아래 예제에서 NOPASSWD: 를 빼면 sudo 권한만 부여됩니다. (sudo 실행시 패스워드 입력필요) 모든 명령어에 대한 sudo 권한 부여 vi 에디터로 추가 # vi /etc/sudoers.d/[사용자명] # 아래 내용 입력 후 저장 [사용자명] ALL=NOPASSWD: ALL echo 명령어로 추가 # echo 명령어로 추가 echo '[사용자명] ALL=NOPASSWD: ALL' > /etc/sudoers.d/[사용자명] 특정 명령어만 sudo 권한 부여 vi 에디터로 추가 # vi /etc/sudoers.d/[사용자명] ..

    리눅스 scp 명령어

    SCP 명령어 scp(secure copy)는 ssh 통신을 이용한 파일 전송 명령어입니다. 사용법 scp file user@host:/path/to/file # 리모트 서버로 파일 전송 scp user@host:/path/to/file /local/path/to/file # 리모트 서버에서 파일 가져오기 scp file1 file2 user@host:/path/to/directory # 여러 파일 전송 scp -r /path/to/directory user@host:/path/to/directory # 디렉토리 전체 전송 # (옵션) # -r : 디렉토리 전송 # -v : 전송 상세내용 보기 # -C : 압축하여 전송 # -l 800 : bandwith를 800으로 제한 # -p : 전송하는 파일의 원..

    리눅스 du 명령어

    du 명령어 du는 디렉토리별 디스크 사용량을 알 수 있는 명령어입니다. 사용법 du [OPTION] [FILE] # -a : 디렉토리 + 모든 파일들의 사용량 표시 # -s : 용량의 합계를 보여줌 # -h : 사람이 보기 편한 포멧으로 보여줌 (e.g., 1K 234M 2G) # -d : 출력할 디렉토리 depth를 설정 # -x : 다른 파일 시스템의 디렉토리는 스킵 사용 예 du -sh * # 현재 경로의 모든 파일/디렉토리 용량 보기 du -sh * | sort -rh | head -10 # 현재 경로의 용량 큰 10개 파일/디렉토리 추출

    Docker 명령어

    Docker 명령어 자주 사용하는 도커 명령어 정리 docker ps # 컨테이너 확인 docker images # 도커 이미지 확인 docker top $CONTAINER_ID # 컨테이너 내 running process 확인 docker build -t $IMAGE_NAME:$TAG . # 빌드하기 docker tag $IMAGE_NAME:$TAG $IMAGE_NAME:latest # latest 버전 설정 docker run -d --name $NAME $IMAGE_NAME:$TAG # docker 실행 docker run -d -p 8000:8000 --name $NAME $IMAGE_NAME:$TAG # docker 포트 매핑 docker run -d -v $CONTAINER_PATH:$LOCA..

    Heap Sort (힙정렬)

    Heap Sort (힙정렬) 힙 정렬은 비교기반 정렬 알고리즘으로 선택정렬의 향상된 버전으로 볼 수 있습니다. 선택정렬과 유사하게 정렬된 영역과 정렬되지 않은 영역으로 나누고 정렬되지 않은 영역의 가장 큰 요소를 추출한 후 정렬된 영역에 삽입합니다. 선택정렬과 다른 점은 힙 정렬은 정렬되지 않은 영역의 선형탐색에 시간을 낭비하지 않습니다. 잘 구현된 퀵 정렬보다는 실행속도가 다소 느리며 O(nlogn)의 시간복잡도를 가집니다. Heap Sort 정렬과정 정렬해야 할 요소들로 최대 힙 트리 를 구성합니다. (내림차순으로 정렬은 최소 힙 트리) 최대 힙: 완전 트리이면서 모든 노드가 자식들보다 큰 트리 최소 힙: 완전 트리이면서 모든 노드가 자식들보다 작은 트리 가장 큰 수(루트에 위치)를 힙에서 꺼내 배열..

    Insertion Sort (삽입정렬)

    Insertion Sort (삽입정렬) 삽입정렬은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여 자신의 위치를 찾아 삽입함으로써 정렬하는 알고리즘입니다. O(n^2)의 시간복잡도를 가지지만 선택정렬, 버블정렬 알고리즘에 비해 빠릅니다. 삽입을 할 때 데이터를 하나씩 밀어야 하기 때문에 배열이 길어질수록 효율이 떨어집니다. Insertion Sort 정렬과정 초기상태: (5 3 4 2 1 7 6) (5 3 4 2 1 7 6) (5 3 4 2 1 7 6) (3 5 4 2 1 7 6) (3 4 5 2 1 7 6) (2 3 4 5 1 7 6) (1 2 3 4 5 7 6) (1 2 3 4 5 7 6) (1 2 3 4 5 6 7) Insertion Sort 코드 (Python) de..

    Selection Sort (선택정렬)

    Selection Sort (선택정렬) 선택정렬은 정렬되지 않은 부분에서 가장 최소의 값을 찾아 시작부분에 배치하여 정렬하는 알고리즘입니다. O(n^2)의 시간복잡도를 가지며 알고리즘이 단순하여 메모리가 제한적인 경우에 사용시 성능 상의 이점이 있습니다. Selection Sort 정렬과정 주어진 배열에 최소 값을 찾습니다. 그 값을 맨 처음에 위치한 값과 교체합니다. 맨 처음 위치를 제외한 나머지 배열을 같은 방법으로 정렬합니다. 초기상태: (5 3 4 2 1 7 6) Array 최솟값 (5 3 4 2 1 7 6) 1 (1 3 4 2 5 7 6) 2 (1 2 4 3 5 7 6) 3 (1 2 3 4 5 7 6) 4 (1 2 3 4 5 7 6) 5 (1 2 3 4 5 7 6) 6 (1 2 3 4 5 6 7..

    Bubble Sort (버블정렬)

    Bubble Sort (버블정렬) 버블소트는 인접한 요소들을 비교하여 정렬하는 알고리즘입니다. 인접한 두개의 요소들을 비교하여 크기가 순서대로 되어있지 않으면 서로 변경합니다. O(n^2)의 시간복잡도를 가지지만 코드가 단순하여 자주 사용됩니다. Bubble Sort 정렬과정 초기상태: (5 3 4 2 1) 1회전(3 5 4 2 1) -> (3 4 5 2 1) : 5 > 4, 교환(3 4 2 5 1) -> (3 4 2 1 5) : 5 > 1, 교환 결과: (3 4 2 1 5) (3 4 5 2 1) -> (3 4 2 5 1) : 5 > 2, 교환 (5 3 4 2 1) -> (3 5 4 2 1) : 5 > 3, 교환 2회전(3 4 2 1 5) -> (3 2 4 1 5) : 4 > 2, 교환결과: (3 2 1..