본문 바로가기

TIL

(32)
[TIL]20220528 CS 스터디 챕터 18: 알고리즘과 초콜릿 케이크 레시피 챕터 19: 반에서 가장 키 큰사람 찾기: 선형 알고리즘 알고리즘 세심하고, 정확하고 명료하게 작성된, 결과를 정확하게 계산되도록 보장된 일련의 단계 각 단계는 기본적인 연산으로 표현되어 있고 연산의 의미는 완전하게 명시됨 모든 가능한 상황을 다루어야 하며, 다음에 무엇을 해야할지 모르는 상황이 발생하면 안된다. 알고리즘을 이루는 모든 구성 요소가 애매하거나 모호한 부분이 있으면 안됨! 인간의 언어를 컴퓨터도 이해할 수 있을 정도로 단계를 명확하고 상세하게 설명해야 한다! 알고리즘은 결국 멈춰야 한다. 정확하고 신속한 알고리즘의 설계부터 구현까지 모두 컴퓨터과학, 데이터 분석, 웹 개발 등 모든 소프트웨어 분야에서 매우 중요하다 결국 한정된 자원(..
[TIL]20220527 CS 스터디 챕터 16: 슈퍼 컴퓨터부터 사물 인터넷 까지 슈퍼컴퓨터 슈퍼컴퓨터는 “당대터들 중에서 가장 빠른 계산 성능을 갖는 컴퓨터들” 이라고 정의된다. 이와 같은 정의는 매우 상대적인 개념으로, 한 때는 슈퍼컴퓨터로 불리던 컴퓨터들이 컴퓨터 성능의 발전에 따라 미래에는 일반적인 고성능 컴퓨터 정도로 지칭될 수 있다는 것을 의미한다. 슈퍼컴퓨터는 과학기술 연산을 비롯한 다양한 분야에 사용 되는 고속 컴퓨터다. 보통 많은 수의 프로세서와 대량의 메모리를 사용한다. 사용되는 프로세서 자체도 종래 프로세서보다 특정 종류의 데이터를 훨씬 빨리 처리하는 명령어로 구성 되어 있다. 사물 인터넷(IOT, Internet of Things) 사람, 사물, 공간, 데이터 등의 모든 것이 센서와 토인 기능을 내장하여 ..
[TIL]20220526 CS 스터디 챕터 15: 캐시가 뭔가요? 캐시 컴퓨터의 성능을 향상시키기 위해 사용되는 용량은 작고 속도가 빠른 메모리. 주 기억 장치와 CPU사이에 위치하고, 자주 사용하는 데이터들을 기억한다. 캐시는 캐시의 접근 시간에 비해 원래 데이터에 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다. 캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다. 프로세서에서 캐시는 용량이 작고 속도가 빠른 메모리로, 용량이 더 크지만 훨씬 느린 주 기억 장치에 매번 접근하는 것을 피하고자 최근에 사용된 정보를 저장하는 데 사용 일반적인 프로세서에는 캐시가 2~3개가 있는데, 흔히 L1, L2, L3 레벨이라고 부르고 뒤로 갈수록..
[TIL]20220525 CS 스터디 챕터 14: 프로세서는 무조건 빠른게 좋을까? 프로세서의 사이클: 인출 해석 실행 사이클 반복 컴퓨터 아키텍쳐: 컴퓨터 아키텍쳐란 프로세서 설계와 더블어 프로세서와 컴퓨터 나머지 부분간의 연결방식 설계를 다루는것을 말한다. 현대의 컴퓨터 아키텍쳐: 캐시라고 하는 고속메모리를 여러개 사용. 파이프 라이닝: 여러 명령어가 다양한 단계에 걸쳐 진행도도록 만드는 기법 병렬 명령어 처리 기법: 동시에 여러 명령어를 병렬적으로 실행하는 방법 프로세서 여러개가 동시에 작업하도록 하는 기법 AP vs CPU: 모바일 중앙처리장치 AP(Application Processor)는 모바일 분야의 핵심인 반도체 칩. 흔히 모바일 AP는 스마트폰의 두뇌. 하지만 모바일 AP와 CPU는 엄밀히 말해서 다르다. 모바일..
[TIL]20220524 CS 스터디 알고리즘 이진트리(2) 이진 탐색 트리: 이진트리 기반의 탐색을 위한 자료구조. 효율적인 탐색 작업을 위한 자료구조 부모 기준에서 왼쪽에는 작은 값, 오른쪽에는 큰 값을 가지는 이진트리 이진탐색트리의 특징 각 노드에는 고유한 key 가 있다 루트노드의 왼쪽 서브트리는 해당 노드의 키보다 작은 키를 갖는 노드를로 구성되어있다. 루트노드의 오른쪽 서브트리는 해당 노드의 키보다 큰 키를 갖는 노드를로 구성되어있다. 좌우 서브트리도 모두 이진 탐색 트리여야 한다. 평균적으로 탐색의 시간복잡도는 O(logN). 치우친 경우에는 O(N). 그래서 균형이 중요하다 자가균형 이진탐색 트리는 AVL, 레드블랙 트리 등이 있으며 자바의 해시맵이 체이닝 시 연결리스트와 함께 레드블랙 트리를 병행해 저장한다. 이..
[TIL]20220523 CS 스터디 챕터10: 비트 모아 데이터 이진수 십진수가 10의 거듭제곱의 합으로 나타낸 것과 같이 이진수는 단지 0과 1을 이용해서 2의 거듭제곱의 합으로 나타낸 수 표기법이다. 그런데 왜 컴퓨터는 우리에게 익숙한 십진법 대신에 위와같이 0과 1로만 이루어진 2진수 체계를 사용할까? 컴퓨터 입장에서 2진수 표현이 전기적 신호로 의미를 표현할 수 있는 가장 간단한 방법이기 때문이다. 신호가 있으면 1, 없다면 0 0과 1만으로도 and, or, xor등 여러 논리 연산을 해결할 수 있다 그렇다면 10진수 체계를 사용하는 경우에는 어떻게 될까? 신호에 대해서 10단계의 구분이 필요하게 될 것이다. 만약 전기 신호의 크기가 0에서 3V라 가정하면 단계별로 0.3V의 전기신호를 보내야 하는데 이는 현실적으로 ..
[TIL]20220522 WIL: 배열, 연결리스트, 스택, 큐, 해시테이블,그래프, BFS, DFS 배열(Array) 배열은 파이썬에서 list와 tuple 이라는 두가지 타입을 제공한다. 그리고 파이썬에서는 원소의 타입이 동일하지 않아도 된다는 특징이있다. Tuple 은 원소수정을 할 수없지만 List는 원소 수정(추가,삭제) 이 가능하다. 연결리스트(Linked List) 노드를 이용해 집적 구현해야 한다. 클래스: 함수들을 모아놓은것을 클래스라고 한다. class Node: def __init__(self,var,next): self.var = var self.next = next class LinkedList: def __init__(self): self.head = None def append(self,vartoadd..
[TIL]20220521 CS 스터디 챕터79: 곳곳에 도사리는 위험 클라이언트 공격 스팸(Spam): 요청 없이 불특정 다수에게 대량으로 전송되는 메시지(보통 이메일이나 문자 메시지) 또는 전화 등을 의미합니다 피싱(Phishing): 이메일 또는 메신저를 사용해서 신뢰할 수 있는 사람 또는 기업이 보낸 메시지인 것처럼 가장함으로써, 사용자의 비밀번호 및 신용카드 정보와 같이 기밀을 요하는 정보를 부정하게 얻으려는 사이버 범죄의 하나이다. 그 외 공격들: 스피어 피싱, 스파이 웨이, 트로이 목마, 랜섬웨어 서버 공격 SQL injection: SQL 인젝션 (SQL삽입, SQL주입으로도 불린다)은 코드 인젝션 의 한 기법으로 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식을 말한다. SQL inje..