전체 글 205

[개발일지] spring batch를 통한 대량 이메일 발송 기능 개발 - 3 (redis Shed lock, @Scheduled, 분산락)

이전 포스트https://2junbeom.tistory.com/205 [개발일지] spring batch를 통한 대량 이메일 발송 기능 개발 - 2 (AWS SES로의 마이그레이션, 적절한 스https://2junbeom.tistory.com/204이전 포스트 [개발일지] spring batch를 통한 대량 이메일 발송 기능 개발 - 1 (멀티 스레딩 동시성 문제)spring batch 도입현재 진행 중인 프로젝트에서 이메일을 대량으로 발송2junbeom.tistory.com 분산락 도입 과정우리 서비스는 여러 대의 서버가 작동하는 상황이다. 새벽 3시에 자동으로 이메일 전송을 하게 만드려면 @Scheduled 어노테이션을 활용해야 한다. 그러나 서버 여러 대에 모두 @Scheduled 어노테이션이 걸려..

[개발일지] spring batch를 통한 대량 이메일 발송 기능 개발 - 2 (AWS SES로의 마이그레이션, 적절한 스레드 개수와 청크 사이즈 계산, 쿼리 최적화, 스레드 동적 생성)

https://2junbeom.tistory.com/204이전 포스트 [개발일지] spring batch를 통한 대량 이메일 발송 기능 개발 - 1 (멀티 스레딩 동시성 문제)spring batch 도입현재 진행 중인 프로젝트에서 이메일을 대량으로 발송하는 기능을 개발해야했다. 대량 메일 발송 기능을 위해 spring batch 기능을 도입했다. spring batch 도입 이유는 다음과 같다.메모2junbeom.tistory.com SES 선택 이유대량 메일 발송 서비스에서 가장 유명한 서비스는 두 개가 있었다. 1. AWS SES2. SendGrid 두 개의 장단점을 비교해보자 SES장점비용 저렴 : 1000건 당 $0.1기존 배포 및 서비스를 모두 AWS에서 사용하고 있었기에 통합이 쉽고로그 관리에..

[개발일지] spring batch를 통한 대량 이메일 발송 기능 개발 - 1 (멀티 스레딩 동시성 문제)

spring batch 도입현재 진행 중인 프로젝트에서 이메일을 대량으로 발송하는 기능을 개발해야했다. 대량 메일 발송 기능을 위해 spring batch 기능을 도입했다. spring batch 도입 이유는 다음과 같다.메모리 최적화한 번에 모든 객체를 메모리에 올려서 처리하는 게 아니라 chunk 단위로 메모리에 올려 처리하기 때문에,메모리 최적화에 용이하다.쉬운 재시도이메일 발송의 경우 초당 전송량이 제한돼 있기 때문에, 이메일 전송에 실패할 가능성이 높다.모든 회원에게 이메일을 실패없이 보내는 것을 목표로 하기 때문에, 재시도는 필수이고이러한 재시도는 spring batch에서 쉽게 구성할 수 있다.병렬 처리 기능멀티 스레딩, 파티셔닝 등의 기능을 지원하여 이를 기반으로 원할한 병렬 처리가 가능하..

백준 2800번 괄호 제거 (java)

[Gold IV] 괄호 제거 - 2800문제 링크성능 요약메모리: 19808 KB, 시간: 240 ms분류자료 구조, 문자열, 브루트포스 알고리즘, 스택제출 일자2025년 5월 9일 09:44:20문제 설명어떤 수식이 주어졌을 때, 괄호를 제거해서 나올 수 있는 서로 다른 식의 개수를 계산하는 프로그램을 작성하시오.이 수식은 괄호가 올바르게 쳐져 있다. 예를 들면, 1+2, (3+4), (3+4*(5+6))와 같은 식은 괄호가 서로 쌍이 맞으므로 올바른 식이다.하지만, 1+(2*3, ((2+3)*4 와 같은 식은 쌍이 맞지 않는 괄호가 있으므로 올바른 식이 아니다.괄호를 제거할 때는, 항상 쌍이 되는 괄호끼리 제거해야 한다.예를들어 (2+(2*2)+2)에서 괄호를 제거하면, (2+2*2+2), 2+(2*..

백준 15831번 준표의 조약돌 (java)

[Gold IV] 준표의 조약돌 - 15831문제 링크성능 요약메모리: 28852 KB, 시간: 256 ms분류두 포인터제출 일자2025년 4월 30일 09:46:20문제 설명그림1. 준표가 좋아하는 하얀색의 미미준표는 오랜만에 미미와 함께 산책을 나왔다. 산책로에는 일렬로 검은색과 흰색 조약돌이 놓여 있다. 총 N개의 조약돌은 1번부터 N번까지 차례로 번호가 붙여져 있다. 준표는 이 조약돌을 주워 집에 장식하려고 한다.준표는 임의의 지점에서 산책을 시작하고, 원하는 지점에서 산책로를 빠져나와 집으로 돌아간다. 이때 준표는 산책한 구간에 있는 모든 조약돌을 줍는다. 미미의 건강을 위해 준표는 조금이라도 더 긴 구간을 산책하고 싶다. 하지만 준표에게는 확고한 취향이 있어, 아래 조건을 만족하는 구간만을 산..

[정보처리기사] 2025년 1회차(4월 20일) 실기 시험 후기

공부 기간코딩 문제랑 sql 문제만 다 맞추면 60점은 나오기에 별 다른 공부를 하지는 않았다.워낙에 암기를 싫어하는 성격이기도 하고, 운영체제랑 컴퓨터 네트워크, 알고리즘 등 수업은 다 1등을 할 정도로 열심히 공부했었기에내 대학 시절 기억을 믿기로 했다. 실기 기출만 5일 정도 돌려보고 시험을 보러 갔다. 내 전략은 알고리즘, sql 문제 다 맞추고 개념 문제 1,2개 더 맞추기! 실기 시험 준비물볼펜, 화이트, 계산기, 신분증 이 정도만 챙겨가면 된다. 시험지 아래 부분에 계산식을 적을 공간이 존재하기 때문에, 연습장을 챙겨가지 않아도 된다. 시험 후기알고리즘 문제가 좀 더럽게 나왔다.재귀가 굉장히 많고 (출제자 중 재귀 변태가 있는 것이 분명) 비트 연산문제도 나왔다. 짜증나긴 했으나 못 풀 정도..

[정보처리기사] 실기 문제 정리 - 3 (2023년 1회, 2022년 3회)

insert into 학생(학번, 이름, 학년,전공, 전화번호) values 9830287, '뉴진스', 3, '경영학개론', '010-1234-1234' 열 이름을 적어줄 때 따옴표는 필요없다. 5. 다음은 C언어의 문제이다. 알맞은 출력값을 작성하시오. 12345678910111213141516171819#include stdio.h> void main(){ int n[3] = {73, 95, 82}; int sum = 0; for(int i=0;i3;i++){ sum += n[i]; } switch(sum/30){ case 10: case 9: printf("A"); case 8: printf("B"); c..

[정보처리기사] 실기 문제 정리 - 2 (2024년 1회, 2023년 3회, 2023년 2회)

>는 화살표 대가리 방향으로 이동해야 한다. 서브넷으로 가르고 맨 첫 시작 주소인 0과 브로드 캐스트 주소인 255를 제외하고 찾으면 됨 정답: 2)192.168.35.724)129.200.8.2495)192.168.36.249 기본키는 고객아이디와 강좌명이라고 한다. 영어 회화가 강사번호 003, 001을 가르킨다 즉, 부분함수 종속이 존재하지 않는 완전함수 종속 상태+ 강사번호가 강좌명을 결정하지도 않으니 뭐 이행적 함수종속도 만족 결론 3정규형 내부 라우팅 프로토콜은RIP (routing information protocol) : 최대 홉수 제한OSPF: 최단 거리 찾기 외부 라우팅 프로토콜BGP(Border Gateway Protocol): 미리 정해진 정책에 따라서 경로를 지정한다. 세타 조..

백준 7562번 나이트의 이동 (java)

[Silver I] 나이트의 이동 - 7562문제 링크성능 요약메모리: 98092 KB, 시간: 484 ms분류너비 우선 탐색, 그래프 이론, 그래프 탐색제출 일자2025년 4월 11일 11:32:43문제 설명체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까?입력입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다.각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체스판의 한 변의 길이 l(4 ≤ l ≤ 300)이 주어진다. 체스판의 크기는 l × l이다. 체스판의 각 칸은 두 수의 쌍 {0, ..., l-1} × {0, ..., l-1}로 나타낼 수 있..

[프로그래머스] Level3 [1차] 셔틀버스 (JAVA)

[level 3] [1차] 셔틀버스 - 17678문제 링크성능 요약메모리: 93.9 MB, 시간: 24.52 ms구분코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT채점결과정확성: 100.0합계: 100.0 / 100.0제출 일자2025년 04월 09일 15:08:57문제 설명셔틀버스카카오에서는 무료 셔틀버스를 운행하기 때문에 판교역에서 편하게 사무실로 올 수 있다. 카카오의 직원은 서로를 '크루'라고 부르는데, 아침마다 많은 크루들이 이 셔틀을 이용하여 출근한다.이 문제에서는 편의를 위해 셔틀은 다음과 같은 규칙으로 운행한다고 가정하자.셔틀은 09:00부터 총 n회 t분 간격으로 역에 도착하며, 하나의 셔틀에는 최대 m명의 승객이 탈 수 있다.셔틀은 도착했을 때 도착한 순간에 대기..