programming language/Java 23

[Java] ForkJoinPool 알아보기

전에 Future랑 CompletableFuture에 대해 간단히 알아보았다. 이번에는 ForkJoinPool에 대해 알아보고자 한다. 지난 글에서 Future, FutureTask, CompletableFuture 에 대해 공부를 사알~짝 했었는데 이 내용을 보고 해당 글을 보면 더 이해가 잘 될 것이다. (지난 내용 클릭) 1. Fork? Join? ExecutorSerivce? ForkJoinPool? Java 7에서부터 Fork/Join 프레임워크를 도입했다. 사용 가능한 모든 프로세서 코어를 사용하여 병렬 처리 속도를 높이는 데 도움이 되는 도구를 제공하는데 이는 분할 및 정복 접근 방식을 통해 달성된다. Fork 비동기식으로 실행될 수 있을 만큼 단순해질 때 까지 작업을 더 작은 독립 하위 작..

[Java] 스레드 - Future, FutureTask, ComplatebleFuture?

최근에 스레드에 대해 공부를 진행하고 있다. 그런데 Future, FutureTask, ComplatableFuture 관련해서 필자가 잘 이해를 못하고 있다. 그래서 이를 정리하고자 한다. 1. Future? Oracle에서는 공식 문서에서 future에 대해 다음과 설명하고 있다. Future는 비동기 계산의 결과를 나타냅니다. 계산이 완료되었는지 확인하고, 완료될 때까지 기다리고, 계산 결과를 검색하는 메서드가 제공됩니다. 결과는 계산이 완료되었을 때 get 메소드를 사용해서만 검색할 수 있으며 필요한 경우 준비될 때까지 차단됩니다. 취소는 cancel 메소드로 수행됩니다. 작업이 정상적으로 완료되었는지 또는 취소되었는지 확인하기 위한 추가 메서드가 제공됩니다. 계산이 완료되면 계산을 취소할 수 없..

[Java] @annotation을 통한 Response 데이터 변경하기 (feat : jackson)

일반적으로 많은 회사에서 사용자의 개인 정보를 정책에 따라서 암호화해서 관리하고 있을 것이다. 이것을 또한 조회 시에 마스킹 처리도 해야 할 수 있다. 그래서 이러한 사항에 대해서 알아보던 중에 정보를 정리해서 어떻게 사용하는지 알아보려고 한다. 필자는 복잡한 것은 싫으니 최소한으로 활용할 수 있는 방법을 아~주 간단하게 보려고 한다. 그럼 후비고오~ 1. Serialize and Deserialize (직렬화와 역직렬화) 우선 다시 직렬화와 역직렬화에 대해 간단히 알아보려고 한다. 직렬화 객체, 데이터 구조 등의 메모리 내 복잡한 구조를 전송 가능한 형태로 변환하는 과정 (예 : JSON, XML, 바이트 스트림 등). 데이터를 파일에 저장하고거나, 네트워크를 통해 다른 시스템으로 전송하기 위해 필요...

[Java] 불변객체를 사용해야 하는 이유 + record 사용하기

최근에 스스로 공부를 하면서 java14부터 도입된 record 기능을 사용해 보았는데 그냥 그럭저럭 사용을 해보았다. 문제는 그냥 사용을 하는데 그치는게 아니라 왜 불변 객체가 필요한지 이해를 못하고 있다는 점이다. 전에 들어본적 있는데 솔직히... 개발자로 계약해서 들어왔는데 코딩 업무 안주는거 뭐냐...? ㅠㅠ... 하여간 이번 기회에 다시 무엇이 문제인지, 왜 필요한지 찾아보고 정리하려고 한다. 참고한 내용은 다음과 같다. 출처: https://ko.wikipedia.org/wiki/%EB%B6%88%EB%B3%80%EA%B0%9D%EC%B2%B4 https://hackernoon.com/5-benefits-of-immutable-objects-worth-considering-for-your-ne..

[Java] 배열 - Arrays 정리하기 : 2탄 - copyOfRange, equals, fill, deepEquals

지난 글에서 Arrays와 관련된 메서드들을 정리했다. 지난 내용이 궁금하면 여기 클릭! 이번 글에서는 copyOfRange, equals, fill, deepEquals 의 내부 코드를 살펴보고 사용법에 대해 알아볼 것이다. 참고한 내용은 다음과 같다. https://www.geeksforgeeks.org/equals-and-deepequals-method-to-compare-two-arrays-in-java/ https://yeh35.github.io/blog.github.io/documents/java/java-assert/ 1. Arrays.copyOfRange 지난 글에서 보았던 copyOf와 왠지 비슷할 것 같은 느낌이 든다. copyOf //copyOf @HotSpotIntrinsicCand..

[Java] 배열 - Arrays 정리하기 : 1탄 - copyOf, asList, binarySearch

요즘 필자는 코딩 테스트 책으로 공부하고 있는데, 배열 관련 문제를 푸는데 유용한 Method 를 소개하고 있다. 사실 보면 다 아는것이 대부분인데 이것을 적재적소에 사용할 수 있는지는 별개의 문제이다. 고로, 이번 기회에 Arrays와 관련된 유용한 기능들을 정리하려고 한다. (별로 유용하지 않아도 봐주세요...ㅠㅠ) 참고한 사이트는 다음과 같다. https://www.geeksforgeeks.org/arrays-aslist-method-in-java-with-examples/ https://www.geeksforgeeks.org/system-arraycopy-in-java/ https://coding-factory.tistory.com/548 1. 얕은 복사와 깊은 복사 얕은 복사과 깊은 복사에 대해..

Tree 구조(Structure)란?

필자는 Tree 구조에 대해 많이 들었지만 정확히 이해를 하지 못한것 같다. 이번에는 제대로 개념에 대해 이해하고 이것을 코드로도 작성해볼 것이다. 이 글은 다음 사이트들를 참조했다. 출처 사이트 목록 클릭 더보기 https://en.wikipedia.org/wiki/Binary_tree https://yoongrammer.tistory.com/71 https://www.programiz.com/dsa/trees https://www.geeksforgeeks.org/introduction-to-tree-data-structure/ https://justin-miguel-fernandez.medium.com/algorithm-time-complexity-9bf96bc84d2d https://www.geek..

Set이란? HashSet, TreeSet, LinkedHashSet

이번 글의 목적은 Set에 대해 이해하고, HashSet과 TreeSet, LinkedHashSet이 있는데 이 기능은 무엇이 있고, 어느 상황에 사용하면 좋을지 생각해는 것이다. 1. Set이란? 중복이 없는 element들을 저장하는 컬렉션. 더 형식적으로, set은 e1.equals(e2)같은 e1과 e2 의 한 쌍을 가지지 않는다. 이름에 함축되어 있듯이, 이 인터페이스는 수학적인 set abstraction을 모델화한다. 출처 : https://docs.oracle.com/javase/8/docs/api/java/util/Set.html 또한, set을 이해하기 위해 다음 그림을 참고하면 좋다. 수학적으로 중복되지 않은 항목들이 모인 것을 set라고 한다. 간단하게 set의 특징에 대해 이야히가..

[Java] Comparable, Comparator, 정렬 방법

필자는 무언가 정렬을 잘 못하는것을 최근 깨달았다. 그래서 이번에는 자바에서 정렬을 하는 방법을 학습하려고 한다. 이게 이런게 참 기초이지만 모르는다는것에 부끄러움을 사알짝 느끼면서 오늘도 시자악~ 1. Comparable oracle에서 Comparable에 대한 설명을 가져왔다. 이 인터페이스는 그것을 구현하는 각 클래스의 객체에 total ordering을 수행한다. 이 ordering은 클래스의 natural ordering으로 여기지고, 클래스의 compareTo 메소드는 natural 비교 메소드로 여겨진다. 이 인터페이스를 구현하는 객체의 리스트는 자동적으로 Collections.sort(그리고 Arrays.sort)로 정렬될 수 있다. 이 인터페이스를 구현하는 객체는 정렬된 맵에서 키로 이..

Map 알아보기

저번에 List에 대해서 정리를 했는데 정리를 하지 않을 것이 Map이랑 Set이 있다. 이번에는 Map에 대해 알아보고자 한다. 1. Map이란? java.util에 존재하는 map interface는 키와 값사이의 매핑을 나타낸다. 맵 인터페이스는 컬렉션 인퍼테이스의 하위 항목이 아니다. 그러므로 컬렉션 타입의 나머지와 약간 다르게 작동한다. 맵은 유일한 키를 가진다. 출처 : https://www.geeksforgeeks.org/map-interface-java-examples/ Map은 사전처럼 key-value 연관 매핑같은 사용에 완벽하다. 맵은 키로 색인을 하는데 혹은 키로 값을 가져오거나 수정할 때 사용한다. 흔한 시나리오는다음과 같다. 에러 코드와 그 설명에 대한 맵 우편번호와 도시의 맵..