스프링 6

ConcurrentHashMap vs 레코드 락

1. ConcurrentHashMap을 이용한 동시성 제어ConcurrentHashMap은 자바의 동시성 제어를 지원하는 자료구조입니다. 내부적으로 세분화된 락을 이용해, 멀티스레드 환경에서 안전하게 데이터를 조작할 수 있도록 설계되었습니다.장점:빠른 읽기/쓰기 성능: 데이터는 메모리 내에 저장되며, 메모리 기반 동작이므로 읽기/쓰기 성능이 매우 우수합니다.낮은 오버헤드: 데이터 접근 시 락을 세분화(바이 락 스트라이핑)하여, 많은 스레드가 동시에 작업을 해도 병목 현상이 상대적으로 적습니다.효율적인 멀티스레드 처리: 대규모 다중 스레드 환경에서 빠르게 데이터를 처리할 수 있으며, 주로 캐시나 일시적인 데이터 저장에 유용합니다.단점:영구 저장에 부적합: 메모리 기반이기 때문에, 시스템이 종료되면 데이터가..

스프링 2024.10.11

ConcurrentHashMap

1. ConcurrentMap과 ConcurrentHashMap**ConcurrentMap**은 자바의 인터페이스로, 여러 스레드가 동시에 접근하는 상황에서 안전하게 데이터를 저장하거나 읽을 수 있도록 설계된 맵입니다.**ConcurrentHashMap**은 ConcurrentMap의 구현체로, HashMap과 비슷한 방식으로 데이터를 저장하지만, 스레드 안전성을 제공하기 때문에 동시성 제어가 가능합니다.즉, 여러 스레드가 동시에 리뷰 데이터를 추가하거나 읽으려고 할 때, 충돌 없이 안전하게 처리할 수 있습니다.일반적인 HashMap은 스레드 간의 동시 작업에서 문제를 일으킬 수 있지만, ConcurrentHashMap은 내부적으로 락을 효율적으로 관리하여 스레드 안전성을 보장합니다.왜 Concurren..

스프링 2024.10.11

Mybatis와 JPA

Mybatis 마이바티스는 SQL 쿼리와 자바 객체 간의 매핑을 위한 XML 또는 어노테이션을 사용하여 데이터베이스에 접근하는 오픈 소스 프레임 워크입니다. 특징 1. 간편한 SQL 매핑: XML 또는 어노테이션을 사용하여 SQL 쿼리와 자바 객체 간의 매핑을 정의할 수 있습니다. 이를 통해 개발자는 직접 JDBC 코드를 작성하지 않고도 데이터베이스에 접근할 수 있습니다. SELECT * FROM users WHERE id=#{id} SELECT * FROM users INSERT INTO users VALUES (#{id},#{pwd},#{name},#{email},#{address},#{phone},#{gender},null,null) UPDATE users pwd=#{pwd}, name=#{name..

스프링 2024.03.12

스프링컨테이너와 빈

1. 스프링 컨테이너 (Spring Container): 스프링 컨테이너는 스프링에서 자바 객체들을 관리하는 공간을 말합니다. 자바 객체를 스프링에선 빈(Bean)이라고 하는데, 스프링 컨테이너에서는 이 빈의 생성부터 소멸까지를 개발자 대신 관리해주는 곳이라고 할 수 있습니다. 컨테이너는 크게 두 종류로 나눌 수 있습니다. 하나는 BeanFactory이고, 다른 하나는 ApplicationContext입니다. ApplicationContext컨테이너가 BeanFactory의 기능을 포괄하면서 추가적인 기능을 제공하기 때문에 대부분의 경우에는 ApplicationContext를 사용합니다. 스프링 컨테이너에 객체, 빈을 등록하는 이유는 스프링이 각 객체간 의존관계를 관리하도록 하는데에 큰 목적이 있습니다...

스프링 2024.03.03

IoC & DI

IoC IoC는 Inversion of Control, 즉 제어의 역전이다. 기존의 프로그래밍 방식에서는 개발자가 프로그램의 제어 흐름을 직접 제어한다. 예를 들어, 객체를 생성하고 의존성을 해결하는 등의 작업은 개발자가 직접 수행한다. IOC에서는 제어 흐름의 일부가 라이브러리나 프레임워크에 의해 제어된다. 즉, 개발자는 제어의 흐름을 역전시킨다. IOC는 객체의 생성, 생명주기 관리, 의존성 해결 등을 담당한다. 제어의 역전은 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것을 말한다. 이전과는 다르게 클래스 B 객체를 직접 생성하는 것이 아니므로, 어딘가에서 받아와서 사용한다. 이처럼 제어의 역전을 적용하면 객체를 외부에서 관리하게 되고, 실제로 사용할 ..

스프링 2024.02.25