본문 바로가기

Computer Science16

Java로 알아보는 TCP Socket Programming 요약: Java를 통해 TCP Socket Programming을 점진적으로 구현하며 학습하는 글이다. 소켓 통신, 멀티 스레드의 활용, I/O Multiplexing, Reactor Pattern 등을 다룬다. 이를 통해 두 컴퓨터가 애플리케이션 수준에서 통신을 위해 어떤 과정을 거치는지 이해하고, 효율적인 I/O를 하는 방법을 고민할 수 있다. 네트워크에서 Socket Programming은 빠질 수 없다. Socket Programming을 본격적으로 하기 전에 기본 개념에 대해서 알아보자. 📍 개요Socket, IP 주소, PortSocket이란 두 컴퓨터가 통신하는 데 필요한 양 끝단의 통신 인터페이스이다. 이 Socket에는 두 가지 정보가 필수적으로 포함되어야 한다. IP 주소와 P.. 2025. 7. 23.
Index는 왜 빠를까? 백엔드 개발자라면 Index가 DB 조회 성능에 좋다는 건 익히 들어봤을 것이다. 이 글을 통해 왜 빠른지, 내부 구조는 어떻게 되어있는지 살펴보자. 🚀 Index의 효과index를 직접 써보며 그 효과부터 체감해보자. 준비실험 환경은 다음과 같다.하드웨어: Github Codespace (CPU 2개, RAM 8GB)데이터베이스: MySQL 8.0.42데이터: 부동산 테이블과 100만개의 레코드 아래와 같은 부동산 테이블을 준비했다. CREATE TABLE real_estate_transaction ( id BIGINT AUTO_INCREMENT PRIMARY KEY, -- 거래 데이터 ID transaction_type VARCHAR(20) NOT NULL, .. 2025. 7. 11.
트랜잭션 제대로 알고 계신가요? 면접을 대비하거나, CS를 공부할 때 트랜잭션을 한 번쯤 접했을 것이다. 트랜잭션에 대해 피상적으로만 학습하고 넘어가는 경우가 많을 거라 생각한다. 이 글을 통해서 트랜잭션에 대해 더욱 깊게 이해했으면 한다. 이 글은 최대한 신뢰할 수 있는 내용으로 전달하려 노력했다.또, 직접 그린 그림으로 이해하기 쉽게 전달하려 했다. 이제 본격적으로 시작해보자! 📍 개요트랜잭션을 정립한 사람 트랜잭션은 여러 개발자들로부터 자연스럽게 발전한 개념이다. 이를 이론적으로 정립한 건 미국의 컴퓨터 과학자인 Jim Gray이다. 1992년에 『Transaction Processing: Concepts and Techniques』이라는 책을 출판했다. Jim Gray는 트랜잭션을 포함하여 데이터베이스에 기여한 공로.. 2025. 6. 25.
동기 비동기 블로킹 논블로킹, 이 글 하나로 끝내자! 안녕하세요! NewCodes입니다! 프로그래밍을 배우다보면 꼭 마주치는 개념이 있죠! 바로 동기 / 비동기 / 블로킹 / 논블로킹입니다. 처음 접하면 너무 헷갈리고 어렵지만,이 글 하나로 명확하게 정리해드릴게요! 🔥 이를 잘 알아야컴퓨터 자원을 효율적으로 사용할 수 있고, 빠른 성능의 프로그램을 만들 수 있습니다. 읽고 나면Node.js, Spring Webflux, Redis, NginX등과 같은 기술을 더욱 잘 이해할 수 있게 되실 겁니다! 또, 효율적인 코드를 작성하는 데 도움이 되실 겁니다! 🎯 동기, 비동기, 블로킹, 논블로킹의 차이점'동기 비동기 블로킹 논블로킹' 해당 개념은 운영체제에서 비롯된 개념입니다. 느린 I/O를 어떻게 하면 최적화할 수 있을까를 고민한 결과의 산물입니다... 2025. 5. 24.
1초에 80,000번 Network I/O를 하면 생기는 병목을 분석해보자! 안녕하세요! NewCodes입니다! 저번 글에서 실시간 퀴즈 게임 프로젝트에 대해부하테스트와 성능최적화 글을 다루었습니다. Artillery를 통한 Socket.io 게임 서버 부하테스트 경험기실시간 게임 서버 성능 최적화 - 한 게임방에서 200명이 플레이?! 이번 글에서는 Network I/O가 어떻게 일어나는지고수준에서 저수준으로 깊게 파보려 합니다. 이번에는 병목의 원인으로 잡혔던 Network I/O에서 저수준에서 어떤 부분이 원인이었을지를 탐구해보겠습니다. 이를 통해 다음에 트래픽이 상승하여 서버에 부하가 생겼을 때,개선 방향은 무엇이 있을지 고민해보려 합니다. 이 글에서 다루고자 하는 내용Network I/O가 Node.js에서부터 시작해서 OS까지 이루어지는 과정 분석하기 I/O는 .. 2025. 1. 15.
프로그래머스 이모티콘 할인행사 - 자세한 풀이(Java) 🧩 문제 정보문제: https://school.programmers.co.kr/learn/courses/30/lessons/150368난이도: LV 2유형: 완전탐색, 백트랙킹NewCodes의 풀이스스로 풀었는가: O다시 풀어볼 문제인가: O풀이 시간: 60분제출 횟수: 1회선택 언어: Java풀이 환경: 프로그래머스 내 IDE📝 풀이 정보요구 사항 정리1. 최적해 우선순위: 가입자 수, 총판매액2. 사용자 n명, 이모티콘 m개3. 할인율: 10, 20, 30, 40 중 하나4. 구매 조건: 할인율 이상이어야 구매, 특정 금액 이상이면 플러스 가입5. 정답: 최적의 상황일 때 가입자 + 판매액 리턴  리팩토링한 코드 (정돈된 풀이)import java.util.*;class Solution { .. 2024. 6. 7.
프로그래머스 양궁대회 - 자세한 풀이 (Java) 🧩 양궁대회 - 문제 정보문제: https://school.programmers.co.kr/learn/courses/30/lessons/92342난이도: LV 2유형: 완전 탐색, 구현NewCodes의 풀이스스로 풀었는가: O다시 풀어볼 문제인가: O풀이 시간: 65분제출 횟수: 3회선택 언어: Java풀이 환경: 프로그래머스 내 IDE📝 풀이 정보요구 사항 정리라이언은 어피치보다 k 점수에 더 많은 화살을 맞혀야 k 점수를 가져갈 수 있다. 라이언이 어피치를 이기기 위해서는 어피치보다 최종 점수가 더 커야만 한다.가장 큰 점수차로 이길 수 있는 것 리턴한다.라이언 우승 방법 여러 개라면, 가장 낮은 점수를 더 많이 맞힌 경우 리턴한다.가장 낮은 점수에서 개수 같다면 그 다음 걸로 판단한다. 풀이 설.. 2024. 6. 7.
반응형