하루한개

    매트, 토르의 MySQL 성능 최적화

    매트, 토르의 MySQL 성능 최적화 10분 테코톡 - 매트, 토르의 MySQL 성능 최적화 영상을 보고 정리한 내용입니다. 목차 MySQL 8.0과 기본 스토리지 엔진인 InnoDB 인덱스를 활용한 쿼리 최적화 사용할 테이블 인덱스를 왜 쓸까? 데이터베이스에서 성능 최적화는 디스크 I/O 와 관련이 많다. 이 디스크 I/O를 줄이는 것이 조회 성능 개선의 핵심 물리적으로 하드디스크는, 헤더가 물리적으로 움직여야 하므로 데이터의 입출력이 느리다. 실제로 하드디스크 I/O와 메모리 I/O의 속도 차이는 10만 ~ 15만 배 정도이다. 인덱스를 쓰면 조회에 이득을 얻고, 수정/삭제에서 손해를 보는데 괜찮나요? 그럼에도 불구하고 사용하는 것이 좋다. 일반적으로 웹서비스 같은 경우에 CRUD에서 R과 CUD의 ..

    10분 테코톡 - AOP

    AOP 우아한 테크코스의 10분 테코톡을 정리한 글입니다 AOP란 (Aspect Oriented Programming) - 관점 지향 프로그래밍 횡단 관심사(Cross-Cutting Concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임 여러 객체에 공통으로 적용할 수 있는 기능을 분리해서 개발자는 반복 작업을 줄이고 핵심 기능 개발에만 집중할 수 있다. 스프링에만 존재하는 개념은 아니다. AOP는 OOP와 같은 패러다임이다. AOP는 OOP를 프로그램구조에 대한 다른 생각의 방식을 제공함으로써 보완하고있다. 각 언어마다 AOP의 구현체가 있다. 자바는 AspectJ를 사용한다. 서비스에서 필요한 내용은 비즈니스 로직이라고 불리는 핵심기능만 수행하면 된다. 그이외에 시간..

    멍토의 Non-Blocking/Blocking 과 Async/Sync

    10분 테코톡 - 멍토의 Non-Blocking/Blocking 과 Async/Sync 목차 Blocking Vs Non-Blocking Sychronouse Vs Asynchronous 조합 4가지의 경우 정리 Blocking Vs Non-Blocking 제어권 : 제어권은 자신(함수)의 코드를 실행할 권리 같은 것이다. 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려준다. Blocking 자신의 작업이 진행되다 다른 주체를 호출하면 호출된 주체의 작업을 끝날 때까지 기다렸다가 작업을 다시 시작 제어권을 호출한 함수에게 넘기고 호출한 함수가 일이 끝나면 제어권을 다시 돌려받음 Blocking 예시 직원 : 과장님 여기 작성한 서류입니다. 과장 : 다 읽을 때까지 기다..

    디디의 Redis

    목차 Redis 개요 Cache 개념 Redis 자료구조 Redis 주의사항 Redis 개요 Remote dictionary server redis.io 에는 다음과 같이 redis를 소개한다. Redis는 인메모리 데이터 구조 저장소로, 데이터베이스, 캐시, 메시지 브로커로 사용한다고 말한다. Remote dictionary는 Key-Value 형식의 자료구조 DB server 32bit CPU Int 최대값은? 21억~ Key값이 21억을 넘어가서 쿠팡에서 오류가 발생했다 하여 int에서 long으로 데이터형식을 변환하여 문제를 해결했다. Cache 개념 나중 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는것. 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소 그림 : 메모리 계층 구조 위..

    Spring Transation

    10분 테코톡 트랜잭션을 보고 정리한 내용입니다. Spring @Transactional 속성들 https://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/transaction.html Table 16.3. @Transactional Settings PropertyTypeDescription value String Optional qualifier specifying the transaction manager to be used. * 사용할 PlatformTransactionManager의 식별자 * 트랜잭션 관리자 빈의 이름이나 제한자(qualifier) propagation enum: Propagation Opt..

    데이터베이스 락 (Database Lock, DB Lock)

    우아한 테크코스의 10분 테코톡을 정리한 글입니다 정의 Recored locking is the technique of preventing simultaneous access to data in a database, to prevent inconsistent results. DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장할 수 있는 직렬화 장치 Lock : 무엇인가 열리지 않도록 막는 장치 Lock이란? DB에서는 Lock을 사용해 레코드(로우), 테이블, 테이블 전체의 접근을 막을 수 있다 위 그림은 하나의 DB에 두 유저가 동시에 접근하는 것을 그린 예제 account는 계좌인데, 마이너스 통장이 아니다. 마이너스 통장이 아니면 계좌는 0원 밑으로 떨어지면 안된다. 두명이 계좌에..

    정규표현식 and With Java

    유튜브 우아한 Tech 채널에서 10분 테코톡을 듣고 공부한 내용입니다. 정규표현식 목차 정규표현식의 이해 정규표현식의 활용 Java에서 정규표현식의 활용 정규표현식의 이해 정규표현식 : Regular Expression, RegExp , Regex 정규 표현식은 줄여서 정규식이라고도 하며, 영어로는 Regular Expression, 줄여서 regex, regexp라고도 한다. 초반에는 편집기의 패턴매칭을 시작으로 사용되었으며, 수학적인 의미에서 시작되었다고 하며, 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어이다. 수학자 Stephen Cole Kleene에 의해 생성됐으며 편집기의 패턴 매칭을 시작으로 사용. grep 명령어가 정규표현식을 사용한다. Vi, emacs 같은 편집기..

    캐시(Cache), 브라우저 캐시, Spring Boot Cache

    [10분 테코톡] 큰곰 & 소니의 캐시를 보며 정리한 내용입니다. 캐시(CACHE) 목차 메모리 계층 구조 캐시 Redis 간략 설명 [브라우저 캐시](##브라우저 캐시?) Spring Boot Cache 메모리 계층 구조 계층이 높아질수록 속도가 빠르지만 용량은 적다. 반대로 계층이 낮아질수록 속도는 느리지만 용량은 많다. 데이터를 저장하는 공간의 속도와 용량은 반비례 관계 속도가 빠른 메모리일수록 용량이 작음 - RAM이 SSD나 HDD보다 용량이 작지만 속도가 빠름 용량이 큰 저장장치는 속도가 느림 - RAM 보다 SSD나 HDD가 용량이 크지만 속도가 느림 둘 다 잡기에는 비용이 너무 많이 든다 그래서 데이터 저장 공간은 속도와 용량에 따라 특성에 맞게 역할을 나누어서 사용한다. 데이터 저장 공간..

    Spring vs Spring boot

    Spring Spring boot의 차이 10분 테코톡 - Spring vs Spring boot 10분 테코톡 - Spring vs Spring boot 어노테이션(Annotation) 주석 이라는 뜻 어노테이션은 기능을 가지고 있지 않다. 어노테이션은 마킹이다. 마킹된 어노테이션을 처리해주는 프로세서가 있다. Spring boot 에서의 어노테이션 처리 // 어노테이션 선언 @Target(ElementType.METHOD) @Retention(RetentionPolicy.CLASS) public @interface WoowaAnnotation { } // 어노테이션 어떤 체리를 해줄지 작성 @Component @Aspect public class AnnotationAspect { @Around("@A..

    MVC 패턴 , 5 Layer 패턴

    유튜브 우아한 Tech 채널에서 10분 테코톡을 듣고 공부한 내용입니다. 목차 MVC 패턴이란, Model, View, Controller Service Layer MVC를 지키면서 코딩하는 방법 5 Layer References MVC 패턴이란 * 출처 : 위키피디아 MVC 패턴 Model & View & Controller로 애플리케이션을 3가지 역할로 구분한 개발 방법론 MVC 패턴이 나오기 이전의 웹 어플리케이션의 아키텍쳐 모델 1 아키텍처 출처 구성 : JSP + JavaBean(Service) 한 페이지가 뷰 + 로직으로 이루어져 있다. - 뷰와 로직이 섞인다. 장점 : 개발이 쉽고 구조가 간단하다. 단점 : 코드가 복잡해져서 유지보수가 상당히 까다롭다. 프론트와 백엔드의 분업이 힘들다. 모델..