728x90 반응형 Programming222 [EffectiveJava] Item10 equals는 일반 규약을 지켜 재정의하라 이번 Item10은 equals에 대한 내용에 대한 글이 있습니다 equals 메서드는 재정의하기 쉬워 보이지만 잘못된 구성을 하면 생각하지도 못한 사이드 이펙트때문에 디버깅하는데 문제를 발생시킬 수 있습니다. 문제를 발생시키지 않기 위해서는 애초에 재정의 하지 않는것을 추천드립니다만 언젠가는 구현해야할 내용입니다. 다음 내용은 어떠한 경우에 재정의하지 않아도 되는지 알아보겠습니다. 각인스턴스가 본질적으로 고유하다 인스턴스의 '논리적 동치성'을 검사할 일이 없다 상위 클래스에서 재정의한 equals가 하위 클래스에도 딱 들어맞는다 대부분의 set 구현체는 AbstractSet이 구현한 equals를 상속받아 사용하고 List는 AbstractList, Map은 AbstractMap으로부터 상속받아 사용한.. 2020. 12. 16. [Javascript] velog에서 사용하는 태그 입력 기능 만들어보기 EffectiveJava를 공부하다가 심심해서.. 태그 기능을 한번 만들어봤습니다. 소스코드는 다음과 같습니다 HTML 소스코드 태그를 달아보자! CSS 소스 코드 * { margin: 0; padding: 0; font-size: 14px; } html, body { height: 100%; } #wrap { padding: 20px; } .input-tag { width: 400px; border: 0; } .input-tag:focus { outline: transparent; } #tag-list { margin: 20px 0; } #tag-list > .tag { display: inline-block; padding: 5px 20px; border: 1px solid transparent; b.. 2020. 12. 13. [EffectiveJava] Item 9 try-finally 보다는 try-with-resources를 사용하라 Java 라이브러리에는 close 메서드를 호출하여 직접 닫아줘야 하는 자원들이 많다. 대표적인 예로는 InputStream, OutputStream, java.sql.Connection이 좋은 예이다. 자원을 닫는 방식은 클라이언트가 놓치기 쉬워, 예측할 수 없는 성능 문제로 이어지기도 한다. 이러한 문제에대한 안전망으로 finalizer를 활용하고 있지만 Item8에서 공부한 내용처럼 언제 어떻게 동작할지 모르기 때문에 믿을만하지 못하다. 그래서 전통적으로 많이 사용되어온 방식은 try-finally가 많이 사용되었다. 다음 예제는 실제로 취업 준비시절에 JSP에서 사용하였던 제 코드입니다 public static void close(Connection con, Statement stmt) { try.. 2020. 12. 12. [Effective Java] Item8 finalizer와 cleaner사용을 피하라 Item8 은 finalizer와 cleaner의 사용을 피하라는 내용입니다. 저같은경우는 2개가 어떤건지 모르지만 이번 기회에 공배해보면서 왜 피하라고 하는지 알아보도록 하겠습니다. 일단 finalizer와 cleaner은 자바에서 제공하는 2가지 객체 소멸자이다. finalizer or cleaner은 가비지 컬렉션이 진행될때 더 이상 사용하지 않는 자원에 대한 정리작업을 진행하기 위해 사용된다고 한다. finalizer와 cleaner은 각각의 문제가 있다. finalizer 예측할 수 없다, 상황에 따라 위험할 수 있어 일반적으로 불필요하다. 오동작, 낮은 성능, 이식성 문제의 원인이 되기도 한다. 쓰임새가 있긴 하지만 기본적으로 쓰지 말아야 한다 . cleaner finalizer보다는 덜 위험.. 2020. 12. 11. 이전 1 ··· 7 8 9 10 11 12 13 ··· 56 다음 728x90 반응형