java 4

[Java] HashMap, HashTable, ConcurrentHashMap 자료구조에 대해서 알아보자

오늘은 Map Interface의 구현체의 일종인 HashMap, HashTable, ConcurrentHashMap 자료구조에 대해 알아보려고 합니다. 싱글 스레드 환경에서만 사용하는 HashMap에 대해 먼저 알아보겠습니다. 1. HashMap key, value에 null값 허용 동기화를 보장하지 않기에 싱글 스레드 환경에서만 사용 HashTable, ConcurrentHashMap보다 데이터 검색 속도를 빠르지만, 신뢰성과 안정성이 저하됩니다. 이제 해시맵에 데이터를 쓰는 과정에 대해 알아보겠습니다. 먼저, 배열 tab이 비어있거나 길이가 0이면 resize() 메서드를 통해 배열의 크기를 조정 배열의 특정 index에 node가 없으면, 새로운 node 생성하여를 해당 index에 할당 해당 i..

Java/Java Concept 2024.01.22

[Spring] DTO, VO 이 둘의 차이에 대해 알아보자

저는 DTO랑 VO를 구분하지 않고 비슷한 맥락으로 보고 있었는데요. 이 들의 차이를 구분하고 어떤 상황에서 DTO를 도입하고, VO를 도입해야 하는지 하나씩 알아보도록 하겠습니다. DTO(Data Transfer Object) 순수하게 데이터를 담아 계층 간으로 전달하는 객체, Getter/Setter 메서드만을 가집니다. "데이터 전달"이 주목적입니다. 이를 통해 보내는 쪽에서 setter를 이용하여 값을 담아 전달하고, 받는 쪽에서는 getter를 이용하여 값을 꺼내서 쓰게 됩니다. setter의 경우, 변조 가능성이 있기 때문에(setter 사용 지양) 생성자로 값을 넣어주면, 전달하는 과정에서 변조가 불가능합니다. VO(Value Object) DTO(Data Transfer Object)와는 ..

Java/Spring 2023.11.17

[Design Pattern] Adapter Pattern(어댑터 패턴)이란

Adapter Pattern에 대해 알아보기 전, Design Pattern(디자인 패턴)에 대해 간단하게 설명드리겠습니다. 디자인 패턴이란 소프트웨어의 재사용성, 호환성, 유지보수성을 보장하기 위한 설계 기법이며 아이디어입니다. 필수적인 요소는 아니지만, 아는 것과 모르는 것은 차이가 크다고 생각합니다 (필요에 따라 가져다 쓸 수 있어야 된다고 생각합니다) Adapter Pattern 호환되지 않는 인터페이스들을 연결하는 디자인 패턴 기존의 클래스를 수정하지 않고도 특정 인터페이스를 필요로 하는 코드에서 사용 가능 서로 다른 인터페이스를 가진 클래스들이 상호작용할 수 있기에 코드의 재사용성 증대 Component Target(타겟): Client가 직접적으로 호출하는 interface Adaptee(어..

Java/Design Pattern 2023.10.31

[Java] Exception

예외 계층의 구조와 체크 예외, 언체크 예외의 차이와 활용에 대해서 알아보려고 합니다. Object: 예외도 객체이고, 모든 객체의 최상위 부모는 Object이므로, 예외의 최상의 부모 또한 Object 입니다. Throwable: 최상위 예외로서, Exception과 Error로 나눌 수 있습니다. Error: 메모리 부족, 시스템 오류와 같이 애플리케이션에 복구 불가능한 시스템 예외입니다. 이 예외를 잡아서는 안 됩니다. 상위 예외를 catch로 잡아버리면 하위 예외까지 같이 잡아버리는데, Throwable 예외를 잡게 되면, Error 예외도 함께 잡는 불상사가 일어날 수 있기 때문에 잡아서는 안됩니다. Error는 언체크 예외입니다. Exception: 체크 예외 애플리케이션 로직에서 사용할 수 ..

Java 2023.08.21