| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스
- Join
- jvm
- docker
- 데이터 베이스
- 이것이 자바다
- 포트폴리오
- CI/CD
- mysql
- Java
- Redis
- 연습문제
- LV.02
- CoffiesVol.02
- LV01
- Kafka
- LV0
- 일정관리 프로젝트
- GIT
- 디자인 패턴
- LV03
- spring boot
- Lv.0
- 코테
- 알고리즘
- LV02
- 일정관리프로젝트
- SQL
- JPA
- S3
- Today
- Total
목록분류 전체보기 (204)
코드 저장소.
2025년 회고올해가 얼마 남지 않은 시점에서, 지금의 나를 기록해 두고 싶어 이렇게 글을 남긴다.올해 나는 크게 두 가지 경험을 했다. 하나는 일정 관리 개인 프로젝트, 다른 하나는 팀 프로젝트였다.1. 일정 관리 프로젝트기존에 진행하던 Coffies 프로젝트만으로는 더 이상 한계가 명확하다고 느꼈다.그래서 멘토링을 신청했고, 그 과정에서 완전히 새로운 프로젝트를 시작하게 되었다.이 사이드 프로젝트를 진행하면서 정말 많은 개발 지식과, 그보다 더 중요한 개발 문화를 배웠다.그중 가장 인상 깊었던 것은 코드 리뷰였다.기존에는 혼자 브랜치에서 작업하고, 인터넷 블로그를 참고해 코드를 작성하는 방식이 전부였다.하지만 이번에는 브랜치를 나누고, PR을 올리고, 멘토에게 리뷰를 받고, 그 후에 머지하는 과정을 ..
목차1.프로젝트 목적2.사용 기술 스택3.아키텍처4.ERD5.주요기능6.전체 개발 과정 정리7.소감 1.프로젝트 목적이 프로젝트는 단순 CRUD 일정 관리에서 출발했습니다. 하지만 실제 서비스를 만들다 보면 일정 생성 이후에 훨씬 많은 일이 발생했습니다.알림 생성반복 일정 전파파일 업로드 처리추천 기능을 위한 외부 API 연동Kafka 기반 비동기 이벤트 처리이 중 하나라도 실패하면 전체 기능이 연쇄적으로 무너질 수 있었습니다. 그래서 이번 프로젝트의 핵심 목표는 비동기 영역에서 발생하는 장애를 어떻게 격리하고, 어떻게 자동 복구할 수 있을까?였습니다. 이를 검증하기 위해 Kafka Outbox + DLQ + 멱등성(EOS) 구조를 직접 설계하고, Prometheus·Loki·Grafana 기반 모니터링..
목차1.도입2제네릭이란 ?3.와일드 카드4.제네릭 소거5.정리 1.도입평소에 자바로 코드를 작성을 하다보면 제네릭을 쓰는 경우가 많다. 하지만 막상 떠올리는 것은 "컴파일시 타입을 체크해준다","API의 표현력을 높여준다" 정도로 알고 있었다. 이번 글에서는 그 동안 애매하게 알고 있었던 제네릭에 대한 내용을 다시 정리해 보려고 한다. 기본 문법부터 와일드카드, 그리고 제네릭 소거까지 살펴보면서 실제 코드 예제도 같이 다뤄보려고 한다.2.제네릭이란 ?2-1. 제네릭이 필요한 이유자바 1.4 시절에는 컬렉션이 전부 Object 타입으로 동작했다. 이 경우 타입 체크가 컴파일 시점에 이뤄지지 않아서 런타임 오류로 이어질 수 있었다.List list = new ArrayList();list.add("hell..
목차1.GC?2.GC의 구조 및 작동원리3.GC의 종류4.JVM튜닝 경험 1.GC? GC는 JVM에서 메모리 관리를 위해 사용이 되며 ‘더 이상 참조되지 않는 객체들을 자동으로 탐지하고 해제’하는 역할을 수행합니다. 이를 통해 메모리 관리를 효율적으로 처리하며 프로그램 실행 중에 메모리 누수를 방지하고 메모리 사용을 최적화합니다. 개발자들은 가비지 컬렉터를 통해서 메모리 관리에 대한 직접적인 관여 없이도 안정적인 프로그램을 작성을 할 수 있습니다.가비지 컬렉터는 메모리 영역에서 중에서 힙 영역 내에서 이를 관리를 하고 사용을 합니다. 2.GC의 구조 및 작동원리GC의 구조는 힙영역에서 Young Generation, Old Generation, Meta space로 나뉘어집니다. Young Gener..
목차1. 객체 비교가 중요한 이유2.== 연산자의 의미3.equals() 메서드의 의미4.hashCode() 와의 관계5. ==, equals(), hashCode() 차이 정리6.적용 1. 객체 비교가 중요한 이유JPA로 엔티티를 작성하다 보면, 꼭 등장하는 메서드가 있습니다. 바로 equals()와 hashCode()입니다. 단순 CRUD 수준에서는 크게 티가 안 나지만, 엔티티를 컬렉션(Set, Map)에서 다루거나, 영속성 컨텍스트에서 동등성을 판별할 때는 이 두 메서드가 핵심 역할을 합니다. 여기서 의문이 생깁니다. “왜 굳이 엔티티에서 hashCode까지 구현해야 할까?” 그 이유는 객체를 비교하는 방식이 세 가지로 나뉘기 때문입니다.== : 두 객체가 **동일한 메모리 주소(참조)**를 가리..
목차1.작성하게 된 계기2.예외(Exception)란?3. Checked Exception4. Unchecked Exception5. Checked vs Unchecked 비교6. 코드 적용7. 결론 1.작성하게 된 계기일전에 일정관리 프로젝트를 하면서 OpenAI API 응답(JSON 파싱)과 DB 조회를 묶어서 처리하는 코드를 작성했다.@CircuitBreaker(name = "openAiClient", fallbackMethod = "fallbackRecommendSchedules")public List recommendSchedules(String userId, Pageable pageable) throws Exception { Long memberId = memberRepository.fi..