CS(8)
-
프로세스(Process)와 스레드(Thread)의 차이 및 개념 정리
컴퓨터 과학에서 프로세스는 실행 중인 프로그램의 인스턴스이고 스레드는 프로세스 내의 별도 실행 경로이다. 프로세스와 스레드는 모두 코드를 실행하고 작업을 수행하는 데 사용되지만 몇 가지 중요한 차이점이 있다. 리소스 소유권 (Resource ownership) 각 프로세스에는 프로세스가 소유하고 관리하는 메모리, 파일 핸들 및 열린 소켓과 같은 고유한 리소스 세트가 있다. 반면 스레드는 상위 프로세스의 리소스를 공유하는 경량 실행 경로이다. 메모리 관리 (Memory management) 프로세스에는 다른 프로세스로부터 보호되는 별도의 메모리 공간이 있다. 이는 각 프로세스가 실행 중인 데이터 및 코드의 별도 사본을 가지고 있음을 의미한다. 반면 스레드는 상위 프로세스의 메모리 공간을 공유하므로 상위 프..
2022.12.31 -
Base64 인코딩이란?
Base64 인코딩은 ASCII(정보 교환을 위한 미국 표준 코드) 형식으로 이미지 또는 기타 파일 유형과 같은 이진 데이터를 나타내는 방법이다. ASCII 데이터는 많은 시스템에서 쉽게 전송하거나 저장할 수 있으므로 인터넷을 통해 바이너리 데이터를 전송하거나 텍스트 파일에 저장하는 데 일반적으로 사용된다. Base64 인코딩에서 이진 데이터는 먼저 6비트 블록으로 분할되고 각 블록은 고유한 ASCII 문자로 표시된다. 이 표현에 사용할 수 있는 문자는 64개이며, 이것이 인코딩을 "Base64"라고 하는 이유이다. Base64 인코딩에 사용되는 문자에는 대문자와 소문자, 숫자 및 일부 특수 문자가 포함된다. 다음은 Base64 인코딩 작동 방식의 예다. 다음과 같은 이진 데이터가 있다고 가정하자면 01..
2022.12.30 -
TCP vs UDP & TCP 3-way handshake
TCP vs UDP TCP(Transmission Control Protocol: 전송 제어 프로토콜) 및 UDP(User Datagram Protocol: 사용자 데이터그램 프로토콜)는 네트워크를 통해 데이터를 전송하는 데 사용되는 두 가지 일반적인 프로토콜이다. 둘 다 인터넷 프로토콜 스택의 전송 계층에 속하며 장치 간의 종단 간 통신 설정을 담당한다. 그러나 다음과 같은 몇 가지 주요 차이점이 있다. 연결 지향 vs 비연결 (Connection-oriented vs Connectionless) TCP는 연결 지향 프로토콜이다. 즉, 데이터를 전송하기 전에 두 장치 간에 안정적인 연결을 설정한다. 여기에는 연결을 설정하기 위한 3방향 핸드셰이크(3-way handshake) 프로세스와 신뢰할 수 있는..
2022.12.29 -
HTTPS를 사용하는 것이 중요한 이유와 주요 이점
HTTPS란? HTTPS(Hypertext Transfer Protocol Secure)는 인터넷을 통해 데이터를 전송하는 데 사용되는 HTTP(Hypertext Transfer Protocol)의 보안 버전이다. HTTPS는 중간자 공격, 데이터 스누핑 및 기타 유형의 사이버 위협으로부터 보호하기 위해 추가 보안 계층을 제공한다. 이 글에서는 HTTPS가 HTTP보다 어떻게 안전한지, 그리고 가능한 HTTPS를 사용하는 것이 중요한 이유와 주요 이점에 대해 알아보자. HTTPS와 HTTP의 차이 HTTPS와 HTTP의 주요 차이점 중 하나는 HTTPS가 웹 서버와 클라이언트 간에 전송되는 데이터를 암호화한다는 것이다. 이는 로그인 자격 증명, 신용 카드 번호 또는 개인 정보와 같이 HTTPS를 통해 전..
2022.12.28 -
Clean Code 작성하기 - 관심사 분리
좋은 코드를 쓰는 것보다 나쁜 코드를 쓰지 않는 것이 중요하다. 왜냐하면 코드는 결국 소프트웨어를 이루는 근간이기 때문이다. 소프트웨어가 나쁜 코드로 구성되어 있으면 결국 해당 소프트웨어는 망가진다. 망가진다는 말은 더 이상 기능을 확장하거나 수정할 수 없게 된다는 의미다. 간혹 개발자들은 당장의 기능 구현이 급해서 좋은 코드를 포기하고자 하는 상황이 생긴다. 그리고 그 결정은 대부분 안 좋은 결과로 이어지게 된다. 실제로 프로그램의 복잡도가 올라갈수록 코드 한 줄을 입력하거나 수정하는데 드는 시간은 점점 늘어난다. 시간을 아끼기 위해서 좋은 코드를 포기했는데 결국 더 많은 시간을 들이게 되는 경우는 드문 일이 아니다. 그리고 대부분의 경우 기능 구현이 급해서 시간을 아끼기 위해서 좋은 코드를 포기하기보..
2022.11.01 -
[네트워크] OSI 7 계층 - 기본 개념 정리
개념 OSI 7 계층은 네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 정의 OSI 모형(Open Systems Interconnection Reference Model)이라고도 한다. 국제표준화기구(ISO)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 이는 (통신에 관련된) 기반 기술로부터 독립적으로 네트워킹 또는 통신 시스템의 기능을 설명하는 개념적 프레임워크이다. 데이터 통신을 7개의 추상적인 계층으로 분리하고, 프로토콜을 네트워킹 기능으로 적절히 묶어 표준화하였다. 이를 통해 기술 유형, 벤더, 모델에 상관 없이 통신 시스템에서 상호 운용성을 보장한다. OSI 7 계층은 원래 벤더 간의 상호 운용성을 촉진하고, 네트워크 통신을 위한 ..
2022.09.24 -
컴퓨터 구조 - 기억장치와 입출력 장치
기억장치 기억장치의 개념 기억장치의 기능과 분류 기능 : 컴퓨터에서 사용하는 모든 프로그램이나 자료를 기억시킨다 분류 : 주기억장치, 보조기억장치, 레지스터, 캐시 기억장치의 계층구조 : 처리속도는 레지스터 > 캐시 > 주기억장치 > 보조기억장치 순이다 기억장치의 특징 : 주기억장치(동적 RAM), 캐시 기억장치(정적 RAM), 보조기억장치(하드디스크, SSD) 주기억장치 정의 : 중앙처리장치와의 정보 교환을 위해 프로그램과 데이터를 일시적으로 기억하는 장치 구성 : 프로그램 기억 장소, 작업 장소, 입력 데이터 기억 장소, 출력 데이터 기억 장소 특성 : 집적회로, 속도가 빠르고 전력 소모가 작음, 대량생산 ROM : 데이터를 임의로 기억시킬 수 없는 읽기 전용의 비휘발성 기억장치 ROM의 종류 : M..
2022.09.22