목록CS (10)
in.add()

Hash Function 해시함수(hash function)란 데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 이때 매핑 전 원래 데이터의 값을 키(key), 매핑 후 데이터의 값을 해시값(hash value), 매핑하는 과정 자체를 해싱(hashing)라고 한다. Hash Table 해시함수를 사용하여 키를 해시값으로 매핑하고, 이 해시값을 색인(index) 혹은 주소 삼아 데이터의 값(value)을 키와 함께 저장하는 자료구조를 해시 테이블(hash table)이라고 한다. 이때 데이터가 저장되는 곳을 버킷(bucket) 또는 슬롯(slot)이라고 한다. 이런 형식으로 데이터를 저장하면 Key에 해당하는 Value를 찾기 위해 해시 함수를 1번만 수행..
String, StringBuffer, StringBuilder Java에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있다. 연산이 많지 않을 때는 위에 나열된 어떤 클래스를 사용하더라도 이슈가 발생할 가능성은 거의 없다. 그러나 연산 횟수가 많아지거나 멀티스레드, Race condition(경쟁 상태) 등의 상황이 자주 발생한다면, 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해야 한다. String vs StringBuffer/StringBuilder String은 immutable(불변)하고 StringBuffer, StringBuilder는 mutable(가변)하다. String 클래스는 StringBuffer 클래스나 S..

멀티 스레드란 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 멀티스레딩이라고 한다. 하나의 프로그램에 동시에 여러개의 일을 수행할 수 있도록 해주는 것이다. 멀티 스레딩의 장점 프로세스 생성은 많은 시간과 자원을 소비한다. 이러한 단점을 최소화 시킨 일종의 경량화된 프로세스(=스레드)를 만들게 된 것이다. 스레드 간의 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간 또는 동적으로 할당된 공간인 Heap 영역을 이용하여 데이터를 주고받을 수 있다. 그렇기 때문에 프로세스 간 통신 방법에 비해 스레드 간의 통신 방법이 훨씬 간단하다. 스레드의 context switch 는 프로세스 context..

프로그램, 프로세스, 스레드 프로그램 : 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태를 말한다. 프로세스 : 운영체제로부터 자원을 할당받은 작업의 단위. 스레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위. 프로그램 → 프로세스 프로그램이라는 단어는 아직 실행되지 않은 파일 그 자체를 가리키는 말이다. 프로그램을 실행하는 순간 해당 파일은 컴퓨터 메모리에 올라가게 되고, 이 상태를 동적인 상태라고 하며 이 상태의 프로그램을 프로세스라고 한다. 따라서 위키피디아에서는 프로세스에 대해 정의를 내릴 때 그냥 실행되고 있는 컴퓨터 프로그램이라고 정의를 내리고 있으며, 스케줄링 단계에서의 "작업"과 같은 단어라고 봐도 무방하다고 하고 있다. 실제로 프로세스라는 단어가 ..

OSI 7 계층 OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 각 계층은 하위 계층의 기능을 이용하고, 상위 계층에게 기능을 제공한다. 계층을 나눈 이유는 표준을 정하고 장애 발생 시 어느 구간에서 발생했는지를 보다 명확하게 알기 위함이다. 아래로 내려갈수록 Protocol Header가 추가되어 계층 정보(TCP, IP, MAC 등)를 덧붙인다. 우리가 이메일을 보낸다고 가정할때 처음 응용계층에서 헤더를 붙여 하위 계층으로 넘겨준다. 표현 계층은 응용계층에서 내려온 헤더와 이메일 데이터를 하나의 데이터로 간주하게 된다. 그래서 다시 자신의 헤더를 덧붙인다. 이런 과정은 Encapsulation이라고 한다. 이런 식으로 물리계층까지 내려오게 되면 그때부터 0과 1의 이..
둘 다 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청할 때 사용하는 방식이다. 하지만 둘의 특징을 제대로 이해하여 기술의 목적에 맞게 알맞은 용도에 사용해야한다. GET 방식 서버로부터 정보 조회하기 위하여 설계된 메소드입니다. Select의 성향을 가지고 있다. 서버에서 어떤 데이터를 가지고 와서 보여주는 용도이지 서버의 값이나 상태를 바꾸지는 않는다. 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, URL의 끝에 쿼리스트링을 통해 전송한다. 전송하는 길이에 제한이 있다. 동일한 요청을 여러 번 수행하더라도 동일한 응답이 와야한다. POST 방식 정보 생성/변경하기 위해 설계된 메소드입니다. 서버의 값이나 상태를 바꾸기 위해서 사용한다. 요청을 전송할 때 Body에 담아서 전송한다. HT..

HTTP 웹 서버와 클라이언트 간의 문서를 교환하기 위한 통신 규약. 웹에서만 사용하는 프로토콜로 TCP/IP 기반으로 서버와 클라이언트 간의 요청과 응답을 전송한다. HTTP 특징 TCP 기반의 통신 방식 비연결 지향 브라우저를 통해 사용자의 요청으로 서버와 접속하여 요청에 대한 응답의 데이터를 전송 후, 연결을 종료한다. 간단하기 때문에 자원이 적게드는 장점이 있다. 하지만, 연결이 지속적이지 않기 때문에 사용자와 연결 종료 후 추가적인 요청 시 어떤 사용자의 요청인지 모른다는 점이 존재한다. 즉, 여러 사용자가 요청할 시 각각의 사용자 요청을 구분할 수 없어서 제대로 된 응답 데이터를 전송할 수 없다는 단점이 있다. 해결 방법으로는 쿠키, 세션, 히든 폼 필드 등이 있다. 단방향성 사용자의 요청 한..

HTTP HTTP는 Connectionless 방식으로 연결을 매번 끊고 새로 생성하는 구조입니다. 이는 Network 비용 측면에서 최초 연결을 하기 위해 많은 비용을 소비하는 구조입니다. HTTP의 Keep Alive 란? HTTP/1.0+의 'Keep-Alive'. 연결을 유지하라 이미 연결되어 있는 TCP 연결을 재사용하는 기능입니다. Handshake 과정이 생략되므로 성능 향상을 기대할 수 있습니다. 즉, keep Alive time out 내에 client에서 request를 재 요청하면 socket(port)를 새로 여는 것이 아니라 이미 열려 있는 socket(port)에 전송하는 구조가 됩니다. 👉 Conenction에 소요되는 시간을 절약하게 됩니다. Keep Alive 설정 요청 헤..