본문 바로가기
반응형

전체 글145

[회고] 2022년 3분기 2022년 3분기 회고를 맞이하였습니다. 1분기 그리고 2분기 이어서 포기하지 않고 3분기도 회고의 글을 쓰고 있습니다. 3분기 회고는 최근에 공유받은 회고 방법에 대해서 읽어보고 해당 방법으로 진행해보려고 합니다. 우아한 형제들 - 기술블로그 : 팀 문화의 탄생 그리고 2분기를 회고하면서 3분기 목표를 다음과 같이 설정하였습니다. 목표 다음 분기전까지 목표는 다음과 같습니다. 글또 100% 참여하기! 1일1커밋 꾸준히 진행 매일 독서하여 한달에 한권씩 읽기 결과 목표 결과 설명 글또 100% 참여하기! 100% 한번도 빠지지 않고 꾸준히 참여 중 1일1커밋 꾸준히 진행 98.9% 3개월(92일)동안 하루(1일) 커밋 못함 매일 독서하여 한달에 한권씩 읽기 35% 3권 중 2권 진행 중 독서의 대한 결과.. 2022. 9. 18.
[아이템9] try-finally 보다는 try-with-resources 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다 자바 라이브러리에는 close 메소드를 호출해 직접 닫아줘야 하는 자원들이 있습니다. InputStream, OutputStream, Connection 등이 좋은 예입니다. 이러한 자원 닫기는 놓치기 쉬워서 예측할 수 없는 성능 문제로 이어지기도 합니다. 이러한 자원 중 상당수가 안전망으로 finalizer를 활용하고 있지만 그것은 믿을만 하지 못합니다. 전통적으로는 자원이 제대로 닫힘을 보장하는 방법으로 try-finally 를 사용하였습니다. static String firstLineOfFile(String path) throws IOException { BufferedReader br = new.. 2022. 9. 3.
[아이템8] finalizer와 cleaner 사용을 피하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. Finalizer는 예측 불가능하고, 위험하며, 대부분 불필요합니다. 그걸 쓰면 이상하게 동작하기도 하고, 성능도 안좋아지고, 이식성에도 문제가 생길 수 있습니다. 딱 두가지 경우 안전망 역할로 자원을 반납하고자 하는 경우. 네이티브 리소스를 정리해야 하는 경우. 일단 자바 9에서는 Finalizer가 deprecated 됐으면 Cleaner라는게 새로 생겨서 Finalizer 보다 덜 위험하지만(별도의 쓰레드를 사용하니까), 여전히 예측 불가능하며, 느리고, 일반적으로 불필요합니다. 단점 1 언제 실행될지 알 수 없습니다. 어떤 객체가 더이상 필요 없어진 시점에 그 즉시 finalizer 또는 cl.. 2022. 9. 3.
[아이템7] 다 쓴 객체 참조를 해제하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. 자바는 가비지 컬렉터를 통해서 다 쓴 객체를 회수해 갑니다. 하지만 이러한 장점으로 인하여 자칫 메모리 관리에 더 이상 신경쓰지 않아도 된다고 오해할 수 있습니다. 스택을 간단히 구현한 다음 코드를 보도록 하겠습니다. 스택 코드 // Can you spot the "memory leak"? public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { this.elements = new Object[DEFAUL.. 2022. 9. 3.
[아이템6] 불필요한 객체 생성을 피하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. 똑같은 기능의 객체를 매번 생성하는 것 보다는 처음 생성된 객체를 통해서 재사용하는 편이 좋을때가 많습니다. 특히 불변객체는 언제든지 재사용할 수 있습니다. 문자열 객체 생성 극단적인 예를 들어보겠습니다. String str = new String("extreme") 위 문장은 실행될때마다 String 인스턴스를 새롭게 만듭니다. 만약 위 문장을 반복문 또는 빈번히 호출하게 된다면 String 인스턴스는 계속 생겨나게 됩니다. 그래서 다음과 같이 사용해야 합니다. String str = "extreme"; 위 문장은 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용합니다. 처음 .. 2022. 9. 3.
[아이템5] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. 많은 클래스는 하나 이상의 자원에 의존하게 됩니다. 책에 있는 예제인 통해 맞춤법 검사기에 대해서 알아보도록 하겠습니다. 부적절한 구현 아래는 static 유틸 클래스를 통해서 구현하였습니다. public class SpellChecker { private static final Lexicon dictionary = new KoreanDictionary(); private SpellChecket() {} // 객체 생성 방지 public boolean isValid(final String word) { throw new UnsupportedOperationException(); } public Lis.. 2022. 9. 3.
반응형