일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring
- MySQL
- 컴퓨터구조
- 자바
- Java
- JPA
- design pattern
- OS
- Galera Cluster
- JavaScript
- Proxy
- react
- spring webflux
- 네트워크
- Heap
- 알고리즘
- c언어
- mongoDB
- Kafka
- IT
- Algorithm
- 자료구조
- 백준
- redis
- 파이썬
- MSA
- 디자인 패턴
- Data Structure
- C
- 운영체제
- Today
- Total
목록전체 글 (211)
시냅스

Lock Striping 스레드 동기화는 공유하는 데이터에 대해 데이터 일관성을 보장하기 위해 사용된다. 그러나 스레드 동기화는 성능에 영향을 미치기 때문에 동기화를 최소한으로 유지하면서 스레드 안정성을 보장하는 것이 중요하다. Lock Striping 은 이를 위한 방법 중 하나로 여러 개의 락을 사용하는 대신, 락을 분할하여 동시에 여러 스레드가 접근할 수 있도록 한다. e.g. ConcurrentHashMap에서 특정 노드에 잠금을 거는 것 Lock Striping 은 스레드 경합을 줄이고 락의 사용 빈도를 줄이기 때문에 성능을 향상시킬 수 있다. ConcurrentHashMap 등에서 사용하고 있다. Cf. 락 분할 (Lock spilitting)은 하나의 클래스에서 기능적으로 락을 분리해서 사용..

걸어서 4000만개 데이터가 있는 테이블 8개 속으로... 지금 하고 있는 프로젝트는 전국의 어떤 데이터(대외비임다... )를 관리하고, 맞춰서 GIS 로 개발하는 프로젝트를 하고 있다. 프론트 오피스에서는 데이터들을 지도에 그려주고, 백 오피스에서는 데이터들을 관리 혹은 처리하게 된다. 나는 대체로 백오피스의 업무들을 배당 받았는데, 이미 엑셀 파일을 유저가 업로드 할 수 있게 처리하거나 권한 작업들은 해두었던 상태였다. 그리고 대망의 각 500만개 데이터가 있는 테이블 8개 속으로 걸어들어갔다. 전국의 데이터는 시도 별로 시군구 별로 테이블이 따로 있었고 정렬될 필요가 있었다. 전국의 어떤 데이터가 들어왔을 때, 서울시라고 한다면 다시 서울시 중랑구 까지 분류가 되어 각개 테이블에 적재되었어야 했다...

Synchronized keyword static과 heap을 공유하면서 동시접근이 가능한 resource 에 관하여 race condition 을 회피하기 위해 Java에서 제공하는 키워드 함수에 synchronized 키워드를 붙이거나 (Lock in Synchronized Methods) 함수에 synchronized를 걸면 함수가 포함된 해당 객체(this)에 lock을 거는 것과 동일하다. synchronized block을 만들어 사용할 수 있다. (Synchronized Statements) 필요한 부분만 lock이 걸린다. 객체에 lock을 거는 것은 동일하다. 만약 singleton 객체에 synchronized 키워드를 사용할 경우 synchronized 메소드가 많을 수록 deadlo..