
Java에서 객체를 복사하는 방법에는 2가지 방식이 있다. 하나는 “얕은 복사”, 다른 하나는 “깊은 복사” 이다. 이에 알아보기 앞서, Book과 Author라는 클래스를 사용한 예제를 통해 알아보자. 🍛 얕은 복사 얕은 복사는 객체의 필드 값만 그대로 복사 하는 방식이다. 즉, 기본 타입은 값 복사, 참조 타입은 주소(참조)만 복사...

📦 TCP (Transmission Control Protocol) TCP는 전송 계층(Transport Layer)의 대표적인 프로토콜로, 데이터를 신뢰성 있게, 순서대로, 오류 없이 전달하는 것을 목표로 한다. ✅ TCP의 3가지 핵심 특징 연결지향(Connection-Oriented): TCP는 데이터를 보내기 전에 먼저 연결부터...

프로그래밍에서 한 번쯤은 들어봤을 용어들, Blocking / Non-Blocking / Synchronous / Asynchronous. 처음엔 헷갈릴 수 있다. "동기? 비동기? 블로킹? 안 기다리는 건가?" 헷갈리기 쉬운 이 개념들, "제어권" 과 "시간" 이라는 두 키워드를 통해 확실하게 구분해보자. 🚦 Blocking vs No...


🚴♀️프로그램이 실행 중인 상태, 프로세스 (Process) 프로그램이란 쉽게 “어떤 일을 수행하기 위해 만들어진 명령 모음” 이라고 생각하면 된다. 프로그램을 다른 관점에서 이야기하면 명령의 모음이 파일로 빌드되어 보조 기억 장치(여러 가지 음식 재료가 냉장고 안)에 저장되어 있는 정적인 상태라고 할 수 있다. 우리가 프로그램 실행 명령을 내리면 ...

🧃 데이터 받아오기 예를들어 사용자가 www.google.com을 입력하면, 브라우저는 HTTP 프로토콜을 사용해 구글 웹 서버와 통신하려고 한다. HTTP는 OSI 7계층 중 애플리케이션 계층에서 동작하는 프로토콜이다. 이때 브라우저는 요청한 도메인 이름(www.google.com)에 대한 IP 주소를 알아야 하기 때문에… 먼저 로컬 DNS 캐시를 ...

💎 멱등성 (Idempotency) “멱등성” 이란 연산을 반복적으로 적용해도 변하지 않는 성질을 말한다. 컴퓨터 과학에서 “멱등하다” 는 의미는, 첫 번째 수행을 한 뒤 여러 차례 적용해도 결과를 변경시키지 않는 작업 또는 기능의 속성을 말한다. 예를 들어, 어떤 숫자에 1을 곱하는 연산은 여러 번 수행해도 처음 1을 곱한 것과 같은 숫자가 되기 때...

🚫 CORS란? CORS(Cross-Origin Resource Sharing)는 출처가 다른 곳의 리소스를 요청할 때 접근 권한을 부여하는 메커니즘이다. 프론트엔드 프로젝트를 하다 보면 자주 마주치는, 보기만 해도 화가 나는 오류다. ❓ 왜 이런 오류가 발생할까? 결론만 말하자면, 브라우저가 내 서버가 아닌 다른 서버의 리소스를 요청했기 때문이다....

🤔 프록시란? 프록시(Proxy)는 “대리인” 이라는 뜻으로, 사용자와 인터넷 사이에서 중계 역할을 하는 서버 또는 시스템 을 말한다. 즉, 사용자가 직접 목적지 서버에 접속하는 것이 아닌, 프록시 서버를 통해 간접적으로 접속하게 된다. 예를 들어, 사용자가 웹사이트를 보려고 하면, 프록시가 대신 그 웹사이트에 요청을 보내고, 응답을 받아서 사용자에게...

객체지향을 공부하다 보면 한 번씩은 듣게 되는 SOLID 원칙은 객체지향 설계 5원칙이라고도 불리며, 각 원칙의 앞 글자를 따서 만들어졌다. 객체지향 설계의 핵심 중 하나는 의존성을 관리하는 것인데, 의존성을 잘 관리하기 위해서는 SOLID 원칙을 준수해야 한다. ⛳️ 단일 책임의 원칙(Single Responsibilty Principle) > 객체는...

어느 한 온라인 쇼핑몰을 예로 들어보자. 세일 기간이나 특정 이벤트를 진행하면 사용자 트래픽이 어마어마하게 많아질 것이다. 과연 이러한 많은 트래픽 처리량을 달성하는 서비스는 얼마나 될까? 웬만한 서비스는 약간의 트래픽만 들어와도 CPU 처리량이 초과되고, 응답 시간은 계속해서 늘어난다. 어떻게 하면 성능을 개선할 수 있을까? 이에 대한 답으로 “캐싱 전...