Spring/Java(13)
-
Bloom Filter, 제대로 이해하기 - Java
Bloom Filter의 개념과 특징, 그리고 Java에서의 사용법을 알아보는 것이 본 포스팅의 목표입니다. Bloom Filter Bloom filters는 집합 내에 특정 원소가 존재하는지를 확인할 때 사용되는 자료구조입니다. Hash Table을 사용해서 원소가 있는지 없는지를 판단하는 것과 비슷합니다. Burton H. Bloom 저의 "Space/Time Trade-offs in Hash Coding with Allowable Errors (1970)" 논문에서 소개되었습니다. 여기서 논문 제목만으로도 아래의 Bloom Filter의 특징을 직접 알 수 있습니다. # 1. 공간/시간의 트레이드 오프 # 2. 해시 # 3. 일부 에러를 허용 Bloom Filter는 공간과 시간의 효율성을 위해 일..
2022.08.31 -
Masking Name with Regex, in java
정규식을 이용해 이름에 마스킹처리를 하는 것이 해당 포스팅의 목표입니다. 보안상 이름 전체가 노출되면 안되는 경우가 있습니다. 하지만 본인의 이름을 구별할 필요는 있기 때문에 제약사항을 가지고 이름을 노출시키곤 하는데요. 부분별로 가려 이름을 마스킹 처리하는 기능을 구현하고자 합니다. Condition 먼저 적용하고자 하는 규칙은 아래와 같습니다. 아래는 실제로 요구받은 마스킹 처리 조건입니다. 한글이름 성명 중 이름의 첫번째 글자 정*성 / 현* 영문이름 첫번째 자리를 제외한 이름의 4자리 이상 B****** Spears / S**** Jobs 하지만 위의 조건은 부족한 점이 있는데요. 예를 들어 한 글자이거나, 영문이름이지만 한 단어인 경우와 같은 흔치않은 예외 상황이 있습니다. 이런 조건들을 고려하..
2022.05.29 -
Java Date & Time, 제대로 사용하기
Java의 날짜와 시간을 제대로 다루기 위해 Date, LocalDate, LocalDateTime 의 개념을 이해하고 응용하는 것이 본 포스팅의 목표입니다. History 이제는 자바 8이 꽤나 보편화된 것 같은데요. 자바 8버전이 중요하다고 하는 이유 중 하나가 바로 "날짜"를 다루는 방식입니다. 자바 8에 새로운 날짜와 시간 API가 생긴 이유는 아래와 같은 이유가 있습니다. ✔️ Mutable 자바 8 이전의 util.Date 클래스는 mutable 하기 때문에 thead safe하지 않았습니다. public class App { public static void main(String[] args) throws InterruptedException { // mutable 한 객체 -> multi-..
2022.05.22 -
ENUM, Clean Code with Java
Java Enum을 통해 If/else 분기문을 제거하여 클린코드를 지향하는 코드를 작성하는 것이 본 포스팅의 목표입니다. 문제점 몇몇의 코드를 관리할 때, if-else 문이 많아지면서 가독성이 떨어지는 경우가 발생하는 것을 경험해보셨을 텐데요. 필자도 이 문제에 대해 조금 더 깔끔한 관리를 할 수 없을지 고민하다가, 조금 더 깔끔하게 관리하기 위한 방법을 고려한 후, 공유하고자 기록하게 되었습니다. IF-ELSE 은행에서 거래 시 예금, 출금, 이체라는 세 가지의 타입의 업무를 수행해야한다고 가정하겠습니다. 그리고 각각 "DEPOSIT", "WITHDRAWAL", "TRANSFER" 이라는 코드로 이들을 구분하고자 합니다. 이 때, 출금(WITHDRAWAL), 이체(TRANSFER)를 수행할 때는 각..
2022.05.11 -
Matcher, 어렵지 않게 사용하기
이번에는 지난 포스팅에 이어 Matcher 객체에 대해 알아볼까합니다. 지난 포스팅에서는 Pattern 객체를 알아보았죠 〰️ **************** 참고 ***************** ******************************************** 🔥 Matcher Class 지난 포스팅에서는 Pattern 객체가 가진 메소드를 알아보았습니다. 이번에는 matcher객체의 method를 알아보도록 할건데요. matcher class도 java.util.regex 패키지에서 포함하고 있습니다. 🧷 find () ✔️ public Boolean find([int start]) 대상 문자열과 패턴이 일치하는 경우 true를 반환하고, 그 위치로 이동합니다. 예시는 아래의 append..
2020.08.24 -
Pattern, 어렵지 않게 사용하기
안녕하세요. 이전 포스팅에서 알아본 정규식을 활용하여 java에서 사용하는 방법을 알아보려합니다. 정규식이 낯설다면 이전의 정규식 포스팅을 참고해주세요! **************** 참고 ***************** ******************************************** 자바에서 정규식을 사용하려면 반드시 알아야하는 클래스가 두 개 있습니다. 바로, Pattern Class와 Matcher Class 입니다. 이제부터 두 클래스 중 Pattern 객체를 알아보도록 해볼게요 〰️ 🔥 Pattern Class Pattern Class는 JAVA에서 정규식을 사용하기 위해 가장 기초적으로 알아야할 객체입니다. java.util.regex 패키지에서 포함하고 있습니다. 이제부터 P..
2020.08.18