우주먼지
Memo - Library
Framework/Spring 2023. 2. 28. 20:29

💡 Library # 📌 [ Dependencies ] *** > ⭐ [H2] runtimeOnly 'com.h2database:h2' > ⭐ [Lombok] compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' > ⭐ [MapStruct] __Processor__가 롬복보다 뒤에 있어야 함 implementation 'org.mapstruct:mapstruct:1.5.3.Final' annotationProcessor 'org.mapstr..

Memo - Annotations
Framework/Spring 2023. 2. 28. 20:27

💡 Annotations Spring Basic Annotations @Target(ElementType.TYPE) , @Retention(RetentionPolicy.RUNTIME), @Documented = Custom Annotation 생성 시 사용 @BeforeEach 테스트 메소드 실행 전 실행됨 @AfterEach 테스트 메소드 이후에 실행됨 @DisplayName("") 테스트 클래스or메소드의 이름 정의 가능 @Disabled("") 테스트 클래스or메소드를 비활성화 @Autowired 필요한 의존 객체의 '타입'에 해당하는 빈을 찾아 의존성 주입, getBean(.class)와 동일하다고 보면 됨 @Component 스프링 빈 등록, 이름을 지정 하려면 ("")로 지정하되, 첫글자는 무..

Memo - Spring
Framework/Spring 2023. 2. 28. 20:26

💡 Spring Memo 개념 ApplicationContext 스프링 컨테이너, AnnotationConfigApplicationContext의 상위 인터페이스 AnnotationConfigApplicationContext AnnotatedBeanDefinitionReader를 사용해서 AppConfig.class를 읽고 BeanDefinition을 생성함, getBean() 등 더 많은 기능을 쓰려면 얘를 생성해야함 보통 ApplicationContext ac = new AnnotationConfigApplicationContext(); 로 선언해서 사용함 Spring Bean key,value 형태로 값 저장 Bean Definition 스프링이 다양한 형태의 설정정보를 BeanDefinition으..

article thumbnail
Kubernetes DaemonSet
Ops/Kubernetes 2023. 2. 28. 10:31

💡 DaemonSet 클러스터 전체에서 공통적으로 사용되는 pod를 띄울때 사용하는 컨트롤러 ex: 로그수집기나 노드를 모니터링하는 pod 등 클러스터 전체에 항상 실행시켜 둬야 하는 pod를 실행할때 사용 taint와 tolleration을 사용하여 특정 노드들에만 실행가능 (tolleration은 taint보다 우선순위가 더 높다) Yaml 생성 # DaemonSet 생성 apiVersion: apps/v1 kind: DaemonSet metadata: name: test-elasticsearch namespace: kube-system labels: k8s-app: test-logging spec: selector: matchLabels: name: test-elasticsearch updateSt..

article thumbnail
Hash Chaining & loadFactor
Data Architect/Data Structure 2023. 2. 26. 16:06

💡 Hash Chaining 가장 안정적이며 보편적으로 사용되는 자료구조 중 하나이다. 파이썬의 딕셔너리도 이것을 기반으로 만들어졌으며 자바에서도 쉽게 해시를 만들 수 있게 API를 제공한다. 펄에서도 이 방법으로 연상 배열과 해시를 만든다. 해시는 사실상 배열 1개로 구성되어 있으며, 요소들이 들어가야 할 위치에 추가되면서 배열은 점점 채워진다. 그래서 배열의 위치마다 새로운 자료구조를 만들면서 수많은 데이터를 수용할 수 있도록 만드는것이다. 즉, Hash 배열의 각 요소에 자료구조인 LinkedList를 사용하며 각 요소는 테이블의 크기보다 클 수 있다. 어떤 자료구조가 가장 적합할까? 정답은 LinkedList 이다. 체인을 만들기 위해 배열의 각 위치마다 LinkedList를 만들어 주는 방법이며..

Resolve Hash Collision
Data Architect/Data Structure 2023. 2. 26. 15:16

💡 선형조사법 (Linear Probing) 채우려는 공간이 이미 차 있다면, 비어있는 칸을 찾을 때까지 다음 칸을 확인하는 방법이다. 비어있는 칸을 찾아 그 곳에 채운 후 위치가 바뀌었다는 사실을 알려야 한다. 예시 객체 x 객체 x의 hashCode 값인 h를 구한다. h를 양수로 변환 -> h & 0x7FFFFFFF; 테이블의 크기와 % 연산 -> h % table.size(); h를 가지고 x를 적절한 위치로 저장, 이 때 위치는 hashCode의 값에 따라 다름 객체 y 위와 동일한 방법으로 h를 구한다. x의 위치와 동일한 값이 나오면 x의 위치에 y를 저장해야 한다. 이런 상황을 충돌이라고 한다. 해결 x의 다음 칸에 y를 저장 y의 위치가 바뀌었다는 사실을 알려야 한다.\ 삭제의 경우 데이..

article thumbnail
Hash 충돌 & 양수 변환 & loadFactor
Data Architect/Data Structure 2023. 2. 26. 14:39

💡 해시 충돌 서로 다른 값의 키가 일치하는 경우를 의미한다 충돌이 일어나지 않게 Folding 하는 방법 함수를 구현할때 충돌을 피하고자 할때 어떻게 분포를 더 넓게 할지 생각하기 아래 사진은 전화번호를 받아서 3분할한 합을 키 배열에 저장하는 도중 Folding이 발생한 사진이다 hashCode에서의 충돌문제를 해결한 문자열 표현 문자는 유니코드로 변환하여 숫자로 나타낼 수 있고, 각 문자를 변환 후 그 숫자들을 합하면 된다 하지만 그렇게 했을 경우 단순히 문자의 위치와 관계없이 같은 문자열이 있다면 해시 충돌이 발생한다 문자의 위치에 따라 상수 g를 곱하는 횟수를 다르게 해서 충돌 문제 해결 116 + g(104 + g(105 + g(115))) // 문자열을 기반으로 정수를 계산해주는 hashCo..

검색 태그