Programming Language(100)
-
[JUnit] JUnit 이란?
JUnit은 자바 개발자가 가장 많이 사용하는 테스팅 프레임워크이다. 유닛 테스트를 작성하는 자바 개발자 중 93%가 이 JUnit을 사용한다. 유닛 테스트 프로그래밍에서 모든 함수와 메서드에 대한 테스트 케이스(Test case)를 작성하여 의도된 대로 잘 동작하는지 검증하는 절차 프로그램을 작은 단위로 쪼개어 각 단위가 정확하게 동작하는지 검사함으로써 프로그램의 안정성을 높임 System.out.println()으로 하는 번거로운 디버깅이 필요없으며, 개발기간 중 대부분을 차지하는 디버깅 시간을 단축 JUnit 자바 프로그래밍 언어용 유닛 테스트 프레임워크 테스트 결과는 Test클래스로 개발자에게 테스트 방법 및 클래스의 History를 공유 가능 단정(assert) 메서드로 테스트 케이스의 수행 결..
2022.08.20 -
[자료구조] 이진 탐색 트리 (Binary Search Tree)
1. 그래프 그래프 : 단순히 노드(node)와 그 노드를 연결하는 간선(edge)을 하나로 모아놓은 자료구조 그래프 용어 정점(vertex) : 위치라는 개념 (node라고도 함) 간선(edge) : 위치 간의 관계, 노드를 연결하는 선(link, branch 라고도 부름) 인접 정점(adjacent vertex) : 간선에 의해 직접 연결된 정점 정점의 차수(degree) : 무방향 그래프에서 하나의 정점에 인접한 정점의 수 진입 차수(in-degree) : 방향 그래프에서 외부에서 오는 간선의 수(내차수라고도 부름) 진출 차수(out-degree): 방향 그래프에서 외부로 향하는 간선의 수 (외차수 라고도 부름) 경로 길이(path length): 경로를 구성하는 데 사용된 간선의 수 단순 경로(s..
2022.08.18 -
[자료구조] Heap
힙(heap) 완전 이진트리의 일종 우선순위 큐를 위해 만들어진 자료구조 (우선순위가 높은 데이터가 먼저 나간다!) 데이터의 최댓값, 최솟값을 빠르게 찾기 위해 고안된 자료구조 반정렬 상태(느슨한 정렬 상태)를 유지한다. → partial order 힙의 종류 최대 힙(Max Heap) : 자식 노드의 값이 부모 노드의 값보다 작거나 같음 최소 힙(Min Heap) : 부모 노드의 값이 자식 노드의 값보다 작거나 같음 힙의 활용 예시 시뮬레이션 시스템 네트워크 트래픽 제어 운영 체제에서의 작업 스케줄링 수치 해석적인 계산 우선순위 큐는 배열, 연결리스트, 힙으로 구현이 가능하다. 이 중에서 힙(heap)으로 구현하는 것이 가장 효율적이다! 힙 구현 힙은 배열로 구현 주로, 배열의 인덱스 1번을 루트 노드..
2022.08.18 -
[자료구조] Hash
해시 테이블(Hash Table) 해시 테이블이란, (key, value)의 형태로 데이터를 저장하는 자료구조이다. Hash map, map, dictionary, 연관배열 등의 이름으로 알려져 있다. 해시 함수에 key를 적용해 나온 결과를 배열의 인덱스로 하고, 그 자리에 value를 저장한다. 해시 충돌이 일어나지 않는 경우, 해시테이블의 시간 복잡도는 O(1) 해시 함수 key를 해쉬로 바꿔주는 역할을 한다. 다양한 길이를 가지고 있는 key를, 일정한 길이의 hash로 바꾸어 공간을 효율적으로 관리 (key의 길이 > hash의 길이) 해시 충돌(Hash Collision)을 최소화 하는 해시 함수를 만드는 것이 중요 해시 해시 함수의 결과 값 저장소(bucket)에서, 값(value)와 매칭되..
2022.08.18 -
[Spring] WebSocket & Spring
웹소켓 웹소켓은 전이중(동시에 양방향 전송이 가능한) 통신을 제공하기 때문에 실시간성을 보장해 줄 수 있다. 실시간성을 보장하는 서비스에서 웹소켓을 사용할 수 있다. 웹소켓 vs HTTP 웹소켓이 아닌 HTTP를 이용하여 실시간성을 보장하는 것처럼 흉내낼 수 있다. HTTP의 실시간성 보장 기법에는 Polling, Long Polling, Streaming이 있다. 실시간성 측면에서 웹소켓과 HTTP의 가장 큰 차이는 수립된 connection을 활용하는 방식이다. HTTP 클라이언트와 연결을 맺고 끊는다. (비연결성) 3way, 4way handshake로 연결을 맺고 끊어야한다. 웹소켓 한 번 연결을 맺고 나면, 그 연결을 계속 유지한다. 연결을 맺는 과정에서 발생하는 비용을 줄일 수 있다. 또 다른..
2022.08.17 -
[네트워크] 웹 소켓(Web Socket)
웹 개발을 할 시, 서버와 클라이언트의 통신이 HTTP 프로토콜로 이루어지는 것은 맞다. 하지만, 채팅, 게임, 주식 차트 등의 실시간 통신이 필요한 서비스를 구현하고자 할 때 HTTP 프로토콜이 아닌 웹소켓 프로토콜이 더 좋다는 이야기를 접할 수 있다. 1. HTTP의 한계 HTTP는 사용자가 URL을 요청할 때에만 서버에서 해당 페이지를 꺼내주는 방식이다. 다시 말하자면, 사용자는 서버로부터 새로운 정보를 받기 위해서는, 반드시 URL 요청이 전제되어야 한다는 말과 동치이다. 2. AJAX의 등장 AJAX는 HTTP 규약을 뛰어넘는 방안으로써, AJAX는 프로토콜이 아닌 HTTP를 효과적으로 이용하는 기술이다. 만약, 기존의 HTTP 방식으로 클라이언트가 서버에 요청을 보낸다고 가정하자. 요청 페이지..
2022.08.17