지금까지(OOM 디버깅기, systemd 자동 복구) 서버가 죽어도 스스로 복구되도록 만들었다. 근데 곰곰이 생각해보니 아직 빈 구멍이 하나 있었다 — 자동 복구가 안 되는 종류의 장애(예: AWS 인스턴스 자체의 상태 이상)가 나면, 나는 여전히 "우연히 콘솔에 들어
지난 글(AWS t3.micro에서 스프링 부트가 자꾸 죽던 이유(1\. \*\*인스턴스가 재부팅되면 다시 켜지지 않는다\*\*\*\* — 사람이 SSH로 접속해서 다시 실행해줘야 한다\*\*프로세스가 죽으면 그걸로 끝\*\* — 재시작해주는 사람이 없으면 계속 죽어있
개인 프로젝트로 관심 종목의 공시를 자동으로 크롤링해서 텔레그램으로 알려주는 서비스를 AWS EC2 t3.micro에 배포해서 운영 중이었다. 배포 직후엔 멀쩡하게 잘 돌아갔는데, 며칠 뒤 사이트에 들어가보니 화면은 뜨는데 "데이터 수집 대기 중..."에서 멈춰 있었다
HashMap은 자바의 Map 인터페이스를 구현한 대표적인 컬렉션입니다. Key(키)-Value(값) 쌍으로 데이터를 관리하며, 가장 큰 특징은 Key를 통해 Value를 찾는 속도가 O(1)(상수 시간)로 매우 빠르다는 점입니다.⚠️ 주의: HashMap은 저장된 데
자바(Java)로 알고리즘 문제를 풀거나 실무 코드를 작성하다 보면, "두 숫자의 크기 비교하기"와 "배열 안의 숫자 모두 더하기"는 숨 쉬듯 자주 마주치는 패턴입니다.매번 if-else문과 for문을 쓰다 보면 코드가 길어지고 지저분해지기 마련이죠. 오늘은 이 두 가
안녕하세요! 오늘은 백준이나 프로그래머스 코딩 테스트를 풀 때 문자열이나 배열을 다루다 보면 무조건 마주치는 "정렬(Sorting)"에 대한 꿀팁을 가져왔습니다.최근 프로그래머스의 '전국 대회 선발 고사' 문제를 풀다가 엄청난 치트키를 배우게 되어서, 까먹지 않기 위해
알고리즘 문제를 풀다 보면 "가장 마지막에 넣은 데이터를 먼저 빼야 하는" 상황이 자주 발생합니다. (예: 괄호 짝 맞추기, 뒤로 가기 버튼, 최근 숫자 지우기 등)이럴 때 사용하는 자료구조가 바로 스택(Stack), 즉 LIFO(Last In, First Out) 구
사용자가 입력한 데이터나 외부 파일을 읽어올 때, 띄어쓰기가 아주 예쁘게 한 칸씩만 되어있다면 얼마나 좋을까요? 하지만 현실은 그렇지 않습니다.위 문자열처럼 맨 앞에 공백이 있거나, 단어 사이의 띄어쓰기 칸 수가 제멋대로인 문자열을 단순히 split(" ")으로 자르면
split() 뒤에 붙는 숫자의 비밀: limit 파라미터의 3가지 마법블로그 시작에 앞서 split()에 대해 잘 모른다면 위의 블로그를 먼저 보고 오시는거 추천드려요!코딩 테스트에서 문자열을 특정 기호(구분자)로 잘라 배열로 만들어야 하는 문제는 단골로 출제됩니다.
자바에서 문자열을 자를 때 가장 많이 쓰는 메서드는 단연 split()입니다. 보통은 split(",") 처럼 구분자만 넣어서 사용하죠.그런데 다른 사람의 코드를 보다 보면 split(",", 3) 이나 split(",", -1) 처럼 뒤에 정체모를 숫자가 붙어있는 것
자바(Java)로 알고리즘 문제를 풀거나 실무 코드를 작성하다 보면, "두 숫자의 크기 비교하기"와 "배열 안의 숫자 모두 더하기"는 숨 쉬듯 자주 마주치는 패턴입니다.매번 if-else문과 for문을 쓰다 보면 코드가 길어지고 지저분해지기 마련이죠. 오늘은 이 두 가
알고리즘 문제를 풀거나 문자열을 특정 인덱스 단위로 수정해야 할 때, 문자열을 문자 배열(char\[])로 쪼갠 뒤 다시 합치는 작업을 자주 하게 됩니다. 이 과정에서 많은 자바 입문자들이 toString()을 사용했다가 엉뚱한 출력값을 보고 당황하곤 합니다.오늘은 c
자바 8부터 도입된 Stream API를 처음 접하게 되면 가장 먼저 드는 의문이 있습니다."이미 배열(Array)이나 리스트(List)로 데이터를 잘 다루고 있었는데, 왜 굳이 스트림(Stream)이라는 것을 또 써야 할까? 둘 다 여러 개의 데이터를 다루는 것 아닌
자바(Java)로 알고리즘 문제를 풀거나 스트림(Stream) API를 다루다 보면, 컬렉션(List 등)을 원시 타입 배열(int\[])로 변환할 때 .mapToInt(i -> i)라는 코드를 매우 자주 사용하게 됩니다.처음 이 문법을 접하면 "이게 정확히 무슨 뜻이
자바에서 배열(Array)과 리스트(ArrayList)를 다룰 때 자주 마주치는 두 가지 현상이 있습니다. 배열을 출력할 때 발생하는 해시코드 출력 문제와, ArrayList를 배열로 변환할 때 new String\[0]을 인자로 넘기는 이유입니다.오늘은 이 두 가지
알고리즘 문제를 풀다 보면 결과값의 크기를 미리 알 수 없어 동적 배열인 ArrayList에 데이터를 담아두는 경우가 많습니다. 하지만 문제의 반환 타입(Return Type)이 기본형 배열인 int\[]로 고정되어 있다면 타입 불일치 문제가 발생합니다.ArrayLis
자바(Java)로 알고리즘 문제를 풀거나 문자열을 다룰 때, 문자열 안의 글자를 하나씩 꺼내서 확인해야 하는 경우가 정말 많습니다. 아마 자바를 처음 배우셨다면 아래와 같은 코드가 가장 익숙하실 겁니다.기존 방식 (charAt 사용)물론 이 코드도 훌륭하게 작동하지만,
자바(Java)로 알고리즘 문제를 풀거나 실무를 하다 보면, 문자열에 포함된 특정 문자(예: 'w', 'a', 's', 'd')에 따라 변수의 값을 다르게 조작해야 하는 경우가 자주 발생합니다.가장 먼저 떠오르는 방법은 if-else문이겠지만, 상황에 따라 가독성을 높
자바(Java)로 알고리즘 문제를 풀거나 문자열을 다루다 보면, 로직은 완벽한 것 같은데 이상하게 에러가 나거나 결과가 중간에 잘리는 경험을 하곤 합니다. 오늘은 자바 입문자들이 가장 많이 겪는 문자열 처리 관련 3가지 실수와 올바른 해결법을 정리해 보았습니다.토큰의
자바에서 문자열(String)은 정말 자주 사용하지만, 은근히 실수하기 쉬운 부분들이 많습니다. 오늘은 문자열 자르기부터 올바른 초기화 방법, 그리고 메모리를 효율적으로 사용하는 StringBuilder까지 정리해 보겠습니다.문자열의 특정 부분만 잘라내고 싶을 때는 s