堆与栈

进程内存布局

如下图所示,对于每个程序所分配的内存由很多部分组成,通常称之为“段”(segment)。

  • 文本段(text)包括进程运行的程序机器语言指令。文本段具有只读属性,以防止进程通过错误指针意外修改自身指令。

  • 初始化数据段(BSS)包括为未进行显式初始化的全局变量和静态变量。

    对于初始化和未初始化数据段即用户初始化数据段(user-initialized data segment)和零初始化数据段(zero-initialized data segment)。

  • 栈(stack)是一个动态增长和收缩的段,由栈帧(stack frames)组成。系统会为每个当前调用的函数分配一个栈帧。栈帧中存储了函数的局部变量(所谓自动变量)、实参和返回值。

  • 堆(heap)是可在运行时(变量)动态进行内存分配的一块区域。堆顶端成为program break。

阅读更多

情绪,请开门

把握情绪,就能够把握生命的根本

  • 所谓过的好不好,就是指当下所处的情绪状态。

  • 我们所遇到的各种事情只是促使情绪反应的刺激物,而情绪本身才是值得品尝的生活味道。

  • 外部的刺激促使人们产生了反应,他们忽略了反应系统本身。

  • 情绪是支撑人们存活、发展、进化的必不可少的条件之一。

阅读更多

多线程编程

进程与线程

进程是资源(CPU、内存等)分配的基本单位,具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
线程是进程的一个实体,是独立运行和独立调度的基本单位(CPU上真正运行的是线程)。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

阅读更多

何为并发

计算机领域的并发指的是在单个系统里同时执行多个独立的任务,而非顺序的进行一些活动。

阅读更多

【译】Linux系统中的 ELF 文件的理解与分析

世界上一些真正的工匠精神,我们认为是理所当然的。其中之一就是 Linux 上常用的工具,比如psls。尽管这些命令可能被认为是简单的,但当看清其本质时,却有更多的东西。这就是ELF或可执行和可链接格式的作用。一个用得很多的文件格式,但真正了解的人却寥寥无几。让我们通过这个介绍教程来了解一下吧!

阅读更多

软件定义一切

什么是软件定义?

软件定义的真正落地,还是在云计算平台里面的应用。2011年前后,OpenFlow被用于云计算平台中进行网络管理,并被广泛接受。在15年的时候,Gartner战略报告首次出现SDN(软件定义),SDN重新“定义”了传统的网络架构甚至通信产业。

阅读更多

python tricks

1. Python set操作

differencesymmetric_difference 的区别:

如果 ab 是集合类型,a-b是指所有在a但不在b中的元素。

阅读更多

Python的LRU Cache

functools.lru_cache

在 Python 中的 functools 模块是应用高阶函数,即参数或(和)返回值为其他函数的函数。通常来说,此模块的功能适用于所有可调用对象。

阅读更多

图的存储与算法

图论作为数学领域的重要分支已经有数百年的历史。图论应用的领域广泛,包括了地图、网页信息、电路、任务调度、商业交易、计算机网络和社交网络等。

阅读更多