반응형

언어(Language)/Java 94

[Java] 자바 로깅(Logging) - log4j, log4j2, slf4j, logback

로깅(Logging) 로깅(Logging)은 애플리케이션의 동작에 대한 정보인 로그(Log)를 기록하는 행위를 말한다. 로그는 컴퓨터의 처리 내용이나 이용 상황을 기록하는 것으로 실행 중인 소프트웨어의 동작 상태를 파악하고 문제가 발생했을 때 원인 파악에 도움을 준다. 따라서 웹 또는 앱 애플리케이션 개발에도 문제를 해결하기 위해 로그를 남겨야 한다. 로그의 장점 로그 레벨(Log level)을 지정할 수 있다. 애플리케이션의 동작 흐름을 파악할 수 있다. 예외 발생 시 해당 정보를 쉽게 파악할 수 있다. 자바에서는 로그를 남기기 위한 여러 가지 로깅 프레임워크를 제공한다. 대표적으로 log4j, log4j2, logback 등이 있다. slf4j slf4j(Simple Logging Facade for..

[Java] 자바 JSON 라이브러리 Gson 사용법

Gson Gson은 구글에서 만든 직렬화(Serialization), 역직렬화(Deserialization)를 쉽고 간편하게 해주는 라이브러리다. 자바 객체와 Json 포맷 간의 변환하는 데 사용한다. 주로 Jackson 라이브러리와 많이 비교되기도 한다. Gson 라이브러리 의존성 추가 Gradle dependencies { implementation 'com.google.code.gson:gson:2.10.1' } Maven com.google.code.gson gson 2.10.1 사용 방법 User 클래스 다음 코드는 name과 age 필드를 가진 User 클래스로, 예제에 사용될 생성자와 getter, toString 메서드가 구현되어 있다. public class User { private S..

[Java] 자바 JSON 라이브러리 Jackson - ObjectMapper 사용법

Jackson Jackson 라이브러리는 자바에서 데이터 처리를 위한 라이브러리로 xml, yml, properties, csv, json 등 다양한 형식의 데이터 처리가 가능한 라이브러리다. 일반적으로 자바용 JSON 라이브러리로 알려져 있다. Jackson 라이브러리는 스트림 방식으로 속도가 빠르고 유연하며, 어노테이션 방식으로 메타 데이터를 기술할 수 있다. ObjectMapper를 통해 Java 객체와 JSON 형식의 문자열 간의 직렬화(Serialization), 역직렬화(Deserialization)가 가능하다. 스프링 부트에서는 Jackson 라이브러리가 기본적으로 추가되어 별도의 의존성 추가 없이 사용할 수 있다. Jackson 라이브러리 3가지 핵심 모듈 jackson-core low-l..

[Java] 객체 null 체크 - Objects.isNull() vs == 연산자

객체의 널 체크 자바에서 객체의 null 여부를 체크하기 위해서는 두 가지 방법을 사용할 수 있다. java.utils.Objects에 구현되어 있는 isNull 메서드 == 연산자를 사용 사용 방법 isNull() import java.util.Objects; public class Example { public static void main(String[] args) { String str1 = null; String str2 = "hello"; System.out.println(Objects.isNull(str1)); System.out.println(Objects.isNull(str2)); } } // 출력 true false == 연산자 public class Example { public st..

[Java] 자바 큐(Queue) 인터페이스 정리

FIFO (First In First Out) 큐(Queue)는 먼저 넣은 객체가 먼저 빠져나가는 선입선출(FIFO : First In First Out) 자료구조이다. 자바의 컬렉션 프레임워크에는 후입선출(LIFO : Last In First Out) 자료구조를 제공하는 스택(Stack) 클래스와 FIFO 자료구조를 제공하는 큐(Queue) 인터페이스를 제공하고 있다. 큐(Queue)를 응용한 대표적인 예시로 BFS(너비 우선 탐색) 알고리즘과 스레드풀(ExceutorService)의 작업 큐이다. 작업 큐는 먼저 들어온 작업부터 처리하는 구조로 되어있다. 큐 (Queue) Queue 인터페이스는 FIFO 자료구조에서 사용되는 메서드를 정의하고 있다. 이를 구현한 대표적인 클래스는 LinkedList이..

[Java] 명령형 프로그래밍과 선언형 프로그래밍의 차이

명령형 프로그래밍 명령형 프로그래밍은 실행할 동작을 구체적으로 명시하는 것으로 컴퓨터가 수행할 명령들을 순서대로 코드로 작성하는 것을 의미한다. 명령형 프로그래밍은 특정 문제를 어떻게(how) 해결할 것인가를 중점으로 프로그래밍한다. 이를 절차적 프로그래밍이라고도 한다. 명령형 프로그래밍 예제 public class Example { public static void main(String[] args){ List numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); int sum = 0; for(int number : numbers){ if(number % 2 == 0){ sum += number; } } System.out.println(sum); } } 1부터 10..

[Java] JDBC란 무엇인가? - Java Database Connectivity

JDBC란? JDBC(Java Database Connectivity)는 Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 사용할 수 있도록 하는 자바 API이다. JDBC는 Java 애플리케이션에서 데이터베이스에 접근하기 위해 JDBC API를 사용하여 데이터베이스에 연동할 수 있으며, 데이터베이스에서 자료를 쿼리(Query)하거나 업데이트하는 방법을 제공한다. JDBC 표준 인터페이스 JDBC는 3가지 기능을 표준 인터페이스로 정의하여 제공한다. java.sql.Connection - 연결 java.sql.Statement - SQL을 담은 내용 java.sql.ResultSet - SQL 요청 응답 Spring Data JDBC,..

[Java] 스택 트레이스(Stack Trace) 제대로 알고 읽기

본 내용은 OKKY에서 활동하시는 fender 님의 게시물을 참고하여 작성하였습니다. https://okky.kr/articles/338405 OKKY - All That Developer OKKY는 국내 최대 개발자 지식공유 플랫폼입니다. 개발자에게 필요한 기술 Q&A, 아티클, 커리어, 네트워킹, 취업, IT행사를 지원합니다 okky.kr 스택 트레이스란? 스택 트레이스는 프로그램이 시작된 시점부터 현재 위치까지의 메서드 호출 목록이다. 스택 트레이스는 예외가 발생할 경우 JVM이 어디서 예외가 발생했는지 알려주는 역할을 한다. 스택 트레이스 예시 다음 코드는 강제로 NPE(NullPoniterException)를 발생시키는 코드이다. 대체로 개발을 하게 되면 여러 클래스를 참조하며, 외부 클래스의 ..

[Java] 자바 문자열 시작 문자, 끝 문자 판단 - startsWith(), endsWith()

자바 언어를 통해 알고리즘 문제를 풀다 보면 특정 문자열의 시작 문자 또는 끝 문자를 판단해야 할 때가 있다. 이 경우 startsWith() 메서드와 endsWith() 메서드를 활용하면 쉽게 해결할 수 있다. startsWith() startsWith() 메서드는 특정 문자열이 입력받은 문자열로 시작하는 지를 판단하는 메서드이다. 반환 타입은 boolean으로 입력받은 문자열로 시작하는 경우 true, 그렇지 않으면 false를 반환한다. 입력 값이 문자열이기 때문에 공백도 인식하여 문자로 취급하니 이 점을 유의해야 한다. 사용 예제 startsWith(String prefix) public class Test { public static void main(String[] args) { String ..

객체지향 설계 원칙이란 무엇인가? - SOLID란?

결합도와 응집도 결합도(Coupling) 결합도는 클래스 간의 의존성이 낮을수록 결합도가 낮다고 볼 수 있다. 하나의 클래스를 수정하는데 의존하는 다른 클래스를 모두 수정해야 한다면 결합도가 높은 것이다. 따라서 개발함에 있어 낮은 결합도로 개발하는 것이 주된 목표이다. 응집도(Cohesion) 응집도는 비슷한 일을 하는 기능(모듈 내부의 구성 요소)들이 기능적 관련성으로 잘 뭉쳐져 있다면 높은 응집도를 가진다고 볼 수 있다. 하나의 기능을 변경할 때, 다른 곳에서도 변경해야 할 곳이 많다면 응집력이 낮은 것이다. 따라서 개발함에 있어 높은 응집도로 개발하는 것이 주된 목표이다. 즉, 좋은 소프트웨어 설계를 위해서는 결합도는 낮추고, 응집도는 높여야 한다. 객체지향 설계 원칙(SOLID) SOLID는 컴..

반응형