분류 전체보기
-
자바 람다 표현식 설명부터 사용법까지 완벽 정리 #JAVA #람다JAVA 2023. 1. 3. 00:20
자바 람다 표현식 설명부터 사용법까지 완벽 정리 #JAVA #람다 안녕하세요? 장장스입니다. 오늘은 자바 8에 추가된 람다에 대해 정리하겠습니다. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있습니다. 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트를 가질 수 있습니다. 람다의 특징을 하나씩 살펴보면, ▶ 익명 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 구현해야 할 코드가 줄어든다. ▶ 함수 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 부른다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함한다. ▶ 전달 람다 표현식을 메서드 인수로 전달하거나..
-
[스프링 부트] 예외처리(Exception) @ControllerAdvice @RestControllerAdvice @ExceptionHandler @ResponseStatusSpring Boot 2022. 2. 14. 14:16
[스프링 부트] 예외처리(Exception) @ControllerAdvice @RestControllerAdvice @ExceptionHandler @ResponseStatus 안녕하세요? 장장스입니다! 오늘은 스프링에서 '예외 처리를 어떻게 할 것인가'에 대한 포스팅을 하려고 합니다. 코드를 작성하며 고민 되는 문제 중 하나가 어떻게 예외 처리를 해야 하는가 입니다. Exception In Java 예외 계층 구조에서 볼 수 있듯이 Java에서 발생하는 오류는 Error 클래스와 Exception 클래스로 나뉩니다. 모든 오류 및 예외는 Throwable 클래스를 상위 클래스로 가집니다. Throwable를 상속받은 하위 클래스의 인스턴스들은 JVM 또는 Java throw 문에 의해 throw됩니다...
-
[DB] 트랜잭션 격리수준 (Isolation Level)database/DB Concept 2022. 1. 31. 19:00
트랜잭션 격리수준 (Isolation Level) 동시성(Concurrency) 문제 실제 서비스에서는 많은 사용자가 동시 다발적으로 서버에 요청을 하게 되고 서버는 데이터베이스에 다시 트랜잭션을 요청하게 됩니다. 모든 요청을 순서대로 처리하게 된다면 동시성(Concurrency) 문제가 생길 것입니다. 반대로 동시성을 보장하기 위해 모든 요청을 동시에 처리하려고 한다면 데이터의 값이 맞지 않는 일관성(Consistency) 문제가 생기게 됩니다. Isolation 이 낮다면 발생하는 문제들 아래와 같은 회원 테이블이 있습니다. 이 테이블에 대한 트랜잭션이 동시에 일어나면 어떤 문제가 있을까 회원 테이블 이름 VARCHAR 장장스 잔액 BIGINT 10000 등급 VARCHAR BRONZE 지역 VARC..
-
Logback이란? feat.SLF4JSpring Boot 2022. 1. 30. 18:51
Logback이란? feat.SLF4J Logback? logback은 SLF4J의 구현체입니다. logback-core, logback-classic 및 logback-access의 세 가지 모듈로 구분됩니다. Logger, Appenders and Layouts Logger클래스는 logback-classic 모듈의 일부입니다 . 반면에 Appender및 Layout인터페이스는 logback-core의 일부입니다. 범용 모듈로서 logback-core에는 로거 개념이 없습니다. ▶Logger Logger는 가능한 모든 로그 기록을 개발자가 선택한 일부 기준에 따라 분류된다고 가정합니다. level of request p effective level q TRACE DEBUG INFO WARN ERROR..
-
로그(log) 기록하기, SLF4J란?Spring Boot 2022. 1. 29. 20:25
로그(log) 기록하기, SLF4J란? SLF4J 란? Simple Logging Facade for Java (SLF4J) Facade(퍼사드 패턴 : 간략화된 인터페이스를 제공해주는 디자인 패턴)라는 단어의 뜻 처럼 JAVA에서 심플한 로깅 인터페이스를 제공하는 API 입니다. ※ API: (Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스) 다양한 로깅 프레임워크(logging framework)들에 대한 추상화 역할을 제공하여 최종 사용자가 배포 시 원하는 로깅 프레임워크를 연결할 수 있도록 합니다 위 그림처럼 사용자는 구체적인 구현체에 직접 접근하지 않습니다. SLF4J에 요청하면 바인딩 된 구현체가 로깅 작업을 하게 됩니다. SLF4J API를 ..
-
[스프링 부트] InvalidDataAccessApiUsageException: Unknown entity #그래들 멀티 모듈Spring Boot 2022. 1. 28. 01:31
[스프링 부트] InvalidDataAccessApiUsageException: Unknown entity 에러 #그래들 멀티 모듈 인텔리제이로 프로젝트를 하던 중 에러가 났다. JPA를 사용하고 있었는데 web, admin 에서 사용되는 domain이 공통으로 겹쳐게 되자 이를 효율적으로 사용하기 위해 web, admin, domain 3개의 멀티 그래들 모듈로 프로젝트를 구성한 상태였다. ├── web │ ... │ └── build.gradle ├── admin │ ... │ └── build.gradle ├── domain │ ... │ └── build.gradle └── settings.gradle 그리고 admin에서 서버를 실행하자 다음과 같은 에러가 발생했다. InvalidDataAcce..
-
[Spring boot] MySql 연결 에러, com.mysql.cj.jdbc.driverSpring Boot 2022. 1. 19. 00:01
[스프링 부트] MySql 연결 에러, com.mysql.cj.jdbc.driver this is deprecated. the new driver class is `com.mysql.cj.jdbc.driver'. the driver is automatically registered via the spi and manual loading of the driver class is generally unnecessary. 뭔데 4.4.1.3 Changes in the Connector/J API The name of the class that implements java.sql.Driver in MySQL Connector/J has changed from com.mysql.jdbc.Driver to com...
-
[백준] 3197 백조의 호수 #JAVA #BFS #시간초과Algorithm Solving/BAEKJOON 2022. 1. 13. 12:10
[백준] 3197 백조의 호수 #JAVA #BFS #시간초과 코드 import java.io.*; import java.util.*; public class Main { static int[] dx = {0,1,0,-1}; static int[] dy = {1,0,-1,0}; static int R, C; static char[][] map; static boolean[][] visSwan, visWater; static Queue waterQ, waterNextQ, swanQ, swanNextQ; static int startX, startY, endX, endY; public static void main(String[] args) throws IOException { BufferedReader br..
-
[백준] 18809 Gaaaaaaaaaarden #JAVA #백트래킹 #bfsAlgorithm Solving/BAEKJOON 2022. 1. 12. 14:34
[백준] 18809 Gaaaaaaaaaarden #JAVA #백트래킹 #bfs 오랜 시간이 걸려서 풀었던 문제. 코드 import java.io.*; import java.util.*; public class Main { static List baeyang; static int N,M,G,R; static int[][] garden; static int[] selectBaeyang; static int[] selectGR; static boolean[] isUsedBaeyang; static int[] spotG, spotR; static int[] dx = {0,1,0,-1}; static int[] dy = {1,0,-1,0}; static int max = 0; public static void m..
-
[백준] 1202 보석 도둑 #JAVA #우선순위 큐Algorithm Solving/BAEKJOON 2021. 12. 26. 14:34
[백준] 1202 보석 도둑 #JAVA #우선순위 큐 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.PriorityQueue; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new Inp..