일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Connection Pool
- FCM
- 이펙티브 자바
- @Valid
- NotBlank
- multi module
- JPA
- Proxy Patter
- springboot
- Spring Boot
- @SpyBean
- Service Locator
- Effective Java
- 데이터베이스
- 플라이웨이트
- Firebase
- Effetive Java
- 디자인 패턴
- deleteById
- Web
- @MockBean
- Item04
- SQL 삽입 공격
- java
- @ControllerAdvice
- db
- NotEmpty
- 트랜잭션
- restTemplate
- Service Locator 패턴
- Today
- Total
목록java (15)
NoTimeForDawdling
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/csQ1rn/btrQw2fbmom/gizj3AZgNLFpNvkq5NKqo0/img.png)
상황에 따라 ArrayList와 LinkedList를 적절히 활용한다면 더 좋은 효율성을 보여줄 수 있을 텐데요, 어떨 때 어떤 자료구조를 사용하면 좋을지 한번 알아보겠습니다. 구조 ArrayList와 LinkedList를 그림으로 보면 다음과 같습니다. ArrayList는 데이터들이 순서대로 쭉 늘어선 배열의 형식을 취하고 있습니다. LinkedList는 순서대로 늘어선 것이 아니라 자료의 주소 값으로 서로 연결되어 있는 구조를 하고 있습니다 ArrayList 동적 배열을 사용하여 요소를 저장합니다. 데이터를 저장하고 접근하는데 좋습니다. 특정 자료형들이 메모리 공간 상에서 연속적으로 이루어져 있습니다. 인덱스로 해당 원소에 접근할 수 있으며, 인덱스를 알고 있다면 O(1)의 시간 복잡도로 원소에 접근..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/sn0Se/btq66kFadru/gLofketUMc5H0KuT6qVFzk/img.png)
강한 참조(Strong Reference) 강한 참조는 Java의 기본 참조 유형으로 new를 통해 객체를 생성할 때 생기게 되는 참조다. 강함 참조를 통해 참조되고 있는 객체는 참조가 해제되지 않는 이상 가비지 컬렉션의 대상에서 제외된다. 약한 참조(Weak Reference) 약한 참조는 java의 lang 패키지의 WeakReference 클래스를 사용하여 생성한다. 약한 참조는 GC가 발생하면 무조건 수거된다. WeakReference가 사라지는 시점이 GC의 실행 주기와 일치한다. Soft Reference Soft 참조는 강한 참조와 약한 참조와는 다르게 GC에 의해 수거될 수도 있고, 수거되지 않을 수도 있다. 메모리에 충분한 여유가 있다면 GC가 수행된다 하더라도 수거되지 않는다. 하지만 ..
싱글턴 패턴이란? 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하여, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 디자인 패턴입니다. Singleton class는 하나의 인스턴스만을 생성하는 책임이 있으며 getInstance() 같은 메서드를 통해 모든 클라이언트에게 동일한 인스턴스를 반환하는 작업을 수행합니다. 싱글턴 패턴의 필요성 싱글턴 패턴은 오직 하나의 인스턴스만 생성하기 때문에 메모리 낭비를 방지할 수 있습니다. 그리고 여러 스레드가 동시에 해당 인스턴스를 공유하여 사용하게끔 할 수 있으므로, 요청이 많은 곳에서 사용하면 효율을 높일 수 있습니다. 싱글턴 만드는 방법 (Java 8) 1. public static final 방식 public class Singleton { pub..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bb53Pj/btqZheUfht9/P0Kq9lwjD0Yhs9GkjWJuS1/img.png)
해시코드(hashCode) 해시코드란? 자바에서 동일한 이름의 객체가 여러 개 생성될 수 있는데, 이 객체들은 이름만 같을 뿐 서로 다른 상태를 가진 객체들입니다. 이 객체들을 구분하기 위해 고유한 정수값으로 출력시켜주는 메서드가 바로 hashCode()입니다. 즉, 해시코드란 객체를 식별하는 고유한 정수값을 의미합니다. 해시코드는 일반적으로 객체의 내부 주소를 정수값으로 변환하는 형태로 구현됩니다. 코드 예제 public class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } } public class HashcodeTest { public..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b3igKa/btqYLylkXUE/HKsDLiSTKYf5liKqhjzqY0/img.png)
기본형과 참조형의 종류 기본형과 참조형의 종류는 다음과 같습니다. 기본형(Primitive Type) Boolean Type(boolean) Numeric Type Character Type(char) Integral Type Integer Type(short, int, long) Floating Point Type(float, double) 참조형(Reference Type) Class Type Interface Type Array Type Enum Type 기본형(Primitive Type) 기본형이란? 기본형은 실제 값을 저장하는 공간입니다. 자바에서 기본 자료형은 반드시 사용하기 전에 선언되어야 합니다. 비객체 타입으로 null값을 가질 수 없습니다. 기본형의 종류(8가지) Type Bits Ra..
예전에 스터디를 참여하면서 일급 컬렉션에 대해 공부하고, 적용해 본 적이 있었습니다. 일급 컬렉션이 무엇인지, 어떤 장점이 있는지 지금부터 알아보겠습니다. 일급 컬렉션이란? 일급 컬렉션은 Collection을 Wrapping 하면서, 그 외 다른 멤버 변수가 없는 상태를 뜻합니다. 중요한 점은 Collection을 포함한 클래스는 반드시 다른 멤버 변수가 없어야 한다는 겁니다. 간단한 코드 예제 List numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); 위의 코드를 아래와 같이 Wrapping 하는 것을 얘기합니다. public class Numbers { private List numbers; public FirstCl..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/wlNL6/btqYtOPpnyi/yr0DJ8wxGHWgGTEY8tywE1/img.png)
개발을 하다 보면 객체를 복사할 때가 있을 겁니다. 객체의 복사는 얕은 복사와 깊은 복사 두 개념으로 나뉩니다. 단어만 보고 어떤 개념인 것 같은지 느낌이 오시나요?? 어떤 느낌일 것 같은지 생각해 보셨다면 생각한 것과 일치하는지 한번 알아보겠습니다! 얕은 복사란?(Shallow copy) 얕은 복사란 객체의 참조값(주소값)을 복사하는 것을 의미합니다. 복사된 객체는 원본 객체와 같은 주소값을 참조합니다. 그렇기 때문에 복사된 객체의 값이 바뀌면 원본 객체의 값 또한 바뀌게 됩니다. 깊은 복사란?(Deep Copy) 깊은 복사란 객체의 실체 값을 복사하는 것을 의미합니다. 복사될 객체에 새 주소를 할당하여 원본 객체의 모든 값을 복사합니다. 원본 객체의 주소 값을 참조하지 않기 때문에 복사된 객체의 변화..
자바에서 접근 제어자는 정보 은닉을 위해 필수적으로 알고 있어야 할 내용입니다. 그렇다면 접근 제어자가 뭘까요?? 접근 제어자란? 접근 제어자는 변수, 메서드, 클래스 선언 시 사용되며 해당 변수, 메서드, 클래스의 접근 권한을 제어하는 역할을 합니다. 즉, 접근 제어자를 통해 해당 정보를 외부로부터 보호해주기 때문에, 정보 은닉을 구현할 수 있게 도와줍니다. 접근 제어자 종류 접근 제어자의 종류로는 4가지가 있습니다. private: 멤버를 선언한 톱레벨 클래스(해당 클래스)에서만 접근 가능합니다. package-private(default): 멤버가 소속된 패키지 안의 모든 클래스에서 접근할 수 있습니다. protected: package-private의 접근 범위를 포함하며, 이 멤버를 선언한 클래..