728x90 분류 전체보기152 14. Comparable을 구현할지 고려하라 이번에는 Comparable 인터페이스의 유일무이한 메서드인 compareTo를 알아보자 - compareTo는 Object의 메서드가 아니다 - 성격은 두 가지만 빼면 Object의 equals와 같다 - compareTO는 단순 동치성 비교에 더해 순서까지 비교할 수 있으며, 제네릭하다 - Comparable을 구현했다는 것은 그 클래스의 인스턴스들에는 자연적인 순서가 있음을 뜻한다 - Comparable을 구현한 객체들의 배열은 다음처럼 손쉽게 정렬할 수 있다. Arrays.sort(a); 검색, 극단값 계산, 자동 정렬되는 컬렉션 관리도 역시 쉽게 할 수 있다 public class WordList{ public static void main(String[] args){ Set s = new Tr.. 2021. 10. 10. 4.1 MySQL 엔진 아키텍처(1) MySQL 서버는 사람의 머리 역할을 담당하는 MySQL 엔진과 손발 역할을 담당하는 스토리지 엔진으로 구분할 수 있다. 그리고 손과 발의 역할을 담당하는 스토리지 엔진은 핸들러 API를 만족하면 누구든지 스토리지 엔진을 구현해서 MySQL 서버에 추가해서 사용할수 있다. 이번 장에서는 MySQL 엔진과 MySQL 서버에서 기본으로 제공되는 InnoDB 스토리지 엔진, 그리고 MyISAM 스토리지 엔진을 구분해서 살펴보겠다 먼저 MySQL의 쿼리를 작성하고 튜닝할 떼 필요한 기본적인 MySQL 엔진의 구조를 훑어 보겠다 - MySQL 서버는 다른 DBMS에 비해 구조가 상당히 독특하다 - 사용자 입장에서 보면 거의 차이가 느껴지지 않지만 이러한 독특한 구조 때문에 다른 DBMS에서는 가질 수 없는 엄청난.. 2021. 10. 9. 13. clone 재정의는 주의해서 진행하라(2) 코드 13-3 잘못된 clone 메서드 - 가변 상태를 공유한다! // 코드 13-1 가변 상태를 참조하지 않는 클래스용 clone 메서드 (79쪽) @Override public PhoneNumber clone() { try { return (PhoneNumber) super.clone(); } catch (CloneNotSupportedException e) { throw new AssertionError(); // 일어날 수 없는 일이다. } } - 복제본은 자신만의 버킷 배열을 갖지만, 이 배열은 원본과 같은 연결 리스트를 참조하여 - 원본과 복제본 모두 예기치 않게 동작할 가능성이 생긴다 - 이를 해결하려면 각 버킷을 구성하는 연결 리스트를 복사해야 한다 코드 13-4 복잡한 가변 상태를 갖는 .. 2021. 10. 6. 13. clone 재정의는 주의해서 진행하라(1) 메서드 하나 없는 Cloneable 인터페이스는 대체 무슨 일을 할까? - Object의 protected 메서드인 clone의 동작 방식을 결정한다 - Cloneable을 구현한 클래스의 인스턴스에서 clone을 호출하면 그 객체의 필드들을 하나하나 복사한 객체를 반환하며, - 그렇지 않은 클래스의 인스턴스에서 호출하면 CloneNotSupportedException을 던진다 - 인터페이스를 상당히 이례적으로 사용한 예이니 따라하지는 말자 인터페이스를 구현한다는 것은 일반적으로 해당 클래스가 그 인터페이스에서 정의한 기능을 제공한다고 선언하는 행위 - 그런데 Cloneable의 경우에는 상위 클래스에 정의된 protected 메서드의 동작 방식을 변경한 것이다. 실무에서는 Cloneable을 구현한 클.. 2021. 10. 5. 3.5 역할(Role) MySQL 8.0 버전부터는 권한을 묶어서 역할을 사용할 수 있게 됐다. 실제 MySQL 서버 내부적으로 역할은 계정과 똑같은 모습을 하고 있다 우선 CREATE ROLE 명령을 이용해 role_emp_read 와 role_emp_write라는 이름의 역할을 정의 CREATE ROLE role_emp_read, role_emp_write; - CREATE ROLE 명령에서는 빈 껍데기만 있는 역할을 정의 GRANT 명령으로 각 역할에 대해 실질적인 권한을 부여하면 된다 ## employees DB 의 모든 객체에 대해 읽기 권한만 부여 GRANT SELECT ON employees.* TO role_emp_read; ## employees DB 의 모든 객체에 데이터변경(INSERT, UPDATE, DE.. 2021. 10. 4. 3.4 권한 MySQL 5.7 버전까지 권한은 글로벌 권한과 객체 단위의 권한으로 구분됐다 데이터 베이스나 테이블 이외의 객체에 적용되는 권한을 글로벌 권한이라고 하며, 데이터 베이스나 테이블을 제어하는데 필요한 권한을 객체 권한이라 한다 - 객체 권한은 GRANT 명령으로 권한을 부여할 때 반드시 특정 객체를 명시 - 글로벌 권한은 GRANT 명령에서 특정 객체를 명시하지 말아야 한다 예외적으로 ALL은 글로벌과 객체 권한 두 가지 용도로 사용될 수 있다 - 특정 객체에 ALL 권한이 부여되면 해당 객체에 적용될 수 있는 모든 객체 권한 부여 - 글로벌로 ALL이 사용되면 글로벌 수준에서 가능한 모든 권한을 부여 - 책 65p 표 3.1 정적권한, 표 3.2 동적 권한 참조 ## 사용자에게 권한을 부여할 때는 GR.. 2021. 10. 4. 이전 1 ··· 13 14 15 16 17 18 19 ··· 26 다음 728x90