목록전체 글 (60)
꾸준히 기록하자
모든 문자열의 값이 숫자인지 알바벳인지를 판별하는 메서드에 대해 간략하게 알아보도록 하겠습니다. 1. isdigit() 문자열의 값이 모두 숫자로 구성되어 있는지를 판별해 맞으면 True 아니면 False로 결과를 return 합니다. isdigit() 메서드는 숫자를 판별하는 메서드들 중 하나이며, 추가적으로 isdecimal(), isnumeric()가 있습니다. text = '01234' print(text.isdigit()) # 결과: True text = 'a1234' print(text.isdigit()) # 결과: False 2. isalpha() 문자열의 값이 모두 알파벳으로 구성되어 있는지를 판별해 맞으면 True 아니면 False로 결과를 return 합니다. 대소문자 모두 가능합니다...
SmartEditor를 사용하여 DB에 저장한 데이터를 엑셀로 다운로드했을 때 HTML 태그와 엔티티 문자들이 포함되어 출력되었습니다. 이를 제거하기 위한 작업을 아래와 같은 방법으로 진행하였습니다. 아파치에서 제공하는 StringEscapeUtils와 정규식을 사용해서 문제를 해결했습니다. 아래는 코드블록은 예제코드입니다. String content = "테스트 케이스"; System.out.println("결과 : " + removeHtmlTags(content)); // 결과 : 테스트 케이스 public String removeHtmlTags(String value) { String rtnVal = StringEscapeUtils.unescapeHtml4(..
정규 표현식(Regular expression)은 데이터 중에 원하는 조건과 일치하는 데이터를 찾아내기 위해 사용하는 것입니다. 자사 설루션(solution) 리팩토링 할 때 기존에는 DBMS별 정규식으로 분석하고 DBMS별로 표현식을 관리했었습니다. 신규로 추가해야 하는 DBMS 중 정규식 함수가 없어서 Java 정규식을 사용해 관리를 해야 했었습니다. 문제점으로 DBMS별로 정규식과 패턴에 결괏값이 조금씩 상이했고 패턴들을 관리하기 어려운 점이 있었습니다. 여러 가지로 고려했을 때 공통적인 결괏값, 패턴 관리를 효율적으로 하기 위해 Java 정규식을 사용하는 게 제일 좋다고 생각했습니다. 속도를 비교하기 위해 10만 건 동일한 데이터와 패턴으로 DBMS별로 속도 테스트를 했을 때 자바정규식과 큰 속도..
JAVA 정규식을 통해 데이터를 분석하여 패턴에 일치한 데이터와 불일치한 데이터 count 하는 로직에 추가적으로 불일치 데이터는 DB에 저장하는 로직을 구현해야 했습니다. 처음엔 불일치한 데이터가 발생할 때마다 insert 했었는데 분석을 완료하는 데에 있어서 처리 속도가 매우 느려져 불일치 데이터들을 모아서 한 번에 처리하는 로직으로 변경했습니다. 변경하면서 동적 쿼리인 foreach문을 알게 되어 아래 예제 코드 블록과 같이 작성해 처리 속도 개선에 도움이 되었습니다. insert into TEST_INFO ( test_sn , test_nm , test_data_value ) values ( #{item.testSn} , #{item.testNm} , #{item.testDataValue} ) 끝.
find() 메서드에 대해 간략하게 알아보도록 하겠습니다. find()는 문자열 안에 찾고자 하는 값의 인덱스 값을 반환해 주고 없을 경우 -1을 반환합니다. 그리고 시작과 끝 인덱스를 지정할 수 있습니다. 아래 코드 블록은 사용 문법입니다. '문자열'.find('찾는 값') '문자열'.find('찾는 값', start) '문자열'.find('찾는 값', start, end) 아래 예제를 통해 확인해 보겠습니다. print('서울시 서초구'.find('특')) # 결과: -1 print('서울시 서초구'.find('서')) # 결과: 0 print('서울시 서초구'.find('서', 1)) # 결과: 4 print('서울시 서초구'.find('서', 1, 4)) # 결과: -1 추가적으로 rfind()는..
Call by Value(Pass by Value)와 Call by Reference(Pass by Reference)에 대해 알아보겠습니다. Java의 메서드 호출 방식은 Call by Value이지만 인자 값이 원시 또는 참조 자료형에 따라 부르는 명칭만 다른 거 같습니다. Call by Value는 메서드 안에서 인자 값을(원시 자료형) 변경해도 인수 값은 변경되지 않습니다. Call by Reference는 객체의 주소값을(참조 자료형) 넘겨주기 때문에 객체 변수의 값을 변경할 수 있습니다. 아래 코드블록은 Call by Value 예제입니다. * 인자 값은 변경이 되지만 인수값은 변경되지 않는 걸 확인할 수 있습니다. public static void main(String[] args) { in..
조합(Combination)에 대해 간략하게 알아보도록 하겠습니다. 조합은 서로 다른 n개의 물건들 중 r개를 뽑아 순서가 없이 나열한 것이며 기호로 nCr와 같이 나타내고 중복은 불가능합니다. nCr의 팩토리얼을 이용한 계산 nPr/r! 즉 n!/(n-r)!/r!입니다. 3개의 물건 중에 2개를 뽑은 경우의 수는 3입니다. nCr = 3!/(3-2)!/2! 즉 3 x 2 x 1 / (1) / 2 x 1로 6 / 2 = 3 * 0! 은 1입니다. 1. 아래 코드 블록 itertools 라이브러리를 사용하여 작성한 코드입니다. from itertools import combinations test_list = ['A', 'B', 'C'] result = list(combinations(test_list, ..
PMD는 기본으로 제공하는 규칙 세트로 프로젝트 전체 코드를 스캔해 문제가 될 수 있는 코드를 찾아주는 도구 말하자면 나쁜 코딩을 보고하는 정적 소스 코드 분석 도구입니다. 참고로 규칙 세트는 사용자가 만들 수도 있습니다. PMD에서 기본으로 제공하는 규칙 세트를 가지고 check code 하여 알아낸 정보를 공유하고자 합니다. 참고로 기본적으로 알아두면 좋을 거 같은 내용으로 작성했습니다. 1. 매개 변수 재할당 방지 AvoidReassigningParameters: Avoid reassigning parameters such as 'name' 아래 예제 코드블록과 같이 매개 변수인 name의 값을 변경해 받은 메시지입니다. public static void main(String[] args) { St..