전체 글 103

[RxJava] #1

안녕하세요 오늘은 비동기 프로그래밍 중 하나인 RxJava에 대해 알아보겠습니다 API와 통신할 때만 사용했기에, 더 많은 기능을 알고자 정리해보겠습니당 우선, 명령형 프로그래밍과 반응형 프로그래밍에 대해 간략히 알아볼게요 RxJava는 반응형 프로그래밍을 따릅니다 📌 명령형 프로그래밍 - 선언된 명령어를 순차적으로 실행 📌 반응형 프로그래밍 - 데이터의 변화에 반응해 실행 (비동기 스트림으로 처리) 키워드에 포커스를 맞추고자 하다보니 문장이 좀 어색하네요 😅 RxJava Rx는 ObserverPattern을 따릅니다 아래의 포스팅을 확인해주세요 ✅ 2022.07.21 - [💻 프로그래밍] - [디자인 패턴] Observer Pattern(관찰자 패턴) [디자인 패턴] Observer Pattern(관찰..

[자료구조] 🚀 우선순위 큐 & 힙(Heap)

2022.07.26 - [👩🏻‍💻 Develop] - [자료구조] 🚀 이진트리(Binary Tree) [자료구조] 🚀 이진트리(Binary Tree) 2022.07.25 - [🧐 알고리즘] - [자료구조] 트리(Tree) [자료구조] 트리(Tree) 트리(Tree) 🌲 노드,간선으로 이루어진 비선형 자료 구조 💡 트리의 특징 • 부모노드, 자식노드와 같이 계층구조로 표현되 kong-droid.com ✍️ 우선순위 큐 (Priority Queue) Queue는 FIFO를 따르지만, 우선순위 큐는 FIFO를 따르지 않고, 우선순위가 높은 데이터를 먼저 출력합니다 Heap을 사용하여 처리합니다 (시간복잡도가 가장 짧습니다) ✍️ 힙 (Heap) - 완전 이진 트리를 기초로 하며, 최소 혹은 최대값을 빠르게 찾..

🧐 알고리즘 2022.07.27

[자료구조] 🚀 이진트리(Binary Tree)

2022.07.25 - [🧐 알고리즘] - [자료구조] 트리(Tree) [자료구조] 트리(Tree) 트리(Tree) 🌲 노드,간선으로 이루어진 비선형 자료 구조 💡 트리의 특징 • 부모노드, 자식노드와 같이 계층구조로 표현되는 비선형 자료구조 • 탐색에 주로 사용 • 루트노드를 제외한 모든 kong-droid.com 트리 자료구조에 이어 이진트리에 대해 알아보겠습니다 🚀 이진트리 (Binary Tree) 영어에서 유추해볼 수 있듯이 이진트리는 💡 모든 노드가 자식 노드를 최대 2개를 가질 수 있는 트리 특징 • n개의 노드는 n-1의 간선을 가짐 • 자식노드는 공백이 될 수도 있음 • 레벨(a)에서 가질 수 있는 최대 노드의 갯수는 2ª 종류 📌 전 이진 트리 (Full Binary Tree) - 각 레..

🧐 알고리즘 2022.07.26

[자료구조] 트리(Tree)

트리(Tree) 🌲 노드, 간선으로 이루어진 비선형 자료 구조 📎 트리의 용어 1. 노드(node): 트리를 구성하는 기본 원소 루트 노드 : 트리의 최상위 노드 자식 노드 : 어떤 노드 바로 밑에 연결된 노드 부모 노드 : 어떤 노드 바로 위에 연결된 노드 형제 노드 : 같은 부모 노드를 갖는 노드 리프 노드 : 루트 노드를 제외하고 자식이 없는 노드 (가장 마지막 노드들) 2. 높이 : 루트 노드에서부터 가장 깊은 노드까지의 길이 (루트노드에서부터 1로 시작) 3. 깊이(depth): 루트노드에서 어떤 노드까지 거쳐야 하는 간선의 수 4. 레벨 : 트리의 특정 깊이를 가지는 노드의 집합, 루트노드(level = 0) 5. 차수(degree) : 각 노드 별 자식 노드의 개수 6. 트리의 차수 : 트리..

🧐 알고리즘 2022.07.25

[디자인 패턴] Observer Pattern(관찰자 패턴)

Observer Pattern Observer Pattern은 쉽게 말하자면, 관찰자가 데이터를 관찰하다가 변경사항이 생기면 업데이트 되는 방식입니다 📌 Observer Pattern의 구성 발행자 (Subject) • 객체의 변화를 발생시키는 역할 관찰자 (observer) • 객체의 상태변화를 관찰하는 역할 • 상태가 변화되면 실행할 부분들을 구현합니다 • 발행자를 연결하고 나서부터 관찰이 가능하기 때문에, 발행자와 연결하는 과정인 '구독(Subscriber)'이 필요합니다 Observer의 구현 • 변화가 발생하면 각 옵저버(ConcreteObserverA, B)는 콜백(notify())을 받습니다 • 각 Observer는 notify함수를 구현해 이벤트 발생 시 처리할 동작을 정의합니다 • Sub..

[자료구조] 스택 , 큐 , 덱

각 자료구조들의 이론과 사용되는 함수에 대해 다뤄보고자 합니다 📌 스택 쉽게 말해 쌓이는 자료 구조로 , LIFO(Last In First Out)을 따릅니다 즉 가장 마지막에 넣는 아이템이 가장 먼저 빼지는 형태입니다 🛠 스택의 함수 • push(아이템) : 아이템을 스택에 삽입 var stack = Stack() stack.push("A") stack.push("B") stack.push("C") • pop(): 스택 가장 위에 있는 아이템을 제거 stack.pop() stack.pop() • peek(): 스택의 가장 위에 있는 아이템을 반환 stack.peek() //return "A" • size: 스택의 사이즈를 반환 • add(idx, item) : idx에 item 삽입 stack.add(..

🧐 알고리즘 2022.07.17

[Kotlin] apply, let, with, also, run 비교 (Scope Function)

안녕하세요 :) 오늘은 코틀린의 다섯 가지 함수를 비교해보고자 합니다. [2022.07.14 업데이트] SCOPE 함수란? 객체의 컨텍스트 내에서 코드 블록을 실행하는 것이 유일한 목적인 함수입니다. 람다식으로 SCOPE 함수를 호출할 때 임시적으로 범위를 생성하고, 해당 범위 내에선 객체의 이름 없이 객체에 접근할 수 있습니다(it, this 등) 기본적으로 5가지 함수는 같은 기능을 하지만 표현식이 어떻게 되는지, 블록 내에서 객체 사용법에 따라 구분합니다 📍 let 함수원형 public inline fun T.let(block : (T) -> R): R 객체를 블록의 인자(T)로 넘기고, 람다의 결과값(R)을 반환합니다. val numbers = mutableListOf("one", "two", "..

💡 Kotlin 2022.07.14

[Android] RecyclerView - MultiViewHolder(2)

2021.05.15 - [Android] - [Android] RecyclerView (1) - Multi ViewHolder [Android] RecyclerView (1) - Multi ViewHolder 안녕하세요 :) 오늘은 RecyclerView를 사용해보겠습니다 굉장히 자주 쓰이는 부분이기에 저 또한 더 자세히 알아두고자 정리해보려 합니다. (사용 빈도는 높지만 프로젝트를 처음부터 구현하지 않 kong-droid.com 기존 포스팅이 존재하지만, 기존 포스팅에선 같은 모델에서 type에 따라 나누는 방식을 사용했지만 보통 RecyclerView를 사용할 때 다양한 Model을 사용하기 때문에 ViewHolder별로 다른 DTO를 MultiViewHolder로 보이는 방식을 사용해 보겠습니다 코..

📱 Android 2022.07.13

[Android] Fragment LifeCycle

2022.07.03 - [Android] - [Android] Activity LifeCycle 🧐 [Android] Activity LifeCycle 🧐 안녕하세요 오늘은 Activity의 LifeCycle에 대해 알아보겠습니다 :) 수없이 봐온 LifeCycle이지만, 더 상세하게 알아둔다면 좀 더 좋은 구조를 가진 앱을 개발할 수 있을 것 같아요 💪 위의 사진 순서대 kong-droid.com Activity LifeCycle에 이어서 Fragment LifeCycle에 대해서도 알아볼텐데 거의 비슷하지만, Fragment에 좀 더 추가된 부분들이 있습니다 그리고, 2020년에 onActivityCreated가 Deprecated 되면서 Lifecycle이 아래와 같이 변했습니다 Fragment의 ..

📱 Android 2022.07.06

[Android] 4대 Component

Component Application의 구성 요소입니다 Manifest 파일에 등록 필수 🔍 시스템에 컴포넌트를 알려야하기 때문에 일반 클래스와의 차이 일반 클래스: 생명주기 관리 개발자 코드 컴포넌트 클래스 : 안드로이드 시스템에서 생명주기 관리 또, 앱 안에서 독립된 실행단위로 이로 인해 안드로이드는 앱 실행 시점이 다양합니다 안드로이드에선 4개의 Component가 존재하는데, 각각 Component들에 알아보겠습니다 생성방법이나 사용법에 대해선 자세히 다루진 않겠습니다 😭 1. Activity 화면을 구성하고 사용자와 상호작용을 담당하는 컴포넌트 2. Broadcast Receiver 시스템에 어떤 이벤트가 발생 (ex.부팅, 배터리상태, 화면 On/Off)하면 실행되는 컴포넌트 Broadcas..

📱 Android 2022.07.05