전체 글
[Java] Checked Exception vs Unchecked Exception
아무리 생각해도.. 티스토리의 마크다운은 좀 많이 불편하다.. 그렇다고 다시 github.io로 돌아갈 수도, velog로 돌아갈 수도 없는 노릇이지만.... 이럴 때 어떻게 해야하나요,, 추천 부탁드립니다 :( 오늘은 제이슨의 세번째 자바 기초 강의였던 Java Exception에 대해 듣고, 정리한 내용이다. 우선 Exception의 상속 구조는 다음과 같다. 이미지는 우아한테크코스 수업 자료에서 가져왔는데, 문제가 된다면 얼른! 지우겠습니다 Throwable을 상속하고, Error, Exception이 존재한다. 에러의 경우는 개발자가 에러라는 것을 직접 사용하는 것은 드물다. 여기서 에러를 직접 사용하는 것은 무엇을 의미할까? 우리가 프로그램을 짤 때, 어떤 부분에서 문제가 발생될 것으로 예상될 ..
[논문리뷰] Accurate Image Super-Resolution Using Very Deep Convolutional Networks (VDSR)
이 논문은 SRCNN의 한계를 개선하고 SISR 문제에 딥러닝을 적용한 모델을 제안한다. 우선, SRCNN은 다음과 같은 한계를 가진다. 1. it relies on the context of small image regions. 2. training converges too slowly. 3. the network only works for a single scale. 더보기 하나의 모델은 single scale에 대해서만 적용이 가능해서, 새로운 scale이 요구되는 경우, 모델을 새로 학습해야합니다. 2, 3번에 비해 1번이 이해가 잘 되지 않아서, 찾아서 정리해보았다. SRCNN은 작은 영역의 context에 의존한다. 그 이유는 레이어가 단지 3개이기 때문이다. 레이어가 얕아 좁은 이미지 영역에..
[Effective Java] 아이템 6. 불필요한 객체 생성을 막아라.
아이템 6. 불필요한 객체 생성을 막아라. 똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다. 특히 불변 객체는 언제든 재사용할 수 있다. 실행될 때 마다 인스턴스를 새로 만드는 다음과 같은 예제는 절대 추천하지 않는다. 우리는 첫번째 코드 대신, 개선된 두번째 코드를 통해 생성되는 인스턴스의 수를 줄일수도 있을 뿐만 아니라 모든 코드가 같은 객체를 사용함을 보장할 수 있다. String s = new String("joanne"); // NOPE ! String s = "joanne"; // BETTER 우리가 아무렇지 않게 사용하는 객체 중에는 생성 비용이 아주 비싼 객체도 더러 있다. 그것은 바로바로! Pattern 객체이다. Pattern 인스턴스는 입력받은 정..
[논문 리뷰] SRCNN의 Hyperparameter에 대해 알아보자.
논문을 바탕으로 하여 SRCNN의 Hyperparameter에 대해 알아보고, 왜 해당 값으로 정해졌는지에 대해 분석해보자. $$F_{1}(Y) = max(0, W_{1}*Y+B_{1})$$ W1, B1 represent the filters and biases respectivley. W1 corresponds to n1 filters of support c*f1*f1, where c is the number of channels in the input image, f1 is the spatial size of a filter. Intuitively, W1 applies n1 convolutions on the image, and each convolution has a kernel size c*f1*..
[Interpolation] About Bicubic, Bilinear Interpolation
interpolation에 대해 이해한 내용을 글로 요약해보자. Interpolation은 보간법으로서 알려진 값을 가진 두 점 사이 어느 지점의 값이 얼마일지를 추정하는 기법이다. linear interpolation에서부터 알아보자면, linear interpolation은 알려진 두 점 사이의 모르는 한 점 c를 추정하기 위해, 알려진 두 점을 잇는 직선에 해당 점 c를 대입하여 그 값을 유추해낸다. 이와 비슷한 방법으로 cubic interpolation에 대해서 알아보자. cubic은 알려진 두 점 사이 모르는 한 점의 값을 추정하기 위해서 3차 함수를 이용한다. 3차 함수를 이용하기 위해서는 변수가 4개이므로 총 4개의 점을 참조해야 우리가 원하는 값을 유추해낼 수 있다. 따라서 알려진 점 이..
[Effective Java] 아이템 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라.
아이템 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라. 하나 이상의 자원에 의존하는 클래스의 경우에는 다음과 같이 구현된 경우를 드물지 않게 볼 수 있다. // 정적 유틸리티를 잘못 사용한 예 public clas SpellChecker { private static final Lexicon dictionary = ...; private SpellChecker() {} //객체 생성 방지 public static boolean isValid(String word) { ... } public static List suggestions(String type) { ... } } // 싱글턴을 잘못 사용한 예 public clas SpellChecker { private final Lexicon d..
[Effective Java] 아이템 4. 인스턴스화를 막으려거든 private 생성자를 사용하라
아이템 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 만약, 정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 있을 것이다. 예를 들어, java.lang.Math와 java.util.Arrays처럼 기본 타입 값이나 배열 관련 메서들을 모아놓을 수 있다. 또한 java.util.Collections처럼 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메서드를 모아놓을 수 있다. 또는 final 클래스와 관련한 메서드들을 모아놓을 때에도 사용한다. 이러한 정적 멤버만을 담은 유틸리티 클래스는 인스턴스로 만들지 않고 사용하는 것이 낫다. (🤔 나는 여태까지 뭣도 모르고 정적 팩토리 메서드로 사용했는데, 맞았다니.. 다행이다) 나 말고도, 인스턴스 해당 유틸리티 클래스를 인스턴스화..
[Effective Java] 아이템 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라
Effective Java를 주문해놓고, 이 책 또한 장식용이 될 뻔 했는데 우테코 @로키의 책 읽기 리스트?에 함께 하고 싶어서 열심히 읽게 되었다. 역시 함께하는 사람이 있는 것은 매우 중요하고, 우테코에는 이렇게 동기부여가 되는 크루들이 많아서 배울 점이 많다. 아이템 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라. 싱글턴(singleton)이란? 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. (인스턴스에 대해서도 접은글로 설명을 덧붙여놓았다.) 더보기 그렇다면 인스턴스란? 어떤 클래스에 속하는 각 객체를 인스턴스라고 한다. 좀 뜻이 모호한데, 좋은 예시를 찾다가 해당 블로그에서 제시해주신 예시를 인용하여 설명을 보충해보자. 붕어빵을 만들려면 붕어빵을 찍기 위한 틀이 있어..
[Effective Java] 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라
아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라. 생성자에 매개변수가 많을 때, 사용하는 점층적 생성자 패턴의 객체가 완전히 생성되기 전까지는 일관성이 무너진 상태에 놓이게 되는 단점과, 자바 빈즈 패턴의 클래스를 불변으로 만들수 없거나 하는 단점을 완화하고자 Builder를 사용한다. Builder는 점층적 생성자 패턴의 안전성와 자바빈즈의 가독성을 겸비하였다. Builder를 사용한다면, Client는 필수 매개변수 "만"으로 생성자를 호출해 빌더 객체를 얻고, 빌더가 제공하는 세터를 이용하여 원하는 선택 매개변수들을 설정할 수 있다. public class NutritionFacts { private final int servingSize; private final int servings; ..
[Effective Java] 아이템 1. 생성자 대신 정적 팩토리 메서드를 고려하라
아이템 1. 생성자 대신 정적 팩토리 메서드를 고려하라. 클라이언트가 인스턴스를 얻는 수단으로는 public 생성자도 있지만, 정적 팩토리 메서드를 통해 제공할 수 있다. 그렇다면, 정적 팩토리 메서드를 사용했을 때의 장점은 무엇이 있을까? 🤔 정적 팩토리 메서드를 사용한다면? 이름을 가질 수 있다. 이는 가독성과 관련되었다고 생각한다. 예시로 biginteger.probableprime을 통해 소수인 정수를 리턴한다는 의미가 확 눈에 들어오는 것을 알 수 있다. 호출될 때마다 인스턴스를 새로 생성하지 않아도 된다. ex. Boolean.valueOf(boolean)은 객체를 아예 생성하지 않는다. 반복되는 요청에 같은 객체를 반환하는 식으로 정적 팩토리 방식의 클래스는 언제, 어느 인스턴스를 살아있게 ..