본문 바로가기

전체 글

(142)
[Java] BigInteger, BigDecimal 클래스 1. BigInteger 정수형으로 표현할 수 있는 값의 한계가 있다. 가장 큰 정수형 타입인 long으로 표현할 수 있는 값은 10진수 19자리 정도이다. 이 값 보다 더 큰 값을 다뤄야 할 때 사용하면 좋은 것이 BigInteger이다. 내부적으로 int배열을 사용해서 값을 다룬다. 그래서 long타입보다 훨씬 큰 값을 다룰 수 있지만 성능은 떨어진다. docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html BigInteger (Java Platform SE 7 ) Immutable arbitrary-precision integers. All operations behave as if BigIntegers were represented in two'..
[Java] StringTokenizer 클래스 긴 문자열을 지정된 구분자(delimiter)를 기준으로 토큰(token)이라는 여러 개의 문자열로 잘라내는 데 사용된다. 예를 들어 "100,20,300,400"라는 문자열이 있을 때 ','를 구분자로 잘라내면 "100","200","300","400"이라는 4개의 문자열(토큰)을 얻을 수 있다. 물론 String의 split(String regex), Scanner의 useDelimiter(String pattern)를 사용할 수도 있다. 이 두가지 방법은 정규식 표현(Regular expression)을 사용해야하므로 정규식 표현에 익숙하지 않은 경우 StirngTokenizer를 사용하는 것이 간단하면서도 명확한 결과를 얻을 수 있을 것이다. docs.oracle.com/javase/7/docs/..
[Java] 래퍼(Wrapper) 클래스, 정규식(Regular Expression) 자바의 자료형은 크게 기본 타입(primitive type)과 참조 타입(reference type)으로 나누어진다. 기본 타입은 char, int ,float, double 등이 있고 참조 타입은 class, interface 등이 있다. 프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 다뤄야 하는 경우가 있다. 이 때 사용되는 것이 래퍼(wrapper)클래스이다. 자바는 모든 기본타입(primitive type)은 값을 갖는 객체를 생성할 수 있다. - 오토박싱(AutoBoxing)&언박싱(Unboxing) 기본 타입의 값을 포장 객체로 만드는 과정을 박싱이라고 하고 반대로 포장객체에서 기본타입의 값을 얻어내는 과정을 언박싱이라고 한다. 기본타입 값을 직접 박싱, 언박싱하지 않아도 자동적으로 박싱..
[Java] 날짜와 시간 & 형식화 1. 날짜와 시간 1.1 Calendar와 Date JDK 1.8부터 'java.time패키지'로 기존의 단점들을 개선한 새로운 클래스들이 추가되었다. - Calendar와 GregorianCalendar * Calendar를 상속받아 완전히 구현한 클래스로는 GregorianCalendar(오늘날 전세계 공통으로 사용하고 있는 그레고리력에 맞게 구현한 것)와 BuddhistCalendar가 있는데, getInstance()는 시스템의 국가와 지역설정을 확인해서 태국인 경우에는 BuddhistCalendar의 인스턴스를 반환하고, 그 외에는 GregorianCalendar의 인스턴스를 반환한다. - Date와 Calendar간의 변환 Calendar가 새로 추가되면서 Date는 대부분의 메서드가 'dep..
[Java] java.lang패키지와 유용한 클래스1 1. java.lang패키지 1.1 Object클래스 모든 클래스의 최고 조상이기 떄문에 Object클래스의 멤버들은 모든 클래스에서 바로 사용 가능하다. 1) protected Object clone() - 객체 자신의 복사본을 반환한다. - Object클래스에 정의된 clone()은 단순히 인스턴스변수의 값만을 복사하기 때문에 참조변수 타입의 인스턴스 변수가 정의되어 있는 클래스는 완전한 인스턴스 복제가 이루어 지지 않는다. ex. 배열의 경우, 복제된 인스턴스도 같은 배열의 주소를 갖기 때문에 복제된 인스턴스의 작업이 원래의 인스턴스에 영향을 미치게 된다. 이런 경우 clone메서드를 오버라이딩해서 새로운 배열의 내용을 복사하도록 해야한다. 2) public boolean equals(Obecjt ..
[ES]Elasticsearch란 1. Elasticsearch란 Elasticsearch는 텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 분산형 오픈소스 검색 및 분석 엔진이다. Elasticsearch는 Apache Lucene을 기반으로 구축되며, 2010년에 최초로 출시했다. 간단한 RESET API, 분산형 특징, 속도, 확장성으로 유명한 Elaticsearch는 데이터 수집, 보강, 저장, 분석, 시각화를 위한 오픈소스 도구 모음인 Elastic Stack의 중심 구성 요소입니다. 보통 (Elasticsearch, Logstach, Kibana의 머리글자를 따서) ELK Stack이라고 하는 Elastic Stack에는 이제 데이터를 Elasticsearch로 전송하기 위한 경량의 데이..
[ES] Solr vs Elasticsearch 위 순위는 검색포털 사이트(google, bing 등) 검색 횟수/빈도와 IT커뮤니티(StackOverflow, DBA Stack, Exchange 등) 관련 질문 수와 관심있는 사용자 후 등으로 측정된 검색엔진 순위이다. 독립적으로 Apache Lucene만을 사용해서 검색엔진을 구현하는 것은 어렵다고 합니다. 그래서 대부분은 검색엔진의 기본적인 기능이 구현되어 있는 오픈소스를 주로 사용한다. 상위 3개의 검색엔진 중 유료로 제공되는 Splunk를 제외한 Elasticsearch와 Solr에 대한 비교를 하려고 한다. 두 검색엔진 오픈소스 모두 Apache Lucene을 기반으로 구축되었지만 속도, 확장성, 배포용이성 등과 같은 기능면에서 차이점이 존재한다. Elasticsearch는 로그 분석, 모니..
[Java] 예외처리 1. 예외처리(Exception handling) 1.1 프로그램 오류 - 컴파일 에러 : 컴파일 시에 발생하는 에러 - 런타임 에러 : 실행 시에 발생하는 에러 - 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 - 에러(error) : 프러그램 코드에 의해서 수습될 수 없는 심각한 오류 ex. 메모리 부족(OutOfMemory Error), 스택오버플로우(StackOverflowError), ... - 예외(exception) : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류 1.2 예외 클래스의 계층구조 - RuntimeException클래스와 그 자손클래스들 : 프로그래머의 실수로 발생하는 예외 - Exception클래스들 : 사용자의 실수와 같은 외적인 요인에 의해 발생하는..