java(22)
-
Java - HashMap 동작 방법(jdk1.7,1.8 차이점)
네이버의 d2 블로그에 Java Hashmap 동작에 대해 아주 상세히 설명한 자료가 있어 참조해보았다. 해시맵에 대해 아주 상세하게 작성한 글이라 알아두면 아주 좋을 것 같다. 참조 : https://d2.naver.com/helloworld/831311 Java HashMap은 어떻게 동작하는가? 이 글은 Java 7과 Java 8을 기준으로 HashMap이 어떻게 구현되어 있는지 설명합니다. HashMap 자체의 소스 코드는 Oracle JDK나 OpenJDK나 같기 때문에, 이 글이 설명하는 HashMap 구현 방식은 Oracle JDK와 OpenJDK 둘 모두에 해당한다고 할 수 있습니다. Java가 아닌 다른 언어를 주로 사용하는 개발자라 하더라도, Java의 HashMap이 현재 어떻게 구현..
2019.08.05 -
Java - JVM이란? JVM 메모리 구조
초심으로 돌아갈 때가 된 것 같다. 오늘 포스팅할 내용은 JVM(Java Virtual Machine)이다. 사실 지금까지는 스킬 베이스의 공부만 해왔었다. 하지만 점점 개발을 하다보니 성능이라는 것에 굉장히 큰 관심이 생겼다. Java의 성능에 핵심인 JVM 튜닝을 다루어 보기 전에 우선 JVM이 무엇인지 알아보자. JVM이란? JVM(Java Virtual Machine)을 어떻게 정의할 것인가? 우선 원어를 먼저 알아보자. 처음의 "Java"는 프로그램 언어인 Java를 의미한다. 그리고 Virtual Machine은 물리적인 형태가 아닌 소프트웨어로서의 개념을 의미한다. 즉, 소프트웨어적으로 Java 언어를 실행시키기 위한 Machine을 말하는 것이다. 결국 JVM은 정의된 스펙(벤더사마다 다른..
2019.07.29 -
Java - Inner Class Json parse(can only instantiate non-static inner class by using default no-argument constructor)
RestTemplate으로 다른 API를 호출하고 특정 객체 타입으로 JSON을 parsing 하는 상황이었다. 그런데 해당 특정 객체는 내부적으로 Inner Class를 가지고 있는 상황이었는데, 아래와 같은 예외가 발생하였다. 예외:can only instantiate non-static inner class by using default no-argument constructor 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 @Getter @Setter @ToString public class Outer { @Getter @Setter @ToString @NoArgsConstructor public c..
2019.06.13 -
Java - Collections.rotate() 란?
Java - Collections.rotate() 란? 만약 List 객체에 [1,2,3,4,5] 요소들이 들어있다고 생각해보자. 여기에서 Collections.rotate(list,2) 메소드를 호출한다면 맨뒤의 요소를 하나씩 두번꺼내서 맨앞 요소자리에 넣고 다른 요소들은 뒤로 한칸씩밀리게 되는 것이다. 이것을 Step으로 표현하면 12345678910@Testpublic void CollectionsRotate(){ List list = new ArrayList(); list.addAll(Arrays.asList(new Integer[] {1,2,3,4,5})); Collections.rotate(list, 1); System.out.println(Arrays.toString(list.toArray(..
2019.02.25 -
Java - ThreadLocal 이란? 쓰레드로컬 사용법!
Java - ThreadLocal 이란? 쓰레드로컬 사용법! ThreadLocal(쓰레드로컬)이란? 쓰레드로컬이란 간단히 얘기하면 하나의 스레드의 작업 흐름동안에 전역변수처럼 무엇인가를 저장하여 사용할수 있다. 일반 변수의 수명은 특정 코드 블록(예, 메서드 범위, for 블록 범위 등) 범위 내에서만 유효하다. { int a = 10; ... // 블록 내에서 a 변수 사용 가능 } // 변수 a는 위 코드 블록이 끝나면 더 이상 유효하지 않다. (즉, 수명을 다한다.) 반면에 ThreadLocal을 이용하면 쓰레드 영역에 변수를 설정할 수 있기 때문에, 특정 쓰레드가 실행하는 모든 코드에서 그 쓰레드에 설정된 변수 값을 사용할 수 있게 된다. 아래 그림은 쓰레드 로컬 변수가 어떻게 동작하는 지를 간단..
2019.02.21 -
Java - You need to run build with JDK or have tools.jar on the classpath 오류
Java - You need to run build with JDK or have tools.jar on the classpath 오류 You need to run build with JDK or have tools.jar on the classpath. If this occures during eclipse build make sure you run eclipse under JDK as well (com.myseam.maven:apt-maven-plugin:1.1.3:process:default:generate-sources) 만약 위와 같은 에러가 pom.xml에 났다면? project folder 우클릭 > Properties > Java Build Path > Libraries Tab 에서 JRE..
2019.02.14