본문 바로가기

전체 글

(231)
[CN] Docker로 웹 서버 구축하기 (Window) 📁 Docker Docker란 chroot 등을 활용하여 제작된 Container 관리 도구이다. Image는
[CN] Wireshark 패킷 캡쳐
[CN] HTTP의 버전 2023학년도 2학기 충남대학교 이영석 교수님의 컴퓨터네트워크 수업 정리자료입니다. 📁 HTTP의 발전 현재는 HTTP/1.1 이상 버전만 사용중이다. 📁 HTTP/1.0 HTTP/1.0 버전은 객체를 하나 전송할때마다 GET 메소드 한번, TCP 연결 한번으로 1:1 연결 방식을 사용했다. 객체는 웹페이지를 이루는 요소들이므로, 위와 같이 연결하게되면 웹페이지 하나에 여러개의 TCP 연결이 사용된다. 이때 TCP 연결을 만드는데 왕복지연시간 문제가 발생하며, non-persistent HTTP라고 부른다. TCP는 서버와 클라이언트를 연결해야하는데, 만약 서버가 바다 건너 있다면 객체 하나를 불러오는데 바다를 한번씩 건너야 해서 전파지연시간이 오래 걸릴 수 있는 것이다. 📁 HTTP/1.1 위 1.0 ..
[CN] HTTP란? 2023학년도 2학기 충남대학교 이영석 교수님의 컴퓨터네트워크 수업 정리자료입니다. 📁 HTTP (Hyper-text transfer Protocol) HTTP란, Socket을 이용한 웹페이지 전송 프로토콜을 말한다. 기본적으로 클라이언트와 서버가 먼저 TCP socket을 생성한 후, 클라이언트가 서버로 HTTP request를 보내면, 서버는 클라이언트에게 HTTP response와 요청 객체를 전송하는 구조로, 클라이언트와 서버의 모든 통신은 request(요청)과 response(응답) 구조로 이루어진다. HTTP의 전송 대상인 웹페이지는 객체들의 집합인데, 이때 객체란 HTML file, JPEG image, audio/video file 등 하나의 웹 페이지 안에 들어가는 요소들을 뜻한다. ..
[CP] Lexical Analysis(어휘분석) 📁 컴파일러 전반부 구조 1) 전처리 과정 소스코드가 들어오면 전처리기(preprocessor)에서 전처리 과정을 거친다. 전처리 과정에서 #include, #defines, #ifdef 등 을 처리하여 c코드로 대체시킨 전처리된 소스코드가 나온다. 2) 어휘/구문/의미 분석 전처리된 소스코드는 이후 3가지의 분석 단계를 거친다. 📁Lexical Analysis (어휘 분석) Lexical Analysis(어휘 분석)이란, 원시 프로그램을 긴 문자열로 보고 차례대로 문자를 검사하여, 의미있는 최소단위들로 변환하는 분석 작업이다. 위 그림에서 원시 프로그램은 if (b = 0) a = b; 이며, 어휘분석기는 이를 하나의 긴 문자열로 보고 최소단위로 나누어 배열 형태로 변환한다. 이때 배열 셀 하나에 들어..
[프로그래머스] 중앙값 📁 문제 길이가 N 인 수열 A1, A2, ⋯, AN 이 주어질 때, 수열의 중앙값을 구해보자. 길이가 N 인 수열 A 의 중앙값은 수열을 정렬했을 때 (N + 1) / 2 번째 위치의 원소를 의미한다. 수열의 가장 첫 원소는 1번째에 위치해있다. 📁 제한사항 1 2 [[3, 6], [2, 4], [5, 6], [1, 3]] => 2 첫번째 테스트케이스의 경우, 위 그림과 같이 세번의 요격 미사일 발사로 전부 방어할 수 있다. 📁 풀이 첫번째 풀이 def solution(targets): result = 0 while targets : max_target = 0 for a, b in targets : if max_target < b : max_target = b count_list = [0] * (max..
[JAVA] Collection 자바에서 Collection Framework(컬렉션 프레임워크)란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 말한다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이다. 컬렉션 프레임워크는 데이터 군집의 형태를 List, Set, Map의 3가지로 나눠서, 각 데이터 군집 형태를 인터페이스로 정의햇다. .📁 List 순서가 있는 데이터의 집합으로, 데이터의 중복을 허용한다. 📁 Set 순서가 없는 데이터의 집합으로, 데이터의 중복을 허용하지 않는다. 📁 Map 키와 값의 쌍으로 이루어진 데이터 집합으로, 순서가 없다. 이때 컬렉션은 다음과 같은 차이가 있다. 1. collection : 객체가 저장되고 ..
[JAVA] 객체지향설계와 5가지 법칙 객체지향 프로그래밍을 하기위해서는 4개의 특성인 캡슐화, 상속, 추상화, 다형성을 만족시키면 된다. 하지만 이들을 잘 만족시킨다고 해서 설계를 잘 한다는 것은 아니다. 📁 SOLID 원칙 SOLID 원칙이란 자기 자신 클래스에서 내부적으로 응집도를 높이고, 외부적으로는 타 클래스간의 결합도를 낮추는 High Cohesion - Loose Coupling 원칙을 객체지향의 관점에서 도입한 원칙이다. 객체 지향 설계의 5원칙을 맨 앞 알파벳만 따와 명명하였다. 응집도가 높고 결합도가 낮을수록 객체지향의 관점에서 좋은 소프트웨어이기 때문에 해당 원칙을 사용한다. 결국 모듈 혹은 클래스 당 하나의 책임을 주어 더욱 독립된 모듈 혹은 클래스를 만들기 위해 사용한다. SOLID 원칙을 만족하여 설계된 소프트웨어는 ..