본문 바로가기

전체 글92

Log 란? 로그는 수학적인 개념으로, 특정 숫자를 다른 숫자로 어떻게 거듭제곱해야 하는지를 나타내는 함수입니다. 로그 함수는 다음과 같이 표현됩니다: 여기서: b는 로그의 밑(base)이며, 로그를 어떤 수로 거듭제곱해야 하는지를 결정합니다. x는 로그 함수에 입력되는 값이며, 어떤 숫자를 거듭제곱하여 y가 되는지를 나타냅니다. y는 로그의 결과값입니다. 이를 다시 풀어서 설명하면, 입니다. 즉, 로그 함수는 주어진 밑 b에 대해 어떤 수를 거듭제곱하여 특정 값 x를 얻을 수 있는지를 계산합니다. 로거리듬(logarithm)은 거듭제곱의 역연산이라고 생각할 수 있습니다. 예를 들어, 2를 밑으로 8의 로그를 구한다면 log⁡2(8)=3log2(8)=3이 됩니다. 이는 2를 3번 거듭제곱하면 8이 된다는 의미입니다. 2023. 11. 22.
[Kotlin] 코루틴 동기화 방법 코루틴은 동시성 작업을 다루는 데 유용한 도구이며, 동시에 여러 코루틴이 접근하는 공유 데이터에 대한 동기화를 효과적으로 처리할 수 있습니다.  1. Mutex (Mutual Exclusion) 코루틴 간에 공유된 데이터에 안전하게 접근하기 위해 Mutex를 사용할 수 있습니다. Mutex는 임계 영역(Critical Section)을 설정하여 한 번에 하나의 코루틴만 해당 영역에 접근할 수 있게 합니다. import kotlinx.coroutines.* import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock var sharedVariable = 0 val mutex = Mutex() suspend fun incremen.. 2023. 11. 22.
[Kotlin] ReentrantLock ReentrantLock은 Java에서 제공하는 동기화를 위한 클래스 중 하나로, 명시적인 락(또는 잠금)을 제공하여 다중 스레드 환경에서 안전하게 공유 자원에 접근할 수 있도록 도와주는 도구입니다. "Reentrant"는 재진입을 의미하며, 스레드가 이미 획득한 잠금을 여러 번 다시 획득할 수 있다는 것을 나타냅니다. 이는 재진입이 가능하다는 특징을 가지고 있습니다. ReentrantLock은 Lock 인터페이스를 구현하고 있으며, 기존의 synchronized 키워드보다 더 많은 기능을 제공합니다. 몇 가지 주요 특징은 다음과 같습니다: 재진입 가능(Reentrant): 스레드가 이미 획득한 락을 여러 번 재진입할 수 있습니다. 공정성 설정 가능: ReentrantLock은 생성자에게 공정성 여부를 .. 2023. 11. 22.
[Kotlin] 스레드간 동기화 방법 1. Synchronized 메서드: class MyRunnable : Runnable { private var sharedVariable = 0 // synchronized 메서드 @Synchronized private fun increment() { sharedVariable++ } override fun run() { for (i in 0 until 10000) { increment() } } } 2. Synchronized 블록: class MyRunnable : Runnable { private val lock = Any() private var sharedVariable = 0 override fun run() { for (i in 0 until 10000) { synchronized(lock.. 2023. 11. 22.