일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- room
- BOJ
- View
- HTTP
- CustomView
- 백준
- kotlin
- Navigation
- lifecycle
- Android
- onLayout
- CoordinatorLayout
- hilt
- ViewModel
- LiveData
- AppBarLayout
- recyclerview
- Behavior
- Algorithm
- 알고리즘
- DataBinding
- 코틀린
- 알림
- 안드로이드
- Coroutine
- notification
- sqlite
- CollapsingToolbarLayout
- activity
- onMeasure
- Today
- Total
목록kotlin (43)
개발일지
Singleton Pattern 객체를 생성할 때 생성자가 호출되고 메모리에 올라가는 등 비용이 발생한다. 만약 객체를 생성할 때 비용이 크다면 객체를 자주 생성하는 일은 시스템에 부담이 클 것이다. 싱글톤 패턴은 객체를 한번만 생성하고 생성된 객체를 재사용하면서 객체의 재생성 비용을 줄이는 디자인 패턴이다. Database를 연결하고 접근하는 객체를 예로 들어 생각하면 DB를 연결할 때 드는 비용은 매우 비싸다. 하지만 연결을 한번 하고 생성된 객체를 재사용한다면 연결 비용을 줄일 수 있을 것이다. * 인스턴스화 하는 비용을 줄일 수 있다는 장점을 가지지만, 한번 생성한 인스턴스를 반납하지 않기 때문에 무분별한 싱글톤 패턴 사용은 오히려 메모리 낭비를 일으킨다. * 싱글톤 패턴은 객체간 결합도를 높이기..
Gson을 사용하여 Number Type을 변경할 때 Int형을 Double로 자동으로 변경하는 경우가 있다. Gson은 Number Type을 기본으로 Double로 변경하기 때문인데 TypeToken을 통해 Type을 지정해주자! Gson().fromJson(json, object : TypeToken() {}.type)
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cmbOKa/btreo5Hc0T0/ZK3dIlvn5nvuqTdeDwdQg1/img.png)
https://programmers.co.kr/learn/courses/30/lessons/68937 코딩테스트 연습 - 트리 트리오 중간값 5 [[1,5],[2,5],[3,5],[4,5]] 2 programmers.co.kr 접근 1. 트리의 지름을 구할 수 있는 임의의 정점을 찾고 해당 정점과 다른 정점들 사이의 거리 중 2번째로 큰 값을 반환했다. => 12번 테스트 케이스에서 오답. 1번의 반례 위와 같은 그래프는 A-B를 통해 트리의 지금을 구할 수 있다. 해당 경우 A와 다른 정점들 사이의 거리 중 2번째로 큰 값을 반환한 값보다 (A, B, C)의 중간값이 더 크다. => 트리의 지름을 d라고 할 때 정점들 사이의 거리 중 d가 2개 이상 나올 수 있는 경우를 놓쳤기 때문에 1번 풀이법은 옳..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Z571s/btrbkVghBay/Wj1GPvl0snMMHcGXF08RGk/img.png)
Flow Flow는 Coroutine에서 여러 값을 순차적으로 보내는 유형입니다. Jetpack에서도 많이 쓰이는 유형이고, Iterator와 비슷하며 map, filter등 람다 함수를 지원하면서 suspend 함수에서 쓰이기 때문에 비동기 처리에 효율적입니다. Flow 구성 Producer : Flow Builder에서 비동기적으로 데이터를 생산한다. Intermediary : Stream에서 보내는 데이터를 소비하지 않고 수정한다. Consumer : 값을 사용한다. Producer Flow Builder를 통해 만든다. flow, channelFlow등 다양한 함수가 존재한다. Builder를 통해 Data를 만들고 emit을 통해 Data를 전달한다. Consume하는 함수가 수행될 때마다 Fl..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bt2S4L/btqZV6Uaf9j/trBy1rTXa3EX0wKCKK7BXK/img.png)
URLConnection Java에서 HTTP 통신을 제공하는 기본적인 라이브러리이다. JDK 1.1 시절부터 있던 라이브러리고 JDK 1.1은 1997년 2월 19일에 나왔다. 즉 1996년 HTTP/1.0을 기준으로 개발한 라이브러리기 때문에 버그가 있을 수도 있다. 코드 private fun getUrlencoded() { thread { (URL("${getURL()}?${getParameter()}").openConnection() as HttpURLConnection).apply { doInput = true doOutput = false requestMethod = "GET" connectTimeout = 3000 readTimeout = 3000 setRequestProperty("Cont..
HTTP (Hypertext Transfer Protocol) 웹 브라우저와 웹 서버 간의 통신을 하기 위한 규약이다. 특징 HTTP는 서버/클라이언트 모델을 따른다. 비연결 지향 클라이언트가 Request를 보내면, 서버는 클라이언트의 요청에 맞는 Response를 보내고 연결을 끊는다. 연결이 끊어지면 서로의 정보를 유지하기 때문에 정보를 잃는다. => 쿠키와 세션으로 해결가능 지속적으로 연결되는 형태가 아니기 때문에 불특정 다수를 대상으로 서비스하기 좋고, 많은 요청을 처리할 수 있다. HTTP Request Message Start Line : HTTP 시작부분 HTTP Method Request Target(목표 주소) HTTP Version HTTP Header Host : Host URL A..
drop N개의 숫자만큼 앞에서부터 버리고 나머지를 리턴한다. fun main() { val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val drop = list.drop(5) println(list) println(drop) } [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [6, 7, 8, 9, 10] dropLast N개의 숫자만큼 뒤에서부터 버리고 나머지를 리턴한다. fun main() { val list = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) val drop = list.dropLast(5) println(list) println(drop) } [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [1, 2, ..
any() Collection에 하나라도 있으면 true => 만족하는 하나를 찾을때까지 검사한다. fun main() { val list0 = listOf() println(list0.any()) val list1 = listOf(1, 2, 3) println(list1.any()) val list2 = listOf(1, 2, 3, 1, 2, 3) list2.any { println(it) it == 3 } } false true 1 2 3 all() 모든 원소가 일치하면 true => 전부다 검사하거나, 중간에 일치하지 않는 원소가 있으면 끝난다. fun main() { val list0 = listOf() println(list0.all { it > 0 }) val list1 = listOf(1, ..