SH Blog

撵上一个时代

CSAPP-07链接

CSAPP-07链接 链接(linking)是将各种代码和数据片段收集并组合成为一个单一文件的过程,这个文件可被加载(复制)到内存并执行。 链接可以执行于编译时(compile time),也就是在源代码被翻译成机器代码时; 也可以执行于加载时(load time),也就是在程序被加载器(loader)加载到内存并执行时; 甚至执行于运行时(run time),也就是由应用...

CSAPP-06存储器层次结构

CSAPP-06存储器层次结构 存储技术: SRAM DRAM ROM 旋转的/固态的硬盘 重点: 高速缓存存储器:对应用程序的性能影响最大。 局部性 存储器山 存储技术 随机访问存储器 随机访问存储器(Random-Access Memory,RAM): 静态RAM(SRAM):快、贵,作为高速缓存存储器,既可以在CPU芯片上,也可...

CSAPP-05优化程序性能

CSAPP-05优化程序性能 优化编译器的能力和局限性 编译器必须很小心地对程序只使用安全的优化。 例子1: 1 2 3 4 5 6 7 8 void twiddle1(long *xp, long *yp){ *xp += *yp; *xp += *yp; } void twiddle2(long *xp, long *yp){ *xp += 2* *yp...

CSAPP-04处理器体系结构

CSAPP-04处理器体系结构 一个处理器支持的指令和指令的字节级编码称为它的指令体系结构(Instruction-Set Architecture,ISA),不同的处理器“家族”有不同的ISA。一个程序编译成在一种机器上运行,就不能在另一种机器上运行。 ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层,编译器编写者只需要知道允许哪些指令以及它们是如何编码的;而处理器设计者必...

CSAPP-03程序的机器级表示

CSAPP-03程序的机器级表示 计算机执行机器代码,用字节序列编码低级的操作,包括处理数据、管理内存、读写存储设备上的数据,以及利用网络通信。 编译器基于编程语言的规则、目标机器的指令集和操作系统遵循的惯例,经过一系列的阶段生成机器代码。 GCC C语言编译器以汇编代码的形式产生输出,汇编代码是机器代码的文本表示,给出程序中的每一条指令。然后GCC调用汇编器和链接器,根据汇编代码生成...

CSAPP-02信息的表示和处理

CSAPP-02信息的表示和处理 三种重要的数字表示: 无符号(unsigned)编码:大于或等于零的数字; 补码(two’s-complement)编码:有符号整数; 浮点数(floating-point)编码:实数的科学计数法的以2为基数的版本。 计算机的表示法是用有限数量的位来对一个数字编码,因此,当结果太大以至不能表示时,某些运算就会溢出(overflow)。 ...

CSAPP-01计算机系统漫游

CSAPP-01计算机系统漫游 hello.c 程序: 1 2 3 4 5 6 7 #include <stdio.h> int main() { printf("hello, world\n"); return 0; } 1)信息就是位+上下文 源程序实际上就是一个由值0和1组成的位(比特)序列,8个位被组织成一组,成为字节。 ASCII文本表示: 基本思想...

Spark 基础

Spark 基础 简介 Spark基于Hadoop1.x架构思想,采用自己的方式改善Hadoop1.x的问题; Spark计算基于内存,并且基于Scala开发,(函数式编程)天生适合迭代计算; 内存–>优点:快–>缺点:数据丢失–>持久化策略(内存中的数据定期放到磁盘中); 结构: Master、ApplicationManager、Drive...

Kafka 基础学习

Kafka http://kafka.apache.org/ 简介 Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。 消息队列 消息队列的两种模式: 点对点模式:一对一,消费者主动拉取数据,消息收到后消息清除。 消息生产者生产消息发送到Queue中,然后消息消费者从Queue中取...

Zookeeper 基础学习

Zookeeper https://zookeeper.apache.org/ https://github.com/apache/zookeeper zk核心: ZooKeeper Programmer’s Guide 数据模型 Session会话 Watches监听 ACL访问控制 一致性保证 ...