向量检索ANN(Approximate Nearest Neighbor Search),指的是对于一个query向量,从向量库中找到和它距离最接近的k个向量。这是一个典型的...
 发简信
    
    发简信
  
   
  向量检索ANN(Approximate Nearest Neighbor Search),指的是对于一个query向量,从向量库中找到和它距离最接近的k个向量。这是一个典型的...
 
  bazel是什么:https://zhulao.gitee.io/blog/2019/04/05/%E7%BC%96%E8%AF%91%E6%9E%84%E5%BB%BA%E...
shell脚本 目录 启动行参数解析[#%E5%90%AF%E5%8A%A8%E8%A1%8C%E5%8F%82%E6%95%B0%E8%A7%A3%E6%9E%90] 参数...
在分布式的服务器环境下,设计到大量的进程以及相同进程的不同实例,需要一种有效的进程id来做唯一标识。 对于这种数据结构的需求是: 尽可能简单,易读 省空间 对于游戏的服务器进...
设计模式里面有一个很重要的思想,原话可能是“不要依赖于具体,而是要依赖于抽象”。在软件的设计中,这种思想可谓算是指导思想了。比如系统要设计一个rpc服务。一种比较好的设计思路...
在开发中,经常有这样的场景,把一些功能打包为一个动态库,这个库作为工具人,可以被其他不同进程链接,然后把自己的功能提供给对应链接的目标程序。这也是动态库最常见的用法,如下所示...
最近遇到一个问题,有两个底层依赖模块,分别是dep1和dep2。在dep1中有调用dep2的代码。本地开发完毕后,合入分支编译报错 提示符号未定义。但是,本地编译是正常的,在...
 
  在游戏里面有各种“随机”的需求,比如从n个用户里面随机给m个发奖励。那么,要如何实现呢?简单的来说,可以调一个stl的函数来实现,伪代码如下: 那shuffle背后是怎么实现...
 
  假设有个场景,希望在程序在执行的时候,调用函数的时候可以自动打印出它的调用栈。或者说希望自动打印出在这个函数中的执行时间。比如这段程序,希望执行到任何函数的时候,都打印出它的...
 
  Protobuff是一个与开发语言、平台无关序列化的工具,广泛应用于需要跨进程传输数据的场景。除此之外,PB还提供了强大的反射能力。可以利用反射的技巧,可以大量降低重复的代码...
 
  protobuf 中提供的编译器protoc,支持开发者自定义plugin的扩展,根据.proto文件生成各种各样的代码。官方文档 https://developers.go...
 
  lua可以通过与C函数相互调用来扩展程序功能,在C中嵌入lua脚本既可以让用户在不重新编译代码的情况下修改lua代码更新程序,也可以给用户提供一个自由定制的接口,这种方法遵循...
打印程序的调用栈是一种常见的debug工具,最常用的就是backtrace函数去获得堆栈信息。不过,这个函数的调用成本很高,是容易使用不当,造成性能问题。在这里整理几种获得程...
 
  jemalloc 是一款内存分配器, 除了可以提高分配内存的效率之外。jemalloc还可以通过profiling机制来发现并定位内存泄漏。 1. 安装 官方提供的insta...
年后在微信读书上面看到两本关于linux shell的书,分别是《linux shell脚本攻略》 和 《linux 性能优化》。涨了写奇怪的姿势,Mark在这里。 tee ...
对于一个函数调用,比如main 调用 square,在进入square的首地址后,才会进行压栈(push rbp)。如果在调用squere的函数前,已经把squere首地址插入跳转到其他函数的汇编后,square函数的push rbp已经被覆盖了,square函数的栈帧并不会被真正的建立。
一种基于so的C/C++服务热更新方案对于线上的服务,经常会出现xxx服务的某一段逻辑里面有bug,需要紧急修复。对于无状态的服务,可以修复之后,直接重启。但是,对于有状态的服务,重启意味着内存状态丢失和长连接断...
      0000000000401106 <_Z6squarei>:
  401106:       55                      push   %rbp
  401107:       48 89 e5                mov    %rsp,%rbp
  40110a:       89 7d fc                mov    %edi,-0x4(%rbp)
  40110d:       8b 45 fc                mov    -0x4(%rbp),%eax
  401110:       01 c0                   add    %eax,%eax
  401112:       5d                      pop    %rbp
  401113:       c3                      retq   
0000000000401114 <main>:
  401114:       55                      push   %rbp
  401115:       48 89 e5                mov    %rsp,%rbp
  401118:       bf 64 00 00 00          mov    $0x64,%edi
  40111d:       e8 e4 ff ff ff          callq  401106 <_Z6squarei>
  401122:       b8 00 00 00 00          mov    $0x0,%eax
  401127:       5d                      pop    %rbp
  401128:       c3                      retq   
  401129:       0f 1f 80 00 00 00 00    nopl   0x0(%rax)
    
一种基于so的C/C++服务热更新方案对于线上的服务,经常会出现xxx服务的某一段逻辑里面有bug,需要紧急修复。对于无状态的服务,可以修复之后,直接重启。但是,对于有状态的服务,重启意味着内存状态丢失和长连接断...
整理程序调试的一些踩坑,经验整理,注意事项等。 C++后端开发的踩坑整理https://www.jianshu.com/p/b67222570785[https://www....
 
  整理C++模板在开发中的一些使用技巧 编译期静态检查 实现可以检查类型的memcpy (避免手滑拷贝了两个不一样长度的对象) 根据T是否是某个类的派生类 根据T是不是int匹...
 
  1. LD_PRELOAD 实现注入的原理 LD_PRELOAD是linux系统中的一个环境变量,它可以指定优先加载某个动态库。当主程序中有相同的符号出现在不同的动态库中,会...