Greengrass 코어 기기에서 AWS IoT 와 연결하기 위해서는 AWS Root CA 가 필요한데, AWS Root CA 를 서버에서 내려주기 위해서 아래와 같이 코드를 작성하였다. String awsRootCa = ""; try { URL url = new URL("https://www.amazontrust.com/repository/AmazonRootCA1.pem"); InputStream in = url.openStream(); byte[] buffer = new byte[128]; int readCount = 0; StringBuilder result = new StringBuilder(); while((readCount = in.read(buffer)) != -1) { String part..
Java 에서 "2020-11-05T07:18:13.906Z" 처럼 되어 있는 타임스탬프를 비교하기 위해 사용할 수 있는 Java 8 에서 제공되는 API 가 있다. LocalDateTime 에서는 아래와 같은 메소드를 이용해 두 개의 date 값을 비교할 수 있다. isBefore() : 인자보다 과거일 때 true가 리턴 isAfter() : 인자보다 미래일 때 true가 리턴 isEqual() : 인자와 같은 시간일 때 true가 리턴 예제) public void compareTimestamp() throws ParseException { String timestamp1 = "2020-07-14T06:05:10.452Z"; timestamp1 = timestamp1.substring(0, times..
Java 에서의 정렬은 java.util.Collections 클래스의 static 메소드인 sort() 를 사용한다. Collections 클래스에서 오버로딩 된 두 개의 sort() 메소드가 있음을 확인할 수 있는데 sort() 를 사용해 정렬하는 방법에는 Comparator 와 Comparable 인터페이스를 구현하는 방법이 있다. 1. Comparable 인터페이스 sort() 메소드의 매개변수 타입을 보면 List 로 제네릭 타입을 받고 있는데 이때 T는 로, Comparable 인터페이스를 구현한 타입이어야 한다. Comparable 인터페이스를 살펴보면 Comparable 인터페이스에는 compareTo() 메소드 하나 밖에 없으므로 이 메소드만 오버라이딩 해주면 Collections.sor..
Hashtable, HashMap, ConcurrentHashMap 클래스들은 Map 인터페이스를 구현한 콜렉션들로, 각 콜렉션들이 비슷한 역할을 하는 것 같으면서도 다르게 구현되어 있다. 기본적으로는 Map 인터페이스이기 때문에 구조를 가진다. Hashtable : Hashtable 은 put, get 과 같은 주요 메소드에 synchronized 키워드가 선언되어 있으며 또한 key, value 에 null 을 허용하지 않는다. HashMap : HashMap 은 주요 메소드에 synchronized 키워드가 없으며, 또한 Hashtable 과 다르게 key, value 에 null 을 입력할 수 있다. 하지만 HashMap 도 아래와 같이 선언하면 Thread-safe 한 맵으로 사용이 가능하다. ..