首页
学习
活动
专区
工具
TVP
发布

程序人生

专栏作者
265
文章
283130
阅读量
68
订阅数
将分布式系统转换为可嵌入的库有多难?
最近,我在开发一个本地 RAG/LLM 应用,需要支持语义搜索。实际上,作为一款本地应用,它可能产生的嵌入(embeddings)数量相对有限,很难超过百万级别。因此,在项目初期,一个简单幼稚的遍历匹配方法就足以应对需求。然而,我还是希望能够一步到位,找到一个支持 HNSW 索引的嵌入式向量数据库(关于 HNSW 索引的详细信息,请参考我之前的文章)。
tyrchen
2023-12-20
2050
写点代码,做点视频
这个周末小宝终于没球赛了,我也不用开车来回奔波两小时,再在寒风中瑟瑟发抖两小时(赛前训练+比赛)看球。本来打算做个应用尝试结合语音和 chat completion 中的 tools 做个智能客服,结果rust下一个好用的openai sdk都没有,于是干脆心一横,周六边写边录了7个视频(前后大概 6-7 小时),也算是为了一碟醋,包了顿饺子。后来有朋友提醒可以用 async-openai(有 700 多 star),不过木已成舟,也就算了。编辑视频的时候看了看 async-openai 的代码,实现思路跟我类似,但很多处理的选择不那么好,比如 reqwest::Client 其实 Clone 起来非常轻量,但它大量使用带生命周期的 Client,增加没必要的复杂性。此外没有充分利用 reqwest 生态,不管是 retry 还是 multipart 的处理,都写了很多不必要的代码。
tyrchen
2023-11-22
1160
肝了三个视频:Rust 宏编程系列
我的 B 站上正儿八经的和软件开发相关的视频,已经有半年没有更新了。最后一期《程序君的 Rust 培训 (2)》还是去年 6 月出品的,我记得肝那期时,正赶上西雅图百年一遇的酷暑,晚上十点多还有 39 度的高温,以至于我的 mbp 那几天经常会被热到关机自保。
tyrchen
2022-01-25
5170
5/29 的 Rust 培训复盘及视频
前几天一次突发奇想,促成了上周六的 Rust 培训。发帖的时候,觉得 Rust 还很小众,100 个名额绰绰有余,没想到报名非常踊跃,没多久就超过了六十。有些还一次性报了好几个人的名,然后微信发给我报名邮箱。我担心名额不够,连忙修改文章,把上限 100 人,改成了 75 人,省得超了。一顿操作之后,我觉得问题不大,就放心睡去。
tyrchen
2021-06-17
8000
深度分析:前端中的后端-实现篇
当我有一个想法,并且这个想法很有意思,正好戳中我技能的盲区时,我便有一种强大的要将其实验一番的冲动。自从上周做一个「前端中的后端」的想法出炉后,这周我几乎寝食难安,随时随地都在想这件事,所以后来干脆撸起袖子开干,毕竟 Linus 大神告诫我们:
tyrchen
2021-02-26
1.8K0
构建下一代 HTTP API - 零成本抽象做输入输出的校验和正规化
计算机领域有句大俗话,是:Garbage in, garbage out,垃圾进,垃圾出。如果将错误的,无意义的数据输入给一个系统,你也将会得到错误的结果。软件架构领域的先驱者 Mary Shaw 在她的《软件架构》一书里提到,一个系统只有 10% 的代码用于其看得见的目的,而剩下的逻辑都花在处理输入输出,数据校验,数据结构的维护和其它的琐事。这就如同漂浮在海面上的冰山一样,软件开发过程中隐藏的,任何系统都不得不做的事情占到了绝大多数:
tyrchen
2021-01-04
5800
构建下一代 HTTP API - OpenAPI spec 和解析器
在 抽象的能力 一文结尾的地方,我简单谈到了做 feed 的一些心得。当时我接手这个工作的时候,之前的工程师已经留下了好几万行 php 代码,这些代码处理几十个来自不同厂商的 feed,把里面的内容提取出来存在数据库中。因为 feed 的格式不尽相同,有 XML,有 JSON,同样表述一个数据,大家的字段名有时也不太一样,比如同样是 video url,有的叫 url,有的叫 media_url,它们在 XML/JSON 里所处的层级也不尽然相同。所以之前的代码为每个 feed 写了一个类。有新需求(比如新的 feed)时,找一个最类似的代码,copy & paste,然后在好几百行粘贴出来的代码中根据差异一点点修改,最终形成新的 feed 的处理代码。
tyrchen
2021-01-04
1.5K0
protobuf 为经络,gRPC为骨架
以来,数据结构的重要性在任何软件项目中都是毋庸置疑的。但数据结构往往又是最难相处的:
tyrchen
2020-07-23
1K0
用 noise 协议的思路来点对点加密文件?
后来重读这段的时候,我突然发觉,这是个很有意思的思路,搜了一圈,似乎没有人这么干,于是决定自己撸袖子试试。正好,rust 下面有一款很赞的 noise 协议的实现:snow,libra 也在使用这个库(通过 rust-libp2p),于是我便用 snow 展开尝试。
tyrchen
2020-02-11
1.8K0
数学之美
把数学的美妙绝伦传递给一个六岁的女孩儿并不是件容易的事情。我们可以轻而易举地心算出任何一个 100 以内的数乘以 3 的结果,也可以道出「乘法是加法的累进」这样的总结,但六岁的孩子并不理解其中的奥秘。前两天我老婆许是受了数独的启发,在白纸上画了十乘十的格子,给小宝演示 100 以内任意一个数乘三,乘七,乘十一的结果(因为除法是乘法的逆运算,你也可以理解为可以被三,七,十一整除的数字),当枯燥的数字化作了图形,并且这图形展现出统计意义的规律,小宝本来对数学的好感被大大激发了,从这些图形中发现了很多有趣的事情。老婆便让我做个「简单」的应用,让小宝能够更好地了解数字及其背后的运算。
tyrchen
2018-12-24
7550
眼花缭乱的区块链技术,如何入门?
2018 年,最令人激动的技术便是 blockchain tech —— 我曾在今年的计划中,将 ML 和 blockchain 列为上下半年学习的方向,不料阴差阳错,先上了 blockchain 的贼船。blockchain 让我激动的地方主要有两点:
tyrchen
2018-07-30
3530
浪费内存?多大个事?
遥想盖子当年,MS 红火了,谈笑间,640k 内存足矣。 - 程序君 现在已经不是从指缝中扣内存的时代了。bit 在主流的解释型语言中要么失了踪迹,要么被作为高(sha)级(bi)功能被雪藏起来,就像 .net 的 managed code 一样,被压抑得像个旷妇。 HTTP 这样的 string-based protocol 进一步助长了这种气焰,互联网世界原本精心构建的那一个个端庄优雅的透着书香的数据结构,让渡给了粗陋的 JSON。 昨天文章中的 slides,在如何 improve memory 那
tyrchen
2018-03-29
1.9K0
思考,快与慢
吐槽:GitBook editor 有个二B的设计-当它莫名检测出文件被外星人修改后,会弹个无法取消的对话框-检测出外部修改,ignore? discard? 每次这个莫名其妙的对话框出现,我都要思考
tyrchen
2018-03-29
5980
谈谈数据结构
沃斯大神说过,程序 = 算法 + 数据结构。 程序君认为,等式的右边,数据结构的权重要大于算法。数据结构定义好,基本上,你所用的算法也就确定了,算法的时间复杂度也八九不离十。上周,我在 team 内部分享了一个关于数据结构的主题,在这里,也和诸位分享。 现代的编程语言,内置的数据结构越来越多,从 primitive 的类型:integer, float, boolean, string,一路到 complex 结构,如:array,list,map,set 等。这些结构即插即用,非常顺手,可是有时我们也需要
tyrchen
2018-03-29
8920
谈谈编译和运行
[作者按] 今天 hacker news 爆炸性的新闻是我们敬爱的葛老头:Andy Grove 去了。70后,80后大多听过这个响当当的名字,也听过(或者读过)『只有偏执狂才能生存』这本书。在90年代,葛鲁夫和盖茨一样,基本上等同于他们所缔造的王国,以及他们创立的 Wintel 联盟。如今90后创业者们所津津乐道的所谓创业大师们总结的:专注,独特,10倍速因子等等其实是拾了老爷子牙慧的。老爷子还有一本据说更好的书:High output management ,Ben(a16z 的合伙人)对其大为推崇。后知
tyrchen
2018-03-28
8620
C语言中的封装 - 答读者问
写C代码的时候,最头疼的事情是哪些信息要暴露给外界,哪些隐藏在模块自身。如果不能处理好封装,那么久而久之,代码就自然演进成互相缠绕的意大利面条。 比如说在一个ring buffer的基础上实现一个queue,我们可以提供 queue.h 暴露该模块的api,queue.c 进行具体实现,最基本的想法必然是: queue.h typedef struct { ring_buffer_t *ring; ... uint64_t counters[MAX_COUNTERS]; } que
tyrchen
2018-03-28
1.1K0
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档