profile
어려울수록 기본에 미치고 열광하라
태그 목록
전체보기 (114)android(26)kotlin(22)swift(21)스위프트(21)iOS(21)RxJava(17)반응형 프로그래밍(16)rxkotlin(16)비동기 데이터 스트림(15)RX(15)CS(13)observable(12)Reactive X(11)코틀린(10)Java(6)reactivex(6)안드로이드(6)coroutine(6)코루틴(5)동시성(5)비동기(5)디자인 패턴(4)Thread(4)JVM(3)Design Pattern(3)RecyclerView(3)Apollo client(3)graphql(3)Android Component(3)TCP/IP(3)View(3)MVVM(2)상속(2)Broadcast Receiver(2)자바(2)정렬 알고리즘(2)Generics(2)멀티 쓰레딩(2)Map(2)RxAndroid(2)추상화(2)취준(2)SOLID(2)OOP(2)context(2)네트워크(2)dependency injection(2)di(2)jetpack(2)제너릭 함수(2)알고리즘(2)lifecycle(2)Observer(2)List(2)garbage collection(2)GC(2)자료구조(2)객체지향 프로그래밍(2)제너릭 클래스(2)카카오페이(2)다형성(2)제너릭(2)service(2)scope function(2)클린 아키텍처(2)회고(2)Adapter(2)의존성 주입(2)Flowable(2)스코프 함수(2)동기화(1)날먹(1)stack(1)소마 면접(1)garbage collector(1)CustomType(1)레포지(1)process(1)data class(1)heap(1)Activity(1)inline function(1)카카오(1)Inflating(1)junit(1)Cache(1)Local Data(1)Handler(1)velog(1)구조화된 동시성(1)Mutext(1)onDraw(1)quicksort(1)delegate pattern(1)callback(1)Hash Collision(1)캡슐화(1)Thread Pool(1)Frameworks(1)연말(1)RecyclerView.Adapter(1)with(1)임계 영역(1)andoird(1)clean architecture(1)input(1)requestLayout()(1)캐시 메모리(1)debounce(1)LRU(1)high order function(1)by(1)BST(1)tistory(1)hasFixedSize(1)Use Cases(1)RxBinding(1)티스토리 단점(1)브로드캐스트 리시버(1)Content Provider(1)composition(1)신입 개발자(1)콘텐트 프로바이더(1)Datastore(1)network(1)scheduler(1)XML(1)고차함수(1)entity(1)ip(1)tcp(1)퀵 소트(1)Looper(1)layout(1)데드락(1)LRU Cache(1)Hashing(1)Open Addressing(1)객체지향 패러다임(1)double linked list(1)test code(1)PendingIntent(1)명령형 프로그래밍(1)CustomTypeAdapter(1)2021년(1)hash function(1)notifyDataSetChanged()(1)Apollo-graphql(1)Application Context(1)꿀팁(1)ANR(1)싱글톤 패턴(1)커스텀 타입(1)DiffUtil(1)Deadlock(1)application(1)onLayout(1)interface(1)Runtime Data Areas(1)when(1)Collection(1)슬라이딩 윈도우(1)Day(1)jetbrains(1)뮤텍스(1)취업준비(1)dagger(1)GitHub 소스코드(1)flow(1)Adapter Pattern(1)HashTable(1)인라인 함수(1)Broadcast(1)가비지 컬렉션(1)Enum(1)VS Code(1)세마포어(1)Process Control Block(1)Chaining(1)inflate(1)소마 지원 팁(1)AAC(1)절차적 프로그래밍(1)Spring boot(1)HashMap(1)inline(1)main thread(1)LayoutInflater(1)이진 트리(1)이진 탐색 트리(1)SharedPreferences(1)수습기간(1)listview(1)환승(1)notification(1)array(1)안드로이드 개발(1)TCP 통신(1)어댑터 패턴(1)Application Not Responding(1)Intent(1)Method Area(1)교착상태(1)github(1)toString(1)Executor(1)ViewHolder(1)병합 정렬(1)EditText(1)다크모드(1)ExecutorService(1)Class Loader(1)mutation(1)view lifecycle(1)SW 마에스트로(1)Android view(1)Kotlin 유용한 함수(1)객체지향 프로그래밍 설계원칙(1)합병 정렬(1)sealed(1)UI Test(1)Field Injection(1)Drivers(1)AlarmManager(1)delegate(1)Critical Section(1)깃허브(1)시간 복잡도(1)Activity Context(1)Android Studio(1)흐름제어(1)운영체제(1)LRU 알고리즘(1)Singleton(1)RxKoltin(1)소프트웨어 마에스트로(1)set(1)run(1)Listener(1)CustomView(1)OS(1)배압현상(1)브로드캐스트(1)스프링 부트(1)ScalarType(1)Native Method Stack(1)비동기 처리(1)function(1)UI thread(1)페이지 교체(1)프로세스(1)유닛 테스트(1)key-value(1)Interface Adapters(1)infix(1)3 Way-Handshake(1)unit test(1)file upload(1)MergeSort(1)VSC(1)서비스(1)Pair(1)Kotlin Function(1)Night(1)다크모드 비활성화(1)Semaphore(1)소마(1)쓰레드(1)패킷 교환(1)소마 코테(1)PublishSubject(1)Wrapper Pattern(1)Subject(1)4-way Handshake(1)apollo(1)옵저버 패턴(1)안드로이드 스타일(1)Backpressure(1)네트워킹(1)PCB(1)Context Switching(1)
post-thumbnail

[RxJava] Scheduler 설정하기

Scheduler (스케줄러) RxJava 는 다양한 문제를 해결할 수 있는 범용적인 솔루션이다. 특히 멀티 쓰레딩과 같은 비동기 작업을 효율적으로 구현할 수 있는 환경을 제공해준다. 이는 스케줄러라는 녀석을 활용하게 된다. 스케줄러는 데이터 스트림이 어떤 쓰레드에서 데이터를 발행하는지, 구독자는 어떤 쓰레드에서 이벤트 발생을 통보받는지에 대해 지정해줄 수 있다. RxJava 에서는 Schedulers 클래스에서 제공하는 정적 패토리 메소드를 통해 스케줄러를 설정해줄 수 있다. Scheduler 종류 >### Single 스케줄러 Single 스케줄러는 단일 쓰레드를 생성하여 이를 계속 재사용하는 방식을 활용한다. RxJava 내부에서 쓰레드를 별도로 생성하여, 한 번 생성된 쓰레드를 활용하며 여러 작업을 처리하게 된다. >### IO 스케줄러 이 녀석은 네트워킹 작업이나 **DB 트랜잭션, 파일 시스

2021년 10월 20일
·
0개의 댓글
·
post-thumbnail

[Java] Thread Pool 개념과 동작원리

Thread Pool 이 등장하게 된 이유 우리는 프로그램을 개발할 때 다양한 이유로 쓰레드를 생성하곤 한다. 그것은 비동기 처리의 일환일 수도 있고, 연산 효율을 높이기 위함일 수도 있다. 그러나 쓰레드를 계속하여 생성하고 회수하는 것은, 시스템적으로 오버헤드가 상당히 큰 작업이다. 쓰레드를 한 번 생성할 때마다 OS 가 해당 쓰레드를 위한 메모리 영역 (스택 등) 을 확보해주고, 쓰레드가 더이상 필요 없을 땐 다시 이 메모리 영역을 회수하는 작업이 일어난다. 이는 상당히 비용이 큰 작업이기 때문에, 쓰레드를 계속하여 생성하고 수거했다간 프로그램의 퍼포먼스에 분명히 영향을 끼치게 되어있다. 그렇다고 '음.. 걍 쓰레드 많이 만들지 마세요 ㅋㅋ' 할 순 없는 노릇이다. 그래서 등장하게 된 아이디어는 '여러 쓰레드를 미리 만들어두고 작업이 들어올 때마다 쓰레드들에게 작업을 적절히 분배해주자'는 것이다.

2021년 10월 19일
·
0개의 댓글
·
post-thumbnail

JVM 이 뭐냐고 물으신다면!

%20(1).jpg) JVM 개요 누구나 JVM 이라는 용어를 한 번쯤 들어봤을 것이고, 전공 과목으로 자바를 배웠다면 더욱이 친숙할 단어이다. 얼핏 기억나는 사람들은 어림짐작 가능할 것이다. JVM 의 핵심 역할은 다음과 같다. - JVM 기반 프로그램이 플랫폼, 운영체제에 국한되지 않고 실행될 수 있도록 해줌 - JVM 기반 프로그램의 메모리를 관리하고 최적화해줌 >JVM 은 코드를 실행하고, 해당 코드에 대한 런타임 환경을 제공하는 프로그램에 대한 사양 한 줄로 정리하자면, JVM 은 자바 기반 애플리케이션을 클래스 로더를 통해 읽어들이고, 자바 API 와 함께 실행하는 역할을 한다. Java 프로그램과

2021년 10월 9일
·
0개의 댓글
·
post-thumbnail

[Java] Garbage Collection 기초 공략하기

C/C++ 프로그래밍을 해본 사람들이라면 알테지만, 객체를 생성한 이후 더이상 사용하지 않는 객체에 대해서는 free() 등을 활용해 메모리를 꼭 해제해줘야 했다. 만약 메모리를 해제하지 않는다면 메모리 릭이 발생하고 말 것이기 때문이다. 그러나 자바에서는 JVM 이 구성된 JRE (Java Runtime Environment) 가 제공되고, JRE 의 구성 요소 중 하나인 Garbage Collection (이하 GC) 가 위 과정을 알아서 해준다. 매우 편리한 것이다. GC 에 대해 살펴보기 전에, stop-the-world 라는 용어를 알아둬야 한다. stop-the-world 란? GC 를 실행하기 위해 JVM 애플리케이션 실행을 멈추는 것이다. stop-the-world 가 발생하면 GC 를 실행하는 쓰레드를 제외한 나머지 모든 쓰레드가 작업을 멈춘다. GC 작업이 완료되면, 중단됐던 작업이 재개된다. 어떤 GC 알

2021년 9월 22일
·
8개의 댓글
·
post-thumbnail

[Kotlin] 감동 실화 Data Class 알아보기

자바와 다르게, 코틀린은 다양한 Class 를 제공해준다. 그 중 하나로 Data Class 라는 것이 있는데, 이는 자바 개발자들의 고충과 니즈를 정확히 파악한 기능을 갖고 있다. 정말 감동적이지 아니할 수 없다! 이번 포스팅에선, Data Class (데이터 클래스) 가 우리에게 선사하는 감동을 느껴보자! Data Class (데이터 클래스) 개념 일반 클래스와 달리, 다양한 메소드를 자동으로 생성해주는 클래스이다. 만약 자동으로 생성되는 메소드들이 별로 필요하지 않는 녀석들이었다면, 개발자들 사이에서 쓰이지도 않았을 터이다. 하지만 매우 폭발적인 편리함을 제공하는 유용한 메소드들이 자동 생성된다. Data Class 생성 시 같이 만들어지는 녀석들 hashCode() copy() equals() toString() componentsN() 또한 아래와 같은 여러 가지 다양한 특

2021년 9월 13일
·
0개의 댓글
·
post-thumbnail

혹시 싱글톤이세요? 저는 벙글톤이에요 ㅋㅋㅋ

디자인 패턴 시리즈의 2번째 포스팅이다! (이전 포스팅 - 옵저버 패턴 개념 보러가기) 이번 포스팅에선 사람들에게 가장 많이 알려진 디자인 패턴 중 하나인 싱글톤 패턴의 개념에 대하여 쉽게 알아보고자 한다. 다른 패턴들과 마찬가지로, 어렵게 생각할 것 없으니 천천히 살펴보도록 하자. 1. 싱글톤 패턴이 뭐야? 🤔 싱글톤이 뭔지는 몰라도, 우선 '싱글'하면 떠오르는 갖가지 개념들

2021년 9월 7일
·
23개의 댓글
·