Lambda와 Stream은 Java8부터 도입되었지만, 그동안 개발하면서 Lambda와 Stream 사용에 대한 경험이 적어서 제대로 알지 못했다. 그래서 Lambda와 Stream이 무엇이고 왜 사용하는지에 대해 알아보려고 한다. Lambda 정의익명 함수(anonymous function)로, 메서드나 기능을 간단하게 표현할 수 있는 방법이다.Java 8에서 도입되었으며, 주로 함수형 인터페이스(Functional Interface)의 인스턴스를 생성하기 위해 사용된다. Lambda 문법(매개변수1, 매개변수2, ...) -> { 실행할 코드 }1. 람다는 메서드 이름이 없다.2. 람다는 반환 타입이 없다. 정확하게 말하자면 람다식은 값을 반환하는 식이지만, 그 자체로 변수를 할당하는 방식이 아니..
stack 영역은 지역변수나 함수와 같이 일시적으로 사용되는 데이터들이 저장되며, 함수 호출이 종료되면 해당 데이터는 사라진다. 반면, heap 영역은 new 연산자로 생성된 객체들이 할당되며 이 객체들은 메모리 관리법에 따라 해제된다. 이 메모리 관리법은 GC(Garbage Collection)이라고 하며, GC의 동작원리에 대해 알아보려고 한다.GC (Garbage Collection)메모리 관리 기법 중 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요 없게 된 영역을 해제하는 기법이다.프로그램에서 사용중이거나 참조되고 있는 객체는 여전히 포인터를 유지되고 있지만, 참조되지 않는 객체는 더 이상 프로그램에서 참조되고 있지 않는다. 따라서 더이상 참조되지 않는 객체에 대한 메모리를 회수할..
해시 테이블은 해시 충돌이 발생하였을 때, 분리 연결법에 의하여 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()는 부모의 기본 생성자를 호출한다. 이때, 부모 클래스의 생성자가 아무것도 선언되어있지 않다면 컴파일러가 자동으로 기본 생성자를 생성하기 때문에 문제가 되지 않지만 매개변수를 포함하는 생성자가 있는 경우에는 기본 생성자..
- Total
- Today
- Yesterday
- fail-fast
- spring boot
- 오블완
- Load Balancer
- 정적변수
- 추상클래스
- Sticky Session
- 자동구성
- Caching
- AutoConfiguration
- 티스토리챌린지
- 인스턴스변수
- java
- Hash
- object
- Spring
- fail-safe
- 로드 밸런서
- nginx
- nosql
- HashMap
- Red-Black Tree
- HashSet
- JPA
- syncronized
- @conditional
- 고정 세션
- 인터페이스
- Security
- 다중화
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |