北川广海の梦

北川广海の梦

最新文章

全文检索集群下得分计算

ES 搜索评分 ElasticSearch 对分布式支持十分出色。通过 shard 分片,能够将索引拆分到不同的节点,提供更优的整体性能。 然而这样的做法,虽然对可扩展性提供了很好的支持,但是搜索本身更加复杂了。 全文检索的返回结果都是有序的。一般来说,排名越高的文档,其搜索匹配度也就越高,越可能是
35
0
0
2024-02-08

浅聊字符串拼接

浅说字符串拼接 绝大多数语言,都提供了+这一操作符,支持字符串进行拼接。 并且在绝大多数语言中,字符串都是不可变的。那么在拼接时候,需要不断开辟新的内存,并将原本的内容移动到新的内存区域。 参考以下写法: func Concat(slice []string) string{ var result
25
0
0
2023-12-21

snapshot isolation隔离级别

Snapshot Isolation 一般来说,我们能从许多教科书与网络上的资料学习到,数据库的隔离级别分为四种: RU 读未提交,可以读取到其他事务未提交的更改,会导致脏读 RC 读已提交,只能读取其他事务已提交的更改,但是在两次读取间隔中,其他事务由提交,会导致两次读取不一致 RR 可重复读,在
53
0
0
2023-11-28

Bluge 文档写入过程

之前分析了 zincsearch 对于一个文档写入的处理,bluge 作为其底层的索引库,其处理细节同样非常重要。本文将梳理一下 bluge 如何处理 document 写入操作。 基本概念 bluge 对外提供了一个 writer 对象,应用层可以以此对文档进行 crud 操作。 应用层可以一次性
48
0
0
2023-09-13

zincsearch 写入document 过程

zincsearch zincsearch 是一个以 bluge 作为全文检索库的搜索引擎,基于 Go 编写,其最大的特点就是轻量级,对资源友好。相比 ElasticSearch 对机器的配置要求,zincsearch 更适合作为一个应用程序的检索,例如你可以很轻松的为自己的 博客、个人网站,基于
45
0
0
2023-08-15
Go实现反向代理,并自动处理重定向

Go实现反向代理,并自动处理重定向

反向代理 说起反向代理,第一印象估计都是超高人气的Nginx,其凭借强大的性能,吸引了不少使用者。 为什么需要反向代理? 隐藏服务器细节:在你的反向代理机器背后,就是你真正的业务服务器。它可能是由上千台机器组成的庞大集群,也可能是一个便宜好用的云服务器。外部请求想要访问你的服务器,必须通过反向代理。
79
0
0
2023-06-28
Ringbuffer环形队列

Ringbuffer环形队列

RingBuffer 环形缓冲队列,在系统中是非常常见的数据结构,许多场景都是用到了它,例如大名鼎鼎的Linux io_uring,它通过在共享内存中使用环形队列,避免了锁与内核切换的开销,大大提高性能。再比如Golang语言中的channel,在有缓冲的情况下,其内部实现也是通过环形队列的。不过它
25
0
0
2023-06-20
Dgraph Raft RPC实现分析

Dgraph Raft RPC实现分析

Dgraph Raft RPC 实现分析 在raft集群中,各个节点的通信都是基于RPC实现的。各个节点需要通过rpc,实现消息的同步、心跳、快照传输等。etcd的raft库实现了核心算法。而具体的网络通信,需要应用自行实现。 etcd的raft example采用了http传输。dgraph则通过
26
0
0
2023-06-20
Dgraph数据库 raft wal实现

Dgraph数据库 raft wal实现

dgraph的raft算法,是基于etcd raft库实现的,其代码比较有参考价值。本文将分析其raft log storage部分的实现。
31
0
0
2023-04-18

colorful日志

日志日志输出在开发过程中是必不可少的。而不同级别的日志,能够帮助我们对信息进行区分,更容易抓住重点。常见的日志级别:error、warn、info、debug等那么在许多时候 我们看到不同级别日志输出不同的颜色,这背后的秘密其实就是 ANSI转义序列
93
0
0
2023-03-22
阅读更多