摘要:
因为博主多年常坐工作学习,现在已经有了腰肌劳损,所以这个博客主要是测试修复腰肌劳损的。 1.晚上睡觉改用侧睡,后来主要采用道家的文睡。 阅读全文
摘要:
将一个二叉树层序遍历 思路:使用一个辅助队列 func levelOrder(root *TreeNode) [][]int { var a [][]*TreeNode var wd []*TreeNode//队列 //将切片中的循环叠加 if root == nil{ return [][]int 阅读全文
摘要:
判断一个二叉树是否左右对称(递归)很简单但是下笔太慢了 func Minlist(r1 *TreeNode,r2 *TreeNode) bool{ if r1 == nil && r2 == nil{ return true } if (r1 == nil && r2 != nil)||(r2 == 阅读全文
摘要:
二叉搜索树的特点 二叉搜索树的构建 验证二叉搜索树:中序遍历为一个有序数组98,501,530,700 二叉搜索树的增加/删除701 增加节点: func gender (root *TreeNode)*TreeNode{ if root == nil{ root = new(TreeNode) r 阅读全文
摘要:
可靠传输:能够有序的都到达接受方 TCP使用滑动窗口 学习三个机制:超时重传/快速重传/选择确认/累计确认 先了解背景 超时重传很简单 超时重传的时间设置是个难点:简单来说时依据多个往返时间确认平均往返时间,超时重传设置比平均往返时间要长一点,记住超时时间时动态设置不断变化的 以后有必要的时候来了解 阅读全文
摘要:
学习拥塞控制最重要的就是理解慢启动与拥塞避免 学习慢启动,拥塞避免机制/快速恢复机制 1.怎么判断发生了网络拥塞? 拥塞时,路由器的队列排满了,来的分组都会丢失,判断依据分组丢失 判断分组丢失:1.当超时重传启动,2.快速重传机制启动(多次确认) 快速重传说明接收方还能接受到其他的,网络拥塞还不算太 阅读全文
摘要:
最小花费爬楼梯 数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始)。每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应的体力值,你就可以选择向上爬一个阶梯或者爬两个阶梯。请你找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为 0 或 阅读全文
摘要:
早期的计算机内存使用: 直接使用物理地址,如果多个程序都放入内存中会引发很多问题: 1.进程之间地址不隔离,容易互相修改,引发安全问题 2. 内存效率太低,因为进程是随机分配地址,所以零散的空间不能合并起来利用 3.程序运行地址不确定 分段 为了解决地址隔离以及地址不确定的问题 分段 中间层,也就是 阅读全文
摘要:
首先得了解协程与系统线程的对比: 1.系统线程再切换时开销太大,再内核态 2.线程创建,内存会开辟一个栈,这个栈会大很多,而且初始化之后就不能变化,而协程的栈可自动伸缩 grouptine属于两级线程调度模型:既有内核态也有用户态 grouptine是基于系统线程基础实现的多对多的关系,一个系统线程 阅读全文
摘要:
1.Mutex 2.channel 3.WaitGroup 1.使用锁的方式 1 package main 2 3 import ( 4 "fmt" 5 "sync" 6 "time" 7 ) 8 9 var share_cnt uint64 = 0 10 11 var lck sync.Mutex 阅读全文