본문 바로가기

전체 글376

git 자주 쓰는 명령어 & 커밋 규칙 자주 쓰는 명령어git stashgit stash applyGit 커밋 수정(amend)과 강제 푸시(force push)amend: 개발 중 코드 리뷰를 반영하거나 작은 수정을 할 때, 커밋을 추가로 쌓지 않고 기존 커밋을 수정하는 방법(amend) 을 사용하면 히스토리를 깔끔하게 관리할 수 있음force push: amend 시 필요한 경우 강제 푸시(force push) 도 함께 사용커밋 메시지 규칙 (Prefix 추천)feat:새로운 기능 추가 / 변경fix:버그 수정refactor:기능 변화 없이 코드 구조 개선style:코드 포맷팅, 스타일 수정docs:문서 수정test:테스트 코드 추가/수정build:빌드 설정 변경 ✅ 예시refactor: 코드 리뷰 피드백 반영 및 로직 개선 커밋 수정 (.. 2025. 4. 3.
mac 자주 쓰는 단축키 mac화면 잠금 : command + l파일 복사 : command + c파일 붙여넣기 : command + v파일 붙여넣기 + 기존 삭제 : command + option + v폴더 닫기 : command + q화면 전체 캡쳐 : shift + command + 3화면 부분 캡쳐 : shift + command + 4이모지 : control + command + space기본 한영키 : ctrl + space | fn web크롬창 화면 전환 : command + ~개발자 도구 : command + option + i새로고침 : command + r    intellij개발메서드 오버라이드 : ctrl + o인터페이스 구현 : ctrl + igetter, setter 등 자동 생성 : command + .. 2025. 4. 2.
리버스 프록시, 로드 밸런서 리버스 프록시 (Reverse Proxy)리버스 프록시는 클라이언트의 요청을 받아 여러 서버로 전달하는 서버클라이언트는 실제 서버의 IP나 주소를 알지 못하고, 리버스 프록시 서버에 요청을 보냄리버스 프록시는 이 요청을 적절한 서버로 전달주요 특징클라이언트는 실제 서버가 아닌 리버스 프록시 서버와 통신보안, 캐싱, SSL 종료, 로드 밸런싱 등을 수행할 수 있음자바에서 Spring Cloud Gateway, Zuul 등이 리버스 프록시 역할을 할 수 있음로드 밸런서 (Load Balancer)로드 밸런서는 여러 서버 간에 트래픽을 분산하여 서버의 부하를 고르게 분배하는 역할이로 인해 서버가 과부하되는 것을 방지하고, 시스템의 가용성을 높임주요 특징클라이언트의 요청을 여러 서버에 분산하여 처리부하 분산 알.. 2025. 3. 20.
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.