<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>jonghun.log</title><description>백엔드 개발하며 배운 것들을 기록합니다.</description><link>https://jonghun.dev/</link><item><title>결제 흐름 안의 물류 API 호출을 걷어내기 – 같은 트랜잭션 아웃박스 + 배치 릴레이 + Kafka 로 OMS 에 주문 넘기기</title><link>https://jonghun.dev/blog/order-outbox-kafka/</link><guid isPermaLink="true">https://jonghun.dev/blog/order-outbox-kafka/</guid><description>결제·취소 흐름 안에서 메시지를 바로 발행하고 물류 API 를 부르던 구조를, 주문과 주문 아웃박스를 한 MongoDB 트랜잭션에 저장하고 커머스의 배치 릴레이가 아웃박스를 폴링·CAS 선점해 Kafka 로 OMS 에 발행하는 구조로 바꾸는 설계다. 이미 운영 중인 조각과 앞으로 만들 조각을 나눠 적었다. 그리고 Kafka 를 고른 이유, exactly-once 대신 at-least-once + 멱등 소비를 고른 이유, CDC 를 쓰지 않은 이유, 장애 지점별 동작을 정리했다.</description><pubDate>Tue, 20 Oct 2026 04:54:04 GMT</pubDate><category>Outbox 패턴</category><category>Kafka</category><category>멱등성</category><category>MongoDB</category><category>Kotlin</category><category>분산 시스템</category><category>MSA</category></item><item><title>5KB 응답을 만들려고 2.5MB 를 읽던 홈 API – 모니터링으로 원인을 좁히고, DataLoader·projection·2중 캐시로 32배</title><link>https://jonghun.dev/blog/home-body-perf/</link><guid isPermaLink="true">https://jonghun.dev/blog/home-body-perf/</guid><description>앱 첫 화면 API 가 1코어에서 초당 10건을 넘기면 무너졌다. Grafana 로 CPU 포화와 Mongo 전송량을 보고 Mongo 프로파일러로 요청 1건을 해부해, 병렬화 대신 DataLoader 배치·projection 으로 덜 읽고 2중 캐시로 안 읽게 바꾼 과정을 단계별 측정값과 함께 정리했다.</description><pubDate>Sun, 20 Sep 2026 13:47:31 GMT</pubDate><category>성능 개선</category><category>MongoDB</category><category>DataLoader</category><category>N+1</category><category>Caffeine</category><category>Redis</category><category>Kotlin</category><category>k6</category><category>성능 개선</category></item><item><title>00시, 새로 뜬 pod 만 무너졌다 – 프로파일러로 Spring Data 의 숨은 락을 찾고, 고친 뒤에도 무너진 이유까지</title><link>https://jonghun.dev/blog/exhibition-propertypath/</link><guid isPermaLink="true">https://jonghun.dev/blog/exhibition-propertypath/</guid><description>기획전 오픈 00시 트래픽을 재현하자 막 띄운 서버만 무너졌다. async-profiler 의 lock 모드로 Spring Data SimplePropertyPath 의 실패를 캐시하지 않는 락을 찾아 고쳤지만, 막 뜬 서버는 여전히 무너졌다. single-flight 캐시와 적응형 동시성 제한을 더해 버티게 된 과정을 정리했다.</description><pubDate>Sun, 23 Aug 2026 05:09:56 GMT</pubDate><category>성능 개선</category><category>async-profiler</category><category>Spring Data MongoDB</category><category>캐시 스탬피드</category><category>동시성 제한</category><category>Kotlin</category><category>k6</category><category>성능 개선</category></item><item><title>알림을 한 번만, 그러나 잃지 않게 – 고객등급제 알림톡 발송을 outbox / inbox 로 다시 짠 기록</title><link>https://jonghun.dev/blog/notification-outbox/</link><guid isPermaLink="true">https://jonghun.dev/blog/notification-outbox/</guid><description>배치가 비즈뿌리오에 직접 보내고 나서 내역을 남기던 고객등급제 알림을, 배치는 outbox 테이블에 적기만 하고 중계 잡이 RabbitMQ 로 넘기고 워커가 inbox(message_id 선점)로 한 번만 보내는 구조로 바꿨다. 구간마다 at-least-once 와 at-most-once 를 다르게 고른 이유와 장애 지점별 동작을 정리했다.</description><pubDate>Sun, 19 Jul 2026 11:34:45 GMT</pubDate><category>Outbox 패턴</category><category>멱등성</category><category>RabbitMQ</category><category>PostgreSQL</category><category>Kotlin</category><category>알림톡</category><category>분산 시스템</category></item><item><title>PG 를 바꾸며 돈과 주문을 맞추는 법 – 아임포트(KCP)에서 토스페이먼츠 직접 연동으로</title><link>https://jonghun.dev/blog/toss-payments/</link><guid isPermaLink="true">https://jonghun.dev/blog/toss-payments/</guid><description>아임포트를 거쳐 KCP 로 결제하던 구조를 토스페이먼츠 직접 연동으로 바꾼 기록이다. 두 PG 의 결제건이 함께 살아 있던 전환 기간의 설계, 트랜잭션 없이 돈과 주문을 맞춘 장치, 승인 후 취소가 생기는 재고 구조, 무통장입금 만료가 석 달 반 동안 처리되지 않았던 사고를 정리했다.</description><pubDate>Sun, 14 Jun 2026 07:51:02 GMT</pubDate><category>결제</category><category>토스페이먼츠</category><category>Kotlin</category><category>멱등성</category><category>정합성</category><category>MongoDB</category><category>장애 대응</category></item><item><title>한 주문에 문이 세 개 – 결제 완료 API·PG 웹훅·취소를 주문번호 분산락 하나로 줄 세우기</title><link>https://jonghun.dev/blog/payment-webhook-lock/</link><guid isPermaLink="true">https://jonghun.dev/blog/payment-webhook-lock/</guid><description>토스페이먼츠 결제 흐름을 새로 만들면서 같은 주문에 결제 완료 API, PG 웹훅, 취소가 거의 같은 순간에 들어올 수 있다는 것을 보고 처음부터 주문번호 분산락을 설계했다. 락이 없으면 어떤 경합이 생기는지, 락 키가 주문번호여야 했던 이유, 대기·임대·소유자 id 의 세부, 락 뒤에 겹쳐 둔 장치, 다른 대안과 그것을 바깥 문으로 쓰지 않는 이유를 정리했다.</description><pubDate>Sun, 24 May 2026 12:13:47 GMT</pubDate><category>결제</category><category>동시성</category><category>분산락</category><category>Redisson</category><category>Kotlin</category><category>토스페이먼츠</category><category>멱등성</category></item><item><title>문자 속 120자짜리 링크를 7자 코드로 – 자체 단축 URL 을 백엔드·웹·어드민에 걸쳐 만든 기록</title><link>https://jonghun.dev/blog/short-url/</link><guid isPermaLink="true">https://jonghun.dev/blog/short-url/</guid><description>외부 단축 URL 서비스가 종료된 뒤 대체 문자(LMS)에 긴 원본 주소와 카카오용 UTM 이 그대로 실리던 문제를 정리했다. 워커가 문자를 만들 때 7자 코드로 줄이고, 웹이 302 로 풀고, 어드민에서 카카오 UTM 과 문자 UTM 을 나눠 저장하도록 바꿨다.</description><pubDate>Wed, 06 May 2026 13:18:33 GMT</pubDate><category>단축 URL</category><category>Kotlin</category><category>Next.js</category><category>PostgreSQL</category><category>UTM</category><category>알림톡</category><category>문자</category></item><item><title>먼저 ack 하던 알림 소비자 – 코루틴 launch 가 메시지를 잃는 이유와 처리 후 ack·멱등 처리</title><link>https://jonghun.dev/blog/notification-ack/</link><guid isPermaLink="true">https://jonghun.dev/blog/notification-ack/</guid><description>RabbitMQ 알림 리스너가 CoroutineScope.launch 로 일을 넘기고 바로 반환해, 알림을 보내기 전에 ack 가 나가던 문제를 정리했다. runBlocking 으로 처리 후 ack 하도록 바꾸고, 그로 인해 생기는 재배달을 수신 원장과 업무 키로 막았다.</description><pubDate>Sun, 12 Apr 2026 06:27:09 GMT</pubDate><category>Kotlin</category><category>코루틴</category><category>RabbitMQ</category><category>Spring AMQP</category><category>멱등성</category><category>MongoDB</category><category>장애 대응</category></item><item><title>알림톡 발송마다 TLS 를 다시 맺던 문제 – 연결 1,050개를 1개로 줄이기까지</title><link>https://jonghun.dev/blog/bizppurio-keepalive/</link><guid isPermaLink="true">https://jonghun.dev/blog/bizppurio-keepalive/</guid><description>알림톡을 보낼 때마다 HTTP 클라이언트를 새로 만들어 TCP·TLS 를 다시 맺던 연동을 클라이언트 공유와 Ktor CIO → JDK HttpClient 엔진 교체로 고쳤다. 원인을 확인한 과정, TLS 를 넣은 부하 재현, 운영 배포 전후 지연 시간을 정리했다.</description><pubDate>Tue, 03 Mar 2026 14:05:48 GMT</pubDate><category>Kotlin</category><category>Ktor</category><category>HTTP</category><category>keep-alive</category><category>TLS</category><category>성능 개선</category><category>알림톡</category></item><item><title>타임아웃 정리 – 왜 나고, 어떤 종류가 있고, 코틀린에서는 어떻게 다룰까</title><link>https://jonghun.dev/blog/kotlin-timeout/</link><guid isPermaLink="true">https://jonghun.dev/blog/kotlin-timeout/</guid><description>외부 API 연동에서 몇 번 만난 타임아웃을 계기로 정리했다. 타임아웃이 왜 나는지, connect·read·call·풀 대기·코루틴 타임아웃이 각각 무엇을 재는지, 값은 어떻게 정하고 난 뒤에는 무엇을 하는지를 코틀린 코드와 실행 결과로 확인했다.</description><pubDate>Sun, 08 Feb 2026 12:42:17 GMT</pubDate><category>Kotlin</category><category>Timeout</category><category>코루틴</category><category>OkHttp</category><category>HikariCP</category><category>재시도</category><category>장애 대응</category></item><item><title>코틀린 코루틴의 정석 (1) – 실무 중심으로 다시 공부하는 코루틴</title><link>https://jonghun.dev/blog/tistory-308/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-308/</guid><description>입사 첫 주, 회사 기술 스택을 익히겠다는 마음 하나로 LINE 조세영 님의 「코틀린 코루틴의 정석」 강의를 결제했었다. 운이 좋게도 책 증정 이벤트에 당첨되어 책까지 받았지만, 정신없이 업무에 몰입하다 보니 그 책</description><pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate><category>Coroutine</category><category>Thread Blocking</category><category>경량쓰레드</category><category>멀티쓰레드</category><category>스레드 블로킹</category><category>코루틴</category><category>Kotlin</category></item><item><title>온라인 식품 커머스, 상품 유형에 따라 시스템이 달라진다</title><link>https://jonghun.dev/blog/tistory-309/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-309/</guid><description>온라인 식품 커머스, 상품 유형에 따라 시스템이 달라진다 1P, 2P, 3P — 이 세 글자가 커머스 아키텍처를 결정한다 들어가며 온라인 식품 커머스를 운영하다 보면 &quot;우리는 어떤 방식으로 상품을 팔 것인가?&quot;라는</description><pubDate>Sat, 20 Dec 2025 19:10:52 GMT</pubDate><category>끄적끄적</category></item><item><title>비동기로 성능개선을 한다고? - Coroutine, Semaphore, BulkHead로 안정적인 성능 만들기</title><link>https://jonghun.dev/blog/tistory-307/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-307/</guid><description>&quot;비동기로 처리하면 더 빨라요&quot; 이 말을 백엔드 개발자라면 한 번쯤 들어봤을 것이다. 하지만 진짜로 빠를까? 사실 비동기는 &quot;더 빨라진다&quot;보다 &quot;기다리는 시간을 겹친다&quot;가 더 정확한 표현이다. 이번 글에서는 동기/비</description><pubDate>Sun, 12 Oct 2025 04:28:28 GMT</pubDate><category>BulkHead</category><category>Coroutine</category><category>limitedParallelism</category><category>Mutex</category><category>semaphore</category><category>병렬</category><category>비동기</category><category>코루틴</category><category>개발일기 || 트러블슈팅</category></item><item><title>Outbox만으로 충분할까? CDC와 DLQ를 통한 기초적인 이벤트 기반 설계를 알아보자</title><link>https://jonghun.dev/blog/tistory-306/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-306/</guid><description>대부분의 시스템은 초기에 단일 데이터베이스를 중심으로 모놀리식 기반 설계부터 시작된다. 서비스가 분리되고 도메인 경계가 명확해지며 트래픽이 늘어날수록 각 도메인이 자신의 데이터베이스를 소유해야 하는 시점이 찾아온다.</description><pubDate>Tue, 07 Oct 2025 07:10:40 GMT</pubDate><category>CDC</category><category>Dead Letter Queue</category><category>Dead Letter Topic</category><category>DLQ</category><category>DLT</category><category>outbox</category><category>Transactional Outbox Pattern</category><category>아웃박스</category><category>아웃박스 패턴</category><category>이벤트 기반</category><category>개발일기 || 트러블슈팅</category></item><item><title>MongoDB의 WiredTiger Engine과 Transaction에 대해서 알아보자</title><link>https://jonghun.dev/blog/tistory-304/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-304/</guid><description>개발자 글쓰기 모임 3주차의 주제는 트랜잭션의 적용 사례와, 클린 아키텍처 적용 사례이다. 하지만 트랜잭션의 적용 사례는 2주 전에 트러블슈팅 내용으로 다루었었고, 클린아키텍처 적용 사례의 경우에는 글쓰기 모임 1주</description><pubDate>Sat, 22 Mar 2025 16:45:54 GMT</pubDate><category>b+tree</category><category>B-tree</category><category>mongoDB</category><category>MVCC</category><category>transaction</category><category>Wal</category><category>wiredtiger</category><category>write-ahead logging</category><category>끄적끄적</category></item><item><title>TDD의 개념과 장단점 그리고 BDD by Kotest</title><link>https://jonghun.dev/blog/tistory-303/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-303/</guid><description>TDD(Test Driven Development)는 테스트 주도 개발로, 소프트웨어 개발 시 기능 구현 전에 테스트 코드를 작성하여 개발 전체적인 과정을 이끌어 가는 방법론이다. 이 접근법은 &quot;Red(실패), Gr</description><pubDate>Sun, 16 Mar 2025 13:52:58 GMT</pubDate><category>BDD</category><category>behavior-driven-development</category><category>Kent Beck</category><category>Kotest</category><category>mockk</category><category>TDD</category><category>test-driven-development</category><category>끄적끄적</category></item><item><title>Coroutine과 ReactiveMongo 다중DB 환경에서 @Transactional을 사용해 보자</title><link>https://jonghun.dev/blog/tistory-302/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-302/</guid><description>업무를 하는 도중, 원자적으로 작업이 되어야만 하는 즉, 트랜잭션이 꼭 필요한 비즈니스 로직이 있었다. @Transactional 어노테이션을 사용해서 간편하게 트랜잭션 작업을 하고 싶은데.. 여러 블로그에 있는 레</description><pubDate>Sun, 09 Mar 2025 18:44:50 GMT</pubDate><category>Coroutine</category><category>coroutine transaction</category><category>mongo multidb transaction</category><category>multidb</category><category>reactivemongo</category><category>reactivemongo coroutine transaction</category><category>reactivemongo transaction</category><category>transaction</category><category>transactionManager</category><category>다중db 트랜잭션</category><category>개발일기 || 트러블슈팅</category></item><item><title>이제 와서 고쳐보는 2024년의 내 코드</title><link>https://jonghun.dev/blog/tistory-301/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-301/</guid><description>오늘은 써야지 라는 개발자 블로그 글쓰기 모임에 참여하게 되었다. 이 모임은 매주 개발 관련 블로그를 작성하고, 서로의 글을 공유하며 피드백을 나누고 경험과 인사이트를 나누자는 취지로 개설된 자리이다. 첫 주차의 주</description><pubDate>Sat, 08 Mar 2025 11:51:46 GMT</pubDate><category>끄적끄적</category></item><item><title>GraphQL 스키마 타입에 대해 알아보자.</title><link>https://jonghun.dev/blog/tistory-300/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-300/</guid><description>타입 시스템이란? 타입 시스템은 GraphQL에서 데이터의 구조를 명확하게 정의해서 서버와 클라이언트 간의 데이터 전달을 일관되고 정확하게 해주는 중요한 개념이다. GraphQL의 타입 시스템은 다음과 같은 요소로</description><pubDate>Sat, 04 Jan 2025 02:58:07 GMT</pubDate><category>graphql schema type</category><category>graphql 스키마 타입</category><category>graphql 타입</category><category>schema type</category><category>스키마 타입</category><category>GraphQL</category></item><item><title>GraphQL 서버 동작 방식에 대해 공부해보자!</title><link>https://jonghun.dev/blog/tistory-299/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-299/</guid><description>이번엔 GraphQL의 서버 구성요소에 대해 알아보자. GraphQL의 구성요소 GraphQL의 구성요소는 크게 4가지로 나눌 수 있다. 스키마 미들웨어 리졸버 AST GraphQL의 구성요소 - Schema 먼저</description><pubDate>Fri, 03 Jan 2025 00:41:00 GMT</pubDate><category>graphql</category><category>graphql 동작방식</category><category>graphql 리졸버</category><category>graphql 스키마</category><category>Resolver</category><category>schema</category><category>SDL</category><category>GraphQL</category></item><item><title>RESTAPI와 GraphQL의 차이점과 특징에 대해 공부해보자.</title><link>https://jonghun.dev/blog/tistory-298/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-298/</guid><description>초기 페이스북 앱은 HTML 웹사이트를 웹뷰로 감싼 형태로 개발되었다. 그러나 2012년 트래픽 증가와 함께 이런 구조가 성능 저하와 빈번한 크래쉬를 일으키는 문제가 발생했었다. 이에 페이스북 개발팀은 네이티브 앱으</description><pubDate>Wed, 01 Jan 2025 10:37:34 GMT</pubDate><category>graph query language</category><category>graphql</category><category>RestAPI</category><category>schema definition language</category><category>SDL</category><category>네트워크 대역폭 최적화</category><category>네트워크 최적화</category><category>언더페칭</category><category>오버페칭</category><category>GraphQL</category></item><item><title>MySQL과 MongoDB의 차이를 알아보자.</title><link>https://jonghun.dev/blog/tistory-297/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-297/</guid><description>MySQL과 MongoDB의 특징 비교 MySQL의 특징 타입 : 관계형 데이터베이스 데이터 저장 형식 : 고정된 행과 열 기반의 테이블 쿼리 : SQL 스키마 : 정적 스키마 (미리 정의된 데이터 구조에 따라 데이</description><pubDate>Fri, 27 Dec 2024 06:30:13 GMT</pubDate><category>Database</category></item><item><title>2024 회고 그리고 2025년 목표</title><link>https://jonghun.dev/blog/tistory-296/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-296/</guid><description>첫 회사와 이직 결심 2023년 5월 1일, 나는 판교의 회사에서 첫 개발자로서의 커리어를 시작했다. 회사에 가면 많은 것을 배우고 성장할 수 있을 것이라 매우 기대했다. 하지만 첫 개발자 커리어를 시작하자마자 마주</description><pubDate>Thu, 26 Dec 2024 01:55:19 GMT</pubDate><category>백엔드</category><category>이직</category><category>항해99</category><category>기타</category></item><item><title>항해 99 개발자 잔디 기부 캠페인</title><link>https://jonghun.dev/blog/tistory-295/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-295/</guid><description>항해 99 개발자 잔디 기부 캠페인</description><pubDate>Wed, 18 Dec 2024 05:23:36 GMT</pubDate><category>잔디 기부</category><category>잔디 기부 캠페인</category><category>항해99</category><category>행사 || 후기</category></item><item><title>부하테스트와 개선점을 찾아보자 - 10주차</title><link>https://jonghun.dev/blog/tistory-294/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-294/</guid><description>부하 테스트 보고서 부하테스트 시나리오 선정 및 선정된 시나리오의 API 개별 테스트 (리스트) 콘서트 조회 API (GET) /concerts 대기열 생성 API (POST) /queues/enqueue 대기열 조</description><pubDate>Wed, 27 Nov 2024 03:36:56 GMT</pubDate><category>10주차</category><category>Grafana</category><category>influxdb</category><category>K6</category><category>kafka</category><category>redis</category><category>부하테스트</category><category>항플 백엔드</category><category>항해99</category><category>항해플러스</category><category>항해99 플러스 백엔드</category></item><item><title>트랜잭션의 범위 분석과 비즈니스 개선 방안 - 8주차</title><link>https://jonghun.dev/blog/tistory-290/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-290/</guid><description>결제 유스케이스 트랜잭션 범위 분석 대표적으로 결제 유스케이스를 통해 트랜잭션의 범위를 분석해 보자. 먼저 결제 퍼사드의 비즈니스 로직은 아래와 같다고 가정하자. 위 비즈니스 로직은 크게 두 가지의 문제점이 있다.</description><pubDate>Wed, 13 Nov 2024 22:32:05 GMT</pubDate><category>Choreography</category><category>eda</category><category>MSA</category><category>MSA전환</category><category>Orchestration</category><category>SAGA</category><category>이벤트기반</category><category>항플백엔드</category><category>항해99</category><category>항해플러스</category><category>항해99 플러스 백엔드</category></item><item><title>Index를 통한 쿼리 성능개선 - 8주차</title><link>https://jonghun.dev/blog/tistory-289/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-289/</guid><description>콘서트 예약 서비스에는 꽤 많은 쿼리가 수행된다. 이번 주차에는 성능 개선할 수 있는 쿼리들을 색출하고, 직접 인덱스를 걸어본 후 성능 비교와 부하테스트를 해 보자. 콘서트 예약 서비스의 조회 쿼리들에 대한 인덱스</description><pubDate>Tue, 12 Nov 2024 00:11:15 GMT</pubDate><category>Grafana</category><category>index</category><category>MySQL</category><category>ngrinder</category><category>query optimize</category><category>인덱스</category><category>항플</category><category>항플 백엔드</category><category>항해플러스</category><category>항해99 플러스 백엔드</category></item><item><title>캐시 및 Redis 대기열 이관 - 7주차 WIL</title><link>https://jonghun.dev/blog/tistory-288/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-288/</guid><description>캐싱 분석 보고서 캐싱이란 어플리케이션의 성능을 대폭 상승 시켜주는 대표적인 기술이다. 데이터를 일시적인 공간(캐시)에 저장하는 것을 의미하며, 조회 성능이 더 느린 계층(Disk I/O)에서 발생하는 병목 현상을</description><pubDate>Sun, 10 Nov 2024 07:18:57 GMT</pubDate><category>항해99 플러스 백엔드</category></item><item><title>콘서트 예약 서비스에서의 동시성 이슈 해결 방안 분석 및 성능 테스트 - 6주차 WIL</title><link>https://jonghun.dev/blog/tistory-287/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-287/</guid><description>항플 백엔드에서, 내가 선택한 주제는 콘서트 예약 서비스이다. 콘서트 예약 서비스에서는 아래와 같은 세 가지의 동시성 이슈 발생 가능성이 있다. 유저의 잔액 충전 유저의 좌석 예약 예약된 좌석 결제 동시성 제어와 동</description><pubDate>Wed, 30 Oct 2024 02:18:40 GMT</pubDate><category>kafka</category><category>pub/sub</category><category>redission</category><category>SAGA</category><category>동시성 제어</category><category>항플 6기</category><category>항해99</category><category>항해플러스</category><category>항해99 플러스 백엔드</category></item><item><title>항해99 플러스 백엔드 Chapter2(3,4,5주차) 회고 및 WIL</title><link>https://jonghun.dev/blog/tistory-286/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-286/</guid><description>3,4,5주차에 걸쳐 Chapter2를 진행했다. 이번 회고에서는 주차별로 어떤 과정을 거쳤고, 어떤 문제점을 겪고 해결했는지를 정리해 보려고 한다. 3주차 3주차에는 서비스 시나리오를 선택하는 과정부터 시작했다.</description><pubDate>Thu, 24 Oct 2024 15:34:56 GMT</pubDate><category>wil</category><category>항플</category><category>항해99</category><category>항해플러스</category><category>회고</category><category>항해99 플러스 백엔드</category></item><item><title>항해99 플러스 백엔드 2주차 WIL - 클린아키텍처와 동시성</title><link>https://jonghun.dev/blog/tistory-283/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-283/</guid><description>1주차 발제에서는 TDD와 동시성이 주제였는데, TDD는 이제 기본으로 깔고 들어가야 한다. 이번 주차에서는 클린 아키텍처와 동시성이다. 저번 주차의 동시성은 단일 인스턴스라는 가정하에, DB 없이 락을 구현하는게</description><pubDate>Fri, 04 Oct 2024 05:12:16 GMT</pubDate><category>Clean Architecture</category><category>clean layered architecture</category><category>Facade</category><category>Layered Architecture</category><category>비관적 락</category><category>클린아키텍처</category><category>항해99</category><category>항해플러스</category><category>항해99 플러스 백엔드</category></item><item><title>항해99 플러스 백엔드 1주차 WIL - TDD 와 동시성</title><link>https://jonghun.dev/blog/tistory-282/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-282/</guid><description>1주차이니 플러스백엔드 코스에 대해 간단하게 설명부터 하자면, 항해 99 플러스 백엔드는 현재 재직중인 주니어 개발자들을 대상으로 10주간 기본기를 탄탄하게 다지고, 실무 중심으로 과제를 하나하나 해결해 나가는 코스</description><pubDate>Sat, 28 Sep 2024 06:48:13 GMT</pubDate><category>ReentrantLock</category><category>wil</category><category>동시성</category><category>플러스 백엔드</category><category>항해</category><category>항해99</category><category>항해99 플러스 백엔드</category></item><item><title>인프런 퇴근길 밋업 #7 오픈소스 밋업 참가 후기</title><link>https://jonghun.dev/blog/tistory-280/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-280/</guid><description>9월 11일, 운이 좋게도 Josh Long 밋업과 동시에 오픈소스 밋업에 당첨 소식 문자가 날라왔다. 장소는 이전과 마찬가지로 경기 스타트업캠퍼스였고, Josh Long 밋업 위치와는 다르게 인프랩 사무실에서 진행</description><pubDate>Fri, 20 Sep 2024 03:08:27 GMT</pubDate><category>김인제</category><category>네트워킹</category><category>밋업</category><category>오픈소스</category><category>오픈소스 밋업</category><category>오픈소스pr</category><category>인프랩</category><category>인프런</category><category>인프런 밋업</category><category>인프런퇴근길밋업</category><category>행사 || 후기</category></item><item><title>Bootiful 스프링 부트 with Josh Long 밋업 참가 후기</title><link>https://jonghun.dev/blog/tistory-278/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-278/</guid><description>2024년 9월 9일, 판교의 스타트업캠퍼스에서 인프런 주관으로 Josh Long을 초청하여 밋업 행사가 열렸다. 매번 인프런 퇴근길 밋업 행사에 신청을 넣었지만 계속 떨어지고 있던 찰나, 가장 규모가 큰 퇴근길 밋</description><pubDate>Tue, 10 Sep 2024 03:36:19 GMT</pubDate><category>bootiful spring</category><category>josh long</category><category>joshlong</category><category>spring ai</category><category>springboot밋업</category><category>virtual thread</category><category>밋업 후기</category><category>인프런</category><category>인프런퇴근길밋업</category><category>판교 밋업</category><category>행사 || 후기</category></item><item><title>데이터 압축을 위한 Gorilla 알고리즘 적용 사례: 사내 솔루션 개발기 및 회고</title><link>https://jonghun.dev/blog/tistory-277/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-277/</guid><description>데이터의 양이 기하급수적으로 많은 IT 환경에서, 효율적인 데이터 관리와 저장은 중요한 과제로 떠오르고 있다. 특히 대규모 시계열 데이터를 다루는 경우, 데이터의 저장 공간을 최적화하고 전송 속도를 향상시키는 것이</description><pubDate>Tue, 03 Sep 2024 06:29:35 GMT</pubDate><category>Gorilla</category><category>gorilla algorithm</category><category>RLE</category><category>고릴라</category><category>고릴라 알고리즘</category><category>비트연산</category><category>솔루션 개발</category><category>압축</category><category>압축 솔루션</category><category>회고</category><category>개발일기 || 트러블슈팅</category></item><item><title>시계열 데이터의 압축 - Gorilla Algorithm(고릴라 알고리즘)</title><link>https://jonghun.dev/blog/tistory-274/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-274/</guid><description>사내 데이터베이스에는 엄청나게 많은 시계열 데이터들이 있다. 이 데이터들을 조회하거나 적재할 때 많은 시간이 소요되는데, 이 문제점을 해결해줄 것이 바로 시계열 데이터의 압축(Time-Series Compressio</description><pubDate>Thu, 13 Jun 2024 04:09:55 GMT</pubDate><category>compression</category><category>facebook gorilla</category><category>gorilla algorithm</category><category>time-series compression</category><category>고릴라 알고리즘</category><category>빅데이터 압축</category><category>시계열</category><category>시계열 압축</category><category>압축</category><category>페이스북 고릴라</category><category>기타</category></item><item><title>대용량 데이터의 압축에 대해 알아보자.</title><link>https://jonghun.dev/blog/tistory-273/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-273/</guid><description>회사에서 제공하는 웹 서비스는 B to B 모델이면서, 엄청나게 많은 데이터를 다룬다. (유저 데이터는 아니고 장비 데이터임) 이 웹 서비스의 초기 개발이 마치면서 나에게 기술과제가 하나 주어졌는데 그건 바로 데이터</description><pubDate>Wed, 12 Jun 2024 00:44:13 GMT</pubDate><category>compression</category><category>data compression</category><category>Encode</category><category>Gorilla</category><category>Lossless</category><category>time-series compression</category><category>데이터 압축</category><category>시계열 압축</category><category>압축</category><category>인코딩</category><category>기타</category></item><item><title>JPA에서 대용량 데이터를 읽거나 수정/삭제 할때, 쿼리를 어떻게 작성해야 할까?</title><link>https://jonghun.dev/blog/tistory-272/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-272/</guid><description>회사에서 개발하는 주요 프로젝트는 웹 개발로, B2B 모델이다. 트래픽이 적은 대신, 초 대용량의 데이터가 담겨 있는데, 이러한 데이터를 어떻게 처리하면 좋을지 쿼리 관점에서만 블로그를 작성해 볼 예정이다. 회사 코</description><pubDate>Mon, 10 Jun 2024 08:24:09 GMT</pubDate><category>bulk delete</category><category>bulk select</category><category>java</category><category>JPA Bulk</category><category>개발일기 || 트러블슈팅</category></item><item><title>데이터베이스 인덱싱이란?</title><link>https://jonghun.dev/blog/tistory-271/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-271/</guid><description>데이터베이스 인덱싱이란? 데이터베이스 인덱싱은 데이터베이스 내에서 데이터를 효율적으로 검색하고 관리하기 위해 사용하는 데이터 구조이다. 인덱스는 테이블의 한 열(또는 열의 조합) 에 대한 데이터베이스 오브젝트로, 데</description><pubDate>Sun, 26 May 2024 23:10:29 GMT</pubDate><category>Database</category></item><item><title>Spring OAuth2 JWT방식(1) - 개요</title><link>https://jonghun.dev/blog/tistory-270/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-270/</guid><description>강의를 들은 내용을 토대로 블로그를 작성. OAuth2.0 Client와 Spring Security 6 Framework를 활용하여 소셜로부터 인증을 받고 전달받은 유저 데이터를 활용하여 JWT를 발급하고 인가를</description><pubDate>Thu, 21 Mar 2024 05:31:36 GMT</pubDate><category>oauth2</category><category>spring security</category><category>소셜로그인</category><category>Spring Security</category></item><item><title>스프링 시큐리티 - SESSION (7) DB 기반 로그인 검증</title><link>https://jonghun.dev/blog/tistory-268/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-268/</guid><description>UserEntity에 @Getter 어노테이션 달아주기. CustomUserDetails 클래스 작성. CustomUserDetailsService 클래스 작성.</description><pubDate>Wed, 07 Feb 2024 22:35:24 GMT</pubDate><category>JPA</category><category>MySQL</category><category>SESSION</category><category>Spring</category><category>Spring Boot</category><category>spring security</category><category>세션</category><category>스프링</category><category>스프링 부트</category><category>스프링 시큐리티</category><category>Spring Security</category></item><item><title>스프링 시큐리티 - SESSION (6) DB연동과 회원가입</title><link>https://jonghun.dev/blog/tistory-267/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-267/</guid><description>의존성 주석을 먼저 해제한다. 그 다음 IntelliJ Ultimate버전 사용자라면 Database 탭으로 가서 Mysql을 등록해 준다. 다음으로 Default Query Console을 열고, 아래처럼 data</description><pubDate>Wed, 07 Feb 2024 04:43:02 GMT</pubDate><category>JPA</category><category>MySQL</category><category>SESSION</category><category>Spring</category><category>Spring Boot</category><category>spring security</category><category>세션</category><category>스프링</category><category>스프링 부트</category><category>스프링 시큐리티</category><category>Spring Security</category></item><item><title>스프링 시큐리티 - SESSION (5) 비밀번호 암호화</title><link>https://jonghun.dev/blog/tistory-266/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-266/</guid><description>스프링 시큐리티는 사용자 인증(로그인) 시 비밀번호에 대해 단방향 해시 암호화를 진행하여 저장되어있는 비밀번호와 대조한다. 따라서 회원가입시 비밀번호 항목에 대해서 암호화를 진행해야 한다. 단방향 / 양방향 암호화란</description><pubDate>Wed, 07 Feb 2024 02:07:43 GMT</pubDate><category>SESSION</category><category>Spring</category><category>Spring Boot</category><category>spring security</category><category>단방향</category><category>세션</category><category>스프링</category><category>스프링 부트</category><category>스프링 시큐리티</category><category>암호화</category><category>Spring Security</category></item><item><title>스프링 시큐리티 - SESSION (4) 커스텀 로그인</title><link>https://jonghun.dev/blog/tistory-265/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-265/</guid><description>기존에는 인가가 필요한 경로에 접근 시, 스프링 시큐리티에서 제공하는 로그인 폼을 통해 로그인 했어야 했다. 이 디폴트 로그인 폼을 내가 만든 로그인 폼으로 변경하는 작업을 해보자. login.mustache 파일을</description><pubDate>Tue, 06 Feb 2024 23:45:37 GMT</pubDate><category>mustache</category><category>SESSION</category><category>Spring</category><category>Spring Boot</category><category>spring security</category><category>세션</category><category>스프링</category><category>스프링 부트</category><category>스프링 시큐리티</category><category>Spring Security</category></item><item><title>스프링 시큐리티 - SESSION (3) 인가 작업</title><link>https://jonghun.dev/blog/tistory-264/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-264/</guid><description>config 패키지를 생성하고, SecurityConfig 클래스를 생성하여 시큐리티 인가 작업을 추가해보도록 하자. 스프링 시큐리티 6버전부터는 람다식 형태로 작성해야 한다. 또한, filterChain 방식으로</description><pubDate>Tue, 06 Feb 2024 23:06:21 GMT</pubDate><category>SESSION</category><category>Spring</category><category>Spring Boot</category><category>spring security</category><category>세션</category><category>스프링</category><category>스프링 부트</category><category>스프링 시큐리티</category><category>Spring Security</category></item><item><title>스프링 시큐리티 - SESSION (2) 프로젝트 생성</title><link>https://jonghun.dev/blog/tistory-263/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-263/</guid><description>먼저 brew로 mysql을 설치해주고 실행해보자. 그 다음 brew services라고 터미널에 입력하면, 현재 brew 서비스 상태를 보여주는데, mysql이 실행중이지 않다면 brew services start</description><pubDate>Tue, 06 Feb 2024 22:36:57 GMT</pubDate><category>mustache</category><category>SecurityConfig</category><category>SESSION</category><category>Spring</category><category>Spring Boot</category><category>spring security</category><category>세션</category><category>스프링</category><category>스프링 부트</category><category>스프링 시큐리티</category><category>Spring Security</category></item><item><title>스프링 시큐리티 - SESSION (1) 간단 동작 원리</title><link>https://jonghun.dev/blog/tistory-262/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-262/</guid><description>우리의 스프링 부트 어플리케이션은 서블릿 컨테이너라는 톰캣 서블릿 컨테이너 위에 존재하게 된다. 클라이언트로부터 요청이 들어오면, 먼저 서블릿 컨테이너가 그 요청을 받아서, 그 안에 필터들을 거친 후에, 스프링 부트</description><pubDate>Mon, 05 Feb 2024 23:40:31 GMT</pubDate><category>SESSION</category><category>spring security</category><category>세션</category><category>스프링</category><category>스프링 부트</category><category>스프링 시큐리티</category><category>실습</category><category>Spring Security</category></item><item><title>Spring Security 의 내부 동작 과정</title><link>https://jonghun.dev/blog/tistory-261/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-261/</guid><description>사용자는 자격 증명을 로그인 페이지에 입력하여 백엔드 웹 애플리케이션에 요청을 시작한다. 브라우저 모바일 웹 또는 Postman을 통해 클라이언트는 Spring Security 프레인워크로 보호된 이 요청을 전송한다</description><pubDate>Tue, 02 Jan 2024 02:19:29 GMT</pubDate><category>spring security</category><category>동작과정이해</category><category>스프링</category><category>스프링 부트</category><category>스프링 시큐리티</category><category>Spring Security</category></item><item><title>Spring Security 의 서블릿과 필터</title><link>https://jonghun.dev/blog/tistory-260/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-260/</guid><description>어떤 자바 웹 어플리케이션이던지 요청을 받으면 그것을 HTTP프로토콜로 전송한다. 왜? 우리 브라우저들은 HTTP 프로토콜로만 이해할 수 있기 때문. HTTP프로토콜을 이용해서 내 브라우저들은 내 WAS에 요청을 보</description><pubDate>Fri, 29 Dec 2023 04:38:00 GMT</pubDate><category>Filter</category><category>servlet</category><category>spring security</category><category>스프링 부트</category><category>스프링 시큐리티</category><category>Spring Security</category></item><item><title>Spring Security 같은 보안 FrameWork를 사용해야 하는 이유</title><link>https://jonghun.dev/blog/tistory-259/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-259/</guid><description>애플리케이션 보호는 항상 흥미롭지만 동시에 너무 까다롭다. 우리가 고유한 코드나 프레임워크를 사용하면서 발생하는 웹 어플리케이션의 취약성을 매일 다방면으로 고려하고 대응해야 하기 때문이다. 해커들은 더 많은 취약점을</description><pubDate>Fri, 29 Dec 2023 01:10:26 GMT</pubDate><category>java</category><category>Security</category><category>spring framework</category><category>spring security</category><category>보안</category><category>스프링</category><category>스프링 시큐리티</category><category>스프링부트</category><category>시큐리티</category><category>자바</category><category>Spring Security</category></item><item><title>공유 자원에서의 동시성 이슈는 어떻게 해결해야 할까?</title><link>https://jonghun.dev/blog/tistory-258/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-258/</guid><description>회사의 WAS 서버 API를 개발 도중 공유하는 데이터에 접근해 이를 할당받는 API가 있다. 이 API를 코드리뷰 하던 도중, 프로님 한 분이 동시성 이슈가 들 수 있다고 이야기해 주셔서 이에 관해 글을 정리해 보</description><pubDate>Fri, 15 Dec 2023 01:08:42 GMT</pubDate><category>Isolation</category><category>JPA</category><category>pessimistic lock</category><category>serializable</category><category>Spring Boot</category><category>transaction</category><category>동시성 이슈</category><category>비관적 락</category><category>비관적 잠금</category><category>트랜잭션 격리 수준</category><category>개발일기 || 트러블슈팅</category></item><item><title>pg의 멀티테넌시(스키마) 환경에서 스프링 배치를 어떻게 사용해야 할까?</title><link>https://jonghun.dev/blog/tistory-257/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-257/</guid><description>회사에서 신규 서비스를 개발하고 있는데, API개발과 배치서버 개발 업무를 맡게 되었다. 배치 서버에서는 여러 개의 스키마로 구성된 DB의 한 테이블에서 날짜를 받아 만료처리하는 배치 스케줄러와, 특정 데이터들을</description><pubDate>Thu, 14 Dec 2023 23:40:01 GMT</pubDate><category>JOB</category><category>Multitenancy</category><category>PostgreSQL</category><category>Spring</category><category>Spring Batch</category><category>Step</category><category>멀티테넌시</category><category>분기처리</category><category>스프링 배치</category><category>프로시저</category><category>개발일기 || 트러블슈팅</category></item><item><title>Spring Batch 5 - 5. ItemReader</title><link>https://jonghun.dev/blog/tistory-256/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-256/</guid><description>이전 게시글 https://wn1331.tistory.com/255 Spring Batch 5 - 4. Task 기반 step, Chunk 기반 step Chunk기반 Step에서 ItemReader에 대한 포스팅이</description><pubDate>Sat, 21 Oct 2023 18:29:52 GMT</pubDate><category>Spring Batch</category></item><item><title>Spring Batch 5 - 4. Task 기반 step, Chunk 기반 step</title><link>https://jonghun.dev/blog/tistory-255/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-255/</guid><description>이전 게시글 https://wn1331.tistory.com/254 Spring Batch 5 - 3. Step 개요 1. Task 기반 step task 기반 step은 단순한 배치 처리에 이용되는 step이다.</description><pubDate>Sat, 21 Oct 2023 17:29:31 GMT</pubDate><category>Spring Batch</category></item><item><title>Spring Batch 5 - 3. Step 개요</title><link>https://jonghun.dev/blog/tistory-254/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-254/</guid><description>이전 게시글 : https://wn1331.tistory.com/253 Spring Batch 5 - 2. Batch 설정하기, Job Step에 대해서 tonylim님의 블로그에서 내용을 참조했다. https://</description><pubDate>Fri, 20 Oct 2023 06:38:52 GMT</pubDate><category>chunk</category><category>itemprocessor</category><category>itemreader</category><category>itemwriter</category><category>Spring Batch</category><category>Spring Batch5</category><category>Spring Boot</category><category>Step</category><category>tasklet</category><category>Spring Batch</category></item><item><title>Spring Batch 5 - 2. Batch 설정하기, Job</title><link>https://jonghun.dev/blog/tistory-253/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-253/</guid><description>이전 게시글 https://wn1331.tistory.com/252 Spring Batch 5 - 1. 시작하기 이전 포스팅에서 했던 프로젝트에서 추가로 Batch 설정을 추가한다. 1. Spring Batch Me</description><pubDate>Fri, 20 Oct 2023 06:25:11 GMT</pubDate><category>@JobScope</category><category>chunk</category><category>JOB</category><category>JobExecution</category><category>JobInstance</category><category>JobParam</category><category>jobparameter</category><category>Spring Batch</category><category>Step</category><category>tasklet</category><category>Spring Batch</category></item><item><title>Spring Batch 5 - 1. 시작하기</title><link>https://jonghun.dev/blog/tistory-252/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-252/</guid><description>회사에서 신규 프로젝트를 하는데, 배치 서버를 구축하는 업무를 내가 맡게 되었다. 포스팅은 배치 서버를 구축하는 방법, Job을 생성하고 Tasklet 기반 Step과 Chunk 기반 Step에 대해서 다루어 볼 것</description><pubDate>Fri, 20 Oct 2023 02:02:24 GMT</pubDate><category>docker</category><category>java</category><category>java17</category><category>JPA</category><category>PostgreSQL</category><category>Spring Batch</category><category>Spring Batch 5</category><category>Spring Boot</category><category>spring boot 3</category><category>Spring Batch</category></item><item><title>자바의 차트 라이브러리 - JFreeChart</title><link>https://jonghun.dev/blog/tistory-250/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-250/</guid><description>JFreeChart는 Java로 작성된 오픈 소스 차트 라이브러리로, 다양한 유형의 차트를 생성하고 커스터마이징할 수 있도록 지원한다. 이 라이브러리는 Swing 컴포넌트로 차트를 표시할 수 있으며, 이미지 또는 S</description><pubDate>Thu, 12 Oct 2023 00:48:12 GMT</pubDate><category>JAVA</category></item><item><title>Java8부터 도입된 Stream(2) - Stream 중간처리 메소드</title><link>https://jonghun.dev/blog/tistory-248/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-248/</guid><description>Stream의 중간처리 메소드의 종류들과 사용 방법 중간 처리 메소드의 종류 종류 리턴타입 메소드(매개변수) 소속된 인터페이스 중간 처리 필터링 Stream IntStream LongStream DoubleStrea</description><pubDate>Fri, 11 Aug 2023 06:23:13 GMT</pubDate><category>JAVA</category></item><item><title>Java8부터 도입된 Stream(1) - Stream의 개념</title><link>https://jonghun.dev/blog/tistory-247/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-247/</guid><description>기존에 우리가 알고 있던 스트림은 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름 , 운영체제에 의해 생성되는 가상의 연결 고리를 의미하며, 중간 매개자 역할을 하는 것이었다. 출처 : TCP School JA</description><pubDate>Fri, 11 Aug 2023 00:23:48 GMT</pubDate><category>JAVA</category></item><item><title>프로젝트 1일차(스프링 시큐리티-MSA)</title><link>https://jonghun.dev/blog/tistory-246/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-246/</guid><description>msa에서의 인증/인가 Spring cloud gateway 보안 로직 Gateway에서 우선적으로 처리해 주어야 하는 것은 request를 sanitize하는 것. sanitize란 클라이언트로부터 올바르지 않은</description><pubDate>Sun, 23 Jul 2023 02:06:14 GMT</pubDate></item><item><title>MSA 개발 가이드(9) - 마이크로 서비스 배포(Docker)</title><link>https://jonghun.dev/blog/tistory-241/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-241/</guid><description>마이크로 서비스 배포 Spring Boot로 개발된 마이크로서비스는 독립적인 서비스로, 실행 환경으로는 가상 머신(VM), 컨테이너 기술, 그리고 다양한 클라우드 플랫폼을 고려할 수 있다. 몇 개 정도의 마이크로서비</description><pubDate>Tue, 27 Jun 2023 07:23:47 GMT</pubDate><category>MSA</category></item><item><title>MSA 개발 가이드(8) - Spring Cloud Bus(RabbitMQ)</title><link>https://jonghun.dev/blog/tistory-240/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-240/</guid><description>Config 서버의 설정 값이 변경될 경우, 마이크로서비스들이 변경된 설정 값을 갱신하기 위해서는 마이크로서비스를 재시작하거나, 위 Config Client 예제의 /actuator/refresh를 호출해주어야 한다</description><pubDate>Tue, 27 Jun 2023 02:23:17 GMT</pubDate><category>MSA</category></item><item><title>MSA 개발 가이드(7) - Spring Cloud Config Server/Client</title><link>https://jonghun.dev/blog/tistory-239/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-239/</guid><description>Config 서버 Config 서버는 분산 시스템에서 다수의 애플리케이션 환경 설정 정보를 중앙에서 관리하도록 하는 기능을 제공하는 환경 설정 서버이다. 이것은 서비스 및 비즈니스 로직과 관련된 정보를 애플리케이션으</description><pubDate>Mon, 26 Jun 2023 07:05:41 GMT</pubDate><category>MSA</category></item><item><title>MSA 개발 가이드(6) - Spring Cloud Gateway(Zuul)</title><link>https://jonghun.dev/blog/tistory-238/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-238/</guid><description>API Gateway - Zuul (중요!!) API 게이트웨이는 마이크로서비스 아키텍처(MSA)의 핵심 구성 요소 중 하나로, 클라이언트 요청을 받아 처리하는 단일 진입점을 제공하는 서비스입니다. 이는 프록시 서버</description><pubDate>Mon, 19 Jun 2023 07:55:31 GMT</pubDate><category>MSA</category></item><item><title>MSA 개발 가이드(5) - Spring Cloud Eureka(Service Registry)</title><link>https://jonghun.dev/blog/tistory-237/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-237/</guid><description>Service Registry - Eureka Eureka는 MSA의 장점 중 하나인 동적인 서비스 증설 및 축소를 위하여 필수적으로 필요한 서비스의 자가 등록, 탐색 및 부하 분산에 사용될 수 있는 라이브러리이다.</description><pubDate>Mon, 19 Jun 2023 04:13:46 GMT</pubDate><category>MSA</category></item><item><title>MSA 개발 가이드(4) - Resilience4j(Circuit Breaker)</title><link>https://jonghun.dev/blog/tistory-236/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-236/</guid><description>Spring Cloud의 컴포넌트 활용 클라우드 네이티브한 애플리케이션을 제작하는 과정은 MSA 형태의 애플리케이션 제작뿐만 아니라 실제 서비스가 유연하게 동작하기 위하여 여러 클라우드 컴포넌트와 연동되어야 한다.</description><pubDate>Mon, 19 Jun 2023 02:22:07 GMT</pubDate><category>MSA</category></item><item><title>MSA 개발 가이드(3) - 마이크로 서비스 아키텍처 구현해보기</title><link>https://jonghun.dev/blog/tistory-234/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-234/</guid><description>Spring Boot와 Spring Cloud 컴포넌트를 사용하여 Cloud-Native Application을 제작해 보자. 본 예제에 사용되는 세팅은 다음과 같다. - OpenJDK 17.0.7 - spring-</description><pubDate>Fri, 16 Jun 2023 07:01:58 GMT</pubDate><category>MSA</category></item><item><title>MSA 개발 가이드(2) - Spring Cloud 기반 마이크로서비스(MSA)</title><link>https://jonghun.dev/blog/tistory-233/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-233/</guid><description>MSA 개발 가이드 목차 Spring Boot Spring Cloud 응용프로그램 개발 분야는 Spring 프레임워크의 유례없는 성장과 함께 더 간결하고 빠른 개발을 가능케 하는 패러다임의 변화를 경험했다. Spri</description><pubDate>Fri, 16 Jun 2023 05:23:07 GMT</pubDate><category>microservice architecture</category><category>MSA</category><category>Spring Boot</category><category>spring cloud</category><category>마이크로서비스</category><category>MSA</category></item><item><title>MSA 개발 가이드(1) - MSA란 무엇인가</title><link>https://jonghun.dev/blog/tistory-232/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-232/</guid><description>지금까지 개발했던 프로젝트들은 모두 모놀로식 아키텍처였는데, 신입으로 입사 이후 마이크로서비스 아키텍처라는 것을 접하게 되었다. MSA는 민첩성과 유연성을 장점으로 하는 클라우드 플랫폼에서 개발, 실행, 운영, 관리</description><pubDate>Fri, 16 Jun 2023 05:16:16 GMT</pubDate><category>Microservice</category><category>microservice architecture</category><category>MSA</category><category>MSA SpringBoot</category><category>MSA 가이드</category><category>springboot</category><category>마이크로서비스</category><category>마이크로서비스 아키텍쳐</category><category>서비스메쉬</category><category>서비스메시</category><category>MSA</category></item><item><title>API Gateway의 이해</title><link>https://jonghun.dev/blog/tistory-231/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-231/</guid><description>API Gateway는 클라이언트와 백엔드 서비스 컬렉션 사이에 위치하는 API 관리 툴이며, 모든 서버로의 요청을 단일 지점을 거쳐서 처리하도록 한다. 이를 통해 공통된 로직 처리나 인증 및 인가 처리, 라우팅 처</description><pubDate>Tue, 13 Jun 2023 05:26:53 GMT</pubDate><category>MSA</category></item><item><title>지속적 통합, 지속적 배포란? (CI/CD)</title><link>https://jonghun.dev/blog/tistory-229/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-229/</guid><description>지속적 통합(CI)이란? 지속적 통합은 소프트웨어 개발 프로세스에서 중요한 단계 중 하나이다. 이는 새로운 코드를 작성할 때마다 해당 코드가 이전에 작성한 코드와 잘 통합되는지를 자동으로 검사하는 것을 의미하는데,</description><pubDate>Mon, 15 May 2023 03:17:03 GMT</pubDate><category>기타</category></item><item><title>Kafka 용어 정리 (pub/sub, 토픽, 파티션, 브로커)</title><link>https://jonghun.dev/blog/tistory-228/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-228/</guid><description>Pub/Sub 모델이란? Pub/Sub 모델(Publish-Subscribe Model)은 분산 시스템에서 메시지 전달을 처리하기 위한 패턴 중 하나입니다. 이 모델에서는 메시지 송신자(publisher)가 메시지를</description><pubDate>Fri, 12 May 2023 07:55:58 GMT</pubDate><category>MSA</category></item><item><title>카프카(Apache Kafka)란 무엇인가</title><link>https://jonghun.dev/blog/tistory-227/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-227/</guid><description>아파치 카프카란? Apache Kafka는 전통적인 메시지 시스템으로서 메시징 처리 뿐만 아니라, 사용자의 웹 사이트 활동 추적 파이프라인으로 활용하고 애플리케이션의 통계를 집계해 모니터링 데이터로 사용한다. 예전에</description><pubDate>Fri, 12 May 2023 07:39:45 GMT</pubDate><category>MSA</category></item><item><title>리액트 컴포넌트 가져오기 내보내기</title><link>https://jonghun.dev/blog/tistory-226/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-226/</guid><description>컴포넌트의 장점은 재사용성에 있다. 다른 컴포넌트로 구성된 컴포넌트를 만들 수 있지만 점점 많은 컴포넌트를 중첩할수록 다른 파일로 분리하는 것이 좋다. 루트 컴포넌트 파일 이전 게시물에서 프로필 컴포넌트와 그것을 렌</description><pubDate>Thu, 16 Feb 2023 17:53:40 GMT</pubDate><category>FrontEnd</category></item><item><title>리액트 시작하기.</title><link>https://jonghun.dev/blog/tistory-225/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-225/</guid><description>리액트 공식문서를 토대로 공부를 시작하려고 한다. 리액트 공식문서가 두개가 존재하는데, 한 개는 https://ko.reactjs.org/docs/getting-started.html 시작하기 – React 한국어로</description><pubDate>Thu, 16 Feb 2023 17:29:49 GMT</pubDate><category>FrontEnd</category></item><item><title>네트워크의 기본, 웹의 기본</title><link>https://jonghun.dev/blog/tistory-220/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-220/</guid><description>네트워크와 웹의 기본지식을 익히기 위해서 관련 서적을 하나 구매했다. 책의 이름은 &quot;그림으로 배우는 Http&amp;Network Basic&quot; 이고 책의 내용을 토대로 블로그를 작성할 계획이다. http://www.yes2</description><pubDate>Mon, 16 Jan 2023 10:46:19 GMT</pubDate><category>Network</category></item><item><title>KH_JAVASCRIPT_5_문서 객체 모델(DOM)</title><link>https://jonghun.dev/blog/tistory-218/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-218/</guid><description>문서 객체 모델이란 자바스크립트를 이용하여 웹 문서에 접근하고 제어할 수 있도록 객체를 사용해 웹 문서를 체계적으로 정리하는 방법 - 웹 문서와 그 안의 요소를 &apos;객체&apos; 로 인식하고 처리함. ex) 웹 문서 전체는</description><pubDate>Wed, 11 Jan 2023 11:11:33 GMT</pubDate><category>JAVASCRIPT</category></item><item><title>KH_JAVASCRIPT_4_자바스크립트와 객체</title><link>https://jonghun.dev/blog/tistory-217/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-217/</guid><description>객체(object)란? - 프로그램에서 인식할 수 있는 모든 대상 - 데이터를 저장하고 처리하는 기본 단위 자바스크립트 객체 자바스크립트 안에 미리 객체로 정의해 놓은 것 - 문서 객체 모델(DOM) : 문서 뿐만</description><pubDate>Tue, 10 Jan 2023 07:55:22 GMT</pubDate><category>JAVASCRIPT</category></item><item><title>KH_JAVASCRIPT_3_함수와 이벤트</title><link>https://jonghun.dev/blog/tistory-215/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-215/</guid><description>함수란? - 동작해야 할 목적대로 명령을 묶어 놓은 것. - 각 명령의 시작과 끝을 명확하게 구별할 수 있음 - 묶은 기능에 이름을 붙여서 어디서든 같은 이름으로 명령을 실행할 수 있음 - 자바스크립트에는 이미 여러</description><pubDate>Mon, 09 Jan 2023 08:16:00 GMT</pubDate><category>JAVASCRIPT</category></item><item><title>KH_JAVASCRIPT_2_자바스크립트 기본 문법</title><link>https://jonghun.dev/blog/tistory-214/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-214/</guid><description>변수란 - 변수(Variable) : 값이 여러 번 달라질 수 있는 데이터 - 상수(Constant) : 값을 한번 지정하면 바뀌지 않는 데이터 변수 선언의 규칙 1. 변수 이름 - 영어 문자, 언더스코어, 숫자를</description><pubDate>Mon, 09 Jan 2023 07:39:22 GMT</pubDate><category>JAVASCRIPT</category></item><item><title>KH_JAVASCRIPT_1_자바스크립트 시작</title><link>https://jonghun.dev/blog/tistory-213/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-213/</guid><description>자바스크립트로 무엇을 할까 웹 요소를 제어한다. - 웹 요소를 가져와서 필요에 따라 스타일을 변경하거나 움직이게 할 수 있음 - 웹 사이트 UI 부분에 많이 활용 - 마우스 포인터를 올렸을 때 펼쳐지는 메뉴. 한 화</description><pubDate>Mon, 09 Jan 2023 07:16:42 GMT</pubDate><category>JAVASCRIPT</category></item><item><title>KH_CSS_2_텍스트를 표현하는 다양한 스타일</title><link>https://jonghun.dev/blog/tistory-207/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-207/</guid><description>글꼴 관련 스타일 font-family 속성 - 웹 문서에서 사용할 글꼴 지정 - &lt;body&gt; 태그를 비롯해 &lt;p&gt; 태그나 &lt;hn&gt; 태그처럼 텍스트를 사용하는 요소들에서 사용 - 지정한 글꼴이 없을 경우에 대비해 두</description><pubDate>Thu, 05 Jan 2023 08:37:04 GMT</pubDate><category>PUBLISHING</category></item><item><title>KH_CSS_1_CSS기본</title><link>https://jonghun.dev/blog/tistory-206/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-206/</guid><description>웹 문서에 디자인 입히기 스타일을 사용하는 이유 HTML로는 웹 사이트의 내용을 나열하고 CSS로는 웹 문서의 디자인을 구성한다. -&gt; 스타일을 사용하면 웹 문서의 내용과 상관없이 디자인만 바꿀 수 있다. 스타일과</description><pubDate>Wed, 04 Jan 2023 07:56:37 GMT</pubDate><category>PUBLISHING</category></item><item><title>KH_HTML_4_입력 양식 작성하기</title><link>https://jonghun.dev/blog/tistory-205/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-205/</guid><description>폼 삽입하기 웹에서 만나는 폼 - 사용자가 웹 사이트로 정보를 보낼 수 있는 요소들은 모두 폼(form) - 폼과 관련된 대부분의 작업들은 정보를 저장하거나 검색하거나 수정하는 일들 - 이런 작업은 모두 데이터베이스</description><pubDate>Tue, 03 Jan 2023 10:41:28 GMT</pubDate><category>PUBLISHING</category></item><item><title>KH_HTML_3_다양한 내용 입력하기</title><link>https://jonghun.dev/blog/tistory-204/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-204/</guid><description>텍스트 태그 알아보기 목록 만들기 표 만들기 표의 구조 정의하기 - 표의 구조를 &apos;제목&apos; 과 &apos;본문&apos;, &apos;요약&apos; 부분으로 나눈다. - &lt;thead&gt;, &lt;tbody&gt;, &lt;tfoot&gt; 태그 사용 - 웹 브라우저 화면에서</description><pubDate>Tue, 03 Jan 2023 08:48:42 GMT</pubDate><category>PUBLISHING</category></item><item><title>KH_HTML_2_기본 문서 만들기</title><link>https://jonghun.dev/blog/tistory-203/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-203/</guid><description>HTML이란? 웹에서 자유롭게 오갈 수 있는 웹 문서를 만드는 마크업 언어이다. HTML 문서의 기본 구조 1. &lt;!doctype html&gt; -&gt; 현재 문서가 HTML5 언어로 작성한 웹 문서라는 뜻. 2. &lt;htm</description><pubDate>Tue, 03 Jan 2023 08:15:39 GMT</pubDate><category>PUBLISHING</category></item><item><title>KH_HTML_1_웹 개발 시작하기</title><link>https://jonghun.dev/blog/tistory-202/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-202/</guid><description>웹 개발이란 웹 브라우저 화면에 보이는 겉모습을 만드는 것이 전부가 아니다. 웹 사이트에서 사용자에게 제공할 기능과 서비스까지 모두 담아야 한다. 서버 vs 클라이언트 서버는 인터넷에 연결된 컴퓨터를 뜻한다. 웹 요</description><pubDate>Tue, 03 Jan 2023 06:59:25 GMT</pubDate><category>PUBLISHING</category></item><item><title>KH_ORACLE_12_시퀀스, 인덱스</title><link>https://jonghun.dev/blog/tistory-197/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-197/</guid><description>시퀀스 시퀀스의 개념 이해와 시퀀스 생성 - 오라클에서는 행을 구분하기 위해서 기본 키를 두고 있다. 기본 키는 중복된 값을 가질 수 없으므로 항상 유일한 값을 가져야 한다. - 기본 키가 유일한 값을 갖도록 사용자</description><pubDate>Thu, 22 Dec 2022 08:57:51 GMT</pubDate><category>ORACLE</category></item><item><title>KH_ORACLE_11_가상 테이블인 뷰</title><link>https://jonghun.dev/blog/tistory-196/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-196/</guid><description>뷰의 기본 다루기 View는 한마디로 물리적인 테이블을 근거한 논리적인 가상 테이블이라고 정의할 수 있다. 가상이란 단어는 실직적으로 데이터를 저장하고 있지 않기 때문에 붙인 것이고, 테이블이란 단어는 실질적으로 데</description><pubDate>Thu, 22 Dec 2022 07:59:13 GMT</pubDate><category>ORACLE</category></item><item><title>KH_ORACLE_10_데이터 무결성을 위한 제약 조건</title><link>https://jonghun.dev/blog/tistory-194/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-194/</guid><description>데이터 무결성 제약 조건이란? - 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 테이블을 생성할 때 각 컬럼에 대해서 정의하는 여러 가지 규칙을 말한다. 무결한 데이터의 5가지 제약 조건 무결성 제약 조건</description><pubDate>Wed, 21 Dec 2022 08:16:12 GMT</pubDate><category>ORACLE</category></item><item><title>KH_ORACLE_09_트랜잭션 관리, 데이터읽기일관성과 락(Lock)</title><link>https://jonghun.dev/blog/tistory-193/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-193/</guid><description>트랜잭션 오라클에서 발생하는 여러 개의 SQL 명령문들을 하나의 논리적인 작업 단위로 처리하는데 이를 트랜잭션이라고 한다. 하나의 트랜잭션은 ALL - OR - Nothing 방식으로 처리된다. 즉, 여러 개의 명령</description><pubDate>Wed, 21 Dec 2022 05:28:24 GMT</pubDate><category>ORACLE</category></item><item><title>KH_ORACLE_08_DML</title><link>https://jonghun.dev/blog/tistory-192/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-192/</guid><description>테이블에 새로운 행을 추가하는 INSERT 문 INSERT문은 테이블에 새로운 데이터를 입력하기 위해 사용하는 데이터 조작어이다. INSERT 구문의 오류 발생 예 칼럼 명에 기술된 목록의 수보다 VALUES 다음에</description><pubDate>Wed, 21 Dec 2022 04:26:10 GMT</pubDate><category>ORACLE</category></item><item><title>KH_ORACLE_07_DDL</title><link>https://jonghun.dev/blog/tistory-191/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-191/</guid><description>DDL의 종류에는 CREATE, ALTER, DROP, TRUNCATE + RENAME이 있다. 테이블의 구조를 정의하는 CREATE TABLE CREATE TABLE 명령어는 새로운 테이블을 생성한다. 식별자 명명</description><pubDate>Tue, 20 Dec 2022 11:06:03 GMT</pubDate><category>ORACLE</category></item><item><title>KH_ORACLE_06_서브쿼리</title><link>https://jonghun.dev/blog/tistory-190/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-190/</guid><description>서브 쿼리의 기본 개념 - 서브 쿼리는 하나의 SELECT 문장의 절 안에 포함된 또 하나의 SELECT 문장이다. - 서브 쿼리를 포함하고 있는 쿼리문을 메인 쿼리, 포함된 또 하나의 쿼리를 서브 쿼리라고 한다.</description><pubDate>Tue, 20 Dec 2022 10:31:03 GMT</pubDate><category>ORACLE</category></item><item><title>KH_ORACLE_05_조인</title><link>https://jonghun.dev/blog/tistory-189/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-189/</guid><description>조인의 필요성 특정 부서 번호에 대한 부서이름은 무엇인지는 부서 테이블에 있다. 특정 사원에 대한 부서명을 알아내기 위해서는 부서 테이블에서 정보를 얻어 와야 한다. SQL에서는 두 개 이상의 테이블을 결합해야만 원</description><pubDate>Tue, 20 Dec 2022 10:21:33 GMT</pubDate><category>ORACLE</category></item><item><title>KH_ORACLE_04_그룹 쿼리와 집합 연산자</title><link>https://jonghun.dev/blog/tistory-188/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-188/</guid><description>기본 집계 함수 그룹 함수는 하나 이상의 행을 그룹으로 묶어 연산하여 총합, 평균 등 하나의 결과로 나타난다. 그룹 함수의 종류 합계를 구하는 SUM 함수 SUM 함수는 해당 칼럼 값들에 대한 총합을 구하는 함수이다</description><pubDate>Tue, 20 Dec 2022 09:27:50 GMT</pubDate><category>ORACLE</category></item><item><title>KH_ORACLE_03_SQL 주요 함수</title><link>https://jonghun.dev/blog/tistory-187/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-187/</guid><description>DUAL 테이블과 SQL 함수 분류 DUAL 테이블은 DUMMY라는 단 하나의 컬럼에 X라는 단 하나의 로우만을 저장하고 있으나 이 값은 아무런 의미가 없다. DUAL 테이블은 산술 연산의 결과를 한 줄로 얻기 위해</description><pubDate>Tue, 20 Dec 2022 08:49:20 GMT</pubDate><category>ORACLE</category></item><item><title>KH_ORACLE_02_SELECT로 특정 데이터 추출하기</title><link>https://jonghun.dev/blog/tistory-186/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-186/</guid><description>WHERE 조건과 비교 연산자 원하는 로우만 얻으려면 제한하는 조건을 SELECT 문제 WHERE절을 추가하여 제시해야 한다. 비교 연산자 문자 데이터 조회 SQL에서 문자열이나 날짜는 반드시 작은따옴표 안에 표시해</description><pubDate>Tue, 20 Dec 2022 08:12:04 GMT</pubDate><category>ORACLE</category></item><item><title>KH_ORACLE_01_SQL의 기본</title><link>https://jonghun.dev/blog/tistory-185/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-185/</guid><description>테이블 구조를 살펴보기 위한 DESC - 테이블에서 데이터를 조회하기 위해서는 테이블의 구조를 알아야 한다. 테이블의 구조를 확인하기 위한 명령어로는 DESCRIBE가 있다. - DESC 명령어는 테이블의 컬럼명,</description><pubDate>Tue, 20 Dec 2022 07:55:29 GMT</pubDate><category>ORACLE</category></item><item><title>KH_JAVA_13_예외처리</title><link>https://jonghun.dev/blog/tistory-75/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-75/</guid><description>예외와 예외 클래스 오류의 종류 1. 에러 - 하드웨어의 잘못된 동작 또는 고장으로 인한 오류 - 에러가 발생되면 프로그램 종료 - 정상 실행 상태로 돌아갈 수 없음 2. 예외(Exception) - 사용자의 잘못된</description><pubDate>Mon, 21 Nov 2022 11:33:37 GMT</pubDate><category>이론_JAVA</category></item><item><title>KH_JAVA_12_중첩 클래스와 중첩 인터페이스</title><link>https://jonghun.dev/blog/tistory-74/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-74/</guid><description>중첩 클래스 클래스의 멤버로서 선언되는 중첩 클래스를 멤버 클래스라고 하고, 메소드 내부에서 선언되는 중첩 클래스를 로컬 클래스라고 한다., 인스턴스 멤버 클래스 인스턴스 멤버 클래스는 인스턴스 필드와 메소드만 선언</description><pubDate>Mon, 21 Nov 2022 10:46:42 GMT</pubDate><category>이론_JAVA</category></item><item><title>추상 클래스와 인터페이스의 차이</title><link>https://jonghun.dev/blog/tistory-47/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-47/</guid><description>추상 클래스는 일반 클래스와 별 다를 것이 없다. 추상 메소드를 사용해서 상속을 통해 자식 클래스에서 완성하도록 유도하는 클래스인데, 이러한 구조 때문에 미완성 설계도라고 표현하기도 한다. 상속을 위한 클래스이기 때</description><pubDate>Fri, 18 Nov 2022 10:44:13 GMT</pubDate><category>JAVA</category></item><item><title>KH_JAVA_11_인터페이스</title><link>https://jonghun.dev/blog/tistory-46/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-46/</guid><description>인터페이스 인터페이스의 역할 객체의 교환성을 높여주기 때문에 다형성을 구현하는 매우 중요한 역할을 한다. 인터페이스 선언 인터페이스는 상수와 추상 메소드로 구성되어 있다. 또한 디폴트 메소드와 정적 메소드는 자바 8</description><pubDate>Fri, 18 Nov 2022 07:35:24 GMT</pubDate><category>이론_JAVA</category></item><item><title>KH자바수업_10_추상 클래스</title><link>https://jonghun.dev/blog/tistory-44/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-44/</guid><description>추상 클래스 추상 클래스의 개념 실체 클래스들의 공통되는 필드와 메소드를 정의한 클래스이다. 추상 클래스는 실체 클래스의 부모 클래스 역할(단독 객체 x) 추상 클래스는 자체적으로 객체를 생성할 수 없다. 상속받은</description><pubDate>Thu, 17 Nov 2022 11:49:01 GMT</pubDate><category>이론_JAVA</category></item><item><title>클래스 다이어그램(Class - Diagram)</title><link>https://jonghun.dev/blog/tistory-33/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-33/</guid><description>접근 제한자 - private + public ~ default # protected Full 클래스명 com.kh.member.model.vo.Member 필드 - memberId : String - memberP</description><pubDate>Tue, 15 Nov 2022 12:34:44 GMT</pubDate><category>기타</category></item><item><title>KH자바수업_9_다형성</title><link>https://jonghun.dev/blog/tistory-29/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-29/</guid><description>다형성 하나의 코드가 여러 가지 자료형으로 구현되어 실행되는 것이다. 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 개념이다. 다형성 구현하기 하나의 클래스를 상속받은 여러 클래스가 있는 경우 각 클래스마다</description><pubDate>Mon, 14 Nov 2022 12:22:32 GMT</pubDate><category>이론_JAVA</category></item><item><title>Eclipse MAC 단축키</title><link>https://jonghun.dev/blog/tistory-28/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-28/</guid><description>Command +D -&gt; 한 줄 지우기 Option + Space Bar -&gt; 빠른 동작. Preference - keys 로 가서 직접 설정해 주어야 함. ex) syso.. sysout.. Option + 방향키</description><pubDate>Mon, 14 Nov 2022 07:54:45 GMT</pubDate><category>기타</category></item><item><title>KH자바수업_8_상속</title><link>https://jonghun.dev/blog/tistory-27/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-27/</guid><description>상속 클래스를 정의할 때 이미 구현된 클래스를 상속받아서 속성이나 기능이 확장되는 클래스를 구현함. 상속하는 클래스 : 상위 클래스, parent class, base class, super class 상속받는 클래</description><pubDate>Mon, 14 Nov 2022 07:53:29 GMT</pubDate><category>이론_JAVA</category></item><item><title>Git GUI SourceTree 사용법(MAC)</title><link>https://jonghun.dev/blog/tistory-26/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-26/</guid><description>우리가 사용하는 gitHub를 원격 저장소라고 하고, 프로젝트가 실제 컴퓨터에 저장되어 있는 저장소를 로컬 저장소라고 한다. 원격 저장소는 다른 사람들과 함께 공유하고 관리할 수 있다. 원격 저장소 로컬 저장소는 내</description><pubDate>Fri, 11 Nov 2022 12:44:56 GMT</pubDate><category>Git</category></item><item><title>KH자바수업_7_다차원 배열, ArrayList</title><link>https://jonghun.dev/blog/tistory-25/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-25/</guid><description>다차원 배열 2차원 이상의 배열을 다차원 배열이라 일컫는다. 지도, 게임 등 평면이나 공간을 구현할 때 많이 사용된다. EX) 2차원 배열의 접근, 출력 방법은 다중 for문을 사용하는 것이다. 2차원 배열이라면 2</description><pubDate>Fri, 11 Nov 2022 10:11:18 GMT</pubDate><category>이론_JAVA</category></item><item><title>KH자바수업_6_배열</title><link>https://jonghun.dev/blog/tistory-23/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-23/</guid><description>배열 자료를 순차적으로 관리하는 구조. 예를 들어 정수 20개를 이용한 프로그램을 할 때, 20개의 정수 타입의 변수를 선언해야 한다. 하지만 이러한 방식은 비효율적이고 변수관리도 힘들다. 배열은 동일한 자료형의 변</description><pubDate>Thu, 10 Nov 2022 12:01:11 GMT</pubDate><category>이론_JAVA</category></item><item><title>학부생(용인대학교 컴퓨터과학과 1~4학년) 네이버 블로그는 하단 링크에 있습니다.</title><link>https://jonghun.dev/blog/tistory-16/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-16/</guid><description>https://blog.naver.com/wnwhdgns12 프로그래밍 블로그 : 네이버 블로그</description><pubDate>Thu, 10 Nov 2022 02:39:46 GMT</pubDate></item><item><title>KH자바수업_5_클래스와 객체 2</title><link>https://jonghun.dev/blog/tistory-10/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-10/</guid><description>this 예약어 this는 인스턴스 스스로를 가리키는 예약어이다. 자신의 메모리를 가리키며, 생성자에서 다른 생성자를 호출하고, 자신의 주소를 반환하기도 한다. 자신의 메모리를 가리키는 this 클래스를 생성하고 자</description><pubDate>Wed, 09 Nov 2022 12:18:22 GMT</pubDate><category>이론_JAVA</category></item><item><title>KH자바수업_4_생성자</title><link>https://jonghun.dev/blog/tistory-8/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-8/</guid><description>생성자 클래스를 처음 만들 때 멤버 변수나 상수를 초기화 한다. 1. 생성자는 인스턴스를 초기화 할 때의 명령어 집합이다. 2. 생성자의 이름은 그 클래스의 이름과 같다. 3. 생성자는 메소드가 아니고, 상속되지 않</description><pubDate>Wed, 09 Nov 2022 09:49:23 GMT</pubDate><category>이론_JAVA</category></item><item><title>KH자바수업_3_클래스와 객체</title><link>https://jonghun.dev/blog/tistory-7/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-7/</guid><description>객체 구체적, 추상적 데이터 단위이다. 객체의 속성에는 객체의 특성, 속성, 멤버 변수가 있다.(property, attribute, member variable) 객체의 기능 객체가 하는 기능들을 메서드로 구현 객</description><pubDate>Tue, 08 Nov 2022 12:29:03 GMT</pubDate><category>이론_JAVA</category></item><item><title>KH자바수업_2_제어문, 반복문</title><link>https://jonghun.dev/blog/tistory-6/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-6/</guid><description>제어문 if-else 문 1. 조건문의 가장 단순한 형식은 if문. 2. 조건식이 참일 경우에 중괄호 안에 잇는 문장을 수행한다. 3. 중괄호 안의 코드가 한 줄일 시 중괄호 생략 가능. 4. 조건식이 false인</description><pubDate>Tue, 08 Nov 2022 10:24:47 GMT</pubDate><category>이론_JAVA</category></item><item><title>KH자바수업_1_변수와 자료형, 연산자</title><link>https://jonghun.dev/blog/tistory-5/</link><guid isPermaLink="true">https://jonghun.dev/blog/tistory-5/</guid><description>변수 변수란? 변수란 하나의 값을 저장할 수 있는 메모리 공간이다. 변수의 선언 변수의 사용 변수값 저장 - 변수에 값을 저장할 때에는 대입 연산자( = ) 를 사용한다. - 변수에 직접 입력된 값을 리터럴이라고 부</description><pubDate>Tue, 08 Nov 2022 06:38:04 GMT</pubDate><category>이론_JAVA</category></item></channel></rss>