목록분류 전체보기 (67)
The Boxer
※ 두 스레드를 구분할 때 물리적과 논리적이라는 단어는 제가 임의로 붙인 단어입니다. 하드웨어적으로 구현된 스레드와 소프트웨어적으로 구현된 스레드를 구분하기 위함입니다. [물리적 스레드] - 물리적 스레드를 알기 전에 먼저 코어가 무엇인지 알아봅시다. - 코어 : CPU에 내장된 처리회로. 명령어를 메모리에서 뽑아 해석하고 실행하는 반도체 유닛.- CPU는 다수의 코어를 장착할 수 있습니다. 최근에 나오는 듀얼 코어(2코어), 쿼드 코어(4코어), 옥타 코어(8코어) 등이 그 개념입니다.- 코어의 수가 증가할수록 CPU의 처리 속도는 빨라집니다. 싱글 코어에서 2번 해야될 연산을 듀얼 코어에서는 한번에 수행하여 완료할 수 있습니다. 다만, 코어가 증가할 수록 클럭(코어당 연산의 속도)가 낮아진다는 단점이..
[프로세스(Process)] 정의 : 컴퓨터에서 연속적으로 실행되고 있는 프로그램메모리상에서 실행되는 코드 특징- 프로세스는 실행시 Code, Data, Stack, Heap의 독립된 메모리 영역을 할당 받음- 중앙처리장치(CPU)가 돌면서 여러 프로세스를 처리(멀티 프로그래밍)- 프로세스를 회전하면서 프로세스의 상태(Context)를 저장하고 실행시 다시 불러옴(Context Switching)- 프로세스는 독립된 메모리 영역을 차지하므로 Context Switching에 오버헤드가 발생함 [쓰레드(Thread)]정의 : 프로세스에서 동작하는 여러 실행의 흐름프로세스는 최소 1개 이상의 쓰레드를 소유하나의 프로그램에서 여러개의 태스킹을 동시에 실행할때 스레드를 사용가령 게임에서 여러 캐릭터들이 동시에 ..
[동시성(Concurrency)] 싱글코어에서 멀티쓰레드를 동작시키는 방식 싱글코어가 여러개의 쓰레드를 번갈아 가면서 작업(멀티 프로그래밍)논리적인 병렬성 구현쓰레드가 병렬적으로 실행되는것 처럼 보임 [병렬성(Parallelism)]멀티코어에서 멀티쓰레드를 동작시키는 방식멀티코어가 여러개의 쓰레드를 동시에 작업(멀티 프로세싱)물리적인 병렬성 구현쓰레드가 실제로 병렬적으로 실행됨 데이터 병렬성- 같은 작업을 병렬처리 하는 방식- 전체 데이터를 서브 데이터로 나누어 서브 데이터들을 병렬처리- 서브 데이터는 코어 수 만큼 나뉨- Java 8에서 지원하는 병렬 스트림이 데이터 병렬성을 사용함 작업 병렬성- 서로 다른작업을 병렬처리 하는 방식 [Parallelism vs Concurrency] (출처 : http..
[IPv4 주소 체계]IP 주소 : 네트워크 통신시 노드를 구별하기 위한 논리적인 주소 표기법- 32 bit로 표현하며 10진수 4자리를 '.' 으로 나누어 표현 계층 구조- IP 주소는 접두사(prefix)와 접미사(suffix)로 나뉨- 32 bit주소 중 앞 부분은 prefix, 나머지 부분이 suffix- prefix는 Network를 판별하기 위한 Network ID로 사용되며 suffix는 Host를 구분하기 위한 Host ID로 사용됨 (편지를 전달하기 위해 Network는 동네 - 아파트에, Host는 아파트 몇 호에 사는 개인으로 비유할 수 있음)- IP 주소 체계에서 '/' 뒤에 이어지는 부분이 prefix에 대한 길이(bit)를 나타냄 (출처 : http://www.ktword.co...
[네트워크 통신망의 종류]네트워크 통신 구조와 방법에 대한 정리 [근거리 통신망(LAN)]Local Area Network : 개인 소유, 단일 사무실, 건물, 학교등 소규모에 있는 호스트를 연결한 네트워크 구조소규모의 네트워크 호스트간 상호 연결을 통해 구성 일반적으로 개인이 사적으로 사용하기 위한 목적 [광역 통신망(WAN)] Wide Area Network : 넓은 지리적인 크기를 갖는 도시, 주, 국가간의 네트워크 구조LAN과는 다르게 라우터, 교환기 등을 사용하여 호스트를 연결 WAN은 주로 통신회사가 구성하고 이를 임대하는 목적 [교환 망]회선 교환 망 - 두 시스템 사이에 회선(circuit)이라 불리는 전용선이 사용됨- 물리적인 회선을 사용하여 통신 패킷 교환 망- 일반적인 컴퓨터 네트워크..
[Synchronized] - Java 실행시 두개 이상의 쓰레드가 사용된다고 할때 사용되는 자원에 대해서 제어를 해줘야함- 예를들어 2개 이상의 쓰레드가 하나의 변수(자원)에 접근한다고 가정할 때, 두 쓰레드가 동시에 변수를 사용하면 결과에 오류가 날 수도 있음- 따라서 하나의 쓰레드가 자원에 접근하는 경우 다른 쓰레드는 그 자원에 접근하지 못하도록 [동기화] 시켜줘야 함- 동기화는 자원에 대한 동기화, 메소드에 대한 동기화가 존재함- 하지만 과도하게 동기화를 할 경우 프로그램의 실행 속도가 줄어든다는 단점이 있음 [변수/객체에 사용하는 예시] private Object object = new Object(); public void method() { synchronized(object); //코드 실..
[Interpreter] - 소스코드를 바로 실행시키는 프로그램 - 소스코드를 목적코드 혹은 기계어로 번역하는 컴파일러와 대비됨 - 소스코드를 한줄 한줄 읽어가며 번역하고 바로 실행함 - 바로 실행하기 때문에 따로 실행파일이 존재하지 않음 [Compiler] - 소스코드를 목적코드 혹은 기계어로 번역하는 프로그램 - 실행가능한 프로그램이 생성됨
[Lombok]Java에서 사용하는 다양한 기능들을 annotation으로 처리할 수 있게 하는 라이브러리 annotation으로 처리를 하기 때문에 반복되는 코드 사용을 줄일 수 있음 [Lombok의 종류]Stable Lombok에서 사용하는 것을 추천하는 기능들. [val, var]타입이 정해지지 않은 객체 혹은 변수를 선언 가능.- annotation없이 변수명 앞에 선언하여 사용- 지역변수로만 선언 가능(클래스 변수로는 선언 불가)- val과 var의 기능은 같으나 val은 final이기 때문에 값 변경이 불가사용 예시import lombok.*; import java.util.Stack; public class ValAndVar { val classValue = 10; //#에러발생 : clas..
[GET]- 클라이언트가 서버에 데이터를 요청하는 HTTP의 데이터 전송 방식- 클라이언트는 GET을 사용해 서버에 자료를 요청하고 서버는 이를 검토한 뒤 클라이언트에 해당 데이터를 제공- 데이터베이스의 SELECT와 유사 특징- 클라이언트는 URL에 요청할 데이터를 추가해서 보냄 (ex. www.something.com/database?title=game&data=starcraft)- URL에 데이터를 노출시켜 보내기 때문에 보안성이 취약- URL에서 '?'이후에 값을 추가하여 데이터를 요청, '&'으로 데이터를 결합- 한번에 보내는 글자수는 255자로 제한됨 예제 이 름 : 메 일 : (출처 : http://egloos.zum.com/dkbalm/v/769595)위 코드를 htm파일로 저장하여 una..
[HTTP 메세지]HTTP 메세지 : HTTP를 통해 주고 받는 데이터의 형태. 실질적인 데이터가 담긴 [body]와 body외의 추가적인 정보를 담는 [header]로 구성됨 [body]실질적인 데이터가 담긴 구조. Hyper Text 데이터가 존재함. [header]주고 받는 실질적인 데이터 외에 데이터의 처리 방식, 사용 언어, 브라우저 종류, 캐시 사용 여부 등을 담은 추가 정보. 통신을 하기 위해 도움이 되는 추가적인 정보라고 볼 수 있음.1. 크롬유저의 경우 [F12]키를 누른다.2. [Network] 클릭하고 [F5]를 누른다.3. 현재 접속하고 있는 페이지의 각 콘텐츠마다 정보를 볼 수 있음. Request header : 클라이언트가 서버측에 요청(request)한 정보.- Host : ..