Blog

源代码行的错觉

Content #

为下面的程序在main的入口设置断点,GDB为什么会把断点放在第4行,而不是 1,2,3行?

1 int main(void)
2 {
3   int i;
4   i=3;
5
6   return 0;
7 }

GDB实际是以机器指令工作的,但是有了增强的符号表后,它表现出了使用源代码行的错觉。第3行确实会生成机器指令,但这种代码对调试没有用处,因此,当要求GDB在main()的开头中断时,它就在第4行设置了一个断点。

A symbolic debugger such as GDB can run your program, just like you can. However, with the magic of including debugging symbols in the executable, the debugger gives the illusion of executing the program line by line of source code, instead of instruction by instruction of compiled machine code.

From #

gdb显示的是将要执行的行

Content #

We put a breakpoint at line 35 of the program, and then run the program. GDB executed lines 30 through 34, but line 35 has not executed yet.

This can be confusing since many people think that GDB displays the line of code that was last executed, when in fact, it shows which line of code is about to be executed.

From #

脂肪燃烧模式只在胰岛素处于低水平时才会发生

Content #

当我们说“我想减肥”时,实际上是想说“我想让自己的脂肪细胞像气球一样变小,我的腰围也一起变细”。为了做到这一点,我们需要开启“脂肪燃烧”模式。

就像杰瑞在晚上需要使用它的淀粉储备一样,当细胞中数以千计的线粒体需要葡萄糖的时候,身体也能够调用储存在我们的肝脏和肌肉中的糖原,将其转化为葡萄糖。接着,伴随糖原储备逐渐减少,身体就会使用脂肪细胞中的脂肪作为能量,这样我们就会处于脂肪燃烧模式,然后体重就下降了。

上述情况只有在我们的胰岛素处于低水平时才会发生。如果胰岛素水平过高,身体就会阻止脂肪燃烧:胰岛素使通往脂肪细胞的道路成为一条单行道,可以过去,但是不能回来。只有在葡萄糖峰值出现2小时后,胰岛素水平开始下降,我们才能再次燃烧现有的储备。

如果血糖水平和胰岛素水平一直保持稳定,则有利于我们减肥。2021年,加拿大科学家做的一项针对5600人的实验表明,体重减轻总是发生在胰岛素下降之前。

From #

控糖革命

sub:lambda表达式(CPP)

Content #

[ captures ] ( params ) specifiers exception -> ret { body }

方括号用于捕捉外部的非静态(nonstatic)对象。圆括号为lambda的参数。

下面的CPP lambda introducer(方括号的部分)的含义是什么?

[=, &y]

y以引用的方式传入,其它对象使用传值的方式。

返回lambda类型的函数:

std::function<int(int,int)> returnLambda ()
{
    return [] (int x, int y) {
      return x*y;
    };
}

重载操作符()与lambda表达式

多余的葡萄糖会转化为脂肪

Content #

一旦我们的肝脏和肌肉中存满了葡萄糖,体内多余的葡萄糖就会转化为脂肪,成为我们的脂肪储备,这是让我们体重增加的原因之一。而且脂肪还有更多来源。因为我们的身体不仅要处理葡萄糖,还必须要处理果糖。但是,果糖不能够转化为糖原存储在肝脏或者肌肉中。果糖的唯一存储方式就是转化为脂肪。

果糖产生的脂肪会导致我们的身体出现一些不好的情况:首先,脂肪在肝脏中积累,会导致非酒精性脂肪性肝病的发生。其次,在我们臀部、大腿、脸部和内脏之间的脂肪细胞被填满之后,我们就长胖了。最后,脂肪会进入血液,增加患心脏病的风险。我们可能听说过低密度脂蛋白,它又被称为“坏”胆固醇,因为当它过量时,其中的胆固醇会在动脉壁上沉积,久而久之会造成动脉硬化。

这也是如果有两种相同热量的食物,我建议大家选择不含果糖的咸香美味食物,而不选择含有果糖的甜食的另一个原因。没有果糖意味着变成脂肪的分子会更少。

具有讽刺意味的是,许多“不含脂肪”的加工类食品往往含有很多的蔗糖,因此其中的果糖在我们消化之后就会变成脂肪。

很多人对脂肪有着复杂的感情,但脂肪确实非常有用:身体通过脂肪储备为漂浮在血液中多余的葡萄糖和果糖提供存储空间。我们不应该为体脂增加而生气,相反,应该感谢脂肪保护我们免受氧化应激、糖化反应和炎症反应的伤害。我们能够产生的脂肪细胞的数量越多,体积越大(这通常是遗传因素导致的),受到的保护时间就会越长,就能更好地免受葡萄糖和果糖的伤害(但同时体重也会增加)。

From #

控糖革命

胰岛素将葡萄糖存储在肝脏和肌肉中

Content #

身体的工作原理就是,当我们体内的葡萄糖水平升高时,胰腺就成了俄罗斯方块的玩家。胰腺的主要功能之一就是释放一种叫作胰岛素的激素。胰岛素的唯一作用就是将多余的葡萄糖存储在身体的存储单元中,使其脱离身体循环,保护我们不被伤害。如果没有胰岛素,我们就无法生存。1型糖尿病患者由于胰腺无法产生胰岛素,必须通过注射胰岛素来弥补这一缺陷。

胰岛素会将多余的葡萄糖存储在几个不同的存储单元中。

第一个存储单元是肝脏。肝脏是非常重要的存储单元,因为血液流经消化系统,经过肠道,携带着新产生的葡萄糖,最终都会流经肝脏。肝脏将葡萄糖转化为一种新的形态,我们称之为糖原。这个过程相当于植物将葡萄糖转化为淀粉。糖原其实是淀粉的“表亲”——由许多葡萄糖分子手拉手相互连接而成。如果过多的葡萄糖保持着原本的形态,就会引起氧化应激和糖化反应。但是,一旦葡萄糖转化为糖原,就不会造成损害。肝脏可以存储大概100 g糖原形态的葡萄糖(相当于2份大薯条中的葡萄糖含量)。这是我们的身体每天所需的能量来源——200 g葡萄糖的一半。

第二个存储单元是我们的肌肉。肌肉是非常有效的存储单元,对于一个普通的体重为70 kg的成年人,其肌肉可以存储大约400 g糖原形态的葡萄糖,这相当于7 份大薯条中的葡萄糖含量。虽然肝脏和肌肉是非常有效的存储单元,但是我们平时吃的葡萄糖实在是超过所需要的太多了,所以这些存储单元很快就存满了。如果没有其他的存储单元来储存多余的葡萄糖,我们的身体很快就无法再继续进行俄罗斯方块游戏。

From #

控糖革命

美拉德反应

Content #

从出生的那一刻起,我们的身体内部就开始进行褐变,尽管这一过程非常缓慢。科学家发现,婴儿胸腔的软骨是白色的,而年近90岁的人的软骨会变成褐色。 1912年,一位名叫路易斯·卡米拉·美拉德(Louis Camille Maillard)的法国科学家描述了这一现象,并用自己的名字为这一现象命名,人们称之为美拉德反应。

美拉德发现:当一个葡萄糖分子与另一种类型的分子碰撞时,就会发生褐变。这会引起一种反应——第二个分子会被“糖化”。当一个分子被糖化后,这个分子就被破坏了。这个过程是生命中正常并且不可避免的一部分,是我们衰老的原因之一,也是我们的器官慢慢退化和我们最终走向死亡的原因之一。我们不能阻止这一过程,但是我们可以减缓或者加速它。

我们体内的葡萄糖越多,发生的糖化反应就越多。一旦一个细胞被糖化,那么,这个细胞就被永久损伤了,就像我们不可能只烤面包的一小块。细胞糖化的长期后果包括出现皱纹、白内障、心脏病和阿尔茨海默病等。既然褐变会造成老化,那么衰老就是褐变的结果,所以减缓体内的褐变反应就可以延长寿命。

果糖分子造成糖化反应的速度是葡萄糖分子的10倍,因此造成的损害也大得多。强调一下,这也是含糖的食物如饼干(含有果糖)引起的葡萄糖峰值会比淀粉类食物如意大利面(不含果糖)引起的葡萄糖峰值更快让我们衰老的原因。

From #

控糖革命

氧化应激状态

Content #

葡萄糖一旦进入细胞,它的首要生物学目标就是将自己转化为能量,而负责这项任务的是一种被称为线粒体的微型细胞器。一个健康的细胞含有数以千计的功能性线粒体。

我们呼吸空气,吸入氧气。线粒体利用氧气将葡萄糖转化为一种化学形式的能量,提供给每个细胞以满足其所需。当葡萄糖进入我们体内细胞的时候,它会直奔线粒体,完成转化。

根据最新的科学理论非稳态负荷模型,当我们的线粒体淹没在不必要的葡萄糖之中时,一种能产生严重后果的小分子就会被释放出来,那就是自由基(有些葡萄糖分子会转化为脂肪)。葡萄糖峰值的出现会导致自由基产生,从而引发一系列危及身体的连锁反应。

自由基是一个大问题,因为它们会破坏接触到的任何东西。它们会随机捕捉并修改我们的遗传基因,引发有害的基因突变,甚至可能引发癌症。自由基使我们的细胞膜产生漏洞,使细胞功能失常。

在正常情况下,我们的体内会有一定数量的自由基,并且我们可以处理这些自由基。但是,随着葡萄糖峰值的反复出现,产生的自由基的数量变得很难掌控。当有太多的自由基需要中和时,我们的身体就会处于一种氧化应激状态。

氧化应激是导致心脏病、2型糖尿病、认知功能下降和一般性衰老的主要原因。另外,果糖比葡萄糖更容易造成氧化应激。这也是吃甜食(含有果糖)比吃淀粉类食物(不含果糖)对身体造成的伤害更大的原因之一。脂肪太多同样会增加氧化应激的情况。

数十年来,我们身体的细胞一直在被破坏。因为它们被葡萄糖塞满了,不堪重负,线粒体无法有效地将葡萄糖转化为能量,于是细胞开始“挨饿”,从而导致器官功能障碍。我们对此深有体会:尽管已经通过吃饭补充能量了,还是会感到疲惫;第二天早晨很难起床,并且一整天都没有精力。我们经常觉得很累。

From #

控糖革命

看不见的果糖峰值

Content #

甜食中含有食用糖,或者叫蔗糖。蔗糖是一种双糖,由葡萄糖和果糖缩合脱水形成。蔗糖分解后会产生葡萄糖和果糖。淀粉类食物则不会产生果糖。所以,每当我们吃了甜食并出现葡萄糖峰值的时候,都会有相应的果糖峰值出现。遗憾的是,果糖峰值我们看不到。动态血糖仪只能监测葡萄糖的浓度,无法监测果糖的浓度,并且目前还没有研发出动态果糖检测仪。

在研发出动态果糖检测仪之前,请大家记住,如果我们吃的是甜食,那么甜食在造成葡萄糖峰值的同时,也会造成看不见的果糖峰值,因此甜食导致的葡萄糖峰值对身体造成的伤害比淀粉类食物导致的葡萄糖峰值更大。

From #

控糖革命