Computer Science
-
Spring, Spring Data JPA, Lombok과 같은 기술은 어떻게 동작하는 걸까?Computer Science/Java 2022. 8. 28. 21:40
스프링으로 개발할 때, 스프링의 DI, 스프링 데이터 JPA, 롬복들을 사용해서 편하게 개발한다. 이러한 기술들은 어떻게 동작하는 걸까? 바로 자바가 제공하는 코드 조작 기술로 동작한다. 자바가 제공하는 코드 조작 기술을 이해하기 위해서는 자바의 JVM 구조에 대해서 알아야 한다. 클래스 로더 시스템 .class 에서 바이트코드를 읽고 메모리에 저장 로딩: 클래스 읽어오는 과정 링크: 레퍼런스를 연결하는 과정 초기화: static 값들 초기화 및 변수에 할당 메모리 메소드 영역에는 클래스 수준의 정보 (클래스 이름, 부모 클래스 이름, 메소드, 변수) 저장. 공유 자원이다. 힙 영역에는 객체를 저장. 공유 자원이다. 스택 영역에는 쓰레드 마다 런타임 스택을 만들고, 그 안에 메소드 호출을 스택 프레임이라..
-
CS 핵심 요약Computer Science 2022. 1. 30. 18:31
CS 핵심 요약 OS 네트워크 DB [프로세스, 스레드] ⦁프로세스 ⦁스레드 ⦁멀티프로세스 ⦁멀티스레드 [PCB, Context Switching] ⦁PCB(Process Control Block) ⦁Context Switching [CPU 스케줄링] ∙프로세스 상태 ∙비선점 스케줄링 ∙선점 스케줄링 ∙CPU 스케줄링 척도 [데드락] ⦁발생조건 ⦁예방 ⦁회피 ⦁탐지와 회복 [세마포어, 뮤택스] ⦁세마포어 ⦁뮤텍스 [페이징, 세그먼테이션] ∙페이징 ∙세그먼테이션 [페이지 교체 알고리즘] ∙종류 ∙교체방식 ∙MMU(Memory Management Unit) [OSI 7계층] ∙OSI 7계층 ➀물리(Physical) ➁데이터링크(Data Link) ➂네트워크(Network) ➃전송(Transport) ➄세션(..
-
네트워크 핵심 요약Computer Science/Network 2022. 1. 19. 16:37
네트워크 핵심 요약 [OSI 7계층] ∙OSI 7계층 ➀물리(Physical): 데이터를 전기적 신호 주고받는 계층 ➁데이터링크(Data Link): MAC 주소, 스위치, 물리 정보 송수신 ➂네트워크(Network): IP 주소, 라우터, 패킷을 송수신 ➃전송(Transport): TCP(신뢰성, 연결지향적), UDP(비신뢰성, 실시간) ➄세션(Session): 프로그램 간의 통신 ➅표현(Presentation): 애플리케이션이 다루는 정보를 통신에 맞는 형태 전환 ➆응용(Application): 일반적인 응용 서비스 수행을 담당하는 계층 [TCP 연결/해제] ∙TCP 3 way handshake(TCP 연결) ➀클라이언트가 서버에게 SYN 패킷을 보낸다(sequence: x) ➁서버가 SYN을 받았다..
-
OS 핵심 요약Computer Science/Operating System 2022. 1. 15. 23:32
OS 핵심 요약 [프로세스, 스레드] ⦁프로세스 -정의, 특징(독립 주소 공간), 세부특징(4영역), 스레드와의 관계(최소 1개) ⦁스레드 -정의, 특징(스택만 할당) ⦁멀티프로세스 -장점(안전성), 단점(오버헤드, Context Switching) ⦁멀티스레드 -장점(메모리 공유), 단점(안전성) [PCB, Context Switching] ⦁PCB(Process Control Block) -프로세스 메타데이터 저장(3영역), LinkedList 방식 추가 ⦁Context Switching -이전 프로세스 상태를 PCB에 보관, 다른 정보를 PCB에서 레지스터 적재 [CPU 스케줄링] ∙프로세스 상태 -New, Ready, Running, Waiting, Terminated ∙비선점 스케줄링 -FCFS..
-
DB 핵심 요약Computer Science/Database 2022. 1. 7. 16:56
DB 핵심 요약 [정규화, join] ∙정규화 -데이터 중복을 최대한 줄여 데이터를 구조화하고 논리적으로 저장하는 방법 ∙무결성 -테이블에 있는 모든 행들이 유일한 식별자를 갖는 특성 ∙join -두 개 이상의 테이블이나 데이터베이스를 연결하여 검색하는 방법 ➀INNER JOIN ➁LEFT OUTER JOIN ➂RIGHT OUTER JOIN ➃FULL OUTER JOIN ➄CROSS JOIN ➅SELF JOIN [인덱스] ∙인덱스 -자주 사용하는 데이터의 주소를 메모리에 비트리 자료구조로 색인화해서 올림 ∙인덱스를 조회하는 과정(레인지 스캔풀 스캔) -인덱스 페이지를 참조해가며 리프 노드에 도착해 적은 범위의 데이터에서 탐색 (루트 노드->브랜치 노드->...->리프 노드) ∙인덱스를 선정하는 기준 -기..
-
7.DB 트랜잭션(Transaction)Computer Science/Database 2022. 1. 7. 16:49
∙트랜잭션 ∘데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 -데이터베이스의 상태 변화: SELECT, INSERT, DELETE, UPDATE -작업 단위 예시: 사용자 A가 사용자 B에게 만원을 송금한다. ➀사용자 A의 계좌에서 만원을 차감한다 : UPDATE 문을 사용해 사용자 A의 잔고를 변경 ➁사용자 B의 계좌에 만원을 추가한다 : UPDATE 문을 사용해 사용자 B의 잔고를 변경 현재 작업 단위 : 출금 UPDATE문 + 입금 UPDATE문 이를 통틀어 하나의 트랜잭션이라고 한다. 위 두 쿼리문 모두 성공적으로 완료되어야만 "하나의 작업(트랜잭션)"이 완료되는 것이다. ->Commit 작업 단위에 속하는 쿼리 중 하나라도 실패하면 모든 쿼리문을 취소하고 이전 상태로 돌려놓는다.->Ro..
-
9.RedisComputer Science/Database 2022. 1. 7. 16:44
∙Redis ∘메모리 기반의 키-값 구조 비관계형 데이터베이스 -디스크가 아니라 메모리에 저장해서 디스크 스캐닝 없이 빠른 read, write 속도를 보장한다. -캐싱도 가능해 실시간 채팅에 적합하며 세션 공유를 위해 세션 클러스팅에도 활용된다. -캐싱: 처음 쿼리를 전송할 때는 데이터베이스에서 직접 가져오지만 두 번째 쿼리부터는 캐시에 저장된 데이터를 가져오는 기법 -클러스팅: 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하도록 만드는 기법 ○휘발성을 막기 위한 백업 과정 -스냅샷: 특정 지점을 설정하고 디스크에 백업하는 기법 -AOF(Append Only File): 쿼리들을 저장해두고 서버가 다운되면 재실행해서 다시 만들어 놓는 기법 ○value 5가지 ➀string(512MB까지 저장 가..
-
8.트랜잭션(Transaction) 격리 수준(Isolation level)Computer Science/Database 2022. 1. 7. 16:42
∙격리 수준 ∘트랜잭션에서 일관성 없는 데이터를 허용하도록 하는 수준 -무조건 locking으로 동시에 수행되는 수많은 트랜잭션들을 순서대로 처리하면 성능이 너무 저하된다. -데이터베이스는 어느 정도 트랜잭션이 독립적인 수행을 하도록 한다. -동시성을 증가시키면 데이터 무결성에 문제가 발생하고, 데이터 무결성을 유지하면 동시성이 떨어진다. ➀Read Uncommitted(레벨 0) -SELECT 문장이 수행되는 동안 해당 데이터에 shared lock이 걸리지 않는 계층 -트랜잭션에 처리중이거나 아직 commit 되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용함 -데이터베이스의 일관성 유지가 불가능하다. -사용자1이 A라는 데이터를 B라는 데이터로 변경하는 동안 사용자2는 아직 완료되지 않은(unco..