book review

ComparableComparable 인터페이스는 타입을 받는 인터페이스이며 메서드의 타입은 컴파일시점에 결정된다.순서를 고려해야하는 값 클래스를 작성한다면 반드시 Comparable 인터페이스를 구현하여, 인스턴스들을 쉽게 정렬, 검색, 비교 가능한 컬렉션과 어우러지도록하는게 좋다. compareTo 규약 compareTo 규악은 equals 규악과 비슷하나 compareTo 메서드는 각 필드가 동치인지 비교하는게 아닌 순서를 비교한다.compareTo는 주어진 객체의 순서를 비교하며, 주어진 객체보다 작으면 음의 정수 같으면 0 크면 양의 정수를 반환한다.만약 비교할 수 없는 타입의 객체가 주어지면 ClassCastException을 던지며 추가 규악은 아래와 같다.- Comparable을 구현한 클..
Cloneable 인터페이스Java에는 Cloneable이라는 믹스인 인터페이스가 존재가 있다.해당 인터페이스를 찾아보면 아무것도 없는걸 볼 수 있는데,  해당 인터페이스의 용도는 Cloneable 인터페이스로 구현된 클래스에서 clone메서드를 호출할때  안전하게 Object.clone()메서드가 해당 클래스의 필드를 복사 할 수 있음을 나타낸다.만약 Cloneable을 사용하지않는 클래스에서 clone을 호출하게된다면 CloneNotSupportException을 발생시킨다. clone 메소드의 규약clone 메서드가 usper.clone이 아닌, 생성자를 호출해 얻은 인스턴스를 반환해도 컴파일러는 불평하지 않음clone을 재정의한 클래스가 final이라면 걱정해야 할 하위 클래스가 없으니 아래 관례..
웹 캐시웹 캐시는 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP장치이다.웹 요청이 캐시에 도착했을 때, 캐시된 로컬 사본이 존재한다면, 그 문서는 원 서버가 아니라 그 캐시로부터 제공된다.불필요한 데이터 전송불필요한 데이터 전송은 대역폭을 잡아먹고, 전송을 느리게하며, 웹 서버의 부하룰 준다.캐시를 이용하면 , 첫 번째 서버 응답은 캐시에 보관된다.캐시된 사본이 뒤이은 요청들에 대한 응답으로 사용 될 수 있기 때문에 원 서버가 중복해서 트래픽을 주고 받는 낭비가 줄어들게 된다.대역폭 병목캐시는 또한 네트워크 병목을 줄여 줄 수 있다.갑작스러운 요청 쇄도캐싱은 갑작스러운 요청 쇄도에 대처하기 위해 특히 중요하다.갑작스러운 사건으로인해 많은사람이 거의 동시에 웹 문서에 접근할때 캐싱은 아주 유용하다...
웹 서버웹 서버는 HTTP 요청을 처리하고 응답을 제공한다.“웹 서버” 라는 용어는 웹 서버 소프트웨어와 웹페이지 제공에 특화된 장비(컴퓨터와 같은) 양쪽 모두를 가리킨다.웹 서버 구현웹 서버는 HTTP 및 그 외 관련된 TCP 처리를 구현한 것이다.웹 서버는 HTTP 프로토콜을 구현하고, 웹 리소스를 관리하고, 웹 서버 관리 기능을 제공한다.웹 서버는 TCP 커넥션 관리에 대한 책임을 운영체제와 나눠서 한다.다목적 소프트웨어 웹 서버다목적 소프트웨어 웹 서버는 네트워크에 연결된 표준 컴퓨터 시스템에서 동작한다.웹 서버는 여러 가지 형태로 가능하다.다목적 소프트웨어 웹 서버를 표준 컴퓨터 시스템에 설치하고 실행 할 수 있다.사용자에게 판매할 전자 기기 안에 몇개의 컴퓨터 칩 만으로 구현된 웹 서버를 내장..
TCP 커넥션커넥션이 맺어지게되면 클라이언트와 서버 컴퓨터 간에 주고받는 메세지들은 손상 혹은 손실이되거나 순서가 바뀌지않고 전달된다.브라우저에서 URL을 입력하면 발생하는일신뢰할 수 있는 데이터 전송 통로인 TCPTCP 커넥션은 인터넷을 안정적으로 연결해주며 순서에 맞게 정확히 전달된다.TCP 스트림은 세그먼트로 나뉘어 IP 패킷을 통해 전송된다TCP는 IP패킷이라고 불리는 작은 조각을 통해 데이터를 전송한다.IP패킷 구성IP패킷은 IP 패킷헤더, TCP 세그먼트 헤더, TCP 데이터 로 이루어져있다.IP 패킷헤더: 발신지와 목적지 IP 주소, 기타 플래그 값을 가지고있다.TCP 세그먼트헤더: TCP 포트번호, TCP제어 플래그, 데이터 무결성을 검사하기위한 숫자값을 포함한다.TCP 데이터: 실제 데이..
HTTP 메세지HTTP 메세지는 HTTP 애플리케이션 간에 주고 받은 데이터의 블록이다.블록들은 메세지의 내용과 의미를 설명하는 텍스트 메타 정보로 시작하고 다음에는 선택적으로 데이터가 올 수 있다.인 바운드 , 아웃 바운드 , 업스트림 , 다운 스트림 은 메세지의 방향을 의미하는 용어이다.메세지는 원 서버 방향을 인바운드로 하여 송신한다.메세지가 원 서버로 향하는 것은 인바운드로 이동하는것 이고, 모든 처리가 끝난 뒤에 메세지가 사용자 에이전트로 돌아오는 것은 아웃바운드 로 이동하는 것 이다.다운 스트림으로 흐르는 메세지HTTP 메세지는 강물과 같이 흐른다, 요청 메세지나 응답 메세지나 관계없이 모든 메세지는 다운 스트림으로 흐른다.메세지의 각 부분HTTP 메세지는 단순한, 데이터의 구조화 된 블럭이다..
URL(Uniform Resource Locator)은 인터넷 리소스를 가르키는 표준 이름이다.URLURL은 브라우저가 정보를 찾는데 필요한 리소스의 위치를 가리키며, URL을 이용해 사람과 애플리케이션이 수십억개의 리소스를 찾고 사용하며 공유 할 수 있다.또 URL은 HTTP프로토콜이 아닌 다른 가용한 프로토콜을 사용할 수도 있다.URL 문법URL로 인터넷상의 모든 리소스를 찾을 수 있지만, 그 리소스들은 다른 스킴을 통해 접근 할 수 있으며, URL문법은 스킴에 따라서 달라진다.대부분의 URL스킴의 문법은 일반적으로 9개의 부분으로 나뉜다.//:@:/;?#컴포넌트설명기본값스킴리소스를 가져오려면 어떤 프로토콜을 사용하여 서버에 접근해야하는지 가리킨다. ex) http, ftp, mailto없음사용자 이..
toString을 항상 재 정의하라 Object의 toString 메서드가 우리가 생성한 클래스에 적합한 문자열을 반환하는 경우는 거의 없다. 자바 문서에 Object 객체 toString 메서드를 확인해보면 결과값으로 간결한 정보를 담아 누구나 쉽게 읽을 수 있도록 해야하며 모든 서브 클래스가 재 정의하는걸 추천한다고 적혀있다. println, printf, 문자열 연결 연산자 (+), assert 구문같은 경우에는 객체를 호출할때 자동으로 toString 메서드를 호출한다. 그래서 toString 메서드를 잘 구현한 클래스는 사용하기도 편리하고 디버깅할때도 매우 유용하다. toString 정의 정적 유틸 클래스는 제외하고 실전에서는 사람 이름, 나이, 전화번호 등과 같은 객체가 가진 주요 정보들을 모..
equals를 재정의하려거든 hashCode도 재정의 해라 equals를 재정의한 클래스 모두 hashCode를 재 정의 해야한다. 재 정의 하지않으면 hashCode 일반 규약을 어기게 되는거고 HashMap이나 HashSet을 사용할 때 문제가 발생할 수 있다. 자바 문서에 Object 객체 hashCode 메서드에는 이런식으로 명시 되어있다. - equals비교에 사용되는 정보가 변경되지 않았다면, 어플리케이션 실행 중 hashCode를 몇번 호출하더라도 동일한 값을 반환 해야한다. - equlas(Object)가 두 객체를 같다고 판단하면, 두 객체의 hashCode는 똑같은 값을 반환해야 한다. - eqauls(Object)가 두 객체를 다르다고 판단했을때도 다른 hashCode를 반환 할 필요..
equals는 일반 규약을 지켜 재정의하라 equals 메서드를 재 정의 할떄는 반드시 정의된 규약을 지키며 재 정의를 해야한다. 만약 이 규약을 어기면 그 객체를 사용하느 다른 객체들이 어떻게 반응할지 알 수 없다. equals 메서드의 일반 규약 equals 메서드는 동치관계를 구현하며 다음을 만족한다. 반사성(reflexlvity) 반사성은 null이 아닌 모든 참조 값 x에대해, x.equals(x)는 true이다. 단순히 말하면 객체는 자기 자신과 비교했을떄 항상 같아야한다는 것이다. 대칭성(symmetry) 대칭성은 null이 아닌 모든 참조값 x,y에 대해 x.equals(y)가 true면 y.equals(x)는 true이다. 두 객첸느 서로에 대한 동치 여부에 대해 똑같이 대답 해야한다는 ..
dobidugi
'book review' 카테고리의 글 목록