전체 글(43)
-
SOLID
SOLID란? 컴퓨터 프로그래밍 중 객체지향 패러다임에서 객체지향을 설계할때 가장 기본적인 다섯가지 기본 원칙입니다. Single Responsibility Principle( 단일 책임 원칙 ), Open-Closed Principle ( 개방폐쇄의 원칙 ), Liskov Substituation Principle ( 리스코프 치환 원칙 ), Interface Segregation Principle ( 인터페이스 분리의 원칙 ), Dependency Inversion Principle ( 의존 역전의 원칙 ) 의 앞 글자를 따서 SOLID라고 이야기합니다. Single Responsibility Principle, 단일 책임 원칙 단일 책임 원칙은 클래스는 하나의 책임만 가져야 한다는 원칙입니다. 예를..
2023.02.04 -
인덱스
인덱스는 데이터베이스의 테이블에 대한 검색속도를 향상시키는 기능이자 자료구조입니다. 대부분의 DB에서 이 기능을 지원합니다. 보통 책의 맨 끝부분에 있는 찾아보기 페이지와 비슷하다고 볼 수 있습니다. 만약 우리가 특정 내용을 찾아보려고 했을때 찾아보기 페이지가 없었다면 우리는 책의 모든 내용을 쭉 훑어봐야 합니다. 이를 DB와 비교해 본다면 인덱스는 찾아보기 페이지이며 모든 내용을 쭉 훑어 보는 행위가 Full Table Scan입니다. ※ Full Table Scan Full Table Scan은 말 그대로 테이블의 데이터들을 모두 스캔한다는 의미입니다. Full Table Scan은 순차적으로 접근 하기 때문에 접근 비용이 감소됩니다. Full Table Scan은 적용 가능한 인덱스가 없거나 처리 ..
2023.01.22 -
정규화
DB를 다루는데 있어 정규화는 필수입니다. 정규화는 릴레이션간의 잘못된 관계로 인해 데이터 베이스 이상현상을 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러개로 분리하는 과정입니다. 그렇게 어려운 개념도 아니고 1,2,3, BCNF 정규화 부터 여러 정규화가 있지만. 넘어가면 넘어갈 수록 어플리케이션 단에서의 비용이 더 많은 경우가 있어 보통 3 정규화 혹은 BCNF 정규화 까지만 진행하는 경우가 많습니다. 여기선 제 3 정규화 까지만 설명하려고 합니다. 제 1 정규화 제 1 정규화는 릴레이션의 모든 도메인이 더이상 분해될 수 없는 원자값으로 구성되어 있어야 하는 조건입니다. 예를 들어 아래와 같은 테이블이 있다고 가정해봅시다. 학번 이름 과목 201911111 고지훈 데이터베이스, 자..
2023.01.20 -
Redis
Redis? Redis란 key-value 형태의 NoSQL InMemory DB 입니다. 대표적으로 분산환경에서의 세션 관리, 캐싱에 자주 활용됩니다. 왜 Redis를 사용하는가? 같은 InMemory DB들중 대표 적인 것 중에 하나닥 Memcached가 있습니다. 둘의 가장 큰 차이점은 Redis는 싱글 스레드, Memcahaced는 멀티 스레드 환경이라는 것이고, Redis는 List, Set, SortedSet 등 여러 Collection들을 지원한다는 것입니다. 또한 Memcached는 Redis에서 지원하는 스냅샷, Replication, Trasaction 등 지원하지 않는 기능이 꽤 많으며 Memcached는 주로 Scale up을 활용해서 확장성을 얻을 수 있는 반면, Redis는 Sc..
2023.01.18 -
빗물 트래핑
https://leetcode.com/problems/trapping-rain-water/ Trapping Rain Water - LeetCode Trapping Rain Water - Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining. Example 1: [https://assets.leetcode.com/uploads/2018/10/22/rainwatertrap.png] Input: he leetcode.com 주어진 height를 가지고 해당 블럭들 안에 물이 고인다면 최대 얼만큼의 물이 고일 수..
2023.01.17 -
세 수의 합
배열을 입력받아 합으로 0을 만들 수 있는 3개의 엘리먼트를 출력하라 https://leetcode.com/problems/3sum/ 3Sum - LeetCode 3Sum - Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0. Notice that the solution set must not contain duplicate triplets. Example 1: Input: nums leetcode.com 예제 1. 입력 nums = [-1, 0, 1, 2, -1, -4] 출력 ..
2023.01.17