728x90

분류 전체보기 166

Kotlin Coroutine Job

Jobs 코루틴에서 Job 이란 무엇일까? 컨셉적으로는 LifeCycle 에서 취소될 수 있는 것을 뜻한다. Job 을 알아야 하는 이유는 내가 알기론, 모든 ㄴKotlin Coroutines Library 를 이용해 만든 CoroutineBuilders 는 Job 을 만든다. Deffered 또한 Job Interface 를 상속하고 있다. Structured Concurrency Job 또한 코틀린의 기본원칙인 Structured Concurrency 를 따른다. 만약, Structured Concurrency 를 모른다면, 다시 이전포스트를 공부하고 오는게 좋다. 하여튼, 그래서 아래 Job 이 취소되거나, 부모 Job 이 취소될 경우 그 Scope 는 Cancel 될 것이다. Job LifeCyc..

Kotlin 2022.07.01

Kotlin) 변성

변성 (Variance) Generic Type 의 대체 가능성을 정의 (무공변, 반공변, 공변), 변성은 Genrice Parameter Type 간의 관계를 나타낼때 쓰이는 단어임. 무공변(invariance) Generic 의 Parameter Type 은 각각 고유하므로 GenericType 사이의 대체 가능성은 기본적으로 성립하지 않음. 이 상태가 무공변(invariance) 상태임. 이 말을 듣고 느낀 점은, 지금 까지 Generic Parameter 에 넣는 Type 을 자꾸, 내가 생성한 Class 들의 상속관계로 가져와서 생각하다보니, 공변을 한동안 이해하기 어려웠던 건가? 이런 생각이 들었다. class Tree(val value: T) var tree: Tree = Tree(10) /..

Kotlin 2022.06.30

Coroutine Builder

CoroutineBuilder Kotlin 에서 Suspend function 은 normal function 에서 호출할 수 없다. Suspend Function 은 오로지 Suspend Function 에서만 호출되어야 한다. 하지만 우리가 Suspend 를 사용해야 하는데, 모든 함수가 suspend 일 수 있을까? 적어도 main(프로그램 진입점) 은 suspend 하지 않을 수 있다. 그래서 코틀린은 suspend scope 를 만들 수 있도록 corutineBuilder 를 제공한다. 대표적으로 제공하는 세가지 corutineBuilder (launch, runBlocking, async) 에 대해 공부해보자. launch builder launch builder 는 concept 적으로 새로..

Kotlin 2022.06.27

Code 와 Blocking And Sync Model 에 관하여

개요 이 문서에서는 Blocking Structure / NonBlocking Structure 에 대해 내가 알고 있는 지식들을 연결하여 설명할 예정이다. 따라서 내용이 좀 길어질 수 있으며, 누군가에겐 루즈한 글일 수도 있다. Code Flow 현재 우리가 대중적으로 사용하는 컴퓨터에서 우리가 작성하는 Code 를 실행시키는 과정은 기본적으로 위에서 아래로 흐르려고 하는 성질이 있다. 나는 이를 "Top-Down" 이라고 표현한다. 가끔 condition 이나 go, switch 같은 회로를 만나면 위로 역전되는 현상이 있기도 하지만, 기본적으로는 위에서 아래로 흐르려는 방향이 있다. 즉, 그래서 대부분 우리는 코드를 동기적으로 짜는데 더 익숙할 수 밖에 없다. 기본적으로 이 문장 실행후 아래 문장이..

CS 2022.06.24

Inclusion / Exclusion Of Elements

Inclusion / Exclusion Of Elements 원소들은 어떤 집합에 포함될 수도, 포함되지 않을 수도 있다. 원소 a 가 집합 A 에 포함됨. $a \in A$ 원소 a 가 집합 A 에 포함되지 않음. $a \notin A$ Equal Sets 집합 A 의 모든 원소가 B 에 포함되고, 집합 B 의 모든 원소도 A 에 포함될때, A, B 는 서로 같은 집합이다. $A = {A, B, C} , B = {A, B, C}$ 일때, A 와 B 는 Equal Set 이다. $A = B [(\forall a \in A) \in B] \wedge [(\forall b \in B) \in A]$ Inclusion / Exclusion Of Sets SubSets 집합 A 의 모든원소가 집합 B 에 포함될..

Math 2022.06.20

Kotlin Coroutines

Kotlin Coroutines 에 대한 공부를 최근에 많이 하고 있는데 하면서 느껴지는 점은 Thread 간의 Context Switching 에 관한 내용을 Heap 으로 관리할께 라는 느낌이 강하게 들었다. 예전에는 어떻게 Context Switching 을 적은비용으로 한다는 거지 싶었는데, 이제는 대략적으로 이해가 간다. 언제 글을 정리할까 했다가 오늘 천천히 정리해보려고 한다. 기존 Context Switching 의 문제 일단 아주 간단하게 설명하겠다. 어차피 지금 글에서 이 내용이 중요한건 아니니까. 각 Thread 는 Local Stack 등 자신만의 데이터를 가지고 있는데, 다른 Thread 와 Switching 해야 할때 자신의 작업정보를 넘겨주어야 한다. 즉, Process Swit..

Kotlin 2022.06.19

Algebraic Properties And Equations

Algebraic Properties 이 아래 법칙은 모든 연산에 적용되는 것은 아니고, 이것이 적용된다고 증명된 연산에서 사용할 수 있는 법칙 같다고 생각함. 아래 법칙을 규정하는데 사용되는 모든 연산자나, 변수는 특정 연산자를 가르키는 것이아니라, abstract 하다고 생각하면 됨. Commutative Property (Law) $a \diamond b = b \diamond x$ 각 LHS, RHS 의 Variables 의 순서를 바꿔도 동등성이 성립함. 예를 들면 아래 처럼 $b \diamond a = x \diamond b$ Associative Property (Law) $(a \circ b) \diamond c = c \diamond (a \circ b)$ Destributive Prop..

Math 2022.06.19

Go 기초 - 1) Go 의 모듈구조 및 변수

Go Lang 폴더 생성 goproject/hello/extra위와 같은 폴더구조를 지니게 됬다면, hello 폴더 아래있는 모든 .go 파일들은 hello package 에 포함됩니다. 그리고 만약 extra package 에 포함되어 있는 .go 파일들은 extra package 에 포함되게 됩니다. 즉, go 에서는 폴더가 달라지면 package 도 달라집니다. Kotlin 과 Java 와는 약간 다른 구조다. create Go module go mod init goproject/hello go module 에는 NPM 진영의 package.json 과 같이 모듈명과 go-version 및 필요한 정보가 담겨있습니다. Go build go build 위 명령어를 입력하면 go file 들이 buil..

Go 2022.06.19

코드스피츠 코틀린 3강 정리

Week3 Kotlin OOP Constructor Kotlin 에서는 기존 Java 나 다른 언어처럼 아래와 같이 Constructor 를 선언하는 것이 가능하다. class TestUser { private val user: String, private val pw: String, constructor(user: String, pw: String) { // SubConstructor this.user = user this.pw = pw } constructor(user: String) { // SubConstructor Overloading this.user = user this.pw = pw } } 하지만 주 생성자에 한해서는 좀 더 다른 방법으로 선언이 가능하다. 코틀린에서 이렇게 선언되는 Con..

Kotlin 2022.06.18

OSI 7 계층과 TCP / IP

OSI 7 계층은 네트워크 지식을 공부하게 되면 한번쯤은 듣게 되는 용어중 하나이다. 오늘은 OSI 7 Layer 가 무엇이고, 왜 만들어졌는지를 공부해보려고 한다. 과거 과거에는 통신에 대한 규약이 정확하게 존재하지 않았다. 그래서 벤더사마다 통신규약을 다르게 정의했고, 이는 상호간의 통신규약을 통일하는데 무척 힘들게 하는 요인 중 하나였다. 그래서 이를 통일하기 위해 OSI 7 Layer 라는 표준이 등장했다. OSI 7 Layer? 계층 영어 표기 한국어 표기 주요 프로토콜 7계층 Application Layer 애플리케이션 계층 HTTP, FRP, SMTP L7 6계층 Presentation Layer 프리젠테이션 계층 TLS, AFP, SSH L6 5계층 Session Layer 세션 계층 L2..

카테고리 없음 2022.06.14
728x90