당근마켓에서 6,000원 주고 구매 SQL 쿼리 안쓰다보니 기억이 안나서 한 번 다시 봤어야 해서 장바구니에 담아놓는 책인데 마침 당근마켓에 있길래 구매 완료.. 그래도 다른 책 보단 덜 어렵기를 바라며,, 책 산것들 중간 보고) 알고리즘 5장, 이펙 아이템 15 쯤 ... 8/11 다 읽음 전체적인 설명이 잘되어있어서 보기 좋다. 근데 쿼리문을 잘 사용하긴 어려워 보인다 왜냐면 책이 얇다보니 예제들이 별로 없다. JOIN 이나 어려운 쿼리들은 알아서 따로 추가로 공부해야 할 필요가 있다. 비슷한 책중에 데이터베이스 첫걸음 이라고 있는데 당근에 올라오면 사야겠따 ..
package java.lang; import java.util.*; public interface Comparable { public int compareTo(T o); } compareTo() 동치성비교 순서 비교 제네릭 Comparable 구현시 해당 클래스의 인스턴스들에는 자연적인 순서가 있음을 뜻한다. Arrays.sort(a); 와 같이 손쉽게 정렬이 가능하다. 자바 플랫폼 라이브러리의 모든 값 클래스와 열거타입이 Comparable을 구현했다. 이 인터페이스를 활용하는 수많은 제네릭 알고리즘과 컬렉션의 힘을 누릴 수 있다. 알파벳, 숫자, 연대 같이 순서가 명확한 값 클래스를 작성한다면 반드시 Comparable 을 구현하자. compareTo() 규약 이 객체와 주어진 객체의 순서를 비교한..
다룰 내용 clone 메서드를 잘 동작하게끔 해주는 구현 방법 언제 그렇게 해야 하는지, 가능한 다른 선택지에 관해 Cloneable Interface 가 하는 일 메서드 하나 없는 인터페이스 Object.clone()의 동작 방식을 결정한다. Cloneable을 구현한 클래스의 인스턴스에서 clone을 호출하면 그 객체의 필드들을 하나하나 복사한 객체를 반환하며, 그렇지 않은 클래스의 인스턴스에서 호출시 CloneNotSupportedException을 던진다. clone 규약 // 이 객체의 복사본을 생성해 반환한다. // 복사의 정확한 뜻은 그 개체를 구현한 클래스에 따라 다를 수 있다. // true x.clone() != x // true x.clone().getClass() == x.getCl..
toString 규약 간결하면서 사람이 읽기 쉬운 형태의 유익한 정보를 나타내라 모든 하위 클래스에서 이 메서드를 재정의하라 Object.toString() public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } IDE에서의 toString() 재정의 // PhoneNumber.class @Override public String toString() { return "PhoneNumber{" + "areaCode= '" + areaCode + '\'' + ", prefix='" + prefix + '\'' + ", lineNum=..
equals를 재정의한 클래스 모두에서 hashCode도 재정의해야 한다. 그렇지 않으면 hashCode 일반 규약을 어기게 되어 해당 클래스의 인스턴스를 hashMap, hashSet 같은 컬렉션의 원소로 사용할 때 문제를 일으킬 수 있다. hashCode 규약 equals 비교에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 실행되는 동안 그 객체의 hashCode 메소드는 몇 번을 호출해도 같은 값을 반환해야 한다. equals()가 true 를 반환하면, 두 객체의 hashCode는 같은 값을 반환해야 한다. equals()가 false 를 반환해도, 두 객체의 hashCode가 다를 필요는 없다. 단, 다른 객체에 대해서는 다른 값을 반환해야 해시테이블의 성능이 좋아진다. 좋은 hashCod..
아래에 상황 중 하나에 해당한다면 equals 는 재정의 하지 않는 것이 최선이다. 각 인스턴스가 본질적으로 고유하다. 값을 표현하는게 아니라 동작하는 개체를 표현하는 클래스 ex) Thread 인스턴스의 '논리적 동치성'을 검사할 일이 없다. 상위 클래스에서 재정의한 equals 가 하위 클래스에도 딱 들어맞는다. 예를들어 대부분의 Set, List 구현체들은 AbstractSet, AbstractList가 구현한 equals 를 그대로 사용한다. 클래스가 private 이거나 package-private이고 equals 메소드를 호출할 일이 없다. // euqals가 실수로라도 호출되는걸 막고싶을 때 @override public boolean equals(Obejct o) { throw new As..
자바 라이브러리에는 close 메소드를 호출해 직접 닫아줘야 하는 자원이 많다. ex) InputStream, OutputStream, java.sql.Connection 자원 닫기는 클라이언트가 놓치기 쉬워 예측할 수 없는 성능 문제로 이어지기도 한다. 상당수가 finalizer 를 안전망으로 사용하지만 믿을만하지 못하다. (아이템 8) 이전에는 자원이 제대로 닫힘을 보장하는 수단으로 try-finally 를 주로 사용했다. try-finally // 자원이 1개인 경우 static String firstLineOfFile(String path) throws IOException { BufferedReader br = new BufferedReader(new FileReader(path)); try {..
자바에서는 두 가지 객체 소멸 자를 제공한다. finalizer 오동작, 낮은 성능 예측할 수 없고 위험하여 일반적으로 불필요하다. 자신을 수행할 스레드를 제어할 수 없다. finalizer 공격에 노출되어 심각한 보안문제를 일으킬 수 있다. 생성자나 직렬화 과정에서 예외가 발생하면, 악의적으로 하위 클래스의 finalizer가 수행될 수도 있다. GC가 수집하지 못하게 막을 수 있다. 위와 같은 이유로 Java9 에서 deprecated 되었고 새로운 대안으로 cleaner를 소개한다. cleaner finalizer 보다는 덜 위험하다. 하지만 여전히 예측할 수 없고, 느리고, 일반적으로 불필요하다. 자신을 수행할 스레드를 제어할 수 있다. 공통사항 즉시 수행된다는 보장이 없다. 실행되기까지 얼마나 ..
- Total
- Today
- Yesterday
- GCP
- http
- 킹수빈닷컴
- java
- dreamcoding
- JS 딥다이브
- 패스트캠퍼스 컴퓨터공학 완주반
- JPA 연관관계 매핑
- ㅇㄷㅇㅈ
- BOJ
- 드림코딩
- REST API
- 프로그래머스 SQL
- 백기선 스터디
- 김영한 JPA
- js api
- 프로그래머스
- HTTP 완벽가이드
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 백준
- 이펙티브자바
- 김영한 http
- Spring Security
- 이펙티브자바 스터디
- js array
- js promise
- 이펙티브자바 아이템59
- 모던자바스크립트
- 이펙티브자바 아이템60
- HTTP 완벽 가이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |