tangfatter
码龄3年
关注
提问 私信
  • 博客:14,827
    14,827
    总访问量
  • 10
    原创
  • 1,109,142
    排名
  • 5
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:天津市
  • 加入CSDN时间: 2021-07-16
博客简介:

tangfatter的博客

查看详细资料
个人成就
  • 获得3次点赞
  • 内容获得1次评论
  • 获得42次收藏
创作历程
  • 1篇
    2022年
  • 9篇
    2021年
成就勋章
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

357人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

存储器层级结构

注:以下所有内容均来自开源学习组织DataWhale存储器层级结构存储器的层次结构如下所示:其中,CPU寄存器保存最常用的数据。告诉缓存存储器作为主存储器的缓存,主存作为磁盘的缓存,磁盘作为网络中其他机器上数据的缓存。基本存储技术基本存储技术包括:SRAM存储器、DRAM存储器、ROM存储器、旋转硬盘、固态硬盘。随机访问存储器(Random-Access Memory,RAM)静态RAM(SRAM):SRAM将每个位存储在一个双稳态存储器单元中,每个单元用一个六晶体管电路实现。静态即该存储
原创
发布博客 2022.01.03 ·
1221 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

优化程序性能

注:以下所有内容均来自开源学习组织DataWhale优化程序性能编写高效程序需要满足以下条件:选择合适的算法和数据结构理解编译器的能力和局限性探索并行化编译器优化程序的局限性例C代码如下:void add1(long *xp, long *yp) { *xp += *yp; *xp += *yp;}void add2(long *xp, long *yp) { *xp += 2 * *yp;}两者功能相同,都是将指针yp指向的数两次加到指针xp指向的
原创
发布博客 2021.12.29 ·
449 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

处理器体系架构(Y86系统)

注:以下内容均来自开源学习组织DataWhale处理器体系架构1 指令系统结构根据“x86-64”指令集,定义了一个简化版“Y86-64”指令集。以下内容均基于“Y86-64”指令系统:15个寄存器:%rax %rsp %r8 %r12 %rcx %rbp %r9 %r13 %rdx %rsi %r10 %r14 %rbx %rdi %r11其中%rsp被定义为栈指针,其他14个无固定含义条件码:零标识(ZF)、负号标志(SF)、溢出标志(OF)程序计数器PC保存当前正在执行的
原创
发布博客 2021.12.27 ·
1818 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

程序的机器级表示(四)

注:以下所有内容均来自开源学习组织DataWhale程序的机器级表示(四)1 结构体对于C代码中的一个结构体:struct rec{ int i; int j; int a[2]; int *p;}其对应内存中的位置如下:可以看出数组的元素是嵌入到结构体中的。1.1 数据对齐对于结构体:struct S1{ int i; char c; int j;}其在内存中的占12个bytes,如下图示意:i为int类型占4个by
原创
发布博客 2021.12.25 ·
218 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

程序的机器级表示(三)

注:以下内容均来自开源学习组织DataWhale程序的机器级表示(三)1 过程在大型软件的构建过程中,需要对复杂功能进行切分,过程提供了一种封装代码的 方式,它可以隐藏某个行为的具体实现,同时提供清晰简洁的接口定义。C语言中的函数和Java中的方法都是一种过程。例如函数P调用函数Q,函数Q执行完毕返回函数P,这其中包含:传递控制传递数据分配和释放内存2 运行时栈栈为函数调用提供了后进先出的内存管理机制。以函数P调用函数Q为例,当函数Q正在执行时,函数P及相关调用链上的函数都会被暂时
原创
发布博客 2021.12.25 ·
240 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Spark端口

一、4040端口spark任务运行后,会将Driver所在机器绑定到4040端口,提供当前任务的监控页面。此端口号默认为4040,展示信息如下:调度器阶段和任务列表RDD大小和内存使用情况环境信息正在运行的executors的信息演示如下:通过spark的java接口启动sparkSparkConf sc = new SparkConf(); // 创建一个SpakrConf对象用于配置Sparksc.setAppName("name") // 设定程序名字
原创
发布博客 2021.12.23 ·
5513 阅读 ·
0 点赞 ·
0 评论 ·
11 收藏

程序的机器级表示(二)

注:以下所有内容均来自开源学习组织DataWhale程序的机器级表示(二)1 加载有效地址leaq S, D →\rightarrow→ Load Effective Address注:x86-64位处理器地址长度都是64,因此都是leaq例如如下指令:leaq 7(%rdx, %rdx, 4), %rax:表示把有效地址复制到寄存器rax中。其中7(%rdx, %rdx, 4)表示有效地址(计算方式见程序的机器级表示(一)中4.0.1):形式符合公式Imm(rb,ri,s)→Imm+R[rb
原创
发布博客 2021.12.22 ·
1582 阅读 ·
1 点赞 ·
0 评论 ·
17 收藏

程序的机器级表示(一)

注:以下内容均来自开源学习组织DataWhale程序的机器级表示(一)1 由程序引入的基本概述程序main.c如下:#include <stdio.h>void mulstore(long x,long y,long *);int main() { long d; multstore(2,3,&d) ; printf(” 2∗ 3 −−>%1d
”,d); return 0;}long mult2(long a,long b){ png s
原创
发布博客 2021.12.20 ·
988 阅读 ·
0 点赞 ·
1 评论 ·
4 收藏

信息的表示和处理

注:以下内容均来自开源学习组织DataWhale1 虚拟地址空间将内存视为一个数组,数组中的元素是由一个个字节组成,每个字节由一个唯一数字表示,这个数字称为地址,所有地址的集合称为虚拟地址空间。2 Byte(字节)与bit(位)1byte = 8bits对应二进制:00000000\~11111111;对应十进制:0\~255进制转换:对于 2n2^n2n(二进制表示为1后面n个0)这样的二进制数字,快速转为十六进制的方法:先根据n=i+4jn=i+4jn=i+4j计算i, j,最终十六进制
原创
发布博客 2021.12.18 ·
1094 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

计算机系统漫游

注:以下所有内容均来自开源学习组织DataWhale1. 编译系统的工作流程1 #include <stdio.h>23 int main(){4 printf(” hello , world ”);5 return 0;6 }通过 gcc -o hello hello.c生成可执行程序的工作流称如下:预处理(hello.c →\rightarrow→ hello.i) :根据#读取头文件中内容直接插入到源程序中,得到另外一个C程序编译(hello.i →\right
原创
发布博客 2021.12.14 ·
1693 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏