摘要:
假设我们存一个数据0x12345678 这是一个16进制的数据 我们知道一个字节有8位,一个16进制的数占4位,而内存空间他是以字节为基本单位的。 大端存储是从低地址到高地址依次存入数据,小端存储则是从高地址到低地址依次存入。 以上面数据为例子 大端存储:12 34 56 78 12在最低的地址上 阅读全文
摘要:
该实验是要实现一个字节重组的类,类是把一些零散的字符串给他重组成一个完整的字符串并且写入lab0中的ByteStream类中。 看明白了这个图代码还是比较容易写出来的,此处给出stream_reassembler.cc的代码 #include "stream_reassembler.hh" #inc 阅读全文
摘要:
1.环境搭建,按照pdf搭建。 最好环境和他一样,注意不要用wsl,最后check_lab0的时候,第九个测试用例会failed。 2.手动连接网络 下面两项任务都是依赖一个可靠的字节流的(网络层交付过程是不可靠的,他只是尽力交付,使它可靠的是协议比如tcp) 2.1 手动获取一个网站 打开终端,输 阅读全文
摘要:
添加行号set number 打开语法高亮:syntax on Tab 大小:set tabstop=4 缩进大小:set shiftwidth=4 安装一个vim插件管理工具 网址:https://github.com/gmarik/vundle#about 用上面的vim插件管理工具来安装我们需 阅读全文
摘要:
##linux获取目录的uid从而获取权限 直接看代码 func getuid(path string) string { var uid string info, _ := os.Stat(path) if stat, ok := info.Sys().(*syscall.Stat_t); ok 阅读全文
摘要:
##接口 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。也就是说我们只关心接口实现了什么功能,不关心接口具体怎么实现的。 可能有些东西同学不太理解为什么要有接口,下面举个例子 package main import "fmt" type cat 阅读全文
摘要:
slice是一个引用类型的数据,它的底层实际上是一个数组,我们改变切片里的值,也会改变原来数据的值,列如: arr := [5]int{1,2,3,4,5} arr2 := arr[:] arr2[0] = 10000 fmt.Println(arr) //输出10000 2 3 4 5 slice 阅读全文
摘要:
##go语言函数 go语言的函数地位非常高,函数可以做返回值成了闭包,函数也可以赋值给变量。 函数闭包 下面来看看如下代码为什么可以计算斐波那契数列 package mainimport "fmt"func fib() func() int { a, b := 0,1 return func() i 阅读全文
摘要:
##流程控制语句 go语言的流程控制语句有if和swtich,先来看看if,if有一种用法和c语言的差不多。如下: if err!=nil { panic("wrong") } 还有一种用法可以给变量赋值在跟上条件,如下: if contents,err := ioutil.ReadFile(fil 阅读全文