Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Spring JPA
- @FunctionalInterface
- spring3 spring2 traceid
- aws secretmanager
- list
- elasticsearch
- traceasynccustomautoconfiguration
- awssecretsmanagerpropertysources
- HashMap
- java.util.list
- Spring Boot
- jpa
- spring
- ResponseBody
- spring MVC
- Sleuth
- map
- java list
- EnableWebMvc
- java
- asyncconfigurer
- traceId
- asynccustomautoconfiguration
- micrometer tracing
- SpringMVC
- java lambda
- kotlin
- DeferredImportSelector
- b3-propagation
- CompletableFuture
Archives
- Today
- Total
du.study기록공간
java millisecond (long) to Base64 string 변환 방법 본문
728x90
나름 중복이 덜 발생하면서, 일렬번호를 만들되, 짧게 만들 수 있는 방법이 어떤것이 있을가 찾아보던 도중, millisecond를 Base64 String 으로 만들면 어떨까 하는 생각이 들어, 해당방식을 찾아 작성합니다.
우선 사용한 모듈은 다음과 같습니다.
dependencies{
implementation("commons-codec:commons-codec:1.5")
}
해당 모듈에서 Base64.encodeBase64URLSafeString 을 사용하기 위함입니다.
아래코드는 전체 플로우를 나타낸 코드입니다.
public static byte[] longToByte(Long x){
ByteBuffer buffer = ByteBuffer.allocate(java.lang.Long.BYTES);
buffer.putLong(x);
return buffer.array();
}
public static Long byteToLong(byte[] bytes){
ByteBuffer buffer = ByteBuffer.allocate(java.lang.Long.BYTES);
buffer.put(bytes);
buffer.flip();
return buffer.getLong();
}
public static void main(String[] args) {
Long now = LocalDateTime.now().atZone(ZoneId.of("UTC")).toInstant().toEpochMilli();
System.out.println(now);
String convertTimeToString = Base64.encodeBase64URLSafeString(longToByte(now));
System.out.println(convertTimeToString);
Long rollbackStringToLong = byteToLong(Base64.decodeBase64(convertTimeToString));
System.out.println(rollbackStringToLong);
}
코드를 보면 현재 millisecond를 받아서 String으로 바꾸는 작업이 있고, 이 값을 다시 Long값으로 변경하는 로직이 있습니다.
이 작업을 핵심적으로 해주는 부분이 longToByte, byteToLong method이며, commons-codec:commons-code 를 통해서 Url safe한 String 으로도 encode, decode가 가능하게 됩니다.
728x90
'자바' 카테고리의 다른 글
Java @FunctionalInterface - Function (0) | 2021.12.14 |
---|---|
Java @FunctionalInterface - Consumer (0) | 2021.11.17 |
Spring boot +gradle+node build with kotlin (0) | 2020.10.25 |
Java Async - CompletableFuture (0) | 2020.05.25 |
Java Optional 사용하기 (0) | 2020.05.17 |
Comments