전체 글 71

Error:java: java.lang.NoClassDefFoundError: javax/annotation/Generated 에러해결

Querydsl 사용할때 entity 필드 타입 변경하고나서 서버 재시작하니까 이런 오류가 났다. 환경 intellij 스프링부트 해결방법 annotationProcessor "jakarta.persistence:jakarta.persistence-api" annotationProcessor "jakarta.annotation:jakarta.annotation-api" 를 추가해주면 된다. 출처 https://blog.leocat.kr/notes/2021/03/19/gradle-fix-no-class-def-found-error-entity-generated [Gradle] javax 클래스를 찾지 못 하는 문제 Java EE 모듈은 Jakarta EE로 옮겨졌다. 그래서.. 아래와 같은 클래스를 찾지 ..

에러 해결 2021.11.04

JPA 엔티티 매핑 - 대표적 어노테이션

JPA는 다양한 매핑 어노테이션들을 지원하는데 크게 4가지로 분류할 수 있다. 객체와 테이블 매핑 : @Entity, @Table 기본 키 매핑 : @Id 필드와 컬럼 매핑 : @Column 연관관계 매핑 : @ManyToOne, @JoinColumn @Entity JPA사용시 테이블과 매핑할 클래스는 필수로 @Entity를 붙여야 한다. 주의사항 1 기본 생성자는 필수다. (파라미터가 없는 public 또는 protected 생성자) 2 final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 3 저장할 필드에 final을 사용하면 안된다. @Table 엔티티와 매핑할 테이블을 지정한다. 생략하면 매핑한 엔티티의 이름을 테이블 이름으로 사용한다. ( 사용할 테이블의 세부..

JPA & Querydsl 2021.11.03

sql 이모티콘 입력시 오류날때

로그인 기능을 구현하다가 =͟͟͞͞ ͟͟͞͞𖤐⇝ۣۜ☆ۣۜ⇜𖡬 𖤐 이런 이모티콘들로 테스트해보니까 java.sql.SQLException: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,COERCIBLE) for operation '=' 라는 에러가 뜨길래 뭔가 하고 알아보니 charset 문제였다. 쉽게 말하면 원래 mysql은 3바이트 문자열까지 저장이 가능한데 이모티콘이라는 새로운 4바이트 문자열이 나와서 저장 시 값 손실이 발생해 에러가 뜨는 것이다. 그래서 mysql이 4바이트 문자열도 저장할 수 있는 자료형을 만들었는데 그것이 바로 utf8mb4이다. 즉 utf8 = 가변 3바이트 텍스트 자료형 utf8m..

에러 해결 2021.10.09

자바스크립트 옵셔널 체이닝 연산자

옵셔널 체이닝 연산자 옵셔널 체이닝 연산자 ?. 는 좌항 피연산자가 false로 평가되는 값이라도 null 또는 undefined가 아니면 우항의 프로퍼티 참조를 이어간다 즉 좌항이 null 또는 undefined만 아니면 우항값을 쓸거임. 이런 뜻 var elem = null; // elem이 null 또는 undefined면 undefiend를 반환하고 // 그렇지 않으면 우항의 프로퍼티 참조를 이어간다. var value = elem?.value; console.log(value); // undefined 옵셔널 체이닝 연산자는 변수가 null 인지 undefined가 아닌지 확인하고 프로퍼티를 참조할 때 유용하다. 하지만 좌항 피연산자가 false로 평가되는 Falsy 값(false, undefi..

자바스크립트 2021.09.23

자바스크립트 타입 변환과 단축 평가

원시 값은 변경 불가능한 값이다. 타입 변환 타입 변환이란 기존 원시값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것이다. ( a라는 변수에 선언된 값을 가지고 다른 타입의 같은 값을 생성 ) 암묵적 타입 변환 암묵적 타입 변환은 기존 변수값을 변경하는 게 아니라 자바스크립트 엔진이 에러 없이 평가하기 위해 피연산자의 값을 암묵적으로 변환해 새로운 타입의 값을 만들어 단 한 번 사용하고 버린다. 개발자는 암묵적 타입변환이 발생하는지, 발생하면 어떤 타입으로 바뀌는지 등등 예측 가능해야 오류를 범할 가능성이 낮아진다. 중요한 건코드를 예측할 수 있어야 한다는 것이다 단축 평가 단축 평가 : 평가 도중 평가 결과가 확정되면 나머지 평가 과정을 생략하는 것을 말함 논리 연산자를 사용한 단축 평가 논리곱(..

자바스크립트 2021.09.23

자바스크립트 연산자 (2) 삼항 조건 연산자, 논리 부정 연산자, 지수 연산자

삼항 조건 연산자 삼항 조건 연산자는 조건식의 결과에 따라 반환할 값이 결정된다. 예시) var result = score >= 60 ? ‘pass’ : ‘fail’; score >= 60 연산의 결과가 참이면 pass를 거짓이라면 fail을 result 변수에 담는다 평가 결과가 불리언 값이 아니면 암묵적 타입 변환된다. 이때 조건식이 참이면 콜론(:)앞의 두 번째 연산자가 평가되어 반환되고 ( pass ) 거짓이면 콜론(:) 뒤의 세번째 피연산자가 평가되어 반환된다 ( fail ) 삼항 조건 연산자 표현식과 if … else 문은 차이가 있다. 바로 삼항 조건 현산자 표현식은 값처럼 사용 가능하지만 if … else 문은 값처럼 사용할 수 없다. 삼항 조건 연산자 표현식은 값으로 평가할 수 있는 표현..

자바스크립트 2021.09.23

자바스크립트 연산자 (1)

연산의 대상을 피연산자라 한다. 피연산자는 값으로 평가될 수 있는 표현식이어야 한다. 즉 값이 있는 변수이거나, 함수여도 리턴 값이 있는 함수여야 함 + 연산자 문자열 ‘1’ 앞에다가 + 하면 숫자 타입으로 변환하여 반환한다. ( 문자열을 숫자로 변환할 수 없을 땐 NaN을 반환 ) 이때 피연산자를 변경하는 것은 아니고 숫자 타입으로 변환한 값을 생성해서 반환한다 1 + true를 연산하면 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환돼서 true를 숫자 타입인 1로 강제 변환시킨 후 계산한다. 이를 암묵적 타입 변환 or 타입 강제 변환이라고 한다. 동등 비교(==) 연산자와 일치 비교(===) 연산자 동등 비교(==) 연산자는 비교할 때 암묵적 타입 변환을 통해 타입을 일치시킨 후 같은 값인지..

자바스크립트 2021.09.23

백준 11656 : 접미사 배열 자바

https://www.acmicpc.net/problem/11656 11656번: 접미사 배열 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다. www.acmicpc.net 생각 : 문제를 보니까 출력하는 문자열 라인수가 문자열만큼이길래 배열을 만들어서 문자열을 잘라서 순서대로 넣고 전에 배운 Arrays.sort 메서드가 문자열도 정렬할 수 있지 않을까 하는 생각으로 배열을 정렬했다 결론: String 배열을 만들고 문자열 길이를 한개씩 줄여가면서 배열에 담기 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws ..

알고리즘 2021.09.20