摘要:
安装 protoc 工具 prootc工具,核心是使用 c++ 写的,常见的安装方式,有三种 使用 ubuntu 系统自带的包管理工具 apt 安装: sudo apt install protobuf-compiler 下载 c++ 源码编译安装 下载官网编译好的二进制文件安装 https://g 阅读全文
摘要:
func init() { log.SetPrefix("错误输出:") file, _ := os.OpenFile("./errs.log", os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666) //0666 表示权限。6是读写,7是读、写、执行 log.Set 阅读全文
摘要:
这也是个经典问题,秋招被问了无数次 数据包校验 对失序数据包重新排序 丢弃重复数据 接收方收到数据后,会发送一个确认 发送方发出数据后,启动一个定时器,如果超时未收到接收方确认,则重新发送这个数据 有流量控制和拥塞控制 如果要发送的报文过大, TCP 会对其进行分段 阅读全文
摘要:
基本命令 HUP 1 终端断线 INT 2 中断(同 Ctrl + C) QUIT 3 退出(同 Ctrl + \) TERM 15 终止 KILL 9 强制终止 CONT 18 继续(与STOP相反, fg/bg命令) STOP 19 暂停(同 Ctrl + Z) 具体使用 -9 用来立即结束程序 阅读全文
摘要:
索引的类型 普通索引 唯一索引 主键索引 组合索引 全文索引 普通索引 是最基本的索引,它没有任何限制。 唯一索引 与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。 主键索引 是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在 阅读全文
摘要:
基本命令 find基本参数命令 find /home -mtime 0 # home 文件下,今天更改过的文件夹。 find ./ -name go # 当前文件夹下,名字叫做 `go` 的文件。 find ./ -size +50M # 所有的 50M 以上的文件。 ls 命令 ll -lh #把 阅读全文
摘要:
通过指针变量 p 访问其成员变量 name,下面语法正确的是() p.name (*p).name (&p).name p->name AB 关于接口和类的说法,下面说法正确的是() 一个类只需要实现了接口要求的所有函数,我们就说这个类实现了该接口 实现类的时候,只需要关心自己应该提供哪些方法,不用 阅读全文
摘要:
第一范式: 确保每列保持原子性(每列都不可再拆分) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。 第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行 阅读全文
摘要:
服务注册发现的过程 etcd由哪几部分构成? etcd作为一个高可用的键值存储系统,天生就是为了集群化而设计的,一般etcd推荐奇数个节点,推荐的节点数量是 3、5、7 构成一个集群。 启动etcd 安装完 etcd 以后,使用 go 进行连接 连接 etcd import ( "context" 阅读全文
摘要:
数据传输过程中的四个问题 窃听(加密) 假冒(消息认证码,数字签名) 篡改(消息认证码,数字签名) 事后否认(数字签名) 但是因为数字签名无法确认公开密钥的制作者,要想解决这个问题,可以使用数字证书技术 加密的基础知识 哈希函数 哈希函数可以把给定的数据转换成固定长度的无规律数值。转换后的无规律数字 阅读全文
摘要:
简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 红黑树的特点 每个节点或者是黑色,或者是红色。 根节点是黑色。 每个叶子节点(NIL)是黑色。 [注意:这里叶子节 阅读全文
摘要:
基本概念 当前读和快照读 当前读: 总是读到最新的数据 select * from lock in share mode 快照读: 读取的是历史版本的记录 select ..... 隐藏字段 (每一行上包括几个用户不可见的字段) DB_TRX_ID :创建或者是最后一次的修改的ID,比如某一个被 事 阅读全文
摘要:
context 可以用来告诉子 grountine 什么时候结束。 func worker(ctx context.Context) { defer wg.Done() LABEL: for { fmt.Println("worker......") time.Sleep(time.Second) 阅读全文
摘要:
组播一般应用于 UDP 协议,有一个应用程序要把一个分组发送给多个目的地主机。 需要注意的是,主机组播时仅发送一份数据,只有数据在传送路径出现分叉时候,才将分组复制后继续转发,因此对于发送者而言,数据只需要发送一次就可以发送到所有的接受者,大大降低了网络的负载和发送者的负担。组播需要路由器的支持才行 阅读全文
摘要:
基础知识 1Byte(字节)=8bit 将用户程序变成可以在内存中执行的程序,通常需要以下几个步骤 编译:将用户代码编译成若干目标模块 链接:将编译后的一组目标模块和所需要库链接在一起, 形成完整的装入模块 装入:由装入程序将模块装入内存中运行 将模块装入内存有三种方式 1. 绝对装入 在编译的时候 阅读全文
摘要:
根域名 DNS 解析过程 电脑先 拿着域名 去找 DNS 服务器, DNS 把域名对应的 IP 地址返回给电脑,电脑拿着这个 IP 地址再取访问网站。 DNS服务器的结构 典型的 DNS 解析过程 解析 www.163.com网址。 这里的www其实就是主机名,也就是163.com 提供 web服务 阅读全文
摘要:
好处 ID 可以根据时间 有序 生成。 原理 SnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型 的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的,后面的代码中有详细的注解 阅读全文
摘要:
简单工厂模式 package factory import "fmt" type Speaker interface { Speak() } type Dog struct{} func (d Dog) Speak() { fmt.Println("小狗汪汪叫") } type Cat struct 阅读全文
摘要:
单线程 func main() { for i := 22; i < 1000; i++ { address := fmt.Sprintf("192.168.141.135:%d", i) connec, err := net.Dial("tcp", address) if err != nil { 阅读全文