전체보기 (17) 썸네일형 리스트형 [Go] Go에서 랜덤값 생성하기 목차Golang을 사용해서 숫자 맞추기 게임을 만들어보았다. 게임을 만들면서 rand 패키지를 사용하여 랜덤값을 생성하였는데, 이때 학습한 내용을 간단히 정리하고자 한다. rand.Intn(range)math 패키지의 rand.Intn(range) | 0 함수를 사용하면 랜덤 한 int를 생성할 수 있다. 이때 range의 범위는 half-open [0, range)이다.여기서 주의할 점은 rand 패키지를 통해 생성되는 랜던값은 완전한 랜덤이 아닌 유사 랜덤값이다.유사 랜덤이란 어떤 알고리즘에 의해서 마치 랜덤인 것처럼 보이는 값을 말한다. 이는 컴퓨터의 논리 회로와 산술 연산은 같은 입력에 대해서 같은 결괏값을 만들어내기 때문이다. 그렇기 때문에 단순히 rand.Intn(range) 함수만 사용하면.. [Spring Batch] 동일한 Job과 Step이 반복 실행되지 않는 문제 목차# 문제티켓팅 프로젝트에서 배치 잡을 구현하면서 다음과 같은 예외를 마주하였다.java.lang.IllegalStateException: Failed to execute ApplicationRunner ...Caused by: org.springframework.batch.core.repository.JobExecutionAlreadyRunningException: A job execution for this job is already running: # 원인스프링 배치는 기본적으로 잡과 스텝의 상태를 저장하고 이에 기반하여 잡과 스텝의 실행을 1번 만 수행할 수 있도록 보장한다. 배치 잡이 실행되면 JobInstance가 생성된다. 이때 JobInstance는 잡의 논리적 실행을 나타내며 두 가지 .. [Spring Batch] @EnableBatchProcessing 적용시 배치 잡이 동작하지 않는 문제 목차# 문제 티켓팅 프로젝트를 개발하면서 Spring Batch를 이용하여 배치 잡을 구현했다. 배치 잡을 구현하면서 배치 서버 기동 시 헬스체크 테스트를 위한 배치 잡을 구현하였는데, @EnableBatchProcessing 어노테이션을 configuration 클래스에 적용했음에도 기본 잡이 실행되지 않는 문제가 발생하였다. 테스트 배치 잡의 경우 프로젝트에서 필요한 기능은 아니었기 때문에 중요한 문제는 아니었지만, 왜 동작하지 않았는지에 대해서 간단하게 정리해보고자 한다. # 원인 문제의 원인은 SpringBoot 3.0 부터 DefaultBatchConfiguration 클래스 혹은 EnableBatchProcessing 어노테이션을 선언할 경우 배치 잡의 자동 실행하는 것을 제한하는 로직이 추가.. [AWS] AWS SAA-C03 6일 합격 후기 목차AWS를 통해 배포환경을 구축하면서 정말 다양한 서비스를 AWS에서 지원하는 것을 알 수 있었습니다. 현재 AWS는 전 세계적으로 200대가 넘은 완벽한 기능의 서비스를 제공하고 있고, 세계적으로 가장 포괄적이며, 널리 채택되고 있는 클라우드 서비스이다. 단순히 배포뿐만 아니라 AWS에서 제공하는 서비스에 대한 전반적인 학습을 하고자 AWS Certified Solutions Architect - Associate(SAA-C03) 시험을 보게 되었습니다. 시험은 6일 동안 준비하였고, 간단하게 합격한 후기와 팁을 남겨보고자 합니다.AWS Certified Solutions Architect - Associate AWS Certified Solutions Architect - Associate # .. [Docker] 이미지 캐시를 활용한 이미지 빌드 시간 개선하기 목차 들어가며 프로젝트를 진행하면서 애플리케이션을 수동으로 배포하는 과정이 생산성에 영향을 주게 되어, Github Actions와 도커를 활용하여 CICD 파이프라인을 구축했다. 이때 애플리케이션을 도커 이미지로 빌드한 뒤 배포를 수행하였는데, 이미지 레이어의 캐시를 통해서 빌드 시간을 단축했던 경험에 대해서 작성하려고 한다. 코드 푸시부터 도커 이미지를 빌드하는 프로세스를 먼저 살펴보면 다음과 같다. 깃헙에 소스코드가 푸시되면 Github actions의 Workflow가 순차적으로 동작한다. 가장 먼저 애플리케이션의 테스트와 빌드가 실행된다. 그리고 빌드가 성공적으로 끝나면 도커 이미지를 생성하고, 도커 허브에 이미지를 푸시하게 된다. 도커 이미지 애플리케이션이 동작하기 위해서는 다양한 요소가 필요.. [JPA] 트랜잭션 전파로 인해 업데이트 쿼리가 발행되지 않은 문제 해결하기 목차 들어가며 프로젝트를 수행하면서 동시성 문제를 redisson을 활용하여 해결하였다. 해당 글은 아래에서 확인할 수 있다. [Spring & Spring Boot] - [Redisson] SpringBoot + Redisson을 활용한 동시성 문제 해결하기 [Redisson] SpringBoot + Redisson을 활용한 동시성 문제 해결하기 # 들어가며 SpringBoot를 기반으로 실시간 투표 애플리케이션을 구현하면서, 한 가지 실험을 수행했다. 멀티 스레드 환경에서 다수의 클라이언트 요청이 동시에 하나의 글에 투표를 진행하면 정상 ditto-dev.tistory.com 하지만 문제를 해결하기 위해서 임계 영역에 대한 락을 발행하였지만, 데이터베이스에 값이 갱신되지 않는 상황이 발생하였다. 문제.. [Redisson] SpringBoot + Redisson을 활용한 동시성 문제 해결하기 목차 들어가며 SpringBoot를 기반으로 실시간 투표 애플리케이션을 구현하면서, 한 가지 실험을 수행했다. 멀티 스레드 환경에서 다수의 클라이언트 요청이 동시에 하나의 글에 투표를 진행하면 정상적으로 동작할 수 있을까? 실험의 시나리오는 다음과 같다. [상황] 찬성 투표가 100개인 투표 글이 있다. 찬성표를 반대표로 변경하기 위한 업데이트 요청을 동시에 100번 수행한다. [예상 결과] 투표 글의 찬성 투표수는 0이 된다. 투표 글의 반대 투표수는 100이 된다. 시나리오 테스트 코드를 작성한 결과, 예상한 결과와는 다른 결과를 얻을 수 있었다. 문제 정의 테스트를 수행하면서 마주한 문제는 멀티 스레드 환경에서 접할 수 있는 동시성 문제이다. 애플리케이션은 스프링부트를 기반으로 구현되었고, 내장 톰.. [SpringBoot / ERROR] @RequestParam 예외: Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. 목차 프로젝트를 수행하면서 우연히 질문을 받게 되었다. @RequestParam에 value 속성을 지정하지 않으면 예외가 발생하는가? -sky- 기본적으로 @RequestParam과 @PathVariable은 request의 파라미터와 매개변수의 이름이 동일하다면, value 속성을 생략할 수 있다. 또한 @RequestParam 어노테이션도 생략할 수 있다. 그렇기 때문에 당연하게 발생하지 않고, 매개변수의 이름과 파라미터의 이름이 같다면 어노테이션도 생략할 수 있다고 답했다. 하지만 당연하다고 생각했던 것이 예외를 발생시켰다. 예외를 발생시킨 코드는 아래와 같다. @GetMapping("/login") public ResponseEntity getPostByParam(@RequestParam Str.. 이전 1 2 3 다음