왜 2의 보수를 음수 표현에 사용할까?
·
Computer Science
자바/코틀린 개발을 하면서 가끔 기본 API 구현체들을 보다 보면 비트 연산자가 많이 보이더라고요. 비트 연산 자체는 알지만 활용하는 방법은 잘 모르다 보니 그 부분에 대해 많이 찾아보면서 공부했어요. 그러다가 궁금증이 하나 생겼어요.왜 2의 보수를 음수 표현에 사용을 하게 되었는가... 다른 방식은 없었던 걸까? 이 궁금증을 해소하기 위해 자료도 찾아보고, 어느 정도 제 추측도 포함해서 정리를 해보았어요. 이제 같이 한번 알아보도록 해요.1의 보수2의 보수를 알기 전에 1의 보수에 대해 짚고 넘어갈께요.정의이진법에서의 1의 보수는 이진수를 토글(Toggle) 하는 것을 말해요.토글이 뭐냐구요? 토글은 반전이라고 생각하시면 돼요. 모든 자릿수에 NOT 연산을 사용하는 거죠.예시$ 11_2 $ 의 1의 보..
Java의 동기화(synchronized, wait(), notify())
·
JVM/Java
안녕하세요. 오늘은 자바의 동기화에 대해서 알아보려고 합니다.자바의 동기화에 대해서 알려면, 모니터, synchronized 키워드, wait() 메서드, notify() 메서드를 잘 이해해야 합니다.모니터모니터란?자바는 모니터를 이용해서 동기화를 지원합니다. 이 모니터는 자바의 각 객체마다 하나씩 소유하고 있습니다.그렇다면, 모니터란 뭘까요? 모니터는 뮤텍스, 세마포어 같은 동기화 방식의 추상화된 동기화 방식이라고 할 수 있습니다.간단하게 뮤텍스/세마포어의 방식을 알아볼까요?public void run() { lock() // do something unlock()}이런 방식으로 임계 영역을 접근하기 전에 명시적으로 잠금과 해제를 선언하는 방식입니다. 반면, 모니터의 경우는 아래와 같은 방식입니다.pu..
Spring Security CORS 설정하기 (Kotlin)
·
JVM/Kotlin
안녕하세요. 오늘은 Spring Security CORS 설정하는 방법에 대해서 알아보겠습니다.자바와는 다르게 코틀린에서는 권장하는 문법이 조금 달라서 저도 적용하는데 애먹었습니다.환경JDK17KotlinSpring Boot 3.2.4Spring SecurityConfiguration 파일 수정우선 설정 파일을 변경해야 합니다. 코드와 주석 따라서 한번 천천히 확인해 봅시다.@ComponentScan@Configuration@EnableWebSecurityclass SpringConfiguration { @Bean @Throws(Exception::class) fun securityFilterChain(http: HttpSecurity): SecurityFilterChain { ..