반응형

IT is True 550

[Java] 레코드 클래스 살펴보기 (Record Class)

Record Class자바의 레코드 클래스는 Java 14부터 프리뷰 상태로 도입되어 Java 16에서 정식으로 지원하게 된 새로운 클래스다. 레코드는 데이터를 담기 위한 클래스를 더욱 간결하고 안전하게 작성하기 위한 기능을 제공한다. 레코드 클래스를 사용하면 기존 POJO 클래스를 작성할 때 필요한 보일러플레이트 코드를 줄이는 효과를 얻을 수 있다. 레코드의 특징final 클래스로 상속이 불가능하다.인터페이스 구현이 가능하다.모든 필드는 불변(private final)으로 값을 변경할 수 없다.getter 메서드를 기본으로 제공한다.모든 필드를 포함한 생성자를 기본으로 제공한다.toString(), equals(), hashCode() 메서드를 기본으로 제공한다. 클래스와 레코드 비교아래 두 예제는 동..

[Algorithm] 배열의 구간 합 알고리즘 (Prefix Sum) - Java

구간 합구간 합(Prefix Sum)은 주어진 배열의 특정 구간, 즉 배열의 연속된 요소들의 합을 의미하다. 예를 들어, 배열이 [1, 2, 3, 4, 5]라 할 때 2번째 요소부터 4번째 요수까지의 구간 합은 2 + 3 + 4로 9가 된다. 자바에서 구간 합을 구하기 위해 일반적으로 다음과 같이 반복문을 사용한다.int[] arr = {1, 2, 3, 4, 5};int sum = 0;for (int i = 1; i  다음과 같이 2차원 배열의 경우에는 2중 반복문을 통해 구한다.1 2 34 5 67 8 9 int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};int sum = 0;for (int i = 0; i   구간 합 알고리즘구간 합 알고리즘은 주어진 배열의 ..

[Spring] 스프링 부트 3.2 RestClient 살펴보기

RestClientRestClient는 Spring framework 6.1(Spring boot 3.2)에 새로 추가된 동기식 HTTP Client로 Spring 애플리케이션에서 REST API 호출을 위한 HTTP 요청을 보낼 수 있다.RestClient의 등장으로 같은 동기식 HTTP Client인 RestTemplate을 대체하여 사용할 수 있으며, fluent API를 제공하여 현대적인 방식으로 코드를 작성할 수 있게 되었다. RestClient의 등장 이유기존의 RestTemplate는 2009년 Spring 3.0에 추가된 상당히 오래된 동기식 HTTP Client이다. 그로 인해 몇 가지 단점들이 존재한다.RestTemplate는 수많은 메서드가 오버로딩되어 제공하기 때문에 기능을 사용하는..

[Algorithm] 10진수를 n진수로, n진수를 10진수로 변환하기 (진법 변환) - Java

자바의 진법 변환진법 변환은 알고리즘 문제에서 자주 활용된다. 자바에서는 이를 쉽게 활용할 수 있도록 함수를 제공하고 있다.자바에서 제공하는 함수를 통해 진법을 변환하는 방법과 직접 구현하여 변환하는 방법을 알아보고자 한다. 10진수를 N진수로 변환하기자바 내장 함수 사용10진수의 숫자를 N진수로 변환하기 위해 java.lang 패키지에서 Integer와 Long 클래스의 toString() 메서드를 제공한다.첫 번째 인자에는 변환할 수, 두 번째 인자에는 변환할 진법을 넣어 쉽게 변환할 수 있다.이 외에도 java.math 패키지의 BigInteger 클래스의 toString() 메서드를 통해 진법 변환을 할 수도 있다.public class Main { public static void main..

[Algorithm] 파스칼의 삼각형 알고리즘 구현하기 (Pascal's triangle) - Java

파스칼 삼각형파스칼의 삼각형은 블레즈 파스칼에 의해 제안된 삼각형으로 구성된 배열이다.파스칼의 삼각형은 다음과 같은 규칙이 있다.각 행의 첫 번째와 마지막의 숫자는 1이다.각 행의 중간에 위치한 숫자는 이전 행의 왼쪽 위치에 있는 숫자와 바로 위에 있는 숫자의 합이다. 구현위 두 규칙을 통해 파스칼의 삼각형을 2차원 배열로 구현해 보자.public class Main { public static void main(String[] args) { int n = 7; // 파스칼의 삼각형 만들기 int[][] pascal = new int[n][]; for (int i = 0; i // 출력1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10..

[Java] 병합 정렬 (Merge Sort) - 정렬 알고리즘 (Sorting Algorithm)

병합 정렬 (Merge Sort) 병합 정렬(Merge Sort)은 효율적이고 안정적인 정렬 알고리즘 중 하나로, 분할 정복(Divide and Conquer) 알고리즘을 따른다. 병합 정렬의 기본 개념은 다음과 같다. 분할(Divide) : 입력받은 배열을 절반으로 분할하고, 길이가 1이 될 때까지 분할을 반복한다. 정복(Conquer) : 각 분할된 배열에 대해 재귀적으로 정렬을 수행한다. 병합(Merge) : 분할한 배열을 병합하면서 정렬한다. 두 개의 정렬된 배열을 하나의 정렬된 배열로 합치는 과정으로 병합 과정에서 실제 정렬이 이루어진다. 병합 정렬의 시간 복잡도는 O(n log n)으로 길이가 긴 배열을 안정적으로 정렬할 때 적합한 알고리즘이다. 병합 정렬의 장단점 장점 O(n log n)의 ..

[Java] 싱글톤 패턴(Singleton Pattern) - 개념 및 예제

싱글톤 패턴(Singleton Pattern) 싱글톤 패턴은 객체 지향 프로그래밍에서 특정 클래스가 단 하나만의 인스턴스를 생성하여 사용하기 위한 패턴이다. 생성자를 여러 번 호출하더라도 인스턴스가 하나만 존재하도록 보장하여 애플리케이션에서 동일한 객체 인스턴스에 접근할 수 있도록 한다. 싱글톤 패턴을 사용하는 이유 커넥션 풀, 스레드 풀, 디바이스 설정 객체 등과 같은 경우 인스턴스를 여러 개 만들게 되면 불필요한 자원을 사용하게 되고, 프로그램이 예상치 못한 결과를 낳을 수 있다. 따라서 객체를 필요할 때마다 생성하는 것이 아닌 단 한 번만 생성하여 전역에서 이를 공유하고 사용할 수 있게 하기 위해 싱글톤 패턴을 사용한다. 싱글톤 패턴의 장단점 장점 유일한 인스턴스 : 싱글톤 패턴이 적용된 클래스의 ..

[Kopring] JPA Auditing - 생성/수정 시각 설정 및 테스트

JPA Auditing 프로젝트 작성 시 트래킹을 목적으로 엔티티의 생성 시간과 수정 시간 등을 테이블에 저장하여 관리해야 한다. 이를 쉽게 구현하기 위해 Spring Data JPA는 Auditing이라는 엔티티의 변경 내역을 추적하고 기록하는 기능을 제공한다. 이를 통해 엔티티의 생성일자, 수정일자 등을 쉽게 관리할 수 있다. 다음은 JPA Auditing 기능을 사용하지 않고 수동으로 관리하는 경우의 User 엔티티다. @Entity class User( ... ) { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null ... @Column(nullable = false, updatable = false) var ..

[Kotlin] 코틀린 문자열 템플릿(String Templates) 이해하기

코틀린에는 문자열 템플릿이 있다. 문자열 내에 변수나 표현식을 사용하여 값을 문자열에 포함시킬 수 있도록 한다. 주로 문자열을 동적으로 구성할 때 사용하며, 코드를 간결하게 작성하는 데 도움이 된다. 변수 이름 앞에 $를 붙이면, 문자열 템플릿이 변수의 값을 문자열에 담아준다. fun main() { val number = 42 println("number = $number") } // 출력 number = 42 $ 다음에 오는 대상이 숫자인 경우에는 이를 인식하지 않으며 그대로 출력한다. 또한, $ 다음에 문자가 오는 경우 $ 앞에 역슬래시(\)를 붙여 그대로 출력할 수 있다. fun main() { val number = 123 println("$number") println("$123") print..

[Clean Code] 15. Junit 들여다보기 - 클린 코드 정독하기

JUnit 프레임워크 JUnit은 자바 프레임워크 중에서 가장 유명하다. 개념은 단순하며 정의는 정밀하고 구현은 우아하다. JUnit은 저자가 많지만 시작은 켄트 벡과 에릭 감마, 두 사람이 비행기를 타고 가다 JUnit을 만들었다. 지금부터 살펴볼 예제는 문자열 비교 오류를 파악할 때 유용한 모듈이다. ComparisonCompactor는 두 문자열을 받아 차이를 반환한다. 예를 들어, ABCDE와 ABXDE를 받으면 를 반환한다. 다음은 ComparisonCompactor 모듈의 테스트 코드다. [15-1] ComparisonCompactorTest.java import junit.framework.ComparisonCompactor; import junit.framework.TestCase; pub..

반응형