CS144 lab0
CS144 Lab 0
[TOC]
1. The webget
在这个任务中,我们需要去利用cs144的库函数去写一个请求获取相应的网页。
大概就是手写报文的意思…
先过一遍流程
设置请求的地址和方法,host已经提供,方法为http
使用TCP建立连接
发送请求报文
输出,知道得到结束符
关闭连接
The code maybe look like this…
123456789101112131415161718192021222324void get_URL(const string &host, const string &path) { // Your code here. TCPSocket socket; socket.connect(Address(host, "http")); socket.write("GET " + path + " HTTP/1.1\r\n"); socket.write("HOST: " + host ...
计算机组成原理(1) - 计算机系统概述
性能指标
[TOC]
时钟周期
是计算机中最小的组成单位,表示的是在一个时钟周期内,cpu仅完成一个最基本的动作
时钟周期是时钟频率的倒数
CPI
执行每条指令所需要的平均时钟周期
CPU时间
执行某段程序所需要的时间
等于时钟周期数乘以CPI乘以T
IPC
是CPI的倒数,表示的是在每个时钟周期内所能执行的指令数目
MIPS
表示的是在每秒所能执行的百万条指令
MIPS=ICTcpu⋅106=ICCPI⋅IC⋅T=fCPIMIPS = \frac{IC}{T_{cpu}\cdot 10^6} = \frac{IC}{CPI\cdot IC \cdot T} = \frac{f}{CPI}MIPS=Tcpu⋅106IC=CPI⋅IC⋅TIC=CPIf
IC表示的是指令的条数
计算机组成原理(2) - 数据信息的表示
数据信息的表示
[TOC]
数值数据的表示
数的机器码表示
原码
就是二进制数据加上符号位
反码
反码是对所有的位置上取反
0.0011 →\to→ 1.1100
补码
补码是对反码加一的操作。
对于小数的模是2, 对于定点整数的模是2n2^n2n
定点数表示
定点小数
符号位+小数点+数值部分
定点整数
符号位 + 数值部分 + 小数点
浮点数的表示
浮点数由 阶符 + 阶值 + 数符 + 位数组成
浮点数的真值 = rE⋅Mr^E \cdot MrE⋅M
浮点数的规格化:
规格化处理就是讲尾数真值最有效位位1,也就是尾数的绝对值要大于或者等于0.5
IEEE754 单精度浮点数
组成:数符(1) + 阶符(8) + 尾数(23)
阶码的正常取值范围是1 ~ 254 ,当数值为0的时候表示为0,数值为255的时候表示出现了异常
在规格化的情况下数值是:N=(−1)s⋅2E−127⋅1.MN = (-1)^s \cdot 2^{E-127} \cdot 1.MN=(−1)s⋅2E−127⋅1.M
在非规格化的情况下数值是:N=(−1 ...
计算机组成原理(4) - 存储系统
存储系统
[TOC]
一 存储器概述
1.1 存储器的分类
1. 按照存储介质分类
(1) 磁存储器
(2) 半导体存储器
(3) 光存储器
2. 按照存取方式分类
(1) 随机存储器(RAM)
可以按照地址随机读写数据存储单元
(2) 顺序存储器(SAM)
存储单元中的内容只能按照顺序进行访问,访问的时间和地址有关
3. 按照信息的可改写性分类
既可以读也可以写的被称为是读写存储器,否则被称为是只读或者是只写寄存器。
4. 按照信息的可保存性分类
存储器可以被分为易丢失和不易丢失,易丢失指的是当断电后保存的信息会丢失
5. 按照功能和读写的速度进行分类
寄存器存储器
高速缓冲存储器
主存储器
外存储器
1.2 存储器的技术指标
存储容量, 存储器可以存储的二进制信息总量称为是存储容量
存储速度
1.3 存储器层次结构
按照我们之前存储方式设置的存储顺序进行排列
1.4 主存的基本结构
地址译码器接收到来自CPU的n位地址信号,通过译码器翻译为对应的地址,选择对应的单元,输出m组数据
1.5 主存中数据的存放
1. 存储字长和数据字长
存储字长指的是 ...
CSP 2021_12 题解
CSP 2021 12月
一 序列查询
针对这一题的思路很简单,直接使用一个pair数组记录所在的位置和大小进行排序.
12345678910111213141516171819202122#include <iostream>#include <algorithm>#define N 1010using namespace std;pair<int, int> a[N];int main() { int n, m; scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) { scanf("%d", &a[i].first); a[i].second = i; } sort(a, a+n+1); int j = 0 ,ans = 0; for (int i = 0; i <= m - 1; i++) { ...
CSP 2022_3_20 题解
CSP 2022 3月
1. 未初始警告
签到题,直接打一个标记数据,如果此时右边的变量已经被初始化或者是常量,那么此时左值可以被成功初始化
123456789101112131415161718#include<iostream>using namespace std;#define N 200100int vis[N];int main() { vis[0] = 1; int n, k; int ans = 0; scanf("%d%d", &n, &k); for (int i = 1; i <= k; i++) { int x, y; scanf("%d%d",&x,&y); if (!vis[y]) ans++; vis[x] = 1; } printf("%d\n",ans);}
2. 出行规划
这个题目稍微比第一题复杂一点 ...
curl method
The curl method
使用curl命令可以帮助我们在命令行下快速地向网站发起请求
1. 直接发起请求
1234❯ curl www.baidu.com<!DOCTYPE html><!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link.....
2. 带参数的请求
在我们的请 ...
ln command
How to create a link in the Linux
create a link to the file
1ln -s [file] [the link]
For example, now you have a file called the t1.txt, then you
wants to make a link called t2 to the t1.txt
Then you can do as follow
1ln -s t1.txt t2
cat t2 will have the same effect as the cat t1.txt
Then we can use the ls command to check the l2
1234> ls -l t1.txt-rw-rw-r-- 1 halfstar halfstar 7 3月 30 23:03 t1.txt> ls -l t2lrwxrwxrwx 1 halfstar halfstar 6 3月 30 23:04 t2 -> t1.txt
The link do not sa ...
java_abstract&interface.md
抽象类和接口
抽象类
子类继承父类后往往会添加新的属性和方法,因此沿着继承链越向下继承的子类和方法越具体
越上层的祖先类越抽象
java可以不定义方法体的方法,其方法体由子类根据具体情况实现,这样的方法被称为是抽象方法
抽象方法和抽象类的声明必须加上abstract 关键词
抽象方法的意义:加给子类一个约束
一个类如果满足下面的任意一个条件,则该类包含抽象方法且是抽象类
类显式地包含了一个抽象方法的声明
类的父类中声明的抽象方法未在类c中实现
类所实现的接口中有的方法没有类c中实现
只要是类中有一个未实现的方法(自己定义的或者是继承的),就是抽象类
一个不包含任何抽象方法的类,也可以定义为抽象类
只有实例方法可以声明为抽象类,抽象类不能被实例化,即不能用new关键词创建对象,
但是抽象类的父类可以是具体类,自己加入了抽象方法
接口
接口是公共静态常量和公共抽象实例方法的集合,接口是公共抽象实例方法的集合,接口是能力,规范,协议的反映
接口和类的区别:
不能定义构造函数
接口之间可以多继承,类可以同时实例化多个接口
和抽象类意义,不能new一个接口
接口中所有数据字段 ...
ctrl c v in linux
How to ctrl-c-v in the vim
ctrl c v is the best tools for us!
So how to use it in the vim, as we all kown, ctrl +[]
is used by vim in other place.
cv within the vim
If you just wants to use it in the vim, it is simple
copy
command
usage
y
choose the content in the v mode and copy it
yy
copy the current line
nyy
copy n lines from the current line
y_
it is equal to the yy
yw
y the word
y$
copy until the end of the line
y^
copy until the blank
y0
copy until the begin of the ...