규칙 8. equals를 재정의 할 때는 일반 규약을 따르라
equals는 생각보다 재정의 하기 어렵다. 실수로 인한 결과는 끔찍해 질 수 있다. 다음중 하나라도 만족할 경우에는 equals를 재정의 하지 않아도 된다.1.각각의 객체가 고유하다.(ex. Thread 객체)2.클래스에 논리적 동일성 검사방법이 있건 없건 상관없다(ex. Random class)3.상위클래스에서 재정의한 equals가 하위 클래스에서 사
equals는 생각보다 재정의 하기 어렵다. 실수로 인한 결과는 끔찍해 질 수 있다. 다음중 하나라도 만족할 경우에는 equals를 재정의 하지 않아도 된다.1.각각의 객체가 고유하다.(ex. Thread 객체)2.클래스에 논리적 동일성 검사방법이 있건 없건 상관없다(ex. Random class)3.상위클래스에서 재정의한 equals가 하위 클래스에서 사
종료자는 예측 불가능하며 대체로 위험하고 일반적으로 불필요하다. 종료자의 단점 및 주의할 점1.C++의 소멸자와는 다른개념이다. 종료자는 즉시 실행되리라는 보장이 전혀 없다. 그러므로 긴급한 작업을 종료자 안에서 처리하면 안된다. 종료자의 실행시점은 GC 알고리즘에 좌우되는데 이는 JVM 구현마다 크게 다르다. 또한 클래스에 종료자를 붙여놓으면 객체 메모리
GC가 메모리 관리를 알아서 해주면 메모리관리의 중요성을 잊게 될 수도 있는데 그러지 말자 만기참조를 없애라더이상 참조되지 않는 만기참조의 경우 제거해주지 않으면 의도치 않은 객체 보유문제(실수로 객체 참조를 계속 유지하는 경우 해당 객체만 쓰레기 수진에서 제외되는것이 아니라 그객체를 통해 참조되는 다른 객체들도 쓰레기 수집에서 제외되는것)를 유발할 수 있
기능적으로 동일한 객체는 매번 만드는것보다 재사용하는 편이 낫다.가령 String s = new String(“test”);라는 문장을 반복문안에 넣을경우 매번 String 객체가 생성된다.이는 String s = “test”; 로 대체하는것이 낫다. 이는 실행할 때마다 객체를 만드는 대신 동일한 String 객체를 사용하며 같은 JVM안
정적 메서드나 필드만 모은 클래스가 필요한 경우는 다음 세가지로 볼 수 있다.1.자바의 기본 자료형 값 또는 배열에 적용되는 메서드를 한군데 모아둘 때.(java.lang.Math, java.lang.Arrays)2.특정 인터페이스를 구현하는 개체를 만드는 팩터리 메서드 등의 정적 메서드를 모아놓을 때(java.util.Collection)3.final 클
Write the docs밋업도 열고 구인구지도 하고 문서화에 대한 다양한 이야기를 진행한다. 글쓰는 개발자 모임, 글또변성윤님(쏘카 데이터 그룹 머신러닝 엔지니어) 네이버 블로그를 통해 글을 꾸준히 쓰던 습관 형성까먹는게 싫어서 개발 블로그 시작 글또?- 글쓰는 똘아이가 세상을 바꾼다10마넌을 넣어넣고 주니어개발자들 끼리 진행했다. 글을 안쓰면 마넌씩 삭
IoC?의존성이 뒤바뀐것. 어떻게 바뀐거야?내가 만드는것이 아니라 밖에서 넣어주는 형태 1234567class ShController { private ShRepository repo; public ShController(ShRepository repo) { this.repo = repo; &
프로세스 관리(CPU 스케줄링,동기화), 메인메모리 관리(디멘딩 페이지), 파일관리(연속,연결,색인할당) 디스크의 헤더의 움직이는데 오래걸린다. 물론 ms는 느린게 아니지만 컴퓨터의 수준에서 느린것이다.200개의 실린더가 있을 때 어떻게 조금만 움직일 수 있을까?맨안에 원이 트랙1 그다음이 2… 다중프로그래밍 환경에서의 디스크 큐(disk queue)
보조기억장치중 하드디스크를 배운다동심원이 있고 원판이 있다. 원판에 자성물질을 발라서 디스크 헤더에 전기를 흘려 기록을 하고 읽을 때는 고속으로 회전시켜 코일에 전류가 유도되는데 이를통해 읽는다.이를 트랙이라 하고 보통 디스크는 앞 뒤로 쓰는데 트랙이라는 용어보다는 실린더라는 용어를 많이 쓰고 있다.트랙을 쪼개서 섹터라 한다 섹터는 512b정도 된다. 이를