본문 바로가기
728x90

공부155

[RealMysql 8.0] 외래키 8.10 ~ 8.10.2 외래키 InnoDB 의 왜래키 관리에는 중요한 두 가지 특징이 있다. 테이블의 변경(쓰기 잠금)이 발생하는 경우에만 잠금 경합(잠금 대기)이 발생한다. 외래키와 연관되지 않은 칼럼의 변경은 최대한 잠금 경합(잠금 대기)을 발생시키지 않는다. 자식 테이블의 변경이 대기하는 경우 작업번호 커넥션-1 커넥션-2 1 BEGIN; 2 update tb_parent set fb='changed-2" where id =2 3 BEGIN; 4 update tb_child set pid = 2 where id = 100; 5 ROLLBACK; 6 Query OK, 1 row affected (*.** sec) - 테이블의 변경(쓰기 잠금)이 발생하는 경우에만 잠금 경합(잠금 대기)이 발생한다. 2번 커넥션 1 수행시 t.. 2023. 2. 26.
mysql 스토리지 엔진 MyISAM vs InnoDB 트랜잭션 지원 여부 MyISAM은 트랜잭션을 지원하지 않습니다. InnoDB는 트랜잭션을 지원하며, ACID(원자성, 일관성, 고립성, 지속성)를 보장합니다. 락(LOCK) 방식 MyISAM은 전체 테이블 락 방식을 사용합니다. 따라서 동시에 여러 개의 쓰기 작업이 일어날 경우 성능이 저하될 수 있습니다. InnoDB는 행 락 방식을 사용합니다. 따라서 여러 개의 쓰기 작업이 동시에 일어날 경우 성능이 향상될 수 있습니다. 외래키(Foreign Key) 지원 여부 MyISAM은 외래키(Foreign Key)를 지원하지 않습니다. InnoDB는 외래키(Foreign Key)를 지원합니다. 데이터 일관성 MyISAM은 데이터 일관성을 보장하지 않습니다. 따라서 데이터의 무결성이 중요한 경우에는 사용하지 않는.. 2023. 2. 22.
[이펙티브자바]item 33.타입 안전 이종 컨테이너를 고려하라. 아이고 어렵네~ 타입 안전 이종 컨테이너: 한 타입의 객체만 담을 수 있는 컨테이너가 아니라, 여러 다른 타입을 담을 수 있는 타입 안전한 컨테이너. 구현방법: 컨테이너 대신 키를 매개변수화한 다음, 컨테이너에 값을 넣거나 뺄 때 매개변수화환 키를 함께 제공하면 된다. 2023. 2. 17.
백준 2839 자바. 가끔 문제의 난이도를 떠나 생각나게 하는 코드들이 있다. 내가 제일 좋아하는 문제는 따로 있긴한데,,여튼..코드를 보자.. 풀이코드: public class _2839 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); int count = -1; for (int i = num / 5; i >= 0; i--) { int remain = num - (i * 5); if (remain % 3 == 0) { count = i + (remain /.. 2023. 2. 17.
[이펙티브자바]item 32.제네릭과 가변인수를 함께 쓸 때는 신중하라. varargs 매개변수에 제네릭이나 매개변수화 타입이 포함되면 알기 어려운 컴파일 경고가 발생한다. public class Dangerous { static void dangerous(List... stringLists) { List intList = List.of(42); Object[] objects = stringLists; objects[0] = intList; // 힙 오염 발생 String s = stringLists[0].get(0); // ClassCastException } public static void main(String[] args) { dangerous(List.of("There be dragons!")); } } 매개변수화 타입의 변수가 다른 객체를 참조하면 힙 오염이 발생한.. 2023. 2. 16.
[이펙티브자바]item 31.한정적 와일드카드를 사용해 API 유연성을 높이라. 우선 읽고 가자. 불변성(무공변성, invariant) 상속 관계에 상관없이 자신의 타입만 허용하는 것을 뜻한다. Kotlin 에서는 따로 지정해주지 않으면 기본적으로 모든 Generic Class 는 무공변이다. Java 에서의 와 같다. 공변성(covariant) 자기 자신과 자식 객체를 허용한다. Java 에서의 와 같다. Kotlin 에서는 out 키워드를 사용해서 이를 표시한다. 반공변성(contravariant) 공변성의 반대 - 자기 자신과 부모 객체만 허용한다. Java 에서의 와 같다. Kotlin 에서는 in 키워드를 사용해서 표현한다. 매개변수화 타입은 불공변이다 즉 서로 다른 타입 Type1과 Type2가 있을때 List은 List의 하위 타입도 상위 타입도 아니다 ex) List은.. 2023. 2. 15.
[이펙티브자바]item 30.이왕이면 제네릭 메서드로 만들라. 매개변수화 타입을 받는 정적 유틸리티 메서드 한정적 와일드 카드 타입(아이템31)을 사용하여 더 유연하게 개선할 수 있다. 제네릭 싱글턴 팩터리 제네릭은 런타임에 타입 정보가 소거(아이템28)되므로 하나의 객체를 어떤 타입으로든 매개변수화할 수 있다. 재귀적 타입 한정 자기 자신이 들어간 표현식을 사용하여 타입 매개변수의 허용 범위를 한정한다. 2023. 2. 14.
[이펙티브자바]item 29.이왕이면 제네릭 타입으로 만들라. 배열을 사용하는 코드를 제네릭으로 만들때 해결 책 두가지가 있다. 첫번째 방법은 제네릭 배열 대신에 Object 배열을 생성한 뒤에 제네릭 배열로 형변환 하는것. 형변환을 배열 생성시 한 번만 한다. 가독성이 좋다. 힙 오염이 발생할 수 있다(아이템31) 두번째 방법은 elements 필드의 타입을 E[] 에서 Object[]로 바꾸는 것이다. 제네릭 배열 대신에 Object 배열을 사용하고, 배열이 반환한 원소를 E로 형변환 하는것. 원소를 꺼낼때 마다 형변환을 해주어야 한다. 필요에 따라 한정적 타입 매개변수를 이용해서 제약조건을 추가하자. E extends Number> 같은.. 2023. 2. 13.
데이터 용량에 따른 크기는 어느정도일까 1MB 같은 경우 대략 어느정도의 pdf나 텍스트 파일일까..라는 궁금증에 찾아봄.. 딱 이걸로 이렇다 할 수는 없지만 대략적인 감만 잡아 봄. 1 Bit: 예를 들어, 0 또는 1의 값을 가진 전자적 표시 1 Byte: 8 Bit, 예를 들어, 한 글자의 문자 코드 값 1 Kilobyte (KB): 1024 Byte, 예를 들어, 텍스트 파일의 작은 크기 대략 1000 ~ 1500자 정도..당연히 인코딩에 따라 다름. 1 Megabyte (MB): 1024 Kilobyte, 예를 들어, 사진 파일의 크기 크기로 글자 수: 1MB는 약 20,000 페이지의 텍스트 문서입니다. PDF 문서: 1MB의 PDF 문서는 약 3-5 페이지의 PDF 문서입니다. MP3 파일: 1MB의 MP3 파일은 약 3-4 분의.. 2023. 2. 12.
728x90