
레디스(Redis) 레디스(Redis) 란? Redis(레디스)는 REmote DIctionary Server 의 약자로 오픈소스(BSD licensed) DBMS 이다. In-memory(인 메모리) 데이터 저장소이며, Key-Value 기반의 NoSQL DBMS 이다. 문자열 뿐만 아니라 리스트, 해시, 셋 등 다양한 데이터 형식을 지원한다. 1ms 이하 빠른 응답시간 지원한다. Redis 서버의 모든 데이터는 하드 드라이브에 저장되지 않고 메모리에 저장되게 된다. 메모리에 데이터를 저장한다는 것은 서버가 충돌할 경우 모든 데이터가 손실될 위험이 있다는 의미이기도 하는데 이런 상황을 막기위해 Redis 는 정기적으로 모든 데이터를 백업 하드 드라이브로 복사 또는 재 생성에 필요한 모든 명령을 로그 파..

삽입 정렬(Insertion Sort) 삽입 정렬(Insertion Sort) 란? 삽입 정렬(Insertion Sort)은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치에 삽입함으로써 정렬을 완성하는 알고리즘이다. 삽입 정렬은 처음 Key 값을 두 번째 요소부터 시작하게 되며 그 앞쪽 요소들과 비교하여 삽입할 위치를 지정한 후 요소를 뒤로 옮기고 지정한 자리에 자료를 삽입하여 정렬하는 알고리즘이다. 삽입 정렬(Insertion Sort) 시간 복잡도 ▶ 최악의 경우(입력 자료가 역순일 경우) T(n) = O(n^2) ▶ 최선의 경우(입력 자료가 정렬되어 있는 경우) T(n) = O(n) 삽입 정렬(Insertion Sort) 알고리즘의 특징 1. 대부분의 ..
세마포어(Semaphore)와 뮤텍스(Mutex) 동기화 도구인 세마포어(Semaphore)와 뮤텍스(Mutex) 공유된 자원에 여러 프로세스가 동시에 접근하면서 문제가 발생할 수 있다. 이러한 문제를 해결하기 위하여 공유된 자원의 데이터는 한 번에 하나의 프로세스만 접근할 수 있도록 제한을 두는 동기화 방식을 취해야한다. 동기화 도구에는 대표적으로 세마포어(Semaphore)와 뮤텍스(Mutex)가 있으며 이 두 방식은 모두 공유된 자원의 데이터를 여러 프로세스 또는 스레드가 접근하는 것을 막는 역할을 한다. 임계 영역(Critical Section) 멀티 프로세스 환경에서 둘 이상의 프로세스가 동시에 접근해서는 안되는 공유자원의 코드 영역이다. 즉 여러 프로세스가 동일한 자원을 동시에 참조하여 값이 ..

트랜잭션(Transaction) 트랜잭션(Transaction; TX) 란 ? 트랜잭션(Transaction)은 데이터 베이스 상태를 변환시키는 하나의 논리적 기능 수행 단위이다. 즉 한번에 수행되어야 할 일련의 연산을 의미한다(Unit Of Work in Database Language). * 데이터베이스의 상태를 변화시킨다는 의미 ? 질의어(SQL: SELECT, INSERT, DELETE, UPDATE)를 통해 데이터베이스에 접근하는 것을 의미한다. * 작업의 단위? 많은 SQL 명령문들을 사람이 정하는 기준에 따라 정하는 것을 의미한다. 예시) 사용자 A가 사용자 B에게 만원을 송금한다. [DB 작업] 1. 사용자 A의 계좌에서 만원을 차감한다: UPDATE 문을 사용해 사용자 A의 잔고를 변경한..

이진탐색트리(Binary Search Tree) 이진탐색 트리에서 원소 삭제 1. 키(Key)를 이용해서 노드를 찾는다. 해당 키의 노드가 없으면, 삭제할 것도 없다. 찾은 노드의 부모 노드도 알고 있어야 한다. 2. 찾은 노드를 제거하고도 이진탐색 트리 성질을 만족하도록 트리의 구조를 정리한다. 인터페이스의 설계 ✔ 입력 : 키(Key) ✔ 출력: 삭제한 경우 True, 해당 키의 노드가 없는 경우 False class BinarySearchTree: def remove(self, key): node, parent = self.lookup(key) if node: ... return True else: return False 이진탐색 트리 구조의 유지 삭제되는 노드가, 1. 말단(leaf) 노드인 경우..

PCB(Process Control Block) Process Metadata 프로세스는 컴퓨터에서 연속적으로 실행되고 있는 동적인 상태의 컴퓨터 프로그램, 즉 하나의 작업 단위이다. 프로세스는 여러가지 특징을 가지고 있는데 이러한 특징을 Process Metadata 라고 한다. 이 메타데이터는 프로세스가 생성되면 PCB(Process Control Block)에 저장된다. 이러한 메타 데이터를 통해 CPU는 각 프로세스를 구분할 수 있고, 이를 통해 프로세스가 여러 개일 때 전부 관리할 수 있다. 이렇게 프로세스 여러 개를 CPU 스케쥴링을 통해 관리하는 것을 Process Management 라고 한다. ※Process Metadata - process-id : 새로운 프로세스에 시스템이 할당해주는..

인덱스(Index) 인덱스(index) 란 ? 인덱스는 데이터베이스 테이블에 대한 검색 속도를 높여주는 자료구조이다. 만약 우리가 책에서 원하는 내용을 찾는다고 하면, 책의 모든 페이지를 찾아보는 것은 오랜 시간이 걸린다. 그렇기 때문에 책의 저자들은 책의 맨 앞 또는 맨 뒤에 색인을 추가하는데, 데이터베이스의 인덱스는 책의 색인과 같다. 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 즉 데이터베이스 테이블의 컬럼을 색인화 하게 되며 검색 시 해당 테이블의 레코드를 Full scan 하는 것이 아니라 색인화 되어있는 Index 파일을 검색하여 검색 속도를 빠르게 한다. 인덱스(Index)의 원리 인덱스를 해당 컬럼에 주게 되면..

SQL Injection(SQL 삽입 공격) SQL Injection(SQL 삽입 또는 SQL 주입)은 악의적인 사용자가 보안상의 취약점을 이용하여 클라이언트의 입력 값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격방식을 말한다. 이러한 Injection 계열의 취약점들은 테스트를 통해 발견하기는 힘들지만 스캐닝툴이나 코드 검증절차를 거치면 보통 쉽게 발견되기 때문에 탐지하기에는 쉬운편이다. 보안회사 Imperva 가 2012년에 발표한 내용을 따르면 월 평균 4회가량의 SQL Injection 공격이 일어난다고 한다. OWASP 에서도 수년 동안 Injection 기법이 보안 위협 1순위로 분류되었던 만큼 각별한 주의가 필요하다. 공격 방법 방법 1. 인증 우회 보통 아이디와 패스워드를 입력하는..
- Total
- Today
- Yesterday
- 이진탐색
- 이차 리스트
- 완전탐색
- 프로그래머스
- 자료구조
- 프로그래머스강의
- 정렬
- 파이썬
- 리스트
- 자바
- 보험
- 자료구조와알고리즘 23강
- https
- 네트워크
- 코드업 기초
- 스터디
- Greedy sort
- SW
- CS 스터디
- 리스트2
- 리스트 복사
- 연결리스트활용
- CS.
- 프로세스 주소공간
- 데이터베이스
- 리스트함축
- CS
- 운영체제
- It
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |