본문 바로가기

Computer Science

(252)
3. 이터레이터 패턴 이터레이터 패턴(iterator pattern) 컬렉션 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 수 있는 방법을 제공한다. 컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식이 통일되어 있으면 어떤 종류의 집합체에 대해서도 사용할 수 있는 다형적인 코드를 만들수 있다. 이터레이터 패턴을 사용하면 모든 항목에 일일이 접근하는 작업을 컬렉션 객체가 아닌 반복자 객체에서 맡게 된다. 이렇게 하면 집합체의 인터페이스 및 구현이 간단해질 뿐 아니라, 집합체에서는 반복작업에서 손을 떼고 원래 자신이 할 일(객체 컬렉션 관리)에만 전념할 수 있다. public class FoodMenu { String name; String description; int price; publi..
2. IOC, DI Spring Boot탐구(2)
Spring Security 구조 Spring Security 란 spring application 의 사용자 인증(Authentication), 권한 부여(Authorize) 및 기타 보안 기능을 제공하는 Java / Java EE 프레임 워크이다. 보안 분야는 아무래도 개발에 있어서 시간이 많이 소요되는 것들 중 하나이다. Spring Security 는 미리 짜여진 내부 로직을 통해 인증, 권한 확인에 필요한 옵션을 제공한다. Authentication & Authorization 특정 자원에 대한 접근을 제어하기위해 객체는 "권한" 을 가진다. 특정 권한을 얻기 위해 사용자는 인증정보(Authentication) 을 제출해야하고 관리자는 해당 정보를 참고해서 권한을 부여(Authorization) 한다. 보편적으로 username..
@Qualifier, @Primary @Autowired, @Resource, @Inject 어노테이션으로만 자동적으로 객체를 주입할 경우 컨테이너에서 주입할 대상이 여러개여서 의존성을 주입하지 못하는 경우가 발생할 수 있다. public class Player { @Autowired private Weapon weapon; Player(){ } public Player(Weapon weapon) { super(); this.weapon = weapon; } public void setWeapon(Weapon weapon) { this.weapon = weapon; } public Weapon getWeapon() { return weapon; } public void usePlayerWeapon() { weapon.useWeapon(); ..
Hash Map과 Hash Collision 문제 Hash Map & Hash Table 두 구조 모두 Key, Value로 데이터를 저장하는 자료구조입니다. Hash Map : JDK 2.0부터 생긴 API로 꾸준히 업데이트 되고 있습니다. Hash Table : JDK 1.0부터 있던 API로 현재는 사용되고 있지 않습니다. 두 자료구조의 가장 큰 차이로는 동기화의 차이가 있습니다. HashMap의 경우 동기화를 지원하지 않기 때문에 멀티 쓰레드 환경에서 문제가 될수 있습니다. 반면에 HashTable의 경우 동기화를 지원하여 멀티 쓰레드 환경에서 안전합니다. 물론, 현재 동기화를 지원하는 ConcurrentHashMap이라는 API를 지원하기 때문에 동기화 때문에 HashTable을 사용할 필요는 없습니다. Hash Map 작동방식 Hash Map..
1. IOC, DI Spring Boot탐구(1) 최근 Spring Boot에 대해서, 좀더 깊게 알아보고자 Spring boot 내부 코드를 Clone Coding하면서 알아가는 과정을 거쳤다. 그 내용을 정리해보고자 한다. https://github.com/diqksrk/spring-boot-ioc-di GitHub - diqksrk/spring-boot-ioc-di Contribute to diqksrk/spring-boot-ioc-di development by creating an account on GitHub. github.com Annotation Application Context 기존의 XML방식에서 벗어나 @Annotation을 활용하여 새로운 장을 열게 해준 클래스이다. public class AnnotationConfigAppli..
GC(Garbage Collector) Java로 실행되는 Application들은 모두 JVM위에서 실행된다. 따라서 JVM이 작동하는데 있어서 메모리 구조와 GC는 애플리케이션의 응답 시간과 성능에 밀접한 관계를 맺고 있다. GC란? GC(Garbage Collection)는 자바 애플리케이션에서 사용하지 않는 메모리를 자동으로 수거하는 기능을 말한다. C/C++ 같은 언어는 메모리를 할당하고 직접 해제해야했지만, 자바에서는 GC를 이용하여 개발자들이 메모리 관리를 비교적 신경쓰지 않아도 된다. JVM의 메모리 영역 GC의 동작 방법을 이해하려면, 먼저 자바의 메모리 구조를 이해할 필요가 있다. 일반적으로 애플리케이션에서 사용되는 객체는 오래 유지되는 객체보다 잠시 사용되는 경우가 많다. 자바에서는 크게 두 영역으로 메모리를 구분한다. Y..
Lock의 종류 오라클의 Row-level의 Lock에는 Shared Lock과 Exclusive Lock으로 2가지 유형이 존재한다. 1. SharedLock ( 공유 잠금, S Lock ) Shared Lock은 특정 Row를 읽을(read) 때 사용되어지는 Lock이다. Shared Lock끼리는 동시에 접근이 가능하다. 즉, 하나의 Row를 여러 트랜잭션이 동시에 읽을 수 있다는 것이다. 하지만 Shared Lock이 설정된 Row에 Exclusive Lock을 사용할 수는 없다. 즉, 특정 Row를 누가 읽고 있음으로써 Shared Lock이 설정되어 있는데, 다른 사용자가 그 데이터에 쓰기 작업을 하기 위해 Exclusive Lock을 걸 수 없다는 뜻이다. 일반적인 SELECT 쿼리는 Lock을 사용하지 않..