분류 전체보기(229)
-
Generic 클래스와 함수 정리
[Kotlin] Generic 클래스와 함수 정리 Generic 클래스 fun main() { println(Person("hello").t) println(Person(99).t) } class Person (val t:T) //출력 hello 99 두번째 print는 99가 int 라는것이 명확하기 때문에 타입지정을 안해주어도 된다 제네릭을 사용하면, 캐스팅을 거치지 않기 때문에 프로그램 속도를 상승시킨다. 참고 Generic 기호는 T,S,U,V 를 사용한다. 관습일 뿐, 컴파일 에러가 나지는 않는다. Generic 함수 fun main() { printGO(1) printGO("asdf") } fun printGO(text : T) : Unit{ println(text.toString()) } 더..
2021.06.04 -
multiset vs priority queue
multiset vs priority queue priority queue 큐의 전체적인 순서는 보장이 안되지만, 최대,최소는 각각 관리하기 때문에 최대,최소 만큼은 2개의 큐의 연산에서 보장이 된다!! mutiset multiset을 활용하면 좋은점 자동 정렬 iter로 삭제 위치가 자유롭다 중복값 허용 (set은 중복값 허용 X) multiset 주의할 점 multiset ms : 내림차순 multiset ms : 오름차순(생략가능) 가장 마지막 원소 삭제시 --> --ms.end() 해야함! (ms.end()는 가장 마지막 원소 다음 빈곳을 가리키고 있기 때문)
2021.06.04 -
[kotlin] 코루틴이란?, runBlocking?, suspendCancellableCoroutine
코루틴? 비동기 라이브러리 경량 스레드 OS에 의존적인 스레드와는 달리 스레드간 컨텍스트 전환 비용이 발생하지 않으며, 개발자가 직접 중지 지점을 선택할 수 있다. 기본적인 사용법 val scope = CoroutineScope(Dispatchers.Default) scope.launch{ //do } scope.launch(Disaptchers.IO){ //some I/O } 위 코드처럼 어느 스케줄러에서 비동기 로직이 실행될지 결정할 수 있다. 이런식으로 디스패치를 사용해서 어느 스레드풀에서 어느 로직이 실행될지를 결정할 수 있고 로직들의 규모를 세세하게 나눌 수 있다. 서스펜딩(suspending) 코루틴이 실행 중인 스레드를 블록킹하지 않으면서 실행 중인 코루틴을 잠시 중단시킬 수 있는 중단 지점..
2021.06.03 -
LiveData - Transformations.map, switchMap
LiveData - Transformations.map, switchMap 하나의 데이터가 바뀔 때마다 다른 여러 데이터들도 함께 바뀌어야하는 상황을 많이 만나게 됩니다. 또 Room이나 Retrofit 등 데이터베이스나 네트워크 통신을 도와주는 라이브러리와 함께 사용되기도 합니다. 이럴 때 사용하는 것이 바로 Transformations 의 map 과 switchMap 메소드입니다. Transformations.map 코틀린 컬렉션에서 제공하는 map은 위에서 보듯이 요소 각각에 2를 곱해 새로운 List를 반환한다. 포인트는 새로운 List를 반환한다는 것이다. Transformations.map역시 마찬가지다. val userLiveData: MutableLiveData = repository.ge..
2021.06.03 -
app:mutldexDebug 에러
app:mutldexDebug 에러 gradle 폴더에 아래와 같이 코드를 추가한다 android{ defaultconfig{ ... multiDexEnabled : true } }
2021.06.02 -
[Android] maven jcenter vs mavenCentral
jCenter에 안드로이드 라이브러리 배포하기 Android Library GearSlider를 만든 후 jcenter에 배포한 경험을 공유하기 위해 글을 작성합니다. 구글에 검색하여 나온 블로그 글을 참조했는데 중간에 막히는 부분이 있어서 다른 배포도구를 활용했습니다. 이 문서의 최종 목표는 1: dependencies { 2: compile '나만의.안드로이드.라이브러리' 3: } 위와 같이 build.gradle 파일에 작성함으로써 자신의 라이브러리를 다른 사람들과 쉽게 공유할 수 있게 만드는 것에 있습니다. 이 글을 읽기 전에 Android 공식 홈페이지의 글을 먼저 읽어 보시길 바랍니다. 단 한줄만으로 라이브러리를 가져올수 있다는 것은 굉장히 유용합니다. 그렇다면 우리는 어디에 라..
2021.06.02