일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- intellij
- table full scan
- heapq
- clean code
- index fast full scan
- 리트코드215
- SQL튜닝의시작
- db
- B*Tree
- B*Tree인덱스구조
- 클린코드
- 알고리즘
- SQLP
- 리눅스
- 클린 코드
- 친절한SQL튜닝
- leetcode215
- Oracle
- 조인
- 오라클튜닝
- SQLD
- 오라클
- 데이터모델링
- database
- 로버트C마틴
- 결합인덱스구조
- join
- B*Tree인덱스
- RAC
- 파이썬
- Today
- Total
목록분류 전체보기 (45)
개발노트
문제 정렬되지 않은 배열에서 K번째 큰 요소를 추출하라. 풀이 1. heapq 모듈 - heappush, heappop 함수 이용 class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: heap = list() for n in nums: ## - 부호 붙여서 의도적으로 max heap 으로 구성 heapq.heappush(heap,-n) for i in range(k-1): heapq.heappop(heap) ## 의도적으로 음수 만들어준것을 다시 원래 값으로 복원 return -heapq.heappop(heap) 풀이 2. heapq 모듈 - heapify 함수 이용 class Solution: def findKthLarges..
우선순위 큐란? 우선순위 큐는 먼저 들어온 데이터가 먼저 처리되는 일반적인 큐와 달리, 우선순위가 높은 데이터부터 처리되는 자료구조이다. 배열, 연결리스트, 힙(Heap)으로 모두 구현할 수 있지만 일반적으로는 시간복잡도가 적은 힙(Heap)을 사용한다. 힙(Heap) 힙(heap)은 힙의 특성(최소 힙에서는 부모가 항상 자식보다 작거나 같다)을 만족하는 거의 완전한 트리인 특수한 트리 기반의 자료구조이다. 최솟값, 최댓값을 찾아내는 연산을 빠르게 할 때 사용한다. 힙은 최소 힙(Min Heap)과 최대 힙(Max Heap)으로 구분할 수 있다. 힙은 정렬된 구조가 아니다. 부모-자식 간의 관계만 정의할 뿐, 좌우에 대한 관계는 정의하지 않는다. - 최소 힙: 루트노드가 가장 작은 값을 가지며, 항상 부..
테이블에 저장된 데이터를 읽는 방식은 2가지다.- 테이블 전체를 스캔해서 읽는 방식 : Table Full Scan - 인덱스를 이용해서 읽는 방식 : Index Range Scan Table Full Scan 이란시퀀셜 액세스와 Multiblock I/O 방식으로 디스크 블록을 읽는다. 한 블록에 속한 모든 레코드를 한 번에 읽어 들이고, 캐시에서 못 찾으면 '한 번의 수면(I/O Call)을 통해 인접한 수십~수백 개의 블록을 한꺼번에 I/O하는 메커니즘이다. 이 방식을 사용하는 SQL 은 스토리지 스캔 성능이 좋아지는 만큼 성능도 좋아진다. 그러나 시퀀셜 액세스와 multiblock i/o 가 아무리 좋아도 수십~수백 건의 "소량" 데이터를 찾을 때 수백만~수천만 건 데이터를 스캔하는 것은 비효율적..
테이블에서 데이터를 찾는 방식 2가지1. 테이블 전체를 스캔 2. 인덱스를 이용 인덱스는 큰 테이블에서 소량 데이터를 검색할 때 사용한다. 그래서 온라인 트랜잭션 처리(Online Transaction Process, OLTP) 시스템에서는 소량 데이터를 주로 검색하므로 인덱스 튜닝이 무엇보다 중요하다. 인덱스란대용량 테이블에서 필요한 소량의 데이터만 빠르게 효율적으로 액세스하기 위해 사용하는 오브젝트다. DBMS 는 일반적으로 B*Tree(Balanced Tree) 인덱스를 사용한다. B*Tree 구조를 가지는 인덱스 구조 B*Tree 구조는 루트 블록, 브랜치 블록, 리프 블록으로 구성되어 있다. 루트와 브랜치 블록에 있는 각 레코드는 하위 블록에 대한 주소값을 가지고 있다. 키값은 하위 블록에 저장..
블로그 포스팅시 gif 파일을 자주 사용하는데요 gif 파일을 업로드할 때 파일 제한이 있습니다 gif 파일 용량을 줄이는 것이 필요해요!! i♥img 사이트 접속 iLoveIMG | The fastest free web app for easy image modification. iLoveIMG is the webapp that lets you modify images in seconds for free. Crop, resize, compress, convert, and more in just a few clicks! www.iloveimg.com 사이트 접속 후 Compress IMAGE 선택 사진 업로드 Select images 버튼을 눌러 사진을 선택해주거나 파일을 드래그앤드랍하여 업로드해주세요 이..
[Layered Architecture1] 대부부분의 중/대규모의 어플리케이션은 효율적인 개발 및 유지 보수를 위해 계층화 (Layered)하여 개발하는 것이 일반적이다. 계층화 아키텍처는 MVC로 대표되는 MVC 패턴의 특징은 다음과 같다. ① Controller와 Model과는 독립적으로 View를 수정 할 수 있다. ② Model component는 View와 Controller component로부터 데이터 구조와 같은 내부적인 상 세한 사항을 숨긴다. ③ Model에 interface를 사용하면, 재사용이 용이하다. 고려사항 이와 같이 계층화 아키텍처는 UI의 로직과 비즈니스 로직은 어떻게 구현하고 어디에 위치시킬 것인가, 그리고 어플리케이션에 필요한 데이터 및 어플리케이션의 상태는 어떻게 유지..
목차 8장 경계 외부 코드 사용하기 경계 살피고 익히기 학습 테스트는 공짜 이상이다 아직 존재하지 않는 코드를 사용하기 깨끗한 경계 Intro 시스템에 들어가는 모든 소프트웨어를 "직접" 개발하는 경우는 드물다. 패키지를 사거나, 오픈소스를 이용하거나, 다른 팀이 제공하는 컴포넌트를 사용한다. 어떤 식으로든 이러한 외부 코드를 우리 코드에 깔끔하게 통합해야만 한다. 이 장에서는 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교에 대해 알아보자. 소프트웨어 경계에 대해 이해가 되었는가??? 이 장에서 말하는 경계는 "외부코드" 또는 "외부 라이브러리", "외부 API" 를 의미하는 듯 하다. 외부 코드 사용하기 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의하자..
목차10장 클래스 클래스 체계 캡슐화 클래스는 작아야 한다! 단일 책임 원칙 응집도 Cohesion 응집도를 유지하면 작은 클래스 여럿이 나온다 변경하기 쉬운 클래스 변경으로부터 거리 Intro이전 챕터에서는 코드, 코드 블록, 함수 구현 방법과 함수 간의 관련 맺는 방식을 공부했다. 하지만 좀 더 높은 단계까지 신경 쓰지 않으면 깨끗한 코드를 얻기 어렵다. 그러니 클래스에 대해 자세히 알아두자. 클래스 체계클래스는 아래와 같은 순서로 코드를 작성하자. 1) static 변수 : public → protected → package → private 2) instance 변수 : public → protected → package → private 3) 생성자 4) 메서드 : (public → privat..