본문 바로가기

분류 전체보기204

[MySQL] Query 성능 높이는 팁 Query 튜닝 Index 전략을 사용하기 인덱스는 데이터베이스 성능 최적화에 필수적인 요소다. PK나 JOIN, WHERE 자주 사용되는 컬럼 같은 컬럼에 반드시 인덱스를 생성하자. 하지만 과도한 인덱스는 부정적인 영향(쓰기 성능 느려짐, 메모리 낭비)을 주기 때문에 전략적으로 필수적인 인덱스를 만들어 사용해 관리하자. Predicate 절에서 함수 사용을 피하라 SELECT * FROM TABLE1 WHERE UPPER(COL1)='ABC' UPPER() 같은 함수를 사용하게 되면 데이터베이스는 인덱스를 사용하지 못하게 된다. 함수 기반 인덱스를 생성하거나, 컬럼 커스텀을 이용해야 한다. Predicate 절에서 와일드카드(%)로 시작하는 조건을 피하라 SELECT * FROM TABLE1 WHERE.. 2023. 9. 8.
[운영체제] 파일 시스템은 어떻게 구현되어 있는가? File System Implementation 실제 사용 중인 운영체제에선 파일 시스템이 어떻게 구현되어 있을까? 살펴 보도록 하자. Continuous allocation 한 파일을 디스크의 연속된 block에 저장 👍🏻 효율적인 파일 접근 👎🏻 새로운 파일을 위한 공간 확보가 어려움, 외부 단편화 문제, 파일 공간 크기 결정이 어려움(파일이 커져야 할 경우는?) Dis-continuous allocation Linked allocation 파일이 저장된 블록들을 링크드 리스트로 연결 디렉토리는 각 파일에 대한 첫 번째 블록을 가리키는 포인터를 가짐 👍🏻 단순, 외부 단편화 없음 👎🏻 직접 접근에 비효율적, 포인터 공간 필요, 신뢰성(사용자가 포인터를 건들면?) 구현체 ⇒ FAT(File Alloca.. 2023. 9. 8.
[Java] Lambda, Functional Interface 그리고 Stream API 이브, 프시케 그리고 푸른 수염 어쩌고 따라하고 싶었어요ㅎㅎ.. Lambda 익명 함수로써 이름 없이 정의되며, 코드 블록을 1급 시민으로 다룰 수 있는 프로그래밍 언어의 기능 🧐 1급 시민 First-Class Citizen | 1급 객체 변수에 할당할 수 있어야 한다. 함수의 매개변수로 전달할 수 있어야 한다. 함수의 리턴값으로 사용할 수 있어야 한다. 함수나 메소드가 1급 시민으로 간주되기 위한 조건 함수형 프로그래밍 스타일을 지원 코드를 간결하게 관리 주로 컬렉션 처리, 스트림 연산, 콜백 함수 등에 사용 → 자바에선 함수를 일급시민으로 쓸 수 없었음, 람다 개념 등장 → 일급시민으로 사용할 수 있게됨 람다 표현식 작성방법 어떤 언어에서든 익명함수를 다 써보셨을 거라고 예상됩니다. 자바에서도 마찬.. 2023. 9. 8.
[운영체제] 파일 시스템 보호 File Protection 파일에 대한 부적절한 접근 방지 → 다중 사용자 시스템에서 더욱 필요 접근 제어가 필요한 연산들 : Read, Write, Execute, Append 파일 보호 기법으론 password 기법과 access matrix 기법이 있는데 두 번째 방법에 집중할 것이다. Password 기법 각 파일에 PW 부여 비현실적 : 접근 권한 별 서로 다른 PW 부여해야 함 Access Matrix 기법 범위(domain)와 개체(object) 사이의 접근 권한을 명시 *object : 접근 대상(file, device등) *domain : 접근 권한의 집합, 같은 권한을 가지는 그룹(사용자, 프로세스) Global Table 시스템 전체 file에 대한 권한을 가지는 table ⚠️ 테.. 2023. 9. 7.
[운영체제] 파일 시스템과 디렉토리 구조 File 보조 기억 장치에 연관된 정보들의 집합 보조 기억 장치 할당의 최소 단위 sequence of bytes 프로그램 파일, 데이터 파일 text 파일, binary 파일 파일 속성 : name, identifier, type, location, size, protection, user identification, time 등등 파일 연산 : create, write, reposition, read, delete 등등 수행 ⇒ OS는 파일 연산들에 대한 system call을 제공해야 함 파일 접근 방법 Sequential access : file을 record 단위로 순서대로 접근 (fgetc()) Directed access : 원하는 block을 직접 접근 (lseek(), seek()) In.. 2023. 9. 7.
Spring Triangle - POJO, IoC, AOP, PSA POJO Plain Old Java Object 오래된 방식의 자바 오브젝트 클래스나 인터페이스를 상속 받지 않고, 메소드가 추가된 클래스가 아닌 getter, setter 같은 기본적인 기능만 가진 자바 객체를 말한다. 우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 그렇게 반대하는지 궁금하였는데, 간단한 객체는 폼 나는 명칭이 없기 때문에 그랬던 것이라고 결론지었다. 그래서 적당한 이름을 하나 만들어 붙였더니, 아글쎄, 다들 좋아하더라고. - 마틴 파울러 그렇다고 합니다... POJO는 엄청난 개념이 아니라 적당한 명칭 정도로만 이해하면 됩니다. IoC 제어의 역전 Inversion of Control 제어의 역전이 뭐임! 사실 제어의 역전은 스프링만의 특징이 아니다. 프레임워크의 흔.. 2023. 9. 6.
[독후감 23년-26] 중력에 대한 거의 모든 것 : 가장 유명하지만 누구도 이해하지 못하는 힘 독서기간_2023년 5월 18일 ~ 2023년 5월 말 저자_마커스 초운 출간일_2022년 6월 28일 굉장히 재밌게 읽었는데 기억이 나지 않아요... 5월... 까마득 하군요...... 앞으로는 책 읽고 꼬박꼬박 쓰겠습니다... 리처드 파인만의 직속 석사생이라는 것만 듣고 빌려서 읽었다. '영국에서 물리학과 천문학에 대해 가장 글 잘 쓰는 작가'라고 한다. 그래서 책이 지루할 것 같지만 그렇지 않다. 뉴턴부터 아인슈타인까지 물리의 대가들의 이야기를 따라서 중력을 다룬다. 정말 딱 ""교양"" 수준의 도서이기 때문이다. 대학교 1학년 이후 물리를 등져버린 자인데도 잘 읽었으니! 중학생도 이해할 수 있을 것이다. 아마도? 2023. 9. 6.
[데이터베이스] DBMS와 옵티마이저 MySQL 기준 사용할 땐 하더라도 내부 엔진을 알고 사용하자클라이언트-서버 아키텍처 클라이언트 층 서버에 명령, GUI Connection Handling : 클라이언트가 서버에 접속하면 연결을 클라이언트는 위한 스레드를 얻음 Authentication : Mysql에 연결할 때 서버쪽에서 수행, username과 password로 인증 Security : 서버와 연결된 후 특정 사용자에게 쿼리 권한이 있는지 확인 서버 층 (a.k.a “Brain of MySQL Architecture”) RDB의 논리적인 기능을 책임짐 Thread Handling : 연결된 클라이언트가 스레드를 할당받을 때 그 스레드를 제공, 스레드로 실행되는 클라이언트 쿼리들을 핸들링 Parser : SQL을 분석해 문법 검사, .. 2023. 8. 20.