본문 바로가기

분류 전체보기

(65)
코루틴 상태는 한 방향으로 이동 코루틴의 상태는 한 방향으로만 이동한다. 이전 상태로 되돌아 가지 않는다는 의미이다. fun main(args: Array) = runBlocking { val time = measureTimeMills { val job = GlobalScope.launch { delay(2000) } job.join() job.start() job.join() } println("Took $time ms") } 총 실행에는 약 2초가 걸렸으므로 잡이 한 번만 실행됬음을 보여준다. 잡이 완료 상태에 도달하였기 때문에 start()를 호출해도 아무런 변화가 없다.
코루틴 1탄 코루틴에 대해서 혼자서는 많이 공부하긴 했는데 한번도 블로그에 올린적은 없네요. 나중에 한번 정리해서 올리도록 하겠습니다. 오늘은 코루틴을 제가 오늘 본 내용에 대해서 포스팅 할게요. 일단 코루틴 디스패처에는 이름을 붙일 수 있습니다! val dispatcher = newSingleThreadContext(name = "ServiceCall") val task = GlobalScope.launch(dispatcher) { printCurrentThead() } task.join() fun printCurrentThread() { println("Running in thread [${Thread.currentThread().name}]") } 이렇게 하게 되면 결국 프린트는 "Running in threa..
maven 은 도대체 무엇인가 일단 저는 지금 테스트 자동화에 관심이 갑자기 생겨서 appium이라는 걸 해보려고하는데 maven 프로젝트를 만들라고 하더라구요. 그래서 도대체 maven 이 뭔가 알아보는 시간을 가지려고 합니다. Apache Maven은 자바용 프로젝트 관리도구로 오픈 소스 소프트웨어라고합니다. 설명을 하면 jar 파일은 공유하고 메일이나 카톡으로 주고받고하면 번거롭기 때문에 이러한 라이브러리를 편하게 공유하고자 나온것이 maven 입니다. 필요한 라이브러리를 특정 문서 (pom.xml)에 정의해 놓으면 네트워크를 통해서 라이브러리를 자동으로 다운받아줍니다. Maven의 라이프사이클 Maven build : 메이븐 빌드를 실행한다. Maven build.... :새로운 사용자 빌드를 만든다. Maven clean :..
일급컬렉션 일급 컬렉션은 비즈니스에 종속적인 자료구조를 하나 만든다고 생각하면 된다. 이런 코드를 Map map = new HashMap(); map.put("1", "A"); map.put("2", "B"); map.put("3", "C"); 한번 감싸는 것을 의미합니다. public class GameRanking { private Map ranks; public GameRanking(Map ranks) { this.ranks = ranks; } } 장점은 상태와 행위를 한곳에서 처리할 수 있다는 것이다. 예를 들어 Rank값을 validation 하는 코드가 필요하다면 아래처럼 행위와 상태에 대한 행동을 GameRanking이라는 클래스에서 한번에 처리할 수 있다. public class GameRanking..
Java의 배열 Java에서 배열 이번에 java로 코드를 짜다가 int[] position 이라는 값을 hashMap에다가 저장해두려는 의도로 간략히 아래와 같이 코드를 짰습니다. int[] position = new int[4]; hashMap record = new hashMap(); for(int i = 0; i
Enum에 대해서 상수를 정의할 때 final static String 과 같은 방식으로 상수를 정의한다. 그것을 개선하기 나온 것이 enum class다. Enum의 장점 1. IDE 지원 : 동완성, 오타검증, 텍스트 리팩토링 등등 2. 허용가능한 값을 제한할 수 있다. 3. 리팩토링시 변경범위가 최소화된다. C/C++의 경우는 Enum이 결국 int 값이지만, Java의 경우는 Class이기 때문에 더 많은 장점이 있다. - 데이터들의 연관관계 표현 Enum을 사용하지 않으면 직접 메소드에서 각 값을 매칭해서 리턴해야 했다. 예를 들면 ("Y","true","1"), ("N","false","0") Enum에서는 표현할 수 있다. enum Enum{ Y("1", "true"), N("0", "false"); priv..
Kotlin에서 Unit 과 Nothing val nullableValue: String? = null val value: Int = nullableValue?.toInt() ?: return Unit 타입 : 코틀린의 void 코틀린이 void와 다른점 Unit은 싱글톤 인스턴스이다. 코틀린에서 Unit은 키워드 타입이며 동시에 객체이기도 하다. val unit: Unit = Unit Unit은 객체기도 하며, Any의 자식이다. Generic type으로 Unit을 지정하면 return을 명시적으로 넣지 않아도 된다. 만약 Void type이라도 return은 반드시 넣어야 하나 코틀린의 Unit은 return 없이 사용 가능 자바에서 void는 존재하지 않음을 뜻하지만 코틀린에서 Unit은 아무것도 반환하지 않는 타입을 의미한다. 따라서 자..
코틀린에서 Sequence와 SAM 코틀린에서 Sequence란? 사용법 val list = listOf("one","two","three") val sequenceFromList = list.asSequence() val sequence = sequenceOf("four", "three", "two", "one")Collections 확장 함수의 경우 각 확장 함수를 호출할 때마다 새로운 Collection이 생성되어 전환된다. val list = listOf(1, 2, 3) // [1, -2, 3] 생성 val maxOddSquare = list .map{ it * it } // [1, 4, 9] 생성 .filter { it % 2 == 1 } // [1, 9] 생성 .max()총 3개의 intermediate collection이 생..