마이크로서비스 아키텍쳐와 레디스
·
Back-End/Redis
❐ Redis의 특징1. 실시간 응답 (빠른 성능)데이터베이스는 대부분 디스크에 Block 단위로 보조 기억장치에 데이터를 저장한다.따라서 데이터를 조회할 때 직접 디스크에서 데이터를 Block 단위로 조회해서 속도가 느리다. 하지만 레디스와 같은 인메모리 형태의 데이터베이스에서는 모든 데이터가 컴퓨터의 메모리에서 관리된다.디스크에 접근하는 과정이 필요 없기 때문에 데이터의 처리 성능이 굉장히 빠르다는 장점을 갖는다.  2. 단순성레디스는 키-값 형태로 데이터를 관리할 수 있는 데이터 저장소다. String 뿐만 아니라 hash, hashSet 등더욱 복잡하고 다양한 데이터 구조를 저장할 수 있도록 지원하며, 이런 데이터 타입은 프로그래밍의기본 자료 구조와 밀접한 관련이 있어 추가적인 데이터의 가공 없이..
ReadMe
·
Back-End/Redis
❐ Description회사에서는 Redis를 주로 캐시 용도로만 사용하곤 했다. 이번 기회에 Redis에 대한 기본 개념 정리와실무에 투입됐을 때 능숙하게 Redis를 활용할 수 있는 실력을 만드는 것이 목표다.  개발자를 위한 레디스를 바탕으로 학습하며, 실제 예제는 ChatGPT를 활용하여 만들고, 실습을 진행할 계획이다. [전자책]개발자를 위한 레디스 - 예스24◈ 요약 ◈개발자가 인메모리 데이터베이스인 레디스를 잘 활용할 수 있도록 초점을 맞춘 포괄적인 안내서다. 레디스를 처음 배우는 독자나 NoSQL 데이터베이스의 개념을 쌓고자 하는 개발자를www.yes24.com
Manacher 알고리즘
·
Algorithm/내용 정리
❐ Description[5. Longest Palindromic Substring] 문제를 풀면서 알게 된 Manacher 알고리즘 정리.       ❐ Manacher 알고리즘 이해하기Manacher 알고리즘은 문자열에서 가장 긴 팰린드롬 부분 문자열을 효율적으로 찾는 알고리즘이다.일반적인 방법으로 풀 경우 O(n²)의 시간 복잡도가 걸리지만, Manacher 알고리즘은 이를 O(n)으로 줄여준다.이 알고리즘은 팰린드롬의 대칭성을 이용하여 중복 계산을 줄이는 방식(동적 프로그래밍)으로 동작한다.  코드로 이해해 보았다. 다른 블로그들은 변수명이 엉망 그 자체다...변수명의미radiuses반지름 배열currentCenterIdx탐색 과정에서 수시로 변경되는 중심 인덱스centerIdxOfMaxPalin..
[LeetCode#130] Surrounded Regions
·
Algorithm/문제풀이
❐ Description날짜2024.12.13 (금)레벨Medium링크https://leetcode.com/problems/surrounded-regions/description알고리즘 & 자료구조DFS, Queue시간 복잡도O(n•m)      ❐ Approach 1해당 좌표를 방문한 이력이 없고, Land(O)인 부분 부터 탐색을 시작한다.동서남북 방향으로 DFS를 실행한다.현재 위치를 WALL(X)로 변경한다.Queue에 현재 위치를 담는다.현재 위치를 방문 처리한다. ➔ 순회를 최적화하기 위함.동서남북이 WALL(X)로 둘러 쌓여 있지 않은 경우Queue에 있는 모든 좌표를 Land(O) 표시로 변경한다.public void solve(char[][] board) { int maxRow = ..
우테코 7기 프리코스
·
우테코 7기
❐ What I did1. 4주간 매주 주어지는 과제 성실히 제출 및 블로깅과제 모음 list블로그 포스팅 list 2. 단순 과제 제출을 넘어 호기심 해소를 위한 다양한 시도 패키지 내에서 Front, Back 사이드를 나누어 개발구조 정리 블로그 링크소스 코드 링크 책임 연쇄 패턴을 적용하여 사용자 입력값 검증소스 코드 링크 입력값을 처리하는 클래스를 Bill Pugh 패턴을 사용해서 싱글톤으로 관리 소스코드 링크 사용자 입력값을 애노테이션 기반으로 MockkingMockking 개발 과정 포스팅 소스코드 링크  3. 가독성 높은 코드 작성을 위해 "좋은 코드, 나쁜 코드" 스터디 진행Study Repo : https://github.com/joconaco-study/read-joconaco   4...
[비선형] 균형 이진 탐색 트리
·
CS/Data Structure
❐ Description`이진 탐색 트리`가최악의 경우 선형이 되는 것을 방지하고 스스로 균형을 잡는 [균형 이진 탐색 트리]인AVL과 RBT에 대해서 간단하게 정리해보자.     ❐ AVL (Adelson - Velsky and Landis tree)1. AVL 트리는 무엇일까AVL 트리는 BST의 한 종류로, 모든 노드에서 균형 조건을 유지하도록 설계된 [자기 균형 이진 탐색 트리]다. 2. 특징모든 노드에서 왼쪽 서브트리와 오른쪽 서브트리의 높이 차이(균형 팩터)가 -1, 0, 1 중 하나여야 한다.삽입 또는 삭제 시 트리가 균형을 잃게 되면, 특정 회전(rotate) 연산을 수행한다.따라서 삽입과 삭제 연산 후에도 항상 균형을 유지한다. 탐색, 삽입, 삭제 연산 모두 O(log n) 시간 복잡도를..
MySQL 8.0.12 이후의 Spatial Index
·
Back-End/SQL
❐ Description과거 회사에서 MySQL 5.7을 사용해서 Explain Analyze를 사용할 수 없다.그래서 docker mysql 버전을 8.4.3으로 업그레이드 해줬는데, 여기서 예기치 않은 오류를 만나게됐다.     ❐ 문제쿼리 분석을 Explain Analyze 사용을 위해 도커 MySQL 버전을 5.7 ➡️ 8.4로 변경해주었다.기존에는 문제없던 인덱스 생성에서 다음과 같이, Too many key parts specified; max 1 parts allowed 라는경고가 발생했으며, 결과적으로 인덱스 생성이 정상적으로 이루어지지 않았다.     ❐ 변경사항MySQL 8.0.12 이후에는 Spatial Indexes 관해서 아래와 같은 조건이 추가되었다. 1. SPATIAL 키워드는..
실행계획 유형을 알아보자
·
Back-End/SQL
❐ Description쿼리를 작성할 때 `EXPLAIN` 키워드를 작성하면 쿼리 실행계획을 확인할 수 있다.이를 가지고 실무에서 쿼리 개선할 때 종종 사용하곤 했는데, 리마인드 겸 정리해보려고 한다.     ❐ Type 컬럼1. System테이블에 데이터가 없거나 한 개만 있는 경우   2. Const조회되는 데이터가 단 1건인 경우로, 성능상 매우 유리한 방식이다. Unique Index나 PK를 사용하여 단 1건의데이터에만 접근하면 되므로 속도나 리소스 사용 측면에서 지양해야 할 타입이다.  3. eq_ref조인이 수행될 때 드리브 테이블의 데이터에 접근하며 고유 인덱스 또는 기본 키로 단 1건의 데이터를 조회하는경우 확인할 수 있다. 드라이빙 테이블과의 조인 키가 드리븐 테이블에 유일하므로 조인이..