대칭키 vs 공개키(비대칭키) 대칭키 암호화 방식 : 암복호화에 사용하는 키가 동일함 공개키 암호화 방식 : 암복호화에 사용하는 키가 서로 다르며 비대칭키 암호화라고도 함 대칭키 Session Key, Secret Key, Shared Key, 대칭키, 단용키라고도 함 비밀키 하나만 알아내면 암호화된 내용을 해독 가능 → 해커로부터 안전 X 하나의 비밀키를 양쪽(client & server)가 모두 같이 사용 암호화방식에 속도가 빠르다. 대용량 Data 암호화에 적합하다. 공개키 공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만이 알 수 있어서 특정한 비밀키를 가지는 사용자만이 내용을 열어볼 수 있도록 하는 방식. 따라서 안전하게 상대방에게 메세지를 전달해 줄 수 있다. 암호화할 때의..
5주차 네트워크 1. OSI 7 계층 OSI 7 계층의 구조 프로토콜 1960~1970년대에는 각 업체가 자신들의 컴퓨터끼리 네트워크를 사용해서 데이터를 통신했다. 컴퓨터와 통신에서 사용하는 기기, 프로토콜을 자신들의 규격으로 만들어서 사용했다. 때문에 다른 회사와는 규격이 달라 호환되지 않는 경우가 많았다. 표준을 만들려고 했지만 실패했다. 그래도 "통신을 하려면 대충 이런 것들이 필요하다더라"는 정립이 됐는데 이게 OSI 7 layer 각 계층마다 각각의 역할과 규칙이 있다. 계층을 구분하는 이유는 모듈화를 함으로써 문제가 생겼을 때 해당 계층만 수정할 수 있기 때문이다. 하위 계층은 상위 계층을 위해 일하고 상위 계층은 하위 계층에 대해 관여하지 않는다. [네트워크/기본] 프로토콜(Protocol)..
4주차 6. 인덱스 해시테이블, B/B+tree로 구현 가능한데 해시테이블은 잘 안 쓴다고 함. 그 이유는, 해시 테이블은 등호(=) 연산에 최적화되어있기 때문이다. 데이터베이스에선 부등호() 연산이 자주 사용되는데, 해시 테이블 내의 데이터들은 정렬되어 있지 않으므로 특정 기준보다 크거나 작은 값을 빠른 시간 내에 찾을 수가 없다. B tree는 이진탐색트리의 일종으로 data가 한쪽으로 쏠리는 걸 막고 일정한 level을 유지하게끔 설계된 트리임. B+ tree는 기존의 B tree보다 좀 더 발전돼서 나온 것. data 조회는 빠른데 삽입/삭제/갱신 이런 거 하려면 좀 복잡함. 이것도 이해가 필요하기보단 그냥 rule을 받아들이고 그대로 따라가면 됨. 떨어져있지 않은 직사각형 세트가 노드고 그 안에..
3주차 DB 1. 데이터베이스란? 데이터베이스는 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다. 이런 데이터베이스를 관리하고 운영하는 소프트웨어를 DBMS(Database Management System) 현재 사용되는 DBMS 중에는 관계형 DBMS가 가장 많은 부분을 차지하며, MySQL도 관계형 DBMS에 포함됩니다. RDBMS의 데이터베이스는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 하나 이상의 열(column)과 행(row)으로 이루어져 있습니다. [참고한 포스팅] https://hongong.hanbit.co.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%B4%ED%95%..
6. Hash Table 해시 : 해시함수로부터 나온 결과값, 저장 위치의 역할을 한다. 해싱 : 해시함수를 통해 해시를 얻어내는 일련의 과정을 해싱이라고 한다. (key,value) 형식으로 data를 저장한다. key값에 해시함수를 적용해 배열의 고유한 index(해시)를 생성하고, 이 index를 활용해 값을 저장하거나 검색한다. 장점) 배열(버킷)을 사용하기 때문에 검색이 빠르다. 구체적으로는 key - value의 1대1 매칭 구조이기 때문에 삽입, 삭제, 검색 모두 평균적으로 (충돌이 없는 경우) O(1)의 시간 복잡도를 가져서 빠르다. 단점) 데이터가 저장되기 전에 미리 공간을 만들어놔야 하므로 공간 효율성이 떨어진다. hash function이 복잡하다면 hash를 만들어내는데 시간이 많이..
1. Array, ArrayList, Linked List Array는 사이즈 수정이 안 된다. 그런데 ArrayList는 사이즈 수정이 된다. 둘 다 index를 활용하기 때문에 검색하는 상황에 유용하게 쓰인다. 하지만 삽입, 삭제를 할 때 앞 뒤 요소를 다 앞으로 땡기거나 뒤로 미는 작업이 이루어지기 때문에 cost가 크다. → 검색이 주가되고 수정이 드물 때, 사이즈 수정 여부를 고려해서 Array 또는 ArrayList를 사용하면 좋다. LinkedList는 node라는 개념을 활용한다. index라는 개념이 없고 삽입, 삭제를 할 때 그냥 link를 끊고 새로 연결만 하면 되기 때문에 Array, ArrayList보다 cost가 적다. 검색을 할 때는 순차적으로 하기 때문에 시간이 오래 걸려서 ..