일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- Stack
- insertion sort
- datastructure
- Graph
- Selection Sorting
- list 컬렉션
- C programming
- 혼자 공부하는 C언어
- s
- coding test
- 이스케이프 문자
- 윤성우의 열혈 자료구조
- 메모리구조
- C 언어 코딩 도장
- Algorithm
- R
- Serialization
- 윤성우 열혈자료구조
- 알기쉬운 알고리즘
- stream
- buffer
- 이것이 자바다
- JSON
- Today
- Total
목록Computer Science (80)
Engineering Note
CSRF(Cross-Site Request Forgery)- 인증된 사용자의 의지와 무관하게 악의적인 요청이 서버에 전달되는 공격- 세션 인증 방식을 사용하는 서버에서 발생 공격 시나리오- 사용자가 로그인 된 세션을 유지하는 상태- 사용자가 같은 브라우저로 악성 코드가 심어진 사이트 방문 - 악성사이트에서 자동으로 POST요청을 보냄. 서버는 기존의 세션 쿠키로 인증된 요청이라고 믿고 실행Cross-Site-Request-Forgery가 필요한 이유- 세션 기반 로그인 인증 방식(Session + Cookie)에서는 브라우저가 자동으로 쿠키를 보내기 때문에 CSRF 위험이 있음.API서버 CSRF 비활성 이유API 서버에서는 서버는 세션 상태를 저장하지 않고 Stateless하게 동작하여, 컨테이너 기반..
양방향 암호화에는 두 가지 방식이 있다. 대칭키 암호화, 비대칭키 암호화대칭키 암호화는 암호화와 복호화할 때 같은 키를 사용하고 비대칭키 암호화에서는 일반적으로 공개키로 암호화하고 개인키로 복호화하지만, 디지털 서명에서는 **개인키로 서명(암호화)하고 공개키로 검증(복호화 유사)**하는 방식도 있다.그래서 대칭키 암호화 방식은 키 관리가 중요하다. 키 하나로 암호화 복호화가 가능하기 때문이다. (양방향)대표적인 양방향 암호화 방식은 AES128(Advanced Encryption Standard)이 있다.AES는 양방향, 대칭키 암호화 방식으로, 암호화와 복호화에 동일한 키를 사용한다. 복호화가 가능한 구조이기 때문에 키 관리가 매우 중요하다. AES 뒤의 128, 192, 256은 암호화에 사용하는 키..
IP(Internet Protocol)는 프로토콜 중 하나로 인터넷에서 데이터를 주고 받을 때 사용하는 통신 규약이다. 이때 전달하는 데이터를 특별히 패킷이라고 부르고, 패킷을 이용해 정보를 교환하는 방식을 패킷교환 방식이라고 부른다. IP 의 주된 역할- 패킷을 정해진 목적지까지 전달IP의 특징- 비신뢰성(unreliable) : 내용물의 상태를 보장하지 않음- 비연결성(connectionless) : 수신자 여부를 고려하지 않음.가장 많이 사용하는 IP- IPv4 IP 구성- 8비트.8비트.8비트.8비트- IP 각 자리는 0부터 255까지 숫자를 가질 수 있음. (8비트는 0부터 255(00000000 ~ 11111111)- 앞 24비트 : 네트워크 주소, 마지막 8비트 : 호스트 주소. 단 마지막 ..
OSI(Open Systems Interconnection) 7계층이 생긴 배경- 초창기 컴퓨터 네트워크는 학교, 군대 등 각 기관별로, 소수의 사람만이 사용하는 네트워크 였음.- 개인용 컴퓨터가 보급 후 다른 기종의 컴퓨터끼리도 네트워크를 형성할 수 있는 표준화 움직임이 생겨남- 1984년 국제 표준화 기구에서 표준이 정의됨. OSI 7 Layer- 국제표준화기구(ISO)에서 1984년에 개발한 모델- 통신이 일어나는 과정을 7단계로 분류(OSI 7계층으로 네트워크 구성요소 계층화, 표준화)- 7단계로 분류해서 각 단계가 어떤 역할을 수행해야하는지, 수행하는지 등 큰 뼈대, 규칙을 정해 놓은 일종의 메뉴얼- 서로 다른 시스템끼리도 연결(호환)이 될 수 있게 하는 표준안- 각 계층 별로 역할과 통일된 ..
URL(Uniform Resource Locator): 일반적으로 웹 사이트 주소: 좀 더 정확하게 웹사이트뿐 아니라 HTML문서, 이미지, 동영상 등 인터넷에 존재하는 모든 자원을 나타내는 경로: 프로토콜, 도메인 등 여러 요소를 합친 결과물로 구조를 이해해야 함.URL 구조URL도 일반 현실에서 사용하는 집주소, 건물 주소 표시 방법처럼 규칙이 있음.=> 프로토콜://호스트주소:포트번호/경로?파라미터 'http://www.example.com:80/path/to'URL 맨 앞부분 : 해당 자원을 얻기위한 통신규약, 프로토콜을 나타냄.프로토콜 종류웹:HTTP, HTTPS이메일:malito파일전송: FTP URL은 웹뿐 아니라 다른 인터넷상의 자원에도 접근가능하므로, http, https를 제외한 다른..
객체지향프로그래밍 에서 역할, 책임, 협력 그리고 캡슐화, 상속, 추상화의 관계 객체지향 프로그래밍은 길을 찾는 방법을 통해서 설명할 수 있다. 길을 찾을 때 길을 아는 사람에게 물어보는 방법이 있고, 지도를 보고 찾아가는 방법이 있다. 길을 아는 사람에게 물어보는 방법은 길찾기라는 기능 그 자체에 초점을 맞춘 해결책이라고 볼 수 있다. 그런데 지도는 현실 세계를 추상화한 모델로, 구조적으로 길을 찾는 방법을 알려준다. 그리고 원래 목적지와 다른 길을 찾는 범용적인 도구다. 객체지향 프로그래밍은 길을 찾는 방법에서 지도를 보고 길을 찾는 방법과 유사하다. 기능에 구조를 맞추는게 아니라, 구조에 기능을 종속시킨다. 이를 통해 얻을 수 있는 장점은 재사용가능하고, 변경에 용이한 코드를 작성할 수 있게 해준다..
Object Oriented Programming(객체 지향 프로그래밍) 단어 그대로 객체 지향적으로 프로그래밍을 한다는 뜻이다. 프로그래밍이란 생각, 명령어의 나열이다. 그런데 객체 지향이라는 뜻은 무엇일까? 프로그래밍을 할때 Object, 객체를 중심으로 프로그래밍한다는 말이다. 즉, 이 세상은 객체(object)로 이루어져 있고, 객체를 중심으로 프로그램을 설계하겠다는 것이다. 이 세상에는 수 많은 사람, 개인이 존재한다. 모두 객체이다. 사람에게 객체라고 하면 기분나쁘게 들릴 수도 있으나, 창조자(개발자)의 입장에서는 객체이다. 기분이 나쁘면 개체라고 이해해도 된다. 그런데 이렇게 전부 다른 특징의 객체를 매번 생성하기 보다는 객체들을 분류(Class)해서 생성하는 방식으로 프로그래밍을 한다면 개..
Dynamic Programming Dynamic Programming은 greedy algorithm과 마찬가지로 최적화 문제를 해결하는 알고리즘이다. 최적화 문제란 가능한 해들 중에서 가장 좋은(최대 또는 최소)해를 찾는 문제이다. 다이나믹 프로그래밍은 입력 크기가 작은 부분문제들을 모두 해결한 후에 그 해들을 이용하여 보다 큰 크기의 부분문제들을 해결하여, 최종적으로 원래 주어진 입력의 문제를 해결하는 알고리즘이다. 이때 부분문제들은 다음 문제를 해결할 때 기록해두어 필요할 때 다시 이용하는 메모이제이션 기법을 이용한다. Algorithm 문제풀이 팁 작은 문제부터 해결하기 문제에 주어진 조건을 잘 읽고 마지막에 조건을 붙이는 경우로 생각해보기, 이렇게 하면 메모이제이션을 생각하기가 조금 수월함 마..