自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dlite的技术笔记

随手记录的开发相关笔记,希望对他人也有帮助

  • 博客(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

原创 Claude Code更新失败解决方案

`Claude update` 原生更新命令失败问题的排查与解决。

2026-10-24 07:30:00 229

原创 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

原创 为什么不加位置编码注意力权重不会变化

在理解Transformer模型时,一个关键问题是:为什么不加位置编码时,注意力权重不会变化?

2025-02-19 14:18:26 635

原创 国内Ubuntu离线安装和配置Ollama服务

在 Ubuntu 22.04 系统上,安装Ollama 的完整安装和配置步骤。

2025-02-12 10:14:06 8115 1

原创 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

原创 NVLink故障排除

RAM文件系统损坏导致NVLink故障。

2024-05-20 14:08:35 3002

原创 不要在一个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

darwin.iso,用于安装MacOSX虚拟机。 提取2015-8-15发布的vmware fusion 8.0。 亲测VMWare Workstation Pro 12.0可用。

2015-09-15

MACOSX Unlocker 2.0.2 for VMware Workstation 11

2014年12月出品的Unlocker 2.0.2,针对VMware的Mac OS X的解锁,可以用于VMware Workstation 11。

2014-12-18

zlib-1.2.7

zlib 1.2.7 最新源码。 zlib 1.2.7 is a general purpose data compression library. All the code is thread safe. The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format)

2012-11-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除