笔记选择(有道云和typora) 使用markdown时嫌弃了它的颜值,又回头使用有道云,结果发现在平台上发文章时,有道云笔记复制粘贴后格式出了不少问题再去看看markdown的复制粘贴效果,格式上没有问题了,但是图片路径还是会比较麻烦。
go并发知识点整理 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中的多个线程之间可以并发执行。D.协程:独立的栈空间,共享堆空间,调度由用户自己控制,本质上有点类似于用户级线程,这些用户级线程的调度也是自己实现的。import ("fmt"// idId int// 需要计算的随机数// 这里必须传对象实例。
深入理解 Python 的可变参数与关键字参数 可变参数允许我们在调用函数时传入不确定数量的参数,而不需要提前定义这些参数的具体个数。在Python中,有两种类型的可变参数:位置可变参数 (*args) 和关键字可变参数 (**kwargs关键字参数允许你将参数以「键值对」的形式传递给函数,这样可以使代码更加具有可读性。关键字参数有两种使用方式:预定义关键字参数和可变关键字参数 (**kwargsPython 中的可变参数和关键字参数极大地提升了函数的灵活性,允许我们处理不定数量的参数。通过*args,我们可以接收任意数量的位置参数;通过。
mod笔记 将已安装的模块更新到最新版本或指定的版本:go get -u。第三方依赖包的下载地址:$GOPATH/pkg/mod。下载第三方包,但是不依赖(不下载间接依赖)查看依赖的路径,即在哪里使用了这个依赖。下载第三方包,且依赖(下载间接依赖)清理当前模块生成的临时文件。依赖对齐(下载间接依赖)手动编辑go.mod文件。
golang使用git远程仓库下载工具包报错module declares its path as: xxx but was required as:xxx 看了网上好几个解决方法,依然报错。最后发现是项目忘记设置国内代理。设置->Go->Go模块。添加gopro,值为。然后再去下载就可以了。
通道的使用 通道中的数据是占用资源的,使用后及时关闭通道,可以保护数据安全,防止资源泄露;使用Go通道的一个基本原则:不要在接收方关闭通道,确保关闭通道的是唯一发送方。也可以使用``sync.Mutex`避免多次关闭同一通道。有缓冲通道赋值后,值会进入缓冲区,在缓冲区满后阻塞。发送和接收的交互行为是同步的,且无法单独存在。不要关闭(或者发送值到)已经被关闭了的通道。1、通道中的资源可能会泄露。情况1:单生产者,单消费者。情况2:单生产者,多消费者。情况3:多生产者,单消费者。优雅的关闭方案:使用。
golang slice知识点 diySlice2 在diySlice基础上添加两个元素,1,2,此时len为3,超出了cap的值2,所以扩容,创建新数组,diySlice2 指向新数组,len为3,cap为2 * 2 = 4, 元素8,1,2。golang的slice底层依靠数组实现,它包括三个部分:指向数组的指针、切片的长度和切片的容量,本质就是一个指向固定大小数组的指针,当大小超过数组时就创建新的,更大的数组,然后指向新数组。diySlice3 在diySlice 的基础上添加了8,len为2,内容为1,8。
golang slice的扩容大小 golang的slice扩容已经有很多文章讲解,其中主流的说法是:slice底层由数组实现,当len大于cap时,底层数组翻倍,若翻倍后超过了1024,则扩容为原来的1.25倍。但是我实际操作中,扩容并不按照这个规律,而是按照go环境文件里sizeclass.go中设定好的阈值进行增长。扩容后的字节大小,放入其中butes/obj那一列,向上取整,就是得到的新切片slice。
map补充 (4)hash冲突:由于输入与(key)无穷大,输出域(hash值)有限,因此必然存在不同key映射到相同hash值的情况,称之为hash冲突。(2)hash的离散型:重要两个key不相同,不论其相似度的高低,产生的hash的值都会在整个输出域内均匀的离散化。(3)采用渐进迁移,每当桶被实际操作到时都迁移一部分的元素到新桶中,避免因为一次性的大量数据迁移引发性能抖动。(3)hash的单向性:企图通过hash值反向映射回key是无迹可寻的。(1)hash的可重入性:相同的key,必然产生相同的hash值。
Go语言中Map的自动扩容机制 哈希表是用空间换时间的结构,但是在扩容是会非常耗时,因此在对时间性能有要求的情况下,应该预估map设定的大小,尽量避免扩容操作。的扩容操作,扩容操作会重新分配更大的哈希表,将原有的键值对重新哈希到新的哈希表中。在触发扩容后,Go 会创建一个新的哈希表,其大小默认是当前哈希表大小的两倍。中的元素数量达到当前哈希表大小的 6.5 倍时,Go 会触发扩容操作。遍历原有的哈希表,将每个键值对重新计算哈希值,并插入到新的哈希表中。扩容完成后,释放原有的哈希表内存空间,将新的哈希表作为。扩容完成后,可以继续往。
golang语言Map入门笔记 * 使用 make 函数 */ map_variable := make(map[KeyType]ValueType, initialCapacity)其中 KeyType 是键的类型,ValueType 是值的类型,initialCapacity 是可选的参数,用于指定 Map 的初始容量。Map 的容量是指 Map 中可以保存的键值对的数量,当 Map 中的键值对数量达到容量时,Map 会自动扩容。如果不指定 initialCapacity,Go 语言会根据实际情况选择一个合适的值。
优化VScode插件及设置(持续更新) 代码自动格式化:按下shift+alt+f快捷键,代码会自动规整为默认的标准格式,可以在设置中修改格式,比如找到Tab Size,修改默认首行缩进的制表符长度;调整字体大小:按住ctrl键,并按下+/-号可以缩放界面(是整个界面,不单是字体),在设置Font Size中可以自定义代码字体默认大小,在设置中找到Mouse Wheel Zoom勾选,可以使用ctrl+滚轮临时调整代码字体大小。标签优化:下载Auto Rename Tag插件,当修改一对标签中的开始标签时,结束标签自动修改;