본문 바로가기
728x90

전체 글249

티스토리 mac 단축키 내가 쓰는....까먹을까봐 적음... command + b 굵은글씨 command + option + 4 라인 넣기 q q 누르면 관리 메인화면 왔다 갔다..ㅎ 2023. 2. 4.
mysql 시스템 변수 확인. SHOW VARIABLES; SHOW VARIABLES LIKE 'long_query_time%'; 위 명령어로 전체 혹은 개별로 볼 수 있다. 여러가지 옵션이 존재하며, 필요에 따라 검색 후 찾아봐야겠다. 2023. 2. 4.
[RealMysql 8.0]04아키텍처 4.2.13 ~ 4.4.3.3 슬로우 쿼리 InnoDB와 MyISAM, MEMORY 스토리지 엔진 비교 5.5부터 innodb 스토리지 엔진이 기본 스토리지 엔진으로 채택됐지만, 시스템 테이블 (사용자 인증 관련된 정보와 복제 관련된 정보가 저장된 mysql DB의 테이블)은 여전히 MyISAM을 사용, 또한 전문검색, 좌표검색 기능은 MyISAM 에서만 지원 8.0부터 모든것을 InnoDB 스토리지 엔진으로 대체되었음. 4.3 ~ 4.4.2 까지는 넘어감. 슬로우 쿼리 로그 시스템변수 long_query_time 으로 설정된 값보다 높을시 log_output 으로 지정된 값에 따라 테이블에 저장할지, 디스크로 저장할지 나뉘게된다.(TABLE, FILE)(둘다 CSV 파일로 저장하는 것과 동일하게 작동) mysql 의 잠금 처리는 mysql 엔진.. 2023. 2. 3.
[RealMysql 8.0]04아키텍처 4.11.1 ~ 4.2.12 어댑티브 해시 인덱스 리두 로그 아카이빙 사전적 의미로 '보관'이라는 뜻을 가진 아카이빙은 개인 및 단체가 활동하며, 남기는 수많은 기록물 중 가치가 있는 것을 선별하여 보관하는 장소, 또는 그 기록물 자체를 이르는 용어를 뜻한다. https://ju-hyung.tistory.com/151 아카이빙 (Archiving) 이란? 아카이빙 (Archiving) - 사전적 의미로 '보관'이라는 뜻을 가진 아카이빙은 개인 및 단체가 활동하며, 남기는 수많은 기록물 중 가치가 있는 것을 선별하여 보관하는 장소, 또는 그 기록물 자체를 이 ju-hyung.tistory.com 8.0 버전부터 innoDb 스토리지 엔진의 리두 로그를 아카이빙할 수 있는 기능이 추가되었다. 데이터베이스의 모든 변경 내용을 기록한 redo 로그를 포함한다... 2023. 2. 3.
[이펙티브자바]item 20.추상 클래스보다는 인터페이스를 우선하라. 자바 8부터는 인터페이스도 디폴트 메서드를 제공할 수 있다. 기존 클래스에서도 손쉽게 새로운 인터페이스를 구현해넣을 수 있다. 인터페이스로는 계층구조가 없는 타입 프레임워크를 만들 수 있다. Singer, Songwiter 의 인터페이스가 있을시 이 두가지를 받은 SingerSongwriter 를 다중 상속 받아 새로운 인터페이스를 만들 수 있다. 디폴드 메서드를 제공해 프로그래머들의 일감을 덜어줄 수 있다. 이럴경우 item19 처럼 @impleSpec 자바독 태그를 붙여 문서화를 하자. 인터페이스와 추상 골격 구현 클래스를 함께 제공하는 식으로 인터페이스와, 추상 클래스의 장점을 모두 취하는 방법도 있다. 인퍼페이스의 강제 구현 요구와 추상 클래스의 기본 구현 제공을 동시에 제공할 수 있기 때문이다... 2023. 2. 3.
[이펙티브자바]item 19.상속을 고려해 설계하고 문서화하라.그러지 않았다면 상속을 금지하라. 상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지 문서로 남겨야 한다. 재정의? => public과 protected 메서드 중 final 이 아닌 모든 메서드를 뜻함 @impleSpec 어노테이션으로 자바독을 만들 수 있다. API 의 문서를 만들때는 "어떻게"가 아닌 "무엇"을 하는지 설명하는거에 대비하여 상속을 위한 내부클래스의 문서화는 상당히 내부구조까지 설명을 해야한다. 이는 캡슐화가 이미 깨졌고 내부 구현을 모르면 오작동의 위험이 있기 때문이다. 클래스의 내부 동작 과정 중간에 끼어들 수 있는 훅을 잘 선별하여 protected 메서드 형태로 공개해야 할 수도 있다. 어떤 클래스를 protected 로 노출해야할지 결정하는 방법은 직접 하위 클래스를 3개 정도 만들어 보.. 2023. 2. 3.
[이펙티브자바]item 18.상속보다는 컴포지션을 사용하라. 상속은 많은 문제가 발생할 수 있다. 패키지 경계를 넘어, 즉 다른 패키지의 구체 클래스를 속하는 일은 위험하다. 상속은 캡슐화를 깨뜨린다. 깨뜨린다보다 상속을 받은 자식 클래스가 상위 클래스의 private 멤버에 접근할 수 있기때문에 캡슐화의 의도와 달리 구현이 공개 될 수 있게 된다. 상위 클래스의 구현에따라 동작에 이상이 생길 수 있다. 이를 해결하기 위해 컴포지션(Composition)을 사용하라는 얘기이다. 컴포지션: 기존 클래스를 확장하는대신, 새로운 클래스를 만들고, private 필드로 기존 클래스의 인스턴스를 참조하게 한다. 기존 클래스의 대응하는 메서드를 호출해 그 결과를 반환한다. 이를통해 기존 클래스의 구현이 바뀌거나, 새로운 메서드가 생기더라도 아무런 영향이 받지 않는다. 119.. 2023. 2. 2.
자바 람다 Supplier example Supplier => T get() => 매개변수는 없고 반환값만 있음. (공급자) import java.util.function.Supplier; public class SupplierExample { public static void main(String[] args) { printValid(0, getVeryExpensiveValue()); printValid(-1, getVeryExpensiveValue()); printValid(-2, getVeryExpensiveValue()); System.out.println("================"); printIfValidIndex(0, () -> getVeryExpensiveValue()); printIfValidIndex(-1, () -> .. 2023. 2. 2.
스프링부트 롬복 적용(자바) 디펜던시 build.gradle 추가 아래 항목 추가. dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' ... } 2023. 2. 2.
728x90