-
SQL 之外的选择:什么场景值得看看 Rust
"我们这门技术栈用得挺好,为什么还要看别的"——这是技术选型里最合理的疑问。这篇文章不劝人换语言,只想把话说清楚:Rust 在哪类问题上有结构性优势,在哪类问题上是给自己找麻烦,以及想试水的时候有哪些低成本的切入方式。 先说定位。Rust 是一门编译型系统语言,主打内存安全和无数据竞争的并发,不带垃圾回收,运行时开销很小,工具链对 WebAssembly、嵌入式、命令行工具这些场景的支持也在逐步完
NullRef
-
JavaScript 异步演进:从回调到 async/await
JavaScript 的异步史,某种意义上就是"怎么把回调写得像同步代码"的进化史。从 callback 到 Promise 再到 async/await,每一步都在解决上一阶段留下的可读性和错误处理问题。把事件循环和这三代写法的关系理顺,写异步代码时心里才有底。 一、事件循环:异步为什么"不卡" JS 是单线程执行的,但宿主环境(浏览器或 Node)提供了事件循环。粗略地说:调用栈清空后,事件循
凛川 Wave
-
Go 并发模型:goroutine、channel 与 context
Go 把并发做成了语言的一等公民,写起来确实顺手: go 一下就是并发, <- 一下就是通信。顺手的代价是出问题时不好查——泄漏的 goroutine、死锁的 channel、传不到下游的取消信号,都是线上事故的常客。把这套模型的底层约定讲清楚,写起来才踏实。 一、goroutine 不是线程 新手容易把 go f() 理解成"开一个线程",其实差别不小。goroutine 是用户态的执行体,由
KernelPan
-
Python 装饰器详解:从语法糖到面向切面
装饰器是 Python 里最容易被"用会了却讲不清"的特性之一。很多人写得出 @login_required ,但被问到 @deco 到底等价于什么、为什么必须写 functools.wraps 、装饰顺序谁先谁后时,答案就开始含糊。这篇文章从函数对象这个起点把整条链路走一遍。 一、前置:函数是对象,名字只是绑定 Python 里函数是普通对象,可以赋值、传参、放进容器、作为返回值: def gr
AsyncLab
-
用 C++/Qt 做桌面开发的体验:无边框圆角窗口实践
做桌面 UI 的人迟早会碰到这个需求:去掉系统标题栏,自己画窗口。圆角、投影、自定义标题栏按钮、拖拽移动——这些在设计稿上很常见,实现起来却有一堆系统层面的坑。这篇文章以我在 7AA7工具箱里做界面的实践为背景,把 Qt 侧无边框窗口的实现要点和踩过的坑梳理一遍。 一、Qt 的底子:信号槽与元对象系统 先说两句 Qt 的编程模型,它决定了后面所有 UI 代码的写法。Qt 的核心是 信号槽机制 加
Maren
-
C++ 智能指针入门:unique_ptr、shared_ptr 与所有权
C++ 的内存管理争议了三十年,现代 C++ 给出的答案不是"再小心一点",而是 把所有权写进类型里 。智能指针就是这套答案的载体:谁负责释放、什么时候释放,不再靠注释和约定,而是靠编译器检查。这篇文章把三种智能指针的语义、边界和取舍讲清楚。 一、所有权为什么值得单独说 先看没有所有权语义的代码长什么样: Widget* w = new Widget(); // ... 三十行业务逻辑 ... d
Corin