본문 바로가기

전체 글434

API 문서화 : Swagger, Spring REST Docs Swagger (Springfox / Springdoc OpenAPI)API 문서화 도구OpenAPI 표준을 기반으로 동작API 자동 문서화 및 실시간 테스트 가능한 UI 제공Spring Boot에서 쉽게 설정 가능샘플 코드 (Springdoc OpenAPI)// build.gradle 의존성 추가dependencies { implementation 'org.springdoc:springdoc-openapi-ui:1.6.9'}// Spring Boot 애플리케이션 클래스@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(Demo.. 2025. 3. 19.
[Programmers] Lv.0 | 겹치는 선분의 길이 | Java 문제https://school.programmers.co.kr/learn/courses/30/lessons/120876 포인트연속된 숫자로 구간을 표현할 때, 끝점은 포함하지 않아도 됨 풀이class Solution { public int solution(int[][] lines) { int[] arr = new int[200]; int answer = 0; for (int i = 0; i 1) { answer++; } } return answer; }}import java.util.*;class Solution { public int solution(int[][].. 2025. 3. 11.
CGLIB 프록시 JDK 동적 프록시 vs CGLIB✔ Spring에서 @Transactional, @Cacheable 같은 AOP 기능을 적용할 때 JDK 동적 프록시와 CGLIB 프록시를 사용함✔ Spring Boot 2.0부터 JDK 동적 프록시가 기본값으로 변경되었으며, 그 이유와 차이를 정리CGLIB 프록시✔ CGLIB(Code Generation Library) 프록시는 바이트코드를 조작하여 클래스 기반으로 프록시 객체를 생성하는 기술✔ Spring에서는 AOP(Aspect-Oriented Programming)와 프록시 패턴에서 사용됨CGLIB 프록시 개념✔ JDK 동적 프록시와 차이점JDK 동적 프록시: 인터페이스 기반 → 인터페이스가 필요함CGLIB 프록시: 클래스 기반 → 인터페이스 없이도 프록시 생성 .. 2025. 3. 1.
JPA | MyBatis | JDBC JPA (Java Persistence API)자바에서 객체와 관계형 데이터베이스를 매핑하는 표준 API엔티티 클래스를 통해 데이터를 객체로 관리하고, 객체 상태에 따라 자동으로 DB와 연동됨주로 Hibernate와 함께 사용됨JPA는 규격(specification)이고, Hibernate는 그 구현체(implementation)Hibernate는 JPA를 구현하면서, JPA가 정의한 기능을 지원하고, 그 외에도 Hibernate만의 고유 기능을 추가로 제공함@Entitypublic class User { @Id private Long id; private String name; // getter, setter}JPQL (Java Persistence Query Language)JP.. 2025. 3. 1.
도커(Docker), 쿠버네티스(K8S), CI/CD Docker (도커)컨테이너화 플랫폼애플리케이션을 컨테이너라는 독립적인 환경에 패키징하여 어디서나 실행할 수 있게 해줌이미지를 기반으로 컨테이너를 생성하고, 이를 실행하여 애플리케이션을 관리환경 일관성 제공 : 개발 환경과 운영 환경을 동일하게 유지할 수 있음주요 개념Docker 이미지 : 애플리케이션, 라이브러리, 설정 등을 포함한 읽기 전용 템플릿Docker 컨테이너 : 이미지를 실행한 인스턴스, 가벼운 격리 환경 제공Docker Hub : 이미지를 저장하고 공유하는 공용 레지스트리Kubernetes (쿠버네티스)컨테이너 오케스트레이션 플랫폼여러 개의 컨테이너를 자동으로 배포, 확장, 관리하는 시스템컨테이너의 자동화된 배치, 확장, 로드 밸런싱 및 자원 관리 제공클러스터 기반으로 여러 노드를 연결하여.. 2025. 3. 1.
[Programmers] Lv.0 / 유한소수 판별하기 / Java 문제 풀이import java.util.*;class Solution { public int solution(int a, int b) { int reducedDenominator = b / gcd(a, b); // 기약분수로 바꾸기 위해 b를 GCD로 나눔 while (reducedDenominator != 1) { // reducedDenominator가 1이 될 때까지 if (reducedDenominator % 2 == 0) { // 2로 나눠지면 나누기 reducedDenominator /= 2; } else if (reducedDenominator % 5 == 0) { // 5로 나눠지.. 2025. 2. 26.
[Spring] JAR & WAR JAR와 WAR 공통점JAR와 WAR 모두 Java의 jar 명령어로 생성된 압축 파일애플리케이션 관련 파일(리소스, 속성 파일 등)을 패키징하여 배포와 실행 용이 JAR (Java ARchive)목적: Java 애플리케이션 실행용 압축 파일내용: Java 클래스 파일, 라이브러리, 리소스 파일요구사항: JRE만 있으면 실행 가능 (java -jar 프로젝트명.jar)특징- 독립 실행형 애플리케이션- 내장 서버 포함 가능- 부트에서 가이드하는 표준은 JAR(JSP, 외장톰켓 사용하지 않음) WAR (Web Application ARchive)목적: 웹 애플리케이션 배포용 압축 파일내용: JSP, Servlet, JAR, 클래스 파일, XML, HTML, JavaScript 등요구사항: 웹 서버(WEB) .. 2025. 2. 11.
[Programmers] Lv.0 / 특이한 정렬 / Java 문제 풀이import java.util.*;class Solution { public int[] solution(int[] numlist, int n) { Arrays.sort(numlist); for (int i = 0; i import java.util.*;class Solution { public int[] solution(int[] numlist, int n) { return Arrays.stream(numlist) .mapToObj(a -> (Integer) a) // 1. int[] 배열을 Integer 객체 스트림으로 변환 .sorted((a, b) -> { // 2. 커스텀 비교 함수로 정.. 2025. 2. 11.
WSL2 비밀번호 재설정 WSL2 에서 root 등 계정의 비밀번호 잊어버렸을 때 재설정하기1. cmd 관리자 권한 실행2. 비밀번호 변경할 계정으로 진입wsl -u [계정]wsl -u root3. 비밀번호 변경passwd4. 비밀번호 재입력5. exit 명령어로 빠져나오기6. 비밀번호 확인 2025. 2. 10.
Windows 에서 WSL2 환경에 접근 Windows 와 WSL2WindowsWSL2WindowsLinuxWindows ➡️ WSL2 환경에 접근1. 우분투 터미널 실행 후 explorer.exe . 입력explorer.exe . 2. WSL2 환경의 현재 디렉토리 확인WSL2 ➡️ Windows 환경에 접근우분투 터미널에서 명령어로 접근해야 함ex) Windows 의 D 드라이브에 있는 txt.txt 파일을 Linux 의 현재 디렉토리로 복사하기 Windows source 경로/mnt/[drive]/[folder]/.../[file] 2025. 2. 10.
애자일 선언(Agile Manifesto) 애자일 선언(Agile Manifesto)애자일 선언은 소프트웨어 개발에서 유연성과 협업을 중시하는 가치와 원칙을 정의한 문서2001년 17명의 소프트웨어 개발자들이 모여 작성한 이 선언은 전통적인 워터폴 개발 방법에 대한 대안으로 등장애자일 선언의 4가지 가치프로세스와 도구보다 개인과 상호작용을 중시 : 개발자 간의 원활한 소통과 협력이 중요포괄적인 문서보다 동작하는 소프트웨어를 중시 : 문서화보다는 실제 동작하는 제품에 더 가치 부여계약 협상보다 고객과의 협력을 중시 : 고객의 요구와 피드백을 우선시하고, 계약서보다 유연하게 대응계획을 따르기보다 변화에 대응을 중시 : 초기 계획보다는 변화하는 요구사항에 빠르게 적응애자일 선언의 12가지 원칙고객 만족 우선 : 지속적으로 동작하는 소프트웨어를 제공해 .. 2025. 2. 9.
[Linux] ls 명령어 lslist 줄임말현재 디렉토리의 파일 목록 확인하는 명령어 형식ls [OPTION] [File] 특징디렉토리 지정하여 파일 목록 출력 가능옵션 사용해야 숨김 파일 확인 가능디렉토리 생략 시 현재 위치한 디렉토리의 파일 목록 출력 옵션ls -arltharlth: 모든 파일, 폴더를 시간 역순으로 출력하는 명령어 2025. 1. 20.