• ABOUT
  • POSTS
  • GUESTBOOK

© 2025 BlueCool12 All rights reserved.

ALL

  • Backend
    • Java
    • Spring
    • JPA
  • Frontend
    • React
    • Next.js
  • DevOps
    • Linux
  • CS
    • 자료구조
    • Network
  • Dev
    • Tips
    • 트러블슈팅
  • 🧑‍🔧 Lombok의 생성자 어노테이션

    Spring

    Lombok에는 생성자 관련 어노테이션이 대표적으로 3가지가 있다. @NoArgsConstructor @AllArgsConstructor @RequiredArgsConstructor 각각에 대해 명확하게 알아보자! 1. @NoArgsConstructor 첫 번째로 @NoArgsConstructor 어노테이션의 경우 매개변수가 없는 기본 생성자를 만들어 준다. 예를 들어 이런 클래스가 있을 때 @NoArgsConstructorpublic clas

    2026.01.10
  • 💉 Spring으로 알아보는 의존성 주입(DI)

    Spring

    프레임워크를 사용하다 보면 자연스럽게 쓰게 되지만 막상 DI가 무엇인지 명확히 설명하기 애매한 경우도 많다. 이번 글에서는 DI가 무엇인지, 왜 쓰는지, 그리고 실제 코드에서는 어떻게 사용되는지 알아보자. DI(Dependency Injection)란? 필요한 객체를 내가 직접 new 하지 않고 외부에서 넣어 주도록 만드는 것을 의미한다. 예를 들어 A 클래스에서 B 클래스를 필요로 할 때 A 클래스 내부에서 new 키워드를 사용하여 직접 생성

    2025.12.09
  • 🔤 Java의 String이 특별한 이유 - String의 핵심 특징 3가지

    Java

    자바에서 String은 가장 많이 사용하는 타입 중 하나이다. 단순히 문자열 타입이라고 생각하기 쉽지만 사실 String은 Java 언어 전체에서 특별하게 취급되는 객체이다. primitive 타입은 아니지만 일반 객체처럼 동작하지도 않는다. 내부적으로 별도의 관리 전략을 가지고 있기 때문이다. Java의 String이 왜 특별한지 핵심 특징을 중심으로 살펴보자. 1) 불변성(Immutable) 첫 번째 특징은 String은 불변이라는 점이다

    2025.11.08
  • 🔗 자바의 객체 비교 - equals()와 hashCode()를 함께 재정의해야 하는 이유

    Java

    equals() 자바의 equals() 메서드는 두 객체가 논리적으로 같은지 비교할 때 사용하는 메서드이다. 이때 “같다”의 기준은 단순히 같은 메모리 주소를 가리키는지를 의미하는 것이 아닌 객체의 내부 값이 동일한지(논리적 동등성)를 의미한다. String a = new String("BlueCool"); String b = new String("BlueCool"); System.out.println(a == b); // fals

    2025.10.26
  • ⚙️ 운영 환경까지 고려한 JPA 설정 가이드

    JPA

    1) 기본 설정 JPA 구동을 위한 가장 기본적인 설정 예시 spring: datasource: url: jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME} username: ${DB_USERNAME} password: ${DB_PASSWORD} driver-class-name: org.postgresql.Driver jpa: hibernate:

    2025.09.29
  • ⏱️ useEffect vs useLayoutEffect 완벽 정리 - 실행 시점과 사용법

    React

    리액트는 컴포넌트 렌더링 과정에서 발생하는 부수 효과(side effect)를 처리하기 위해 useEffect 와 useLayoutEffect 훅을 제공한다. 둘 다 렌더링 이후에 실행되지만 실행 시점과 사용 목적에서 차이가 있다. 1) useEffect - 렌더링 결과가 실제 DOM에 반영되고 브라우저가 화면을 그린 이후 실행된다. - 실행이 비동기적으로 예약되기 때문에 렌더링 과정을 막지 않고 UI가 먼저 사용자에게 보인다. 2) useL

    2025.09.24
  • 💻 DNS부터 렌더링까지: 웹페이지가 열리는 과정

    Network

    브라우저에 www.pyomin.com을 입력하면… 브라우저 주소창에 www.pyomin.com을 입력하고 엔터를 치면 단순히 페이지가 열리는 것 같지만 그 뒤에서는 복잡한 과정이 순식간에 일어난다. 그 과정을 한 단계씩 따라가 보자. 1. DNS 조회 컴퓨터는 www.pyomin.com 같은 도메인을 직접 이해하지 못한다. IP 주소로 통신하기 때문인데 따라서 먼저 DNS(Domain Name System) 조회가 일어난다. 브라우저는 OS에

    2025.09.21
  • 📡 인터넷 통신의 핵심 - TCP, IP 그리고 UDP 이해하기

    Network

    TCP와 IP? 우리가 매일 사용하는 웹사이트, 이메일 전송, 파일 다운로드 등은 모두 TCP와 IP라는 두 가지 핵심 기술 덕분에 가능하다. 이 둘은 마치 택배를 보낼 때 주소와 배달 서비스 역할을 담당하는 것과 같다. IP - 인터넷의 주소 체계IP(Internet Protocol)는 쉽게 인터넷상의 주소이다. 전 세계 모든 컴퓨터나 장치는 고유한 IP 주소를 가지고 있다. 마치 배달을 받기 위해 집 주소가 필요하듯 IP 주소는 데이터 패

    2025.09.18
  • 🐞 CI/CD 오류: GHCR을 이용한 GitHub Actions 최적화 배포

    트러블슈팅

    [문제 요약] 증상: GitHub Actions를 통한 배포 중 Connection timeout 발생원인: 프로젝트 규모 증가로 홈서버에서 직접 Docker 빌드가 오래 걸려 SSH 세션/작업 제한 시간을 초과해결: GitHub Actions에서 GHCR(GitHub Container Registry)로 이미지를 빌드·푸시, 서버는 이미지 pull 후 재배포 기존에 사용하던 GitHub Actions 구성은 다음과 같았다. name: De

    2025.09.17
  • 🔐 chown·chmod로 배우는 리눅스 파일 권한 관리

    Linux

    리눅스의 권한 관리는 사용자(User)와 그룹(Group)을 기반으로 동작한다. *Ubuntu/Debian 기준 sudo adduser 유저명 명령어는 사용자를 생성하는 명령어이다. 비밀번호를 설정하고 Full Name / Room / Phone / Other 같은 사용자 정보(GECOS)를 입력한다. (사용자 정보는 생략도 가능) 현재 로그인 되어있는 계정의 정보를 확인하기 위해서는 다음과 같은 명령어를 사용하면 된다. *sudo 권한

    2025.09.16