<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Hello backEnd</title>
    <link>https://hello-backend.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 31 May 2026 01:24:46 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>철매존</managingEditor>
    <image>
      <title>Hello backEnd</title>
      <url>https://tistory1.daumcdn.net/tistory/4708642/attach/7d320066fc8841f7a9fd7cbeaab21549</url>
      <link>https://hello-backend.tistory.com</link>
    </image>
    <item>
      <title>K8S 에서 상태를 관리하는 방법을 살짝만 알아보자</title>
      <link>https://hello-backend.tistory.com/419</link>
      <description>K8S 에서 상태를 관리하는 방법을 살짝만 알아보자
그 전에 일단 Stateless 와 Stateful 에 대해 비교하면

Stateless
말 그대로 상태가 없다.
언제든지 죽거나 생성해도 되며, pod 의 존재 하나하나가 서비스에 영향을 주지 않는다.
보통의 웹이나 API 서비스 등은 stateless 에 해당한다


Stateful
얘는 반대로 상태가 충만한 친구
죽었다가 살아나는 경우 이전의 데이터, 식별자, IP 를 유지한다.
주로 DB, MQ..</description>
      <category>이론 정리/인프라</category>
      <category>EmptyDir</category>
      <category>k8s</category>
      <category>Kubernetes</category>
      <category>PV</category>
      <category>pvc</category>
      <category>stateful</category>
      <category>stateless</category>
      <author>철매존</author>
      <guid isPermaLink="true">https://hello-backend.tistory.com/419</guid>
      <comments>https://hello-backend.tistory.com/419#entry419comment</comments>
      <pubDate>Mon, 2 Mar 2026 22:55:24 +0900</pubDate>
    </item>
    <item>
      <title>분산 트랜잭션에서 2PC, 3PC, Calvin, Spanner, 퍼콜레이터, RAMP 동작 방식에 대한 짧은 글</title>
      <link>https://hello-backend.tistory.com/418</link>
      <description>애플리케이션이 아니라 데이터베이스, 인프라 관점에서 이를 처리하는 방법에 대해서 서술(그래서 SAGA가 없었군)
데이터베이스 인터널스 책을 보면서 살짝 고민했던 부분과 거기서 궁금했던 점, 그리고 추가로 동작하는 방식에 대해 공부한 것을 토대로 작성했다.
&amp;nbsp;
2PC

준비

코디네이터가 코홀트에게 준비되었는지 물어봄
코홀트는 트랜잭션을 실행하고 디스크에 로그 기록한 후에 커밋 준비 되었는지 응답


커밋/중단

준비 단계에서 커밋 준비 안됐으면..</description>
      <category>이론 정리/Database</category>
      <category>2PC</category>
      <category>3PC</category>
      <category>Calvin</category>
      <category>데이터베이스</category>
      <category>분산</category>
      <category>시스템</category>
      <category>인터널스</category>
      <category>처리</category>
      <category>칼빈</category>
      <category>트랜잭션</category>
      <author>철매존</author>
      <guid isPermaLink="true">https://hello-backend.tistory.com/418</guid>
      <comments>https://hello-backend.tistory.com/418#entry418comment</comments>
      <pubDate>Sun, 4 Jan 2026 05:16:10 +0900</pubDate>
    </item>
    <item>
      <title>JDK LTS 와 각각의 내용에 대해 간략히 알아보자(JDK8, JDK11, JDK17, JDK21, JDK25)</title>
      <link>https://hello-backend.tistory.com/417</link>
      <description>일단 Java 에서 LTS 는 현재까지

JDK8
JDK11
JDK17
JDK21
JDK25

가 있다.
우리는 기본적으로 JDK21 을 쓰고 있는데, 그래서 이걸 써서 뭐가 좋아졌어? 하면 뭔가 피상적인 대답밖에 할 수 없었어서&amp;hellip; 무엇이 좋아졌는지를 조금 더 상세히 보려 한다.
JDK8
아마 책에서 modern java 라고 하면 얘를 많이 대상으로 했을 것이다.이전 java 랑은 차원이 다르게 많이 바뀌기도 했고 자바를 쓸 일이 있으면 ..</description>
      <category>이론 정리/java</category>
      <author>철매존</author>
      <guid isPermaLink="true">https://hello-backend.tistory.com/417</guid>
      <comments>https://hello-backend.tistory.com/417#entry417comment</comments>
      <pubDate>Fri, 10 Oct 2025 01:06:34 +0900</pubDate>
    </item>
    <item>
      <title>간략한 Shenandoah GC 방식 설명</title>
      <link>https://hello-backend.tistory.com/416</link>
      <description>ZGC처럼 STW이 유발하는 지연 시간을 줄이는 것이 목표
개념
포워딩 포인터, 배리어 두개를 통해 동시 압축을 구현했다.

포워딩 포인터(Forwarding Pointer)

모든 객체는 헤더에 1word 크기의 포워딩 포인터를 위한 추가 공간을 가진다. (평상시는 자기 자신을 지칭)

1word 는 보통 해당 시스템의 레지스터 크기나 메모리 주소의 크기와 같다.

32비트에서는 32비트
64비트에서는 64비트




객체의 주소가 변경되면 기존 주소..</description>
      <category>이론 정리/java</category>
      <author>철매존</author>
      <guid isPermaLink="true">https://hello-backend.tistory.com/416</guid>
      <comments>https://hello-backend.tistory.com/416#entry416comment</comments>
      <pubDate>Fri, 10 Oct 2025 00:46:36 +0900</pubDate>
    </item>
    <item>
      <title>간략한 ZGC 방식 설명</title>
      <link>https://hello-backend.tistory.com/415</link>
      <description>힙 크기가 무관하게 일시정지 시간을 1ms 미만으로 보장하는 것이 목표참고로 얘는 64비트 이상의 컴퓨터에서만 활용 가능하다(컬러드 포인터의 동작 방식과 연관이 있음)
개념
컬러드 포인터, 로드 베리어라는 것이 핵심이다.

컬러드 포인터(Colored Pointer)

64비트 운영체제에서 메모리 주소는 64비트를 다 사용하지 않는데(64비트는 진짜 개커서 실제로 컴퓨터는 48/52비트를 사용하도록 설계되어 있기 때문) 그래서 나머지 비트는 잉여 공간이..</description>
      <category>이론 정리/java</category>
      <author>철매존</author>
      <guid isPermaLink="true">https://hello-backend.tistory.com/415</guid>
      <comments>https://hello-backend.tistory.com/415#entry415comment</comments>
      <pubDate>Fri, 10 Oct 2025 00:46:00 +0900</pubDate>
    </item>
    <item>
      <title>간략한 G1GC 방식 설명</title>
      <link>https://hello-backend.tistory.com/414</link>
      <description>여기서 '1' 은 one 이 아니라 first 라고 생각하면 된다.즉, garbage 를 먼저 처리하는 방식이다.
개념
이전의 serial, parallel GC 에서는 Young 영역과 old 영역을 물리적으로 나누어 두었는데, 이거는 다른 식으로 생각한다.

전체 Heap 을 여러 개의 'Region' 으로 나눈다. (보통은 heap 영역의 크기에 맞춰서 2048개의 region 을 만들도록 각 region 의 크기를 결정한다.)
각각의 region..</description>
      <category>이론 정리/java</category>
      <author>철매존</author>
      <guid isPermaLink="true">https://hello-backend.tistory.com/414</guid>
      <comments>https://hello-backend.tistory.com/414#entry414comment</comments>
      <pubDate>Fri, 10 Oct 2025 00:44:49 +0900</pubDate>
    </item>
    <item>
      <title>간략한 Serial, Parellal GC 방식 설명</title>
      <link>https://hello-backend.tistory.com/413</link>
      <description>Heap Memory 구조

Young Generation

새로 생성된 객체 대부분이 여기 있다.
이거는 3개로 나뉜다. eden, survivor0, survivor1

Eden : 새로 생기면 여기 있음
Survivor0, Survivor1 : Eden 에서 최소 한 번 이상 살아남으면 여기 있다. 하나의 영역에 모든 애들이 존재하고 Minor GC 단계에서 스와핑함




Old Generation

Young Generation 에서 여러번 G..</description>
      <category>이론 정리/java</category>
      <author>철매존</author>
      <guid isPermaLink="true">https://hello-backend.tistory.com/413</guid>
      <comments>https://hello-backend.tistory.com/413#entry413comment</comments>
      <pubDate>Thu, 9 Oct 2025 19:50:53 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 14567 java 풀이</title>
      <link>https://hello-backend.tistory.com/412</link>
      <description>DP 문제이다.
선수과목에서 숫자가 큰거보다 나중에 들어야하는 작은거는 없다.
작은거부터 큰거로 가면서 이전 선수과목 중 가장 기수가 높은거 + 1 해주면 된다.
그리고 그 과정에서 이 과목이 내꺼의 선수과목인지를 미리 체크해서 그걸 쓰면 됨
&amp;nbsp;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Sc..</description>
      <category>알고리즘 공부</category>
      <author>철매존</author>
      <guid isPermaLink="true">https://hello-backend.tistory.com/412</guid>
      <comments>https://hello-backend.tistory.com/412#entry412comment</comments>
      <pubDate>Sun, 14 Sep 2025 01:23:27 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 2303 재풀이</title>
      <link>https://hello-backend.tistory.com/411</link>
      <description>DP로 푼다.
내꺼 기준 왼쪽만 본다.
&amp;nbsp;
- 내가 왼쪽이랑 숫자를 바꾸려 하면 : 왼쪽 숫자는 변경되지 않은 상태일때만 가능
- 내가 왼쪽이랑 숫자를 바뀌지 않는다면 : 왼쪽 숫자가 변경되었든 아니든 상관 없음.
&amp;nbsp;
근데 내 왼쪽이 vip거나 내가 vip 면 그냥 왼쪽의 모든 방법을 더해주면 된다.
&amp;nbsp;
즉, 앞의 상태를 가지고 있는 DP
&amp;nbsp;
import java.util.Scanner;

class Main {
  ..</description>
      <category>알고리즘 공부</category>
      <author>철매존</author>
      <guid isPermaLink="true">https://hello-backend.tistory.com/411</guid>
      <comments>https://hello-backend.tistory.com/411#entry411comment</comments>
      <pubDate>Sun, 14 Sep 2025 01:01:23 +0900</pubDate>
    </item>
    <item>
      <title>BOJ 17070 java 풀이</title>
      <link>https://hello-backend.tistory.com/410</link>
      <description>DP 문제이고 (BFS 쓰면 시간초과남)
중요한건 결국 &quot;해당 위치에 도달하는 방법을 구하면 된다&quot;
예를 들어 왼쪽으로 오는 방법은 왼쪽/대각선, 세로로 오는 방법은 세로/대각선, 대각선으로 오는 방법은 왼쪽/세로/대각선
그래서 그 이전에 있던 방법들을 구하면 됨
&amp;nbsp;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner..</description>
      <category>알고리즘 공부</category>
      <author>철매존</author>
      <guid isPermaLink="true">https://hello-backend.tistory.com/410</guid>
      <comments>https://hello-backend.tistory.com/410#entry410comment</comments>
      <pubDate>Sun, 14 Sep 2025 00:23:15 +0900</pubDate>
    </item>
  </channel>
</rss>