自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 现在是Flash的,未来是HTML5的,那么Silverlight呢

Silverlight的装机率依然低的可怜,每当我把自己做的小东西分享给朋友的时候,马上得到的反馈就是弹出的对话框是装什么的,然后就是我的科普时间,而我一般的说法就是这个是微软的Flash。中间我曾兴致勃勃的跟做网页游戏的经理朋友探讨合作,他们正要做个Web的虚拟人生,看到我的DEMO觉得不错,但是当我说这个不是Flash而是一个叫Silverlight的神奇东西做的时候,对方就摇头了,即使我说Silverlight有更好的绘制效率、更好的文字支持、更高的开发效率等等。

2026-07-05 14:02:42 271

原创 et反射和metadata加载--致Jeffray Zhao等几位和firelong

另外还有一个.net CLR提供的特性可以帮助减少.net 应用程序的内存消耗:domain neutral, 有domain neutral特性的程序集都是跨AppDomain共享的,那么在一个进程的内存里面只要一份mscorlib.dll的拷贝就行了。我首先照Ivony说的过程重复了一下他做过的步骤,产生了一个巨大的Test.cs文件,里面包含100个类,100个方法,100个属性,发现确实如他所说:在任务管理器里面看那个ConsoleApplication1.exe占用只有1MB 多一点的内存空间。

2026-07-05 14:01:53 169

原创 不可一日无烟卷

null是Linux的一个标准设备,也就是所谓的黑洞,至于为什么有它,就得从输入输出重定向说起,比如linux控制台下运行一个程序,有时会输出一大堆东西,这是它向标准输出写的,我们不想让它显示出来,就是用 > NULL给它的输出重定向到了这个黑洞设备,系统呢会给这个程序返回一个写入成功的操作,实质上,系统什么都木有干。大到系统是否成功运行的标志,小到短信声音。上一步,init已经解析了那两个rc文件,这里,会根据rc文件中的具体内容,来分别执行对应的动作,后面会独立分析rc文件的格式内容,以及执行方法。

2026-07-04 14:14:32 218

原创 Programming.log - a place to keep my thoughts on programming品质在于构建过程吗?

迷信灵感和迷信逻辑是两个错误的极端,孔子讲“天下国家可均也,爵禄可辞也,白刃可蹈也,中庸不可能也”,任何一项技能的高级阶段都是关于“度”的艺术。比如,现在非常流行的从用户需求出发的分析模式,即“分析需求,抽象出共性,共性是本质的,本质是稳定的”,这类模式的特点符合人们希望找到套路的心理,一看就明白,容易操作,有成就感。虽然对于普通的软件开发通常有不少成熟的模型供选择,并不需要总是创造自己的模型,但理解模型间的差异,并在设计时选用恰当的模型仍然比采用某种构建过程更加重要。我的答案是:模型,即人心中的软件。

2026-07-04 14:13:30 211

原创 IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题

科普下,文件夹里面的.browser文件是全局访问的,用于标识发出请求的浏览器,并标识这些浏览器具备的功能。很容易,其实上面已经明示,问题是出在ie.browser 这个文件的配置上,所以我们只需在原来的基础上,加上这一串 "\d{2,}$",使ASP.NET 能识别IE10的User-Agent就可以了。所以,由于无法正确识别IE10的User-Agent,所以ASP.NET把它看做是未知的浏览器,认为它不支持Cookie,由此而产生了一系列与Cookie相关的问题。描述完场景,我们就来分析分析。

2026-07-03 16:46:27 278

原创 找回自我:DDD 应对具体业务场景,Domain Model 到底如何设计?

伪领域驱动设计,只是用 .NET 实现的一个“空壳”,仅此而已。:只是聚焦领域模型(认清各个部分的职责,让设计的焦点集中在领域模型中),文中关于领域模型的实现就是一个“渣”,仅此而已。:走了个弯路,ORM 的映射关系及仓储的实现,应该是在本篇内容之后探讨,原因都是脚本驱动模式惹的祸,如果说脚本驱动模式是恶魔(特定的环境,也有好处,不能一概而论,这边只是一个比喻),那领域驱动设计可以看作是天使,心里想的是天使,却听了恶魔的话,为什么?因为它在你心中已根深蒂固,仅此而已。

2026-07-03 16:45:53 214

原创 探秘Transformer系列之(1):注意力机制

因为各种事情,好久没有写博客了,之前写得一些草稿也没有时间整理(都没有时间登录博客和微信,导致最近才发现好多未读消息和私信,在这里和各位朋友说下万分抱歉)。现在恢复更新,是因为最近有些从非AI领域转过来的新同学来找我询问是否有比较好的学习资料,他们希望在短期内迅速上手 Transformer。我在网上找了下,但是没有找到非常合适的系统的学习资料,于是就萌发了自己写一个系列的想法,遂有此系列。在整理过程中,我也发现了自己很多似是而非的错误理解,因此这个系列也是自己一个整理、学习和提高的过程。

2026-07-02 20:42:09 177

原创 .NET内存居高不下排查解决与启示

服务为一个普通的ASP.NET Core gRPC工程,平常没什么流量。HPA设置的最大副本数为5,生产环境服务启动后,Pod内存达到或超过K8s内存请求值(512Mi),自动触发扩展到5个实例,即副本数达到最大。这与QA环境表现并不一样,也就没有在测试阶段发现。需要想办法复现、排查解决高副本和高内存占用问题。部署里面对容器的资源,容器资源只做了对CPU和内存的预留设置(request),没有做上限设置(llimit)。从内存曲线上看,很多副本的内存甚至超过了请求的512Mi。不过有一点很奇怪,服务的接口并

2026-07-02 20:41:17 216

原创 生产事故-记一次特殊的OOM排查

但是,很快,十分钟后,电话再次响起,告知服务又出现异常,无法访问。工具打开转储文件,原以为会发现某个类型对象占用大量的内存,结果出乎意料,Histogram(直方图)中显示活跃对象居然只有100多M!这个就解释了为什么系统刚刚启动时,会有一个短时间正常工作的现象,随后,当某段程序触发 Old Gen 升代时,就会发生随机的。遂开始检查机器的内存,根据运维的说法,机器内存为16GB,然后在 GC 日志里面会看到,触发 GC 的前后,Old 区几乎都没有空间,仅有的一点点还是。,完成我们的验证测试。

2026-07-01 15:48:19 187

原创 风控安全产品系统设计的思考与实践

这样的类工程问题。

2026-07-01 15:47:19 161

原创 折线图的奇妙变奏:四种创意可视化方法

则把这365天分成12个月,把每个月的31天叠加在一起比较,就像把一年的温度曲线切成12段,然后并排放在一起。每个项目有一条线,线的上下位置代表排名高低。由于排名是相对的,所以这些线总会交叉,形成有趣的波浪形。线的斜率代表了变化的速率,陡峭的上坡表示大幅增长,平缓的线表示变化不大,下坡则表示下降。,比如一天24小时的温度变化、一周七天的销售数据,或者一年四季的气候模式。:通常在两侧显示两个时间点或两种状态的数据,然后用直线连接对应的数据点。就像记录这场比赛的名次变化表,每个时间点谁在前谁在后一目了然。

2026-06-30 14:24:37 183

原创 CopyOnWriteArrayList:写 _

COWIterator表示迭代器,其也有一个Object类型的数组作为CopyOnWriteArrayList数组的快照,这种快照风格的迭代器方法在创建迭代器时使用了对当时数组状态的引用。属性中有一个可重入锁,用来保证线程安全访问,还有一个Object类型的数组,用来存放具体的元素。hasNext()) // 不存在下一项,抛出异常。// 不支持remove操作。// 对象数组,用于存放元素。// lock域的内存偏移量。// 不支持set操作。// 不支持add操作。// 是否还有下一项。

2026-06-30 14:23:38 237

原创 MonkeyCode让独立开发者月入3万的真实路径

【代码】MonkeyCode让独立开发者月入3万的真实路径。

2026-06-29 14:48:26 195

原创 pring 里面接 AI 就是扯淡!!不得不说两句

昨天发了一篇文章《

2026-06-29 14:47:33 179

原创 批量改图片DPI的Python脚本 | 写论文终于不用一张张改了

JPG的话加个quality=95,画质损失很小。PNG是无损的,直接设dpi就行。很多人搞不清,其实改DPI不改变图片本身的像素,就是改个"打印清晰度标识"。所以改DPI不是把小图放大,只是告诉打印机"这图按高清来印"。直接上代码,我把注释都写清楚了,小白也能用。

2026-06-28 15:07:59 190

原创 黄河流域pwn的wp(缺的比较多)

这个直接nc上去再cat f*就行了,这里我也简单讲讲我的对拿shell的看法吧,system这个函数里面的参数就跟我们自己在终端输命令是一样的,比如一直在用的system("/bin/sh"),跟我们在自己终端输个/bin/sh是一样的。为什么这样能让我们觉得好像控制了一个终端呢,其实也是跟linux的思想(一切皆文件)相关。

2026-06-28 15:07:10 159

原创 angChain和MAF-03]完全不同的Agent设计哲学

Agent的状态通过一系列的通道来维护,作为Actor的节点通过订阅通道的变化来驱动执行,而它执行的结果体现为针对通道的更新。当作为Agent的Pregel对象被执行时,用户的输入被写入对应的通道,订阅此通道的节点被收集并创建对应的任务在下一个推理步骤中并发执行。节点任务执行后,又会更新对应的通道,新的通道更新又会触发新的节点任务的执行,如此循环往复直到没有新的节点被触发了,或者达到设定的步骤上限,此时整个推理过程就结束了。函数根据指定的模型和工具集创建的Agent,依然是采用上面这道机制创建的。

2026-06-27 14:36:11 240

原创 用 Solon AI 从零构建 MCP 工具服务:让 AI Agent 拥有真实世界的能力

MCP 是 AI 模型与外部世界交互的标准化协议。就像 USB 统一了设备接口,MCP 统一了 AI 工具接口。Tool 是 MCP 最常用的原语,让 AI 可以调用外部函数。,你的普通 Java 方法就变成了 MCP 工具服务。支持 Java 8、11、17、21、25、26。Resource 让 AI 可以读取结构化数据源。Prompt 提供可复用的提示模板服务。

2026-06-27 14:34:45 195

原创 项目监控标准

如果监控类型是timer,则需要配置avg,tp50,tp90,tp99,tps,在同一个图中,左边y轴为耗时,右边y轴为次数。假设监控的key是GET__api_v1_order则配置如下。如果是counter类型的监控则只有tps。平均值和tp50,tp90和tp99配置。将tps的值指定到右边Y轴。将重要和关键的监控单独分组。

2026-06-25 15:42:07 218

原创 Agent Harness Runtime 架构深度解析:工具循环、状态外置与长程任务调度

桌面应用的分发包通常都不小,动辄几百 MB。这其实也挺正常的,毕竟现在的应用功能越来越多,体积自然也就上去了。对于像 HagiCode Desktop 这样的应用来说,每次版本更新都意味着要向大量用户分发大文件,这对服务器带宽是个不小的考验。传统做法是直接走 HTTP 下载,简单直接但问题也很明显:高峰期服务器压力大,用户下载速度慢,尤其是海外用户。这也没什么办法,毕竟物理距离在那里摆着。P2P 技术可以很好地解决这个问题——用户之间互相分享文件片段,既能减轻服务器压力,又能提升下载速度。

2026-06-25 15:41:09 462

原创 筑基期:掌握Odoo基础核心知识点02(Odoo XML 开发方式详解)

几乎所有其他标签(menuitem、act_window 等)本质上都是 record 的简写。上做局部修改,而不是重写整个视图。这是 Odoo 中最常用的视图定制方式。是 Odoo XML 中最基础的操作,用于在数据库中。在"实际收款银行"字段后面添加"对公账单导入"字段。让"借款核销"按钮在"对公账单导入"时隐藏。— 找到原视图中 name 为。— 要修改这个按钮的属性。用于在模块安装/更新时。由于是覆盖而非继承,,那原来的内容就丢了。属性的值为新的表达式。数据库中已有的记录。

2026-06-24 14:52:27 165

原创 PortSwigger SQL注入LAB2

本实验来自 PortSwigger Web Security Academy,是 SQL 注入系列的第二个基础实验。目标为:使用 Burp Suite 对登录请求进行拦截与分析,并通过修改请求参数实现绕过登录验证。启动实验环境后,可以看到与 LAB1 相似的购物页面,页面右下方提供了“Home”与“My account”功能入口。当浏览器中的代理配置生效后,此处将开始记录所有 HTTP 流量。启用浏览器中已配置好的 Burp Suite 代理,准备捕获登录请求。该实验的登录功能中存在 SQL 注入漏洞。

2026-06-24 14:51:31 191

原创 【JavaScript高级编程】拆解函数流水线 上

参数: 是一个函数数组(如 ) 返回值:一个接受 参数的新函数 核心逻辑:通过 依次将 中的函数应用到输入值上2. 执行流程假设有 3 个函数:当调用 时:如果实现一个 函数: :从左到右执行() :从右到左执行()5. 典型应用场景6. 等价实现这个 函数等价于:

2026-06-23 14:54:57 165

原创 SEATA分布式事务——AT模式

SEATA的AT模式和XA模式一样,也是2阶段提交,但是AT模式没有利用数据库的XA协议,如下所示:从上面的图可以看到,seata AT 模式分为以下5个步骤:①、TM(事务管理器) 开启全局事务;②、RM 向 TC(事务协调者) 注册分支事务;③、RM(资源管理器,也就是要访问数据库的进程或线程)记录undo-log(数据快照);④、RM执行业务sql并提交,并向TC报告状态;

2026-06-23 14:54:10 203

原创 windbg 分析线程死锁

回到顶部。

2026-06-22 17:13:52 191

原创 业务 Agent 搭建指南:别急着重造 Agent,用知识、工具与评测跑通闭环

很多团队一说要做业务 Agent,第一反应是搭一个自己的 Agent Framework:规划器、执行循环、工具调度、记忆、权限、人机交互,最好再做成平台。这个方向听起来完整,真正落地时却很容易把团队拖进基础设施泥潭。我更倾向于反过来做:先把 Codex、Claude Code 这类当成现成基座,让它们承担推理、代码理解、工具调用和多轮执行。业务团队的精力不要花在重写这些能力上,而是补它们缺的那部分:​​。这样做不是偷懒。

2026-06-22 17:13:13 172

原创 为什么不建议直接使用 Executors

先用一张图把Executors的问题放到一起看:它的风险并不只是“线程池怎么创建”,而是默认参数把很多边界隐藏掉了。图里最需要关注的是两个边界:队列有没有上限,线程数有没有上限。这两个边界如果没有控制住,任务高峰期就很容易从“异步处理”变成“异步堆积”。《阿里巴巴 Java 开发手册》中有一条比较常见的规范:线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式创建。这句话很多人都背过,但不一定真正理解它的问题在哪里。我们先看一个最常见的java。

2026-06-21 16:08:26 238

原创 Modbus Studio (免费的Modbus主从机软件)

简单来说,Modbus Poll 和 Modbus Slave 更像“协议调试工具”,而 Modbus Studio 更想做成“项目调试工作台”。它们很经典,也很稳定,但在实际项目交付和反复联调时,会遇到一些不方便的地方。Modbus Poll 适合快速读取某一段寄存器,但它更偏“地址段调试”,不是“工程点位调试”。Client 和 Server 都会根据字典中的地址和长度工作,不会读取或显示字典之外的点位。“合并读取”开启后,软件会尝试把相邻或接近的字典点位合并为较少的读取请求,减少报文数量。

2026-06-21 16:07:38 653 1

空空如也

空空如也

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

TA关注的人

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