- 博客(27)
- 收藏
- 关注
原创 CsGrafeq: 比 Desmos 更“能折腾”的几何函数画板(.NET + Avalonia)
# 总结CsGrafeq 是一个比 Desmos 更“能折腾”的几何函数画板,它基于 .NET 和 Avalonia,提供了从基础绘图到高级自定义的完整能力。通过本文,你学会了:- 基础函数绘制和参数化曲线- 使用 C# 脚本生成动态图形- 自定义坐标变换实现扭曲效果- 迭代函数系统生成分形- 着色器级别的渲染控制对于编程讲师和学习者来说,CsGrafeq 不仅是教学工具,更是一个可扩展的实验平台。如果你喜欢折腾,不妨下载源码,尝试添加自己的功能——毕竟,能动手的才是最好的学习方式。系数,观察图像变化。
2026-07-25 15:02:08
201
原创 Neo4j笔记(五):查询的处理流程
逻辑计划描述“做什么”(如:扫描所有Person节点,过滤年龄>30,返回名字),而物理计划描述“怎么做”(如:使用哪个索引、采用何种扫描顺序、是否使用节点过滤算子等)。Neo4j使用基于代价的优化器(Cost-Based Optimizer, CBO),它会评估不同执行路径的代价(如I/O成本、CPU成本),选择代价最小的计划。—### 总结Neo4j的查询处理流程是一个精心设计的管道:解析器将Cypher转化为AST,语义分析器确保语句正确,代价优化器生成高效的计划,执行器最终执行。
2026-07-25 15:00:49
189
原创 虚拟 DOM —— 中间层的智慧
它记录了真实 DOM 的“快照”,但操作它比操作真实 DOM 快得多。打个比方:虚拟 DOM 就像是一个“中间人”,它帮你管理更新逻辑,避免直接和“大老板”(真实 DOM)打交道时引发的混乱。它不直接与真实 DOM 硬碰硬,而是通过一个轻量级的抽象层,将复杂的 DOM 操作包装成可预测、高效的过程。它像是一个聪明的管家:你告诉它“房间要变样”,它先在心里模拟一遍,然后只动必要的家具,而不是把整个房子拆了重建。:当数据变化时,生成新的虚拟 DOM,并与旧的虚拟 DOM 进行对比,找出需要更新的部分。
2026-07-24 16:31:05
177
原创 让 AI Agent 替你做 iOS、Android 自动化测试,能平替 Appium?
它叫 agent-deviceCallstack 出品,MIT 开源,JPMorgan Chase、Expensify、Shopify 的团队都在用。一句话介绍:它是一款开源给 AI Agent 用的设备自动化 CLI,iOS、Android、TV、桌面全覆盖,目前在Github上,该项目star数接近4k。安装方式(Node.js 版本需大于22.12):注意——它不是另一个 Appium。Appium 的逻辑:你写脚本,一步步告诉它怎么点、怎么填。
2026-07-22 14:28:27
296
原创 InputStreamReader和StreamDecoder的源码和使用方法详细分析(windows操作系统,JDK8)
InputStreamReader——FileInputStream和FileReader之间的桥梁 计算机存储的单位是字节,尽管我们平时在操作系统(此处以windows操作系统为例)中使用.txt文件保存了汉字这样的字符,但是对计算机而言,这些.txt文件中的汉字其实是以字节形式存在的,所以,当使用者使用字节输入流(比如FileInputStream)来读取文件的时候其实是一个一个的单字节读取(1个字节可以表示28=256个符号,比如ASCII码就是用1个字节表示的编码方案 ,覆盖了英文中的所有符号)
2026-07-21 14:28:20
212
原创 InputStreamReader和StreamDecoder的源码和使用方法详细分析(windows操作系统,JDK8)
它使用的字符集可以通过名称指定,也可以明确指定,或者可以接受操作系统平台的默认字符集。InputStreamReader.class中的所有函数本质都是在调用StreamDecoder.class中的函数,包括InputStreamReader的构造函数都是在调用StreamDecoder.class::forInputStreamReader()函数,StreamDecoder的函数中会根据指定的字符集创造指定的字节解码器,字节解码器的作用就是解码字节成字符。
2026-07-21 14:27:45
194
原创 PortSwigger SQL注入LAB13&LAB14
在SQL数据库中, pg_sleep() 函数可以在指定的时间内暂停当前数据库会话的执行,他通过接收一个括号中的数值(单位为秒),而且这个数值可以是整数也可以是小数。我们先来对密码位数进行爆破,核心思路就是:如果密码位数等于某个数,那就给他引入2秒的延迟,然后通过Intruder来进行爆破,于是我们得到如下Payload。我们先来看LAB13的题目,他说应用使用了cookie进行了跟踪分析,SQL的查询结果不仅不会返回,而且服务器也不会传回任何错误。最终的目标只是利用SQL漏洞来造成十秒的延迟。
2026-07-20 21:36:59
182
原创 不要把三种授权方式理解成新旧替代
以 Virbox LM 为例,它的核心设计思路可以概括为“一次集成,三种分发”:开发商完成一次集成后,可以集中管理精锐5硬件锁许可、软许可和云许可,根据客户场景选择不同授权载体,而不必为每类客户重复建设授权系统。如果硬件锁一套后台、软授权一套激活系统、云许可一套账号服务,短期能跑,长期会变成维护负担。硬件采购、物流、补锁、接口适配和现场管理,都需要提前设计流程。这四个问题能覆盖大多数选型分歧:离线环境先看本地校验能力,轻量分发先看激活链路,订阅运营先看状态管理,多类客户并存先看统一许可体系。
2026-07-20 21:35:58
229
原创 关于我从零写一个 C++ 分布式 KV 存储系统原型
写在开头也算是很久没有写blog了,上次写还是OB复赛打完了之后写的一篇凄凄惨惨的总结文,一晃半年过去了。没想到距离自己上次写随笔都是半年前的事情了。先简单交代一下自己的背景吧,自从比赛打完了之后,就开始准备找实习了,找实习其实并没有我想象中很困难,我大概面了有五六家,字节的基架,OB的数据库内核开发,还有一些小厂的杂七杂八,游戏引擎,自动驾驶等等刷刷面试经验。本来是打算投字节给面试OB涨点经验的,结果没想到字节的效率太快了,没几天就发了offer。
2026-07-19 15:28:03
158
原创 Hermes Agent安装踩坑复盘
环境准备:WSL2 安装win10安装Hermes,Hermes 原生不支持 Windows,推荐优先安装Ubuntu虚拟机,再在虚拟机里面安装hermes。Windows 要先开 WSL2(Windows Subsystem for Linux 2),在 Windows 里开一个 Linux 夹层。你不是装第二个操作系统,你是给 Windows 加一个插件。系统要求Windows11任意版本 / Windows 10 要 ≥ 2004。启用 WSL2。
2026-07-19 15:27:17
291
原创 #应用资源配置文件
查看效果复制代码复制代码#结果显示:优先选择的是 node1节点上的Pod复制代码metadata:spec:selector:template:metadata:labels:spec:affinity:- key: envvalues:- devops- default- key: envvalues:- test- default复制代码。
2026-07-18 14:11:58
196
原创 亲和性和资源限制
介绍默认的的调度策略分为预选和优选资源限制属于预选,是强制性的,一旦满足不了,就不再继续,而优选,仅仅是选择一个最好的,而非强制,前提是预选必须通过比如:即使亲和性的标签能满足需求,如果资源的需求不满足的话,仍然不会去调度资源。范例#注意:软亲和的权重配置是与硬亲和的区别所在。
2026-07-18 14:10:45
159
原创 核心定位:组件工具库 VS 流程编排引擎
配合原生的 Checkpoint 检查点机制,框架会自动记录每一步的运行快照,轻松实现流程暂停、人工介入修改、异常自动重试和断点续跑等高级能力,完美适配生产级长流程任务,极大降低了复杂场景的开发与维护成本。直白地说,LangChain 解决的是「快速落地有无问题」,主打高效、轻量化和低门槛。它的底层执行逻辑依托链式 Pipeline、线性 Workflow 和基础 DAG,是一种典型的「单向流水线」模式:流程从上到下依次执行,节点跑完即结束,没有回头迭代的能力,天生不支持自主循环、动态分支和流程回溯。
2026-07-15 14:15:47
199
原创 整体架构:Go 引擎 + .NET 壳
关键在控制点的生成上——P₁ 和 P₂ 不是固定的,而是根据起点到终点的距离做随机偏转(±45°),偏移量在距离的 20%~50% 之间。校验器会在加载时就拒绝这种歧义配置,而不是等到运行时。关键的一点是:所有错误路径都保持了回调协议对称——即使 skip 了错误,OnActionDone 仍然会被调用,UI 侧的进度显示不会因为跳过步骤而错乱。项目支持 19 种动作(点击、双击、右键、拖拽、打字、按键、组合键、等待、等待消失、滚动、延时、打开URL、刷新、后退、前进、切换标签页、输入提示、确认、通知)。
2026-07-14 21:36:52
210
原创 VLA-Touch 方法原理详解
直观理解是:把 VLA 动作当作起点,把专家动作当作终点,在两者之间训练一条可采样的随机桥。推理时,从 VLA 动作起点出发,沿着学到的桥走若干步,得到更接近专家分布的 refined 动作。但是在接触场景下,基础 VLA 的动作可能缺少触觉响应。基础 VLA 生成的动作块可能在宏观方向上正确,但接触阶段需要更精细的实时修正,例如抓取力度、末端位姿和贴近物体时的轨迹微调。第二层是低层执行反馈:基础 VLA 先产生一个未来动作块,然后触觉条件控制器把这个动作块修正成更接近专家执行轨迹的动作块。
2026-07-14 21:36:04
178
原创 太恐怖了,传统 Java 后端已经快找不着工作了...
当两个候选人的 Java 能力相差不大的时候,一个人只会传统后端开发,另一个人能够独立完成企业知识库、Agent 系统或者大模型应用接入,那么企业会选择谁,其实答案并不难猜。比如是否接触过 RAG,是否了解向量数据库,是否知道 MCP 是什么,是否做过工具调用,是否理解 Agent 的工作模式,以及企业业务场景如何接入大模型能力等等。但最近两年,一个很明显的变化是,越来越多企业开始在面试过程中增加 AI 相关问题,这些问题未必会特别深入到模型训练层面,但至少会考察你是否了解大模型应用开发。
2026-07-12 14:43:41
153
原创 车牌识别系统的分层架构设计与核心模块实现
针对视频保存这类耗时任务,采用QThread实现异步执行,通过信号槽机制与主线程通信,既保证界面流畅性,又实现进度的实时反馈。检测频率优化:视频与摄像头场景下,每5帧执行一次检测推理,其余帧沿用前一次检测结果绘制,在不影响观感的前提下大幅降低计算量,提升帧率。识别模块复用YOLO的检测结果,仅启用PaddleOCR的识别能力,减少冗余计算,同时完成结果后处理,统一输出格式。系统采用经典的三层架构设计,自上而下分为表现层、业务逻辑层、数据层,各层职责清晰,通过标准化接口交互,实现高内聚低耦合。
2026-07-12 14:43:01
196
原创 我是怎么开始想这个问题的
这种判断力来自于你见过"好代码"和"烂代码"——你知道那个"高度抽象的方案 B"现在看起来爽,但 3 个人维护 6 个月后,每一层封装都会变成认知负担。当我理解了 Computed 的惰性求值和依赖传递,我就能判断什么时候该用 computed,什么时候该用 watch,而不是"凭感觉"。这种能力不是天生的。你能用计算器算出一家公司的财务报表,但如果你不知道"利润率 80% 大概率是数据错了"——你的价值为 0。比"现在会什么"更重要的,是"多快能搞懂一个新东西"和"判断这个东西值不值得投入时间学"。
2026-07-10 14:12:00
223
原创 现代 LLM 的核心架构设计其二:SwiGLU
但 ReLU 也有自己的问题:负半轴完全归零会导致死神经元:当某个神经元对所有训练样本都输出负值时,其梯度将始终为 0,参数无法继续更新,从而永久停留在负半区。Swish 是 Google 实验室在同一个网络中进行只换激活函数的大规模 A/B Test 得到的,并没有从理论推导,而是纯粹实验发现的优解。其本质是给神经网络引入非线性。输出不是零中心的,会导致后一层接收的输入始终为正,导致反向传播时权重梯度容易同号,梯度更新效率低。完成训练后,FFN 学到的是固定的重要性,而不是针对当前输入的动态重要性。
2026-07-10 14:11:22
211
原创 AI Prompt 工程化设计最佳实践
核心理念:把 Prompt 当作代码大多数开发者与 LLM 交互时,是把 prompt 当作"自然语言对话"来写的:❌ “帮我生成一张图片,内容是一个苹果,风格可爱”工程化的做法是把 prompt 当作代码来管理——有输入、有处理逻辑、有输出格式、有错误处理:✅ 输入 → 分类 → 路由到对应模板 → 结构化参数注入 → 组装 → 最终 prompt核心心态转变:你不是在和 AI “聊天”,你是在编程驱动 AI。这引出了第一条也是最根本的原则。哪些内容应该出现、哪些不应该。
2026-07-09 15:56:39
207
原创 当Agent决定“改造环境”:记一次因弱模型作弊导致的实验数据全零事件
匪夷所思的点在于,实验中的弱模型只能生成Python代码,想要完成“改造环境”,它就得通过Python代码的方式来进行文件读写操作,并且精准地找到PaddlePaddle库的源码在服务器的哪个位置,分析好它需要改哪些文件。这两个缺陷都不是无可救药的,因为26年新开源出来的模型,哪怕仍然是小参数规模的模型,也都几乎不会有同样的犯罪行为。同理,除非弱模型不想完成任务了,不然它一定需要有完成任务所必须的库,而这个库本身就算是伪造的,也必须存在于正确的包路径下,并且拥有正确的包名和相关“资质文件”。
2026-07-09 15:56:01
218
原创 由管道结构决定的对话历史存档方式
默认针对对话历史的存档是由管道的结构决定的。在下图所示的管道结构中,实现ReAct的中间件是管道的一部分,用来持久化对话历史的位于管道的上游,所以针对Agent的一次调用,针对现有消息的提取和针对新消息的存储各会执行一次。但是ReAct循环的迭代次数可能会很多,中间产生的消息也可能很多。如果每次迭代都等到ReAct循环结束才存档的话,意味着如果最后存档失败了,那么ReAct循环中产生的所有消息都会丢失。我们可以通过一个演示程序来说明这一点。为了确定。
2026-07-08 22:05:06
191
原创 你是不是也遇到过这种糟心事儿?
辛辛苦苦写了个爬虫,本地跑得飞起,一上量就“咔咔”报超时。赶紧找免费代理换上,结果请求要么慢得像蜗牛,要么直接返回一堆ProxyError,心态原地爆炸。其实,代理的配置远不止往proxies参数里塞个字典那么简单。今天咱们就把这事儿彻底聊透。👩💻我是爱折腾的,喜欢研究的各种实践,热爱分享,也享受用代码写出各种解决问题的快乐。如果你也在技术这条路上向前走,关注我,愿我们能🌱。
2026-07-08 22:04:01
299
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅