CS 20

그래프(Graph)

개요 정점과 간선들의 유한 집합 G = (V, E) 정점(Vertex) 여러 특성을 가지는 객체 노드(node)와 같은 의미 간선(edge) 정점을 잇는 선 객체들의 연결관계를 나타냄 링크(link)라고도 함 인접 정점 간선으로 직접 연결된 정점 간선은 방향성이 있는 경우와 없는 경우 존재 그래프의 종류 무방향 그래프 (Undirected Graph) 방향이 없는 그래프 노드는 간선을 통해 양방향으로 통행 가능 노드 A와 B가 연결된 경우 (A, B) 또는 (B,A)로 표현 정점의 차수 하나의 정점에서 인접한 정점의 개수 방향 그래프(Directed Graph) 간선에 방향이 있는 그래프 노드 A에서 노드B로 가는 간선이 있을 때 라고 표현 진입 차수 방향 그래프에서 외부에서 정점으로 들어오는 간선의 수..

CS/자료구조 2022.09.21

DTO 사용 이유

1.엔티티 내부 구현을 캡슐화 DTO 대신 domain 모델을 계층간 전달에 사용하면, UI 계층에서 도메인 모델의 메소드를 호출하거나 상태를 변경시킬 수 있다. 즉, DTO를 사용하여 domain 모델을 캡슐화 하여 보호할 수 있다. 또한 domain 모델을 계층간 전송에 사용하면 model과 view의 결합이 강해질 수 있다. view의 요구사항 변화로 domain의 코드를 변경해하는 일이 생길 수 있다. 2.필요한 데이터를 선별 요청과 응답으로 Entity를 사용한다면, 요청하는 화면에 필요하지 않은 속성까지도 함께 보내지게 된다. 예를 들어 USER의 ID만 보여주면 되는 상황에서 USER가 가지고 있는 다른 값들까지 데이터에 포함 되는 것이다. 이처럼 원하지 않은 API 요청과 응답에서 Enti..

Index

Index의 정의 인덱스란 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조입니다. 예시) 두꺼운 책 → 원하는 내용을 알기위하여 모든 페이지를 찾아보는것은 오랜시간이 걸리기 때문에 책의 앞쪽에 목차를 추가하는데 이는 테이블의 칼럼을 색인화 하는것과 같습니다. 데이터베이스에서도 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터 위치를 포함한 자료구조(인덱스)를 생성하여 빠르게 조회할수 있도록 하고 있습니다.(인덱스가 잘 설정되었을때) 인덱스를 활용한다면 테이블의 데이터를 조회하는 SELECT외에도 연산을 수행하려면 해당 대상을 조회해야 작업이 가능한 UPDATE, DELETE의 성능이 향상됩니다. Index의 특징 인덱스는 WH..

SQL Injection

SQL Injection 개요 악의적인 사용자가 보안산의 취약점을 이용해 임의의 SQL문을 주입하고 실행되게 하여 데이터 베이스가 비정상적인 동작을 하도록 조작하는 행위 OWASP에서 발표한 웹 어플리케이션 취약점 TOP 10에서 상위권에 위치 공격이 비교적 쉬운편이지만 공격에 성공할 경우 큰 피해를 입힐 수 있는 공격 인증 우회, 시스쳄 명령어 삽입, 웹 쉘 생성 등의 공격방법이 SQL Injection에 속함 공격 방식 Normal SQL Injection //정상 입력 SELECT user FROM user_table WHERE id='admin' AND password='1234'; //SQL Injection SELECT user FROM user_table WHERE id='admin' AND..

이상현상과 정규화

이상현상 이상현상이란? 테이블 내의 데이터들이 불필요하게 중복되고 잘못 설계하여, 테이블의 삽입, 삭제, 수정할 때 논리적으로 생기는 데이터 불일치 현상입니다. 삽입 이상 원치 않는 데이터가 삽입되거나 , 특정 데이터가 존재하지 않아 DB에 삽입할 수 없을 때 발생하는 경우입니다. → 즉, 불필요한 데이터를 추가해야 삽입할 수 있는 경우 삭제 이상 삭제를 시도하는 경우 그 데이터를 포함하는 튜플 전체가 삭제되어 정보손실이 발생하는 경우입니다. → 즉, 삭제로 인해 필요한 데이터까지 같이 삭제되는 경우 갱신 이상 부정확한 설계로 인하여 일부 튜플 갱신시 일관성이없고 정보가 모호해 정확하게 파악이 되지 않는 경우와 너무 많은 행을 업데이트하는 경우입니다. → 즉, 일부분만을 변경해 데이터가 불일치 하는 모순..

Blocking,Non-blocking & Synchronous,Asynchronous

Blocking & NonBlocking Blocking & NonBlocking은 호출되는 함수(시스템)가 바로 리턴하느냐 마느냐가 중점입니다. 호출된 함수(시스템)가 바로 리턴하여 호출한 함수(프로그램)에게 제어권을 넘겨주고 호출한 함수(프로그램)가 다른일을 할수 있는 기회를 줄수 있으면 NonBlocking입니다. 그렇지 않고 호출된 함수가 자신의 작업이 모두 마칠때까지 호출한 함수에게 제어권을 넘겨 주지 않고 대기하게 만든다면 Blocking입니다. 예시 A라는 함수와 B라는 함수가 존재할때 A라는 함수에서 B라는 함수를 호출했다고 가정해봅니다. 이때 호출된 함수는 B이고 호출한 함수는 A입니다. B라는 함수가 호출되면서 B라는 함수가 실행되고 있습니다.(제어권이 B에게 주어진 상황입니다.) 이때..

CS/네트워크 2022.09.20

TLS/SSL HandShake

TLS(Transport Layer Security) 개요 인터넷 상의 의사소통을 위한 개인정보와 데이터 보안을 용이하게 하기 위해 설계된 보안 프로토콜 웹 사이트를 로드하는 웹 브라우저와 같은 웹 응용 프로그램과 서버 간의 커뮤니케이션을 암호화 할 때 사용 이메일, 메시지, VoIP와 같은 커뮤니케이션 암호화에도 사용 국제 표준 기구인 IETF(Internet Engineering Task Force)에 의해 제안되어 1999년에 발표 TLS를 통해 암호화, 인증, 무결성 보장 가능 암호화 : 제 3자로부터 전송되는 데이터 숨김 인증 : 정보를 교환하는 당사자가 요청된 당사자임을 보장 무결성 : 데이터가 위조되거나 변조되지 않았는지 확인 TLS와 SSL TLS는 Netscape가 개발한 SSL(Secu..

CS/네트워크 2022.09.20

HTTP & HTTPS

HTTP HTTP HTTP(Hyper Text Transfer Protocol)란 서버와 클라이언트(웹브라우저) 간의 데이터를 주고 받기 위한 프로토콜이다. 주로 80번 포트를 사용하고 있다. 따라서 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다.HTTP는 WWW(World-Wide-Web) 기반에서 세계적인 정보를 공유하는데 큰 역할을 하였다. HTTP 구조 HTTP는 애플리케이션 계층의 프로토콜로 TCP/IP 에 의해 동작한다. Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성된다. HTTP 특징 Stateless(무상태) - 서버와 클라이언트 연결을 지속하지 않아 서버는 클라이언트를 ..

CS/네트워크 2022.09.20

대칭키 VS 공개키

개요 대칭키 암호화 방식은 암호화 복호화에 사용하는 키가 동일한 암호화 방식 공개키 암호화 방식은 암호화 복호화에 사용하는 키가 서로 다른 방식 공개키 암호화 방식은 비대칭키 암호화라고도 부름 공개키 암호화 방식은 송수신자 모두 한쌍의 키(개인키, 공개키)를 가짐 개인키는 비밀키로 비공개키를 의미 대칭키 개요 하나의 비밀키를 Client와 Server 모두가 같이 사용 암호화와 복호화에 사용하는 키가 같은 암호화 알고리즘 Session Key, Secret Key, Shared Key, 단용키라고도 함 대표적인 알고리즘으로 공인 인증서 암호화 방식으로 유명한 SEED 알고리즘, DES, 3DES, 3AES, ARIA, 최근 주목받고 있는 암호화 알고리즘인 ChaCha20 등이 존재 암호화 하는 단위에 따..

CS/네트워크 2022.09.20

UDP

UDP(User Datagram Protocol) 네트워크 계층들중 전송계층에서 사용하는 프로토콜로써 데이터를 보내기위해 사용합니다. 데이터를 데이터 그램 단위로 처리하는 프로토콜 UDP는 비연결형 프로토콜입니다. 즉 연결을 위해 TCP처럼 할당되는 논리적인 경로가 없습니다. 그렇기 때문에 각각의 패킷은 다른 경로로 전송되고 각각의 패킷은 독립적인 관계를 지니게되는데 이렇게 데이터를 서로 다른경로로 독립적으로 처리하게되는 프로토콜입니다. UDP 특징 비 연결형 서비스로 데이터그램 방식을 제공합니다. 정보를 주고 받을때 정보를 보내거나 받는다는 신호 절차를 거치지 않습니다. 신뢰성이 낮지만 TCP보다 속도가 빠릅니다. UDP는 비 연결형 서비스이기 때문에 연결을 설정하고 해제하는 과정이 존재하지 않습니다...

CS/네트워크 2022.09.20