일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 디자인 패턴
- Effetive Java
- FCM
- java
- Spring Boot
- @ControllerAdvice
- Item04
- Firebase
- @Valid
- db
- @SpyBean
- 플라이웨이트
- Web
- Effective Java
- restTemplate
- springboot
- 이펙티브 자바
- NotBlank
- multi module
- Proxy Patter
- Service Locator
- Service Locator 패턴
- deleteById
- SQL 삽입 공격
- Connection Pool
- 트랜잭션
- @MockBean
- 데이터베이스
- NotEmpty
- JPA
- Today
- Total
목록Java (15)
NoTimeForDawdling
자바에서 접근 제어자는 정보 은닉을 위해 필수적으로 알고 있어야 할 내용입니다. 그렇다면 접근 제어자가 뭘까요?? 접근 제어자란? 접근 제어자는 변수, 메서드, 클래스 선언 시 사용되며 해당 변수, 메서드, 클래스의 접근 권한을 제어하는 역할을 합니다. 즉, 접근 제어자를 통해 해당 정보를 외부로부터 보호해주기 때문에, 정보 은닉을 구현할 수 있게 도와줍니다. 접근 제어자 종류 접근 제어자의 종류로는 4가지가 있습니다. private: 멤버를 선언한 톱레벨 클래스(해당 클래스)에서만 접근 가능합니다. package-private(default): 멤버가 소속된 패키지 안의 모든 클래스에서 접근할 수 있습니다. protected: package-private의 접근 범위를 포함하며, 이 멤버를 선언한 클래..
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..