Blog

Master的三种不同身份

Content #

  1. 相对于存储数据的 Chunkserver,Master 是一个目录服务;

  2. 相对于为了灾难恢复的 Backup Master,它是一个同步复制的主从架构下的主节点;

  3. 相对于为了保障读数据的可用性而设立的 Shadow Master,它是一个异步复制的主从架构下的主节点。

并且,这三种身份是依靠不同的独立模块完成的,互相之间并不干扰。

Viewpoints #

From #

03 | The Google File System (一): Master的三个身份-大数据经典论文解读-极客时间

血糖水平下降越快真会让人感觉饥饿

Content #

当血糖水平下降时,即使只下降了20 mg/dL,低于我们在葡萄糖峰值发生时的30 mg/dL,也会让我们特别想吃高热量的食物。

问题是,我们的葡萄糖水平总会下降,确切地说,是在到达葡萄糖峰值后总会降下来。并且,葡萄糖峰值越高,下降的幅度就会越大。这意味着胰岛素在发挥它的作用,将多余的葡萄糖储存在不同的存储单元中。但是这同时也意味着我们会更想吃块饼干或者汉堡,甚至两者都想吃。而血糖曲线的平稳化会让我们的食欲没那么旺盛。

From #

控糖革命

持续的饥饿感

Content #

我们很多人都会在刚吃过饭后就感到饥饿,这同样与葡萄糖有关。将含有相同的热量,但种类不同的两餐进行比较,我们会发现,如果该餐引起的葡萄糖峰值比较小,那么这一餐会让我们有更长时间的饱腹感。所以,热量并非全部的问题所在。

持续饥饿感是胰岛素水平较高的一种表现。如果葡萄糖峰值频繁出现,我们体内就会产生大量的胰岛素混合在其他激素之中。瘦素,是一种告诉我们“我们饱了,应该不用吃饭了”的激素。胰岛素水平过高会导致瘦素的信号被阻断。而胃促生长素,这种告诉我们“我们还很饿”的激素就会取而代之。尽管有脂肪储备,有大量可用的能量,身体依然会告诉我们还需要更多。所以,我们就会想要再吃东西。

而在我们吃东西后,更多的葡萄糖峰值就会随之出现,身体会分泌更多的胰岛素来将过量的葡萄糖转化为脂肪存储起来,这样又会加强胃促生长素的作用。我们体重增加得越多,就越会感到饿。这是一个不幸的、恶性的,也是不公平的循环。

如何改变这种现象?答案不是吃得少,而是要通过使我们的血糖曲线平稳化来降低我们的胰岛素水平,而这通常意味着要吃更多的食物,

From #

控糖革命

让gdb暂停程序执行的三种方式

Content #

There are three ways to instruct GDB to pause execution of your program, what are they?

  1. A breakpoint tells GDB to pause execution at a particular locationwithin the program.
  2. A watchpoint tells GDB to pause execution when a particular memory location (or an expression involving one or more locations) changes value.
  3. A catchpoint tells GDB to pause execution when a particular event occurs.

From #

断点和监视点在作用域上的区别

Content #

断点和监视点在编程语言的作用域问题上有很大的区别,请问是什么?

  1. 断点的位置是固定的,因此不存在“超出作用域”的问题。
  2. 只能监视作用域的变量,一旦变量不在调用栈的任何帧中,GDB会自动删除该变量相关的监视点。

From #

确认原则

Content #

调试的本质是确认原则。修正充满错误的程序,就是逐个确认那些你自认为正确的代码。当你发现某个假设不成立时,就表示已经找到了关于程序错误所在位置的线索。

换一种表达方式来说:惊讶是好事!因为这种发现会引导你找到程序错误所在的位置。

From #

重复执行上一个命令

Content #

如果我们在GDB中按下回车键,而没有什么命令输入,会发生什么事情?

GDB会重复执行上一个命令。

From #

print命令的值历史

Content #

GDB中使用print命令输出的值会被标记为$1,$2等,这些统称值历史,在接下来执行print命令时可以直接使用。

最近两次输出的值的编号分别是: $, $$.

某个指针变量在输出时值历史编号为5,现在想要打印该指针所指向的内容时,该如何操作?

p *$5

From #

frame(gdb command)

Content #

当执行GDB的frame命令时,当前正在执行的函数的帧被编号为0,其父帧(即该函数的调用者的栈帧)被编号为1,父帧的父帧被编号为2,以此类推。

GDB的 up 命令将你带到调用栈中的下一个父帧, down 则引向相反的方向。

From #