Computer Science/CS
-
[Network] TCP/IP, OSI 7 Layer, UDPComputer Science/CS 2023. 5. 15. 13:17
TCP/IP Transmission Control Protocol / Internet Protocol Internet Protocol Suite : 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신규약(프로토콜)의 모음이다. 인터넷 프로토콜 슈트 중 TCP 와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다. 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져 있다. IP : 메세지나 파일을 작은 패킷으로 나누거나 재조립하여 송수신에 반영하는 일을 담당. 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다. TCP : IP위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해 준다. 각 패킷의..
-
[CS] GradleComputer Science/CS 2023. 3. 3. 14:15
Gradle Groovy를 이용한 빌드 자동화 시스템입니다. Groovy와 유사한 도메인 언어를 채용하였으며, 현재 안드로이드 스튜디오의 공식 빌드 시스템입니다. Java, C/C++, Python 등 다양한 언어를 지원합니다. Ant 와 Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 오픈소스 빌드 도구입니다. (빌드 도구 : 소스코드를 실행가능한 애플리케이션 생성물을 자동으로 만드는 프로그램. 빌드 과정은 소스코드를 컴파일하고 연결하고 패키징하여 실행가능한 형태로 가공) 빌드 : 우리가 작성한 자바 코드를 비롯해 프로젝트에 쓰인 각각의 파일 및 자원(.xml, jpa, jpg, properties)등을 JVM이나 톰캣과 같은 WAS가 인식할 수 있도록 패키징하는 과정 빌..
-
[CS] 정규 표현식 Regular Expression, RegexComputer Science/CS 2023. 1. 19. 23:13
Regular Expression 정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어입니다. 정규 표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있습니다. 기본 개념 패턴(pattern)으로 부르는 정규 표현식은 특정 목적을 위해 필요한 문자열 집합을 지정하기 위해 쓰이는 식입니다. | 여러 항목 중 선택, A | B 는 "A" or "B" 와 일치한다는 의미. () 괄호를 사용하여 연산자의 범위와 우선권 정의. gr(a|e)y 는 "gray" or "grey" 집합을 둘 다 기술하는 동일 패턴 ? 0번 or 1차례까지의 발생을 의미. colou?r 는 "color"와 "colour"를 둘 다 일치 시킴 * 별표는 0번 이상의 발생을 의미..
-
[CS] Graph, TreeComputer Science/CS 2022. 11. 28. 18:44
트리 ⊂ 그래프 그래프 노드(하나의 점)와 노드 간을 연결하는 간선으로 구성된 자료 구조이다. 순환 혹은 비순환 구조를 이룬다. 그래프의 구현 방법은 2가지 방식이 있습니다. - 인접 행렬(adjacency matrix) : 2차원 배열을 사용하는 방식 - 인접 리스트(adjacency list) : 리스트를 사용하는 방식 두 방식의 메모리와 속도 차이는 다음과 같습니다. V : 노드의 개수, E : 간선의 개수 일 때, 인접 행렬은 O(v^2), 인접 리스트는 O(E) 만큼의 메모리 공간이 요구됩니다. 인접 행렬은 O(1), 인접 리스트는 O(V)만큼의 시간이 소요됩니다. 트리 그래프와 같이 노드와 노드 간을 연결하는 간선으로 구성된 자료 구조이다. 트리는 두 개의 노드 사이에 반드시 1개의 경로만을 ..
-
[CS] 동기 비동기 프로그래밍Computer Science/CS 2022. 9. 7. 23:47
동기(Synchronous) 현재 작업의 응답이 끝남과 동시에 다음 작업이 요청된다. 함수를 호출하는 곳에서 호출되는 함수가 결과를 반환할 때까지 기다린다. 작업 완료 여부를 계속해서 확인한다. 비동기(ASynchronous) 현재 작업의 응답이 끝나지 않은 상태에서 다음 작업이 요청된다. 함수를 호출하는 곳에서 결과를 기다리지 않고, 다른 함수(callback)에서 결과를 기다린다. 작업 완료 여부를 확인하지 않는다. (싱글쓰레드에서 비동기적인 프로그래밍을 한다고 해서 멀티쓰레드처럼 동시 다발적인 실행이 가능해지는 것은 아니다.) 블록킹(Blocking) 블록킹 (Blocking) : 자신의 수행결과가 끝날 때까지 제어권을 갖고 있는 것 논블록킹(non-blocking) 논블록킹 (non-blockin..
-
[CS] Windows kernel programmingComputer Science/CS 2022. 9. 7. 23:25
Kernel 운영체제의 중심에 위치하여운영체제에 기본적인 기능을 제공하는 핵심 부분입니다. 모든 작업은 커널의 동작에 의해 제어되며, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 인터럽트 처리, 프로그래밍 인터페이스 제공 등의 기능을 제공합니다. 하드웨어에 관련된 모든 작업은 응용 프로그램이 직접 접근 해서 사용하는 것이 아닌, 하드웨어와 소프트웨어의 중간에서 그 동작을 중계 역할을 하는 소프트웨어에 종속되어 '요청'을 하는 것입니다. 바로 그러한 역할을 하는 것이 커널입니다. Kernel object - Kernel에 의해 관리되는 리소스 정보를 담고 있는 데이터 블록입니다. - OS가 하드웨어 제어를 하며, 해당 리소스에 대한 Kernel의 제어 단위라고 할수 있습니다. - Kernel이 실행되..