본문 바로가기

전체 글

(163)
Kotlin 지연 초기화 lateinit / by lazy 늦은 초기화를 하는 이유 : 변수를 꼭 사용하지 않을 경우 메모리 낭비 lateinit과 by lazy의 차이 lateinit var getter/setter 정의 x 초기화 꼭 하고 사용해야함 직접적 프로퍼티 by lazy val (생성 후 값을 변경 할 수 없다.) 선언시 초기화 코드 선언된 프로퍼티를 위임하는 것 필드에 최초 접근했을 때만 값을 초기화 "지연 초기화" by lazy처럼 위임하지 않지 않는 방법도 있다. class LazyProperty(val initializer: () -> Int) { var age:Int ?= null val lazy: Int get() { if(age == null){ age = initializer() } return age!! } }
Kotlin map flatmap .flatMap() 각 요소에 대해 map을 수행한 후 결과를 새로운 배열로 평평하게 펴준다. 즉, iterable을 평평하게 펴준다는 뜻 map처럼 결국은 배열을 리턴한다. 대상 배열의 요소가 3개라면 flatMap은 내부적으로 3번 호출된다. map은 무조건 1대1 매핑이지만 flatMap은 1대1 뿐만 아니라 1대다 매핑이 가능하다. flatmap에 넣어주는 값은 iterable한(반복 가능한) 값이어야 한다.
Kotlin fold reduce Collection내의 데이터를 모두 모으는(accumulate) 역할 reduce는 초기값이 없이 첫번째 요소부터 시작하고, fold는 초기값을 지정할 수 있다. 빈 Collection에서는 fold는 정상출력이 되지만 reduce는 에러가 발생한다. (초기값이 없어서일듯)
Kotlin object 보호되어 있는 글입니다.
Kotlin 확장 함수 Extension function (확장 함수) : 기존에 정의된 클래스에 함수 추가 내가 만든 클래스가 아니면 함수를 추가하기 어렵기 때문에 생김. 즉, 실제로 추가되는 것은 아님on function (확장 함수) : 기존에 정의된 클래스에 함수 추가 / 오버라이딩 불가능 내가 만든 클래스가 아니면 함수를 추가하기 어렵기 때문에 생김. 즉, 실제로 추가되는 것은 아님 ex) 라이브러리
Native Development Kit (NDK) SDK : UI 기반으로 특화된 API를 제공하여 Application Level에서 개발이 가능하게 도와주는 패키지 java만 사용하여 필요한 기능과 성능을 모두 만족시키기는 힘들다. 안드로이드는 자바를 활용했기 때문에 자바의 한계점을 그대로 가지고 있다. ex) 그래픽 처리, 센서 값 처리 등 CPU의 처리 속도가 중요한 부분 그래서 C나 C++ 언어로 작성된 프로그램을 java에서 사용할 수 있도록 JDK에서 제공하는 것이 JNI(Java Native Interface) 그리고 NDK는 이것을 가능하게 해주는 네이티브 개발 도구, 툴킷이다. 정의 : C/C++을 이용하여 애플리케이션, 미들웨어 개발에 사용되는 Framework NDK를 사용하여 얻을 수 있는 장점 1. 기존에 C로 만들어진 대규모 ..
Java Native Interface (JNI) 자바는 특정 운영체제에 종속되지 않도록 JVM이라는 가상머신 위에서 실행되게끔 만들어진 언어이다. 운영체제에 맞는 JVM이 각각 존재하기 때문에 Java 개발자는 하나의 java 파일만 만들면 운영체제와 상관없이 원하는 결과물을 얻을 수 있다. 하지만 그렇기 때문에 운영체제의 모든 기능을 JVM이 담지 못하고 그 대처 방법이 바로 JNI이다. JNI은 자바의 성능을 넘어선 플랫폼 특정적인 작업을 수행할 경우에 운영체제가 구현된 언어 (C, C++)로 운영체제 고유의 기능을 만든다. 그리고 그것을 자바 메서드와 연결해주는 역할을 한다. 하지만 자바 메서드처럼 동일한 보호는 받지 못한다.
프로그래머스42885 - 이중 for문 성능 올리기 size(), length(), length등 길이를 계산하는 함수를 최소화한다. (특히 종료조건에서) 반복문 안에서 배열 사용을 최소화 -> 임시 변수를 사용하자 break, continue문을 활용하자 정말 이중 for문이 필요할까? 다시 생각해보자 효율성 테스트에서 막혀서 계속 고쳐보았다. 원래 코드 import java.util.*; class Solution { public int solution(int[] people, int limit) { int count = people.length; Arrays.sort(people); int tempI; for(int i=count-1; i>0; i--){ tempI = people[i]; for(int j=i-1; j>=0 ; j--){ if(tem..