go语言的出现非常奇怪,有几个问题请高手答案一下~~~~??

Python021

go语言的出现非常奇怪,有几个问题请高手答案一下~~~~??,第1张

1:go与c语言相比,go有垃圾回收,不会造成内存泄露问题,go的语法简洁优美,同样的c++100行代码go大概50行可以做到,go的目标是能做C++能做的事,虽然目前可能不太实际

2:go的并行机制并不是一般的线程,通过channel和goroutine来实现,比线程还要轻量级很多,所以go适合高并发的服务器端

3:go是系统级别的语言,相当于c语言,java c#都是算比较高级的语言,这个不太好比,效率的话目前确实是要高一些,而且不需要外部依赖,所以go还是很强大的

在做域名爆破中,遇到了把一个300G的子域名json文件进行去重,一开始是考虑使用字典进行去重,但是数据量大了,会造成内存泄露。看网上资料介绍了一种方案,就是使用布隆过滤器

布隆过滤器是一种数据结构,概率型数据结构,特定是高效插入和查询,可以用来告诉你“某一值一定不存在或者kennel存在”。

相比于传统的map、set等数据结构,占用空间更少,但其返回结果是概率型的,不确定。

布隆过滤器内部维护一个bitArray(位数组),开始所有数据为0,当一个元素过来时,能过多个哈希函数(hash1、hash2、hash3)计算不同的hash值,并通过hash值找到bitArray的下标,将里面的值改为由0变为1。布隆过滤器有一个误判率,误判率越低,数组越长,所在空间越大,误判率越高,数组越小,所占空间越小。

这里贴上一个技术大牛的博客地址,里面对布隆过滤器用法以及在redis里面处理缓存穿透问题的详细介绍。

https://www.cnblogs.com/yscl/p/12003359.html