단일 책임 원칙은 SRP, Single Responsibility Principle 말 그대로 클래스 또는 모듈이 하나의 책임만을 가져야 한다는 원칙이다. 다음 코드를 살펴보자. 위의 코드에서 Monkey 클래스는 말하기와 생각하기 두 가지 기능의 책임을 지고 있다.
컬렉션 데이터를 효율적으로 처리하는 기능다양한 메서드들이 있어 데이터를 연속 처리하거나 반복적으로 처리할 때 도움이 된다. filter(), map(), collect() 등의 다양한 메서드루프나 조건문을 사용해야 할 때 이 메서드들로 간단한 코드를 짤 수 있다. 이
알고리즘을 공부할 때 가장 많이 보는 게 바로 시간 복잡도.그중에서도 O(n)과 O(log n) 가장 흔한 경우를 알아보자. 어떤 작업을 처리하는 데 걸리는 시간(연산 수)를 입력 크기(n)에 따라 표현한 것O(n), O(log n), O(n²) 등 다양한 표현이 존재
Java에서 중복을 제거하고 싶을 때 가장 먼저 떠오르는 자료구조는 바로 HashSet이다.내부적으로는 어떻게 동작할까?Set 인터페이스를 구현한 클래스특징: 중복을 허용하지 않음, 순서를 보장하지 않음내부적으로는 HashMap을 사용해서 구현되어 있음HashSet은
프레임워크와 라이브러리는 모두 개발 생산성을 높이기 위한 도구지만,가장 큰 차이는 제어 흐름의 주체와 사용 방식에서 드러난다.제어의 역전(Inversion of Control, IoC) 적용.프레임워크가 개발자의 코드를 호출하며 흐름을 관리.개발자는 정해진 룰과 구조에
스프링 부트를 배우면서 톰캣이 내장되어 있다라는 것을 배우는데,정작 Web Server랑 뭐가 어떻게 다른지 헷갈릴 때가 있다.이 기회에 정리해봤다.Web Server는 정적인 자원(HTML, CSS, 이미지 파일 등)을 클라이언트에게 전달하는 역할즉, 어떤 로직도 처
AOP(Aspect Oriented Programming)는 관심사의 분리(Separation of Concerns)를 실현하기 위한 프로그래밍 패러다임핵심 비즈니스 로직과는 별도로 처리되어야 할 공통 기능(로깅, 보안, 트랜잭션 등)을 분리해서 모듈화할 수 있게 해준
초기 웹 서비스 시대에는 SOAP(Simple Object Access Protocol)이 API 통신의 표준처럼 사용됐다.XML 기반의 프로토콜로, 엄격한 스키마와 헤더 구조, 다양한 기능 지원(WSDL, 메시지 보안 등) 덕분에 복잡한 시스템 간 연동에 유용했다.근
SQL에서 DDL과 DML의 차이점 SQL에서는 데이터를 정의하고 조작하는 다양한 명령어들이 존재한다. 이 명령어들은 크게 DDL과 DML로 나눌 수 있다. DDL (Data Definition Language) DDL은 데이터 구조를 정의하거나 변경할 때 사용하
JPA에서 연관된 엔티티를 지연 로딩(LAZY)으로 설정해두면 발생하는 대표적인 퍼포먼스 이슈이다.예를 들어, 목록을 가져오는 수행을 한다.(1)그 다음 각 팀의 멤버를 반복해서 가져오면(N) → 총 1+N개의 쿼리가 실행된다."하나의 조회에 대해 연관된 엔티티 수만큼
계층에 따른 검증 책임 철저히 분리ex) @Email은 Controller, "이미 존재하는 이메일" 여부는 Service.controller 에서는 '형식'을 본다. 이메일 형식, 숫자 범위, 문자열 null여부 등으로 판단할 수 있다. service 는 '로직'을

컨테이너 기술은 운영체제 수준 가상화(OS-level Virtualization)로,하나의 물리 서버에서 여러 애플리케이션을 서로 격리된 공간에서 동시에 실행할 수 있게 하는 기술이다.이 개념은 Docker가 나오기 훨씬 전부터 존재했다.Docker로 컨테이너 기술을
HTTPS 필수: 세션 ID가 노출되면 탈취 가능CSRF 방지: CSRF 토큰 적용 필요서버 부하 증가: 세션 저장소 관리 필요HTTPS 필수: 토큰 탈취 방지XSS 방지: 로컬스토리지 대신 HttpOnly 쿠키 고려Access/Refresh 분리: 짧은 Access
서버와 클라이언트 간에 JSON 객체를 안전하게 전송하기 위한 토큰 형식.(점)으로 구분된 3개의 문자열로 구성alg : 서명에 사용된 알고리즘 (예: HS256, RS256)typ : 토큰의 타입(보통 "JWT")클레임(Claims) : 토큰에 담는 데이터등록된(Re
Spring의 캐싱 추상화는 애노테이션 기반으로 캐싱을 선언할 수 있도록 다양한 기능을 제공한다.주요 애노테이션은 다음과 같다.@Cacheable : 캐시 저장/조회 (캐시 미스 시 메서드 실행 후 결과를 캐시에 저장) @CachePut : 항상 메서드를 실행하고,

OSI(Open Systems Interconnection) 모델은 네트워크 통신 기능을 7개의계층으로 나눈 개념적 프레임워크국제 표준화 기구(ISO)가 제정했으며, 복잡한 네트워크 통신을 구조화해범용 언어로 사용할 수 있도록 만든 참조 모델복잡한 시스템 이해 공유: