전체 글 100

auto-increment 초기화

문제상황 스케쥴러로 미인증 회원들 삭제기능 만들었는데  임시회원이 인증 받으면 이메일 토큰 테이블이랑 임시회원 테이블에서 데이터 삭제하고 , 미인증 받은 상태로 일정 시간지나면 두 테이블에 있는 데이터들 전부 삭제한다.  근데  테이블에 있는 데이터 들을 전부 삭제한 상태에서 새로운 임시 회원이 들어오면 id값이 1 부터 시작되는게 아니라 이전 id값 다음값 부터 시작하게 된다.  이런 경우 데이터가 쌓이면 쌓일수록 계속 id값이 계속 커지기만 한다.  이때 db의 성능과 관련한 문제가 생기지 않을까?  계속해서 id값이 커지더라도 상관 없을까?   테이블이 전부 삭제된 후에 새로운 회원이 들어왔는데 이전 회원의 id값 다음값이 생성된다면 그 앞에 있는 id값들이 낭비 되는거 아닐까? 예를 들어서 100..

트랜잭션의 중첩으로 인한 문제

사용자에게 이메일 인증을 보내면 이메일 토큰을 생성하고  사용자가 해당 인증 링크를 클릭하면 이메일 토큰을 검증한다. 검증하는 것은 두가지로 1. 해당 uuid 값이 존재하는 값인지 2. 해당 이메일 토큰이 만료된 토큰인지 를 검사한다  이메일 토큰을 생성할때 생성시간+5분 으로 만료시간을 설정해서 값을 저장해둔다. 이후에 사용자가 전달해온 uuid로 이메일 토큰을 찾고, 해당 이메일 토큰에 저장되어있는 만료시각과 현재 시각을 비교하여 만료 여부를 판단한다.  그래서 만료 되었다면 isEmailExpired = true 로 필드의 값을 수정한다. 이후 오류 메세지를 반환한다  문제 상황오류 메세지는 잘 반환이 되는데 해당 이메일 토큰의 필드값이 업데이트 되지 않았다. (sql 쿼리가 작성되지 않았다) 그..

transaction 에 대하여

의문점 분명히 이메일 토큰을 만들고, db 에 저장하고 나서 이메일 링크를 만들고 전송하는 기능으로 코드를 짰는데 실제 동작 결과 이메일 링크를 전송하고 나서, 이메일 토큰을 저장한다.   왜 이런 모순이 생겼을까?  그 이유는 @Transaction에 있다.    @Transactional public class UserService { // 이메일 전송 public UUID sendAuthEmail(UserTemp userTemp) throws MessagingException { // 이메일 토큰 생성 EmailToken emailToken = emailService.createmailToken(userTemp); // 이메일 전송 MimeM..

정렬

https://velog.io/@jiyaho/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%8B%9C%EA%B0%84-%EC%A0%9C%ED%95%9C%EA%B3%BC-%EC%8B%9C%EA%B0%84-%EB%B3%B5%EC%9E%A1%EB%8F%84 [알고리즘] 시간 제한과 시간 복잡도코딩 테스트에서 문제의 제한 시간은 보통 1~5초 정도이다.일반적인 CPU 기반의 PC나 채점용 컴퓨터에서 1초에 실행할 수 있는 최대 연산 횟수는 velog.io 선택 정렬 선택 정렬이란 정렬 해야하는 값들 중에서 가장 작은수를 선택하여 맨 앞으로 보내는 방법이다.    예를 들어  3 2 4 6 8 1 5 가 있다고 하자. 그렇다면 여기서 가장 작은 수는 1 이므로 1을 맨 앞으로 보낸다. ..

UnsatisfiedDependencyException

uuid 필드를 string -> UUID로 변경하는 과정에서 emailTokenRepository의 메서드 중 파라미터 값을 수정하지 않아서 테이블을 만드는 과정에서 타입이 불일치 돼서 발생한 문제  저 오류의 경우 데이터베이스와 코드의 필드가 맞지 않는 문제 일 수 있음  로그를 잘 읽어보면 문제가 보임  org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'emailService' defined in file [C:\Dongurami_jh\USW-Circle-Link-Server\build\classes\java\main\com\USWCicrcleLink\server\email\s..

GenericGenerator' is deprecated 문제

@GenericGenerator   문제점  'org.hibernate.annotations.GenericGenerator' is deprecated since version 6.5    해결 방법https://stackoverflow.com/questions/76723290/using-the-new-type-for-uuidgenerator-instead-of-strategy Using the new type() for UUIDGenerator instead of strategy?According to the documentation, the following usage is deprecated: @GenericGenerator( name = "UUID", strategy = "org.hibernate...

4장 디지털 입 출력

실습 과제   #define NOTE_C4 262#define NOTE_D4 294#define NOTE_E4 330#define NOTE_F4 349#define NOTE_G4 392#define NOTE_A4 440#define NOTE_B4 494#define NOTE_C5 523#define PIN_PIEZO 10#define PIN_SWITCH 8 // 버튼 8번 핀에 연결하기 #define T 200 // 16분 음표 길이#define DB_WAIT 20 // 디바운싱을 위해 대기 시간 void setup() { pinMode(PIN_PIEZO, OUTPUT); pinMode(PIN_SWITCH, INPUT_PULLUP); Serial.begin(9600); printMsg("\rWel..