-
Ristretto 源码分析
ristretto 在并发方面的设计,使用了BP-Wrapper的并发技巧,引入了环形缓冲区。数据一致性方面采用的是弱一致. 最终一致.更新缓存后立马查询不保证是最新的数据.
技术干货时间:2021-12-09 点击:310
-
如何判断一个元素在亿级数据中是否存在?
最近有朋友问我这么一个面试题目: 现在有一个非常庞大的数据,假设全是 int 类型。现在我给你一个数,你需要告诉我它是否存在其中(尽量高效)。 需求其实很清晰,只是要判断一个数据是否存在即可。 但这里有一个比较重要的前提:非常庞大的数据。 Bloom Filter 基于上面分析的条件,要实现这个需求最需要解决的是如何将庞大的数据 load 到内存中。 而我们是否可以换种思路,因为只是需要判断数据是否存在,也不是需要把数据查询出来,所以完全没有必要将真正的数据存放进去。 伟大的科学家们已经帮我们想到了这样的需求。 Burton Howard Bloom 在 1970 年提出了一个叫做 Bloom Filter(中文翻译:布隆过滤)的算法。 它主要就是用于解决判断一个元素是否在一个集合中,但它的优势是只需要占用很小的内存空间以及有着高效的查询效率。 所以在这个场景下在合适不过了。
技术干货时间:2021-11-29 点击:167
-
深度解密Go语言之基于信号的抢占式调度
在主 goroutine 里,先用 GoMAXPROCS 函数拿到 CPU 的逻辑核心数 threads。这意味着 Go 进程会创建 threads 个数的 P。接着,启动了 threads 个数的 goroutine,每个 goroutine 都在执行一个无限循环,并且这个无限循环只是简单地执行 x++。 接着,主 goroutine sleep 了 1 秒钟;最后,打印 x 的值。
Golang技术干货时间:2021-10-14 点击:134
-
熊猫烧香病毒源码及分析
今天在OSC看到有人共享熊猫烧香的源码,用Delphi写的,真的是跨平台啊,犹对Japanese操作系统破坏最甚,字里行间留露出作者的愤青情绪啊,大体的看了下,主要是通过拷贝到Windows系统目录中,注册表添加自启动的蠕虫病毒,通过VB调用Windows的Outlook发送邮件,进而达到传播病毒,原始的病毒是将exe的图标改成熊猫烧香的图标,并没有其他功效,真正破坏性的都是后期制作的。随着编
技术干货时间:2021-10-11 点击:126
-
面向开发人员梳理的代码安全指南 - Golang代码安全指南
Golang代码安全指南面向开发人员梳理的代码安全指南,旨在梳理API层面的风险点并提供详实可行的安全编码方案。
Golang技术干货时间:2021-09-09 点击:129
-
聊聊内存逃逸
在程序中,每个函数块都会有自己的内存区域用来存自己的局部变量(内存占用少)、返回地址、返回值之类的数据,这一块内存区域有特定的结构和寻址方式,寻址起来十分迅速,开销很少。这一块内存地址称为栈。栈是线程级别的,大小在创建的时候已经确定,当变量太大的时候,会"逃逸"到堆上,这种现象称为内存逃逸。简单来...
Golang技术干货时间:2021-08-31 点击:145
-
让整个网站网页变灰的方法
一般在清明节,全国哀悼日,大地震的日子,以及一些影响力很大的伟人逝世或纪念日的时候,身为站长的我们都会让自己的网站的全部网页变成灰色(黑白色),以表示我们对逝者的悼念。那么今天就说说,通过几行简单的代码,来实现这个功能。
技术干货时间:2021-08-26 点击:91
-
Golang 中 Make 和 New 的区别
Make 和 New 的区别 make 和 new 都是用来分配内存的内建函数。 make 既分配内存,也初始化内存;new 只是将分配的内存清零,并没有初始化。 make 返回的是类型的引用 (即 T);而 new 返回的是指向类型的指针 (即 *T)。 make 只能用来分配及初始化类型为 slice,map,chan 的数据;new 可以分配任意类型的数据。
Golang技术干货时间:2021-08-17 点击:99
-
关于dgraph 字符串类型索引的分析
关于dgraph 字符串类型索引的分析。在开发测试的时候,发现用`term` 索引 以`anyofterms` 搜索的时候返回结果为空。并且发现索引不完整的单词均不能查询返回结果。这个标记器也就是`Tokenizer`,它用于创建可用于创建的字符串索引键。 简单地说,当 Dgraph 看到要由对应索引的标记器解析出新的词时,它将标记该值。该值的集合 `Tokens` 用作发布列表的键。然后将边缘主题添加到每个令牌的发布列表中。 当发生查询搜索时,搜索值被标记化。搜索的结果是相应发布列表的并集或交集中的所有节点(取决于是否使用anyof或被allof使用)。
Dgraph技术干货时间:2021-08-11 点击:186
-
Go map内存溢出
在 Golang 中的 map 结构,在删除键值对的时候,并不会真正的删除,而是标记。那么随着键值对越来越多,会不会造成大量内存浪费? 首先答案是会的,很有可能导致 OOM,而且针对这个还有一个讨论:github.com/golang/go/issues/20135。大致的意思就是在很大的 map 中,delete 操作没有真正释放内存而可能导致内存 OOM。
Golang技术干货时间:2021-07-28 点击:726