본문 바로가기

분류 전체보기846

TCP/IP TCP/IP 4계층이란? TCP/IP는 컴퓨터 네트워크에서 데이터 통신을 위한 프로토콜 집합으로, 이를 효율적으로 관리하기 위해 계층화된 구조인 4계층으로 나눈다. 계층화를 통해 유지보수를 용이하게 하고, 각 계층은 서로 독립적으로 동작하므로, 부분 업그레이드 및 교체가 가능하다. 애플리케이션 계층 OSI 7 계층에서 세션 계층, 표현 계층, 응용 계층이 해당된다. 사용자와 네트워크 간의 상호작용을 위한 프로토콜을 지원한다. 사용자 애플리케이션에 네트워크 서비스를 제공하고, 데이터의 형식, 보안, 암호화 등을 처리한다. HTTP, SMTP, FTP, DNS 등 프로토콜을 지원한다. 전송 계층 OSI 7계층에서 전송 계층이 해당된다. 통신 호스트 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당한다... 2023. 8. 23.
volatile volatile이란? volatile은 자바의 키워드 중 하나로, 변수 선언 시 사용되며, 해당 변수의 값을 메인 메모리에 직접 읽고 쓰도록 지정 하는 역할을 한다. 이는 다중 스레드 환경에서 변수의 값이 스레드 간에 정확하게 동기화되도록 보장하기 위해 사용된다. 하지만 동기화가 보장되는 것으로 인해 가시성 문제는 해결할 수 있지만, 동시 접근 문제는 해결할 수 없다. 왜 필요한가? volatile 키워드를 사용하면 변수를 항상 메인 메모리에 쓰기 및 읽기를 하므로, 다중 스레드 환경에서 값의 일관성과 가시성을 보장할 수 있다. 공유 변수나 상태 정보 등이 여러 스레드에 의해 접근되는 경우 사용한다. 가시성 보장 : 하나의 스레드에서 변경한 값을 다른 스레드에서 바로 읽을 수 있도록 한다. 순서 보장 :.. 2023. 8. 23.
Thread(Java/OS) 스레드란? 자바 프로그램을 실행하면 JVM 프로세스가 실행되고, JVM 프로세스 안에서 GC를 포함한 여러 개의 스레드가 실행된다. 각 스레드마다 Java Stack, PC, Native Method Stack 이 존재한다. 자바는 동일한 메모리를 읽지만 각각 작업을 수행하는 스레드들이 동시에 여러 작업을 수행한다. 스레드의 등장 배경 프로세스를 생성하려면 많은 시간과 자원이 필요하다. JVM은 벤더마다 다르지만 최소 32MB의 메모리가 필요하고, 스레드는 1MB 메모리가 필요하다. 그래서 스레드를 경량 프로세스라고도 부른다. 스레드의 종류 스레드에는 사용자 수준 스레드와 커널 수준 스레드가 있다. 사용자 수준 스레드는 사용자 라이브러리를 통해 사용자가 만든 스레드로, 스레드가 생성된 프로세스의 주소 공.. 2023. 8. 23.
동기식 vs 비동기식, Blocking vs Non-Blocking 동기 vs 비동기 동기/비동기는 작업 순서 처리 차이에 관점을 둡니다. 동기 작업은 요청한 작업에 대해 순서가 지켜지는 것을 말하고, 비동기 작업은 순서가 지켜지지 않을 수 있다는 것을 말합니다. 동기(Synchronous) 동기(Synchronous)는 작업이 순차적으로 진행되며, 한 작업이 시작되면 해당 작업이 완료될 때 까지 다음 작업이 대기합니다. 요청한 작업에 대해 완료 여부를 따져 순차적으로 처리합니다. 비동기(Asynchronous) 비동기(Asynchronous)는 작업의 완료를 기다리지 않고 다음 작업을 바로 실행할 수 있습니다. 요청한 작업에 대해 완료 여부를 따지지 않고 자신의 다음 작업을 그대로 수행합니다. I/O 작업 같은 느린 작업이 발생할 때, 기다리지 않고 다른 작업을 처리하.. 2023. 8. 23.
2023.08.22 TIL 네트워크 프로그래밍 사용자들이 바로 옆에 있는 장비와 데이터를 주고 받는 작업을 네트워킹 이라한다. 네트워킹인 레이어로 구분되어 있다. 애플리케이션 레이어 → 트랜스포트 레이어 → 인터넷 레이어 → 네트워크 인터페이스 레이어 애플리케이션 레이어 중 가장 대표적인 HTTP, FTP, Telnet들은 모두 TCP 통신을 한다. 자바에서 TCP 통신을 한다면, 자바에서 제공하는 API를 사용하면 된다. 애플리케이션 레이어에서 프로그래밍만 하면 트랜스포트 레이어에서의 처리는 자바에서 다 알아서 처리해준다. TCP, UDP TCP 통신은 연결 기반 프로토콜 이라 부른다. TCP는 데이터를 보내면 성공 여부를 알려준다. 즉, 상대방이 데이터를 받았는지 확실히 보장한다. UDP는 TCP와 다르게 성공 여부를 알지 못.. 2023. 8. 22.
SOLID 원칙, 객체지향 프로그래밍 SOLID 란? SOLID 원칙은 소프트웨어 디자인과 개발에서 지켜야 할 다섯 가지 원칙 입니다. 원칙들은 소프트웨어의 유연성, 확장성 및 유지보수성을 높이기 위해 고안되었고, 각 원칙은 객체 지향 프로그래밍(OOP)에 기반하며, 소프트웨어의 구조를 조직화하고 효율적인 코드를 작성하는데 도움을 줍니다. SRP 단일 책임 원칙(Single Responsibility Principle - SRP) 각 클래스는 단 하나의 책임을 가져야 한다는 원칙입니다. 클래스가 여러가지 역할을 수행하게 되면 코드의 가독성이 떨어지고, 유지보수가 어려워질 수 있습니다. OCP 개방/폐쇄 원칙(Open/Closed Principle - OCP) 기존의 코드를 변경하지 않으면서 확장할 수 있어야 합니다. 새로운 기능을 추가할 때.. 2023. 8. 22.