전체 글 76

[멋사 부트캠프] Day03 - WebSocket, redis

WebSocket웹에서는 보통 HTTP를 활용해 데이터를 주고 받는다. 하지만 실시간 요청을 처리할 때는 HTTP Polling이라는 방식으로 몇초마다 서버에 GET요청을 보내고 새로운 메시지가 있는지 확인하는 방식으로 실시간 요청을 처리했다. 이 방식은 간단하지만 - 클라이언트가 먼저 요청하지 않으면 응답을 받을 수 없다.- 요청마다 연결을 새로 맺고, 헤더가 매우 무겁다.- 불필요한 요청이 많아지고, 서버 리소스가 많이 낭비된다. 그래서 이러한 방식은 보완한것이 WebSocket방식(양방향 통신 프로토콜)이다.HTTP는 기본적으로 Request -> Response이라는 단방향 통신이지만, WebSocket은 한 번 연결하면 서버와 클라이언트가 자유롭게 메시지를 주고받을 수 있다. 실제로 WebSoc..

멋사 부트캠프 2025.06.20

[멋사 부트캠프] Day01 - 도커, 컨테이너 기술, 볼륨, 도커파일

도커(Docker)도커는 컨테이너라는 기술을 사용해서 애플리케이션을 언제 어디서나 같은 환경에서 배포하고 실행할 수 있게 해주는 도구이다. 컨테이너 기술한 pc에서 여러가지 프로젝트들을 실행할 때, 언어 등 환경이 다를 경우 컨테이너 기술을 사용하여 실행을 단일화 할 수 있다. 각 애플리케이션이 서로의 실행 환경에 영향을 받지 않고 독립적으로 실행할 수 있도록 하는 기술이다. 구성요소1. 이미지컨테이너를 어떻게 만들건지 명령하는 파일From openjdk:17-jdkWORKDIR /appCOPY ./app.jar /app/app.japCMD ["java", "-jar", "/app/app.jar"]2. 컨테이너 3. 레지스트리우리가 만든 이미지를 보관하는 공간Default는 private 4. Docke..

멋사 부트캠프 2025.06.17

[운영체제] 운영체제의 역할과 구조

운영체제(OS, Operation System)는 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스다. 한정된 메모리나 시스템 자원을 효율적으로 분배하는 역할을 한다. 운영체제의 역할과 구조운영체제의 역할1. CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리하다.2. 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리한다.3. 디스크 파일 관리 : 디스크 파일을 어떠한 방법으로 보관할지 관리한다.4. I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 구조받는 것을 관리한다. 운영체제의 구조 보통 인터페이스, 시스템콜, 커널, 드라이버 부분을 운영체제라고 지칭한다. 시..

OS 2025.06.15

[Network] 공인(Public) IP vs 사설(Private) IP

인터넷 상에서 어떤 네트워크의 IP 주소를 알려고 할 때, 많은 사람들이 IP주소는 하나라고 생각한다. 하지만 그런 생각과는 다르게 IP주소는 공인 IP와 사설 IP로 나뉜다. 그럼 두 IP주소는 다른점이 뭘까? 사용자가 어떤 브라우저에 접근 할 때 경로먼저 네이버의 도메인 주소(www.naver.com) 를 DNS(Domain Name System)가 IP 주소(예: 223.130.195.200)로 변환해준다.이 때, IP 주소가 공인 IP이다.우리가 집에서 쓰는 모든 기기들은 각각 사설 IP를 가지고 있고 모두 공유기(라우터)를 통해 인터넷에 접속한다. 이 때, 공유기로 들어오는 모든 요청은 외부로 나갈 때 공인 IP 주소를 갖고 나가지만 사설 IP를 기억해놨다가 응답이 돌아오면 그 사설 IP에 맞게..

Network 2025.06.14

[Network] ARP vs RARP

컴퓨터끼리 네트워크를 통해 통신할 때, 송신자와 수신자가 어떻게 서로를 알아보고 통신할까? 우리는 웹사이트에 접속할 때 www.google.com 처럼 도메인주소를 이용한다. 컴퓨터는 이걸 IP 주소로 바꾸고, 상대방과 통신을 시작한다. 그런데 여기서 IP주소만 가지고는 데이터가 실제로 도착하지 않는다. IP 주소? MAC 주소?IP 주소(Internet Protocol Address)는 인터넷에 연결된 장치를 식별하기 위한 주소이다. 이 IP주소를 알아도 데이터가 실제로 그 장치에 도달하지 않는데, 정확하게 그 장치에 데이터를 전달하기 위해서는 실제 장치의 물리적인 위치도 알아야 한다.그 주소를 바로 'MAC' 주소라고 한다. 그래서 우리는 IP 주소를 MAC 주소로 변경해주는 또는 MAC 주소를 IP..

Network 2025.06.13

[Network] TCP vs UDP 차이가 무엇일까?

네트워크 전송 계층 중 '전송 계층'에서 사용하는 프로토콜인 TCP와 UDP의 차이에 대해서 알아보자. '전송 계층'은 말그대로 송신자에서 수신자로 가는 데이터의 전송을 맡는 계층이다. 그 데이터를 보내기 위한 규약들이 존재하는데 그것들 중 하나가 TCP, UDP이다. 밑 사진은 OSI 7계층과 TCP/IP 4계층 사진이다.TCP(Transmission Controll Protocol)란?TCP는 인터넷에서 데이터를 메시지 형태로 안정적으로 전송시키는 프로토콜이다. 보통 TCP는 IP와 함께 사용하게 되는데 이 때, TCP는 데이터를 잘게 나누고, 추적하고, 순서대로 재조립하는 역할을 하고, IP는 데이터를 목적지까지 주소를 찾아 보내주는 역할을 하게된다. IP는 데이터를 목적지에 보내주는 역할만 하고..

Network 2025.06.11

[JAVA] 코드의 재사용을 상속(Inheritance)으로 모두 해결할 수 있을까?

프로젝트를 하다 보면, 반복되는 기능을 여러 클래스에서 재사용하고 싶을 때가 있다. 이럴 때 상속을 이용하면 재사용 가능하다. 상속(Inheritance)이란?상속(Inheritance)은 객체지향 프로그래밍의 개념 중 하나로, 기존 클래스의 기능을 자식 클래스가 물려받는 것을 말한다. 중복 코드를 줄이고, 공통 기능을 재사용하기 위한 수단이다.public class Animal { public void breathe() { System.out.println("숨을 쉰다"); }}public class Dog extends Animal { public void bark() { System.out.println("멍멍"); }}이렇게 자식 클래스인 Dog이 부..

JAVA 2025.06.11

[Interview Question] 선언형과 명령형 프로그래밍의 차이점은?

프로그래밍에는 "무엇을 해야 할지"만 말하는 방식과 "어떻게 해야 할지"까지 지시하는 방식이 있다. 바로 이 차이가 선언형(Declarative)과 명령형(Imperative) 프로그래밍의 차이이다. 선언형 프로그래밍이란?'선언형 프로그래밍' 은 "무엇을 할 것인지(What)"에 집중하는 프로그래밍 방식이다. 즉, "어떻게 처리할지(How)"는 신경 쓰지 않고, 원하는 결과만을 기술한다. 개발자가 결과를 선언하면 구체적인 처리방법은 언어나 라이브러리가 내부적으로 처리한다. 예시 코드List numbers = Arrays.asList(1, 2, 3, 4, 5, 6);List evenNumbers = numbers.stream() .filter(..

Interview Question 2025.06.10

[JAVA] 이터레이터 패턴(Iterator Pattern)이 없어도 될 것 같은데.. 왜 사용할까?

객체에 있는 자료구조를 접근할 때, 직접 객체에 접근하여 반복문을 사용하여 자료를 검색한다. 그럼 이터레이터 패턴을 사용해서 자료구조를 순회하는 이유는 무엇일까? 이터레이터 패턴(Iterator Pattern)이란?이터레이터 패턴은 컬렉션의 내부 구조를 노출하지 않고, 그 안의 요소를 순차적으로 접근할 수 있게 해주는 디자인 패턴이다. 컬렉션이 어떤 방식으로 데이터를 담고 있든, 우리는 그 구조를 몰라도 next() 함수로 다음 데이터를 알아 낼 수 있다. 구현// 집합 인터페이스interface Aggregate { Iterator createIterator();}// 이터레이터 인터페이스interface Iterator { boolean hasNext(); String next();}..

JAVA 2025.06.10

[JAVA] 프록시 패턴(Proxy Pattern)과 데코레이터 패턴(Decorator Pattern)

객체지향 설계에서 자주 등장하는 디자인 패턴 중 하나인 프록시(Proxy) 패턴과 데코레이터(Decorator) 패턴은 구조는 유사하지만 목적은 전혀 다른 패턴이다. 프록시 패턴이란?프록시(Proxy) 패턴은 실제 객체에 접근하기 전, 중간 객체를 통해 접근을 제어하는 패턴입니다. 이 중간 객체는 실제 객체와 동일한 인터페이스를 구현하며, 다음과 같은 용도로 활용된다.접근 제어 : 권한이 있는 사용자만 접근지연 로딩 : 실제 객체를 사용할 시점에 생성캐싱 : 동일 요청에 대해 미리 데이터를 준비해 놓고 빠른 응답로깅 : 호출 및 실행 내역 기록보안 : 요청 유효성 검사 등구현public interface Image { void display();}public class RealImage implem..

JAVA 2025.06.10