Java(28)
-
[Java 9] Modularity(모듈화)
Java 9 Modularity 자세한 코드는 baeldung를 참고했습니다. Java 9버전에 새로운 기능 Modularity가 있습니다. 한 프로젝트 안에 독립적인 모듈을 여러 개 유지하면서 필요한 모듈 API를 구동함으로써 메모리를 효율적으로 사용할 수 있습니다. 또한 개별 모듈은 캡슐화을 가지면서도 서로 공유될 수 있는 접근성을 보장해줍니다. 사용할 수 있는 환경은, 프로젝트 내 여러 애플리케이션 서버를 가지는 경우 필요한 모듈만 따로 구동하되 모듈끼리 의존성을 가지는 부분은 연동이 필요할 때 사용하면 좋다고 생각합니다. 간단한 module 설정파일은 아래와 같습니다. 프로젝트 구조: //module-info.java (hello.modules) module hello.modules { expor..
2022.04.26 -
Arrays.sort(), Comparable, Comparator
Arrays.sort(), Comparable, Comparator Sort Java에서 Collections나 Arrays를 정렬하기 위해 sort() 를 사용합니다. Sorting 알고리즘은 퀵 정렬을 채택해 시간복잡도는 O(nlong(n)) 입니다. 타입이 객체거나 2차원 배열을 사용해서 sorting해줄 땐 Comparator를 파라미터에 추가해줘야 합니다. Comparable compareTo() 메서드만 가지고 있는 인터페이스 입니다. Integer, Long, Date 등의 타입클래스는 Comparable를 상속해 compareTo()가 오버라이딩 되어 있습니다. 만일 내가 클래스를 따로 만들어 Comparable를 상속하고, compareTo()를 오버라이딩 한다면 Sort할 때 오버라이딩..
2022.04.13 -
[Java] jackson 라이브러리는 왜 non-static Inner class를 매핑하지 못할까?
프런트와 http로 통신할 때 JSON 형식으로 데이터를 받는 경우가 많습니다. 객체지향언어인 Java에서 객체로 바인딩 하는 문제를 도와주는 라이브러리 중 하나인 jackson은 대표적인 ObjectMapper 클래스를 제공합니다. ObjectMapper 클래스는 JSON을 읽기, 쓰기 기능 뿐만아니라 JSON Tree Model인 JsonNode 형태 가공해주기도 합니다. 기본적인 jackson 라이브러리에 대한 설명은 마치고, 다룰 주제인 non-static Inner class인 경우 convertValue(Object fromValue, Class toValue) 메서드에서 왜 com.fasterxml.jackson.databind.exc.InvalidDefinitionException를 날리는..
2022.03.01 -
[UML] UML(Unified Modeling Language) Diagram
UML(Unified Modeling Language) Diagram UML이란 시스템 설계를 시각화 하기위해 만들어진 다이어그램입니다. 객체 지향 언어인 Java 진영에선 시스템 설계를 표현하기 위한 표준 모델링으로 볼 수 있을 것 같습니다. UML 클래스 관계도 [출처: https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/] Inheritance(상속) 상속은 클래스가 IS-A 관계일 때 성립하는 상태입니다.(하위 클래스가 상위 클래스를 대체할 수 있어야 함; potato -> vegetables, bus -> vehicle) *참고로 HAS-A 관계는 조립(composition) 상..
2022.01.22 -
[Regex] Pattern and Matcher in Java
Regex: Pattern and Matcher in Java /* Predefined character classes . Any character (may or may not match line terminators) \d A digit: [0-9] \D A non-digit: [^0-9] \s A whitespace character: [ \t\n\x0B\f\r] \S A non-whitespace character: [^\s] \w A word character: [a-zA-Z_0-9] \W A non-word character: [^\w] Greedy quantifiers X? X, once or not at all X* X, zero or more times X+ X, one or more ti..
2022.01.21 -
[Java] main 메서드
main 메서드 Java를 처음 시작하면 클래스의 메서드를 실행시킬 때 main method를 사용합니다. 하지만 원리에 대해 오래 생각해본 적이 없다는 걸 최근에 발견했고 간단히 찾은 내용을 소개하려 합니다. Java main method는 Java 프로그램이 시작될 때 실행되는 포인트들입니다. 메서드 규약은 public static void main(String[] args)이며, Argument의 네이밍을 myStringArgs로 수정할 순 있어도 main이란 메서드명을 수정할 순 없습니다. 메서드를 하나하나 뜯어보면, public 접근 제어자는 java runtime 때 클래스 경로가 어디 패키지 내에 위치하든 실행할 수 있도록 접근 권한을 줍니다. static은 java runtime 때 클래스..
2022.01.15