일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정보처리기사 실기 기출문제
- Elasticsearch
- SRE
- 티스토리챌린지
- 공부
- AWS EKS
- 기록으로 실력을 쌓자
- APM
- kotlin querydsl
- PETERICA
- 코틀린 코루틴의 정석
- MySQL
- 정보처리기사실기 기출문제
- AI
- Pinpoint
- minikube
- aws
- Java
- tucker의 go 언어 프로그래밍
- CKA 기출문제
- golang
- CloudWatch
- Spring
- kotlin
- CKA
- Linux
- Kubernetes
- kotlin coroutine
- 오블완
- go
- Today
- Total
목록Programming/JAVA (20)
피터의 개발이야기

개발자는 데이터를 다루는 사람들입니다. 데이터는 다양한 형태와 속성으로 존재하고 있고 또 어디론가 전달됩니다. 이런 데이터의 흐름과 관련된 용어를 공부하였습니다. 아래의 내용은 여기 블러그를 공부한 내용을 복붙하였습니다. 직렬화, 역직렬화란? 직렬화 - 객체에 저장된 데이터를 I/O 스트림에 쓰기(출력) 위해 연속적인(serial) 데이터로 변환하는 것 역직렬화 - I/O 스트림에서 데이터를 읽어서(입력) 객체를 만드는 것 자바에서 직렬화와 역직렬화는 객체를 파일로 저장하거나 네트워크를 통해 전송하기 위해 제공되는 기능이다. 객체는 '인스턴스 변수의 집합'이므로 객체를 저장/전송하는 것은 객체의 인스턴스 변수의 값을 저장/전송하는 것과 동일하다. ObjectInputStream과 ObjectOutputS..

파일을 S3에 업로드 하는 로직 개발 중 파일명을 고객이 입력한 값으로 해달라는 요청이 있었습니다. 근데 그 고객이 "1054_20210113_ 👍.JPEG" 이름을 지정해 주셨습니다. 긴급 패치... 이럴 줄이야... 그면 우선 긴급 패치한 내용부터 정리합니다. replaceAll @Test public void fileNameFilterTest(){ String fileName = "이상한 파일 이름_1234_20210120 ㅎㅎㅎ 👍 !!#&.jpeg"; fileName = fileName .replaceAll("[^a-zA-Z0-9가-힣_.]", "") // 알파벳과 한글, 숫자, 언더바와 점만 허용한다. .replaceAll(" ",""); // 빈칸제거한다. System.out.println(..

서론 데이터 백업 작업 시에 파일을 읽고 쓰는 로직이 필요하여 정리를 하였습니다. 자바8 이후 자원의 생성과 해제가 자동입니다. Java - Try-with-resources로 자원 쉽게 해제 Java7 이전에, try-catch-finally 구문에서 자원을 해제하였습니다. Java8에서는 try-with-resources는 try(...)에서 선언된 객체들에 대해서 try가 종료될 때 자동으로 자원을 해제해주는 기능입니다. try에서 선언된 객체가 AutoCloseable을 구현하였다면 Java는 try구문이 종료될 때 객체의 close() 메소드를 호출해 줍니다. File Read @Test public void fileReadTest() throws FileNotFoundException { tr..

백업데이터를 생성할 때에 CSV파일을 생성할 일이 많이 있습니다. CSV 파일 생성 방법에 대해 정리를 하였습니다. gradle compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.11.4' compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.11.4' compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.4' compile group: 'com.fasterxml.jackson.dataformat', name: 'ja..

데이터의 암호화를 위해 개발하였던 것을 정리하도록 하겠습니다. CryptUtil package com.peterica.swagger.util; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.math.BigInteger; import java.security.MessageDigest; import org.apache.commons.codec.binary.Hex; @Component @S..

자바 공부를 하는 중에 다른 분들의 github를 보다가 JAVA 문제를 풀어보는 분들이 있었다. 문제는 알고리즘을 짜거나 JAVA 문자열 처리 등 다양한 문제들이 있었다. 하나씩 풀면서 굳어있는 나의 머리를 다시 살려야겠다. 지금은 124 나라의 숫자 문제를 풀기 위해 JAVA프로젝트를 하나 만들었다. 공부한 내용은 Github에 있습니다.

서비스 운영 중에 톰켓이 OutOfMemory를 뱉어내며 작동을 하지 않을 때가 있다. APM 시스템이 잘 갖춰진 곳이라면, 시스템의 문제가 발생 시에 바로 알림이 운영자에게 보내져서 바로 대응이 가능하겠지만, 그렇지 않은 경우 문제가 커진 후에나 장애처리가 될 것이다. 예기치 못한 상황에서 자동적으로 시스템을 복구하는 방법이 있다. JVM옵션에서 이것을 제공하고 있다. OnOutOfMemoryError 옵션을 이용하면, OutOfMemroy 발생 이후에 특정 동작을 지정할 수 있다. 톰캣 옵션 추가 방법 setenv.sh에 "-XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError" 옵션 추가 JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx102..

HashMap은 개발의 편의성을 위해 자주 사용한다. MSA로 구성된 서비스에서 더더욱 그러하다. 사용자 정보를 조회하고 다른 서버와 통신하여 구매정보를 구해온다. 키값으로 구매정보 리스트를 HashMap에 저장하여 사용자정보 기준으로 정보를 쉽게 조합할 수 있다. 1. 객채 선언 HashMap map = new HashMap(); 2. 데이터생성 map.put(10, "apple"); map.put(20, "orange"); map.put(30, "banana"); map.put(40, "watermelon"); map.put(50, "dragonfruit"); 3. 데이터 조회 String carName = (String)map.get(10); 4. 데이터 삭제 map.remove(20); 5. 키의..

ㅁ 이전달 1일 전의 날짜인 경우 Exception 처리 Calendar cal = Calendar.getInstance( ); cal.add ( cal.MONTH, -1 ); // 이전달 cal.set(Calendar.DAY_OF_MONTH,1); // 해당 월의 1일로 변경 cal.set(Calendar.HOUR_OF_DAY,0); // 0시 cal.set(Calendar.MINUTE,0); // 0분 cal.set(Calendar.SECOND,0); // 0초 if(request.getApply_date() != null && request.getApply_date().before(cal.getTime())){ throw new Exception("변경은 전달까지만 가능합니다."); }

Stream을 사용하면 늘 쓰는 것만 사용하게 된다. 나 같은 경우 filter를 주로 많이 사용하는데, fiter는 중간처리자이다. 곧, Stream을 반환하기에 최종 처리 단계를 더 거쳐야 한다. 특히 단순히 list 중에 값이 있는지만 알기 위해 간단한 방법이 있다. API는 최종 처리 단계 특정 조건을 만족하는 요소들을 얻을 수 있도록 세가지 매칭 메소드를 제공한다. allMatch() 모든 요소들이 주어진 조건을 만족하는지 조사, anyMatch() 모든 요소 중 한 개라도 조건에 만족하는지 조사, noneMatch() 주어진 조건에 모든 요소들이 안 맞는지 조사, allMatch() 사용 시 주의점이 있다. 리스트가 널일 경우 true를 반환한다. 자칫 버그처럼 보이지만 논리학에서 가정이 거짓..