728x90 Programming30 [Java] Hashtable vs Map Hashtable과 Map은 모두 키와 값의 쌍으로 데이터를 저장하는 자료 구조입니다. 하지만 두 자료 구조는 몇 가지 차이점이 있습니다. Hashtable과 Map의 가장 큰 차이점은 동기화(synchronization) 여부입니다. Hashtable은 스레드 안전(thread-safe)한 자료 구조로, 동시에 여러 스레드에서 사용해도 안전합니다. 따라서, 멀티스레드 환경에서 안전하게 데이터를 처리해야 하는 경우에는 Hashtable을 사용하는 것이 좋습니다. 반면에 Map은 스레드 안전하지 않습니다. 멀티스레드 환경에서 안전하게 데이터를 처리하기 위해서는 ConcurrentHashMap 등의 스레드 안전한 자료 구조를 사용해야 합니다. 또한, Hashtable은 초기 용량(capacity)과 로드 팩.. 2023. 2. 26. [Java] Hashtable Java의 Hashtable은 키(key)와 값(value)의 쌍으로 데이터를 저장하는 자료 구조입니다. Hashtable은 해시 테이블(hash table)을 사용하여 구현되어 있으며, 키를 해시 함수를 이용하여 해시코드로 변환한 다음, 해당 해시코드에 해당하는 버킷(bucket)에 값을 저장합니다. 이를 통해 빠른 검색 및 삽입이 가능합니다. Hashtable은 다음과 같은 특징을 가지고 있습니다. 키와 값은 모두 Object 타입으로 저장됩니다. Hashtable의 초기 용량(capacity)은 11이며, 런타임에 자동으로 늘어납니다. Hashtable은 스레드 안전(thread-safe)하게 동작합니다. 따라서, 동시에 여러 스레드에서 사용해도 문제가 발생하지 않습니다. Hashtable은 순서를.. 2023. 2. 26. [Java] 다형성 다형성(polymorphism)은 객체 지향 프로그래밍(OOP)에서 중요한 개념 중 하나입니다. 다형성이란 하나의 코드가 여러 가지 방식으로 동작할 수 있는 것을 의미합니다. 자바에서 다형성은 크게 두 가지 방법으로 구현됩니다. 첫째는 상속(inheritance)을 이용한 다형성이고, 둘째는 인터페이스(interface)를 이용한 다형성입니다. 상속을 이용한 다형성은 부모 클래스에 정의된 메서드를 자식 클래스에서 오버라이딩(overriding)하여 다양한 구현을 제공하는 것을 말합니다. 자식 클래스는 부모 클래스의 타입을 상속받기 때문에 부모 클래스 타입으로 자식 클래스의 객체를 참조할 수 있습니다. public class Animal { public void makeSound() { System.out.. 2023. 2. 24. DisplatcherServlet 동작 순서 Spring MVC에서 요청을 받아들이는 핵심 컴포넌트는 DispatcherServlet입니다. DispatcherServlet은클라이언트의 요청을 처리하기 위해 요청 URL을 적절한 컨트롤러로 매핑하고, 해당 컨트롤러의 실행 결과를 적절한 뷰로 변환하여 클라이언트에 반환하는 역할을 합니다. DispatcherServlet은 클라이언트의 요청을 받아서 다음과 같은 과정을 거쳐 처리하고 응답합니다. 클라이언트의 요청을 받아서 HttpServletRequest 객체를 생성합니다. HandlerMapping을 통해 클라이언트의 요청에 해당하는 컨트롤러를 찾습니다. 찾아진 컨트롤러의 메서드를 실행합니다. 이때, @RequestParam, @PathVariable 등을 통해 클라이언트가 전달한 파라미터를 가져옵니.. 2023. 2. 24. [Spring] 빈과 컨테이너 Spring에서 빈(Bean)은 Spring IoC 컨테이너가 관리하는 객체를 의미합니다. 즉, Spring에서 개발자가 작성한 객체를 Bean으로 등록하면 Spring 컨테이너에서 이 객체를 생성하고, 보관 및 제거 등을 수행합니다. 이때 Bean으로 등록되는 객체는 Spring이 제어할 수 있는 범위 내에 있어야 하며, 주로 Spring이 제공하는 다양한 기능을 사용하기 위해 Bean으로 등록됩니다. Spring 컨테이너는 Bean을 생성하고 보관하며, 필요한 객체에 대해 의존성 주입을 수행합니다. 이렇게 컨테이너가 생성된 Bean을 필요로 하는 객체에게 주입하는 것을 DI(Dependency Injection)라고 합니다. DI를 통해 객체 간의 의존성을 최소화하고, 객체 간의 결합도를 낮춤으로써 .. 2023. 2. 24. [Spring] AOP는 프록시 객체를 이용하여 구현하는 이유는? 프록시 객체란? 프록시 객체는 원본 객체를 대신해서 호출될 객체로, 원본 객체를 감싸서 클라이언트의 요청을 처리하는 중간 단계에 위치합니다. 프록시 객체는 원본 객체와 같은 인터페이스를 구현하고 있어서, 클라이언트는 프록시 객체를 호출하는 것으로 인해 원본 객체의 메소드를 호출하는 것과 같은 효과를 얻을 수 있습니다. 프록시 객체를 사용하는 이유는, 프록시 객체를 통해 원본 객체에 대한 접근을 제어하거나, 부가적인 기능을 제공하기 위해서입니다. 예를 들어, 보안을 위해 원본 객체의 메소드에 접근할 때 권한 검사를 수행하거나, 성능을 개선하기 위해 캐싱을 사용하는 등의 기능을 프록시 객체에서 추가할 수 있습니다. 이렇게 함으로써, 원본 객체의 코드를 변경하지 않고도 클라이언트의 요구사항에 맞추어 기능을 추.. 2023. 2. 24. 이전 1 2 3 4 5 다음 728x90