Computer Science/CS
-
[CS] EAIComputer Science/CS 2023. 10. 8. 14:46
EAI란? Enterprise Architecture Integration 기업 내에서 다양한 소프트웨어 애플리케이션과 시스템 간에 데이터와 프로세스를 효과적으로 통합하는 기술과 방법론을 가리킵니다. (기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간의 정보 전달, 연계, 통합을 가능하게 해주는 솔루션) 기업이 여러 종류의 애플리케이션을 사용하고 있는 경우에 그 데이터와 기능을 효과적으로 공유하고 상호 연동하기 위해 중요한 역할을 합니다. 기업 내에 여러 애플리케이션, 여러 담당파트 별 서버가 따로 존재하는 경우가 많고, 그에따라 IP주소 및 포트번호가 여러 개인 경우가 많습니다. 각각의 서버에 접근해서 정보를 얻는 API를 사용하려 할 때, 직접 접근해서 가져온다면 시스템이 복잡해질수록 그에 따..
-
[CS] 쿠키와 세션Computer Science/CS 2023. 9. 8. 14:20
웹 환경에서는 클라이언트와 서버가 HTTP프로토콜을 이용해 통신합니다. HTTP는 아래와 같은 특징을 가지기 때문에 쿠키와 세션을 사용합니다. HTTP Hyper Text Transfer Protocol 웹 상에서 웹 서버 및 웹 브라우저 상호 간의 데이터 전송을 위한 응용계층 프로토콜입니다. 요청 및 응답 메시지로 대응되는 구조로, 동작 형태가 클라이언트-서버 모델로 동작합니다. 1. Connectionless(비연결성) 클라이언트가 서버에 요청(Request)를 했을 때, 그 요청에 따른 응답(Response)를 보낸 후 연결을 끊는 처리방식입니다. HTTP1.1버전에서는 커넥션을 계속 유지하고, 요청(Request)를 재활용하는 기능이 추가되었습니다. HTTP Header에 Keep-alive옵션을..
-
[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이 실행되..