클래스파일을 찾는 기준 경로이다. JRE는 application을 실행할때 classpath에 지정된 경로를 참조하여 compile된 class를 찾는다. classpath는 directory와 file을 ","으로 구분한 목록이다. JRE는 classpath에 지정된 경로를 모두 검색해서 특정 클래스 코드가 포함된 class 파일을 찾는다. public static void main(String[] args) { String classpath = System.getProperty("java.class.path"); System.out.print(classpath); } * classpath print
1. Reflection 이란? - Java에서 지원하는 기능으로, 실행중인 Java Application에서 동적으로 Class의 Metadata를 읽어와 특정 정보를 획득하거나, Instance를 다룰 수 있다. 대표적으로 Spring에서는 @Component가 붙은 Class의 Instance를 생성하거나, 제 3의 Instance를 DI해줄 때 사용된다. Spring에서 이런 작업들이 수행될 때 접근 제한자가 private이어도, 해당 메소드를 실행할 수 있는 이유가 바로 Reflection을 사용하기 때문이다. 2. 자주 사용될 수 있는 Class Metadata //Class String simpleName = clazz.getSimpleName(); Class superclass = claz..
LocalDateTime의 Format1. DateTimeFormatter.ISO_DATE_TIME- 2018-10-10T00:00:00.000+09:00- 2018-10-10T00:00:00.000Z 2. 그밖의 format- yyyyMMddHHmmss- yyyy-MM-dd HH:mm:ss- yyyy-MM-dd LocalDateTime의 다양한 변환1. LocalDateTime sql.TimeStampimport java.sql.Timestamp; @Converter(autoApply = true)public class LocalDateTimeConverter implements AttributeConverter { @Override public Timestamp convertToDatabaseColu..
1. JMX 란? - JMX는 JCP(Java Community Process)에 의해 개발된 아래 두가지 스펙에 의해 정의된다.- JSR 3 : Java Management Extensions (JMX) Specification- JSR 160 : Java Management Extensions (JMX) Remote API 1.0에 의해 정의된다.** JSR (Java Specification Request)- JDK 1.5부터 기본적으로 탑재되어 제공되고 있다. - 자바 어플리케이션의 모니터링과 관리 기능을 제공한다.- Non-Java resources와 하드웨어에 대해 wrapping한 인터페이스를 제공하며, API를 외부로 노출해 application 설정 및 통계데이터를 수집할 수 있다. - ..
StringBuffer, StringBuilder String은 Immutable Object이다. 때문에 입력한 String이 변경될 경우 새로운 memory(Heap)에 변경된 String 객체가 생성된다. 그래서 String을 parsing하여 "+" 연산으로 새로운 문자열을 생성하면 memory(Heap)가 낭비되고, 속도도 느리다. 이런 이유로 JDK 1.5 버전 이전에는 성능상 이슈가 있었지만 JDK 1.5 부터 StringBuffer, StringBuilder가 생기면서 이슈가 해결되었다. 또한 String을 사용하더라도 Compile시 String을 StringBuilder로 Compile되도록 변경되었다. 하지만 명시적으로 StringBuilder를 사용하는것이 좋을것 같다. String..
List ArrayList : 배열(Array)의 향상된 버전 또는 가변 크기의 배열이라고 생각하면 된다. - List중 가장 많이 사용된다.- 배열과 같이 인덱스로 접근할 수 있다. - 배열과 달리 생성된 후에 동적으로 크기를 증가 시키거나 감소시킬 수 있다. - 배열의 복사에 의한 데이터 저장처리를 내부적으로 행하며, 각 데이터에 대한 인덱스를 가지고 있기 때문에 검색이 매우 빠르지만 많은 데이터의 추가/삭제 시에는 배열의 복사가 빈번하게 일어나 성능이 떨어지는 단점이 있다. - 쓰레드 동기화를 지원하지 안는다. LinkedList : 빈번하게 삽입과 삭제가 일어나는 경우에 사용한다. - 다음 자료의 위치정보를 가지며, 내부적인 인덱스 가지고 있지 안다. 데이터의 추가 / 삭제는 위치정보의 수정 만으..
Generic 1. Generic이란 무엇인가?- generic은 type을 compile시점에 정하는 키워드로, type을 사용하는 쪽에서 지정한다. 그렇다면 왜 generic을 사용할까? 어떤 type인지 체크하여 실행할때 형변환에서 발생할 수 있는 에러를 방지하고, 확장성 있는 객체를 만들 수 있기 때문이다. 한가지 예를들자면 List가 있다. List는 다양한 자료구조를 담을 수 있지만 어떤 자료구조가 들어올지 알 수 없다. 때문에 사용하는쪽에서 type을 정하면 이를 compile시점에 사용자가 지정한 type의 List가 생성된다. 아래는 ArrayList의 시그니쳐와 실제 ArrayList를 사용하는 예제이다. List (interface) - public interface List exte..
static - static은 class, field, method 등에 사용되는데, JVM -> Runtime Data Areas -> Mehtod -> Permanent에 생성된다. - 인스턴스가 생성될 때 참조하는 영역이 Method영역(class, method등 메타정보 저장)이므로 인스턴스 생성없이 사용할 수 있다. - EX : - 클래스 :public static class UserGroup { public static final String GROUP_1 = "GR_1"; } - 메소드 :public static UserDTO create(long id, String name) { UserDTO userDTO = new UserDTO(); userDTO.id = id; userDTO.name..
1. JVM - Class loader : 런타임에 클래스를 처음으로 참조할 때 해당 클래스를 Runtime Data Areas로 로드하고 링크한다. - Runtime Data Areas : JVM이 운영체제 위에서 실행 되면서 할당받는 메모리 영역이다. - Execution Engine : Load된 Class를 실행하는 엔진이다. - Garbage Collector : 사용 되지않는 객체를 해제하여 자동으로 메모리를 관리한다. 2. Runtime Data Areas - Method - 메서드 영역은 모든 스레드가 공유하는 영역으로 JVM이 시작될 때 생성된다. JVM이 읽어 들인 각각의 클래스와 인터페이스에 대한 런타임 상수 풀, 필드와 메서드 정보, Static 변수, 메서드의 바이트코드 등을 보관..
- Total
- Today
- Yesterday
- guava
- SmartLifecycle
- RetryTemplate
- docker
- Embeddable Mapping
- 복합키 Mapping
- java Equals
- JPA
- Charles proxy
- Discriminate Mapping
- Spring Registrar
- @Primary
- Registrar
- Spring JDBC Template
- Criteria
- Typesafe Config
- Mapping
- Join Table
- Akka
- java EqualsAndHashCode
- Sprint RetryTemplate
- DI
- Spring
- JPA Criteria
- java generic
- scikit-learn
- spring spel
- Embedded Mapping
- Property
- Query DSL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |