자바

·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를 붙여주고 상속받고 싶은 클래..
https://doingsomething.tistory.com/17 Spring Framework 3 - Spring MVC 구조와 처리과정 만들어진 스프링 프로젝트를 보기에 앞서, Spring MVC가 어떻게 요청을 처리하는지 알아본다. 대략적인 처리과정은 위 이미지와 같다. 대략적인 설명은 아래와 같습니다. 자세한 설명은 앞으로 올 doingsomething.tistory.com 이전 글에서 큰 틀에서 Spring MVC 처리과정을 살펴보았습니다. 이번 글에서는 이러한 처리과정이 어떤 방식을 통해 이루어지는지 프로젝트에 있는 파일들을 통해서 알아보겠습니다. 1. 가장 우선적으로 요청이 들어오면 web.xml로 요청이 전달됩니다. 그리고 web.xml에서 DispatcherServlet이 그 요청을 처..
만들어진 스프링 프로젝트를 보기에 앞서, Spring MVC가 어떻게 요청을 처리하는지 알아본다. 대략적인 처리과정은 위 이미지와 같다. 대략적인 설명은 아래와 같습니다. 자세한 설명은 앞으로 올라 올 글에서 다루겠습니다. 1. 먼저 클라인트 쪽에서 들어오는 요청은 DispatcherServlet으로 전달된다. 2. 요청을 받은 DispatcherServlet은 HandlerMapping에게 도움을 요청한다. 클라이언트한테 이런 요청이 들어왔는데, 혹시 맵핑한 컨트롤러가 있는지 찾아달라고 부탁한다. 3. 부탁을 받은 HandlerMapping은 url패턴을 통해 맵핑한 컨트롤러를 찾는다. 4. 았다면 컨트롤에게서 클라이언트에게 보여줄 view의 이름을 받아서 DispatcherServlet에게 돌아갈 준..
내 맥북에 STS 설치가 완료되었고 이제 기본적인 스프링 프레임워크를 이용해 프로젝트를 만들고 하나하나 짚어보면서 복습을 해봐야겠다. 먼저 웹 어플리케이션을 만들려면 프로젝트가 있어야한다. package explorer에서 마우스 오른쪽 클릭 또는 file-new에 들어가면 Spring Legacy Project가 보인다. 일반적으로 Spring Legacy Project를 사용한다고 알고 있지만 다른 프로젝트들과의 차이가 살짝 궁금해지긴한다. Spring Legacy Project를 클릭하면 아래와 같은 화면이 나오고 원하는 프로젝트 이름을 설정하고 Templates들 중 가장 아래에 있는 Spring MVC Project를 클릭한다. next를 누르면 프로젝트에 필요한 라이브러리들을 다운받는데 얼마의..
삼공비
'자바' 태그의 글 목록