🖥️ Back

타임리프는 서버에서 HTML을 동적으로 렌더링하는 용도로 사용된다. 스프링과 통합되면서 스프링의 다양한 기능을 편리하게 사용할 수 있게 지원한다. 타임리프 공식 사이트 https://www.thymeleaf.org/공식 메뉴얼 - 기본 기능 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html공식 메뉴얼 - 스프링 통합 https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html표준 표현식 구문 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#standard-expression-syntax 타임리프 사용 선언 text, u..
CTE (Common Table Expression)MySQL에서 모든 쿼리가 임시 결과를 생성한다. 이 임시 결과에 이름 붙인 것이 CTE다. 1. cte_max_recursion_depth 설정대규모 데이터 생성하기에 앞서 최대 재귀 횟수를 지정하는 행의 갯수를 설정한다.SET SESSION cte_max_recursion_depth = 10000000; 2. 더미 데이터 삽입 쿼리 실행해당 스크립트를 실행하면 users 테이블에 1,000,000개의 데이터가 자동 생성된다.INSERT INTO users (name, age)#1부터 시작해서 n+1씩 증가, n JSCODE, MySQL 성능 최적화 입문/실전https://inf.run/DzjSq
INDEX인덱스란 데이터 베이스 테이블에서 검색 성능 속도를 높여주는 자료구조이다. 더 직관적으로 표현하면 데이터를 찾기 위해 특정 컬럼을 기준으로 미리 정렬해놓은 표이다.그래서 주로 WHERE, ORDER BY, JOIN, GROUP BY 등에 사용되는 컬럼에 설정한다. 만약 인덱스가 없다면 테이블 전체를 일일이 다 뒤져야한다.인덱스가 있다면 필요한 위치를 빠르게 찾아가기 때문에 조회 속도가 빨라진다. 1만개의 데이터가 있는 USERS 테이블이 있다.이중에서 age가 23인 사람을 찾을려고한다. 인덱스 없이 조회를 하면 1만개의 데이터를 일일이 다 확인하기때문에 오래걸린다. SELECT * FROM usersWHERE age = 23; #0.141초 나이순으로 정렬된 표(= 인덱스)가 있다면 23로..
1. 개발자가 DB에 SQL 요청을 보낸다.2. MySQL 엔진에서 옵티마이저가 SQL문을 분석한 뒤 빠르고 효율적으로 데이터를 가져올 수 있는 계획을 세운다.어떤 순서로 테이블에 접근할 지, 인덱스를 사용할 지, 어떤 인덱스를 사용할 지등옵티마이저가 세운 계획은 완벽하지 않기 때문에 잘못된 최적화를 할 수 있어 SQL 튜닝이 필요하다.3. 옵티마이저가 세운 계획을 바탕으로 스토리지 엔진에서 데이터를 가져온다.DB 성능 문제의 대부분 원인은 스토리지 엔진에서 데이터를 가져올 때 발생한다. 데이터를 찾기 어렵거나 오래 걸리거나 등그래서 SQL 튜닝의 핵심은 스토리지 엔진에서 데이터를 쉽게 찾을 수 있도록 그리고 적은 데이터를 가져올 수 있도록 수정해야한다.4. MySQL 엔진에서 정렬, 필터링 등의 마지막..
추상클래스란 공통적인 틀은 있지만, 직접 인스턴스를 생성할 수 없는 클래스이다.그래서 자식 클래스가 채워서 완성해야한다. 간단하게 생각하면 추상 클래스는 미완성 설계도이고, 추상 메서드는 설명만 있고 구현은 없다.public abstract class SchoolGroup { //protected는 자식 클래스에서 접근할 수 있도록 허용한다. //static final은 공통 상수로 모든 자식 클래스에 공유된다. protected static final String NOTICE = "초등학교, 중학교는 의무교육이다."; //final은 생성자에서 한 번만 초기화 가능하다. 그이후로 변경 안 됨! protected final int no; protected final Str..
final 키워드는 어디에 붙이느냐에 따라 의미가 다르다.변수(필드, 지역변수 등)에 붙으면 값을 변경할 수 없기에 한 번만 초기화할 수 있다.인스턴스에 붙으면 다른 값을 넣는 것은 안 되는데 필드는 변경 가능하다.메서드에 붙으면 오버라이딩이 안 된다.클래스에 붙이면 상속이 안 된다.public class Animal { //모든 객체가 공유하고 변하지 않는 값 protected static final String NOTICE = "동물은 다 귀엽다"; //생성자에서만 딱 한 번 초기화할 수 있고 이후 수정 불가 private final int head; public String name; public Animal (int head, String name) { ..
지구용사
'🖥️ Back' 카테고리의 글 목록 (7 Page)