Spring/Java(10)
-
Garbage Collector, 제대로 이해하기
소프트웨어 개발라면 본인의 제품이 메모리를 관리하는 방식에 대한 이해가 필요합니다. 특히 Heap 영역에서 일어나는 동적 메모리 관리는 소프트웨어의 성능을 결정짓는 중요한 요소 중 하나입니다. 컴파일 언어에서 Stack 영역은 컴파일 시간에 그 크기를 가늠할 수 있는 정적 할당과는 달리, 동적 할당은 Runtime 시 Heap영역에서 할당되어 지기 때문에 그 크기가 Application 실행 동안 결정되어 집니다. Garbage Collection C나 C++에서는 개발자들이 동적 할당을 위한 코딩 작업을 하고 난 후, 더 이상 사용되지 않을 때 수동으로 해제해야 합니다. 수동으로 메모리를 해제하는 작업에 대한 휴먼 오류가 발생하기 쉬운데요. 다음과 같은 오류가 발생할 수 있습니다. - 메모리 누수를 유..
2023.01.11 -
Reactor, 제대로 이해하기, Flux Create
Reactor Publisher인 Flux를 생성하는 방법에 대해 이해하고 예제 코드로 직접 코드를 확인하는 것이 해당 포스팅의 목적입니다. | Reactor Series | - Reactive Programming, 제대로 이해하기 - Reactor 제대로 이해하기, Marble Diagram 👉🏻 Reactor, 제대로 이해하기 - Flux Create .from() 🔗 Reactor Link : Publisher로 부터 새로운 Flux 인자 방출emit Flux from(Publisher
2022.12.08 -
Java Time, 제대로 사용하기
package java.time 을 이해하고 자유자재로 사용하는 것이 본 포스팅의 목표입니다. 안녕하세요. 이번 포스팅은 미루고 미루고 미루고... 미뤘던 Java Time 총정리입니다. 미룬 만큼 잘 정리해보려고 하긴 했는데, 만약 부족한 부분이 있다면 댓글로 말씀해주세요 ☺️ java.time.Instant : 기계 시간 표현 먼저, Instant 클래스를 살펴보겠습니다. Instant는 인간이 읽을 수 없는 시간의 정수표기법입니다. 가령 1663166273 라는 타임스탬프를 보고 년, 월, 일, 시, 분, 초를 알 수 있는 사람이 존재할까요? 기계는 위의 타임 스탬프 값을 읽어 시간을 표현합니다. Instant를 통해 바로 이러한 타임스탬프 값을 나타내는 객체를 생성할 수 있습니다. Instant의..
2022.09.14 -
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