일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Effective Java
- SQL 삽입 공격
- springboot
- db
- Web
- 이펙티브 자바
- Proxy Patter
- Service Locator
- JPA
- @Valid
- NotEmpty
- restTemplate
- deleteById
- Connection Pool
- 디자인 패턴
- multi module
- NotBlank
- java
- FCM
- 트랜잭션
- @MockBean
- 플라이웨이트
- Spring Boot
- @SpyBean
- Item04
- Service Locator 패턴
- 데이터베이스
- Effetive Java
- Firebase
- @ControllerAdvice
- Today
- Total
목록java (15)
NoTimeForDawdling
Enum Class란? Enum은 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미합니다. Enum의 특징 열거 타입 자체는 클래스입니다. 상수 하나당 자신의 인스턴스를 하나씩 만들어 public static final 필드로 공개합니다. 열거형으로 선언된 순서에 따라 0부터 인덱스 값을 가집니다.(순차적으로 증가) 열거형으로 지정된 상수들은 모두 대문자로 선언해야 합니다. 열거 타입은 밖에서 접근할 수 있는 생성자를 제공하지 않으므로 사실상 final입니다. 따라서 클라이언트가 인스턴스를 직접 생성하거나 확장할 수 없으므로 열거 타입 선언으로 만들어진 인스턴스들은 딱 하나만 존재함이 보장됩니다. Enum의 장점 컴파일타임 타입 안전성을 제공합니다. 열거 타입을 매개변수로 받는 메서드가 있다면, 건..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dVZZVw/btqXgpCPL9c/ERjL6QqaNki71ZKLPkTxak/img.png)
불변 리스트를 생성하는 방법을 알아보기에 앞서 불변 객체가 주는 장점을 알아보겠습니다. Immutable Object 장점 불변 객체는 생성된 시점의 상태를 파괴될 때까지 간직하고 있으므로 Thread Safe 하여 따로 동기화할 필요가 없습니다. 불변 객체는 어떤 스레드도 다른 스레드에게 영향을 줄 수 없으므로 안심하고 공유할 수 있습니다. 불변 객체는 그 자체로 *실패 원자성을 제공합니다. 즉, 상태가 절대 변하지 않으므로 잠깐이라도 불일치 상태에 빠질 가능성이 없습니다. 실패 원자성: 메서드에서 예외가 발생한 후에도 그 객체는 여전히(메서드 호출 전과 똑같은) 유효한 상태여야 한다. Immutable ArrayList 만드는 방법 1. Collections.unmodifiableList() 첫 번째..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bpELxy/btqW1tl3MQk/yxIcBZjQzF3zIzl4zxzMRK/img.png)
코드를 구현하던 중 Arrays.asList()로 생성한 List객체에 새로운 값을 추가할 때 UnsupportedOperationException이 발생했습니다. 그래서 Arrays.asList()에 대해 알아보려 합니다. Arrays.asList() Arrays.asList()는 AbstracList를 상속받은 private static class인 ArraysList를 반환합니다. 이 클래스는 set(), get(), contains() 메서드를 제공하고 있습니다. 하지만 add 메서드 호출 시에는 AbstractList가 제공하는 메서드를 호출하여 UnsupportedOperationException이 발생하게 됩니다. 즉, asList()로 생성한 객체의 구조적 변경 시 UnsupportedOp..
Java에 애플리케이션의 성능 향상을 위한 Cache로직이 종종 사용됩니다. 실제로 Integer 클래스는 내부에서 Integer 사용을 위해 IntegerCache를 관리합니다. IntegerCache 정적 클래스 public final class Integer extends Number implements Comparable { ... private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { // high value may be configured by property int h = 127; String integerCacheHigh..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c4mJl7/btqW4hK9rcN/Bn2q79ksiAxSof74i99ADk/img.png)
JVM이란? 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실행시켜주는 역할을 합니다. 자바 가상머신으로 자바와 운영체제 사이에서 중계자 역할을 합니다. 자바가 운영체제 종류에 영향받지 않고 돌아갈 수 있도록 합니다. 메모리 관리를 자동으로 해줍니다.(GC) JVM 구성 JVM은 크게 4가지로 구분됩니다. Class Loader Execution Engine JVM Memory (Runtime Data Area) Native 1. Class Loader Class Loader는 .class 파일(바이트 코드)을 로드하는데 사용되는 하위 시스템입니다. Class Loader는 크게 세 가지 기능을 수행합니다. Loading Lo..
들어가기 C나 C++에서는 OS레벨에서 메모리에 직접 접근하기 때문에 메모리를 명시적으로 해제해줘야 합니다. 그렇지 않으면 memory leak(누수현상)이 발생하게 되며, 현재 실행 중인 프로그램에서 memory leak이 발생하면 다른 프로그램에도 영향을 끼칠 수 있습니다. Java는 OS의 메모리 영역에 직접적으로 접근하지 않고, JVM이라는 가상 머신을 이용해서 간접적으로 접근합니다. JVM은 오브젝트가 필요해지지 않는 시점에서 알아서 메모리를 확보합니다. Java는 가상머신을 사용하여 운영체제로부터 독립적입니다. 그렇기 때문에 OS레벨에서의 memory leak는 불가능하게 된다는 장점이 있습니다. Java가 메모리 누수현상을 방지하는 또 다른 방법이 Garbage Collector 입니다. G..
전략 패턴(Strategy Pattern)이란? 전략 패턴이란 객체들이 할 수 있는 행위 각각에 대해 전략 클래스를 생성하고, 유사한 행위들을 캡슐화하는 인터페이스를 정의하여 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법입니다. 즉, 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로도 행위의 수정이 가능하도록 만든 패턴이라고 볼 수 있습니다. 전략 패턴 예제(계산기) 계산을 하는 방식은 +, -, *, / 총 4가지 방식이 있습니다. 유사한 행위들을 캡슐화하는 인터페이스를 정의하겠습니다. public interface OperationStrategy { int ..