본문 바로가기
728x90

분류 전체보기152

12. toString을 항상 재정의하라 Object의 기본 toString 메서드가 우리가 작성한 클래스에 적합한 문자열을 반환하는 경우는 거의 없다 - 단순히 클래스_이름@16진수로 표시한_해시 코드를 반환 - toString의 일반 규약에 따르면 '간결하면서 사람이 읽기 쉬운 형태의 유익한정보' 를 반환한다 - toString의 규약은 "모든 하위 클래스에서 이 메서드를 재정의 한다" toString을 잘 구현한 클래스는 사용하기에 훨씬 즐겁고, 그 클래스를 사용한 시스템은 디버깅이 쉽다 - toString 메서드는 객체를 println, printf 문자열 연결 연산자(+) - assert 구문에 넘길 때 혹은 디버거가 객체를 출력할 때 자동으로 불린다 - toString을 재정의하지 않는다면 쓸모없는 메시지만 로그에 남는다 실전에서 t.. 2021. 10. 3.
3.3 비밀번호 관리 3.3.1 고수준 비밀번호 - MySQL 서버의 비밀번호는 유효기간이나 이력 관리를 통한 재사용 금지 기능뿐만 아니라 비밀번호를 쉽게 유추할 수 있는 단어들이 사용되지 않게 글자의 조합을 강제하거나 금칙어를 설정하는 기능이 있다 - MySQL 서버에서 비밀번호의 유효성 체크 규칙을 적용하려면 'validate_password' 컴포넌트를 이용한다 ## validate_password 컴포넌트 설치 INSTALL COMPONENT 'file://component_validate_password'; ## 설치된 컴포넌트 확인 SELECT * FROM mysql.component; ## validate_password 컴포넌에서 제공하는 시스템 변수 확인 SHOW GLOBAL VARIABLES LIKE 'va.. 2021. 10. 3.
11. equals를 재정의하려거든 hashCode도 재정의하라 equals를 재정의한 클래스 모두에서 hashCode도 재정의해야 한다 그렇지 않으면 hashCode 일반 규약을 어기게 되어 해당 클래스의 인스턴스를 HashMap이나 HashSet 같은 컬렉션 원소로 사용할 때 문제를 일으킨다 Object 명세에서 발췌한 규약 1. equals비교에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 실행되는 동안 그 객체의 hashCode 메서드는 몇번을 호출해도 일관되게 항상 같은 값을 반환해야 한다 단, 애플리케이션을 다시 실행한다면 이값이 달라져도 상관없다 2. equals가 두 객체를 같다고 판단했다면, 두 객체의 hashCode는 똑같은 값을 반환해야 한다 3. equals가 두 객체를 다르다고 판단했더라도, 두 객체의 hashCode가 서로 다른 값을 반.. 2021. 10. 2.
3.2 사용자 계정관리 3.2.1 시스템 계정과 일반 계정 - MySQL 8.0부터 계정은 SYSTEM_USER 권한을 가지고 있느냐에 따라 시스템 계정과 일반 계정으로 구분된다 - 시스템 계정은 MySQL 서버 내부적으로 실행되는 백그라운드 스레드와는 무관하다 - 시스템 계정 = 서버관리자를 위한 계정 - 일반 계정 = 응용프로그램이나 개발 자을 위한 계정 시스템 계정은 데이터 베이스나 서버관리와 관련된 중요 작업을 할 수 있다 - 계정관리 - 다른 세션 또는 그 세션에서 실행 중인 쿼리를 강제 종료 - 스토어드 프로그램 생성이 DEFINER를 타 사용자로 설정 시스템 계정과 일반 계정의 개념이 도입된 이유? - SYSTEM_USER 권한을 할당하고 일반 사용자를 위한 계정에는 SYSTEM_USER 권한을 부여하지 않게 하기.. 2021. 10. 2.
10.equals는 일반 규약을 지켜 재정의하라(3) 1. 반사성 : null이 아닌 모든 참조 값 x에 대해, x.equals(x)는 true다. 2. 대칭성 : null이 아닌 모든 참조 값 x, y에 대해, x.equals(y)가 true면 y.equals(x)도 true다. 3. 추이성 : null이 아닌 모든 참조 값 x, y, z에 대해 x.equals(y)가 true이고 y.equals(z)도 true면 x.equals(z)도 true다. 4. 일관성 : null이 아닌 모든 참조 값 x, y에 대해 x.equals(y)를 반복해서 호출하면 항상 true를 반환하거나 항상 false를 반환함 5. null-아님 : null이 아닌 모든 참조 값 x에 대해, x.equals(null)은 false다. 4. 일관성 - 두 객체가 같다면 (어느 하나.. 2021. 10. 1.
10.equals는 일반 규약을 지켜 재정의하라(2) 1. 반사성 : null이 아닌 모든 참조 값 x에 대해, x.equals(x)는 true다. 2. 대칭성 : null이 아닌 모든 참조 값 x, y에 대해, x.equals(y)가 true면 y.equals(x)도 true다. 3. 추이성 : null이 아닌 모든 참조 값 x, y, z에 대해 x.equals(y)가 true이고 y.equals(z)도 true면 x.equals(z)도 true다. 4. 일관성 : null이 아닌 모든 참조 값 x, y에 대해 x.equals(y)를 반복해서 호출하면 항상 true를 반환하거나 항상 false를 반환함 5. null-아님 : null이 아닌 모든 참조 값 x에 대해, x.equals(null)은 false다. 1. 반사성 - 객체는 자기 자신과 같아야 한.. 2021. 9. 29.
728x90