본문 바로가기

전체 글152

Effective Java 아이템 14. Comparable을 구현할지 고려하라 Effective Java 3판을 학습하며 요약한 내용입니다. 자세한 내용은 책을 참고해주시기 바랍니다. Comparable 인터페이스 Comparable은 동치성 비교와 더불어 순서까지 비교하는 인터페이스이다. 인터페이스에는 compareTo 메서드가 정의되어 있다. Object 클래스의 equals와 성격이 비슷하지만 차이점으로는 순서를 비교할 수 있고, 제네릭이다. public interface Comparable { public int compareTo(T o); } Comparable 인터페이스를 구현한 클래스는 인스턴스들간에 자연적인 순서가 있음을 뜻한다. String 클래스는 Comparable 인터페이스를 구현하고 있기 때문에 다음과 같이 쉽게 정렬할 수 있다. String[] names .. 2019. 4. 8.
Effective Java 아이템 13. clone 재정의는 주의해서 진행하라 Effective Java 3판을 학습하며 요약한 내용입니다. 자세한 내용은 책을 참고해주시기 바랍니다. Clonable 인터페이스 Cloneable은 어떤 객체가 복제(clone)을 허용한다는 사실을 알리기 위해서 만들어진 믹스인 인터페이스이다. 인터페이스 내부를 살펴보면 clone 메서드가 선언되어 있지 않고, Object 클래스에 clone 메서드가 protected로 선언되어 있다. Cloneable 인터페이스는 Object 클래스의 clone 메서드가 어떻게 동작할 것인지에 대해 결정한다. Cloneable을 구현한 클래스의 인스턴스에서 clone을 호출하면, 해당 객체를 필드 단위로 복사한 객체를 반환한다. 반대로 Cloneable을 구현하지 않으면, CloneNotSupportedExcept.. 2019. 4. 8.
Effective Java 아이템 12. toString을 항상 재정의하라 Effective Java 3판을 학습하며 요약한 내용입니다. 자세한 내용은 책을 참고해주시기 바랍니다. toString 메서드 java.lang.Object 클래스가 toString 메서드가 제공하지만, 해당 메서드를 호출하면 반환되는 문자열은 사용자가 보고 싶어하는 문자열 값 형태가 아니다. 값은 클래스의 이름과 @ 문자 기호와 16진수로 표현된 해시 코드가 붙은 문자열이 반환된다. 다음 코드는 toString 구현하지 않은 클래스의 toString 메서드를 호출하는 예제이다. public class Main { public static void main(String[] args) { Product product = new Product(1, "Toy"); // ch10.Product@70dea4e .. 2019. 4. 8.
Effective Java 아이템 11. equals를 재정의하려거든 hashCode도 재정의하라 Effective Java 3판을 학습하며 요약한 내용입니다. 자세한 내용은 책을 참고해주시기 바랍니다. 아이템 10에서 equals 메서드 재정의 규약에 대해서 알아봤다. 주의사항으로 equals 메서드를 재정의하는 경우 hashCode 메서드도 재정의해야 한다고 했다. equals를 재정의한 클래스에서는 hashCode도 재정의해야 한다. 이를 어길 경우에 HashMap, HashSet, HashTable 와 같은 해시 기반의 컬렉션에서 오동작이 발생한다. 다음은 Object 명세에서 발췌한 규약이다. 응용프로그램 실행 중에 같은 객체의 hashCode를 여러 번 호출하는 경우에 equals가 사용하는 정보들이 변경되지 않았다면, 언제나 동일한 해쉬값을 반환한다. 다만 프로그램이 재시작한 경우에는 동.. 2019. 4. 8.
Effective Java 아이템 10. equals는 일반 규약을 지켜 재정의하라 Effective Java 3판을 학습하며 요약한 내용입니다. 자세한 내용은 책을 참고해주시기 바랍니다. equals 메서드는 재정의하기 쉬워 보이지만 잘못된 재정의를 통해 프로그램 오류를 일으킬 수 있다. 이러한 문제를 회피하기 위한 가장 좋은 방법은 아예 재정의를 하지 않는 것이다. 그냥 두면 해당 인스턴스는 오직 자기 자신과만 같게 된다. equals 재정의 하기전 확인해야 할 사항 다음과 같은 조건 중 하나에 해당한다면 equals 메서드를 재정의하지 않는 것이 최선이다. 각각의 객체가 본질적으로 고유하다. 클래스에 논리적 동일성 검사 방법이 필요하지 않다. 상위 클래스에서 재정의한 equals가 하위 클래스에서도 사용하기에 적당하다. 클래스가 private 또는 package-private로 선.. 2019. 4. 8.
Java 시스템 속성 정보 가져오기 Java에서는 시스템 속성 정보를 가져올 수 있도록 System 클래스를 제공한다. System 클래스의 정적 메서드 getProperty를 이용하면 시스템 속성 정보를 가져올 수 있다. 시스템 속성 종류로는 OS 줄바꿈 문자, Java 버전, 사용자 작업 디렉토리, 사용자 홈 디렉토리 등이 있다. 시스템 속성 값 가져오기 System.getProperty 메서드의 인자로 시스템 속성의 키 값을 넘겨주면 해당하는 속성 값을 반환한다. String value = System.getProperty("key"); 시스템 프로퍼티 키 종류 Key Meaning file.separator Character that separates components of a file path java.class.path Pat.. 2019. 4. 8.
Python 파일 읽기 파이썬 자료구조 강의 중 파일 읽기 강의를 듣고 정리한 내용 open() 메서드 파일을 읽고 쓰는 작업을 하기 위해서 open() 메서드를 사용한다. open() 메서드에 인자로 파일 이름을 전달하면, 파일에 접근할 수 있는 핸들러를 반환한다. 핸들러를 통해서 파일의 내용을 읽거나 새로운 내용을 쓸 수 있다. filename = 'text.txt' fhand = open(filename, 'r') print(fhand) 개행 문자 행을 바꾸는 문자인 개행 문자는 '\n'이다. greet = 'Hello\nJayden' print(greet) print(len(greet)) # Hello # Jayden # 12 파일 문장 읽기 파일 핸들을 통해서 파일에 있는 내용을 순차적으로 읽을 수 있다. fhand .. 2019. 4. 8.
티베로 Recycle Bin 파라미터 설정 및 조회 티베로 Recycle Bin 기능 티베로 데이터베이스에서 Recycle Bin 기능을 사용하려면 파라미터 설정을 해야 한다. 티베로 데이터베이스 설치 위치에서 Config 폴더 아래에는 .tip 파일이 있다. 해당 파일을 텍스트 편집기로 열어서 아래 문장을 추가한다. USE_RECYCLEBIN 기본값은 ‘N’ 이다. 파라미터 설정을 하고 난 뒤, 다시 티베로 데이터베이스를 기동 시키면 된다. Recycle Bin 파라미터 설정 DB_RECYCLE_CACHE_SIZE=100 USE_RECYCLEBIN=Y Recycle Bin 뷰 조회 ALL_RECYCLEBIN 뷰 조회를 통해 임시로 삭제된 오브젝트 목록을 확인할 수 있다. -- RECYCLE BIN 목록 조회 SELECT * FROM ALL_RECYCLE.. 2019. 4. 7.
백준알고리즘 1929번 소수 구하기 1929번 소수 구하기 문제는 소수를 찾는 알고리즘 문제이다. 소수는 약수로 1과 자기 자신만을 가지는 정수이다. 예를 들어, 2의 약수는 1, 2이며, 4의 약수는 2, 2이다. 4의 약수로 1, 4가 아니기 때문에 4는 소수가 아니다. 반대로 2는 1과 자기 자신인 2를 가지고 있기 때문에 소수이다. 소수를 구하는 알고리즘으로는 제곱근을 이용한다. N이 주어졌을 때, 2부터 N의 제곱근 범위의 숫자 중 나누어지는 경우가 있다면 해당 N은 소수가 아닌것으로 판단할 수 있다. for(int i = 2; i 2019. 4. 7.