분류 전체보기(324)
-
[Algorithm Week_2] 시간복잡도 & 빅-오 표기법
시간복잡도 (Time Complexity) - Algorithm의 "수행시간"을 이론적으로 분석 Algorithm은 추상적인 존재 이 추상적인 Algorithm을 코드를 통해서 구체화를 한다 - 시간복잡도는 N에 관한 함수로 표현한다 N : 입력으로 주어지는 Data의 크기 - 시간복잡도의 계산방법은 "해당 코드의 기본연산의 개수"를 계산한다 기본연산 : 덧셈 / 뺄셈 / 곱셈 / 나눗셈 / 대입 / ... - 시간복잡도에는 최선/평균/최악으로 나누어지면 여기서 가장 눈여겨봐야하는 것은 "최악 시간복잡도"이다 Why? 항상 시간복잡도는 "upper bound"를 고려해야 하기 때문이다 Example) Selection Sort static void selection_A(int [] list, int n)..
2022.03.10 -
[Algorithm Week_1] 여러가지 곱셈 알고리즘
1. Long Multiplication Algorithm - 우리가 일반적으로 행하는 곱셈 알고리즘 - 어릴때부터 배우던 방식 그대로 곱하면 된다 9 1 4 X 3 1 4 ------------------------------------------------------------------------------------------------------------------------------------ 3 7 3 6 9 3 4 2 8 0 2 ------------------------------------------------------------------------------------------------------------------------------------ 2 9 3 2 7 6 2..
2022.03.10 -
[OS Week_1] 3/8 정리
OS는 "자원 관리자"이자 "제어 프로그램"이다 결국 컴퓨터 시스템의 하드웨어 자원들을 관리해주고, 시스템에 에러를 일으키거나 부적절하게 사용되는 부분을 제어해준다 컴퓨터의 전원 ON 과정 1단계 전원을 키고 파워가 공급되면 메인보드에 부착된 장치들에게 전력 공급 (CPU / ROM / RAM / 디스크) 2단계 ROM에 저장된 펌웨어인 BIOS가 동작한다 → BIOS는 "POST"라는 검사 과정을 수행해준다 메모리에 bad sector는 없는지 키보드, 마우스 등 I/O 장치들이 잘 꽂혀져 있는지 하드디스크에 문제는 없는지 >> 컴퓨터가 동작하기 위한 "주변 장치"들에 문제가 없는지 확인하고 문제가 있으면 시스템은 종료된다 3단계 POST 과정에 문제가 없다면 BIOS는 "부트스트랩 프로그램"을 실행해..
2022.03.08 -
[Java] JDBC 실행 순서 정리
"일단 JDBC Interface를 사용하려면 JDBC Driver가 필요하다" 1. 각 DBMS에 알맞은 드라이버를 구글링을 통해서 다운로드한다 2. 다운로드 후, 해당 드라이버를 자바 프로젝트 상에 적용시켜줘야 한다 현재 "sample" DB내의 "user" 테이블 현황 CREATE TABLE user( idx INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, gender CHAR(2) NOT NULL, bth DATE NOT NULL, PRIMARY KEY(idx) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8mb4; 1. 드라이버 로드 - DBMS에 맞는 드라이버를 다운로드하면 해당 드라이버를 로드해줘야 한다 Clas..
2022.03.05 -
[DB] Transaction? ACID?
트랜잭션 (Transaction) - 여러 작업들을 하나로 묶은 단위 - 그렇게 묶여진 한 그룹단위 작업들은 모두 실행되거나 모두 실행되지 않는다 :: All-Or-Nothing 트랜잭션이 필요한 이유? Example) "A 은행 → B 은행으로 돈 보내기" 1. 일단 A 은행에서 보낼 돈을 출금해야 한다 2. B 은행으로 출금한 돈 보내기 여기서 (1) 과정을 마치고 은행 시스템이 마비되면? "돈은 A 은행에서 출금이 되었지만 해당 돈이 송금되지 않고 증발한다" >> Transaction을 통해서 데이터의 유효성을 보장해야 한다 ACID? - 데이터의 유효성을 보장하기 위해서, 트랜잭션의 특징들의 앞글자를 딴 단어 Atomicity (원자성) - 모든 작업이 반영되거나 모두 롤백되는 특성 >> COMM..
2022.03.05 -
[DB] MySQL 기본 CRUD
SHOW DATABASES - 현재 계정에서 접근 가능한 DB의 목록들을 보여준다 CREATE DATABASE 'sample' USE sample; CREATE DATABASE ~ : '~'라는 DB를 현재 계정에 생성 USE ~ : 현재 계정에서 '~'라는 DB를 사용하겠다 SHOW TABLES; SHOW TABLE STATUS; SHOW TABLES : USE를 통해서 사용하는 DB의 테이블에는 어떤 테이블이 존재하는가 SHOW TABLE STATUS : USE를 통해서 사용하는 DB의 테이블의 정보들 (버전, ROW수, ...) DESCRIBE [테이블 이름]; DESC [테이블 이름]; DESC [테이블 이름] : 해당 테이블의 COLUMN의 정보 (필드, 타입, NULL?, ....) - DES..
2022.03.05 -
[정보보호개론] Week_1 : Caesar's Cipher
Caesar's Cipher - 최초의 암호 알고리즘 - 단순치환암호의 일종이다 알파벳별로 일정한 거리만큼 밀어서 다른 알파벳으로 치환하는 방식 Key - Shift by n Key Space - 암호 알고리즘에서 key의 경우의 수 >> Caesar's Cipher의 경우 Key Space는 0 ~ 25인 26이다 Exhaustive Key Search - key의 가능한 모든 경우의 수를 통해서 암호를 해석하는 방법 ~~ Brute-Froce / 완전 탐색 Caesar's Cipher Encryption static void encryption_removeSpace(){ System.out.print("\nPlain Text : "); String text = sc.nextLine(); System...
2022.03.03 -
[정보보호개론] Week_1 : 기본 용어
보안의 기본 3원칙 : C I A Confidentially (기밀성) "To prevent unauthorized reading of information" - 인가되지 않은 user(Attacker)가 정보를 읽는 것을 막는다 - Attacker에 의해서 정보가 읽혀서 노출되는 것을 막는 보안원칙 ◆ 공격예시 - 스니핑 - 스푸핑 ◆ 대처방안 1. 접근 통제(Access Control)을 실시 2. 정보에 대한 암호화 Integrity (무결성) "To prevent unauthorized writing of information(Modifying)" - 인가되지 않은 user(Attacker)가 정보에 접근해서 정보를 변경하는 것을 막음으로써 정보의 원본을 보호 - Attacker에 의해서 정보의 ..
2022.03.03 -
[Network] 네트워크 계층 : 계층적 라우팅
계층적 라우팅 (Hierarchical Routing) - 지금까지의 라우팅은 아래의 특정 조건을 가정으로 기술되었다 모든 라우터가 동일 하나의 네트워크를 기준 - 그러나 인터넷은 네트워크의 네트워크이고 모든 라우터는 당연히 동일하지 않다 현실 세계의 라우팅 문제 1. 확장 (Scale) - 인터넷상에는 6억개 이상의 Host들이 존재한다 따라서, 모든 목적지를 Routing Table에 저장할 수 없다 (너무 많기 때문) ▶ LS (Link-State) - 모든 라우터들이 서로에게 자신의 LS를 브로드캐스팅한다 이러면 각 Router간의 Link 비용을 굉장히 많이 사용하게 된다 :: 비효율적 - 원래 목표인 "user들의 Data 교환"보다 Data 교환을 하기 위한 Router끼리의 정보 교환이 더..
2022.02.27 -
[Network] 네트워크 계층 : 라우팅 알고리즘
라우팅 프로토콜 - 라우팅 알고리즘이 필요로하는 Network의 정보들을 모으는 역할 - Router끼리 해당 정보를 주고받기 위해 필요한 프로토콜 RIP / OSPF / BGP 라우팅 알고리즘 - Source → Dest까지 Router의 Network를 통과할 때 최적의 경로를 결정하기 위해 사용되는 알고리즘 - "좋은 경로" == "최소 비용 경로" 라우팅 알고리즘 분류 (1) 중앙 집중형 VS 분산형 ▶ 중앙 집중형 - 네트워크의 전체적인 정보(완전한 정보)를 가지고 Source → Dest 까지의 최소 비용 경로를 계산 각 Router가 네트워크 전체 정보(링크 비용)을 보유하고 있다 Link-State Algorithm :: LS Algorithm ≫ 다익스트라 알고리즘 ▶ 분산형 - 최소 비..
2022.02.26 -
[Network] 네트워크 계층 : ICMP / IPv6
ICMP (Internet Control Message Protocol) 1. (Host - Host) / (Host - Router) / (Router - Router) 간에 네트워크 계층 제어 정보 교환을 위한 프로토콜 에러 발생 여부 상호간에 서로 살아있는지 확인 (네트워크 연결 여부) >> Data를 교환하는게 아니라 상호간에 제어 정보를 교환하기 위한 프로토콜이다 2. IP의 상위 계층이다 물론 IP / ICMP / Routing_P 3개 모두 네트워크 계층 안에 속하긴 하지만, 그 안에서도 상위-하위가 나뉘어져 있다 따라서, ICMP 메시지는 최종적으로 IP 데이터그램의 페이로드에 캡슐화되어서 보내진다 IP 헤더 페이로드 출발지 IP / 목적지 IP / .... ICMP 메시지 + 여러 Dat..
2022.02.23 -
[Network] 네트워크 계층 : NAT
NAT (Network Address Translation) - 사설 IP → 공인 IP로 변경할 때 필요한 주소 변환 서비스 - NAT 라우터를 사용해서 다수의 사설 IP 주소를 하나의 공인 IP주소로 변환시키는 기술 NAT 라우터에는 NAT 변환 테이블이 존재한다 (사설 IP 주소 : 포트 번호) :: (공인 IP 주소 : 새로운 포트번호) 형식으로 저장해놓는다 이러면 외부에서 NAT 라우터로 Response가 올 경우, Dest IP 주소(공인)을 서브넷 내의 특정 호스트의 IP 주소(사설)로 Dest를 변경시킨다 Example) ▶ Request :: 192.168.1.1 PC - 서브넷에 존재하는 PC (사설 IP 주소 : 192.168.1.1)가 외부의 Host에게 Reqeust를 보내려고 한..
2022.02.21