![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
maxdaic
这个作者很懒,什么都没留下…
展开
-
slice的浅拷贝和深拷贝
以前学c++的时候就知道有深拷贝和浅拷贝,主要是涉及到指针的拷贝。浅拷贝就是只拷贝指针的值,指针指向的内容只有一份。而深拷贝是把指针指向的值拷贝一份,这样指向这段数据的指针的值也要跟着改变了。golang里面也有浅拷贝和深拷贝。slice的浅拷贝就是指slice变量的赋值操作。slice的深拷贝就是指使用内置的copy函数来拷贝两个slice。实例代码如下所示:func main() { SliceShallowCopy() SliceDeepCopy()}func Slic原创 2020-07-23 15:03:38 · 3407 阅读 · 0 评论 -
最简单的P2P加密聊天软件开发完成
昨天花了点时间做了一个最简单的P2P加密聊天软件。代码很少,功能很简单,暂时只能吃两个人聊,也暂时没有动力去做扩展,做这个的初衷也只是为了锻炼自己用golang写代码的熟练程度,以及对AES对称加密和ECDSA密钥交换算法的应用还好,很顺畅,没遇到太大的阻碍。下面是效果,只能在控制台下输入和打印聊天信息也软件日志,红√勾出来的是聊天内容,其他的是日志信息。代码已上传到github,开源地址:https://github.com/lilianwen/P2P-Crypto-Chat...原创 2020-07-21 16:59:02 · 1541 阅读 · 0 评论 -
用container/heap实现一个最小堆
很少用container/heap这个工具,今天看到别人用来实现一个最小堆,感觉很有意思哈。代码如下:type Request struct { fn func() int data []byte op int c chan int}type Worker struct { req chan Request pending int index int done chan struct{}}type Pool []*Workerfu原创 2020-07-11 03:31:14 · 170 阅读 · 0 评论 -
简单二分查找-golang
又是程序员小灰的漫画,关于二分查找的,我写了个简单的实现。不过实际写代码的过程中并不一帆风顺,有些特殊情况还是没有考虑到。下面是源码:var ( ErrNotFound = errors.New("not found target"))func BinarySearch(data []int, target int) (int,error) { dataAmount := len(data) if dataAmount == 0 { return 0, ErrNotFound原创 2020-07-10 21:14:42 · 151 阅读 · 0 评论 -
简单插入排序-golang
看了程序员小灰的插入排序漫画,还是很好理解的。我当初上大学的时候能有这么好的学习资料就好了。下面是我自己用golang实现的插入排序算法func InsertSort(data []int) { var dataAmount = len(data) for i:=1; i<dataAmount; i++ { target := data[i] for j:=i-1; j >=0; j-- { if data[j] > target { data[j+原创 2020-07-10 20:10:05 · 133 阅读 · 0 评论 -
HTTPS协议握手过程
今天有点空闲时间看了一下网上的一些关于https的文章,发现一个问题,很多文章都大谈特谈https的混合加密过程,但我没看到一篇文章谈到更具体的使用什么对称加密算法和非对称加密算法,于是有了这篇我自己体验的更详细的文章。首先要安装wireshake,安装过程不表。安装好wireshark直接打开,选择对的网络接口,打开百度网址,然后就可以看到很多的报文汹涌而来。这里建议使用过滤器把不必要的报文过滤掉,省得看着心烦。下面是我的过滤条件:ssl && ip.addr==163.177.原创 2020-07-11 12:03:07 · 1053 阅读 · 0 评论 -
go语言实现最短路径走迷宫算法
今天看了一个介绍走迷宫算法的视频,就自己动手写了一遍。写一篇日志以免将来忘记。首先是迷宫的表示。如左下图,起始位置是左上角黄色位置,重点位置是右下角黄色位置。在这个二维矩阵里,0表示道路通畅,可走;1表示有障碍物,不可走。最终计算出来的结果如右下角所示,从左上角0开始,每走一步,累加一次,这样就可以显示出整条路径的先后顺序。要走最短路径,只要从终点位置,不断递减1寻找上一步的位置直到回到起始位置即可。算法的主要过程:从矩阵中一点向外探索,总共有四个方向,分别是上下左右,如下图。当探索原创 2020-06-29 14:39:22 · 745 阅读 · 0 评论 -
golang实现简单的布隆过滤器
关于布隆过滤器的概念性的介绍,我就不多做解释了,可以详细查看一下文章最后的那篇参考资料。我实现这个布隆过滤器是从三个公式开始的,如下图所示只有先处理好这些布隆过滤器的参数以后,才方便创建一个布隆过滤器。三个计算公式对应的实现代码如下:// 计算布隆过滤器位图大小// elemNum 元素个数// errorRate 误判率func CalBloomSize(elemNum uint64, errRate float64) uint64 { var bloomBitsSize = f原创 2020-06-27 01:40:12 · 874 阅读 · 0 评论