跳转至

2024

300行实现一个BoundedSPSCQueue

我每天早上都会打开Github的Trendings板块,了解最新的动态,我相信这是个还不错的习惯。遇到感兴趣的项目我会打开看看源码,学习一下大佬们的写法和实现。

快速查看github项目源码

修改github.com/xxx/yyy链接为github1s.com/xxx/yyy,就可以在浏览器打开vscode类似界面阅读代码了。

今天分享的是quill,一个异步低延迟的高效日志库实现。

lmdeploy推理do_sample崩溃问题

采用server方式推理一个模型,会崩溃。

采用pipeline方式推理一个模型,不会崩溃。

不管是server还是pipeline,都调用了同样的generate()方法,但是为什么会产生不同的结果?传递的参数不同。

实现一个neovim插件nvim_rotate_chars来轮转代码

文章介绍了如果实现一个轮转代码的neovim插件,简单的策略就是a->b, b->c, …, z->a。 试想一下你的代码经过轮转以后会是怎么样,轮转一个位置、n个位置呢?配上快捷键,在别人看你代码的时候,轮转一下字符,向左转了还能支持向反方向转回来。需要实现如下功能:

  • 支持指定轮转的步数、方向(即向左向右);
  • 支持unicode字符,比如中文字符的改变;
  • neovim配置快捷键和command命令行输入;
  • 采用rust和lua编写,基于nvim-oxi,和传统rpc不同,直接调用c-api bind。

听起来还有点传统的代码加密算法的意思,旋转加密或者叫轮转机加密。

实现一个neovim插件转换unicode字符到中文显示

上一篇讲了如何通过nvim-oxi实现一个neovim插件nvim_rotate_chars来轮转字符,这一篇通过采用相关技术实现了一个unicode字符表示转换成汉字显示。这些工具在日常开发和工作中都可以用到,自己实现一个也可以学到新东西练练代码手感。

之前在文章unicode编码和utf-8转换不同语言实现的差别?以及locale杂谈中讲到过由于系统的locale设置不正确,遇到unzip解压出来的中文文件名称都变成了unicde的16进制字符表示。当然也介绍了如何使用python、c++以及rust实现转换。在这里我们将实现移植到了neovim插件中,打开文件一键转换。

GPU的pin_memory是什么?

gpu的pin_memory

pin_memory就是在RAM上固定了一块内存,这个内存范围是被锁住的。pin这个单词很形象,很像rust中pin含义,用钉子把钉住,这个内存就不会释放,是安全的意思。GPU在传递数据的时候,就可以用DMA的方式,高效传输数据。否则,普通的cpu_memory,就会swap掉,然后访问的时候缺页中断,这样速度肯定就慢了很多。