일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 김영한 JPA
- 프로그래머스 SQL
- 프로그래머스
- Quick Sort
- http
- js promise
- JPA 연관관계 매핑
- dreamcoding
- JS 딥다이브
- 이펙티브자바 아이템60
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 이펙티브자바
- BOJ
- 드림코딩
- 이펙티브자바 스터디
- REST API
- Spring Security
- 킹수빈닷컴
- 패스트캠퍼스 컴퓨터공학 완주반
- js api
- HTTP 완벽가이드
- HTTP 완벽 가이드
- js array
- 집 구하기
- 이펙티브자바 아이템59
- java
- 모던자바스크립트
- 백준
- 백기선 스터디
- 김영한 http
- Today
- 1
- Total
- 17,173
목록전체 글 (457)
kingsubin

분산 시스템을 위한 유일 ID 생성기 설계 ‘auto_increment’ 속성이 설정된 RDB의 기본 키를 쓰면 되지 않을까? 라고 생각할 수 있다. 분산 환경에서 이 접근법은 통하지 않는다. DB 서버 한 대로는 그 요구를 감당할 수 없다. 여러 데이터베이스 서버를 쓰는 경우에는 지연 시간을 낮추기가 무척 힘들 것이다. 요구사항 책에서의 요구사항에 맞춰 구현해보자. ID는 유일해야 한다. ID는 숫자로만 구성되어야 한다. ID는 64비트로 표현될 수 있는 값이어야 한다. ID는 발급 날짜에 따라 정렬 가능해야 한다. 초당 10,000개의 ID를 만들 수 있어야 한다. 개략적인 설계안 다중 마스터 복제(multi-master replication) DB의 auto_increment 기능을 활용한다. 다만..

34장. 이터러블 34-1. 이터레이션 프로토콜 이터레이션 프로토콜은 순회 가능한 데이터 컬렉션을 만들기 위해 ECMAScript 사양에 정의하여 미리 약속한 규칙이다. ES6 이전의 순회 가능한 데이터 컬렉션은 나름의 구조를 가지고 다양한 방법으로 순회할 수 있었다. ES6에서는 순회 가능한 데이터 컬렉션을 이터레이션 프로토콜을 준수하는 이터러블로 통일하여 for…of, spread, distructuring 의 대상으로 사용할 수 있도록 일원화했다. 이터러블 프로토콜 (iterable protocol) Symbol.iterator를 프로퍼티 키로 사용한 메서드를 직접 구현하거나 프로토타입 체인을 통해 상속받은 Symbol.iterator 메서드를 호출하면 이터레이터 프로토콜을 준수한 이터레이터를 반환..

그라운드시소 레드룸 전시 다녀왔어요. 세일하길래 예매 했었는데 까먹고 있다가 갔어요. 청불 전시군요. 그렇게 야하진 않아요. 그래도 전시니까...? 볼거리가 별로 없어서 빨리 보고 나왔어요. 근데 나름 웨이팅도 있더라구요,, 근처에 다른 작은 전시도 있어서 봤어요. 동네 자체가 좀 이쁜 거 같아요. 볼거리도 많고. 근데 덥고 사람이 너무 많았어요. 서울은 그런곳이에요.

이전에 좀 덜 더울 때 다녀왔어요. 식물원은 처음이네요. 올챙이도 있고 다람쥐도 있어요. 위에 카페도 좋았는데 사진을 안 찍었나 보네요. 개구리에 대한 집착이 조금 느껴져요. 꽃도 이쁘고 나무도 이뻐서 다음에 또 갈만 한 거 같아요. 애기들이랑 오면 좋을 것 같은? 재방문 의사 있음. 근데 너무 더우니 다음 기회에 계속... 아 그리고 이미지 편집 기능 좋다고 했는데 취소입니다. heic는 못 넣어서 변환해서 넣었어요. 구려요.

사실 다녀온지는 오래인데 앨범 구경하다가 생각나서요. 너무 글 안 적은 거 같기도 하고... 아마 그때 무료였던거 예매한 거 같아요. 동대문 DDP 에서 했어요. 기억이 잘 안 나는데 와봤던 거 같기도...? 이쁘고 신기한게 많았어요. 막 와~~~ 이러진 않았는데 그래도 아기자기하니 귀여웠어요. 모자이크 입히면서 느꼈는데 티스토리 이미지 편집 기능 약간 느리긴 한데 너무 훌륭하네요.. 역시 대기업..

안정 해시 설계 수평적 규모 확장성을 달성하기 위해서는 요청 또는 데이터를 서버에 균등하게 나누는 것이 중요하다. 안정 해시는 이 목표를 달성하기 위해 보편적으로 사용하는 기술이다. 해시 키 재배치(rehash) 문제 N개의 캐시 서버가 있다고 할 때, 이 서버들에 부하를 균등하게 나누는 보편적 방법은 serverIndex = hash(key) % N이다. 이 방법은 server pool의 크기가 고정되어 있을 때, 데이터 분포가 균등할 때는 잘 동작한다. 하지만 서버가 추가되거나 기존 서버가 삭제되면 문제가 생긴다. server pool의 크기가 변하면 키에 대한 해시 값은 변하지 않지만 나머지 연산을 적용한 서버 인덱스 값은 변할 것이다. 그 결과 대부분의 키가 재 분배되며, 대규모 cache mis..

처리율 제한 장치의 설계 네트워크 시스템에서 처리율 제한 장치(rate limiter)는 클라이언트 또는 서비스가 보내는 트래픽의 처리율(rate)을 제어하기 위한 장치다. HTTP를 예시로 들자면 특정 기간 내에 전송되는 클라이언트의 요청 횟수를 제한한다. API 요청 횟수가 제한 장치에 정의된 임계치(threshold)를 넘어서면 추가로 도달한 모든 호출을 처리가 block 된다. 예시: 사용자는 초당 2회 이상 새 글을 올릴 수 없다. 같은 IP 주소로는 하루에 10개 이상의 계정 생성할 수 없다. 같은 디바이스로 주당 5회 이상 리워드(reward) 요청할 수 없다. API 처리율 제한 장치를 두면 좋은 점 DoS(Denial of Service) 공격에 의한 자원 고갈(resource starv..

32장. String 원시 타입인 문자열을 다룰 때 유용한 프로퍼티와 메서드를 제공한다. 32-1. String 생성자 함수 String 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[StringData]] 내부 슬롯에 빈 문자열을 할당한 String 래퍼 객체를 생성한다. 문자열은 원시 값이므로 변경 불가 문자열이 아닌 값을 전달하면 문자열로 강제 변환한 후 [[StringData]] 내부 슬롯에 변환된 문자열을 할당한 String 래퍼 객체를 생성한다. const strObj = new String(); console.log(strObj); // String { length: 0, [[PrimitiveValue]]: "" } const strObj = new String('Le..