일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 음수가 포함된 최단경로
- Django
- top-down
- spring boot
- 유니온 파인드
- union-find
- BufferedReader
- 다익스트라
- 우선순위큐
- 벨만 포드 알고리즘
- Android Studio
- compiler
- disjoint set
- 기술면접
- Controller
- 플로이드 와샬
- scikit-learn
- bottom-up
- clean code
- onclick
- Python
- 직무면접
- 거쳐가는 정점
- 엔테크서비스
- 동적계획법
- kmeans
- 코딩테스트
- dto
- 최단경로
- Java
- Today
- Total
목록Developer's_til/그외 개발 공부 (20)
춤추는 개발자
✅ Gson이란? Json을 파싱하고, 생성하기 위해 구글에서 개발한 오픈소스로 데이터를 처리하는데 높은 수준의 유연성을 제공한다. 내부적으로 리플렉션(Reflection)을 사용하기 때문에 Map을 사용하여 Json을 파싱하는 것보다 가독성있는 코드를 작성할 수 있다. Spring Framework에 Gson을 적용하려면 의존성(dependency)를 추가해서 사용해야 한다. [ Maven 설정 ] com.google.code.gson gson 2.8.5 [ Gradle 설정 ] dependencies { implementation 'com.google.code.gson:gson:2.8.5' } ✅ Gson 활용하기 예제 코드를 통해 Java 객체와 Gson 라이브러리를 활용하여 Json을 파싱 및 생..
✅ Optional이란? Optional 개념 및 사용법 자바로 프로그래밍 하다보면 정의되지 않은 객체에 대해 NULL값을 고려하게 되는 경우가 발생한다. 안정적인 실행을 위해서는 NULL값을 처리해 NPE(NullPointerException)가 발생하지 않게 체크해야 한다. 단순한 코드라면 짧은 로직으로 처리할 수 있지만, 스케일이 커질 수록 고려해야할 변수가 많아지고, 그만큼 NULL 체크 로직이 길어지게 된다. 이러한 상황을 위해 Java8에서는 Optional 클래스를 도입하여 NPE를 방지할 수 있도록 도와준다. Optional는 NULL이 올 수 있는 값을 감싸는 Wrapper 클래스로, NPE가 발생하지 않도록 도와준다. Optional 클래스는 아래 예제처럼 value에 값을 저장하기 때..
✅ 컴포지트 패턴이란? 컴포지트 패턴이란, 클라이언트가 복합 객체나 단일 객체를 동일하게 취급하는 것을 목적으로 한다. 특히 컴포지트(Composite)의 의도는 트리 구조로 작성하며, 전체-부분 관계를 표현하는 것으로 전체와 부분은 동일한 인터페이스를 사용할 수 있다. [ 해당 패턴을 사용하는 경우 ] 1. 복합 객체와 단일 객체의 처리 방법이 동일한 경우, 전체-부분 관계를 정의할 수 있다. 2. 객체들 간에 계급 및 계층 구조가 있고 이를 표현해야 할 경우, 3. 대표적으로 Directory-File 관계가 존재한다. [ 구조 ] Component Leaf와 Composite가 구현해야하는 Interface로, Leaf와 Composite는 모두 Component라는 같은 타입으로 다뤄 진다. Le..
✅ 템플릿 메서드 패턴이란? 템플릿 메서드 패턴이란 특정 작업을 처리하는 일부분을 서브 클래스로 캡슐화하여 전체적인 구조는 바꾸지 않고, 특정 단계에서 수행하는 내용을 바꾸는 패턴이다. 즉, 동일한 기능을 상위 클래스에서 정의하면서 확장/수정이 필요한 부분만 서브 클래스에서 오버라이딩으로 구현하도록 만든다. 예를 들어, 전체 로직은 상위 클래스에서 구현하고, 나머지 부분은 하위 클래스에서 구현하도록 만들어서 코드의 재사용성을 높이는 것이다. [ 구조 ] [ 장단점 ] 장점 1. 코드의 재사용성을 높여 중복 코드를 줄일 수 있다. 2. 하위 클래스의 역할을 줄여 핵심 로직의 관리가 용이하다. 3. 객체지향적으로 코드를 구성할 수 있다. 단점 1. 추상 메서드가 많아지면서 클래스 관리가 복잡해진다. [ 예제..
✅ Generic 자바에서 제네릭(generic)이란, 데이터의 타입을 일반화(generalize)한다는 것을 의미한다. 쉽게 설명하자면 '데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 일반화하는 방법'이다. 이렇게 컴파일 시에 미리 타입 검사를 수행하면 다음과 같은 장점이 있다. 1. 클래스나 메서드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다. 2. 반환값에 대해 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. JDK 1.5 이전에서는 여러 타입을 사용하는 대부분의 클래스나 메서드에서 인수나 반환값으로 Object 타입을 사용해왔다. 하지만 반환된 Object 객체를 다시 원하는 타입으로 변환해야 하며, 이러한 상황에서 오류가 발생할 가능성도..
Stream에 이어 Java8에서 추가된 Lambda. 토비의 스프링에서 Lambda와 관련된 파트를 보면 자바에서 왜 람다를 추가했는지 알 수 있다. 바로 함수형 프로그래밍을 위해서다. 단순히 추가된 문법이 아닌 프로그래밍 자체의 패러다임에 따른 내용이 추가된 것이다. 이제 추가된 API로 문제 해결을 위한 사고를 다시 한번 생각해 볼 필요가 있다. ✅ Lambda 람다의 핵심은 코드의 간결화로 줄일 수 있는 코드는 모두 지우자는 것이다. 비교를 위해 Lambda를 쓰지 않은 방식의 코드를 살펴보겠다. public interface Danceable { void hiphop(String str); } class Street implements Danceable { @Override public void..
✅ Webhook 웹훅은 웹페이지 or 웹앱에서 발생하는 특정 행동(이벤트)들을 커스텀 Callback으로 변환해주는 방법으로 이러한 행동 정보들을 실시간으로 제공하는데 사용됩니다. 보통 REST API로 구축된 웹 서비스는 하나의 요청에 따라 하나의 응답을 제공합니다. 이러한 구조로 인해 특정 이벤트가 발생했는지 조회하려면 서버로의 요청이 선행되어야 합니다. 즉, 일반적인 API(Polling)는 클라이언트가 서버를 호출하는 방식입니다. 하지만, 웹훅은 서버에서 특정 이벤트가 발생했을 때, 클라이언트를 호출하는 방식으로써 역방향 API라고도 불립니다. 이렇게 서버측에서 클라이언트의 어떤 URL로 데이터를 보낼지 정해놓은 주소를 바로 Callback URL이라고 부릅니다. ✅ Webhook endpoin..