전체 글6 [Spring] S3 파일 업로드 멀티 스레드 방식의 비동기 처리 문제 상황지난해 개발한 서비스에서 운영 중 하나의 상품에 고용량 이미지를 10장을 업로드하여 timeout이 발생하는 문제가 있었습니다. 이로 인해 상품 등록이 완료되기 전에 동일 요청이 들어와 동일한 상품이 2개 DB 등록되기도 했습니다. 이 문제는 DB에서 제약조건을 걸어 해결하였고, 관련 포스팅은 다음 작성해서 링크를 걸어 놓으려고 합니다. 다시 본론으로 돌아와 timeout이 발생한 근본적인 이유는 무엇일까요? 상품 등록은 크게 3가지 과정을 거칩니다.1. 원본 이미지 S3 업로드2. 이미지 리사이징 (썸네일 이미지)3. 썸네일 이미지 S3 업로드 당시 코드는 동기적으로 모든 이미지를 1,2,3 번 과정을 거치고 있었고, 가장 수행 볼륨이 큰 1번에서 많은 시간이 소요된 것으로 보입니다. 당시에는.. Spring 2025. 5. 29. [Java] 2225번: 합분해 문제0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하시오.덧셈의 순서가 바뀐 경우는 다른 경우로 센다(1+2와 2+1은 서로 다른 경우). 또한 한 개의 수를 여러 번 쓸 수도 있다.입력첫째 줄에 두 정수 N(1 ≤ N ≤ 200), K(1 ≤ K ≤ 200)가 주어진다.출력첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다.풀이완전탐색으로는 절대 불가능한 시간복잡도였다. 그래서 고려할 수 있는 건 분할정복, 이분탐색, 방문처리 이런 것들이 있지만 이 문제에는 적용되지 않는다. 그렇다면 시간복잡도를 줄일 수 있는 더 대표적인 방법 점화식을 활용한 DP기법이다. n=6, k=4 일 때, 직접 표를 그려보면 다음에 올 dp값에 대한 정보를 규칙을 통.. Algorithm/DP 2025. 5. 27. [Java] 8983번: 사냥꾼 문제KOI 사냥터에는 N 마리의 동물들이 각각 특정한 위치에 살고 있다. 사냥터에 온 사냥꾼은 일직선 상에 위치한 M 개의 사대(총을 쏘는 장소)에서만 사격이 가능하다. 편의상, 일직선을 x-축이라 가정하고, 사대의 위치 x1, x2, ..., xM은 x-좌표 값이라고 하자. 각 동물이 사는 위치는 (a1, b1), (a2, b2), ..., (aN, bN)과 같이 x,y-좌표 값으로 표시하자. 동물의 위치를 나타내는 모든 좌표 값은 양의 정수이다.사냥꾼이 가지고 있는 총의 사정거리가 L이라고 하면, 사냥꾼은 한 사대에서 거리가 L 보다 작거나 같은 위치의 동물들을 잡을 수 있다고 한다. 단, 사대의 위치 xi와 동물의 위치 (aj, bj) 간의 거리는 |xi-aj| + bj로 계산한다.예를 들어, 아래.. Algorithm/이분탐색 2025. 5. 22. 요청 매핑(RequestMapping) @RequestMapping("/hello-basic") /hello-basic URL 호출이 오면 이 메서드가 실행하도록 매핑한다. 대부분의 속성은 배열로 제공하므로 다중 설정이 가능하다. {"/hello-basic", "/hello-go"} Spring 2022. 1. 25. 로깅 로깅은 System.out.println()같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다. 로그 선언 private Logger log = LoggerFactory.getLogger(getClass()); private static final Logger log = LoggerFactory.getLogger(Xxx.class) 이 선언들을 대체하기 위해 @Slf4j 롬복 사용 로그 호출 log.info("hello") System.out.println("hello") 올바른 사용법 log.debug("data={}", data) log.debug("date=" + data) 더하기 연산이 발생하기 때문에 사용하지 않는다. 로그 사용시 장점 1.. Spring 2022. 1. 25. Chapter 1 관계형 모델 * 관계형 데이터베이스의 구조 - 관계형 데이터베이스는 테이블(고유한 이름을 가지고 있음)의 모임이다. - 관계형 모델에서의 릴레이션(투플들의 집합)은 테이블을 의미하는 단어로 사용된다. ※ 투플: 릴레이션의 행 - 릴레이션의 각 속성은 도메인이라고 하는 허가된 값의 집합을 가지고 있다. * 키 - 주어진 릴레이션 안에서 투플을 구별하는 방법이 있어야 한다. * 관계형 질의어 질의어는 사용자가 데이터베이스로부터 정보를 요청할 때 사용하는 언어이다. * 관계 연산 - 조인(join) 연산은 두 릴레이션을 합치는 연산이다. Database 2021. 6. 16. 이전 1 다음