'이미 제공되어 있는 것'과 '필요한 것' 사이의 간격을 메우는 디자인 패턴이 어댑터(Adapter) 패턴어댑터 패턴은 랩퍼(Wrapper) 패턴이라고도 한다. 상속(클래스)을 이용하는 것과 인스턴스에 의한 어댑터 패턴을 이용하는 것이 존재 어댑터 패턴은 기존의 클래스를 수정해서 필요한 클래스를 만듭니다. 이 패턴에 의해 필요한 메소드를 재빨리 만들 수 있습니다. 만약 버그가 발생하더라도 기존의 클래스에는 버그가 없기 때문에 어댑터 클래스만 확인하면 되기 때문에 문제점 해결이 빨라집니다. 예제 GitHub 링크
자바에서 SimpleDateFormat 클래스를 이용하여 날짜를 패턴을 이용하여 출력할 수 있다. unixtime을 date 로 변환하는 것도 가능하고,그 반대의 경우도 가능하다. 다음과 같은 형태로 변환이 가능하다. 적용 가능한 패턴은 javadoc을 참고하면 더 좋을 것이다. 그리고 사용에 유의해야 할 점은 Y, y의 대소문자에 따라 내용이 달라 질 수 있기 때문에 년도의 패턴을 잘 구분하여 사용해야 한다. Y는 주차에 따른 년도이고, y는 해당일의 년도이다. 주차에 따른 년도(week year)년 1년이 52주이기 때문에 그에 따른 년도를 출력한다. 그래서 사용상에 주의해야 한다. 2014-12-31Mon Jan 09 00:00:00 KST 2017----------------------2013 2..
래퍼 클래스(Wrapper Class)기본형 변수도 객체로 다루어져야 하는 경우 래퍼 클래스를 이용Integer age = new Integer(30); 박싱 과 언박싱(Boxing, Unboxing)래퍼 클래스는 불변 객체이기 때문에 새로운 객체의 생성 및 참조만 가능기본자료형을 래퍼클래스로 변경하는 것을 박싱, 그 반대를 언박싱이라고 함JDK 1.5 버전 이상에서는 이를 자동으로 처리자동으로 처리하는 것을 오토박싱(AutoBoxing), 오토언박싱(AutoUnBoxing)이라고 함
불변성(Immutability)객체의 정보가 변하지 않는 것 불변 클래스인스턴스가 변경되지 않는 클래스String, 박싱된 원시 클래스, BigInteger, BigDecimal변하는 클래스보다 설계, 구현 및 사용이 용이메모리 할당String 생성시 JVM에서 상수를 이라는 메모리 공간에 할당새로 생성된 String값은 벼경할 수 없고, 이후 동일한 String 이 생성시 String 풀을 참조GC는 String 풀 영역에서는 동작하지 않음
자바에서 자주 사용하는 자료구조에는 List, Set, Map이 존재한다. List, Set은 Collections 아래 존재하고, Map은 따로 존재한다. - 순서가 있는 저장 공간- 가변적인 저장 공간- 배열은 크기가 정해져 있음- 순서대로 검색하기 때문에 데이터가 뒤에 있는경우 속도가 문제 된다. ArrayListJava 1.2에서 도입된 Collection에서 구현Vector 클래스의 단점인 Thread-Unsafe, 낮은 성능을 보완하기 위해 제공됨인덱스를 통한 아이템의 접근을 지원내부적으로 배열을 가지고 있으며, 사이즈가 늘어날 경우 기존 배열의 데이터를 복사하여 처데이터의 개수가 변하지 않는 경우에 효과적잦은 데이터의 변경은 성능이 하락됨탐색은 빠르지만 추가/삭제가 느림 LinkedList각..
JAVA9의 특징에 대하여 정리된 글들이 있어서 찾아서 스크랩 해보았다. - jshell의 제공 - 스크립트 언어와 유사한 shell 제공- JAVA 모듈화 도입 - 필요한 라이브러리만 JAR로 묶어서 경량화 가능 나만 모르고 있던 – Java 9 (Java9 빠르게 훑어 보기)Java 9의 변화와 특징 대충 정리 Java9 특징 훑어보기 from duriepark 유현석 자바9 특징 (Java9 Features) from Chang-Hwan Han
자바의 기본 객체 함수 중 하나인 equal() 함수는 객체의 값을 비교하는 연산자이다. == 연산자는 객체의 주소를 비교하고, equals()는 객체의 값을 비교하는 연산자이다. 보통 equals()는 문자열(String)의 값을 비교하는데 많이 사용한다. Object의 equals() 함수는 다음과 같다. 즉, 객체의 주소값을 비교하여 반환한다. public boolean equals(Object obj) { return (this == obj); } 하지만 String 객체의 equals() 함수는 다음과 같다. 문자열의 char 를 하나하나 비교하여 동일하면 true, 다르면 false 를 반환한다. public boolean equals(Object anObject) { if (this == a..
자바에서 HTML 파싱을 위해서 jsoup 라이브러리를 이용하면 된다. 이 라이브러리를 이용하면 html 을 get, post 방식으로 가져오는 것부터 파싱하는 것까지 한번에 처리할 수 있다. Jsoup 홈페이지(https://jsoup.org/)에서 다운로드 해도 되고, 메이븐으로 디펜던시를 추가해도 된다. org.jsoup jsoup 1.10.1 이 라이브러리를 이용하여 다음의 해외축구 사이트의 순위표를 파싱하여 처리해보면다음과 같이 처리할 수 있다. http://score.sports.media.daum.net/record/soccer/epl/trnk.daum https://jsoup.org/
자바에서 네트워크 프로그래밍을 하는 중에 프록시를 설정하는 방법은 Proxy 클래스를 이용하는 것과 시스템 프로퍼티에 프록시를 설정하는 방법이 있다. 아래의 예에서는 HttpURLConnection 을 이용하는 경우에는 Proxy 클래스를 이용하면 간단하게 처리할 수 있다. 만약 다른 외부 라이브러리를 이용하여 처리하는 경우 해당 라이브러리에 프록시 설정이 없다면시스템 프로퍼티를 이용하여 처리하면 된다. ex) jsoup package sdk.java.web; import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.InetSocketAddress;import ..
서비님이 JSON 라이브러리의 속도 관련해서 분석을 해주셨다. 많이 사용되고 있는 아래의 JSON 파싱 라이브러리 관련해서속도 체크를 한 결과 다음과 같다. JSON.simple ( Yidong Fang )GSON ( Google )Jackson ( FasterXML )JSONP ( Oracle ) 당신의 개발 환경이 빅데이터처리와 같이 주로 큰사이즈의 JSON을 처리해야한다면 Jackson 을 써라. 대용량 환경에서 GSON은 좋지않은 선택임.마이크로 서비스와 분산아키텍처 설정등과 같이 작은 용량의 많은 json 파일을 처리하는 환경이라면 GSON을 써라.대용량과 소용량 모두를 다양하게 처리하는 환경이라면 양쪽에서 2순위 정도를 기록한 JSON.simple 이 좋을수도 있겠다. 나는 작은 용량의 데이터..
트리구조
Date, Calendar 자바에서는 날짜 관련 처리를 지원하기 위해서 Date, Calendar 객체를 제공한다. Date는 JDK 1.0, Calendar는 JDK 1.1 버전에서 지원되었다. Date 가 좀더 간단하고, 이전 버전과의 호환성을 위해 계속 제공하고 있다. Calendar는 Date 객체의 추상화 버전이라고 할 수 있고, Calendar객체를 이용하는 것을 권장한다. 특정 날짜를 지정하거나, 날짜 연산을 할 경우 Calendar를 사용한다. 또한 Calendar를 사용하여 지역화 처리를 할 수 있다. * JDK8 이전의 Date 객체에는 몇가지 문제점이 존재한다. (http://d2.naver.com/helloworld/645609) - 불변 객체가 아니기 때문에 스레드에서 문제가 발생..
어노테이션과 리플렉션을 이용한 메소드 실행시간 출력 클래스에 PrintTime 어노테이션이 설정된 메소드를 찾아서 실행 시간을 출력한다. 어노테이션 @Target 은 어노테이션이 적용될 타입을 설정한다. Method, Filed 등을 설정할 수 있다. 한번에 여러 개를 적용하는 것도 가능하다. @Retention 은 어노테이션이 적용될 시점을 설정한다. Source, Runtime 등을 적용할 수 있다. 적용 시점에 따라 어노테이션 정보가 안 보일 수도 있다. 리플렉션 Class.forName() 메소드를 이용하여 데이터를 생성한다. 메소드와 메소드의 어노테이션 정보를 확인하여 @PrintTime 어노테이션이 적용된 메소드를 실행하고 실행시간을 출력한다. 테스트로 스트림을 이용한 버전과 for 문을 이용..
퀵 소트 퀵소트는 비교정렬의 한 종류이다. 찰스 앤터니 리처드 호어가 개발한 정렬 알고리즘이다. 데이터 양이 크고 섞여 있을 경우 가장 빠른 속도를 낼 수 있다. 알고리즘 1. 리스트 가운데서 하나의 원소를 고른다. (이 원소를 피벗이라 한다.) 2. 피벗 앞에는 피벗보다 작은 원소들이 오고, 피벗 뒤에는 큰 원소들이 오도록 피벗을 기준으로 리스트를 둘로 나눈다. 이렇게 피벗의 위치가 정해진다. 3. 피벗의 앞쪽 리스트와 피벗의 뒤쪽 리스트에 대하여 1, 2 를 반복한다. 소스코드[Java] package sdk.java.example.sort; import java.util.Random; public class QuickSort { /** * 퀵 소트 처리 * * @param array * @param..
- Total
- Today
- Yesterday
- build
- ubuntu
- 백준
- oozie
- Hadoop
- airflow
- Linux
- 오류
- Tez
- k8s
- HDFS
- java
- 파이썬
- emr
- 하이브
- bash
- hbase
- 알고리즘
- AWS
- HIVE
- yarn
- error
- 하둡
- 정올
- S3
- Python
- 다이나믹
- nodejs
- SPARK
- mysql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |