목록Computer Science (20)
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)이라 불리는 전용선이 사용됨- 물리적인 회선을 사용하여 통신 패킷 교환 망- 일반적인 컴퓨터 네트워크..
[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 : ..
[Hyper Text Transfer Protocol] [Hyper Text]웹에서 제공되는 자료의 형태. 텍스트 문서를 링크로 연결하여 다른 문서로 쉽게 연결이 되도록 구성.웹 사이트의 자료는 Hyper Text로 이루어져 있음.클라이언트가 자료 제공 요청을 하면 서버는 Hyper Text로 된 자료를 제공. [Protocol]두 노드가 통신(데이터를 주고 받음)하기 위해선 서로간의 규약, 약속이 필요함규약에는 통신 방법, 오류 처리, 통신 설정, 보안 설정 등의 요소가 포함될 수 있음 (편지를 쓸 때도 규약이 필요함. 수신 주소 작성, 보내는 방법, 우표 붙이기, 두 사람간 가능한 언어...) [HTTP?] 클라이언트(웹 브라우저)와 서버(웹 서버)간 데이터(하이퍼 텍스트)를 주고받기 위한 통신 규약..
SQL Error : Incorrect string value 데이터베이스에 String을 저장하기 위해 SQL문을 실행해도 다음과 같은 오류가 발생하는 경우가 있습니다.java.sql.SQLDataException: (conn=15) Incorrect string value: '\xED\x95\x9C\xEA\xB8\x80' for column위 에러는 String 값을 데이터베이스에서 처리하지 못하는 경우에 발생합니다.저 같은 경우는 String 값에 한글이 들어가서 데이터베이스에서 이를 처리하지 못한 경우입니다. - 해결 방법 : 데이터베이스 옵션에서 기본 조합을 'utf16_unicode_ci' 혹은 한글을 지원하는 다른 문자체계로 적용하면 해결할 수 있습니다.
이번 포스팅에서는 Google에서 배포한 Protocol buffers를 사용하는 방법을 알아보겠습니다. [Serialization(직렬화)]Serialization : 컴퓨터에 존재하는 객체 혹은 데이터구조를 저장소에 저장하거나 다른 컴퓨터에 전송하기 위해 데이터 형태를 다른 포맷으로 변환하는 과정.가령 컴퓨터 A 에서 B로 일반적인(메모리 공간을 차지하는) 데이터를 전송하려면 일단 byte단위로 데이터를 변환한 후 이를 통신 프로토콜을 통해 전송함. 하지만 객체나 데이터구조등 메모리 참조를 통해 접근해야 하는 데이터는 직렬화를 한 후 전송해야 함.직렬화에는 여러 종류가 존재하며 Java 자체에서 지워하는 직렬화도 존재함. [Protocol Buffers(protobuf)]Protocol buffers..