본문 바로가기

전체 글99

인텔리제이 API 소스코드 보기 클릭해서 커서를 올려두고 F4를 누르면 볼 수 있다. 2021. 11. 26.
해시 충돌(Hash Collision)과 최적화 방법 해시 충돌 해시함수는 해시테이블의 키 값으로 레코드가 저장되어 있는 주소(또는 색인)을 산출하는 함수이다. 다른 내용의 데이터가 같은 키를 갖는 상황을 해시 충돌이라고 하는데, 같은 키 값이 생긴다는 것은 특정 키의 버켓에 데이터가 집중된다는 뜻이다. 따라서 빈번한 해시 충돌은 해시테이블의 성능을 저하시킨다. 해결 방법 1) 체이닝 버켓 내에 연결리스트를 할당하여, 버켓에 데이터를 삽입하다가 해시 충돌이 발생하면 연결리스트로 데이터를 연결하는 방식이다. 복잡한 계산식을 사용할 필요가 없고, 삭제 또는 삽입이 용이하다. 해결 방법 2) 개방 주소법 체이닝의 경우 버켓이 꽉 차더라도 연결리스트로 계속 늘려갈 수 있기 때문에 데이터의 주소값은 바뀌지 않는다. 그러나 개방 주소법은 해시 충돌이 일어나면 다른 버.. 2021. 11. 22.
빅오(Big-O) 표기법 What is Big-O? 알고리즘의 성능을 수학적으로 표현해주는 표기법 시간과 공간 복잡도를 표현할 수 있음 데이터나 사용자의 증가에 따른 알고리즘의 성능을 측정하는 것이 목표 상수는 모두 1이 됨 O(1) 입력 데이터의 크기에 상관없이 언제나 일정한 시간이 걸리는 알고리즘 O(n) 입력 데이터의 크기에 비례해서 처리 시간이 늘어나는 알고리즘 O(n^2) 입력 데이터의 크기만큼 각각의 요소에서 돌 때(ex. 이중 포문) O(nm) m을 n만큼 돌릴 때(만약 m과 n이 같다면 O(n^2)) O(n^3) 입력 데이터의 크기만큼 세 번 돌 때(ex. 삼중 포문) O(2^n) 재귀 함수로 구현 한 피보나치수열 O(logn) 한 번 처리할 때마다 검색해야 하는 데이터의 양이 절반으로 줄어드는 알고리즘(ex. 이.. 2021. 11. 21.
모놀리식 vs 마이크로서비스 아키텍처 마이크로서비스 아키텍처(MSA) 개념 및 이해 MSA란 시스템을 여러개의 독립된 서비스들로 나누어서, 해당 서비스를 조합하여 기능을 제공하는 아키텍처 디자인 패턴 특징 각 서비스간 Network(보통 HTTP)를 통해 통신 각 서비스를 독립된 단위 bangsj1224.tistory.com MA(Monolithic Architecture) 어플리케이션이 하나의 아키텍처로 이루어진 것이며, 대부분의 기업용 애플리케이션은 모놀리식 아키텍처를 따라 개발되었다. 이 구조는 개발과 관리가 용이하다는 장점이 있으나, 시스템 규모가 커질 경우 복잡도도 증가해 코드의 이해와 분석이 어려워지고, 작은 수정사항에도 전체를 빌드 및 배포해야 하는 등 개선과 확장이 어렵다는 단점이 있다. MSA(MicroService Arch.. 2021. 11. 21.