백엔드

백엔드/운영체제

[운영체제] 프로세스와 스레드

프로세스(Process) Process is a program in execution 프로세스란 실행 중에 있는 프로그램을 의미한다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 객체)이며 스케줄링의 대상이 되는 작업(task)과 같은 의미로 쓰인다. 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다. 특징 각 프로세스는 별도의 주소 공간에서 실행되며, 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. Code : 프로그램을 실행시키면 실행파일 내에 존재하는 명령어가 메모리상에 올라가야 프로그램을 동작시킬 수 있다. 이 명령어들을 위해..

백엔드/Java

[Java] 생성자에 매개변수가 많다면 빌더를 고려하라

점층적 생성자 패턴 정적 팩터리와 생성자에는 똑같은 제약이 하나 있다. 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 점이다. 프로그래머들은 이럴 때 점층적 생성자 패턴을 즐겨 사용했다. 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수를 2개까지 받는 생성자,.. 선택 매개변수를 전부 다 받는 생성자까지 늘려가는 방식이다. public class NutritionFacts { private final int servingSize; private final int servings; private final int calories; private final int fat; private final int sodium; private final int ca..

백엔드/Java

[Java] 생성자 대신 정적 팩터리 메서드를 고려하라

장점 이름을 가질 수 있다. 생성자에 넘기는 매개변수와 생성자 자체만으로는 반환될 객체의 특성을 제대로 설명하지 못한다. 반면 정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사할 수 있다. 예를 들어 생성자인 BigInteger(int, int, Random) 보다 정적 팩터리 메서드인 BigInteger.probablePrime이 `값이 소수인 BigInteger를 반환한다.` 는 의미가 더 와닿을 것이다. 하나의 시그니처로는 생성자를 하나만 만들 수 있다. public class Order { private boolean prime; private boolean urgent; private Product product; public Order(boolean prime, Product p..

백엔드/네트워크

[네트워크] HTTPS

HTTP HTTPS 차이점 HTTP는 암호화가 되지 않는 Plain Text를 전송하는 프로토콜이었기 때문에, HTTP로 비밀번호나 주민등록번호등을 주고받으면 제 3자가 정보를 조회할 수 있었다. 이 문제를 해결하기 위해 HTTPS가 등장하게 되었다. HTTPS는 SSL(Secure Socket) 인증서를 사용하는 HTTP이다. SSL(또는 TLS) 인증서는 일반 HTTP 요청 및 응답을 암호화합니다. 따라서 HTTPS는 HTTP보다 더 안전한 보안용 프로토콜이라고 할 수 있다. HTTP와 HTTPS의 유일한 차이점은 HTTPS를 사용한 웹 페이지를 통해 전송되는 모든 데이터는 추가적인 보안 계층이 있다. 이를 TLS(전송 계층 보안) 프로토콜이라고 한다. 모든 유형의 데이터는 변경되거나 손상될 수 없는..

백엔드/네트워크

[네트워크] HTTP

HTTP란? HTTP(Hyper Text Transfer Protocol)란 서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜이다. 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용한다. HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동된다. HTTP는 Stateless, Connectionless와 같은 특징을 갖고 있으며 Method, Path, Version, Headers, Body 등으로 구성된다. 무상태(Stateless) Stateful은 서버가 클라이언트의 이전 상태를 보존한다는 의미이다. 반대로 Stateless는 서버가 클라이언트의 이전 상태를 보존하지 않는다는 의미이다. 따라서 HTTP 는 어떤 클라이언트가 요청을 한 것인지 식별할 ..

백엔드/네트워크

[네트워크] HTTP/2

HTTP/2 이란? HTTP/2 이란 HTTP 2.0으로도 불리며, 월드 와이드 웹에서 쓰이는 HTTP 프로토콜의 두 번째 버전이다. SPDY에 기반하고 있으며, 국제 인터넷 표준화 기구(IETF)에서 개발되고 있다. IETF : 국제 인터넷 표준화 기구(Internet Engineering Task Force, IETF)는 인터넷의 운영, 관리, 개발에 대해 협의하고 프로토콜과 구조적인 사안들을 분석하는 인터넷 표준화 작업기구이다. HTTP/2는 기존 HTTP 1.1 버전의 성능 향상에 초점을 맞춘 프로토콜이다. 인터넷 프로토콜의 표준의 대체가 아닌 확장으로써, HTTP 1.1의 성능 저하 부분과 비효율 적인 것들을 개선되어 탄생한 것이 HTTP/2라고 생각하면 된다. HOLB(Head Of Line ..

백엔드/네트워크

[네트워크] OSI 7 Layer

OSI 7 Layer 란? 네트워크 프로토콜이 통신하는 구조를 7개의 계층으로 분리하여 각 계층 간 상호 작동하는 방식을 정해 놓은 것이다. OSI 7계층을 나눈 이유? 계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악할 수 있기 때문이다. 7단계 중 특정한 곳이 이상이 생기면 다른 단계의 장비 및 소프트웨어를 건드리지 않고도 이상이 생긴 단계만 고칠 수 있기 때문이다. 1계층 - 물리계층(Physical Layer) 이 계층에서는 단지 데이터를 전달만 할 뿐 전송하려는(또는 받으려는) 데이터가 무엇 인지, 어떤 에러가 있는지 등에는 전혀 신경 쓰지 않는다. 0과 1로 이루어진 전자 신호를 케이블로 전송할 수 있는 아날로그 신호로 변환하고 전송하는 역할을 한다. 2계층 - 데이터 링크 계층(Dat..

밝은별 개발자
'백엔드' 카테고리의 글 목록 (7 Page)