본문 바로가기

Java6

쿠폰 서비스의 쿠폰 발급 단계별 로직 개발 쿠폰 발급 로직 단계별 개발쿠폰 발급하는 로직을 3단계에 나누어 개발을 진행했다.각 단계별로 어떻게 개발을 했고 어떤 특징과 장단점이 있는지 알아보자.단계는 다음과 같다.1. v1 - db를 사용한 기본 구현 방법2. v2 - Redis를 이용한 분산락 방법3. v3 - Kafka를 통한 비동기 처리 방법 1. v1 - db를 사용한 기본 구현db 트랜잭션과 동시요청 처리에 초점을 맞춤쿠폰 정책의 잔여 수량을 확인하고 성공하면 db에 저장하고 실패하면 실패응답을 반환한다.동시성제어를 db 레벨에서만 처리하기 때문에 적절한 lock이 없다.그러므로 트랜잭션내 연산으로 동시성 문제를 최대한 방지하도록 개발함다음은 v1 의 issueCoupon 메서드이다.@Transactionalpublic Coupon is.. 2025. 4. 9.
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference c Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: com.example.springbootredis.model.User["createdAt"]) Spring Boot에서 Redis에 데이터를 저장할 때, Jackson을 사용하여 객체를 JSON으로 직렬화(Serialization)하는 과정에서 .. 2025. 3. 16.
gradle build 에러 Mac 터미널에서 gradle build 를 하는데 에러가 발생했다. makefile 코드는 다음과 같다.# backend-build: Build the backendbackend-build: @echo "Building backend..." cd backend/Graphizer-Global && gradle build makefile이 있는 곳에서 backend-build를 실행했는데다음과 같은 에러가 발생했다.taekgyu@taekgyuui-MacBookAir DT_P_Graphizer_Global % make backend-buildBuilding backend...cd backend/Graphizer-Global && gradle build> Task :Common-Se.. 2024. 10. 31.
인텔리j jdk 버전 다른 프로젝트 진행할 때 설정 jdk 11 프로젝트 clone 받아서 실행하는데 오류가 생겼다. 물론 자바버전 8이든 11이든 변경해주면 된다. 1차적으로 프로젝트를 실행하니 could not target platform 'java se 11' using tool chain 'jdk 8 (1.8)' 에러가 발생했다. jdk 버전 수정하고 돌려도 또 에러가 다음과 같은 에러가 발생한다. Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: info/thecodinglive/photoapp/App has been compiled by .. 2022. 8. 9.
객체지향 프로그래밍이란? 객체 지향 프로그래밍이란? 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 ‘객체’들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.(협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 객체지향 프로그래밍은 레고 블럭 조립하듯이, 컴퓨터 부품 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법이다. 객체지향의 장점으로 코드의 재 사용성이 높다. 새로운 코드를 작성할 때 기존 코드를 이용하여 쉽게 작성할 수 있다. 코드의 관리가 용이하다.(유지보수가 용이하다.) 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를.. 2022. 4. 17.
Java - 멤버변수, 지역변수, 클래스변수, 인스턴스변수 변수를 선언위치에 따라 크게 구분하면 딱 2가지로 나눌 수 있다. 바로 멤버변수 / 지역변수 입니다. 멤버변수는 선언위치가 '클래스 영역' 이고, 지역변수의 선언위치는 '메소드나 생성자 내부' 이다 멤버변수는 다시 두 가지로 나누어진다 바로 클래스변수 / 인스턴스변수 이다 이 둘은 같은 멤버변수에 속하지만 필요한 상황이 굉장히 다르다 이해를 돕기 위해 예를 하나 들어보겠다. 우리가 게임을 처음 시작할 때, 캐릭터를 하나 만든다. 캐릭터를 만들 때 머리색깔을 블랙,골드,브라운 중에서 고를 수 있다고 하면, 머리색깔이라는 변수는 모든 캐릭터마다 다른 값을 가질 수 있다. 즉, 각각의 객체(=인스턴스)마다 개별적인 속성을 가져야 할 때, 우리는 인스턴스 변수를 선언해서 사용한다. 반대로 클래스 변수는, 모든 .. 2022. 4. 7.