- 博客(125)
- 资源 (3)
- 收藏
- 关注
原创 泛型实现启示(四):编译期条目生成
同一个 Box<T>,两处构造,编译器给的处理并不一样:类型实参全部已知的,当场拼出完整条目,构造指令直接带它的下标;实参里含类型参数的,只留一张缺位清单,等运行时照清单填回。这条线往哪画,六家语言各不相同:C++ 用到才生成,.NET 推到首次构造,Java 擦除后什么都不生成。本文接着核对类型实参怎么从目标位置读出来、编译器什么时候当场生成条目、哪些构造编译期先拒,再落到 NLang 0.13.x 的发射去重、链接合并与加载驻留。附录 12 条术语。
2026-11-14 22:47:30
63
原创 泛型实现启示(三):运行时安全网
一次转型失败,什么时候被发现?Java 拖到取元素那一刻,C# 当场拦下——差的不是类型系统有多强,是判定点手上有没有类型实参。共享代码之后运行时还剩多少类型信息,决定检查能做到哪一层。本文按三个判定点逐个核对:对象转型、异常分派、运行时失败分层;Java 擦除、C# 具现、NLang 字典三条路线逐列对照,并落到 NLang 0.13.x 的描述符驻留、旁表、帧描述符与拼接记录。陌生名词见附录 20 条术语。
2026-11-14 10:47:37
130
原创 泛型实现启示(二):实例化共享
类型实参没有消失,只是换了个地方存。代码共享之后,Go 1.18 把字典当额外参数传,NLang 把它登记成进程级驻留的描述符。本文拆共享的那一半:规范拼写与驻留怎么判定实例化身份,描述符何时写进对象、又怎么被 typeName 读出来,并对照 Swift 元数据唯一性与 Go 的字典分工,落到 NLang 0.13.x 类记录、描述符表、旁表与拼接记录的具体实现。
2026-11-12 22:06:07
333
原创 泛型实现启示(一):模型的选择
六个主流语言,四组答案:C++ 和 Rust 为每个实例化各编一份机器代码,Java 只编一份并把类型参数擦掉,C# 代码共享与运行时类型两样都做,Go 与 Swift 保留共享代码再用隐藏参数传类型信息。所有泛型实现的差别归结为三个问题:代码体有几份、T 的值怎么存、运行时认不认识 T。本文逐一对照单态化、擦除、具现、字典四条路线,从值表示、分发模型和运行时类型信息提炼选型判据,最后落到 NLang 自己的三段字典选型与语言层规则。
2026-11-07 13:40:00
220
原创 并发语言实现(八):并发与嵌入语言
嵌入式脚本系统中,跨语言调用易引发脚本阻塞宿主的疑难故障:现象为窗口卡死、无日志、开发机无法复现。根本原因在于脚本调用宿主函数(如host.confirm)时,占用同一线程,形成调用栈层层阻塞,且回调均按阻塞处理,导致整个进程停滞。虽嵌入省去跨进程通信开销,却带来共用地址空间风险——脚本野指针或死循环可直接破坏宿主。解决方案包括:单线程运行保障串行安全,通过Interpreter实例隔离;注册函数实现双向交互;输出输入由宿主接管;支持多载体并发以解阻塞困局。关键在于明确“谁拥有进程,谁负责边界约定”。
2026-11-06 08:51:39
219
原创 并发语言实现(七):并发与本地调用
当本地代码(如C++函数)执行阻塞操作时,即使仅几百字节,也可能导致垃圾回收停顿延长、调度停滞和锁竞争,因运行时无法感知其内部行为。问题根源在于:原生调用脱离运行时控制,造成虚拟线程“钉住”——无法被暂停、迁移或安全回收。Go通过释放P保持调度,Erlang用dirty scheduler隔离慢函数,Java限制JNI使用专用线程池,CPython则显式释放GIL。共性是:将阻塞风险显式化,并在调用边界上由运行时或开发者承担代价。NLang进一步提出通过regBlocking等协议明确声明阻塞属性,实现安全
2026-11-05 09:27:39
235
原创 NLang 0.11.0 发布:从假并行到真并行
NLang 0.11.0 发布:把 0.10.0 的虚假并行换成真的。一把全局解释器锁拆成五把域锁,纯计算随载体数扩展,通道乒乓压测吞吐提升 22%~79%;Semaphore、ReentrantMutex、AtomicInt 补齐并发原语,Promise 与 Future.selectAny 补全 Future,调试器可同时观察所有上下文;语言面新增初始化语法与跨模块访问,并把一批静默丢数据的行为收紧为编译错误。
2026-11-04 14:44:37
191
原创 并发语言实现(六):GC与多核
M:N虚拟线程运行时里,挂起的帧栈必须纳入GC根集,多核并行又引出锁拆分与安全点会合难题。本文讲解NLang编译期位图精确扫描、停止世界会合回收协议,以及从GIL到五把域锁的三级收缩迭代、完全去GIL后字段级数据竞争的语义取舍,与阻塞原生调用、重入求值两大边界。
2026-11-03 12:46:01
254
原创 并发语言实现(五):定时器与调度器
虚拟线程体系下thread.sleep是停泊而非OS休眠,定时器与调度器因此成为运行时核心组件。本文对比最小堆与时间轮两类定时器数据结构,剖析全局单队列、本地队列+工作窃取、事件循环三种调度架构,并讲解NLang调度器的唤醒亲和、确定性交错、死锁检测与调度配额设计。
2026-11-02 13:29:57
97
原创 并发语言实现(四):Future/Promise与多路等待
JS的Promise、Java的CompletableFuture、C#的Task、Rust的Future,名字各异,底层都是「一个状态字段加一串等待者」。本文拆解轮询、回调、挂起三种消费方式与 race/all 多路等待,对比各家实现的完成权与竞速语义,并复盘 NLang 的特殊设计:Future 不独立保存状态,状态托管在虚拟线程上下文。
2026-11-01 11:15:48
163
原创 并发语言实现(三):通道
通道是消息传递并发的核心原语。Go channel 有一处容易被忽略的快路径:发送时恰有接收方在等,值直接从发送者栈拷进接收者栈,绕过缓冲区也绕过堆分配。本文拆解「一把锁、一块缓冲、两条等待队列」的通用结构,对比 Rust、Erlang、C# 的做法,并复盘 NLang Channel<T> 的句柄交接与 close 广播实现。
2026-10-31 12:11:51
215
原创 并发语言实现(二):锁与原子操作
「加锁很慢」是刻板印象:无竞争快路径只执行一条 CAS 原子指令,约几十个CPU周期,全程不进内核;只有标志已被占用才走排队、睡内核、等唤醒的慢路径,两条路差着两个数量级。本文拆解锁的快慢路径与防饿死设计,讲清睡内核线程与睡虚拟线程这条关键分叉,并复盘 NLang 从「连原子指令都不需要」到五把域锁的实现。
2026-10-31 12:11:43
138
原创 并发语言实现(一):并发模型的选择
写解释器、做虚拟机的人迟早都会撞上同一个问题:函数挂起等待时,现场存放在哪里。本文把1:1、N:1、M:N线程模型的配比摆清楚,梳理Go、Java虚拟线程、C#、Rust、Python、Node在机器层面如何处理挂起现场,并交代NLang的选型取舍——放弃await,把调用栈搬到堆上,将递归解释器重构为帧栈机。
2026-10-29 12:48:36
248
原创 NLang 0.10.0发布:并发基础设施
NLang 0.10.0 把递归解释器重写为堆上帧栈机,补上虚拟线程、Mutex、Channel<T> 一整套并发原语:调用栈可在任意执行点冻结恢复,FIFO 配额调度保证并发交错确定可复现。本文拆解挂起机制、锁与信道的实现内幕,并回顾 0.9.x 把契约挪到编译期的系列改动。
2026-10-27 20:39:40
145
原创 Windows 非系统盘安装Pi Harness
本文介绍如何用一个脚本将 Pi AI Coding Agent 从 C 盘迁移至 D 盘,实现程序与数据分离部署。提供一键 PowerShell 脚本,自动配置路径、环境变量、PATH,并可选安装 fd 与 ripgrep。运行后需重启终端验证,确保路径生效,避免系统盘占用。适用于已安装 Node.js 的 Windows 系统。
2026-10-24 19:52:19
337
原创 AI会话代理要取代所有软件?
全能会话代理虽能执行复杂任务,但无法取代六类软件:专业创作设计(如Blender、Photoshop)、高风险合规系统(如财务ERP)、高密度信息浏览工具(如浏览器)、轻量化系统工具(如文件管理器)、垂直工业计算软件(如仿真工具)及沉浸式交互应用(如游戏)。这些软件的核心价值在于专业内核、实时交互与安全可控,会话代理仅作辅助调度。未来开发者应聚焦智能体对接、混合交互开发、领域深耕与AI治理等能力,实现从“编码者”向“系统把控者”的升级,而非被替代。
2026-10-24 10:55:37
327
原创 NLang 0.9.0发布:成为可嵌入语言
0.9.0删除new关键字:构造调用Point(2, 3)、直接初始化声明、锚定花括号Point{...}、定长数组int[3]与int a[10];、裸字面量按目标类型推断;同时禁止变量复用可见类型名。汇总0.8.1~0.8.5主要变化:InvalidCastException可捕获、nide运行错误导航、下标复合赋值、length()方法化、func<>关键字、nlang::Interpreter C++嵌入API、终端浅色主题。
2026-10-13 19:05:40
264
原创 NLang0.8.0发布:语言完善与包扩展机制
NLang从v0.5.0至v0.8.0完成关键迭代,聚焦类型安全、性能优化与工程化升级。核心进展包括:字符串重构为GC托管不可变对象,数组升为一等类型实体,补齐12种标量类型并强化编译期校验;全链路支持UTF-8,彻底解决乱码问题;推出全新包管理体系,实现标准化打包与运行时动态链接;交互式能力增强,支持完整IO操作与原生终端调试。整体构建了更稳定、高效、易用的静态类型脚本生态。
2026-10-08 12:48:31
328
原创 LangGraph设计缺陷:并行汇聚节点执行次数问题
LangGraph 中多个前驱指向同一汇聚节点时,执行次数既不等于入边数,也不总是所有前驱完成后执行一次。本文以完整可复现示例拆解 Pregel 超步调度机制,剖析这一偶发复杂性的架构根源,并给出与汇聚语义的正确写法。
2026-09-22 12:23:44
69
原创 NLang V0.5.0发布:调试器支持
NLang 0.1.0 至 0.5.0 期间聚焦调试支持:ndb 命令行调试器实现类 gdb 操作,支持断点、单步、栈查看等;0.5.0 版本将调试集成至 nide,F5 启动、F9 下断点,实时查看变量与调用栈。基于虚拟机内建调试机制,无需外部调试信息,通过行号检查点实现断点与单步,通信协议类似 JDWP。语言新增 &&/|| 短路求值,IDE 增加“最近打开”菜单,版本号由 VERSION 文件统一管理。发布包已更新至 GitHub Releases。
2026-09-10 11:23:13
230
原创 为什么量子加密并非绝对安全
量子加密常被宣传为"绝对安全",但它只解决了链路窃听问题,却把风险转移到了身份认证这一"信任根"上。一旦认证中心被攻陷,中间人可分别与双方建立合法量子密钥,完成完美窃听。物理层无法破解,信任根才是命门。
2026-09-05 11:46:43
320
原创 开源一个静态类型语言——NLang
NLang 是一个完整的语言项目,由四个部分组成:- **语言**:静态类型,语法风格接近 C# 和 Java- **编译器**(ncc):完整的编译器前端,把源码编译成自定义字节码- **虚拟机**(nvm):执行字节码的运行时,另带一个字节码反汇编器(ndisasm)- **IDE**(nide):基于 Qt5 的桌面开发环境,内置一份离线文档站,跟着入门章节就能上手
2026-08-30 20:23:48
216
原创 轻量化知识库Bishon V2.2 发布:部署工程化升级
Bishon V2.2发布,重点解决单进程知识库系统的部署与运维难题。新版本构建了Docker在线/离线+裸机三套标准化部署体系,支持一键部署向导和增量升级方案。针对本地部署痛点,优化了容器网络互通与WSL2环境GPU支持,新增全链路健康检查接口。版本保留轻量化特色,实现2MB源码包独立更新,同时完善了日志追踪、配置持久化和异常检测等运维功能,使"一条命令跑知识库"的理念真正具备生产可用性。现有V2.0用户可通过简单步骤无损升级。
2026-08-08 20:45:33
391
原创 FAISS GPU 在 CUDA 12.5+ 环境下 libcublasLt 符号解析失败的排查与解决
摘要: 本文分析了FAISS GPU在CUDA 12.5+环境下因libcublasLt符号解析失败导致的启动问题。当通过pip安装faiss-gpu-cu12后导入时,会报错undefined symbol: cublasLtGetEnvironmentMode。问题根源是Python ctypes加载机制与CUDA库路径不匹配,导致libcublas.so.12无法自动加载依赖的libcublasLt.so.12。解决方案是通过ctypes.CDLL以RTLD_GLOBAL模式显式预加载libcubla
2026-08-03 16:43:13
253
原创 开源一个轻量化本地知识库:Bishon V2
BishonV2是一款开源的轻量化本地知识库问答系统,专为个人及中小团队设计。系统采用一体化架构,集成FAISS向量检索、SQLite元数据存储、PaddleOCR文字识别和Qwen3重排序模型,支持全格式文档解析和SSE流式问答。其特色包括:兼容QAnything API便于迁移、模型服务完全解耦、数据本地化隐私可控、低硬件依赖(普通笔记本即可运行)。相比企业级方案,BishonV2通过模块化设计简化部署流程,支持快速扩展文档格式和替换组件,适合管理研究资料、技术文档等内部知识库。项目提供Web管理界面和
2026-07-27 17:36:53
364
原创 VMware与WSL2中Docker部署避坑
Docker在嵌套虚拟化环境(如VMware虚拟机、WSL2原生DockerEngine)中部署时,常因网络、存储、时区等适配问题引发隐蔽故障。本文剖析四大典型问题:1)网络寻址偏差(host.docker.internal误解析为Docker网桥网关,需手动修正为宿主机IP);2)存储兼容异常(WSL2下NTFS文件系统导致SQLite WAL模式失效,需迁移至ext4路径);3)时区错位(容器默认UTC时区引发业务逻辑异常,需镜像层完整配置时区);4)发布流程隐患(配置覆盖或静态资源缺失)。
2026-07-27 14:04:49
369
原创 Windows 11 WSL开机自启动配置教程
本文提供了一套完整的Windows11 WSL(Ubuntu-24.04)开机自启方案,无需用户登录即可后台运行。通过一键PowerShell脚本自动完成批处理创建和任务计划配置,重点解决了状态误判和参数解析错误等常见问题。脚本采用"执行WSL命令验证"的方式确保判断精准,包含自动清理旧配置、创建启动任务、测试验证等功能。配置成功后可通过命令验证WSL运行状态,并提供卸载方法。所有操作需管理员权限执行,路径建议使用英文避免错误。该方案适用于服务器和后台服务场景,确保WSL稳定运行不闪退。
2026-03-16 11:17:22
1372
原创 Interleaved Thinking的现状与发展
摘要: Interleaved Thinking(交错思维)正成为AI Agent的核心能力,通过"思考-行动-观察-再思考"的动态闭环,显著提升任务处理效率。当前主流大模型已实现原生支持,部署框架也优化了性能与易用性。标准化进程面临技术迭代快、商业利益博弈等挑战,未来可能采用分层架构实现跨平台兼容。该技术将推动AI Agent在多个领域的规模化应用,开发者应关注社区主流实践,企业需布局符合标准化趋势的技术架构。随着生态协作深化,Interleaved Thinking有望让AI Age
2026-01-04 15:39:20
799
原创 WSL 网络环境快速切换脚本
本文分享一个用于WSL开发的网络环境控制脚本proxyctl.sh,支持一键开启/关闭代理、自定义端口(默认7897),通过命令行参数实现快速配置。脚本仅在当前会话生效,安全便捷,配合彩色提示提升可读性。三步即可上手:创建文件、粘贴脚本、赋予执行权限。适用于对接Windows本地网络服务的开发场景,显著提升配置效率,降低出错风险。
2026-01-02 21:48:07
96
原创 WSL中使用Mermaid离线生成LangGraph流程图
核心流程:代理下载Chrome → 补依赖 → 配置mmdc → 自动化生成。配置完成后,可离线生成任意Mermaid图表,LangGraph场景一键可视化,无需重复配置。
2026-01-02 21:29:12
576
原创 Python静态类型设计:语法割裂的槽点
Python静态类型设计存在语法割裂问题:同类静态语义需要同时使用类型注解和装饰器两种不同语法。类型注解用于变量、函数参数和返回值等静态约束,而静态方法和类方法却要使用装饰器标记。这种设计增加了认知负担,破坏代码一致性,违背最小惊讶原则,给开发者带来困扰。这种割裂是历史包袱的产物,成为Python静态类型体系中的一个明显缺憾。理想的语法设计应该让同类语义保持统一表达方式。
2026-01-02 11:13:49
334
原创 Qt 6.8.3+VS2022构建环境配置
在使用Qt 6.8.3 结 VS2022 构建时,很容易遇到编译器检测失败、路径找不到、链接异常等问题。本文汇总了实战中遇到的主要问题、根源及分步解决办法,帮你快速实现“Qt Creator 界面一键构建+运行”
2025-11-25 18:09:40
1114
原创 Windows网络共享禁用DHCP服务
Windows网络共享的时候,一般会自动启动DHCP服务,这样同一网络内的其他客户端都可以自动获取IP地址并连接internet。要想共享internet又不让其他机器自动获取IP地址,可以采用以下方法。
2025-02-12 10:07:19
1617
原创 国内下载huggingface模型的几种方式
要将 huggingface.co 的域名自动映射到重定向到 hf-mirror.com,可以采取以下几种方法。
2024-05-28 09:23:27
3679
原创 不要在一个python函数中混用return和yield返回值
混合使用 return 和 yield 在同一个函数中确实会导致一些不直观的行为。
2024-04-30 16:26:39
938
1
原创 从Docker容器内部访问宿主的IP地址
Docker 提供了一个主机网络,让容器可以共享主机的网络堆栈。这种方法意味着容器内的本地主机解析为物理主机,而不是容器本身。可以手动挂载宿主的网络命名空间到容器内部。选项,这将使得容器共享宿主的网络命名空间,使得容器内部可以直接访问宿主的IP地址。从Docker容器内部访问宿主的IP地址的几种方法,推荐第2种。来代表宿主,这个IP地址通常用于Docker默认的网络桥接模式中。这样,就可以在容器内部直接访问宿主的网络。在Linux系统中,可以使用特殊的IP地址。在运行容器时,可以使用。
2024-03-15 22:30:07
3546
darwin.iso
2015-09-15
MACOSX Unlocker 2.0.2 for VMware Workstation 11
2014-12-18
zlib-1.2.7
2012-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅