반응형

분류 전체보기 419

284. Peeking Iterator java 풀이

이게 왜 미디엄..? 이라는 생각이 들정도로 다른 것들이랑 차이가 많이 나는 문제이다.솔직히 풀이랄것도 없다. 그냥 맨 위 값을 캐싱하면 해결된다. // Java Iterator interface reference:// https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.htmlclass PeekingIterator implements Iterator { Iterator iterator; Integer cache; public PeekingIterator(Iterator iterator) { this.iterator = iterator; cache = iterator.next(); } // Returns ..

알고리즘 공부 2026.08.02

211. Design Add and Search Words Data Structure java 풀이

이거는 앞의 문제 https://hello-backend.tistory.com/423 이거를 풀었으면 매우 쉽다.그냥 저장은 똑같고, DFS 찾을 때에 . 이면 거기 싹다 찾으면 된다. class Word { boolean isEnd; Word[] word = new Word[26];}class WordDictionary { Word root; public WordDictionary() { root = new Word(); } // 객체가 객체를 저장하는 형태 // 결국 특정 알파뱃에 대하여 그 아래에 객체가 존재하고 ... -> 반복 시 모든 문자열의 형태가 저장된다. // 그렇다면 어떻게 확인할 수 있을까? // DFS 를 통..

알고리즘 공부 2026.08.02

208. Implement Trie (Prefix Tree)

대체 뭐 어떻게 하는건지 감도 안왔었다.결국 중요한건 1. 단어를 만들 때 각 알파뱃까지로 만들어진 객체가 있는지를 보고2. 그 아래로 쭉쭉 만들어가면서 만들고 확인할 때에는 1. DFS 를 써서 확인할 단어로 보다가2. 정확히 일치하면 맞는거3. prefix 인 경우는 그거만 확인하면 됨 으로 진행하면 된다.뭔가 지금까지 하면서 느낀게, 이런 구현들은 객체를 어떻게 만들지를 보는 것 같다.요구조건에 따라 객체를 잘 만들면 해결 자체는 수월해 보임. class Word { boolean isEnd; Word[] cha = new Word[26]; // a ~ z 까지, 그리고 그 내부로 들어가면 그것 또한 트리의 형태.}class Trie { // 처음부터 확인한다. // 노드로 ..

알고리즘 공부 2026.08.02

LeetCode - 173. Binary Search Tree Iterator java 풀이

푸는 방법을 생각해 내는게 어려운 문제.방법을 알면 푸는건 간단한데 생각하기가 참 어렵다. 중요한건 노드 기준으로 볼 때 현재 노드의 왼쪽 아래 : 이것보다 작음왼쪽의 왼쪽 아래 : 더 작음현재 노드의 오른쪽 아래 : 이것보다 큼현재 노드의 오른쪽 아래 : 내 위보다는 작음 이거를 기억하면 된다. 스택에 노드에서 왼쪽으로 가면서 쭉 넣어주고next 할 때에는 노드에서 값을 꺼내서 보여주고, 현재 기준 오른쪽 노드를 기준으로도 쭉 확인해보기hasNext 는 스택이 비어있지 않으면 가능/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; *..

알고리즘 공부 2026.08.02

LeetCode - LRU Cache java 문제풀이

내가 이런 구현에 재능이 없었다.참 오래 공부를 안했다.강의를 대충 보고 풀었는데도 1시간 정도 소요되었다. 문제를 보고 풀이를 할 때 좀 더 확실히 보고 풀어야겠다는 생각이 든다. import java.util.*;// 이중 LinkedList 를 구현할 Classclass CacheItem { CacheItem prev; CacheItem next; int key; int value; public CacheItem(int key, int value) { this.key = key; this.value = value; }}class LRUCache { // 맨 앞, 맨 뒤에 접근해야 한다. // Double Linked Lis..

알고리즘 공부 2026.08.02

Virtual Thread 와 Synchronized, 그리고 Concurrent 클래스의 ReentrantLock에 관하여

요즘 참 공부를 안하고 살았다.그냥 안한게 아니라 어떤 공부를 하는게 맞는지, 뭘 해야 하는지도 모르겠어서 더 문제였다.사실 개인적으로 스트레스도 워낙 많았기 때문에... 더 손에 잡히지 않기도 했다.암튼 기회가 있어서 virtual thread 쪽을 좀 파보는데, 이게 좀 이상한 부분이 있었다.Thread Pool 이 고갈되는 것을 막아주는 데에 큰 역할을 하는데 synchronized 블록을 사용한 상태에서 Block 되면 VT가 Carrier Thread에 고정되어 버린다는것.그래서 잠깐 고민을 해봤는데 synchronized 는 그럼 못쓰는건가? Atomic Class 는 CAS니까 어차피 unmount 대상도 아니고, Concurrent 는 어떨까 싶었다.이전에 JDK에 대해 공부할 때에 Con..

이론 정리/java 2026.07.31

K8S 에서 상태를 관리하는 방법을 살짝만 알아보자

K8S 에서 상태를 관리하는 방법을 살짝만 알아보자그 전에 일단 Stateless 와 Stateful 에 대해 비교하면Stateless말 그대로 상태가 없다.언제든지 죽거나 생성해도 되며, pod 의 존재 하나하나가 서비스에 영향을 주지 않는다.보통의 웹이나 API 서비스 등은 stateless 에 해당한다Stateful얘는 반대로 상태가 충만한 친구죽었다가 살아나는 경우 이전의 데이터, 식별자, IP 를 유지한다.주로 DB, MQ 처럼 데이터 자체를 저장하고 다른 곳에서 같은 곳을 바라보는 것에 사용한다.여기까지는 아마 대부분 알고 있을 것이라고 생각한다.백엔드는 주로 Stateless 를 선호한다.이유는 사실 뻔하기는 하다.수평 확장 용이딱히 뭔가 데이터를 관리하는게 아니라, 트래픽이 늘어나면 파드 ..

분산 트랜잭션에서 2PC, 3PC, Calvin, Spanner, 퍼콜레이터, RAMP 동작 방식에 대한 짧은 글

애플리케이션이 아니라 데이터베이스, 인프라 관점에서 이를 처리하는 방법에 대해서 서술(그래서 SAGA가 없었군)데이터베이스 인터널스 책을 보면서 살짝 고민했던 부분과 거기서 궁금했던 점, 그리고 추가로 동작하는 방식에 대해 공부한 것을 토대로 작성했다. 2PC준비코디네이터가 코홀트에게 준비되었는지 물어봄코홀트는 트랜잭션을 실행하고 디스크에 로그 기록한 후에 커밋 준비 되었는지 응답커밋/중단준비 단계에서 커밋 준비 안됐으면 ABORT다 준비 됐으면 커밋 명령코홀트는 진행/롤백 후 확인 메세지 전달장애 상황코호트가 장애prepare 단계의 장애이건 상관 X (무조건 Abort)YES 이후 장애코호트가 다시 살아났더니 YES 이후 자신이 어떤 상태인지 모름(Uncertain)코디네이터에게 질의 필요커밋 메세지..

JDK LTS 와 각각의 내용에 대해 간략히 알아보자(JDK8, JDK11, JDK17, JDK21, JDK25)

일단 Java 에서 LTS 는 현재까지JDK8JDK11JDK17JDK21JDK25가 있다.우리는 기본적으로 JDK21 을 쓰고 있는데, 그래서 이걸 써서 뭐가 좋아졌어? 하면 뭔가 피상적인 대답밖에 할 수 없었어서… 무엇이 좋아졌는지를 조금 더 상세히 보려 한다.JDK8아마 책에서 modern java 라고 하면 얘를 많이 대상으로 했을 것이다.이전 java 랑은 차원이 다르게 많이 바뀌기도 했고 자바를 쓸 일이 있으면 최소한 이거는 써야 한다는 생각이 든다.JDK8의 특징특징은 다음과 같다.Lambda ExpressionStream APIOptionalLocalDate이미 워낙 유명해서 딱히 뭐 설명할만한 특성은 없다.한가지 재미있는 부분은 람다'식' 과 스트림'API' 라는 이름인데 저게 다른 이름으..

이론 정리/java 2025.10.10
반응형