본문 바로가기
반응형

분류 전체보기75

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.
2025년 2분기 회고 자대 배치를 받은 이후, 군대에서의 생활에 대해 회고해보려 한다. 잘했던 것군대 안에서도 꾸준히 코딩 공부한 점 잘했다. 주변에서 쉬고 있어도, 나는 나만의 길을 간 것에 칭찬한다. 개인 프로젝트 진도 좀 나갔다.MVP는 배포된 상태이고, 이제 조금만 더 가다듬으면 될 것 같다. 글쓰기 스터디 2달째 하고 있는 점 잘했다. 덕분에 CS 지식에 디테일이 더해지고 있다. 앞으로도 지속해서 하고 싶다. 운동 꾸준히 한 점 너무 좋다. 운동능력 회복한 뿐만 아니라 상승시켰다. 군것질 줄인 점 굿!!! 아쉬웠던 것군 업무에서 실수가 좀 있었던 점 실수를 줄이기 위해서 도메인도 많이 관심을 가지려 노력해야겠다. 항상 리첵하는 습관을 지녀야겠다. 사소한 일에 일희일비했던 것 같다.기분이 오락가락 했던 적이 종종 있었.. 2025. 7. 8.
트랜잭션 제대로 알고 계신가요? 면접을 대비하거나, CS를 공부할 때 트랜잭션을 한 번쯤 접했을 것이다. 트랜잭션에 대해 피상적으로만 학습하고 넘어가는 경우가 많을 거라 생각한다. 이 글을 통해서 트랜잭션에 대해 더욱 깊게 이해했으면 한다. 이 글은 최대한 신뢰할 수 있는 내용으로 전달하려 노력했다.또, 직접 그린 그림으로 이해하기 쉽게 전달하려 했다. 이제 본격적으로 시작해보자! 📍 개요트랜잭션을 정립한 사람 트랜잭션은 여러 개발자들로부터 자연스럽게 발전한 개념이다. 이를 이론적으로 정립한 건 미국의 컴퓨터 과학자인 Jim Gray이다. 1992년에 『Transaction Processing: Concepts and Techniques』이라는 책을 출판했다. Jim Gray는 트랜잭션을 포함하여 데이터베이스에 기여한 공로.. 2025. 6. 25.
[Java] synchronized로 동시성 이슈 해결하는 원리 안녕하세요! NewCodes입니다! 최근에 Spring&Java로 과제테스트를 봤었다. 이때 동시성 이슈와 관련한 요구사항이 있었다. 하지만 평소에 동시성 이슈 해결에 관해서 Atomic한 접근 방법만 써봤었다.그래서인지 다양한 동시성 문제 해결 방법 중 해당 과제에서 적합한 방법을 잘 녹여내지 못했다. 이번을 계기로 Java에서 동시성 이슈를 해결하는 방법들이 어떤 게 있는지 알아보려한다!우선 첫 번째로 synchronized 키워드에 대해서 자세히 알아보자! 📍 용어 정리관련 용어부터 확실히 하고 들어가자! 동시성 (concurrency)하나의 시스템에서 여러 작업이 동시에 실행되는 것처럼 보이게 하는 개념주로 멀티스레드를 통해 동시성 높은 처리를 함동시성 이슈이러한 동시성으로 인해 생기는.. 2025. 6. 7.
AI 시대에서 개발자로서 살아남기 위한 고찰 (feat. 문제해결력) 안녕하세요! NewCodes입니다! 요새 AI의 발전이 너무 빠르다. 요새는 바이브 코딩이라는 새로운 패러다임이 생기기도 했다.이젠 자연어로도 코딩할 수 있는 시대이다. 솔직히 프로그래밍을 공부하고 있는 나의 입장으로서는이러한 발전이 신기하면서도, 마음이 살짝은 불편하다. 이렇게 AI가 잘하면 내가 지금 공부하는 게 의미가 있을까?미래에 대체될지도 모르는 직업에 괜히 시간을 쏟는 게 아닐까?하는 생각이 스멀스멀 올라오곤 한다. 그럴 때마다 저만의 합리화(?)로 이 생각을 누르곤 했다. 이제는 조금 더 확실하게 누르려고 이 글을 써본다. AI 시대의 개발자는 어떤 모습이어야 하는지,어떻게 살아남을 수 있는지를 정리해보고자 한다. 이 글을 쓰기 위해 한 달 전부터조금씩 자주 AI에 대한 생각을 정리하.. 2025. 5. 31.
동기 비동기 블로킹 논블로킹, 이 글 하나로 끝내자! 안녕하세요! NewCodes입니다! 프로그래밍을 배우다보면 꼭 마주치는 개념이 있죠! 바로 동기 / 비동기 / 블로킹 / 논블로킹입니다. 처음 접하면 너무 헷갈리고 어렵지만,이 글 하나로 명확하게 정리해드릴게요! 🔥 이를 잘 알아야컴퓨터 자원을 효율적으로 사용할 수 있고, 빠른 성능의 프로그램을 만들 수 있습니다. 읽고 나면Node.js, Spring Webflux, Redis, NginX등과 같은 기술을 더욱 잘 이해할 수 있게 되실 겁니다! 또, 효율적인 코드를 작성하는 데 도움이 되실 겁니다! 🎯 동기, 비동기, 블로킹, 논블로킹의 차이점'동기 비동기 블로킹 논블로킹' 해당 개념은 운영체제에서 비롯된 개념입니다. 느린 I/O를 어떻게 하면 최적화할 수 있을까를 고민한 결과의 산물입니다... 2025. 5. 24.
반응형