天地盈虚,与时消息。
  Recommended Posts

Keep Serious

保持认真,扎实基本功。

Read more
reading

Year Reading in 2019

过去的这个2019年,我看了什么。

Read more
Generate a random string in Go Generate a random string in Go
如何高效地产生一个随机字符串?这是一个简单的问题,但是简单的问题也有极致的做法。这个问题是StackOverflow上的一个问题,How to generate a random string of a fixed length in G
2020-11-10
Learn OAuth 2.0 Learn OAuth 2.0
说起OAuth,大多数人都听说过,有的还在工作中用到过。OAuth可以用来保护资源,尤其是API。不过当深入OAuth并仔细看看的时候,原来OAuth有很多值得讨论以及注意地方。这篇文章是《OAuth 2 In Action》的阅读笔记与
2020-10-30
Data Science (Part 1): Basic R Data Science (Part 1): Basic R
1. 开始吧1.1 安装包与导入包# installing the dslabs package install.packages("dslabs") # loading the dslabs package into the R ses
2020-09-26
Functional Options Pattern in Go Functional Options Pattern in Go
Functional Options Pattern: 定义一个Options结构体(StuffClientOptions),包含所有的可选项; 定义一个函数类型,参数是Options结构指针(StuffClientOption); 创
2020-08-31
ddia, Distributed Data (Part 4): Troubles ddia, Distributed Data (Part 4): Troubles
这篇文章是ddia第八章的阅读笔记。 0x00 Intro 所有可能出错的地方一定会出错。 这篇文章来讲讲,分布式系统中会出现哪些错误。 知道会有什么错误,才能知道如何去解决。 0x01 Faults and Partial Fail
2020-07-27
ddia, Distributed Data (Part 3): Transactions ddia, Distributed Data (Part 3): Transactions
这篇文章是ddia第七章的阅读笔记。 0x00 Intro 在一个系统中有很多可能出错的地方。 为了提高系统的可靠性,需要好好处理那些可能的错误。 事务(transaction)就是一个首选的机制。 这篇文章里主要看看事务。 0x01
2020-07-23
new & make in Golang new & make in Golang
new和make都可以用来分配空间和初始化类型,但是它们又有一些不同。 1. new(T)返回的是T的指针new(T)为一个T类型新值分配空间并将此空间初始化为T的零值,返回的是新值的地址,也就是T类型的指针*T,该指针指向T的新分配的
2020-07-03
csapp ch03 (part 5): Combining Control and Data csapp ch03 (part 5): Combining Control and Data
这篇文章是csapp第三章第10节的阅读笔记。 0x00 指针 每一个指针都有对应的类型。不过指针类型不包含在汇编代码中,而是C对程序员提供的一种抽象; 每一个指针都有值。这个值就是某个对象的地址,特殊的值NULL (0)表明这个指针不
2020-06-19
csapp ch03 (part 4): Data Structures csapp ch03 (part 4): Data Structures
这篇文章是csapp第三章第8和第9节的阅读笔记。 接下来,从汇编代码的角度来看看C语言中数据结构的实现。 0x00 Array先看看数组。 1.1 基本规则对于具有N个类型T的元素的数组来说,C语言中是这么声明的: T A[N]; 令
2020-06-15
csapp ch03 (part 3): Procedures csapp ch03 (part 3): Procedures
这篇文章是csapp第七节的阅读笔记 0x00 运行时栈过程(procedures)是一个非常重要的抽象,它隐藏了一部分实现细节,对外提供一个功能。 在程序中的任何地方都可以随时调用这个过程,得到结果后继续执行。 也叫函数(functi
2020-06-12
csapp ch03 (part 2): Control csapp ch03 (part 2): Control
这篇文章是csapp第三章第六节的阅读笔记。 0x00 条件码控制语句需要进行条件判断,根据不同的判断值进行不同的操作。 这里涉及到的主要指令就是JUMP了。 不过在跳转之前,先看看如何来判断条件。 这就是条件码(Condition C
2020-06-10
csapp ch03 (part 1): Program Encoding and Basic Instructions csapp ch03 (part 1): Program Encoding and Basic Instructions
这篇文章是csapp第三章前五节的阅读笔记。 0x00 程序编码对于两个C程序,可以通过如下的方式编译: gcc -Og -o p p1.c p2.c 其中-Og选项告诉编译器不进行优化,直接根据C代码生成对应的汇编代码。 给出下面的C
2020-06-08
1 / 4