무지를 아는 것이 곧 앎의 시작

CS 2

분산락 언제 잡고 어떻게 잡는게 좋을까

프로젝트 진행하다 보면 동시성 이슈를 해결해야할 때가 있다. 최근 사이드 프로젝트에 북마크 기능을 구현할 때 어떻게 동시성 이슈를 잡았었고 어떤 고민을 해서 잡는 방법을 채택했는지 기록해볼까 한다. 도메인 간단 이해 일단 도메인 구조를 보면, Place(장소)라는게 있고, 이 장소에 북마크를 찍는개념으로 해서 Bookmark(북마크)가 있고 1(장소):N(북마크)로 되어있다. 그리고 Place 리스트를 조회할 때 bookmark 갯수가 같이 노출돼야하기 때문에 성능 최적화를 위해 bookmarkCount라는 컬럼을 Place가 반정규화해서 들도록 했다. /// imports... /// annotations... public class Place extends AbstractRootEntity { @Id..

CS 2023.10.09

얘는 대체 왜 이럴까? (모르면 죽을 수 있음)

0.1 + 1.1은 1.2가 아니란다. 컴퓨터 이녀석 정확한 놈인 줄 알았는데 마냥 그렇지도 않은가보다. 메모리 저 값들은 메모리에 쓰여지는 값들이다. 메모리가 어떻게 생겼는 지 이해할 필요가 있다. 메모리는 0과 1을 저장할 수 있는 bit라고 부르는 칸이 무수히 많이 뭉쳐진 구조이다. 여기엔 0과 1만 저장할 수 있기 때문에 컴퓨터가 데이터를 저장하는 방법에 따라서 공간을 잡고 데이터를 저장한다. ex) 정수 5 → 00000101 정수 10 → 00001010 더 큰 수를 저장하고 싶으면 칸을 늘려서 저장 16칸은 -32768 ~ 32767까지 저장 가능 실수형은 어떻게 저장할까? (float 자료형 기준) 5.125라는 숫자를 저장하려면 어떻게 할까? 5.125 → 101.001(2진법) 컴퓨터는..

CS 2022.11.22