Latency Numbers Every Programmer Should Know

Copied from https://gist.github.com/jboner/2841832 Latency Comparison Numbers (~2012) ---------------------------------- L1 cache refere...

Wayne

How OTR (Off-the-Record) Messaging works

OTR stands for Off-the-Record Messaging, the OTR protocol was designed by cryptographers Ian Goldberg and Nikita Borisov and released on ...

Wayne

System Design 101 - Consistent Hashing

在 [System Design 101 - Sharding or Data Partitioning](/posts/426-system-design-101-sharding-or-data-partitioning) 的 Partitioning Criteri...

Wayne

Ruby under a microscope - Chapter 1 - Tokenization and Parsing

This is my reading note about the book `Ruby under a microscope` Chapter 1 - Tokenization and Parsing 第一章在講我們寫的 ruby code 是怎麼經過一系列的轉換最後...

Wayne

How Digital Signature works

Key concepst: 1. private key 加密的訊息只可以用 public key 解密 2. public 加密的訊息只可以用 private key 解密 3. 不一樣的內容經過 hash function 後產生的 hash value 不一樣,一樣...

Wayne

There are only 2 hard things in Computer Science

> There are only two hard things in Computer Science: cache invalidation and naming things. > -- Phil Karlton https://martinfowler.com/...

Wayne

複習一下各種排序法,和 Python 實現

搭配題目和講解影片服用: * Lintcode: https://www.lintcode.com/problem/sort-integers * Leetcode: https://leetcode.com/problems/sort-an-array/ * https...

Wayne

什么是拓扑排序(Topological Sorting)

直接 copy 過來: 一、什么是拓扑排序 在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列。且该序列必须满足下面两个条件: 每个顶点出现且只出现一次。 若存在一...

Wayne

4 basic proof technique in math

## Some basic P => Q P: If statement Q: Tehn statement example: `If a < b, then a < b + 1`,`If a < b` 是 P, `then a < b+1` 是 Q ## 1....

Wayne

Time complexity and space complexity

時間複雜度跟空間複雜度 ## 時間複雜度 常見的六種時間複雜度與演算法 * O(1):陣列讀取 * O(n):簡易搜尋 * O(log n):二分搜尋 * O(nlogn):合併排序 * O(n²):選擇排序 * O(2^n):費波那契數列 時間複雜度為 O(n) ...

Wayne

What’s Object Marshalling?

## What’s Object Marshalling? Object Marshalling 將資料轉換,用在不同程式間傳輸,就稱為 Object Marshalling (序列化) 例如 Sidekiq 會把 Object 變成 JSON 存進 ...

終於在工作中實際用到了紅黑樹 - 交易所配對引擎

首先了解紅黑樹跟一般的二分查找樹的區別可以看下面連結中的漫畫,清楚明瞭: https://mp.weixin.qq.com/s/0RKuO0Pk7R09wGzgyA43mw 簡單來講最大的差別在於 二分查找樹有可能會左右極度不平衡,造成查找時效率變慢 而紅黑樹有自平衡...

Wayne

摘要算法和對稱加密算法

摘要算法不可逆,對稱加密可逆 所謂對稱加密就是用私鑰(也就是密碼)幫訊息加密,所以只要再用私鑰就能解密,例如 AES 算法 而摘要算法呢?就是沒有私鑰的概念,只要是一樣的字串加密出來的內容就會是一樣的,但是摘要算法會確保加密出來的字串無法(應該說:很難)被逆推回原本的值...

Wayne

DATETIME 和 TIMESTAMP 的差別

這邊說的是 database type 幾個結論 1. datetime 存了 date 和 time,可能用到 8 bit 2. datetime 可以支援的 range 比較廣,從 1000~9999 years 都可以 3. timestamp 則是存從 epoc...

Wayne

B+ tree (B plus tree)

前一篇學習了 什麼是 B- balance tree,立馬再來補習一下 B+ 其實 B+ tree 就是 B- 的升級版 主要的差別在於「子節點有母節點的資訊」,並且「出現在子節點中的母節點元素都是子節點中最大的元素」,不囉唆,看圖: ![](https://1.bp...

Wayne

什麼是 btree (balance tree) (b-)

常常看到 postgresql 的 index 都是用 btree 的方式 index,但一直沒時間去研究什麼是 btree,最近發現一個不錯的維信號用漫畫的方式解釋各種演算法相關的東西,剛好看到 b- b+ 的介紹,該是時候學習一下了~ 所謂的 b- 其實唸作 ba...

Wayne

Google Authenticator 的實作原理

簡單來說就是使用密鑰+時間的加密方式,加密細節可以參考下方網站 https://www.zhihu.com/question/20462696 http://www.csdn.net/article/2014-09-23/2821808-Google-Authentica...

Wayne

About Redis

In memory, key-value store. 所以其實 redis 就是一個 database,只是他所有的東西都存在 memory 而且是屬於 NoSQL 的 database。 最常用的場景就是拿來快取東西。 In memory 表示是直接存在記憶體上不是...

Wayne

multi-tiered

簡單來說,multi-tiered 的意思就是很多台機器的意思,例如 client 跟 server 是不同的機器所以就是 2-tiered,而現在都是 N-tiered 了畢竟 database 跟 application 可能也是分開的。 References: ...

Wayne