深入理解计算机系统 第6章 习题解析
这次更新第6章习题。
参考资料:
https://dreamanddead.github.io/CSAPP-3e-Solutions/chapter6
https://zh.wikipedia.org/zh/%E6%AF%8F%E5%88%86%E9%90%98%E8%BD%89%E9%80%9F
https://unix.stackexchange.com/questions/167038/is-there-any-way-to-know-the-size-of-l1-l2-l3-cache-and-ram-in-linux
https://www.cnblogs.com/kekukele/p/3829369.html?wework_cfm_code=M8Cqb2ks4L%2BsND75%2FNCam4bak6vx5un7Fr%2BxzPv9xCxMh3ihzvKX75lVcSwK%2FeDS%2F18ogZKaBEskYzQ8zZEYnPGNXb37HFryLTWAaifxaJ0cJQUZLYjQXv8%3D
6.22总容量$r$为
\begin{aligned}
r & ...
计算机网络——自顶向下方法(第七版)Socket Programming Assignment 4:ProxyServer
这部分回顾Socket Programming Assignment 4: ProxyServer。
参考资料:
https://github.com/jzplp/Computer-Network-A-Top-Down-Approach-Answer/blob/master/Chapter-2
简介此次作业的目的构建代理服务器,主要任务如下:
实现基本的代理服务器
实现带缓存的代理服务器
备注:没有支持POST方法。
文件路径结构如下:
Socket4_ProxyServer/
|-- proxy_server.py
`-- proxy_server_cache.py
带缓存的文件路径结构:
|-- cache
| |-- www.baidu.com
| `-- www.edx.org
|-- proxy_server.py
`-- proxy_server_cache.py
实现基本的代理服务器没有使用作业的代码框架,因为感觉不太好理解,自己重构了一版,代码如下:
# coding=utf-8
from socket import ...
计算机网络——自顶向下方法(第七版)Socket Programming Assignment 3:SMTP
这部分回顾Socket Programming Assignment 3: SMTP。
参考资料:
https://github.com/jzplp/Computer-Network-A-Top-Down-Approach-Answer/blob/master/Chapter-2
https://github.com/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES
http://www.ruanyifeng.com/blog/2008/06/mime.html
https://my.oschina.net/u/3314358/blog/1825595
https://blog.csdn.net/weixin_41789943/article/details/82348946
https://blog.csdn.net/PoetMeng/article/details/53507865
https://zhuanlan.zhihu.com/p/146565620
https://blog.csdn.net/chjuan112 ...
计算机网络——自顶向下方法(第七版)Socket Programming Assignment 2:UDPpinger
这部分回顾Socket Programming Assignment 2: UDPpinger。
参考资料:
https://github.com/jzplp/Computer-Network-A-Top-Down-Approach-Answer/blob/master/Chapter-2
https://github.com/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES
简介此次作业的目的是熟悉UDP套接字编程,实现Pinger程序,主要任务如下:
实现基本的Pinger客户端
实现增强的Pinger客户端
实现Heartbeat客户端与服务器
文件路径结构如下:
Socket2_UDPpinger/
|-- UDPHeartbeatClient.py
|-- UDPHeartbeatServer.py
|-- UDPPingerServer.py
|-- client.py
`-- client_enhance.py
文件解释如下:
UDPPingerServer.py:Pinger服务器 ...
计算机网络——自顶向下方法(第七版)Socket Programming Assignment 1:WebServer
这部分回顾Socket Programming Assignment 1: WebServer。
参考资料:
https://github.com/jzplp/Computer-Network-A-Top-Down-Approach-Answer/blob/master/Chapter-2
https://github.com/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES
简介此次作业的目的是是熟悉TCP套接字编程,主要任务如下:
实现基本的服务器
实现多线程服务器
实现客户端
文件路径结构如下:
Socket1_WebServer/
|-- HelloWorld.html
|-- client.py
|-- web_server.py
`-- web_server_multi.py
文件解释如下:
HelloWorld.html:服务器中文件;
web_server.py:基本服务器;
web_server_multi.py:多线程服务器;
client.py:客户端
网页内容HelloW ...
计算机程序的构造和解释(SICP) 第4章 习题解析 Part4
这次回顾第四章第四部分习题。
学习资料:
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/index.htm
https://github.com/DeathKing/Learning-SICP
https://mitpress.mit.edu/sites/default/files/sicp/index.html
https://www.bilibili.com/video/BV1Xx41117tr?from=search&seid=14983483066585274454
参考资料:
https://sicp.readthedocs.io/en/latest
http://community.schemewiki.org/?SICP-Solutions
http://community.schemewiki.org/?sicp
https://l ...
Hexo博客不蒜子阅读次数迁移至Leancloud
最近在给博客迁移主题时,发现阅读排行榜的阅读次数和实际阅读次数不一致,检查后发现原因为阅读排行榜是基于Leancloud,而博客的阅读次数是基于不蒜子,由于不蒜子的阅读次数无法手动修改,所以使两者一致的方法只能是将不蒜子的阅读次数迁移至Leancloud,本文给出迁移的方案以及代码。
计算机程序的构造和解释(SICP) 第4章 习题解析 Part3
这次回顾第四章第三部分习题。
学习资料:
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/index.htm
https://github.com/DeathKing/Learning-SICP
https://mitpress.mit.edu/sites/default/files/sicp/index.html
https://www.bilibili.com/video/BV1Xx41117tr?from=search&seid=14983483066585274454
参考资料:
https://sicp.readthedocs.io/en/latest
http://community.schemewiki.org/?SICP-Solutions
http://community.schemewiki.org/?sicp
https://l ...
给Hexo Butterfly主题首页增加字数总计,阅读时长
原生的Butterfly主题首页无法显示字数总计,阅读时长,本文给出配置的方法。
计算机网络——自顶向下方法(第七版)Wireshark Lab1:Getting Started
这部分回顾Wireshark Lab1,该实验主要是对wireshark有个初步了解。
参考资料:
https://github.com/moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES
Wireshark Lab1: Getting Started问题1几种协议为:
UDP
DNS
TCP
HTTP
问题2
HTTP GET:2021-06-04 23:19:43.447449
HTTP OK:2021-06-04 23:19:43.702526
问题3
本机:192…
gaia.cs.umass.edu:128.119.245.12
问题4windows版本的wireshark似乎有点问题,无法打印,解决方法为对packet header中项目展开,然后右键复制值。
HTTP GET:
Frame 135: 642 bytes on wire (5136 bits), 642 bytes captured (5136 bits) on interface \Device\NPF_{F753ABA9- ...
算法概论(DPV)习题解答——第3章 图的分解
书籍介绍:
https://book.douban.com/subject/3155710/
配套课程:
CS170(伯克利),CS161(斯坦福)
github仓库:
https://github.com/Doraemonzzz/Algorithm-DPV
参考资料:
https://math.stackexchange.com/questions/114240/disjoint-edges-between-vertices-of-odd-degree
https://cg3.chero.help/9780077388492-7007638.html
这次回顾第3章,图的分解。
3.5方法:
记原始邻接表为$G_1$
初始化新接表$G_2$
for $v$ in $V$:
for $u$ in $G_1[v]$:
$G_2[u].\text{append}(v)$
时间复杂度:
每条边和每个顶点都遍历一次,所以时间复杂度为$O(|V|+|E|)$
3.6(a)注意到
d(u) = |\{v|(u,v)\in E \}|注意对于每条边$(u,v )\in E$,会分 ...
深入理解计算机系统 第5章 习题解析
这次更新第5章习题。
参考资料:
https://dreamanddead.github.io/CSAPP-3e-Solutions/chapter5/
5.13基本参数:
汇编代码
.L5
vmovsd 0(%rbp,%rcx,8), %xmm1
vmulsd (%rax,%rcx,8), %xmm1, %xmm1
vaddsd %xmm1, %xmm0, %xmm0
addq $1, %rcx
cmpq %rbx, %rcx
jne .L15
(a)关键路径的分析:
原图:
简化后:
关键路径:
因此关键路径为加法。
(b)此时数据类型为浮点数,所以下界为浮点数加法周期3.0。
(c)此时数据类型为整数,所以下界为浮点数加法周期1.0。
(d)因为关键路径上的操作为加法。
5.14代码:
#include <stdio.h>
/*Inner product. Accumulate in temporary */
void inner5(vec_ptr u, vec_ptr v, data_t *dest){ ...