| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 코틀린
- 스터디
- 인프런
- MySQL
- 안드로이드
- Android
- 기술면접
- 코테
- Kotlin
- SQL
- CS
- 오블완
- select
- 자바
- groupby
- 알고리즘
- join
- 혼공단
- 티스토리챌린지
- 프로그래머스
- 자료구조
- 카카오코테
- 정보처리기사
- 혼공파
- Til
- 혼공챌린지
- 정처기
- doitandroid
- 안드로이드스튜디오
- java
- Today
- Total
목록TIL (72)
Welcome! Everything is fine.
인프런 강의를 토대로 정리한 내용입니다. - 목차 -1. 인덱스란?2. 인덱스 사용하기 1) 인덱스 생성, 조회, 삭제 2) 인덱스 실행 계획 보기3. 인덱스가 사용되는 상황 1) 동등 비교 2) 범위 검색 3) LIKE 범위 검색4. 인덱스로 ORDER BY 성능 개선하기인덱스란?인덱스란 특정 컬럼(들)의 데이터를 기반으로 생성되는, 원본 테이블과는 별개의 특수한 자료구조이다. 인덱스를 사용하면 풀 테이블 스캔을 사용하지 않아서 빠른 검색이 가능하다. 그 이유는 인덱스 내부의 데이터는 항상 정렬된 상태를 유지하기 때문이다.🔎 풀 테이블 스캔(Full Table Scan)이란?풀 테이블 스캔은 말 그대로 테이블을 처음부터 끝까지 탐색한다는 뜻이다. 따라서 데이터가 많으면 많을수록 ..
인프런 강의를 토대로 정리한 내용입니다. UNIONUNION은 여러 개의 결과 집합을 아래로(수직으로) 이어 붙여서 더 많은 행을 가진 집합으로 만드는 기술이다.UNION으로 연결되는 모든 SELECT문은 컬럼의 개수가 동일해야 한다.각 SELECT 문의 같은 위치에 있는 컬럼들은 서로 호환 가능한 데이터 타입이어야 한다. (이름은 달라도 됨)최종 결과의 컬럼 이름은 첫번째 SELECT 문의 컬럼 이름을 따른다.중복되는 행은 자동으로 제거한다. → UNION ALL을 사용하면 의도적으로 중복을 허용할 수 있다.아래 예시를 보면, 활동 고객 명단(users)과 탈퇴 고객 명단(retired_users)을 합쳤다. UNION은 기본적으로 두 결과 집합을 합친 뒤, 완전히 중복되는 행은 자동으로 제거하여 고..
인프런 강의를 토대로 정리한 내용입니다. 만약 모든 정보를 한 테이블에 다 넣는다면 조회할 때는 좀 더 편리할 수도 있겠지만, 다음과 같은 문제가 발생할 수 있다.데이터 중복갱신 이상삽입 이상삭제 이상이러한 문제들 때문에 데이터베이스를 설계할 때는 정규화(Normalization)라는 과정을 거친다. 정규화(Normalization) : 데이터의 중복을 최소화하고, 데이터의 일관성을 해치는 '이상 현상'들을 방지하기 위해 데이터를 논리적인 단위로 분리하는 과정. 그런데 이렇게 정규화를 거쳐서 쪼개진 테이블들에서 의미 있는 정보를 얻으려면 이 흩어진 데이터 조각들을 다시 합쳐야 한다. 이때 사용하는 기술이 바로 조인(JOIN) 이다. 조인의 종류에는 내부 조인, 외부 조인, 셀프 조인, 크로스 조인이 ..
해당 포스팅은 를 읽고 정리한 내용입니다. 디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용해 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것이다. 디자인 패턴의 종류에는 싱글톤 패턴, 팩토리 패턴, 전략 패턴, 옵저버 패턴, 프록시 패턴, 이터레이터 패턴, 노출모듈 패턴, MVC 패턴, MVP 패턴, MVVM 패턴 등이 있다.싱글톤 패턴하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴. 싱글톤 패턴은 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하는 패턴이다. 데이터베이스 연결 모듈에 많이 쓰인다. 싱글톤 패턴의 장단점은 다음과 같다.장점 : 사용하기 쉬움, 인스턴스 생성 시 비용 절감단점 : 의존성이 높아짐, TDD를 ..
추석 연휴 동안 인프런에서 하는 챌린지에 참여했다.연휴가 길어 늘어질 것을 대비해 신청한 챌린지였는데, 늘어지는 것을 아예 막을 순 없었다.그러나 늘어지는 와중에 강의 하나라도 들으려고 노력했고, 단기간에 완강하게 되어 만족한다.😎 내가 수강한 강의는 강의다.한 번 더 복습해야할 것 같지만, 학부 때 배운 (다 까먹어가는) 네트워크 지식을 핵심만 골라 뇌에 새길 수 있었다. 다시 한 번 복습하고 응용편도 들어봐야겠다.인프런 복습 기능 출시 기원 정권지르기 1일차..🙏🏻 향로님의 라이브를 들으며 아궁이 속 불씨를 꺼지지 않도록 하는 것이 중요하다는 것을 깨달았다.그런데 내가 잘못 알고 있었던 건, 그 불씨가 꼭 개발에 국한되어야 한다는 것은 아니다.개발이 될 수도 있고, 다른 새로운 공부, 혹은 ..
인프런 강의를 보고 정리한 내용입니다.멀티 스레드?스레드(Thread) : 애플리케이션 코드가 순차적으로 실행되는 흐름자바 애플리케이션 실행 시, main 스레드가 처음 시작한 스레드는 한 번에 하나의 코드 라인만 수행여러 작업을 동시에 처리해야 할 경우, 추가 스레드 생성 필요예: 웹 서버에서 여러 요청을 동시에 처리하려면 멀티 스레드가 필수요청마다 스레드를 만들면...웹 서버가 요청마다 새 스레드를 만들면 어떨까?장점동시 요청 처리 가능하나의 요청이 지연되더라도 나머지는 정상 동작서버 리소스 허용 범위 내에서 처리량 확장 가능단점스레드 생성 비용 높음 → 요청 폭주 시 응답 지연컨텍스트 스위칭(Context Switching) 비용 발생OS가 CPU를 한 스레드에서 다른 스레드로 전환할 때 발생스레..
캐싱(caching)이란?Redis에 대해 알아보기 전, 먼저 캐시 & 캐싱이 무엇인지 알아보자! 파레토의 법칙에 따라 자주 사용되는 20%의 데이터를 미리 캐싱해둔다면 효과적인 성능 향상을 기대할 수 있다.캐시(Cache) : 원본 저장소보다 데이터를 더 빠르고 효율적으로 가져올 수 있는 임시 데이터 저장소.캐싱(Caching) : 캐시에 접근해 데이터를 빠르게 가져오는 방식.캐시 사용 시 주의사항자주 사용되면서 변경이 적은 데이터에 적합하다.유실되어도 크게 문제가 없는 데이터에 적합하다.DB와 함께 사용 시 데이터 정합성 문제를 고려해야한다.데이터 캐싱 전략단순히 "캐싱"만 한다고 성능이 무조건 보장되는 것은 아니다. 어떻게 캐싱하느냐가 중요하다.대표적인 데이터 캐싱 전략을 알아보자.Cache Asi..
QueryDSL란?DSL(Domain-Specific-Language) : 특정 도메인에서 발생하는 문제를 효과적으로 해결하기 위해 설계된 언어.(ex. SQL, CSS, Regex 등)QueryDSL : SQL 형식의 쿼리를 Type-Safe하게 생성할 수 있도록 하는 DSL을 제공하는 라이브러리. 엔티티의 매핑정보를 활용하여 쿼리에 적합하도록 쿼리 전용 클래스(Q클래스)로 재구성해준다.✔️ Q클래스란?Q클래스란 엔티티 클래스 속성과 구조를 설명해주는 메타데이터로, Type-Safe하게 쿼리 조건을 설정할 수 있다.annotationProcessor를 통해 생성된 실제 Q클래스는 다음과 같다.다 캡쳐하진 못했지만, Todo의 필드가 QTodo에서도 보이는 것을 알 수 있다. QueryDSL 시작하기qu..