일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- 안드로이드 웹뷰
- 파이썬 데이터분석
- Play2
- 엔터프라이즈 블록체인
- 하이퍼레저 패브릭
- 플레이프레임워크
- 스칼라 동시성
- 스칼라 강좌
- CORDA
- Adapter 패턴
- 파이썬 강좌
- Golang
- 주키퍼
- 하이브리드앱
- akka 강좌
- 파이썬 동시성
- Actor
- 그라파나
- play 강좌
- hyperledger fabric
- Play2 로 웹 개발
- 스위프트
- 파이썬 머신러닝
- Hyperledger fabric gossip protocol
- 블록체인
- 스칼라
- 이더리움
- 파이썬
- Akka
- play2 강좌
- Today
- Total
목록Kotlin (10)
HAMA 블로그
1. 디폴트 값으로 대처 interface Transfer { fun moveTo(id : String) } interface Asset{ val id: String val name: String val data: String } class Token( override val id: String, override val name: String, override val data: String) : Asset,Transfer{ override fun moveTo(id: String) { TODO("Not yet implemented") } } class NFT( override val id: String, override val name: String, override val data: String) : A..
소프트웨어 엔지니어링에서 풀의 종류는 다양한데요. 쓰레드풀,메모리풀,캐쉬풀,커넥션풀,객체풀 등등이 있습니다. "풀"어서 말하면 미리 만들어두고 돌려막기로 사용하자 라고 볼 수 있는데요. 미리 만들어 두는 방식 / 쓰레드가 태스크를 처리하는 방식/ 동기,비동기에 따라서 다양한 풀의 구현체들이 있을 수 있습니다. 이 글에서는 Kotlin으로 객체풀을 만드는 간단한 예제를 보여 줍니다. 1. 리스트를 이용한 고정크기 동기 객체풀 import java.lang.IllegalStateException import java.util.concurrent.TimeUnit import java.util.concurrent.locks.ReentrantLock import kotlin.concurrent.withLock i..
Coroutine // THREAD 방식 fun main() { val startTime = System.currentTimeMillis() val counter = AtomicInteger(0) val numberOfCoroutines = 100_00 val jobs = List(numberOfCoroutines) { thread(start = true) { Thread.sleep(100L) counter.incrementAndGet() } } jobs.forEach { it.join() } val timeElaspsed = System.currentTimeMillis() - startTime println(timeElaspsed) } // Coroutine 방식 import kotlinx.corout..
class Tuple(vararg elements: Any) { val elements: Array init { this.elements = elements as Array } fun get(index: Int): Any { return elements[index] } fun size(): Int { return elements.size } override fun hashCode(): Int { return Arrays.deepHashCode(elements) } override fun equals(o: Any?): Boolean { if (this === o) return true if (o == null || javaClass != o.javaClass) return false val other = ..
상황은 다음과 같다. 어느 온라인서점에는 멤버별로 금,은,동의 등급이 있으며, 각 멤버에게 등급별로 베네핏을 주려고 하며, 베네핏의 종류는 A,B,C가 있다. 멤버는 각 베네핏을 모두 합친 만큼의 베네핏을 받을 수 있다. 원래 베네핏에 대한 로직은 더 복잡해 질 수 있지만, 예제에서는 10,20,30점으로 굉장히 단순화 하였다. code1) enum class GRADE { BRONZE, SILVER, GOLD } class Member(val grade: GRADE) { fun calcBenefit(): Int { var total = 0 when(grade) { GRADE.BRONZE -> { // discount benefit total += 10 // coupon benefit total += 2..
컨베이어 공장에서 자동차가 완성 될 때 단계별로 조금씩 완성되어 가는 모습을 볼 수 있다. 이런 비슷한 경우는 소프트웨어 개발에서도 흔하며, 그 결과로 관련 패턴들도 매우 다양하게 있지다. Gof의 Chain of Responsibility패턴은 모든 과정을 거치는게 아니라, 처리 할 수 있으면 처리하고, 못하면 다음 녀석에게 넘기는 "의도"를 말한다. 그리고 이 글의 제목이기도 한 Intercepting Filter의 경우는 (웹개발자 라면 친숙한 HTTP가 호출되어서 최종 컨트롤러 까지 갔다가[inbound], 다시 HTTP리턴을 해주는[outbound] 모습을 상상해 보자) 단계별로 모든 처리를 진행해서 타겟까지 호출되고, 타겟에서 최종 처리된 결과를 역순의 단계로 다시 돌아오는 모형에서 중간 중간..
Dynamic Proxy & Reflection 1 class Tuple3 (val name:String, val age: Int, val rate: Double){ fun size(): Int { return 3 } fun getValue(index: Int): Any?{ return when(index) { 0 -> name 1 -> age 2 -> rate else -> null } } } class RemoteService{ fun action(req: Any?): Tuple3 { //do something return Tuple3("tom", 1, 1.2) } } /// data class Row(val name: String, val age: Int, val rate: Double) inter..
import jdk.nashorn.internal.ir.Block import java.util.concurrent.locks.ReentrantLock import kotlin.concurrent.thread import kotlin.concurrent.withLock class Future { lateinit var result: String var isDone = false val lock = ReentrantLock() val condition = lock.newCondition() fun get() : String { if(isDone) return result // (1) lock.withLock { condition.await() } return result } fun set(result: S..
interface Account { } class EthreumAccount(val gas: Int) : Account{ } class FabricAccount(val org: String) : Account { } class BlockChain(val networks : Map) { fun send(account: Account) { when(account) { is EthreumAccount -> { val gas = account.gas val network = networks.get("eth") println("send to ${network} with gas: ${gas}") } is FabricAccount -> { val org = account.org val network = network..
아래와 같은 이런 타입 시그니처 본 적이 있나요? Entity 처음 이런 모습을 보았을때, "머야 이 퐝당한 코드" 같은 생각이 드는건 어쩌면 당연합니다. 그리고 이것에 대해 알아 보기 위해 구글링등을 하기 시작 했을테고, 결국 이 블로그를 찾아 왔을 지도 모르겠네요. 그렇다면 잘 찾아 왔습니다. 도대체 이것은 뭘 까요? 보통 우린 interface Entity이 정도로만 써 왔지 않습니까? 하지만 알고보면 매우 간단하니깐 겁먹지 말고 , 간단한 예를 통해서 이해해 봅시다. 이것을 이해하기 위한 기본적인 부분들도 설명을 하니깐 걱정마세요. 1. 인터페이스 먼저 코틀린에서의 인터페이스를 살펴 봅시다. interface MyInterface { fun bar() } 일반적으로 내용이 없는 메소드들을 선언합니..