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 변수, 메서드의 바이트코드 등을 보관..
enum - 열거타입으로 특정 기준으로 그룹화 한 상수라고 볼 수 있다. - primitive 타입처럼 "=="으로 동일성을 비교할 수 있다. - enum에서 지원하는 메소드 Static MethodsvalueOf(String arg) String 값을 enum에서 가져온다. 값이 없으면 Exception 발생valueOf(Class class, String arg)넘겨받은 class에서 String을 찾아, enum에서 가져온다. valueOf(String arg)는 내부적으로 자기 자신의 class를 가져오는 것이다.values()enum의 요소들을 순서대로 enum 타입의 배열로 리턴한다. ENUM$VALUES의 카피이므로, 너무 자주 호출하는 것은 좋지 않음.Static 아닌 Methods nam..
- java에서 정렬을 구현할때에는 Comparable, Comparator을 사용한다. 그밖에 Guava의 Ordering이 있다. - String, Integer는 기본적으로 compareTo메소드가 구현되어 있다. 1. 정렬의 기본 compareTo. -1 0 1 a, b를 비교하여 (기준은 왼쪽 파라미터) -1이 리턴되면 왼쪽이나 앞쪽 1이 리턴되면 오른쪽이나 뒤쪽 1. 오름차순 (a가 기준이되므로 a가 b보다 작을 경우 -1을 리턴하여 앞쪽으로 보낸다.) a b 1 2. 내림차순 (a가 기준이되므로 a가 b보다 클 경우 -1을 리턴하여 앞쪽으로 보낸다.) a > b -1 a == b 0 a < b 1 ** Example) String의 정렬 1. 입력받은 문자..
serializable serializable 인터페이스는 어떤 객체가 원하는 대상(파일이나 특정 서버)에 전송될 때 사용한다. 왜 이 때 serializable 인터페이스를 사용할까? public class UserDTO { private long id; private String name; } 어떤 사람은 객체의 정보를 id, name 순서로 저장할 수도 있고, 어떤 사람은 name, id 순서로 저장할 수 있다. 만일 어떤 파일에 UserDTO 타입 객체의 정보가 저장 되었다고 생각해 보면 저장하는 사람은 저장하는 방법을 반드시 알아야 하고, 사용하는 사람도 객체가 저장된 정보의 순서 같은 추가적인 정보를 알아야만 한다. 객체를 사용하는 정보도 상대방이 알아야 하기 때문에 우리가 해야 하는 작업이 ..
synchronized 여러 thread가 동시에 접근하는것을 막아주는 예약어이다. synchronized 예약어가 붙으면 thread에서 해당 예약어가 붙은 메소드나 필드에 접근할 때 lock이 잡히고, lock이 풀릴때 까지 다른 thread가 접근할 수 없다. synchronized는 성능을 저하시키므로 synchronized를 적용할때는 적용되는 부분을 최소화 해야 한다. EX :아래 예제는 synchronized가 어떻게 동작하는지 잘 보여주는 예제이다. doA는 synchronized가 없이 t0, t1 쓰레드가 경쟁적으로 doA() 메소드를 호출한다. doA를 주석처리하고 doB의 주석을 풀면 먼저 doB() 메소드를 점유한 쓰레드의 작업이 끝날때까지 다른 쓰레드가 doB() 메소드를 호출할..
1. Equlas java의 Data Type은 primitive type (int, long)과 reference type (Integer, Long)이 있다. primitive type은 int, char 등이 있는데 이런 형태의 Data Type은 "==" 연산자로 동일한 데이터인지 비교할 수 있다. 하지만 reference type은 java에서의 최상위인 java.lang.Object를 상속하는 모든 class로 primitive type처럼 "==" 연산자로 동일한 데이터인지 비교할 수 없다. reference type을 "=="로 비교하면 데이터를 비교하는게 아니라 해당 object의 reference가 동일한지를 비교하기 때문이다. 그런데 왜 "equals" 설명하는데 뜬금없이 primit..
Lombok- Annotation을 추가하면 해당하는 Code를 자동으로 생성해주는 라이브러리.- @Annotation(options) 형태로 추가적인 설정을 할 수 있다.- EX : @NoArgsConstructor(access = AccessLevel.PRIVATE)- EX : @AllArgsConstructor(staticName = "create")- EX : @EqualsAndHashCode(of = "key") 01. @Data- getter, setter, toString 을 생성한다. 02. @ToString- toString 을 생성한다. 03. @Getter- getter 를 생성한다. 04. @Setter- setter 를 생성한다. 05. @NoArgsConstructor- 기본 생..
- Total
- Today
- Yesterday
- Spring JDBC Template
- Sprint RetryTemplate
- Property
- Embeddable Mapping
- SmartLifecycle
- Embedded Mapping
- Query DSL
- Mapping
- @Primary
- Typesafe Config
- JPA
- scikit-learn
- java generic
- Discriminate Mapping
- java EqualsAndHashCode
- java Equals
- DI
- Akka
- RetryTemplate
- Criteria
- Spring
- docker
- spring spel
- JPA Criteria
- guava
- 복합키 Mapping
- Charles proxy
- Spring Registrar
- Registrar
- Join Table
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |