기술공부 167

코틀린 - 고차함수와 람다식2 (고차함수, 람다식 사례)

고차함수와 람다식1에서는 개념적인 설명, 2에서는 사례를 써놓는다. 1. 동기화 관련 사례 동기화: 변경이 일어나면 안되는 특정 코드를 보호하기 위한 잠금 기법 임계 영역(Critical Section): 동기화로 보호되는 코드 -> 보통 try ~ finally 블록으로 많이 쓴다. -> try에서 뻑나도 finally는 실행되니까 공유자원에 대한 잠금은 막을 수 있음 특정 공유 자원을 쓰고싶을 때 공유자원에 아무나 접근하면 안되니까 1. 내가 쓸 동안 아무도 건들지마 -> Lock 라이브러리의 lock() 함수 호출 2. 임계 영역에 수행할 작업 코드 작성 -> 쓰는중.. 3. 다 썼으니 이제 너네 써 -> Lock 라이브러리의 unlock() 함수 호출 var sharable = 1 fun Lock..

Deperecated/Kotlin 2020.04.10

코틀린 기본 3 - (함수, 함수형 프로그래밍)

1. 함수 간략하게 만들기 ( 대박 ) fun sum(a : Int, b : Int) : Int { return a+b } fun sum(a : Int, b : Int) : Int = a + b fun sum(a : Int, b : Int) = a + b 2. 인자와 매개변수 fun sum (a: Int, b:Int) = a+b fun main() { println($sum(5,3)) } a,b = 매개변수 5,3 = 인자 함수를 선언할 때는 매개변수라고 부르고 함수를 호출할 때는 인자라고 부른다. 3. 함수와 스택 프레임 함수의 각 정보는 프레임(Frame)이라는 이름으로 스택 메모리의 높은주소에서부터 낮은주소로 거꾸로 자라듯이 채워져 간다. 호출된 순서대로 스택 프레임에 쌓이게되며, 사라질 때는 스택..

카테고리 없음 2020.04.09

코틀린 기본3 - 비트연산자

홀리쉣 난 비트연산이 너.무.싫.엉~ 1. 코틀린의 비트 연산자 사용 예 설명 4.shl(bits) 비트만큼 왼쪽으로 이동 7.shr(bits) 비트만큼 오른쪽으로 이동 (쉬프트+R/L인듯) 12.ushr(bits) 비트만큼 오른쪽으로 이동( 부호없음) 9.and(bits) 9를 표현하는 비트와 bits를 표현하는 비트로 논리곱연산 4.or(bits) 4를 표현하는 비트와 bits를 표현하는 비트로 논리합 연산 24.xor(bits) 24를 표현하는 비트와 bits를 표현하는 비트의 배타적 연산 78.inv() 78을 표현하는 비트를 모두 뒤집음 2. 디버깅 도구로 비트 연산 과정 보기 브렉포인트 -> 변수 -> view as -> Binary로 보기 가능

카테고리 없음 2020.04.08

코틀린 기본 -2 (변수)

코틀린은 변수를 사용할 때 반드시 값이 할당되어 있어야 한다는 원칙이 있다. 1. NULL 코틀린이 NPE에서 자유로울 수 있는 이유는 위 원칙에 따라 변수에 아예 NULL을 허용하지 않기 때문이다. 코틀린에서는 NULL 상태인 변수를 허용하려면 물음표(?) 기호를 사용해 선언해야 한다. 이 변수를 사용하는 순간 NULL을 검사하고 처리하는 방법까지 고려해야 한다. 2. 세이프 콜과 NON-NULL 단정 기호를 활용하여 NULL 허용 변수 사용하기 2-1) 세이프 콜 -> ?. NULL이 할당되어 있을 가능성이 있는 변수를 검사하여 안전하게 호출하도록 도와주는 기법 println("str: $str1 length: ${str1?.length}") str1이 null이 아니면 멤버변수인 length에 접근..

Deperecated/Kotlin 2020.04.08

코틀린 프로젝트 구성

코틀린 프로젝트는 모듈, 패키지, 파일로 구성되어 있다. 프로젝트를 여행에 비교하자면 모듈 = 목적지 / 패키지 = 캐리어 / 파일 = 캐리어 속의 짐 1. 그들의 관계.. 프로젝트 안에는 n개의 모듈, n개의 패키지, n개의 파일이 들어있다. 큰 프로젝트에서는 대체로 기능을 모듈로 분리해서 사용한다. 파일안에는 n개의 클래스가 올 수 있으며, 2개 이상의 클래스가 포함되어있을 경우 IDE 파일 관리자 화면에 파일에 .kt확장자가 포함되서 나타나며 1개만 들어가있다면 그냥 클래스 이름만 보이게 된다. 패키지를 만들어야 하는 이유는 파일(클래스)이름이 같더라도 패키지가 다르다면 다르게 이식하기 때문에 대규모 프로젝트에선 클래스 이름이 같아서 일어나는 오류를 피하기위해 패키지를 만드는것이 좋다.

Deperecated/Kotlin 2020.04.07

<2020.04.06> Android_Weekly #408

안드로이드 위클리를 읽고 새로 알게된 개념에 대해 간단히 써놓는 카테고리 1. App Standby Buckets https://medium.com/mindorks/app-standby-buckets-in-android-ada2d2929350 App Standby Buckets In Android Google has been continuously making changes in every version of Android for better user experience. Battery(power) optimisation is among… medium.com 안드로이드 파이(Version 9 API LEVEL 28)에 소개된 Adaptive Battery를 위한 기능. 앱을 4가지 버킷으로 나눠서 관리한..

Http 네트워크

https://developer.mozilla.org/ko/docs/Web/HTTP/Overview HTTP 개요 HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버 프로토콜이란 (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미합니다. 하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성됩니다. developer.mozilla.org https://developer.android.com/training/basics/network-ops/connecting.html 네트워..

카테고리 없음 2020.03.09