해시 테이블은 해시 충돌이 발생하였을 때, 분리 연결법에 의하여 LinkedList를 활용하여 동일한 해시값에 대응하는 요소들을 저장한다고 해시 포스팅에서 다룬 적이 있다.해시 테이블 기반인 해시 맵 또한 LinkedList를 활용하여 해시 충돌을 해결하는지에 대해 알아보려고한다.해시 충돌이 발생하였을 때 해결 방법Java 8 기준으로 해시 충돌이 발생하였을 때 해결하는 방법이 다르다.Java 8 이전LinkedList 방식으로 해시 충돌을 해결한다. java 7에 대한 put 메서드에 대한 내용을 확인해본다.https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/java/util/HashMap.java#L386 jdk7u-jd..
자바 컬렉션의 iterator 는 fail-safe와 fail-fast를 지원한다.각 정의는 무엇이고 iterator에서 어떻게 동작하는지 알아보려고한다.fail-safe 와 fail-fastfail-fast는 가능한 빨리 작업을 중단하여 오류를 즉시 노출하고 작업을 중지하는 기능이다.fail-safe는 장애가 발생하더라도 작업을 중단하지 않으며 가능한 오류 발생을 피하려고 한다. 컬렉션 iterator에서의 fail-safe 와 fail-fastiterator 는 컬렉션(List, Set, Map 등)의 요소를 순차적으로 접근하고 탐색하는 방법을 제공하는 객체이다.컬렉션의 요소를 탐색할 때, 컬렉션의 수정이 발생하면 컬렉션의 iterator는 처리하는 방식이 다르다. fail-safe 방식에서는 컬렉션..
이전에 해시에 대해서 알아보았으니, 자바에서 해시를 활용한 자료구조는 무엇이 있는지 각 특징은 무엇인지 코드를 통해 한번 알아보려고 한다.2024.11.08 - [Language/Java] - Hash에 대해서 Hash에 대해서해시 (Hash, Hash Function, Hashing)Hash Function(해시 함수)은 임의의 길이의 데이터(key)를 고정된 길이의 데이터(hash)로 변경해주는 함수이다. 이 과정을 Hashing(해싱)이라고 하며, 해시 함수에 의해 나온yeongnius.tistory.comHashTable해시 함수와 배열을 기반으로 데이터를 key-value 쌍으로 저장하는 자료 구조이다. 해시 테이블은 key, hash function, hash, value, index, buc..
Object 클래스의 메서드 중 equals와 hashCode는 해시 기반 자료구조를 사용하였을 때 이점을 가져다준다고 했었다. 해시란 무엇이고, 해시 기반의 자료구조와 equals와 hashCode는 해시 기반 자료구조에서 왜 중요한지 알아보려고 한다.해시 (Hash, Hash Function, Hashing)Hash Function(해시 함수)은 임의의 길이의 데이터(key)를 고정된 길이의 데이터(hash)로 변경해주는 함수이다.이 과정을 Hashing(해싱)이라고 하며, 해시 함수에 의해 나온 결과 값이 Hash(해시)이다. 해시 함수의 특징어떠한 입력값에도 항상 고정된 길이의 해시값을 출력한다.해시 알고리즘의 종류 에 따라 결과값에 대한 길이는 정해져있으며, 다음 사이트에서 해시 알고리즘에 따라..
컬렉션 프레임워크 List의 특징과 이를 구현한 주요 클래스에 대해서 알아보려고 한다. ListCollection 인터페이스의 하위 타입으로, 순서가 있는 자료구조이다. 특징• List에 저장된 요소의 순서는 항상 보장된다. 저장 공간이 유동적으로 변하며, 순서가 있는 자료구조이다.• List는 중복 요소 저장을 허용하며, null 저장도 가능하다.• List는 저장 공간이 유동적으로 변한다. 요소가 추가되거나 삭제될 때 자동으로 크기가 조정된다.• List는 인덱스를 활용하여 요소에 접근할 수 있다.• List 와 그 구현체들은 java.util 패키지에 존재하므로, 사용 시 import 를 해줘야한다. List 의 구현체ArrayList동적 배열을 기반으로 구현된 자료구조로, 가장 널리 쓰이는 Lis..
클래스를 생성할 때 IDE나 프레임워크에서 제공하는 어노테이션으로 toString, equals, hashCode 메서드를 쉽게 재정의를 해왔었던 것 같다.그래서 이 메서드들이 정의된 최상위 클래스인 Object 클래스와 해당 메서드들에 대해 알아보려고한다.Object 클래스Object 클래스는 자바 클래스 계층 구조의 최상위 클래스이다.자바의 모든 클래스는 기본적으로 Object 클래스의 자식 클래스이므로, 클래스를 선언할 때 extends 키워드를 사용하여 명시적으로 상속하지 않더라도 컴파일러가 자동으로 Object 클래스를 상속받도록 처리한다.//일반적인 클래스 선언public class Car {}//실제로는 Object 클래스를 상속함public class Car extends Object {}..
상속은 부모 클래스와 자식 클래스 관계에서 자식 클래스가 부모 클래스의 속성과 기능을 그대로 물려 받는 것이다.상속에서의 생성자 호출 방식과 왜 상속을 사용해야하는지, 상속을 사용할 때 주의해야할 점은 무엇이 있는지 알아보려고 한다.상속 관계에서의 생성자 호출자식 클래스의 어떠한 생성자도 명시적으로 선언되어있지 않다면 컴파일러는 자식클래스에 기본 생성자를 생성한다.public HybridCar { public HybridCar() { super(); }}super()는 부모의 기본 생성자를 호출한다. 이때, 부모 클래스의 생성자가 아무것도 선언되어있지 않다면 컴파일러가 자동으로 기본 생성자를 생성하기 때문에 문제가 되지 않지만 매개변수를 포함하는 생성자가 있는 경우에는 기본 생성자..
인터페이스는 객체의 사용 방법을 정의하는 데 사용되는 추상 타입이다.그럼 왜 인터페이스를 사용해야하고, 이점은 무엇이 있는지에 대해 알아보려고 한다.인터페이스의 다중 구현과 다중 상속클래스의 상속 관계에서는 다중 상속이 불가능하다.자식 클래스가 둘 이상의 부모 클래스로부터 동일한 시그니처를 갖는 메서드를 상속 받는다고 했을 때, 자식 클래스는 어떤 부모의 메서드를 상속 받아야 할 지 모르기 때문이다.반면에, 인터페이스는 다중 상속과 다중 구현이 가능하다. 다중 구현클래스는 여러 인터페이스를 구현할 수 있다.클래스는 구현하고자 하는 각 인터페이스에 정의된 메서드를 구현해야 한다.public interface Drivable { void forward(); void reverse();}public..
추상 클래스와 인터페이스는 클래스의 기본 구조를 정의하는 공통점이 있지만 차이점이 있다.본 글에서는 추상 클래스와 인터페이스의 차이를 알아보려고한다. 추상클래스와 목적추상 클래스는 클래스들의 공통적인 필드와 메서드를 추출해서 선언한 클래스로, 실체 클래스와 상속의 관계를 가진다.공통된 속성과 행동을 통일할 목적으로 사용하는데, 실체 클래스가 여러개이고 설계하는 사람도 여러명이라고 가정했을 때 실체 클래스마다 속성과 행동이 다를 수 있다.예를 들어 전기차, 하이브리드차, 내연기관차는 자동차라는 공통점이 있다. 바퀴, 창문, 라이트와 같이 공통된 속성이 있고 전진과 후진이라는 행동을 가진다. 하지만 전기차, 하이브리드차, 내연기관차에 대한 클래스를 생성할 때 동일한 속성과 행동을 가짐에도 불구하고 다른 이름..
싱글톤이 무엇이고 메모리 관점에서 어떻게 동작하는지에 대해 알아보려고 한다.싱글톤 패턴클래스에서 오직 한 개의 객체만 갖도록 보장하고, 객체에 대한 전역적인 접근점을 제공하는 패턴이다. 싱글톤프로그램 내에서 단 한번만 생성된 객체이다. 왜 그리고 언제 사용할까싱글톤을 사용하는 목적은 하나의 객체가 반복적으로 생성되지 않도록 보장하기 위한 것이다.즉 인스턴스가 오직 하나여야 함을 보장하고, 잘 정의된 접근점으로 모든 사용자가 접근할 수 있도록 해야할 때 사용한다.예로 데이터베이스 연결(DBCP, Database Connection Pooling)이 있다. 데이터베이스 연결이 필요한 곳에서 매번 새로운 연결 객체를 생성한다면, 리소스 낭비가 발생하고 성능 저하가 일어날 수 있다. 객체를 사용할 때 데이터베이..
- Total
- Today
- Yesterday
- nginx
- 인터페이스
- java
- HashSet
- Sticky Session
- Hash
- Security
- Caching
- 인스턴스변수
- fail-safe
- Red-Black Tree
- syncronized
- spring boot
- HashMap
- 다중화
- Load Balancer
- 고정 세션
- AutoConfiguration
- 자동구성
- fail-fast
- object
- 로드 밸런서
- @conditional
- 오블완
- 정적변수
- nosql
- 추상클래스
- JPA
- Spring
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |