| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- R
- buffer
- 윤성우 열혈자료구조
- Graph
- s
- Selection Sorting
- Serialization
- stream
- C 언어 코딩 도장
- 이것이 자바다
- Algorithm
- 이스케이프 문자
- 메모리구조
- list 컬렉션
- 혼자 공부하는 C언어
- insertion sort
- 알기쉬운 알고리즘
- 윤성우의 열혈 자료구조
- coding test
- JSON
- datastructure
- C programming
- Stack
- Today
- Total
목록Computer Science (90)
Engineering Note
Cashe(캐시)- 자주 사용되는 데이터를 빠르게 다시 사용할 수 있도록 임시 저장해두는 공간이나 시스템(속도 향상 & 트래픽 감소 목적) 캐시 종류 설명 예시브라우저 캐시 (Browser Cache)사용자 컴퓨터에 저장됨. HTML, CSS, JS, 이미지 등크롬 개발자 도구에 나오는 from disk cache프록시 캐시 (Proxy Cache)중간 서버가 여러 사용자를 위해 저장학교/기업 네트워크의 프록시 서버(ex. Squid)CDN 캐시 (Edge Cache)CDN 서버가 전 세계 여러 위치에 콘텐츠 캐싱Cloudflare, Akamai, AWS CloudFront서버 캐시 (Reverse Proxy Cache)웹 서버 앞단에서 캐시해서 백엔드 접근 줄임Nginx, Varnish애플리케이션 캐..
웹기반 채팅프로그램을 만들려면 WebSocket을 이용해야 한다. Java에서는 WebSocket 객체를 통해 WebSocket 통신을 지원하는데, 기존의 Socket 통신과의 차이가 궁금해서 이번 기회의 정리해보려고 한다. WebSocket은 브라우저 위에서 동작하는 소켓 프로그램을 개발할 때 사용한다. 그런데 브라우저는 기존 Socket 통신을 지원하지 않는다. 예를 들면 아래 같은 코드는 브라우저에서 동작하지 않는다.// 이런 건 브라우저에서 불가능!const socket = new net.Socket();socket.connect(12345, "127.0.0.1"); // X Web은 기본적으로 HTTP 기반으로 동작하는 네트워크 어플리케이션이다. 그래서 WebSocket도 처음 클라이언트가 요청..
[1단계] TCP Server/Client 기본 연결(완료)ServerSocket, Socket 사용클라이언트가 서버에 접속하면 “연결됨” 메시지 출력[2단계] 텍스트 1:1 송수신(완료)서버: 클라이언트가 보낸 메시지 읽고 콘솔에 출력클라이언트: 키보드 입력을 서버에 전송, 서버 응답 받음[3단계] 서버에서 여러 클라이언트 관리서버에서 연결되는 클라이언트마다 Thread로 관리서버가 모든 연결된 클라이언트에 메시지 브로드캐스팅[4단계] 클라이언트-클라이언트 채팅한 클라이언트가 메시지 보내면, 서버가 전체 클라이언트에게 메시지 전달콘솔에 “닉네임: 메시지” 형태로 출력Socker 통신 흐름클라이언트에서 Socket("127.0.0.1", 12345) 생성↓TCP 연결 시도 (3-way handshake ..
요청메세지 구성 요소- 요청 라인(Request Line) - 헤더(Header)- 빈줄- 본문(Body) 요청라인- HTTP 메서드, path(URL), HTTP 버전 요청 헤더- HTTP메시지에 대한 추가 정보 제공.- Host 정보, User-Agent(접속하고 있는 사용자의 정보) 등이 있다. 빈 라인- 헤더와 본문을 구별하기 위해 사용 본문- 메세지의 가장 마지막에 들어가는 요소, 회원 가입 등 내 정보를 서버에 보내고 싶을 때 사용. 참고 자료 : 그림으로 쉽게 이해하는 웹/HTTP/네트워크(위키북스 임지영)
HTTP 메세지에는 요청 라인에는 요청 메서드가 들어간다. 요청 메서드는 서버에게 무엇을 '어떻게'라는 요청에서 '어떻게'에 해당하는 역할을 한다. 데이터를 수정할 때 사용하는 POST, PUT, PATCH 차이를 정리하려고 한다. POST는 기본적으로 클라이언트에서 데이터를 서버에 전송해서 추가하고 싶을 때 사용한다. 가령, 게시판에 글을 올리거나 하는 등 작성한 내용을 서버에 전송해서 추가할 때 주로 사용하지만, 수정이나, 삭제할 때도 사용할 수 있다.POST가 데이터를 추가하는데 사용하는 게 기본이라면, PUT과 PATCH는 기본적으로 수정을 하는 메서드이다. 하지만 차이가 있다. PUT은 데이터 전체를 수정하고 싶을때, PATCH는 일부만 수정하고 싶을 때 사용할 수 있다. 예를 들어서, PUT으..
HTTP가 흔히들 TCP/IT 위에서 동작한다고 한다. 단순히 암기한 내용을 심층적으로 이해하고 싶어서 관련 내용을 정리하고 테스트해보았다.HTTP의 대표적 특징이 이전상태를 저장하지 않는 무상태 프로토콜이고 TCP는 대표적인 신뢰성있는 상태 프로토콜인데 모순이 있다고 생각해서 스스로 그 이유를 추론해봤는데 HTTP요청을 보내면(application layer) 클라이언트와 서버가 OS단에서 TCP 커넥션을 맺고(Transport layer) 여기서 많은 패킷을 보내는 동안 패킷 단위에서는 상태를 유지하고 연결을 유지해서 데이터의 신뢰성을 높이고(여기서는 상태를 TCP에서 유지) 하나의 요청에 대한 응답에 해당하는 모든 데이터를 다 보내면, 그 다음 요청에 대해서는 상태를 유지하지 않는다. 연결을 끊..
1.대칭키 기법- 하나의 키로 암호화와 복호화를 둘 다 할 수 있는 암호화 기법.- 데이터를 전송 할 때 암호화한 키와 데이터를 수신한 후 복호화 하는 키가 같음. 대칭키 기법 장점- 암호화나 복호화 속도가 빠르다. 대칭키 기법 단점- 키를 안전하게 교환하기 어려운 단점이 있음. 클라이언트와 서버가 같은 키를 갖고 있어야 하므로 서로 키를 주고받아야 하는데, 중간에 누군가가 키를 가로챌 위험이 있다. 2.공개키 기법(비대칭키)- 서로 다른 두 개의 키(공개키, 개인키)로 암호화와 복호화를 함.- 대칭키 기법의 문제를 해결하기 위해 탄생- 공개키로 암호화한 데이터는 개인키로만 복호화할 수 있고, 반대로 개인키로 암호화한 데이터는 공개키로만 복호화할 수 있다.(정확히 개인키로는 서명을하고 공개키고 검증을하..
Strategy Pattern- 특정 정책에 대한 책임을 가지고 있는 클래스를 컨텍스트 라고 부르는데, 이러한 특정 컨텍스트에서 알고리즘(전략)을 분리하는 설계 방법. 상황- 상황에 따라 다른 가격할인 정책을 적용하는 과일매장이 있다. '첫 손님 할인' 정책, '저녁 시간 신선한 과일 할인 정책' 이럴 때 전략패턴을 적용하지 않으면 가격 계산 모듈에 if-else같은 분기문으로 할인 정책을 구현해서 메서드를 개발할 수 있다.