网络协议简介 网络协议 1 协议的概念 1.1 什么是协议从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。假设,A、B 双方欲传输文件。规定:第一次,传输文件名,接收方接收到文件名,应答 OK 给传输方;第二次,发送文件的尺寸,接收方接收到该数据再次应答一个 OK;第三次,传输文件内容。同样,接收方接收数据完成后应答 OK 表示文件内容接收成功。由此,无论 A、B 之间传递何种文件,都是通过三次数据传输来完成。A、 路由交换
内存详解 内存详解 1.内存区域划分代码经过预处理、编译、汇编、链接 4 步后生成一个可执行程序。在 Windows 下,程序是一个普通的可执行文件,以下列出一个二进制可执行文件的基本情况.在没有运行程序前,也就是说程序没有加载到内存前,可执行程序内部已经分好三段信息,分别为:代码区(text)、数据区(data)和未初始化数据区(bss)3 个部分。备注:有些人直接把 data 和 bss 合起来叫做静态区或全局区。代码区(t DevOps
goroutine 原理 goroutine 原理 1 概念介绍并发一个 CPU 上能同时执行多项任务,在很短时间内,CPU 来回切换任务执行(在某段很短时间内执行程序 a,然后又迅速得切换到程序 b 去执行),有时间上的重叠(宏观上是同时的,微观仍是顺序执行),这样看起来多个任务像是同时执行,这就是并发。并行当系统有多个 CPU 时,每个 CPU 同一时刻都运行任务,互不抢占自己所在的 CPU 资源,同时进行,称为并行。进程 CPU 在切换程序的时候,如果 DevOps
Go 语言内存理解 Go 语言内存理解 1.内存区域划分代码经过预处理、编译、汇编、链接 4 步后生成一个可执行程序在 Windows 下,程序是一个普通的可执行文件,在没有运行程序前,也就是说程序没有加载到内存前,可执行程序内部已经分好三段信息,这 3 个部分分别为:代码区(text)、数据区(data)和未初始化数据区(bss)有些人直接把 data 和 bss 合起来叫做静态区或全局区。1.2 代码区(text)存放 CPU 执行的机器指令。 DevOps
map 的原理 map 的原理 1.map 原理 go 语言中的 map 是一种内建引用类型 map 存储时 key 不可重复,无顺序,排序的话可以将 key 排序,然后取出对应 value。只有可以比较的类型才可以作 key,value 则无限制。go 中的 map 采用的是哈希 map 给定 key 后,会通过哈希算法计算一个哈希值,低 B 位(这里是大写的 B,2^B 表示当前 map 中 bucket 的数量)代表的是存在 map 中的哪一个 bucket,高 8 位则是了存在 DevOps
切片和 string 原理 string 原理 1.数据结构源码包 src/runtime/string.go:stringStruct 定义了 string 的数据结构:typestringStructstruct{strunsafe.Pointerlenint}其数据结构很简单:stringStruct.str:字符串的首地址 stringStruct.len:字符串的长度 string 数据结构跟切片有些类似,只不过切片还有一个表示容量的 DevOps