전체 글
HashTable이란?
Hash table 정의 hash table은 배열과 해시함수를 사용하여 map을 구현한 자료구조입니다. 여기서 해시 함수란 무엇일까요? 해시 함수란 임의의 크기를 가지는 type의 데이터를 고정된 크기를 가지는 type의 데이터로변환되는 함수를 뜻합니다 다음과 같은 경우 'ABCED' 의 임의의 크기를 지닌 데이터를 해시 함수에 넣을 경우 정수 값인 350가 반환되는 것을알 수 있습니다. 이 떄 '350' 값을 hash라고 하고 이것이 HashTable에서의 함수가 됩니다. Hash table의 동작 방식 "ABCDE" 를 key로 "가나"를 value로 지니는 데이터를 HashTable에 넣는다고 가정해보겠습니다. 우선 key값을 해시 함수에 집어 넣어 특정 해시 값을 구합니다. 위와 같은 경우 35..
B-트리 (B-tree)란?
B-Tree B-트리란 트리 자료구조 중에 하나입니다. 여기서 B는 Balanced(균형)을 뜻합니다. 이 말의 즉슨, 트리의 형태가 균형을 이룬다는 것을 뜻합니다. 트리 자료구조의 효율성에 있어서 균형은 매우 중요합니다. 다음 그림을 보면 왼쪽은 트리가 균형적이지 않아 오른쪽 트리보다 탐색에 필요한 횟수가 더 많이 소요되는 것을 알 수 있습니다. B 트리의 경우 삽입과 삭제시 필요하면 스스로 균형을 유지합니다. 또한 하나의 노드에 여러 자료가 배치됩니다.만약 한 노드에 M개의 자료가 배치되면 이를 M차 B-Tree라고 부르게 됩니다. 여기서 중요한 점은 모든 노드가M개로 꽉차 있어야 되는 것을 의미하는건 아닙니다. 한노드에 포함된 최대 자료 갯수를 기준으로 산정합니다. 위와 같은 경우 한 노드에 D, ..
스프링 시큐리티 아키텍처에 대하여
스프링 시큐리티란? Spring Security is a framework that provides authentication, authorization, and protection against common attacks. With first class support for securing both imperative and reactive applications, it is the de-facto standard for securing Spring-based applications. 출처 - https://docs.spring.io/spring-security/reference/index.html 스프링 시큐리티는 인증과 인가, 그리고 일반적인 공격에 대한 보호를 제공하는 프레임워크입니다. 명령형 및..
@Transaction에 대하여
스프링으로 프로젝트를 하면서 Service 관련 클래스를 작성할 때 빠짐없이 등장하는 어노테이션이 @Transaction입니다. 해당 어노테이션의 역할은 말 그대로 서비스 레이어에서 db에 접근할 때 트랙잭션 처리를 해주는 것입니다. 그렇다면 Transaction 어노테이션이 등장하게 된 배경과 어떠한 코드를 내부 로직으로 지니고 있을까요? Transaction Annotation 등장 배경 가장 흔하게 많이 사용하는 어플리케이션 구조는 다음과 같습니다. Controller (프레젠테이션 계층) - Service(서비스 계층) - Repository(데이터 접근 계층) - DB서버 위 계층 중에 가장 중요한 곳은 핵심 비즈니스 로직이 담겨있는 서비스 계층입니다. 시간이 지나면 컨트롤러와 관련된 UI 부분..