자바(SE)
-
밑이 2인 로그 프로그래밍에서는 2를 사랑하기 때문에 일반적으로 로그 라고 하면 밑이 2인 로그를 말한다. 그런데 자바 API는 정말 불친절한듯. 프로그래머에 대한 배려가 없이 그냥 밑이 10인 상용로그와 밑이 e인 자연로그를 위한 api만 제공한다. 로그를 배운지 얼마 안된 상태였다면 전혀 문제가 안되지만 고등학교를 졸업한지 까마득 하다보니 밑이 2인 로그를 구하는 방법을 망각하고 있었다. 이때는 log의 밑 변환 공식을 이용하자. 따라서 API를 이용해 밑이 2인 log는 아래와 같이 구해볼 수 있다.
밑이 2인 로그 구하기밑이 2인 로그 프로그래밍에서는 2를 사랑하기 때문에 일반적으로 로그 라고 하면 밑이 2인 로그를 말한다. 그런데 자바 API는 정말 불친절한듯. 프로그래머에 대한 배려가 없이 그냥 밑이 10인 상용로그와 밑이 e인 자연로그를 위한 api만 제공한다. 로그를 배운지 얼마 안된 상태였다면 전혀 문제가 안되지만 고등학교를 졸업한지 까마득 하다보니 밑이 2인 로그를 구하는 방법을 망각하고 있었다. 이때는 log의 밑 변환 공식을 이용하자. 따라서 API를 이용해 밑이 2인 log는 아래와 같이 구해볼 수 있다.
2020.10.16 -
Comparator의 default method chaining Java에서 정렬을 위해서 Comparator를 사용하는데 어느 순간 다양한 static /default 메서드들이 생겨서 정렬을 훨씬 편하게 처리할 수 있게 되었다. 이 메서드들은 대부분 자기 자신을 리턴해서 chaining 형태로 사용되는데 람다식과 제네릭을 사용하면서 주의할 점이 있어서 관련 내용을 포스팅 한다. Comparator의 static/default 메서드들 다음은 Comparator에 선언된 static 메서드 들이다. 메서드 명 선언부와 설명 naturalOrder() public static
Comparator의 default method chainingComparator의 default method chaining Java에서 정렬을 위해서 Comparator를 사용하는데 어느 순간 다양한 static /default 메서드들이 생겨서 정렬을 훨씬 편하게 처리할 수 있게 되었다. 이 메서드들은 대부분 자기 자신을 리턴해서 chaining 형태로 사용되는데 람다식과 제네릭을 사용하면서 주의할 점이 있어서 관련 내용을 포스팅 한다. Comparator의 static/default 메서드들 다음은 Comparator에 선언된 static 메서드 들이다. 메서드 명 선언부와 설명 naturalOrder() public static
2020.08.13 -
List에서의 자료 삭제 이번 포스트에서는 List에서 데이터 순회 과정에서 자료를 삭제하는 방법과 주의할 사항에 대해 알아보자. 일반적인 반복문에서의 삭제 index를 이용한 for 탐색 과정에서 특정 요소를 삭제하는 과정에서는 index의 조절에 대해 신경 써줘야 한다. 아래와 같이 문자열을 관리하는 List에서 길이 기반으로 삭제하는 메서드가 있다고 생각해보자. static List list; static void init() { list = new ArrayList(); list.add("Hello"); list.add("Java"); list.add("GoGo"); list.add("World"); } static void indexBaseDelete(int len) { for (int i = ..
List에서의 자료 삭제List에서의 자료 삭제 이번 포스트에서는 List에서 데이터 순회 과정에서 자료를 삭제하는 방법과 주의할 사항에 대해 알아보자. 일반적인 반복문에서의 삭제 index를 이용한 for 탐색 과정에서 특정 요소를 삭제하는 과정에서는 index의 조절에 대해 신경 써줘야 한다. 아래와 같이 문자열을 관리하는 List에서 길이 기반으로 삭제하는 메서드가 있다고 생각해보자. static List list; static void init() { list = new ArrayList(); list.add("Hello"); list.add("Java"); list.add("GoGo"); list.add("World"); } static void indexBaseDelete(int len) { for (int i = ..
2020.08.11 -
Integer 사용 시 주의 점 JDK 1.5 버전부터 추가된 Wrapper 클래스에 대한 autobox과 unbox 기능은 프로그래밍에서 아주 유용하게 사용된다. 그러다 어느 시점이 되면 둘을 똑같이 받아들이고 사용하는 경향이 발생하는데 여기서 주의해야 할 점을 정리해둔다. Wrapper는 객체다!! 흔한 상식으로 기본형의 동등 비교에는 ==을 사용하고 객체형의 비교에는 equals를 사용한다는 내용은 잘 아는 내용이다. 그런데 기본형의 wrapper를 사용하다 보면 이런 상식을 까먹고 하고싶은 대로 하는 경우가 왕왕 발생한다. 아래 예를 살펴보자. public class WrapperCareful { public static void main(String[] args) { for(int i=125; ..
Integer 사용 시 주의점Integer 사용 시 주의 점 JDK 1.5 버전부터 추가된 Wrapper 클래스에 대한 autobox과 unbox 기능은 프로그래밍에서 아주 유용하게 사용된다. 그러다 어느 시점이 되면 둘을 똑같이 받아들이고 사용하는 경향이 발생하는데 여기서 주의해야 할 점을 정리해둔다. Wrapper는 객체다!! 흔한 상식으로 기본형의 동등 비교에는 ==을 사용하고 객체형의 비교에는 equals를 사용한다는 내용은 잘 아는 내용이다. 그런데 기본형의 wrapper를 사용하다 보면 이런 상식을 까먹고 하고싶은 대로 하는 경우가 왕왕 발생한다. 아래 예를 살펴보자. public class WrapperCareful { public static void main(String[] args) { for(int i=125; ..
2020.08.07 -
자바 API에서 FIFO를 처리하기 위해 Queue를 사용할 수 있는데 유사한 메서드들이 있어서 차이점을 정리하고 가보자. Queue에 데이터를 추가, 삭제, 검색할 때 제공되는 메서드들의 차이는 기능적인 것은 아니며 문제 상황에서 예외를 던지느냐 아니면 null 또는 false를 반환하느냐에 있다. 예외 발생 값 리턴 추가(enqueue) add(e) offer(e) 삭제(dequeue) remove() poll() 검사(peek) element() peek() 즉 enqueue 동작 처리를 위해서 데이터를 추가해야하는데 이미 큐가 꽉 찬 경우 add는 예외를 발생시키지만 offer는 추가 실패를 의미하는 false를 리턴한다.
[자료구조]Queue - add vs offer자바 API에서 FIFO를 처리하기 위해 Queue를 사용할 수 있는데 유사한 메서드들이 있어서 차이점을 정리하고 가보자. Queue에 데이터를 추가, 삭제, 검색할 때 제공되는 메서드들의 차이는 기능적인 것은 아니며 문제 상황에서 예외를 던지느냐 아니면 null 또는 false를 반환하느냐에 있다. 예외 발생 값 리턴 추가(enqueue) add(e) offer(e) 삭제(dequeue) remove() poll() 검사(peek) element() peek() 즉 enqueue 동작 처리를 위해서 데이터를 추가해야하는데 이미 큐가 꽉 찬 경우 add는 예외를 발생시키지만 offer는 추가 실패를 의미하는 false를 리턴한다.
2019.12.22 -
알고리즘 문제를 풀다가 황당한 상황에 빠져서 기록에 남긴다. 습관처럼 테스트케이스를 드래그해서 콘솔에 붙여 넣었다. 1 6 6 1 5 3 4 5 4 4 2 4 6 5 2 그런데 첫 라인에 공백이 있었고 다음의 코드는 실패했다. BufferedReader br = new BufferedReader(new StringReader(src)); int n = Integer.parseInt(br.readLine()); Exception in thread "main" java.lang.NumberFormatException: For input string: "1 " at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.ja..
자바 trim() 메서드 버그?알고리즘 문제를 풀다가 황당한 상황에 빠져서 기록에 남긴다. 습관처럼 테스트케이스를 드래그해서 콘솔에 붙여 넣었다. 1 6 6 1 5 3 4 5 4 4 2 4 6 5 2 그런데 첫 라인에 공백이 있었고 다음의 코드는 실패했다. BufferedReader br = new BufferedReader(new StringReader(src)); int n = Integer.parseInt(br.readLine()); Exception in thread "main" java.lang.NumberFormatException: For input string: "1 " at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.ja..
2019.08.13 -
서버와 클라이언트간 Object 스트림을 이용해서 통신할 경우가 있다. 이때 스트림 생성 순서에 주의가 필요하다. ObjectInputStream은 생성 시 Socket의 InputStream으로부터 object stream header를 읽으려고 한다. 아래 생성자에서 4바이트의 매직 시퀀스를 읽으려고 하는 부분을 살펴볼 수 있다. public ObjectInputStream(InputStream in) throws IOException { verifySubclass(); bin = new BlockDataInputStream(in); handles = new HandleTable(10); vlist = new ValidationList(); serialFilter = ObjectInputFilter...
ObjectInputStream 생성 시 주의점서버와 클라이언트간 Object 스트림을 이용해서 통신할 경우가 있다. 이때 스트림 생성 순서에 주의가 필요하다. ObjectInputStream은 생성 시 Socket의 InputStream으로부터 object stream header를 읽으려고 한다. 아래 생성자에서 4바이트의 매직 시퀀스를 읽으려고 하는 부분을 살펴볼 수 있다. public ObjectInputStream(InputStream in) throws IOException { verifySubclass(); bin = new BlockDataInputStream(in); handles = new HandleTable(10); vlist = new ValidationList(); serialFilter = ObjectInputFilter...
2019.08.07 -
아래와 같은 json 데이터를 json과 jackson을 이용해서 처리해보자. { "checkList": { "check": [ { "code": "1000", "date": "2010.10.01", "clean": "H", "ready": "H", "response": "M" }, { "code": "1001", "date": "2010.10.02", "clean": "H", "ready": "H", "response": "M", "request": "air clean!!" } ] } } 단순한 구조로 전체 map > ckeckList(map) > check(list)로 되어있으며 list안의 요소들은 다음의 java 클래스로 표현할 수 있다. import java.util.Date; public cl..
Gson과 Json을 이용한 타입 파라미터 처리아래와 같은 json 데이터를 json과 jackson을 이용해서 처리해보자. { "checkList": { "check": [ { "code": "1000", "date": "2010.10.01", "clean": "H", "ready": "H", "response": "M" }, { "code": "1001", "date": "2010.10.02", "clean": "H", "ready": "H", "response": "M", "request": "air clean!!" } ] } } 단순한 구조로 전체 map > ckeckList(map) > check(list)로 되어있으며 list안의 요소들은 다음의 java 클래스로 표현할 수 있다. import java.util.Date; public cl..
2019.08.07