Category: CS

0

네트워크 - HTTP Version

HTTP Version 네트워크 - OSI 7 계층과 TCP/IP 5계층 네트워크 - HTTP 네트워크 - HTTP Version 네트워크 - HTTP 메시지 구조 네트워크 - HTTPS Post not found: computer-science/network/tcp HTTP/0.9 간단하게 HTML 객체 를 받아오기 위해 만들어진 프로토콜이다. 때문에 GET메서드 만을 지원한다. 멀티미디어 콘텐츠에 대한 MIME 타입이나, HTTP 해더, 버전 번호는 지원하지 않는다. HTTP/1.0 버전 번호, HTTP 헤더, 추가 메서드, 멀티미디어 객체 처리를 추가했다. 웹페이지와 상호작용하는 폼을 실현 하나의 커넥션에 하나의 요청과 하나의 응답만 가능 요청GET /greeting HTTP/1.0Host: localhost:18888Connection: closeAccept: */*User-Agent: curl/7.71.1 응답

0

네트워크 - HTTPS

네트워크 - OSI 7 계층과 TCP/IP 5계층 네트워크 - HTTP 네트워크 - HTTP Version 네트워크 - HTTP 메시지 구조 네트워크 - HTTPS Post not found: computer-science/network/tcp 네트워크 - HTTPSHTTPS의 마지막 S는 Over Secure Socket Layer의 약자로 보안이 강화된 HTTP라는 것을 알 수 있다. SSL/TLS 에서 HTTP 가 작동할 경우 HTTPS 라고 부른다. HTTPS 와 SSL 이 같은 것이 아닌 SSL 위에 올라가는 프로토콜 중 하나가 바로 HTTPS 다. 암호화 이점 기밀성의 원칙 에서 보면 통신 내용이 공격자에게 노출(snipping) 되는 것을 막을 수 있다. 무결성의 원칙 에서 보면 통신 내용을 타인이 함부로 변경 하는 것을 막을 수 있다. 기밀성의 원칙과 무결성의 원칙을 통해 서버와 클라이언트는 서로 신뢰를 할 수 있다. SSL (Secure Socket Layer)-

0

네트워크 - HTTP

네트워크 - OSI 7 계층과 TCP/IP 5계층 네트워크 - HTTP 네트워크 - HTTP Version 네트워크 - HTTP 메시지 구조 네트워크 - HTTPS Post not found: computer-science/network/tcp HTTP란 HyperText Transfer Protocol 의 약자로 HTML 문서를 전송하기 위해 만들어진 규약조건이다.HTTP는 TCP/IP 기반으로 되어있다. Client - Server 구조 Stateless (무상태) 프로토콜 비 연결성 Client - Server 구조 클라이언트는 서버에 요청을 보내고 서버로부터 응답을 기다리는 단방향 통신 구조 Request Response 구조 Stateless (무상태) 프로토콜

0

네트워크 - OSI 7 계층과 TCP/IP 5계층

네트워크 - OSI 7 계층과 TCP/IP 5계층 네트워크 - HTTP 네트워크 - HTTP Version 네트워크 - HTTP 메시지 구조 네트워크 - HTTPS Post not found: computer-science/network/tcp 네트워크 - OSI 7 계층과 TCP/IP 5계층 OCI 7 계층 다양한 컴퓨터 시스템이 표준 프로토콜을 사용하여 통신할 수 있도록 국제 표준화 기구(ISO) 에서 만든 개념 모델이다. OSI 표준 모형은 7계층으로 이루어져 있다. 계층별로 역할을 분리해서 각 계층이 독립적으로 기능을 수행하고, 계층 간 통신을 통해 전체 통신 프로세스를 가능하게 한다. TCP/IP 5 계층 프로토콜 프로토콜 : source와 target간의 데이터를 어떻게 주고 받을 지에 대한 규약(방법)이다. 크게는 동기식 과 비동기식 으로 나뉘게 된다.

0

JAVA - Garbage Collection(가비지 컬렉션)

목차 Post not found: computer-science/java/gc-tunning JAVA - Garbage Collection(가비지 컬렉션) JAVA - JVM (자바 가상 머신) JAVA - Garbage Collection(가비지 컬렉션) 동적 할당 받은 메모리 중에서 사용하지 않는 메모리를 해제해 메모리 누수를 막는 메모리 관리 기법 memory leak 을 없앨 수 있다. GC Root가 될 수 있는 대상들 Stack 영역의 데이터 Static 데이터 JNI에 의해 생성된 객체들 Mark And Sweep 알고리즘 참조가 유효한 Object를 Reachable 참조가 유효하지 않은 Object를 Unreachable 이라고 부른다. Mark GC Root로부터 모든 변수를 스캔하면서 각각 어떤 객체를 참조하고 있는지 찾아서 마킹하는 과정 Mark 과정에서 Reachable 한 객체와 Unreachable 한 객체를 스캔한다 Sweep Unreachable한 객체를 Heap 에서 제거하는 과정 Compact Sweep 후 분산된 객체들을 모아 메모리 단편화 가 이뤄지는 것을 막아준다.

0

JAVA - JVM (자바 가상 머신)

목차 Post not found: computer-science/java/gc-tunning JAVA - Garbage Collection(가비지 컬렉션) JAVA - JVM (자바 가상 머신) JVM (자바 가상 머신) 자바 컴파일러에 의해 생성된 자바 바이트 코드(.class) 를 OS에 맞는 기계어로 변환해 실행할 수 있게 해준다.클래스 파일로 떨어질 수 있으면 어떤 언어라도 실행이 가능하다. (ex. kotlin) 자바 컴파일러에 의해 생성된 바이트 코드를 실행하는 표준이자 구현체다. JVM은 각 OS(운영체제) 에 맞게 설계가 돼 있다. 자바 바이트 코드만 있으면 JVM을 이용해 어느 운영체제에서나 실행이 가능하다. Stack 기반 가상 머신 JVM 구조 Class Loader, Memory, 실행 엔진(Execution Engine) 이 세가지로 구성 돼 있다.

0

컴파일 언어, 인터프리터 언어, 하이브리드 언어

컴파일 언어, 인터프리터 언어, 하이브리드 언어 객체 지향 3요소 객체 지향 설계 5원칙 SOLID 컴파일 언어, 인터프리터 언어, 하이브리드 언어컴파일 언어 고급 언어로 작성된 코드를 Compiler(컴파일러) 를 이용해 목적 코드 로 번역하는 과정을 거치는 언어좁은 의미에서는 소스 코드를 기계어 로 번역해주는 과정을 컴파일이라 한다. 프로그램을 한번에 번연한 후 실행한다. 한번에 모든 소스를 번역하기 때문에 메모리 사용량이 크다. 번역 속도가 느림 실행 속도는 빠름 번역과 실행이 따로 이뤄지기 때문에 실행 파일 (ex. .exe) 이 생성된다. C, C++ 언어가 대표적인 컴파일 언어다. 인터프리터 언어 컴파일 언어와는 다르게 소스코드를 원시코드(기계어)로 번역하는 과정을 거치지 않는 언어Interpreter(인터프리터) 를 이용해 한줄씩 읽어가면서 명령을 처리한다. 번역 속도가 빠름 실행 속도는 느림 번역과 실행이 한번에 이뤄지기 때문에 별도의 실행파일이 만들어지지 않는다. Python, Javascript 가 대표적인 인터프리터 언어다. 하이브리드 언어 컴파일 기법과 인터프리터 기법을 모두 사용하는 언어

0

객체 지향 설계 5원칙 SOLID

컴파일 언어, 인터프리터 언어, 하이브리드 언어 객체 지향 3요소 객체 지향 설계 5원칙 SOLID 객체 지향 설계 5원칙 SOLID1. SRP(Single Responsibility Principle) - 단일 책임 원칙한 클래스는 하나의 책임(역할)만 가져야 한다. 역할의 분리라고 생각하면 편하다!변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 따르는 것 2. OCP(Open Close Principle) - 개방 폐쇄 원칙 확장 에는 열려 있으나 변경 에는 닫혀 있어야 한다. 기존 코드에 대한 수정은 직접적으로 하지 않고 기능을 확장, 추가 할 수 있도록 해야 한다. 인터페이스와 추상 클래스를 이용해 공통적인 작업에 대해 추상화 를 진행 상속과 구현을 이용해 기존 코드(상위 클래스)에 대한 수정 없이 기능을 확장시킬 수 있다. 이는 곧 다형성 을 이용한 기능 확장이다. OCP 문제점

0

트랜잭션 격리수준 (Isolation Level)

목차 트랜잭션과 ACID 트랜잭션 격리수준 (Isolation Level) 트랜잭션 격리수준이란 트랜잭션 격리 수준이란 동시에 여러개의 트랜잭션 처리를 할 때 트랜잭션끼리 얼마나 고립되어 있는지를 나타낸다.여러개의 트랜잭션이 공유 자원 에 접근해 작업(CRUD) 을 할때 자원의 일관성 을 지키기 위해 트랜잭션 작업을 얼마나 고립시킬지를 나타낸다. Read Uncommited Dirty Read 문제가 발생 Read Commited Non-Repeatable Read 문제가 발생 Repeatable Head Phantom Read 문제가 발생 Serializable 격리 수준에 따른 문제 Dirty Read Non-Repeatable Read Phantom Read Read Uncommited 발생 발생 발생 Read Commited 발생하지 않음 발생 발생 Repeatable Raead 발생하지 않음 발생하지 않음 발생 Serializable 발생하지 않음 발생하지 않음 발생하지 않음 Read Uncommited 현재 트랜잭션에서 일어난 변경 사항이 Commit 이나 Rollback 되지 않아도 다른 트랜잭션에서 변경된 값을 읽을 수 있다.

0

데이터 베이스 Lock

목차 트랜잭션과 ACID 트랜잭션 격리수준 (Isolation Level) Post not found: database/transaction/isolation-lock 데이터 베이스 Lock Optimitic Lock

0

운영체제 - Inter Process Communication(프로세스간의 통신)

상호 배제(Mutual Exclusion) Busy Waiting Sleep and WakeUp Semaphore(세마포어) Mutex(뮤텍스) Monitor Message Passing Barriers Busy Waiting Busy Waiting 은 loop문 을 이용해 공유 자원을 사용할 수 있는지 계속 확인하는 방법이다. cpu자원을 계속해서 낭비하기 때문에 무조건 적으로 피해야 한다. 기다리는 시간이 매우 작을 때만 사용하는 것이 좋다. Semaphore(세마포어) 공유된 자원의 데이터에 한번에 여러 프로세스가 접근하지 못하게 하는 알고리즘 공유자원에 따라 몇개의 프로세스를 접근시킬지에 따라서 이진 세마포어 와 계수형 세마포어 로 나뉘게 된다

0

Inter Process Communication(프로세스간의 통신)

목차 Thread Safe 쓰레드와 메모리구조 쓰레드 프로세스 동기화 프로세스 스케줄링 알고리즘 프로세스 상태와 스케줄러 Inter Process Communication(프로세스간의 통신) 프로세스 메모리 영역 Process (프로세스) IPC(프로세스간의 통신) 란? 프로세스간의 데이터 및 정보를 주고 받기 위한 메커니즘kernel 에서 IPC를 위한 도구를 제공하며, System call 형태로 프로세스에게 제공이 된다. 왜 IPC가 필요한가? 각각의 프로세스는 독립된 실행 객체이기 때문에 서로간의 통신이 어렵다. 그래서 kenerl에서 프로세스간의 통신을 위한 IPC을 제공하는 것이다. 공유 메모리 (Shared Memory)

0

프로세스 동기화

목차 Thread Safe 쓰레드와 메모리구조 쓰레드 프로세스 동기화 프로세스 스케줄링 알고리즘 프로세스 상태와 스케줄러 Inter Process Communication(프로세스간의 통신) 프로세스 메모리 영역 Process (프로세스) 프로세스 동기화의 목적 공유자원에 접근하는 여러 프로세스들이 치리순서에 상관없이 같은 결과를 얻을 수 있음을 보장하기 위해 도입된 개념, 이를 통해 공유되는 데이터의 일관성을 보장한다.쉽게 말해, 하나의 프로세스가 공유자원을 사용하고 있을 때, 다른 프로세스가 공유자원을 사용허지 못하도록 하는 것이다. Race Condition(경쟁상태) 공유자원에 여러개의 프로세스가 접근할 때 방생한다. 여러 프로세스가 공유데이터에 동시에 접근할 때 실행순서 에 따라서 실행 결과가 달라지는 현상이다. Critical Regions(임계 영역) 프로세스의 코드 부분에서 공유 자원에 들어가기 위한 코드부분을 임계영역(Criticla Regions) 이라고 부른다.프로세스 동기화 를 위해 임계 영역 내 코드는 공유 자원의 독점이 보장 돼야 한다.

0

쓰레드

목차 Thread Safe 쓰레드와 메모리구조 쓰레드 프로세스 동기화 프로세스 스케줄링 알고리즘 프로세스 상태와 스케줄러 Inter Process Communication(프로세스간의 통신) 프로세스 메모리 영역 Process (프로세스) Thread 란? CPU에서 실행되는 실행 단위 한 프로세스 내에 여러개의 쓰레드가 존재할 수 있다. 같은 프로세스 환경에서 여러개의 쓰래드가 동일하게 발생할 수 있다.(멀티 쓰레드) a) 하나의 프로세스에 하나의 쓰레드가 존재하는 경우 각각의 프로세스는 독립적으로 움직인다. b) 하나의 프로세스내에 여러가지 쓰레드가 존재하는 경우(multi thread) 쓰레드는 결국 프로세스내의 수행 단위이기 때문에 프로세스단의 Address Space들을 공유한다. 대신, 각각의 쓰레드마다 PC(Program Counter), register, stack을 갖는다. 각각의 쓰레드는 하나의 프로세스를 수행하기 위해 상호 협력적인 관계를 갖는다. 쓰레드와 관련된 Procedures