Skip to content
View PHJ2000's full-sized avatar
  • Pusan National University

Block or report PHJ2000

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
PHJ2000/README.md

박재홍 · Backend Engineer

Java와 Spring을 기반으로 업무 규칙을 데이터 구조와 API로 구현하고, 테스트와 배포 절차를 통해 운영을 고려한 서비스로 만듭니다.

📄 포트폴리오 보기 · PDF

Tech Stack

분야 기술
Backend Java 21, Spring Boot, Spring MVC, Spring Security, JPA
Data PostgreSQL, PostGIS, Redis, Flyway
Delivery GitHub Actions, Docker, GHCR, AWS EC2, GCP VM
Quality JUnit 5, MockMvc, Testcontainers, JaCoCo
Observability Micrometer Tracing (OpenTelemetry), Tempo, Loki, Alloy, Grafana

Projects

위굴 Backend · SaGongSa-404/404_BE

예산, 위시, 구매 결정, 알림, 회고가 하나로 이어지는 소비 의사결정 서비스

📱 Google Play 출시 · 위굴 다운로드

  • 구매 결정(GO/STOP), 예산, 알림 상태를 단일 트랜잭션으로 갱신하고 CHECK, partial unique index, trigger로 DB 불변조건 보장
  • Idempotency-Key + partial unique index로 더블탭과 timeout 재시도에 따른 중복 생성 방지
  • GCP VM standby 배포: 8081 후보 기동 → Health Check → Caddy 전환 → 8080 복귀, 실패 시 자동 복구
  • 쇼핑 링크 가져오기를 비동기 작업 큐로 전환하고 요청 병합, 단기 캐시, 부하 테스트로 검증

위치 기반 해수욕장 정보, 혼잡도 수집, 예약과 알림을 제공하는 서비스

  • 외부 혼잡도·날씨 데이터를 30분 주기로 수집하고, 관측 이력과 현재 상태를 분리 저장
  • 예약 동시 요청 10건 → 201 1건 / 409 9건 / DB row 1건을 통합 테스트로 검증 (DB UNIQUE + ProblemDetail 오류 계약)
  • AWS EC2 CD: Docker Buildx → GHCR(commit SHA 태그) → Compose 배포 → Actuator Health 확인
  • 분산 추적: HTTP, 비동기 이메일, SMTP, Scheduler 구간의 Trace 계측과 Loki·Grafana 로그↔Trace 연결

Open Source

Java 오픈소스 31개 프로젝트에 34개 PR이 머지되었습니다. 대부분 엣지 케이스 버그 수정이며, 재현 테스트를 함께 제출했습니다.

프로젝트 ★ PR
vavr 6.1k Preserve priority order in PriorityQueue.distinctBy
JavaParser 6.1k Preserve unary operator token boundaries in all printers
JSqlParser 5.9k Deparse casts to single-field row types
JSON-java 4.7k Fix Property enumeration without local entries
RoaringBitmap 3.9k Preserve replacement containers in Roaring64Bitmap.remove
Agrona 3.2k Fix IntArrayList operations with different null values
JGraphT 2.7k Preserve shortest-path edges in KMB Steiner trees
ModelMapper 2.3k Preserve large floating-point values when converting to BigInteger
StreamEx 2.2k Avoid intermediate overflow when splitting combination streams
JaVers 1.5k Preserve SQL Timestamp nanoseconds in JSON
머지된 PR 전체 목록 (34)
머지일 저장소 PR
2026-10-12 javers/javers Preserve SQL Timestamp nanoseconds in JSON
2026-10-12 jOOQ/jOOR Handle null values in Reflect.equals and hashCode
2026-10-12 networknt/json-schema-validator [2.x] Fix uniqueItems validation for non-array inputs
2026-10-12 networknt/json-schema-validator Fix uniqueItems validation for non-array inputs
2026-10-11 aeron-io/agrona Fix IntArrayList operations with different null values
2026-10-11 stleary/JSON-java Fix Property enumeration without local entries
2026-10-10 vavr-io/vavr Preserve priority order in PriorityQueue.distinctBy
2026-10-09 java-diff-utils/java-diff-utils Track line-count changes when applying fuzzy patches
2026-10-09 jgrapht/jgrapht Preserve shortest-path edges in Kou-Markowsky-Berman Steiner trees
2026-10-09 jhalterman/typetools Compare reified parameterized types structurally
2026-10-09 JSQLParser/JSqlParser fix: deparse casts to single-field row types
2026-10-08 FasterXML/java-classmate Include array element types in equality and hashing
2026-10-08 knowm/XChart Allow tick spacing hints per Y-axis group
2026-10-07 javaparser/javaparser Preserve unary operator token boundaries in all printers
2026-10-07 knowm/XChart Accept null-free immutable lists in box charts
2026-10-07 ethlo/itu Detect leap seconds across UTC offset date boundaries
2026-10-07 modelmapper/modelmapper Preserve large floating-point values when converting to BigInteger
2026-10-06 albfernandez/juniversalchardet Return unsigned values from EncodingDetectorInputStream.read()
2026-10-06 mangstadt/ez-vcard Disable grouping separators in vCard floating-point values
2026-10-06 fathzer/javaluator Preserve large finite values when rounding
2026-10-06 jline/jline3 fix: recompute tab position after truncation
2026-10-06 semver4j/semver4j Fix upper bounds for zero-major partial caret ranges
2026-10-06 jdbc-observations/datasource-proxy Escape remaining control characters in JSON query logs
2026-10-05 haraldk/TwelveMonkeys Fix CompoundReader reset across reader boundaries
2026-10-05 tinylog-org/tinylog Handle a closing escape tick at the end of a message
2026-10-05 optimatika/ojAlgo Preserve milliseconds when converting offset and zoned date-times
2026-10-05 amaembo/streamex Avoid intermediate overflow when splitting combination streams
2026-10-05 vigna/dsiutils Reject negative skips before changing reader state
2026-10-05 JOML-CI/JOML Fix integer overflow in gridDistance
2026-10-05 lukas-krecan/JsonUnit Preserve shared matches in unordered array comparisons
2026-10-05 RoaringBitmap/RoaringBitmap Preserve replacement containers in Roaring64Bitmap.remove
2026-10-05 making/yavi Preserve set membership semantics in containsAll constraints
2026-10-04 Sekelenao/Flinkboot #237: fix(core): reject exponential backoff multiplier equal to one
2026-10-04 Sekelenao/Flinkboot #243: docs(core): add execution package info

Pinned Loading

  1. SaGongSa-404/404_BE SaGongSa-404/404_BE Public

    Java

  2. portfolio portfolio Public

    Backend Engineering Portfolio

    HTML

  3. Beach-complex/Beach_complex Beach-complex/Beach_complex Public

    Java 3 1