목차 딥러닝의 역사와 발전: 머신러닝에서 딥러닝까지의 여정 인공 신경망의 기본 구조와 중요성 활성화 함수(Activation Functions) 이해하기 손실 함수(Loss Functions)의 역할과 중요성 딥러닝에서의 최적화: 하강법과 경사하강법 확률적 경사 하강법(Stochastic Gradient Descent, SGD) 기울기 사라짐(Vanishing Gradient) 손실 함수와 최적화 컴퓨터 비전(Computer Vision) 합성곱 연산(Convolution) 합성곱 신경망(Convolutional Neural Network, CNN) 순환 신경망(Recurrent Neural Network, RNN) 순환 신경망의 발전(The Evolution of RNN) 오토 인코더(Autoencod..
생성자 글에서도 적었지만, 부모 클래스가 기본 생성자를 가지고 있지 않으면 자녀 클래스의 생성자는 반드시 부모의 매개변수가 있는 생성자를 첫 줄에 호출해야 하며, 그렇지 않을 경우 컴파일 오류가 발생한다. 사실 부모가 기본 생성자를 가지고 있는 경우에도 자녀 클래스 생성자에서 호출해주어야 하는 건 같지만 이 경우에는 컴파일러가 알아서 추가해주기 때문에 명시적으로 할 필요가 없을 뿐이다. 왜 이런 귀찮은 작업을 수행해야 하는 걸까? 정답부터 말하자면 상속을 위해선 부모 클래스가 자녀 클래스보다 먼저 존재해야 하기 때문이다. 상속받은 클래스 멤버는 기본적으롤 부모 클래스에 속한 것이므로 부모가 먼저 존재하지 않으면 자녀 클래스에서 호출해 사용하는 것이 불가능하다. 따라서 반드시 자녀 클래스보다 부모 클래스가..
자바에서 생성자는 클래스의 네 가지 구성요소(필드, 메서드, 생성자, 내부 클래스)중 하나이며 메서드와 비슷한 코드 블럭, 혹은 특별한 메서드이다. 위 문장은 메서드를 어떻게 정의하느냐에 따라 달라지는 미묘한 의미를 가졌지만, 어쨌거나 중요한 것은 생성자 역시 메서드, 혹은 그에 준하는 코드 블럭이라는 것이다. 생성자는 매개변수의 유무에 따라 기본 생성자(Default or no-arg Constructor) - 매개변수가 없는 생성자 매개변수가 있는 생성자(Parameterized Constructor) 로 나뉘며 일반적인 메서드와는 다른 생성자만의 특징은 아래와 같은 것들이 있다. 클래스의 멤버(Member)가 아니므로 상속 및 오버 라이딩의 대상이 되지 않는다. 생성자의 이름은 반드시 클래스의 이름..
Class 클래스는 객체 자체가 아닌 객체를 생성하기 위한 틀이자 설계도이다. 기본적으로 class 키워드를 이용해 아래와 같이 정의하며, public class Car{ int doors = 4; // (1)필드 void stop {...} // (2)메서드 Car {...} // (3)생성자 class Car2 {...} // (4)내부 클래스 } 필드, 메서드, 생성자, 내부 클래스의 구성요소 중 생성자를 제외한 세 가지를 클래스(혹은 생성된 객체)의 멤버라 부른다. 각 구성요소의 특징은 아래와 같다. 필드 - 클래스(객체)의 속성을 나타내는 변수. 차의 모델명, 색깔, 문의 개수 등이 있다. 메서드 - 클래스(객체)의 기능을 나타내는 함수. 가속하기, 멈추기 등이 있다. 생성자 - 클래스의 객체를..
빌더 패턴(Builder Pattern)은 다양한 조건의 객체를 손쉽게 만들어내기 위한 디자인 패턴, 그중에서도 생성 패턴이다. 디자인 패턴이라 함은 쉽게 말해 재사용 가능한 일종의 솔루션이라는 뜻이며, 생성 패턴은 객체 생성 절차를 추상화하는 패턴이라는 뜻이다. 구체적으로 빌더 패턴은 생성자를 거치지 않고 빌더라는 내부 클래스를 통해 간접적으로 인스턴스를 생성하는 방식이다. 위키백과에는 이를 생성 과정과 표현 방법을 분리하는 패턴이라고 표현하고 있기도 하다. 이는 특히 대상 클래스가 복잡해지고 요구사항이 늘어날수록 빛을 발하게 되는데, 그 이유는 아래와 같다. 대상 클래스의 생성자를 private으로 묶고 간접적으로 인스턴스를 생성 → 결합도를 낮춰 수정 및 유지보수가 편해짐 뛰어나고 직관적인 가독성으..
DI는 특정 객체가 의존할 객체나 메서드를(즉, 의존관계를) 외부에서 주입받는 디자인 패턴이다. 여기서 주입이란 위 그림에서 보듯이 의존성을 사용하려는 객체에게 전달하는 것이라 받아들이면 되며, 디자인 패턴이란 공통적인 문제에 대한 재활용 가능한 솔루션이자 컨셉이라 생각하면 편하다. 또한 DI는 스프링의 핵심 원칙인 IoC(제어 역전)를 구현하는 수단 중 하나인데, DI의 목표가 객체의 설계와 사용이라는 관심사를 분리함으로써 느슨한 관계로 이루어진 앱을 만드는 것이기 때문이다. 이는 코드의 가독성과 재사용성을 크게 높여주는 효과도 가지고 있다. 그렇다면 이렇게까지 주입하려는 의존성이란 무엇일까? 간략하게 알아보자. Dependency Dependency는 의존성, 의존관계라고 번역한다. 나는 처음엔 의존..
예전 글에서 this() 메서드와 this 키워드에 관해서 살펴봤다. https://gnidinger-coding.tistory.com/11 [Java]this() vs. this this() this() 메서드는 클래스 안에서 생성자를 상호 호출할 때 사용한다. 조금 더 풀어서 쓰자면, 생성자 안에서 다른 생성자를 호출할 때 사용되는 것이 this() 메서드이다. this() 메서드를 사용하 gnidinger-coding.tistory.com 요약하면 this는 자신의 객체, this()는 자신의 생성자를 호출하는 데 사용되었다. super와 super()도 이와 비슷하게 사용된다. 다만 차이점은 super는 상위 클래스의 객체, super()는 상위 클래스의 생성자를 호출하는 데 사용된다는 점이다. ..
생성자란 앞서 살펴봤던 클래스의 4가지 구성요소 중 하나로서, 인스턴스가 생성될 때 호출되는 이다. 구체적으로는 Car bmw = new Car(); 와 같이 인스턴스를 생성할 때, 가장 뒤에 쓰인 Car()가 바로 그 생성자이다. 추가로 생성자는 클래스의 구성요소이긴 하나 멤버는 아니라고 언급했었는데, 이 때문에 생성자는 상속되지 않고, 오버 라이딩의 대상이 되지도 않는다. 생성자는 메서드라고 편의상 적어두긴 했으나, 일반적인 메서드와는 크게 두 가지 차이점을 가지는데 생성자의 이름은 반드시 클래스의 이름과 같아야 한다. 생성자는 리턴 타입이 존재하지 않는다. 따라서 void 키워드도 쓰지 않는다. 가 그것이다. 즉, 엄밀하게 말하면 생성자는 메서드가 아니다. 메서드와는 다르다. 메서드와는..! 구체..
- Total
- Today
- Yesterday
- 자바
- 백준
- 면접 준비
- spring
- 스프링
- 세계일주
- 유럽
- 스트림
- 파이썬
- 리스트
- 알고리즘
- Backjoon
- Python
- 맛집
- 동적계획법
- 세계여행
- 여행
- 야경
- a6000
- 세모
- 지지
- 칼이사
- 중남미
- 유럽여행
- Algorithm
- RX100M5
- 기술면접
- BOJ
- java
- 남미
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |