본문 바로가기
반응형

분류 전체보기346

[Real MySQL 8.0] 4장 - 아키텍처: MySQL 엔진과 스토리지 엔진(InnoDB, MyISAM) 목차 · MySQL 엔진 아키텍처 · InnoDB 스토리지 엔진 아키텍처 · MyISAM 스토리지 엔진 아키텍처 · MySQL 로그 파일 MySQL 엔진 아키텍처 · MySQL은 C, JDBC, ODBC, .NET 등의 표준 드라이버를 제공하여 대부분의 프로그래밍 언어로 접근 가능하다. · MySQL 서버는 역할에 따라 다음과 같이 구분 가능하다. 1. MySQL 엔진: 사람의 머리 역할 2. 스토리지 엔진: 사람의 손발 역할 - 스토리지 엔진은 핸들러 API를 만족하면 누구든 스토리지 엔진을 구현해 MySQL 서버에 추가해서 사용할 수 있다. MySQL 엔진 · 요청된 SQL 문장을 분석하거나 최적화하는 등 DBMS의 두뇌에 해당하는 처리를 수행한다. · 중심 구성 요소 - 커넥션 핸들러, SQL 파서.. 2022. 1. 8.
[iOS] 어플 오류 모니터링하기 - Crashlytics 적용 1. iOS 프로젝트에 Firbase 추가 https://firebase.google.com/docs/ios/setup?authuser=0 2. Podfile에 FirebaseCrashlytics 추가 pod 'Firebase/Crashlytics' 3. pod 설치 pod install 4. iOS 프로젝트의 UIApplicationDelegate(AppDelegate)에 Firebase 모듈 추가 import Firebase 5. 앱의 application:didFinishLaunchingWithOption: 메서드에 FirebaseApp 공유 인스턴스 추가 FirebaseApp.configure() 6. dSYM 파일 자동 업로드 설정 1) Xcode의 TARGETS 목록에서 기본 빌드 대상을 선택.. 2022. 1. 4.
[Real MySQL 8.0] 6장 - 데이터 압축(페이지 압축과 테이블 압축) 목차 · 디스크 데이터 파일 크기의 문제점 · 페이지 압축 · 테이블 압축 디스크 데이터 파일 크기의 문제점 MySQL 서버에서 디스크에 저장된 데이터 파일의 크기는 1. 쿼리의 처리 성능 2. 백업 및 복구 시간 3. 저장 비용과 밀접하게 연결된다. - 디스크의 데이터 파일이 크면, 쿼리를 처리하기 위해 더 많은 데이터 페이지를 InnoDB 버퍼 풀로 읽어야 할 수 있고, 새로운 페이지가 버퍼 풀로 적재되므로 더티 페이지가 더 자주 디스크로 기록된다. - 디스크의 데이터 파일이 클수록 백업 및 복구 시간이 오래 걸린다. - 디스크의 데이터 파일이 클수록 저장 공간이 많이 필요하므로 비용 문제가 발생한다. MySQL은 이러한 문제를 해결하기 위해 테이블 압축, 페이지 압축 두 가지의 데이터 압축 방법을 .. 2022. 1. 4.
[알고리즘&코딩테스트] 완전 탐색(Brute Force) 완전 탐색(Brute Force) · 문제를 해결하기 위해 확인하는 모든 경우를 탐색하는 방법이다 - 정답은 무조건 구하는 치트키 · 백 트래킹을 사용해야 하는 상황을 해결한다. · 모든 코딩테스트 문제에게 기본적으로 접근해 봐야 한다. · 장점: 부분점수를 얻기 좋다. · 단점: 전부 탐색하기 때문에 일반적으로 시간 복잡도가 높다. 코딩테스트에 나오는 완전 탐색 문제 종류 · 4가지: (중복없이 or 중복을 허용해서) N개 중 M개를 (고르기 or 순서 있게 나열하기) · 완전 탐색은 함수 정의가 50% // Recurrence Function (재귀 함수) // 만약 M 개를 전부 고름 => 조건에 맞는 탐색을 한 가지 성공한 것! // 아직 M 개를 고르지 않음 => k 번째부터 M번째 원소를 조건.. 2022. 1. 4.
[Data Structure] 자료구조란? 기본 자료 구조 - 배열(Array), 링크드리스트(LinkedList), 스택(Stack), 큐(Queue), 해시 테이블(Hash Table), 그래프(Graph), 트리(Tree) 자료구조란? - 대량의 데이터를 효율적으로 관리할 수 있는 데이터 구조 - 프로그래밍에서 데이터 특정에따라 어떤 데이터 구조를 사용하느냐에 따라 코드 효율이 달라진다. 배열(Array) - 같은 종류의 데이터를 순차적으로 연결된 공간에 나열하는 자료 구조 - 각 데이터를 인덱스에 대응하도록 구성한다. 장점 첫 데이터의 위치에서 상대적인 위치(인덱스 번호)로 데이터를 접근하므로, 빠른 접근이 가능하다. - 인덱스 위치를 안다면, 상수 시간으로 접근 가능하다 O(1) 단점 데이터의 길이가 정해져있으므로, 크기 이상의 데이터를 저장할 때 새로운 배열을 만들어야한다. 링크드리스트( LinkedList) - 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 배열, 순차적으로 연결된 공간에 데이.. 2021. 12. 29.
JUnit의 @BeforeAll(@Before)대신 생성자를 사용해도 괜찮지 않을까? JUnit은 애너테이션을 통해서 메서드의 역할을 정할 수 있다. 이때, 애너테이션이 붙은 메서드는 실행 순서가 정해진다. JUnit5를 기준으로 @BeforeAll -> @BeforeEach -> @Test -> @AfterEach -> @AfterAll 순서로 메서드가 실행된다. 이때, 문득 떠오른 생각이 있었다. @BeforeAll이 모든 테스트 메서드 실행 전 수행되고 주어진 테스트에 대해 한 번만 실행된다면, 그냥 생성자를 사용하면 되는게 아닐까? class 블라블라Test { @BeforeAll static void setUp() { } } vs class 블라블라Test { 블라블라Test() { } } 어떤 것을 사용하는게 맞을까? 결론적으로 생성자 대신 @BeforeAll을 사용하는 것이 .. 2021. 12. 23.
반응형