반응형

Java에서 정규식을 사용하여 문자열의 토큰을 바꾸는 방법

1. 개요 Java에서 문자열의 값을 찾거나 대체해야 할 때 일반적 으로 정규식을 사용 합니다 . 이를 통해 문자열의 일부 또는 전체가 패턴 과 일치 하는지 확인할 수 있습니다 . Matcher 및 String 모두 에서 replaceAll 메서드 를 사용하여 문자열의 여러 토큰에 동일한 대체를 쉽게 적용 할 수 있습니다 . 이 사용방법(예제)에서는 문자열에서 발견된 각 토큰에 대해 다른 대체를 적용하는 방법을 탐색합니다. 이렇게 하면 특정 문자를 이스케이프하거나 자리 표시자 값을 바꾸는 것과 같은 사용 사례를 쉽게 충족할 수 있습니다. 또한 토큰을 올바르게 식별하기 위해 정규 표현식을 조정하는 몇 가지 트릭을 살펴보겠습니다. 2. 매치 개별 처리 토큰별 대체 알고리즘을 구축하기 전에 정규 표현식에 대한..

Java 2021.10.06

Java에서 최소 스패닝 트리를 위한 Boruvka 알고리즘

1. 개요 이 예제에서는 모서리 가중치 그래프의 최소 스패닝 트리(MST)를 찾기 위한 Boruvka 알고리즘의 Java 구현을 살펴보겠습니다 . Prim 과 Kruskal의 알고리즘 보다 앞서 지만 여전히 둘 사이의 교차로 간주될 수 있습니다. 2. 보루브카의 알고리즘 바로 알고리즘으로 넘어가겠습니다. 약간의 역사와 알고리즘 자체를 살펴보겠습니다. 2.1. 역사 주어진 그래프의 MST를 찾는 방법 은 1926년 Otakar Boruvka 에 의해 처음 공식화되었습니다 . 이것은 컴퓨터가 존재하기도 훨씬 이전의 일이었고 실제로 효율적인 배전 시스템을 설계하기 위해 모델링되었습니다. Georges Sollin은 1965년 이를 재발견하여 병렬 컴퓨팅에 사용했습니다. 2.2. 알고리즘 알고리즘의 핵심 아이디..

Java 2021.10.06

Java 예제를 사용한 잠금 없는 데이터 구조 소개

1. 소개 이 사용방법(예제)에서는 비차단 데이터 구조가 무엇이고 잠금 기반 동시 데이터 구조의 중요한 대안인 이유를 배웁니다. 먼저 방해 없는 , 잠금 없는 , 대기 없는 과 같은 용어를 살펴보겠습니다 . 둘째, CAS (비교 및 교환)와 같은 비차단 알고리즘의 기본 빌딩 블록을 살펴보겠습니다 . 세 번째로 Java에서 잠금이 없는 큐의 구현을 살펴보고 마지막으로 wait-freedom 을 달성하는 방법에 대한 개요를 설명합니다 . 2. 기아 대 잠금 먼저 차단된 스레드와 굶주린 스레드의 차이점을 살펴보겠습니다 . 위 그림에서 스레드 2는 데이터 구조에 대한 잠금을 획득합니다. 스레드 1도 잠금을 얻으려고 시도할 때 스레드 2가 잠금을 해제할 때까지 기다려야 합니다. 잠금을 얻기 전에 진행되지 않습니다..

Java 2021.10.06

Java 배열에서 상위 K 요소 찾기

1. 개요 이 사용방법(예제)에서는 Java를 사용하여 배열에서 가장 큰 k개의 요소 를 찾는 문제에 대한 다양한 솔루션을 구현 합니다. 시간 복잡도를 설명하기 위해 Big-O 표기법을 사용합니다. 2. 무차별 대입 솔루션 이 문제에 대한 무차별 대입 솔루션 은 주어진 배열을 k 번 반복하는 것 입니다. 각 반복 에서 가장 큰 값을 찾습니다 . 그런 다음 배열에서 이 값을 제거하고 출력 List에 넣습니다. public List findTopK(List input, int k) { List array = new ArrayList(input); List topKList = new ArrayList(); for (int i = 0; i < k; i++) { int maxIndex = 0; for (int j..

Java 2021.10.05

Java에서 두 개의 정렬된 배열에서 K번째 가장 작은 요소 찾기

1. 소개 이 기사에서는 두 개의 정렬된 배열의 합집합에서 k 번째로 작은 요소 를 찾는 방법을 살펴보겠습니다 . 먼저 정확한 문제를 정의하겠습니다. 둘째, 두 가지 비효율적이지만 간단한 솔루션을 볼 수 있습니다. 셋째, 두 배열에 대한 이진 검색을 기반으로 하는 효율적인 솔루션을 살펴보겠습니다. 마지막으로 알고리즘이 작동하는지 확인하기 위해 몇 가지 테스트를 살펴보겠습니다. 알고리즘의 모든 부분에 대한 Java 코드 스니펫도 볼 수 있습니다. 단순화를 위해 구현은 정수에서만 작동합니다 . 그러나 설명된 알고리즘은 비교 가능하고 Generics를 사용하여 구현할 수도 있는 모든 데이터 유형에서 작동합니다. 2. 두 개의 정렬된 배열의 합집합에서 K 번째로 작은 요소 는 무엇입니까 ? 2.1. K 번째 작..

Java 2021.10.05

JNI(자바 네이티브 인터페이스) 사용방법(예제)

1. 소개 알다시피 Java의 주요 장점 중 하나는 이식성입니다. 즉, 코드를 작성하고 컴파일하면 이 프로세스의 결과가 플랫폼 독립적인 바이트코드가 됩니다. 간단히 말해서, 이것은 Java 가상 머신을 실행할 수 있는 모든 기계 또는 장치에서 실행할 수 있으며 예상한 대로 원활하게 작동합니다. 그러나 때로는 특정 아키텍처에 대해 고유하게 컴파일된 코드를 실제로 사용해야 하는 경우가 있습니다 . 네이티브 코드를 사용해야 하는 몇 가지 이유가 있을 수 있습니다. 일부 하드웨어를 처리해야 하는 필요성 매우 까다로운 프로세스의 성능 향상 Java로 다시 작성하는 대신 재사용하려는 기존 라이브러리입니다. 이를 달성하기 위해 JDK는 JVM에서 실행되는 바이트코드와 네이티브 코드 (일반적으로 C 또는 C++로 작성..

Java 2021.10.05

데이터베이스 대 응용 프로그램에서 계산 수행

1. 개요 종종 우리는 편리함과 함께 좋은 성능을 얻기 위해 데이터베이스(RDBMS)에서 계산을 수행해야 하는지 아니면 응용 프로그램 코드에서 계산을 수행해야 하는지 결정하기 어렵다는 것을 알게 됩니다. 이 기사에서는 데이터베이스 및 응용 프로그램 코드에서 계산을 수행할 때의 장점과 단점을 살펴보겠습니다. 우리는 이 결정에 영향을 줄 수 있는 몇 가지 요소를 고려하고 어떤 계층(데이터베이스 또는 응용 프로그램)이 이를 처리하는 데 더 적합한지 논의할 것입니다. 2. 데이터베이스에서의 계산 2.1. 데이터 선택 및 집계 관계형 데이터베이스는 데이터 처리, 선택 및 집계에 고도로 최적화되어 있습니다 . SQL을 사용하여 데이터를 쉽게 그룹화, 정렬, 필터링 및 집계할 수 있습니다. 예를 들어 LEFT 및 R..

Java 2021.10.05

자바 – 파일 생성

1. 개요 이 빠른 사용방법(예제)에서는 먼저 NIO 의 Files 및 Path 클래스를 사용한 다음 Java File 및 FileOutputStream 클래스, Google Guava , 마지막으로 Apache Commons IO 라이브러리를 사용하여 Java에서 새 파일을 만드는 방법을 배웁니다 . 이 기사는 여기 Baeldung 의 "Java – Back to Basic" 시리즈의 일부입니다. 2. 설정 예제에서는 파일 이름에 대한 상수를 정의합니다. private final String FILE_NAME = "src/test/resources/fileToCreate.txt"; 또한 각 테스트 전에 파일이 존재하지 않는지 확인하고 각 테스트가 실행된 후에 파일을 삭제하는 정리 단계도 추가합니다. @..

Java 2021.10.05

Java에서 두 개의 정렬된 배열에서 K번째 가장 작은 요소 찾기

1. 소개 이 기사에서는 두 개의 정렬된 배열의 합집합에서 k 번째로 작은 요소 를 찾는 방법을 살펴보겠습니다 . 먼저 정확한 문제를 정의하겠습니다. 둘째, 두 가지 비효율적이지만 간단한 솔루션을 볼 수 있습니다. 셋째, 두 배열에 대한 이진 검색을 기반으로 하는 효율적인 솔루션을 살펴보겠습니다. 마지막으로 알고리즘이 작동하는지 확인하기 위해 몇 가지 테스트를 살펴보겠습니다. 알고리즘의 모든 부분에 대한 Java 코드 스니펫도 볼 수 있습니다. 단순화를 위해 구현은 정수에서만 작동합니다 . 그러나 설명된 알고리즘은 비교 가능하고 Generics를 사용하여 구현할 수도 있는 모든 데이터 유형에서 작동합니다. 2. 두 개의 정렬된 배열의 합집합에서 K 번째로 작은 요소 는 무엇입니까 ? 2.1. K 번째 작..

Java 2021.10.04

JNI(자바 네이티브 인터페이스) 사용방법(예제)

1. 소개 우리가 알고 있듯이 Java의 주요 장점 중 하나는 이식성입니다. 즉, 코드를 작성하고 컴파일하면 이 프로세스의 결과가 플랫폼 독립적인 바이트코드가 됩니다. 간단히 말해서 이것은 Java 가상 머신을 실행할 수 있는 모든 기계 또는 장치에서 실행할 수 있으며 예상한 대로 원활하게 작동합니다. 그러나 때로는 특정 아키텍처에 대해 고유하게 컴파일된 코드를 실제로 사용해야 하는 경우가 있습니다 . 네이티브 코드를 사용해야 하는 몇 가지 이유가 있을 수 있습니다. 일부 하드웨어를 처리해야 하는 필요성 매우 까다로운 프로세스의 성능 향상 Java로 다시 작성하는 대신 재사용하려는 기존 라이브러리입니다. 이를 달성하기 위해 JDK는 JVM에서 실행되는 바이트코드와 기본 코드 (일반적으로 C 또는 C++로..

Java 2021.10.04
반응형