본문 바로가기

반응형

전체 글

(260)
[DB] SQL 기본 정리 1. SQL SQL (Structured Query Language) 는 관계형 데이터베이스 관리 시스템, RDBMS의 데이터를 관리하기 위해 개발된 프로그래밍 언어이다. 관계형 데이터베이스에서 데이터의 검색과 관리, 스키마 생성과 수정, DB 객체 접근 조정 관리 등을 위해 고안되었다. SQL 문법의 종류는 다음 세가지로 구분할 수 있다. - DDL (Data Definition Language, 데이터 정의 언어) DB에서 새로운 데이터의 정의 및 제거, 기존에 존재하는 데이터의 재정의 등의 역할을 하는 언어이다. CREATE, DROP, ALTER, TRUNCATE 등이 존재한다. - DML (Data Manipulation Language, 데이터 조작 언어) DB에서 데이터 검색, 등록, 삭제,..
[JAVA] 상속 (Inheritance) 1. 상속 상속은 기존 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속을 이용하면 기존에 작성한 클래스를 사용할 수 있기 때문에 코드의 재사용성을 높이고 코드의 중복을 제거하여 프로그램의 생산성과 유지보수에 유리하다. 자바에서 상속을 구현하기 위해서는 'extends' 키워드를 사용하면 된다. 클래스 선언 시에 클래스 이름 뒤에 extends 와 상속하려는 클래스의 이름을 적어주면 된다. // Child 클래스가 Parent 클래스를 상속 class Child extends Parent { ... } 상속 관계에 있는 두 클래스는 다음과 같은 용어로 표현한다. - 조상 클래스 - 부모 클래스 (parent), 상위 클래스 (super), 기반 클래스 (base) - 자손 클래스 - 자식 클래스..
[git] git stash git 을 사용하여 작업을 하던 중 branch 를 바꾸기 위해서 git check 을 시도하면 때로 변경사항이 있어서 브랜치를 변경할 수 없다며 commit 또는 stash 를 통해서 변경 사항을 저장하라고 한다. commit 은 변경사항을 local repository 에 저장하는 명령어인데 stash 는 어떤 명령어인지 몰라서 이번에 알아보려 한다. 1. git stash git stash 란 워킹 디렉토리에서 수정한 파일들을 저장하는 명령어이다. stash 는 modified 이면서 tracked 상태인 파일과 staging area 에 있는 파일들을 스택에 잠시 저장했다가 나중에 다시 저장할 수 있도록 해준다. 이를 통해서 아직 마무리 되지 않은 작업을 잠시 저장해두었다가 다른 브랜치에서 작업을..
[git] squash로 commit 합치기 1. squash 때로는 하나의 기능을 구현하는데 있어서 프론트, 서버 또는 여러번의 수정으로 인해 커밋의 개수가 여러개가 될 때가 있다. 이럴 때 커밋 이력 등을 정리하기 위해서 git squash 를 사용하여 커밋 이력을 합치면 된다. git의 squash 기능은 여러개의 커밋 이력을 하나의 커밋 이력으로 만들 때 사용한다. 정확히 말하면 git rebase 를 통해서 이전 commit log 등을 되돌릴 수 있는데, 이 때 squash 옵션을 사용하여 되돌리는 커밋들을 하나의 커밋으로 만들 수 있다. # git commit log 를 확인한다. git log # log를 통해서 확인하여 rebase 명령어를 통해 해당 commit 으로 원복을 수행한다. # 이때 -i 옵션(interactive)을 ..
[JAVA] HashMap vs HashTable HashMap 과 HashTable 은 모드 key 와 value 를 1대1 형태로 데이터를 저장하는 자료구조이다. 데이터를 저장할 때 key 값과 이와 mapping 되는 value 를 저장하는데, 이름에서 알 수 있듯이 hashing 을 사용하여 데이터를 저장한다. 데이터를 저장할 때 key 값은 hash function 을 통해 hash code 으로 변환되는데, 이 값을 index 로 하여 테이블의 해당 index 에 value 를 저장하는 방식으로 데이터를 저장한다. 둘다 key 에 대한 중복이 없고 순서를 보장하지 않는다. 대신 key 를 알고 있는 경우에 검색 속도는 O(1) 의 시간복잡도를 가지기 때문에 빠른 검색을 보장한다. 차이점 HashMap 은 비동기로 동작한다. thread-saf..
[DB] Transaction (트랜잭션) 1. Transaction 트랜잭션은 데이터베이스의 상태를 변화시키는 논리적인 작업 단위를 의미한다. 데이터베이스의 상태를 변화시키는 작업이란 데이터베이스에 접근하여 데이터를 읽고, 쓰고, 수정하고, 삭제하는 등의 작업을 의미한다. 이런 작업들, 트랜잭션은 성공과 실패가 분명하고, 상호 독립적이다. 트랜잭션을 조작함으로 인해 사용자는 데이터베이스의 완전성 (Integrity)를 유지한다. 단일 트랜잭션은 데이터베이스에 읽거나 쓰는 등의 작업을 수행하는 여러 개의 쿼리를 요구한다. 이때 트랜잭션을 수행하면서 쿼리의 일부만 수행되는 일이 없어야 한다. 모든 작업이 완벽하게 처리되거나 또는 처리되지 못하는 경우 원상태로 복구되어야 한다. 2. 트랜잭션의 특징 (ACID) 데이터베이스의 트랜잭션이 안전하게 수행..
[OS] Memory Management 1. 메모리 구조 메모리는 CPU 자원만큼 컴퓨터 사용에 중요한 자원 중 하나이다. 그렇기 때문에 메모리는 접근하는데 필요한 시간을 최소화 하는 방향으로 발전해왔다. 현재의 메모리 구조는 다음과 같다. - Secondary Memory (External Memory): Magnetic Disk, Optical Disk, Magnetic Tape으로 구성되어 있으며 I/O 모듈에 의해 접근 가능한 저장 장치이다. - Primary Memory (Internal Memory): Main Memory, Cache memory, CPU registers 로 구성되어 있으며 Processor에서 접근이 가능한 저장 장치이다. 2. Memory 메모리는 기본적으로 address 와 data 로 구성되어 있다. CP..
[OS] Thread & Multithreading 1. Process vs Thread - Process 프로세스는 실행 중인 프로그램을 의미한다. 프로세스에 대한 정보를 가지고 있는 Process Control Block에 의해 운영된다. 프로세스는 child process라고 불리는 다른 프로세스들을 생성할 수 있다. 프로세스는 제거되는데 더 많은 시간이 걸리며, 독립된 자원을 할당받기 때문에 다른 프로세스와 자원을 공유하지 않는다. 프로세스는 new, ready, running, waiting, terminated, suspended의 상태를 가진다. - Thread 스레드는 프로세스의 일부분으로 프로세스에서 동작하는 실행 단위이다. 한 프로세스는 여러 스레드를 가질 수 있다. 스레드는 running, ready, blocked 3개의 상태를 가진..

반응형