摘要: 安装 protoc 工具 prootc工具,核心是使用 c++ 写的,常见的安装方式,有三种 使用 ubuntu 系统自带的包管理工具 apt 安装: sudo apt install protobuf-compiler 下载 c++ 源码编译安装 下载官网编译好的二进制文件安装 https://g 阅读全文
posted @ 2021-09-27 23:28 沧海一声笑rush 阅读(96) 评论(0) 推荐(0) 编辑
摘要: func init() { log.SetPrefix("错误输出:") file, _ := os.OpenFile("./errs.log", os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666) //0666 表示权限。6是读写,7是读、写、执行 log.Set 阅读全文
posted @ 2021-09-27 17:11 沧海一声笑rush 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 这也是个经典问题,秋招被问了无数次 数据包校验 对失序数据包重新排序 丢弃重复数据 接收方收到数据后,会发送一个确认 发送方发出数据后,启动一个定时器,如果超时未收到接收方确认,则重新发送这个数据 有流量控制和拥塞控制 如果要发送的报文过大, TCP 会对其进行分段 阅读全文
posted @ 2021-09-26 00:43 沧海一声笑rush 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 基本命令 HUP 1 终端断线 INT 2 中断(同 Ctrl + C) QUIT 3 退出(同 Ctrl + \) TERM 15 终止 KILL 9 强制终止 CONT 18 继续(与STOP相反, fg/bg命令) STOP 19 暂停(同 Ctrl + Z) 具体使用 -9 用来立即结束程序 阅读全文
posted @ 2021-09-25 13:59 沧海一声笑rush 阅读(624) 评论(0) 推荐(0) 编辑
摘要: 索引的类型 普通索引 唯一索引 主键索引 组合索引 全文索引 普通索引 是最基本的索引,它没有任何限制。 唯一索引 与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。 主键索引 是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在 阅读全文
posted @ 2021-09-25 12:38 沧海一声笑rush 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 基本命令 find基本参数命令 find /home -mtime 0 # home 文件下,今天更改过的文件夹。 find ./ -name go # 当前文件夹下,名字叫做 `go` 的文件。 find ./ -size +50M # 所有的 50M 以上的文件。 ls 命令 ll -lh #把 阅读全文
posted @ 2021-09-24 21:23 沧海一声笑rush 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 通过指针变量 p 访问其成员变量 name,下面语法正确的是() p.name (*p).name (&p).name p->name AB 关于接口和类的说法,下面说法正确的是() 一个类只需要实现了接口要求的所有函数,我们就说这个类实现了该接口 实现类的时候,只需要关心自己应该提供哪些方法,不用 阅读全文
posted @ 2021-09-23 23:49 沧海一声笑rush 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 第一范式: 确保每列保持原子性(每列都不可再拆分) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。 第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行 阅读全文
posted @ 2021-09-23 14:34 沧海一声笑rush 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 服务注册发现的过程 etcd由哪几部分构成? etcd作为一个高可用的键值存储系统,天生就是为了集群化而设计的,一般etcd推荐奇数个节点,推荐的节点数量是 3、5、7 构成一个集群。 启动etcd 安装完 etcd 以后,使用 go 进行连接 连接 etcd import ( "context" 阅读全文
posted @ 2021-09-22 08:35 沧海一声笑rush 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 数据传输过程中的四个问题 窃听(加密) 假冒(消息认证码,数字签名) 篡改(消息认证码,数字签名) 事后否认(数字签名) 但是因为数字签名无法确认公开密钥的制作者,要想解决这个问题,可以使用数字证书技术 加密的基础知识 哈希函数 哈希函数可以把给定的数据转换成固定长度的无规律数值。转换后的无规律数字 阅读全文
posted @ 2021-09-19 16:01 沧海一声笑rush 阅读(330) 评论(0) 推荐(1) 编辑
摘要: 简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 红黑树的特点 每个节点或者是黑色,或者是红色。 根节点是黑色。 每个叶子节点(NIL)是黑色。 [注意:这里叶子节 阅读全文
posted @ 2021-09-18 08:41 沧海一声笑rush 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 基本概念 当前读和快照读 当前读: 总是读到最新的数据 select * from lock in share mode 快照读: 读取的是历史版本的记录 select ..... 隐藏字段 (每一行上包括几个用户不可见的字段) DB_TRX_ID :创建或者是最后一次的修改的ID,比如某一个被 事 阅读全文
posted @ 2021-09-17 17:30 沧海一声笑rush 阅读(66) 评论(0) 推荐(0) 编辑
摘要: context 可以用来告诉子 grountine 什么时候结束。 func worker(ctx context.Context) { defer wg.Done() LABEL: for { fmt.Println("worker......") time.Sleep(time.Second) 阅读全文
posted @ 2021-09-15 16:27 沧海一声笑rush 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 组播一般应用于 UDP 协议,有一个应用程序要把一个分组发送给多个目的地主机。 需要注意的是,主机组播时仅发送一份数据,只有数据在传送路径出现分叉时候,才将分组复制后继续转发,因此对于发送者而言,数据只需要发送一次就可以发送到所有的接受者,大大降低了网络的负载和发送者的负担。组播需要路由器的支持才行 阅读全文
posted @ 2021-09-13 12:06 沧海一声笑rush 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 基础知识 1Byte(字节)=8bit 将用户程序变成可以在内存中执行的程序,通常需要以下几个步骤 编译:将用户代码编译成若干目标模块 链接:将编译后的一组目标模块和所需要库链接在一起, 形成完整的装入模块 装入:由装入程序将模块装入内存中运行 将模块装入内存有三种方式 1. 绝对装入 在编译的时候 阅读全文
posted @ 2021-09-13 09:37 沧海一声笑rush 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 根域名 DNS 解析过程 电脑先 拿着域名 去找 DNS 服务器, DNS 把域名对应的 IP 地址返回给电脑,电脑拿着这个 IP 地址再取访问网站。 DNS服务器的结构 典型的 DNS 解析过程 解析 www.163.com网址。 这里的www其实就是主机名,也就是163.com 提供 web服务 阅读全文
posted @ 2021-09-08 11:18 沧海一声笑rush 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 好处 ID 可以根据时间 有序 生成。 原理 SnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型 的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且ID 引入了时间戳,基本上保持自增的,后面的代码中有详细的注解 阅读全文
posted @ 2021-09-08 10:00 沧海一声笑rush 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 简单工厂模式 package factory import "fmt" type Speaker interface { Speak() } type Dog struct{} func (d Dog) Speak() { fmt.Println("小狗汪汪叫") } type Cat struct 阅读全文
posted @ 2021-09-07 12:07 沧海一声笑rush 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 单线程 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 { 阅读全文
posted @ 2021-09-04 17:27 沧海一声笑rush 阅读(55) 评论(0) 推荐(0) 编辑
摘要: 分库分表的概念 分库分表类 垂直拆分 为什么要分库。 比如下面这个表,是在是太多了,那么就可以进行对表的拆分。 一般垂直拆分,都是根据业务进行拆分。 垂直分库 垂直分表 比如下面的表,用户表中,存有 用户 和 密码 这两项,那么每次登录的时候,都要查询这两项,其他的列查询的比较少,所以这个时候,我们 阅读全文
posted @ 2021-08-30 11:35 沧海一声笑rush 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 问题 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 代码 注意看看,用 go 实现堆是如何实现的? package main import ( "container/heap" ) type IntHeap 阅读全文
posted @ 2021-08-27 21:45 沧海一声笑rush 阅读(275) 评论(0) 推荐(0) 编辑
摘要: const N int = 8 //八皇后问题 var Board [N][N]int = [N][N]int{} //初始化棋盘 var Result int = 0 func setBlock(row int, col int, val int) { //设置障碍,-1 //设置不可放置宫格 f 阅读全文
posted @ 2021-08-23 23:57 沧海一声笑rush 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 先来先服务 实时任务到达时,把他们安排在就绪队列的对首,等待当前任务自我终止或运行完成后才能被调度执行. 先加进队列里来的进程先处理。 时间片轮转 轮转法是基于适中的抢占策略的,以一个周期性间隔产生时钟中断,当中断发生后,当前正在运行的进程被置于就绪队列中,然后基于先来先去服务策略选择下一个就绪作业 阅读全文
posted @ 2021-08-18 00:30 沧海一声笑rush 阅读(436) 评论(0) 推荐(0) 编辑
摘要: IP过程中,主要用到的技术 DNS(解决ip地址不容易记住的情况) 基础知识 Mac地址是同一个链路中不同计算机的一种识别码 作为网络层的IP,也有这种地址信息,一般叫做 IP地址,IP地址用于在连接到网络总共的 在网桥和交换集线器等物理层或者数据链路层数据包转发设备中,不需要设置 IP地址 Hop 阅读全文
posted @ 2021-08-16 21:22 沧海一声笑rush 阅读(441) 评论(0) 推荐(0) 编辑
摘要: 易错点 一定要想对输入数据为 0 这种特殊的情况进行判断。 看清代码再写,争取每一个都写对。 错点 for _, v := range dirs { ni := i + v.x nj := i + v.y //看清是啥!!! if ni >= 0 && nj >= 0 && ni < m && nj 阅读全文
posted @ 2021-08-16 07:10 沧海一声笑rush 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 1.管道模式 父进程创建管道,得到两个⽂件描述符指向管道的两端 父进程fork出子进程,⼦进程也有两个⽂件描述符指向同⼀管道。 父进程关闭fd[0],子进程关闭fd[1],即⽗进程关闭管道读端,⼦进程关闭管道写端(因为管道只支持单向通信)。⽗进程可以往管道⾥写,⼦进程可以从管道⾥读,管道是⽤环形队列 阅读全文
posted @ 2021-08-15 00:37 沧海一声笑rush 阅读(80) 评论(0) 推荐(0) 编辑
摘要: Redis的集群模式 主从 通过持久化,在即使数据库重启的情况下,也不会丢失数据,这一台服务器即使出了故障,也不用担心数据丢失 出现了复制功能,所以的一主二从的模式,多数据库可以进行读写,一般从数据库用于读和同步从数据库的内容 一个主数据库可以有多个从数据库,一个从数据库只能有一个主数据库 哨兵模式 阅读全文
posted @ 2021-08-13 19:16 沧海一声笑rush 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 外部排序的概念 外部排序,即不需要将全部记录,都读到内存中,即可完成排序 过程(比如有一万个数据) 把一万个数据,每100条分成一组,每组内部进行排序(共100组)。 把 1、2 组的数据选出来,进行二路并归排序==(还剩50组)==。 继续并归,直到并归成一条。 阅读全文
posted @ 2021-08-13 00:41 沧海一声笑rush 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 状态码分类 1xx Informational(信息性状态码) 接受的请求正在处理 2xx Success(成功状态码) 请求正常处理完毕 3xx Redirection(重定向) 需要进行附加操作以完成请求 4xx Client error(客户端错误) 客户端请求出错,服务器无法处理请求 5xx 阅读全文
posted @ 2021-08-10 18:26 沧海一声笑rush 阅读(827) 评论(0) 推荐(0) 编辑
摘要: 大概的几个分区 程序代码区:存放函数体的二进制代码 栈区:由编译器自动分配释放,存放函数的参数值和局部变量等 堆区:由程序员分配释放==(new)==,或者可以由垃圾回收机制回收 全局区:全局变量和静态变量的存储 栈 栈(stack)又名堆栈是操作系统在建立某个进程时或者线程,为这个线程建立的存储区 阅读全文
posted @ 2021-08-08 21:23 沧海一声笑rush 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 环境配置 更换为国内镜像 https://mirrors.ustc.edu.cn/help/ubuntu.html 更新apt sudo apt-get update 避免每次输入sudo命令都要输入密码 # 打开 sudo 文件夹 sudo EDITOR=vim visudo # 在最后一行添加上 阅读全文
posted @ 2021-08-08 20:54 沧海一声笑rush 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 立扣 121 题 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不 阅读全文
posted @ 2021-08-07 03:34 沧海一声笑rush 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 接口的定义 go的接口类型定义了一组行为。 如果某个 类型 实现了某个接口。那么所以使用这个接口的地方,都支持这种类型。 如果一个变量,他实现了接口里的所有方法,那么他就是实现了这个接口 接口的作用 需求 现在有 狗 和 猫 两个结构体,都能叫,如果被 打 这个函数调用了,他们都能叫,如果在函数往里 阅读全文
posted @ 2021-08-05 14:40 沧海一声笑rush 阅读(124) 评论(0) 推荐(0) 编辑
摘要: Linux 操作系统中断 举个简单的场景,比如你正在家里打单机游戏,突然你饿了,然后你就打电话,叫了一份外卖,你此时叫完外卖,没有必要一直在这里等着,你可以回头继续打游戏,等你游戏打到大 boss 的时候,这个时候,外卖小哥过来敲门了,那么此时你肯定不能退出游戏,因为退出了游戏,再进就得从头开始打, 阅读全文
posted @ 2021-08-02 06:50 沧海一声笑rush 阅读(87) 评论(0) 推荐(0) 编辑
摘要: geospatial 地理位置 添加不同城市的地理位置信息 geoadd china:city 116.408 39.901 beijing geoadd china:city 121.445 31.213 shanghai geoadd china:city 120.343 36.088 qing 阅读全文
posted @ 2021-07-31 17:08 沧海一声笑rush 阅读(41) 评论(0) 推荐(0) 编辑
摘要: 概论 日志系统主要有redo log(重做日志)和binlog(归档日志)。redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。 每一层的主要功能 客户端:建立连接,提交 阅读全文
posted @ 2021-07-31 13:53 沧海一声笑rush 阅读(130) 评论(0) 推荐(0) 编辑
摘要: ac abc abbbbbc abbbbbbbbc adc adddddddc ac abc abbc abababac 限定符 ? hous? # 简单点理解,?表示最后的 s,可有可无 * ab*c # 表示b可以出现一次或者是多次 + ab+c # + 表示至少出现一次 指定匹配位数 ab{8 阅读全文
posted @ 2021-07-30 17:09 沧海一声笑rush 阅读(42) 评论(0) 推荐(0) 编辑
摘要: go压测 http服务压测的方法比较多,主要使用第三方的软件即可实现,推荐使用 go-wrk, go-wrk使用 go get github.com/adeven/go-wrk # 安装命令 go-wrk [flags] url # 使用方法 go-wrk -t=8 -c=100 -n=10000 阅读全文
posted @ 2021-07-30 15:34 沧海一声笑rush 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 剪绳子 立扣343. 整数拆分 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 func cuttingRope(n int) int { // n 米长的绳子 dp := make([]int, n+1) //范围从1到n dp[1] = 阅读全文
posted @ 2021-07-30 05:40 沧海一声笑rush 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 没有障碍物的时候 选择立扣第 62 题 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 分析 原问题和子问题 可以使用动态规 阅读全文
posted @ 2021-07-30 04:52 沧海一声笑rush 阅读(547) 评论(0) 推荐(0) 编辑