java 6

[Java] 원격파일 유효여부 체크

백엔드 개발중 파일 생성스케쥴을 걸어놓는 경우가 생겼다. 해당 파일을 프론트에서 다운을 받아야 하기에, 처음에는 아래 로직으로 체크한 후 다운을 받게 구현하였다. String addr = "파일경로"; for (int idx = 0; idx < 10; idx++) { Thread.sleep(500); File f = new File(addr) if (f.exists()) { break; } } 서버에 파일이 존재하는 경우에는 별다른 문제없이 정해진 시간동안 기다면서 중간중간 체크하여 문제없이 동작하였는데, 파일이 원격에 존재하는 경우에는 항상 없는 것으로 체크하는 현상이 발견되었다. 이 문제를 아래와 같이 URLConnection을 이용하여 조치하였다. String addr = "파일주소"; for (i..

[Oracle] CLOB 조회 - 매우 긴 문자열

오라클에서는 문자를 저장하는 VARCHAR2가 최대 4000자까지만 지원되어, 그 이상의 데이터는 CLOB에 저장을 하였다. 그런데, 이는 반대로 읽어올때도 문제가 되는데, 읽어올때도 4000자 이상은 읽어오지를 못하였다. 게다가 CLOB에 저장된 데이터는 평범하게 SELECT column 으로는 조회가 모두 되지 않아, 아래와 같이 조회하여야 했다. 방법1 SELECT DBMS_LOB.SUBSTR(col1, DBMS_LOB.GETLENGTH(col1)) FROM MyTable 그런데, 이때 col1의 크기가 4000을 넘어가면 또 에러가 발생한다. 위와 같이 방법을 찾아 진행했었는데, 해당 Query의 결과를 Java단에서 정상적으로 읽지를 못하였다. 방법2 그래서, Query는 기존 그대로 사용하여 ..

Development/Etc 2020.03.05

암호화/복호화

웹개발시 암호화는 로그인 비밀번호를 암호화하곤 하여 대부분 단방향으로만 암호화를 진행했었다. 그런데 간혹 양방향으로 암호화/복호화가 필요한 경우가 있어 별도의 Class로 이를 구현하였고 정리하고자 작성한다. package com.test.xxx; import java.io.UnsupportedEncodingException; import java.security.GeneralSecurityException; import java.security.Key; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec..

Development/Etc 2019.10.21

HttpClient timeout 설정

구글에 검색하면 나오지만, 이전 버전에 자료들이 주로 나와서 현재(19.10월) 기준 동작되는 내용을 정리 int CONNECTION_TIME_OUT = 3; RequestConfig.Builder requestBuilder = RequestConfig.custom(); requestBuilder.setConnectTimeout(CONNECTION_TIME_OUT * 1000); requestBuilder.setConnectionRequestTimeout(CONNECTION_TIME_OUT * 1000); requestBuilder.setSocketTimeout(CONNECTION_TIME_OUT * 1000); HttpClient client = HttpClientBuilder.create().setD..

문자열 비교

단순히 문자열끼리 비교할 경우에는 "str1".equals("str2") 과 같이 사용할 수 있다. "str1" 의 값이 null인지 여부를 체크하여야 해서 불편한 경우에는 StringUtils.equals("str1", "str2") 를 사용하기도 한다. 여러 문자열 중 내가 원하는 문자열이 있는지 찾고자 하는 경우에는 일일이 비교해야 하는 번거로움이 있는데, 아래와 같이 문자열리스트를 사용하여 처리할 수 있다. private static final List COMPARE_LIST = new ArrayList(Arrays.asList("str1", "str2", "str3")); if (COMPARE_LIST.contains("compare_str")) { // Logic 처리 }