일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jsoup
- aging
- 파이썬
- cache
- 객체지향
- Anaconda
- 안드로이드 스튜디오 설치
- sealed class
- 안드로이드
- PyCharm
- 안드로이드 스튜디오
- process
- Schedule
- android studio
- HTML Parser
- InteliJ
- thread pool
- GIT
- 크롤링
- data class
- jvm
- 파이참
- GC
- Android IDE
- Android
- fixedRateTimer
- 딥러닝
- generics
- Kotlin
- android studio 설치
- Today
- Total
목록프로그래밍/Kotlin (11)
탐비의 개발 낙서장
객체지향 설계 패키지 / 객체 패키지 클래스나 파일의 '이름 충돌' 사례는 흔히 발생하는 문제입니다. 협업 상황에서는 분명히 같은 파일명과 클래스 명을 사용하는 경우가 생기는데, 이런 상황에서 필요한 것이 바로 '패키지'입니다. 필요한 상황은 다음의 두 가지 경우로 나눌 수 있습니다. 공간에서의 충돌 : 동일 이름의 클래스 파일을 같은 위치에 둘 수 없다. 접근 방법에서의 충돌 : 인스턴스 생성 방법에서 두 클래스에 차이가 없다. 결론적으로 패키지는 큰 프로그램에서 클래스 간의 충돌을 막는 편리한 도구라고 할수 있습니다. 객체 실생활에서 우리가 인식할 수 있는 사물이나 추상적으로 생각 할 수 있는 것으로 생각하고 나누면 이해하기 쉬운 것 같습니다. 속성과 동작으로 구성되어있으며, 이는 각각 클래스의 필드..
Coroutine 구조 일반적으로 사용했던 GlobalScope의 launch라는 코루틴 빌더는 launch하도록 했다. 이 말은 Global이 의미하는 것 처럼, 새롭게 launch된 코루틴은 해당 어플리케이션 전체의 생명주기에 적용된다는 말이 됩니다. runBlocking을 사용하는 것 역시 새로운 코루틴을 생성하는 것으로, 해당 상황에서 자신이 속한 스레드를 블로킹시켜 코루틴 작업이 지속될 수 있도록 합니다. job은 어떠한 코루틴의 생명주기에 일을 처리하고 종료하기 위해 사용됩니다. 상위 코루틴에 join을 하게되면 해당 코루틴이 제 기능을 다 완수할 때 까지 코루틴이 기다리게 됩니다. suspend와 resume은 콜백을 대체하기 위해 같이 쓰입니다. 주의할 점은 suspend를 적어준다고 해서..
Coroutine 개념 프로세스 - 스레드 간 관계와, 스레드 - 코루틴 관계를 비슷하게 볼 수 있습니다. 코루틴은 경량 스레드라고 하며, 스레드와 비슷한 라이프사이클을 가지고 있지만, 스레드 안에서 실행됩니다. 스레드 하나에 많은 코루틴이 있을 수 있지만 주어진 시간에 하나의 스레드에서 하나의 명령만이 실행될 수 있습니다. 예를 들어, 같은 스레드에 10개의 코루틴이 있다면, 해당 시점에는 하나의 코루틴만 실행되는 방식입니다. 스레드와의 비교해 보자면, 비동시 프로그래밍시 스레드를 신중하게 다뤄야 하는 이유가 스레드 생성 및 해제, Context-Switching시 CPU의 메모리를 소모해 많은 수의 스레드를 갖는데 어려움이 있고, 메인 스레드에서 일정시간 한가지 TASK를 수행하면 ANR에러가 발생하..
Observer 패턴 / Publisher-Subscriber 패턴 서로에 대한 인지 Observer 패턴의 경우 Subject에 Observer를 등록하고 Subject가 직접 Observer에 직접 알려주어야 합니다. Pub-Sub 패턴의 경우 Publisher가 Subscriber의 위치나 존재를 알 필요없이 Message Queue와 같은 Broker역할을 하는 중간지점에 메시지를 던져 놓기만 하면 됩니다. 반대로 Subscriber 역시 Publisher의 위치나 존재를 알 필요없이 Broker에 할당된 작업만 모니터링하다 할당 받아 작업하면 되기 때문에 Publisher와 Subscriber가 서로 알 필요가 없습니다. 결합도 Publisher와 Subscriber가 서로의 존재를 알 필요가 ..
Timer Timer 일정 주기마다 동작을 실행하기 위해 Timer를 사용할 수 있습니다. 원래 JAVA에서는 new TimerTask()를 통해 별도로 TimerTask 객체를 선언해주어야 했지만, 코틀린에서는 아래와 같이 편하게 사용할 수 있게 되었습니다. import kotlin.concurrent.timer fun run(){ timer(period = 1000, initialDelay = 1000){ // 1초 후부터 1초 간격 실행 // SomethingToDo.. if (isStopCondition()) cancel() } } 위 코드와 같이 kotlin.concurrent.timer를 import 한 후, 밀리세컨드 단위로 시간을 입력해 실행 타이머를 실행합니다. 만약 작업이 완료되어, 종..
Programming Paradigms 명령형 프로그래밍 언어 "어떻게 할 것인가(How)" - 프로그램의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명하는 방식의 언어 - 세분화하면 절차지향 프로그래밍 언어와 객체지향 프로그래밍 언어로 나눌 수 있습니다. - 절차지향 프로그래밍은 수행되어야 할 연속적인 계산 과정을 포함하는 방식으로 구성됩니다. (C, C++ 등) - 객체지향 프로그래밍은 객체들의 집합으로 프로그램의 상호작용을 표현합니다. (C++, JAVA, C# 등) 함수형 프로그래밍 언어 "무엇을 할 것인가(What)" - 어떤 방법으로 해야하는지를 나타내기보다 무엇과 같은지를 설명하는 방식의 언어 - 함수형 프로그래밍은 순수 함수를 조합하여 소프트웨어를 만드는 방식으로 구성됩니다. (Cl..
클래스 / 객체 / 인스턴스 클래스(Class) - 설계도 - 객체를 만들어내기 위한 설계도 - 연관되어 있는 변수들과 메소드 들이 저장되어 있습니다. 객체(Object) - 설계도로 구현한 모든 대상 - 소프트웨어에 구현할 대상으로, 클래스에 선언된 대로 생성한 실체 - OOP의 관점에서, 클래스의 타입으로 선언되었을 때, "객체"라고 부릅니다. 인스턴스(Instance) - 객체가 메모리에 할당된 것 - 클래스라는 설계도를 바탕으로 소프트웨어 세계에 구현된 구체적인 실체 - 객체를 소프트웨어에 실체화 한 것 - JAVA에서는 객체를 new를 이용해 메모리에 할당 한 경우에 인스턴스가 생성되었다고 합니다. Data Class / Sealed Class Data Class data class DataCl..