본문 바로가기

Knowledge47

[CS] 객체지향 프로그래밍이란? 객체지향 프로그래밍은 프로그래밍에서 필요한 데이터와 동작을 객체로 만들어 구현하는 기법이다. 클래스와 객체를 기반으로, 객체지향의 주요 특징인 캡슐화, 상속, 추상화, 다형성 등의 기법을 사용해 프로그래밍을 한다. 클래스 : 속성과 행위를 변수와 메서드로 정의한 것. 객체 : 클래스에서 정의한것을 토대로 실제 메모리에 할당 된 것. ex) 레고(객체) 를 조합해서 프로그래밍을 하는 것을 객체지향 프로그래밍 객체지향의 장점 1. 상속을 통한 코드 재사용성이 용이하다. 2. 유지보수가 비교적 쉽다 객체지향의 단점 1. 처리속도가 상대적으로 느리다. 2. 설계시 많은 시간과 노력이 필요하다. 캡슐화 : 변수와 메서드를 하나로 묶는 것 ( 낮은 결합도 유지 ) 상속 : 속성과 행위를 하위클래스에게 물려주는 것 .. 2022. 12. 3.
[CS] 뮤텍스(Mutex) 세마포어(Semaphore) 란? 먼저 임계영역은 무엇인가? 임계영역(Critical Section) 이란? 동시접근, 공유되는 자원에서 문제가 발생하지 않도록 독점을 보장해줘야하는 영역을 뜻한다. 뮤텍스와 세마포어는 동시성 프로그램의 공유자원 관리 중 한가지 방법인 상호배제를 달성하는 기법이다. 상호배제는 임계구역은 어느 시점에든지 한 개의 프로세스만 사용할 수 있도록 하는 것이다. ( Lock ) 뮤텍스(Mutex) 사람 : 스레드, 프로세스 화장실 : 자원 예를 들어 화장실을 갈 때 Key를 가지고 가는 것과 같다. 어느 사람(1명) 이 화장실을 갈 때 Key를 가지고가면 화장실에는 사람이 있는 것이며, 화장실을 가고 싶은 사람은 대기를 해야한다. 또한, 화장실을 가고 싶은 사람이 추가된다면 순서대로 줄을 서야한다. 화장실에서 사람.. 2022. 12. 2.
[CS] HTTP1.1 의 keep alive 란? HTTP 기본 구조는 1회성 요청(request) 와 응답(response) 로 이루어진다. 따라서, 매순간마다 HTTP request 및 response 로 인한 종료시 TCP 과정의 연결, 종료 과정이 필요하다. keep alive 기능은 이런 불필요한 연결과 종료 과정을 줄이기 위해, keep alive timeout 기간에는 동일한 리소스에 한해서 HTTP request 에 대해 연결을 유지하는 기능이다. HTTP/1.1 에서는 디폴트값으로 keep alive 기능을 지원하지만 이전 버전에는 직접 설정해주었어야 했다. HTTP 요청을 보낼 때 - Connection: Keep-alive 라고 보내면, 서버에서 정상적으로 처리가 되면 응답으로 - Connection: keep-alive - keep.. 2022. 12. 1.
[CS] 프로세스와 스레드 개념, 차이 먼저 프로그램이란 무엇일까? 프로그램은 어떤 작업을 위해 실행할 수 있는 파일을 의미한다. 프로세스(Process) 란? - 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램 - 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적개체) - 운영체제(OS)로부터 시스템 자원을 할당받는 작업의 단위 - 실행된 프로그램을 뜻한다. 프로세스는 각각 독립된 메모리 영영(Code, Data, Stack, Heap) 을 할당받는다. 프로세스 당 최소 1개의 스레드(메인스레드)를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되고, 다른 프로세스의 변수나 자료구조에 접근할 수 없다. 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스간의 통신 (IPC , Inter - Process - Commun.. 2022. 11. 30.
[CS] 대칭키 암호화, 비대칭키 암호화 공개키 : 누구든지 키를 확인 및 사용 가능한 공개된 키 개인키 : 자기 자신만이 가지고 있는 키 대칭키 암호화 대칭키 암호화는 양측이 동일한 키를 가지고 있으며, 암호화와 해제에 동일한 키를 사용하는 방식이다. 이 방식은 해당 키가 노출되었을 때 보안상 큰 문제가 있으며, 연산능력은 상대적으로 빠르다. 암복호화키가 동일하며, 해당 키를 알고 있는 사람만이 파일을 복호화해서 볼 수 있다. 키를 교환해야 한다는 문제가 있으며, 탈취당할 우려가 있다. 또한 교환해야하는 사람이 늘어날 수록 따로따로 키를 관리해야 하기때문에 키가 방대하게 많아진다. 예) A 상자와 A 상자를 열고 닫을 수 있는 키를 홍길동에게 전달한다. 중간에 다른사람이 탈취할 수 있다. 비대칭키 암호화 비대칭키 암호화는 공개키 암호화 암호화.. 2022. 11. 29.
[CS] OSI 7 계층 , TCP/IP 4 계층이란? OSI 7 계층과 TCP/IP 4계층의 차이점은 무엇인가? 두 모델 모두 계층형 이라는 공통점을 가지고 있지만, TCP/IP는 인터넷 개발 이후 계속 표준화되어 신뢰성이 우수인 반면에, OSI 7 계층은 표준이 되기는 하지만, 실제적으로 구현되는 예가 없어 신뢰성이 낮아졌다. TCP/IP 4계층이란? TCP/IP는 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 프로토콜이다. OSI 7계층이란? OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 의미한다. 1. TCP/IP 4계층 1계층 = 네트워크 엑세스 계층 물리적으로 데이터가 네트워크를 통해 어떻게 전송되는지를 정의한다. MAC 주소를 이용하며 MAC 주소는 컴퓨터마다 다르다. 2계층 = 인터넷 계층 데이터 전송을 .. 2022. 11. 27.
[CS] CORS 란? CORS (Cross-Origin Resource Sharing) 는서로 다른 도메인간에 자원을 공유하는 것을 의미하며, 교차출처 리소스 공유 라고도 부른다. CORS 를 설정해주지 않거나 제대로 설정하지 않으면, 원하는 리소스를 공유할 수 없다. CORS 가 생긴 이유는 동일 출처 정책인 SOP (Same Origin Policy) 의 한계를 보완하기 위해서 생겼다. SOP는 동일한 출처의 리소스에만 접근하도록 제한 하는 것을 의미한다. 출처는 프로토콜, 호스트명, 포트를 의미하는데 예를 들어보면 아래와 같다. https://www.naver.com:80 이라고 하면, https 는 프로토콜 , naver.com 은 호스트명 , 80 은 포트번호이다. 만약 동일한 출처가 아닌 모든 출처를 허용하게 되면.. 2022. 11. 25.
[CS] RESTful API 란 무엇인가 API ( Application Programming Interface) - 응용 프로그램을 사용할 수 있도록 다른 응용 프로그램을 제어할 수 있게 만든 인터페이스 - API를 사용하면 내부 구현 로직을 몰라도 정의되어있는 기능을 쉽게 사용할 수 있다 인터페이스 -> 장치간 정보를 교환하기 위한 수단이나 방법 EX ) 마우스 , 키보드 등 REST (Representational State Transfer) - 자원의 이름으로 구분해서 해당 자원의 상태를 교환하는 것 - HTTP URI 를 통해 자원을 명시하고 HTTP Method 를 통해 자원을 교환 - REST 는 서버와 클라이언트의 통신 방식 중 하나 HTTP Method : Create , Read , Update , Delete REST API.. 2022. 11. 22.
[CS] HTTP 메서드와 하는 역할은 무엇일까? REST API 를 작성해보았다면 누구나 고민해보고 사용해보았을 거라 생각한다. * 안전 : 호출해도 리소스가 변하지 않는다. * 멱등 : 한번 호출해도, 여러번 호출해도 값이 같은 것을 의미한다. 아래 5개는 가장 많이 사용하며, 기본적인 HTTP 메서드이다. GET 요청은 서버에 존재하는 데이터를 요청하는 것. ( CRUD 중 R ) POST 요청은 서버에 데이터를 생성,저장 하는 것 ( CRUD 중 C ) PUT 요청은 서버에 존재하는 데이터를 수정하거나 존재하지 않으면 생성하는 것 ( CRUD 중 U ) PATCH 요청은 서버에 존재하는 데이터 일부를 수정하는 것 ( CRUD 중 U ) DELETE 요청은 서버에 데이터를 제거하는 것, ( CRUD 중 D ) 추가적으로 기타 메서드가 존재한다. 아.. 2022. 11. 22.