본문 바로가기

분류 전체보기837

동기식 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.
2023.08.21 TIL Network 이더넷, 무선 LAN(Wi-Fi) 주위에 있는 PC나 스마트폰 등은 서버의 애플리케이션과 서로 데이터를 주고 받는다. 서버는 PC나 스마트폰과는 멀리 떨어진 네트워크에 접속 되어 있다. 기술적인 관점에서 생각하면, ‘네트워크’는 라우터 또는 레이어 3 스위치로 구획되는 범위이다. 네트워크의 기본적인 구성은 레이어 2 스위치로 하나의 네트워크를 구성하고, 라우터 또는 레이어 3 스위치로 각 네트워크를 서로 연결한다. 다른 네트워크에 접속된 서버까지의 데이터 전송은 같은 네트워크 내의 전송을 반복해서 실현된다. PC에서 서버로 가는 데이터는 우선 PC와 같은 네트워크 상에 있는 라우터로 전송되고, 라우터는 다시 같은 네트워크 상의 다음 라우터로 전송된다. 그렇게 해서 목적지 네트워크 상의 라우.. 2023. 8. 21.
2023.08.20 TIL Java I/O I/O는 Input, Output의 약자로 입력과 출력을 통칭하는 용어이다. JVM을 기준으로 읽을때는 Input, 파일을 쓰거나 외부로 전송할 때는 Output 이라한다. 자바는 바이트 기반의 데이터를 처리하기 위해 스트림을 제공하고, I/O 처리를 한다. 바이트가 아닌, char 기반의 문자열로만 되어 있는 파일은 Reader와 Writer 라는 클래스로 처리한다. JDK 1.4부터 NIO가 추가되어서 스트림 기반이 아니라, 버퍼와 채널 기반으로 데이터를 처리한다. 스트림 자바에서 스트림은 끊기지 않고 연속적인 데이터를 말한다. File java.io.File 클래스는 파일만 가리키는 것이 아닌 파일의 경로도 포함한다. File 클래스는 심볼릭 링크와 같은 유닉스 계열의 파일에서 사용.. 2023. 8. 21.
백준 1700 1700번: 멀티탭 스케줄링 문제 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전기용품의 플러그를 뺐다 꽂았다 하는 불편함을 겪고 있다. 그래서 준규는 자신의 생활 패턴을 분석하여, 자기가 사용하고 있는 전기용품의 사용순서를 알아내었고, 이를 기반으로 플러그를 빼는 횟수를 최소화하는 방법을 고안하여 보다 쾌적한 생활환경을 만들려고 한다. 예를 들어 3 구(구멍이 세 개 달린) 멀티탭을 쓸 때, 전기용품의 사용 순서가 아래와 같이 주어진다면, 키보드 헤어드라이기 핸드폰 충전기 디지털 카메라 충전기 키보드 헤어드라이기 키보드, 헤어드라이기, 핸드폰 충전기의 플러그를 순.. 2023. 8. 21.