728x90

분류 전체보기 568

Builder 와 Record 비교

자바에서 객체를 생성하고 데이터를 다루는 방식은 크게 Builder 패턴과 **Record(레코드)**로 나뉩니다. 두 기능은 목적과 사용 사례가 다르기 때문에 상황에 맞춰 선택하는 것이 중요합니다.1. Builder 패턴 (Lombok @Builder)Builder 패턴은 복잡한 객체를 안전하고 편리하게 생성하기 위해 사용됩니다. 주로 계층이 있고 필드가 많은 클래스에 적합합니다.특징가독성: 필드가 많을 때 어떤 값이 어떤 필드에 들어가는지 명확히 알 수 있습니다.선택적 매개변수: 모든 필드를 채울 필요 없이 필요한 값만 세팅할 수 있습니다.불변성 유지: 객체 생성 후 값을 바꿀 수 없도록(Setter 없음) 설계하기 좋습니다.코드 예시 Java@Builder@Getterpublic class User..

IT/프로그래밍 2026.03.29

Filter ,Interceptor , AOP

Spring Boot에서 클라이언트의 요청이 비즈니스 로직(Service)에 도달하기까지의 흐름은 계층별로 명확히 구분됩니다. 요청은 외곽(Servlet Container)에서 시작하여 중심(AOP)으로 들어가는 구조입니다.1. 요청 처리 흐름 도식화클라이언트의 요청이 들어오고 나가는 전체적인 흐름은 아래와 같습니다.순서구성 요소소속 레이어특징1Filter (필터)Web ContainerDispatcherServlet 도달 전/후 동작2Interceptor (인터셉터)Spring ContextDispatcherServlet과 Controller 사이 동작3AOP (Aspect)Spring ContextProxy를 통해 비즈니스 로직 전/후 동작2. 단계별 상세 비교 표각 기술이 실행되는 시점과 주요 목적..

IT/프로그래밍 2026.03.28

산소미포함 씨근풀 냉각 정리

산소 미포함(Oxygen Not Included)에서 씨근풀 냉각 효율산소 미포함에서 초중반 온도 관리는 생존에 직결되는 중요한 요소입니다.그중 **씨근풀(Weezewort)**은 전력 없이 작동하는 식물형 냉각 장치로, 많은 플레이어들이 애용합니다.그런데 왜 씨근풀은 수소 환경에서 가장 효율적일까요? 그 이유는 바로 **비열(Specific Heat Capacity)**에 있습니다.🔧 씨근풀의 냉각 메커니즘씨근풀은 아래 칸의 기체 1000g을 흡입한 뒤,그 기체를 정확히 5℃ 낮춰서 위 칸으로 배출합니다.따라서 어떤 기체를 흡입하느냐에 따라 **냉각되는 열량(Heat Deletion)**이 달라집니다.🌡️ 비열(Specific Heat Capacity)란?비열은 물질 1kg의 온도를 1℃ 올리는 데..

게임/스팀게임 2026.02.20

[JPA/Hibernate] IN 절 파라미터 패딩(Parameter Padding)

JPA를 사용하다 보면 로그에 실제 전달한 리스트는 152개인데, SQL 바인딩 시점에는 255개(혹은 256개)까지 늘어나 마지막 값이 반복해서 들어가는 현상을 볼 수 있습니다. 이는 `type.descriptor.sql.BasicBinder`가 수행하는 IN Clause Parameter Padding 때문입니다. 이 현상의 원인과 해결 방법을 정리합니다. --- 1. 왜 255개까지 늘어나는 걸까? (원인) Hibernate는 성능 최적화를 위해 IN 절에 전달된 인자의 개수를 2의 거듭제곱(2, 4, 8, 16 ... 256) 단위로 맞추는 패딩 전략을 사용합니다. * 이유: DB의 Execution Plan(실행 계획) 재사용성 때문입니다. * 상세: 인자 개수가 152개일 때와 153개일 때..

IT/프로그래밍 2026.02.06

@Transactional의 동작

@Transactional(rollbackFor = Exception.class)🔹 기본 동작@Transactional은 기본적으로 RuntimeException과 Error가 발생하면 롤백합니다.즉, 체크 예외(Exception의 하위 클래스지만 RuntimeException이 아닌 것들)는 기본적으로 롤백 대상이 아닙니다.🔹 rollbackFor 옵션의 의미rollbackFor = Exception.class라고 지정하면, 체크 예외까지 포함해서 모든 예외가 발생하면 롤백하도록 강제합니다.기본값이 "모든 예외 롤백"이 아니라 "런타임 예외만 롤백"이기 때문에, 위처럼 명시적으로 지정하는 경우가 많습니다.🔹 왜 이렇게 쓰는가?비즈니스 로직에서 IOException, SQLException 같은 체..

IT/프로그래밍 2025.12.13

대규모 트래픽을 효율적으로 처리하기 위해 어떤 접근과 기술을 사용할 수 있나요?

📝 면접 질문"Java 웹 애플리케이션에서 대규모 트래픽을 효율적으로 처리하기 위해 어떤 아키텍처적 접근과 기술을 사용할 수 있나요?"💡 모범 답변스케일 아웃(Scale-out) 구조단일 서버 성능 향상보다 로드 밸런싱을 통한 서버 확장 방식을 선호합니다.Nginx, HAProxy 같은 로드 밸런서를 활용해 트래픽을 분산합니다.비동기 처리와 메시지 큐대량 요청을 동기적으로 처리하면 병목이 발생합니다.Kafka, RabbitMQ 같은 메시지 큐를 사용해 비동기 이벤트 기반 아키텍처를 구축합니다.캐싱 전략DB 부하를 줄이기 위해 Redis, Memcached 같은 인메모리 캐시를 적극 활용합니다.정적 리소스는 CDN을 통해 제공하여 서버 부담을 줄입니다.데이터베이스 최적화읽기/쓰기 분리(Replicati..

IT/개발자 면접 2025.12.10

SLOW SQL 수정할 때 고려사항

SLOW SQL 튜닝 시 가장 중요한 고려사항은 실행계획 분석, 인덱스 활용, SELECT 범위 최소화입니다. 이 세 가지가 성능 개선의 핵심이며, 그 외에도 조인 방식, 정렬/집계 처리, 통계 정보 최신화 등이 중요합니다.🚀 SLOW SQL 튜닝 핵심 고려사항 (중요도 순)1️⃣ 실행계획(Execution Plan) 분석가장 중요한 첫 단계: DB가 쿼리를 어떻게 수행하는지 확인확인 항목: 인덱스 사용 여부, 테이블 스캔 방식, 조인 순서, 예상 비용(Cost)도구: EXPLAIN, AUTOTRACE, SQL PLAN 등2️⃣ 인덱스 활용 여부WHERE 절, JOIN 조건에 인덱스 컬럼 사용 여부 확인주의: 함수 사용, 형 변환, OR 조건 등은 인덱스를 무효화할 수 있음대응: 인덱스 설계 최적화, ..

IT/개발자 면접 2025.11.22

java Call by Value와 Call by Reference

자바에서 Call by Value(값에 의한 호출)와 Call by Reference(참조에 의한 호출)의 차이는 '무엇이 전달되는가'에 있습니다. 자바는 기본적으로 Call by Value만 지원합니다.🔍 핵심 차이 요약항목 Call by Value (값에 의한 호출) Call by Reference (참조에 의한 호출)전달 방식변수의 값을 복사해서 전달변수의 *주소(참조)*를 전달원본 데이터 영향메서드 내에서 변경해도 원본에 영향 없음메서드 내에서 변경 시 원본 데이터도 변경됨자바에서의 지원✅ 기본형(primitive type)에 적용됨❌ 자바는 엄밀히 말해 Call by Reference를 지원하지 않음객체 전달 시객체의 참조값이 복사되어 전달됨 → 객체 내부는 변경 가능참조 자체를 바꾸는 건 불..

IT/개발자 면접 2025.11.21

웹 서버 취약점 목록 및 요약

웹 서버 취약점은 해커가 시스템을 침해하거나 정보를 탈취할 수 있는 보안상의 약점입니다. 주요 취약점은 OWASP Top 10과 일반적인 서버 취약점으로 나뉘며, 각각에 대한 이해와 대응이 필수입니다.🔐 대표적인 웹 서버 취약점 목록 및 요약✅ OWASP Top 10 기반 주요 취약점OWASP(Open Web Application Security Project)는 웹 보안의 표준 가이드라인을 제공합니다:Broken Access Control (접근 제어 실패)권한 없는 사용자가 관리자 기능에 접근 가능대응: 역할 기반 접근 제어(RBAC), 서버 측 권한 검증Cryptographic Failures (암호화 실패)민감 정보가 평문으로 저장되거나 전송됨대응: HTTPS 사용, 강력한 암호화 알고리즘 적용..

IT/개발자 면접 2025.11.21

java Overloading과 Overriding

자바에서 오버로딩과 오버라이딩은 모두 메서드를 다형적으로 사용하는 방식이지만, 목적과 사용 방식이 다릅니다.🔁 오버로딩 (Overloading)같은 이름의 메서드를 매개변수만 다르게 정의하는 것정의 위치: 같은 클래스 내에서 사용조건:메서드 이름은 같음매개변수의 개수, 타입, 순서 중 하나 이상이 달라야 함리턴 타입만 다르면 오버로딩 불가능예시:void print() {} void print(String s) {} void print(int x, int y) {}용도: 다양한 입력에 대해 같은 기능을 수행하고 싶을 때🔄 오버라이딩 (Overriding)상위 클래스의 메서드를 하위 클래스에서 재정의하는 것정의 위치: 상속 관계에서 하위 클래스에서 사용조건:메서드 이름, 매개변수, 리턴 타입 모두 동일해..

IT/개발자 면접 2025.11.20
728x90
반응형