Java

·TIL
ConcurrentHashMap동시성에 최적화된 해시맵 구현체여러 스레드가 동시에 데이터를 읽고 쓸 수 있도록 설계되어 있다동시성 최적화 방식세그먼트 락킹Java8 이전해시맵이 여러 세그먼트로 나누어져 각 세그먼트마다 개별적인 락을 사용했다하나의 세그먼트에서만 락이 걸려도 다른 세그먼트에 대한 접근이 여전히 가능했다Java8세그먼트 락킹 대신 세분화된 락으로 변경했다내부적으로 락 스트라이핑 기법을 사용하여 개별 버킷에 락을 걸지 않고, 필요한 경우에만 부분적으로 락을 사용한다락 프리 읽기 (Lock-free Reads)읽기 작업에는 락을 걸지 않고 진행한다이는 데이터 일관성을 유지하면서도 높은 읽기 성능을 제공한다읽기 작업이 수행될 때는 데이터 구조의 내부 상태가 변하지 않도록 보장하는 기술을 사용한다동..
병렬처리란?여러 개의 작업을 동시에 수행해서 전체 처리 시간을 단축하는 방법을 말한다주로 멀티코어 프로세서를 활용하여 하나의 작업을 여러 부분으로 나누고 나눈 부분을 동시에 처리하는 방식이다자바에서는 주로 java.util.stream 패키지의 parallel stream이나 java.util.concurrent 패키지의 여러 클래스나 인터페이스를 사용해서 구현한다장점성능 향상여러 코어를 사용해서 순차적 처리보다 더 빠르게 완료할 수 있다대량의 데이터나 복잡한 계산을 처리할 때 좋다효율적인 자원 활용모든 코어를 효율적으로 사용해서 시스템 자원을 최대한 활용할 수 있다단일 코어에서 작업이 병목 현상을 일으키는 걸 방지한다응답 시간 단축병렬 처리로 작업을 나누어 동시에 처리하면 작업의 응답 시간이 줄어든다스..
람다란 ?익명 함수를 의미한다함수형 프로그래밍을 지원하기 위해 Java 8에서 도입되었다사용하면 코드가 간결해진다는 장점이 있다컬렉션과 Stream API를 사용할 때 매우 유용하다주로 [[함수형 인터페이스]]와 함께 사용한다왜 람다를 사용하나?코드 간결성 및 가독성 향상특히 컬렉션 요소를 처리하는 데 유용하다익명 클래스나 반복적인 코드없이 간단하게 기능을 정의할 수 있다함수형 프로그래밍 지원[[병렬 처리]] 및 스트림 API 강화람다 표현식은 스트림 API를 간결하게 작성할 수 있게 도와준다이벤트 처리 및 콜백 메커니즘 간소화비동기식 프로그래밍에서 콜백을 간단하게 정의할 수 있다함수형 인터페이스Consumerjava.util.function 패키지void accpet(T t)를 가지고 있다주어진 입력 ..
Timestamp와 LocalDateTime 타입의 차이점은 시간대 정보를 포함하는 지다. Timestamp은 UTC(협정 세계시)를 기반으로 시간대 정보를 포함한다. 이 타입은 주로 데이터베이스와 상호 작용할 때 사용한다. LocalDateTime은 Java8 이상부터 제공되는 타입으로, 이름에서도 알 수 있듯 로컬 시간 정보만을 나타내고 특정 시간대에 대한 정보는 없다. 사용 시점 및 권장 사항 데이터베이스와의 상호 작용이 중요하다면 Timestamp를 사용하는 걸 권장한다. 외국에서도 운영되는 서비스라면 시간대 정보가 중요하기 때문에 Timestamp를 사용해야 한다. Java8 이상의 환경이라면 LocalDateTime을 사용하는 것이 더 간단하고 권장된다. java.time 패키지에서 제공하는 ..
프로그래밍 언어인 자바는 객체 지향 언어이다. 객체 지향 언어에는 여러 가지 특징이 있다. 오늘은 그중에서 상속이라는 개념을 알아보자. 처음 나는 상속이라는 단어를 들었을 때 부모의 재산을 받는 걸 떠올렸다. 자바의 상속이라는 개념도 똑같다. 우선 상속의 개념을 살펴보면 기존의 클래스를 재사용해 새로운 클래스를 작성하는 거라고 한다. 사용하는 이유는 적은 양의 코드로 새로운 클래스를 작성이 가능하고 코드를 공통적으로 관리할 수 있다. 공통적으로 관리되는 코드는 추가, 변경에 용이하다. 그렇게 되면 재사용성이 올라가고 유지 보수하기도 좀 더 쉬워진다. 결론적으로 프로그램의 생산성이 높아지는 효고가 생긴다. 자바에서 상속을 사용하는 방법은 쉽다. 클래스 이름 옆에 extends를 붙여주고 상속받고 싶은 클래..
삼공비
'Java' 태그의 글 목록