profile
구준희 하자

[Network] 4. Link Layer

network-layer 에서는 32bit의 IP 주소를 사용했지만, LAN에서 통신하기 위해서 물리적인 MAC address를 사용한다.MAC address는 NIC ROM(Network Interface Card)에 있고, 16진수의 48bit를 사용한다. e.g)

2022년 6월 29일
·
0개의 댓글

[Network] 3. Network Layer

Network Layer 네트워크 계층의 목적은 transport segment를 수신자에게 보내는 것이다. 데이터를 보낼 때 transport layer로부터 segment를 받아서 datagram으로 캡슐화를 한다. 모든 host, router에 network l

2022년 6월 27일
·
0개의 댓글

[Spring] Spring DB 접근 기초

TCP/IP를 사용해 DB와 커넥션을 연결한다.Server는 DB로 SQL을 전달하는데, DB마다 커넥션 연결/ SQL 통신 방법이 모두 다르다는데 문제가 있다. JDBC(Java Database Connectivity)는 자바에서 DB에 접속할 수 있도록 하는 자바

2022년 6월 21일
·
0개의 댓글

[Network] 2. Transport Layer

Transport services & protocols app process 간의 logical communication을 제공 delay 보장이나, minimum badnwidth 같은건 보장하지 못함 transport vs network layer network

2022년 6월 21일
·
0개의 댓글

[Network] 1. Application Layer

client-server architecture server always-on server 영구적인 IP를 가짐 data가 군집되어 있는 center client server와 소통, 서로 직접적으로 소통하지 않음 동적으로 IP를 할당받음 P2P

2022년 6월 18일
·
0개의 댓글

[Network] 0. 기본

Circuit switching 데이터를 보낼 때 전용 회선을 이용함 일정한 속도를 보장받을 수 있음 e.g) 1Mb/s link를 10명의 user에게 100kb/s로 나눔 FDM 주파수를 범위에 따라 독점적인 사용자를 정함 TDM 주파수를 시간으로 나눠서 독점적

2022년 6월 16일
·
0개의 댓글

85. 자바 직렬화의 대안을 찾으라

직렬화는 안전하지 않다. 신뢰할 수 없는 스트림을 역직렬화하면 원격 코드 실행, 서비스 거부 등의 공격으로 이어질 수 있다. 역직렬화 과정에서 호출되어서 위험한 동작을 수행하도록 하는 메서드를 가젯이라고 하는데 이런 가젯을 여러개 사용하는 것을 가젯 체인이라고 한다.

2022년 6월 10일
·
0개의 댓글

84. 프로그램의 동작을 스레드 스케줄러에 기대지 말라

여러 스레드가 실행 중이면 OS의 스레드 스케줄러가 어떤 스레드를 얼마나 오래 실행할 지를 결정한다. 정상적인 OS라면 이 작업을 공정하게 수행하지만 구체적인 스케줄링 정책은 OS마다 다를 수 있다. 따라서 잘 작성된 프로그램이라면 이 정책에 좌지우지돼서는 안 된다.정

2022년 6월 10일
·
0개의 댓글

[OS] 9. 가상 메모리와 페이지 교체

들어가며 물리적 메모리로의 주소 변환은 OS가 관여하지 않지만, 가상 메모리 기법은 전적으로 OS가 관여한다 Demand Paging 실제로 필요할 때(= 해당 페이지가 요청됐을 때) page를 메모리에 올리는 것 I/O 양 감소 memory 사용량 감

2022년 6월 7일
·
0개의 댓글

[OS] 8. 메모리 관리 기법

프로세스마다 독립적으로 가지는 주소 공간각 프로세스마다 0번지부터 시작CPU가 보는 주소는 logical address임 => 실행파일 안의 코드는 동일하기 때문에 CPU는 logical address를 봐야할 필요가 있음메모리에 실제 올라가는 위치가상 메모리의 논리적

2022년 6월 2일
·
0개의 댓글

83. 지연 초기화는 신중히 사용하라

지연 초기화란, 필드의 초기화 시점을 그 값이 처음 필요할 때까지 늦추는 기법이다. 그래서 값이 전혀 쓰이지 않는다면 초기화도 일어나지 않는다. 이 기법은 정적 필드, 인스턴스 필드 모두에 사용할 수 있다. 지연 초기화는 주로 최적화 용도로 쓰지만, 클래스와 인스턴스

2022년 6월 1일
·
0개의 댓글

82. 스레드 안전성 수준을 문서화하라

한 메서드를 여러 스레드가 호출했을 때 메서드가 어떻게 동작하느냐는 해당 클래스와 이를 사용하는 클라이언트 사이의 중요한 계약과도 같다. API 문서에서 언급이 없다면 사용자는 나름의 가정을 해야만 하고, 지나치게 동기화를 하거나 충분히 하지 못해 심각한 오류로 이어질

2022년 6월 1일
·
0개의 댓글

[OS] 7. 데드락

일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태Resource: HW, SW 등을 포함하는 개념I/O device, CPU cycle, memory space, semaphore 등등..데드락은 다음 4가지 조건을 모두 만족해야만 발생한다.Mutual

2022년 6월 1일
·
0개의 댓글

[OS] 6. 프로세스 동기화

Race Condition Storage Box를 공유하는 Execution Box가 여럿이면 Race Condition의 가능성이 있음 e.g) Memory CPU : MultiProcessor system e.g) Address Space Proc

2022년 5월 31일
·
0개의 댓글

[OS] 5. CPU 스케줄링

CPU 스케줄링 CPU는 I/O burst 와 CPU burst를 연속적으로 반복하게 된다. I/O burst: I/O 작업을 기다리는 시간 CPU burst: instruction 수행 시간 I/O burst 의 발생이 잦아지면서 CPU burst 가

2022년 5월 31일
·
0개의 댓글

[OS] 4. 프로세스 관리와 프로세스 간 협력

부모 프로세스(parent process)가 자식 프로세스(child process)를 생성함프로세스의 트리 형성프로세스는 자원을 필요로 함OS로부터 받음부모와 공유자원의 공유부모와 자식이 모든 자원을 공유하는 모델일부를 공유하는 모델전혀 공유하지 않는 모델수행(Exe

2022년 5월 29일
·
0개의 댓글

[OS] 3. 스레드

스레드는 CPU의 실행 단위가 여러개가 있는 경우 그 실행의 기본 단위를 말한다.하나의 프로세스에 여러 개의 CPU 수행 단위를 두고 있는 것을 스레드라고 말함.프로세스는 메모리에 독립적으로 할당받기 때문에 여러 개의 프로세스를 띄우면 메모리 공간이 낭비된다. 이러한

2022년 5월 29일
·
0개의 댓글

[OS] 2. 프로세스와 스케줄러

프로세스는 실행중인 프로그램을 말함프로세스의 문맥(context) : 프로세스의 상태, 시분할을 위해 프로세스의 상태를 파악하고 있어야 함코드의 어느부분까지 수행되었는가, 무슨 내용을 쌓아두고 있는가, 어떤 instruction까지 수행했는가CPU 수행 상태를 나타내는

2022년 5월 27일
·
0개의 댓글

[OS] 1. Overview

CPU : Memory의 instruction을 읽어서 처리하는 역할만 한다.register: Memory보다 빠른 저장공간을 가지고 있다.mode bit: instruction이 사용자 프로그램의 것인지 OS의 것인지를 구분하는데 사용된다.0 커널모드 : OS 코드

2022년 5월 27일
·
0개의 댓글

[JPA] Batch Insert

성능 향상을 위해서 Batch Insert를 도입했다. 그 과정을 정리하기 위해서 작성한다.Batch Insert는 여러 개의 Insert를 묶어서 하나의 트랜잭션으로 묶는 것을 말한다.JPA 에서는 내부적으로 쓰기 지연 SQL 저장소를 이용한다. 커밋을 하기 전까지

2022년 5월 25일
·
0개의 댓글