해시 테이블은 해시 충돌이 발생하였을 때, 분리 연결법에 의하여 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 {}..
어플리케이션을 개발하고 운영에 있어서 예외와 에러는 매우 중요한 요소이기에 예외와 에러에 대한 차이점과 예외의 종류 및 처리 방법에 대해 알아보려고 한다.Error와 ExceptionError(에러)는 프로그램 실행 중에 언제 발생할지 예측하거나 제어할 수 없는 오류이다.주로 하드웨어 수준에서 발생하며 프로그램의 실행이 중단되어 대부분은 정상 상태로 돌릴 수 없다.예를 들어, 메모리 부족이나 시스템 충돌에 의해 발생한다.Exception(예외)는 프로그램의 실행 중에 발생할 수 있는 예측 가능한 오류이다.예외는 예외 처리를 통해 프로그램이 종료되지 않고 정상 실행 상태를 유지할 수 있다.예를 들어, 사용자의 잘못된 조작 또는 개발자의 잘못 된 코딩으로 인해 발생한다.⭐️ 에러와 예외를 나눌 수 있는 기준..
상속은 부모 클래스와 자식 클래스 관계에서 자식 클래스가 부모 클래스의 속성과 기능을 그대로 물려 받는 것이다.상속에서의 생성자 호출 방식과 왜 상속을 사용해야하는지, 상속을 사용할 때 주의해야할 점은 무엇이 있는지 알아보려고 한다.상속 관계에서의 생성자 호출자식 클래스의 어떠한 생성자도 명시적으로 선언되어있지 않다면 컴파일러는 자식클래스에 기본 생성자를 생성한다.public HybridCar { public HybridCar() { super(); }}super()는 부모의 기본 생성자를 호출한다. 이때, 부모 클래스의 생성자가 아무것도 선언되어있지 않다면 컴파일러가 자동으로 기본 생성자를 생성하기 때문에 문제가 되지 않지만 매개변수를 포함하는 생성자가 있는 경우에는 기본 생성자..
인터페이스는 객체의 사용 방법을 정의하는 데 사용되는 추상 타입이다.그럼 왜 인터페이스를 사용해야하고, 이점은 무엇이 있는지에 대해 알아보려고 한다.인터페이스의 다중 구현과 다중 상속클래스의 상속 관계에서는 다중 상속이 불가능하다.자식 클래스가 둘 이상의 부모 클래스로부터 동일한 시그니처를 갖는 메서드를 상속 받는다고 했을 때, 자식 클래스는 어떤 부모의 메서드를 상속 받아야 할 지 모르기 때문이다.반면에, 인터페이스는 다중 상속과 다중 구현이 가능하다. 다중 구현클래스는 여러 인터페이스를 구현할 수 있다.클래스는 구현하고자 하는 각 인터페이스에 정의된 메서드를 구현해야 한다.public interface Drivable { void forward(); void reverse();}public..
스프링부트의 자동 구성(auto-configuration) 기능은 개발자가 수동으로 필요한 설정을 하는 하는 번거로움을 줄여준다. 때문에 개발자는 복잡한 설정 과정을 하지 않고 비즈니스 로직에만 집중할 수 있다. 이 글에서 스프링부트에서 자동구성의 원리와 그 작동 방식에 대해 알아보려고 한다. auto-configuration 정의스프링부트에서 애플리케이션을 시작할 때 필요한 설정을 자동으로 구성해주는 기능을 제공한다. 즉, 개발자가 수동으로 필요한 설정을 하지 않아도 기본적인 설정이 자동으로 적용된다는 것이다. 예를들어, mysql 드라이버가 클래스패스에 존재하고 데이터베이스 연결과 관련된 설정을 하지 않더라도 application.properties에 관련 설정 정보만 작성해준다면 스프링부트는 자동으..
- Total
- Today
- Yesterday
- java
- Hash
- Spring
- fail-fast
- Red-Black Tree
- 추상클래스
- AutoConfiguration
- 로드 밸런서
- 오블완
- object
- 고정 세션
- HashSet
- @conditional
- 다중화
- spring boot
- nginx
- syncronized
- Security
- JPA
- nosql
- 정적변수
- Sticky Session
- fail-safe
- HashMap
- Caching
- 자동구성
- 티스토리챌린지
- 인스턴스변수
- 인터페이스
- Load Balancer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |