분류 전체보기(89)
-
와이어 샤크를 이용해 ip패킷 분석하기
Three Way Hand Shake 아래는 3 Way Hand Shake 과정입니다. 위 패킷에서 Three Way Hand Shake 과정에 해당하는 패킷을 찾아보시기 바랍니다. 먼저 3-Way Hand Shake 과정을 수행합니다. Client(Source Port) 에서 Server(Destination Port)로 통신을 원한다는 신호를 보냅니다. [SYN] Seq = 0 Server에서 SYN을 정상적으로 받았다는 신호를 보냅니다. [SYN, ACK] Seq=0 Ack=1 Client에서 SYN-ACK를 잘 받았다고 신호를 보냅니다. [ACK] Seq=1 Ack=1 Client 에서 HTTP 요청을 보냅니다. [GET / HTTP/1.1] Server 측에서 확인 신호를 보냅니다. TCP 패킷..
2022.12.28 -
리플렉션을 이용한 json 직렬화
jackson 으로 진행 package hello.hellospring.jsontest; public class Dog { private static final String CATEGORY ="동물"; public String name; public int age; @Override public String toString() { return "Dog{" + "name='" + name + '\'' + ", age=" + age + '}'; } private Dog() { this.name = "누렁이"; this.age=0; } public Dog(final String name) { this.name =name; this.age =0; } public Dog(final String name, fina..
2022.12.28 -
쓰레드덤프 취득 및 해석툴 사용 실습
스레드 덤프란? JVM 내부에서 현재 수행 중인 스레드의 SnapShot을 텍스트로 출력 서버 Hang, 서버 Slowdown 등 서버에서 발생하는 문제를 해결하는 가장 유용한 도구 WAS Trouble Shooting에 필요한 다양한 데이터를 제공 합니다. 스레드 덤프가 왜 필요 한가요? DB 쿼리가 느릴 때 HTTP 호출이 느릴 때 Logging 처리가 느릴 때 파일 I/O가 느릴 때 Lock이 걸릴 때 웹 서버에서는 많은 수의 동시 사용자를 처리하기 위해 수십~수백 개 정도의 스레드를 사용한다. 두 개 이상의 스레드가 같은 자원을 이용할 때는 필연적으로 스레드 간에 경합(Contention)이 발생하고 경우에 따라서는 데드락(Deadlock)이 발생할 수도 있다. 경합이란 어떤 스레드가 다른 스레드..
2022.12.18 -
JMX 힙덤프
java Mission Control JMX? JMX는 실행 중인 애플리케이션의 상태를 모니터링 하고, 설정을 변경할 수 있게 해주는 API라고 이해하면 될 듯 하다. 이해하기 쉬운 단순한 규격을 가지고 있어서 어렵지 않게 런타임 상태의 애플리케이션을 관리할 수 있다. 장점 -웹사이트를 통해 원격의 Web Server, was, db등의 상태 모니터링, Start, Stop등의 기능, 디바이스 상태, 각종 서비스제어 등의 기능을 제공할 수 있습니다. -JMX 기술을 사용하여 리소스를 관리하려면 Java 프로그래밍 언어로 리소를 관리해야하는데 MBeans로 알려진 Java 객체를 사용하여 리소스를 관리합니다. RMI: 분산객체 간의 통신을 구현하는 모든 프로토콜을 의미함. (CORBA, DCOM …) 장점..
2022.12.18 -
ExecutorService
Thread를 활용하여 다수의 작업(Task)들을 비동기로 수행한다는 것은 간단하지 않다. Thread의 라이프사이클(생성과 제거 등)이나 발생할 수 있는 여러가지 low level의 고려사항들이 존재하는데 이를 개발자가 신경쓰지 않도록 편리하게 추상화한 것이 ExecutorService이다. ExecutorService에 Task(작업)를 지정해주면 가진 ThreadPool을 이용하여 Task를 실행한다. Task는 큐(Queue)로 관리되기 때문에 ThreadPool의 Thread 갯수보다 실행할 Task가 많은경우 미실행된 Task는 큐에 저장되어 실행을 마친 Thread가 생길 때까지 기다린다. 우리가 많이 사용하는가? 우리가 쓰레드를 직접 만들어서 쓰는 일은 거의없다. 쓰레들 풀을 조건에 따라서..
2022.12.18 -
Tree, map 시간복잡도
Tree? 트리란 Node와 Branch를 이용해서, 사이클을 이루지 않도록 구성한 데이터 구조이다. 실제로 어디에 많이 사용되나? 트리 중 이진트리 (Binary Tree) 형태의 구조로, 탐색(검색) 알고리즘 구현을 위해 많이 사용된다. 이진 트리와 이진 탐색 트리 주로 트리에서는 이진트리를 사용한다고 볼 수 있다. 이진트리와 이진 탐색 트리 라고 해서 두가지가 존재하는데, 각각 비슷해보이지만 다르다. 이진 트리: 노드의 최대 Branch가 2인 트리 이진 탐색 트리 (Binary Search Tree, BST): 이진 트리에 다음과 같은 추가적인 조건이 있는 트리 왼쪽 노드는 해당 노드보다 작은 값, 오른쪽 노드는 해당 노드보다 큰 값을 가지고 있음 이진트리는 단순하게 Branch가 2인 트리라면,..
2022.12.18