Skip to content

Commit

Permalink
Syncing the repo (#1)
Browse files Browse the repository at this point in the history
* zh-TW: Add proper line break to links (donnemartin#139)

* Add Greek translation link (donnemartin#140)

* Convert all .py files to be valid Python (donnemartin#98)

* zh-Hans: Fix typos (donnemartin#141)

* Add Spanish translation link (donnemartin#142)
  • Loading branch information
Md-Shahnawaz authored Mar 11, 2018
1 parent c3c59c9 commit bfb6ab1
Show file tree
Hide file tree
Showing 10 changed files with 102 additions and 63 deletions.
14 changes: 7 additions & 7 deletions README-zh-Hans.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@

> 各种系统设计主题的摘要,包括优点和缺点。**每一个主题都面临着取舍和权衡**
>
> 每个章节都包含着更的资源的链接
> 每个章节都包含着更多的资源的链接

<p align="center">
Expand All @@ -108,7 +108,7 @@

* [系统设计主题:从这里开始](#系统设计主题从这里开始)
* [第一步:回顾可扩展性的视频讲座](#第一步回顾可扩展性scalability的视频讲座)
* [第二步: 回顾可扩展性的文章](#第二步回顾可扩展性文章)
* [第二步:回顾可扩展性的文章](#第二步回顾可扩展性文章)
* [接下来的步骤](#接下来的步骤)
* [性能与拓展性](#性能与可扩展性)
* [延迟与吞吐量](#延迟与吞吐量)
Expand Down Expand Up @@ -207,7 +207,7 @@

那些有经验的候选人通常会被期望了解更多的系统设计的知识。架构师或者团队负责人则会被期望了解更多除了个人贡献之外的知识。顶级的科技公司通常也会有一次或者更多的系统设计面试。

面试会很宽泛的展开并在几个领域深入。这回帮助你了解一些关于系统设计的不同的主题。基于你的时间线,经验,面试的职位和面试的公司对下面的指导做出适当的调整。
面试会很宽泛的展开并在几个领域深入。这会帮助你了解一些关于系统设计的不同的主题。基于你的时间线,经验,面试的职位和面试的公司对下面的指导做出适当的调整。

* **短期** - 以系统设计主题的**广度**为目标。通过解决**一些**面试题来练习。
* **中期** - 以系统设计主题的**广度****初级深度**为目标。通过解决**很多**面试题来练习。
Expand Down Expand Up @@ -242,9 +242,9 @@
* 我们希望每秒钟处理多少请求?
* 我们希望的读写比率?

### 第二步:创造一个高级的设计
### 第二步:创造一个高层级的设计

使用所有重要的组件来描绘出一个高级的设计
使用所有重要的组件来描绘出一个高层级的设计

* 画出主要的组件和连接
* 证明你的想法
Expand Down Expand Up @@ -273,11 +273,11 @@

论述可能的解决办法和代价。每件事情需要取舍。可以使用[可拓展系统的设计原则](#系统设计主题的索引)来处理瓶颈。

### 信封背面的计算
### 预估计算量

你或许会被要求通过手算进行一些估算。涉及到的[附录](#附录)涉及到的是下面的这些资源:

* [使用信封的背面做计算](http://highscalability.com/blog/2011/1/26/google-pro-tip-use-back-of-the-envelope-calculations-to-choo.html)
* [使用预估计算量](http://highscalability.com/blog/2011/1/26/google-pro-tip-use-back-of-the-envelope-calculations-to-choo.html)
* [2 的次方表](#2-的次方表)
* [每个程序员都应该知道的延迟数](#每个程序员都应该知道的延迟数)

Expand Down
32 changes: 16 additions & 16 deletions README-zh-TW.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
*[English](README.md)[日本語](README-ja.md)[简体中文](README-zh-Hans.md)[繁體中文](README-zh-TW.md) | [Brazilian Portuguese](https://github.com/donnemartin/system-design-primer/issues/40)[Italian](https://github.com/donnemartin/system-design-primer/issues/104)[Korean](https://github.com/donnemartin/system-design-primer/issues/102)[Persian](https://github.com/donnemartin/system-design-primer/issues/110)[Polish](https://github.com/donnemartin/system-design-primer/issues/68)[Russian](https://github.com/donnemartin/system-design-primer/issues/87)[Turkish](https://github.com/donnemartin/system-design-primer/issues/39)[Vietnamese](https://github.com/donnemartin/system-design-primer/issues/127) | [Add Translation](https://github.com/donnemartin/system-design-primer/issues/28)*
*[English](README.md)[日本語](README-ja.md)[简体中文](README-zh-Hans.md)[繁體中文](README-zh-TW.md) | [Brazilian Portuguese](https://github.com/donnemartin/system-design-primer/issues/40)[Greek](https://github.com/donnemartin/system-design-primer/issues/130)[Italian](https://github.com/donnemartin/system-design-primer/issues/104)[Korean](https://github.com/donnemartin/system-design-primer/issues/102)[Persian](https://github.com/donnemartin/system-design-primer/issues/110)[Polish](https://github.com/donnemartin/system-design-primer/issues/68)[Russian](https://github.com/donnemartin/system-design-primer/issues/87)[Spanish](https://github.com/donnemartin/system-design-primer/issues/136)[Turkish](https://github.com/donnemartin/system-design-primer/issues/39)[Vietnamese](https://github.com/donnemartin/system-design-primer/issues/127) | [Add Translation](https://github.com/donnemartin/system-design-primer/issues/28)*

# The System Design Primer

Expand Down
11 changes: 8 additions & 3 deletions solutions/object_oriented_design/call_center/call_center.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,11 @@ def _dispatch_call(self, call, employees):
return employee
return None

def notify_call_escalated(self, call): # ...
def notify_call_completed(self, call): # ...
def dispatch_queued_call_to_newly_freed_employee(self, call, employee): # ...
def notify_call_escalated(self, call):
pass

def notify_call_completed(self, call):
pass

def dispatch_queued_call_to_newly_freed_employee(self, call, employee):
pass
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def score(self):

def possible_scores(self):
"""Return a list of possible scores, taking Aces into account."""
# ...
pass


class Deck(object):
Expand All @@ -113,4 +113,5 @@ def deal_card():
return None
return card

def shuffle(self): # ...
def shuffle(self):
pass
17 changes: 11 additions & 6 deletions solutions/object_oriented_design/lru_cache/lru_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,14 @@ def __init__(self):
self.head = None
self.tail = None

def move_to_front(self, node): # ...
def append_to_front(self, node): # ...
def remove_from_tail(self): # ...
def move_to_front(self, node):
pass

def append_to_front(self, node):
pass

def remove_from_tail(self):
pass


class Cache(object):
Expand All @@ -26,7 +31,7 @@ def __init__(self, MAX_SIZE):

def get(self, query)
"""Get the stored query result from the cache.
Accessing a node updates its position to the front of the LRU list.
"""
node = self.lookup[query]
Expand All @@ -37,7 +42,7 @@ def get(self, query)

def set(self, results, query):
"""Set the result for the given query key in the cache.
When updating an entry, updates its position to the front of the LRU list.
If the entry is new and the cache is at capacity, removes the oldest entry
before the new entry is added.
Expand All @@ -58,4 +63,4 @@ def set(self, results, query):
# Add the new key and value
new_node = Node(results)
self.linked_list.append_to_front(new_node)
self.lookup[query] = new_node
self.lookup[query] = new_node
51 changes: 37 additions & 14 deletions solutions/object_oriented_design/online_chat/online_chat.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,20 @@ class UserService(object):
def __init__(self):
self.users_by_id = {} # key: user id, value: User

def add_user(self, user_id, name, pass_hash): # ...
def remove_user(self, user_id): # ...
def add_friend_request(self, from_user_id, to_user_id): # ...
def approve_friend_request(self, from_user_id, to_user_id): # ...
def reject_friend_request(self, from_user_id, to_user_id): # ...
def add_user(self, user_id, name, pass_hash):
pass

def remove_user(self, user_id):
pass

def add_friend_request(self, from_user_id, to_user_id):
pass

def approve_friend_request(self, from_user_id, to_user_id):
pass

def reject_friend_request(self, from_user_id, to_user_id):
pass


class User(object):
Expand All @@ -25,12 +34,23 @@ def __init__(self, user_id, name, pass_hash):
self.received_friend_requests_by_friend_id = {} # key: friend id, value: AddRequest
self.sent_friend_requests_by_friend_id = {} # key: friend id, value: AddRequest

def message_user(self, friend_id, message): # ...
def message_group(self, group_id, message): # ...
def send_friend_request(self, friend_id): # ...
def receive_friend_request(self, friend_id): # ...
def approve_friend_request(self, friend_id): # ...
def reject_friend_request(self, friend_id): # ...
def message_user(self, friend_id, message):
pass

def message_group(self, group_id, message):
pass

def send_friend_request(self, friend_id):
pass

def receive_friend_request(self, friend_id):
pass

def approve_friend_request(self, friend_id):
pass

def reject_friend_request(self, friend_id):
pass


class Chat(metaclass=ABCMeta):
Expand All @@ -51,8 +71,11 @@ def __init__(self, first_user, second_user):

class GroupChat(Chat):

def add_user(self, user): # ...
def remove_user(self, user): # ...
def add_user(self, user):
pass

def remove_user(self, user):
pass


class Message(object):
Expand All @@ -77,4 +100,4 @@ class RequestStatus(Enum):
UNREAD = 0
READ = 1
ACCEPTED = 2
REJECTED = 3
REJECTED = 3
12 changes: 8 additions & 4 deletions solutions/object_oriented_design/parking_lot/parking_lot.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from abc import ABCMeta, abstractmethod
from enum import Enum


class VehicleSize(Enum):
Expand Down Expand Up @@ -92,11 +93,11 @@ def park_vehicle(self, vehicle):

def _find_available_spot(self, vehicle):
"""Find an available spot where vehicle can fit, or return None"""
# ...
pass

def _park_starting_at_spot(self, spot, vehicle):
"""Occupy starting at spot.spot_number to vehicle.spot_size."""
# ...
pass


class ParkingSpot(object):
Expand All @@ -117,5 +118,8 @@ def can_fit_vehicle(self, vehicle):
return False
return vehicle.can_fit_in_spot(self)

def park_vehicle(self, vehicle): # ...
def remove_vehicle(self): # ...
def park_vehicle(self, vehicle):
pass

def remove_vehicle(self):
pass
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,4 @@ def __init__(self, person_ids, lookup):
def bfs(self, source, dest):
# Use self.visited_ids to track visited nodes
# Use self.lookup to translate a person_id to a Person
pass
20 changes: 10 additions & 10 deletions solutions/system_design/web_crawler/web_crawler_snippets.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,33 @@

class PagesDataStore(object):

def __init__(self, db);
def __init__(self, db):
self.db = db
...
pass

def add_link_to_crawl(self, url):
"""Add the given link to `links_to_crawl`."""
...
pass

def remove_link_to_crawl(self, url):
"""Remove the given link from `links_to_crawl`."""
...
pass

def reduce_priority_link_to_crawl(self, url)
def reduce_priority_link_to_crawl(self, url):
"""Reduce the priority of a link in `links_to_crawl` to avoid cycles."""
...
pass

def extract_max_priority_page(self):
"""Return the highest priority link in `links_to_crawl`."""
...
pass

def insert_crawled_link(self, url, signature):
"""Add the given link to `crawled_links`."""
...
pass

def crawled_similar(self, signature):
"""Determine if we've already crawled a page matching the given signature"""
...
pass


class Page(object):
Expand All @@ -41,7 +41,7 @@ def __init__(self, url, contents, child_urls):

def create_signature(self):
# Create signature based on url and contents
...
pass


class Crawler(object):
Expand Down

0 comments on commit bfb6ab1

Please sign in to comment.