<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[QTI4jmRms的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/QTI4jmRms</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; QTI4jmRms]]></copyright><item><title><![CDATA[C++ 还顺带测试了 PCRE2 的 JIT 编译器，它支持几乎所有常见 CPU 平台，甚至包括龙芯，并且可以极大提高匹配性能。PCRE2 里我还开启了 Unicode 字符处理，在这个场景里这是必要]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162634188</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162634188</guid><author>QTI4jmRms</author><pubDate>Mon, 06 Jul 2026 14:37:35 +0800</pubDate><description><![CDATA[尽管只运行了两轮，但每个函数匹配的次数都在 1000 万次以上，足够摊平统计差异了。]]></description><category></category></item><item><title><![CDATA[重连成功，图表却骗了你]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162634150</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162634150</guid><author>QTI4jmRms</author><pubDate>Mon, 06 Jul 2026 14:36:48 +0800</pubDate><description><![CDATA[凌晨三点，行情监控脚本告警：WebSocket 断开。五秒后重连成功，日志显示连接恢复，心跳正常。你看了一眼 K 线图，没有跳空，没有断崖，价格曲线平滑。于是关掉告警继续睡觉。两周后跑策略回测，发现那天的分钟线有几根不对。排查了很久才找到根因：凌晨断流那段时间缺了几分钟数据，而重连后 WebSocket 只推送了当前快照，没有把断流窗口的 K 线补回来。你看到的平滑曲线，其实是前端把缺失段直接连起来了。连接 watch dog 只能证明传输通道恢复了，不能证明断流期间的 K 线已经完整补回。]]></description><category></category></item><item><title><![CDATA[程序员应知——技术债务]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162605980</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162605980</guid><author>QTI4jmRms</author><pubDate>Sun, 05 Jul 2026 14:56:52 +0800</pubDate><description><![CDATA[我们在银行借的房贷，5年还和20年还，利息会相差很多，对于技术债务，也是同样，如果尽快偿还，那么不会付出太大的代价，而且是在我们的能力承受范围之内的，但是如果拖的时间太长，债务就会变得越来越多，直至我们无力偿还。对于房贷，大家肯定每个月都会记着去还，但是对于技术债务，大家似乎就不那么关心了，的确这个东西不一定是谁借谁还，可能一个人的代码中产生了技术债务，然后由于负担太重，闪人了，那没有办法，这笔债务就会压在后来工作接替者身上，古语说：父债子偿，不知道这应该叫什么。从上面的种种我们可以看出，]]></description><category></category></item><item><title><![CDATA[盐从哪儿咸:为什么有跨域的问题]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162605952</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162605952</guid><author>QTI4jmRms</author><pubDate>Sun, 05 Jul 2026 14:55:52 +0800</pubDate><description><![CDATA[我们经常使用<Script>的src属性,脚本静态资源放在独立域名下或者来自其它站点的时候这里是一个url;这个url响应的结果可以有很多种,比如JSON,返回的Json值成为<Script>标签的src属性值.这种属性值变化并不会引起页面的影响.按照惯例，浏览器在URL的查询字符串中提供一个参数，这个参数将作为结果的前缀一起返回到浏览器;上面的代码第1行到第10行：判断是JSON类型调用，为本次调用创建临时的JsonP方法，并且添加了一个随机数字，这个数字源于用日期值；的同源验证,但是设置。]]></description><category></category></item><item><title><![CDATA[自己动手开发编译器（五）miniSharp语言的词法分析器]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162581820</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162581820</guid><author>QTI4jmRms</author><pubDate>Sat, 04 Jul 2026 15:02:31 +0800</pubDate><description><![CDATA[目前我的设计处理这一块不是十分高效，所以miniSharp的词法就稍微简化一点，允许以字母类的字符或下划线开头，然后零个或多个字母类字符、下划线或数字，也即不支持上述定义中组合类、连接类和格式类字符。miniSharp是C#语言的子集，miniSharp程序的语义就等于把它当做C#的语义。标识符是有必要仔细考虑的单词，因为我们希望miniSharp像C#一样支持用中文做变量名或函数名，所以肯定不能使用“下划线或字母开头，后面跟下划线、字母或数字”这样的定义。这三个是完全按照C# spec的规范编写的。]]></description><category></category></item><item><title><![CDATA[Kinect for Windows SDK开发初体验（一）环境配置]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162581793</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162581793</guid><author>QTI4jmRms</author><pubDate>Sat, 04 Jul 2026 15:01:28 +0800</pubDate><description><![CDATA[我们今天关于Kinect的介绍就到这里，在Kinect SDK的发布会上展示了很多有意思的DEMO，可见Kinect的应用前景是无限广阔的。]]></description><category></category></item><item><title><![CDATA[JOIN分类]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162557554</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162557554</guid><author>QTI4jmRms</author><pubDate>Fri, 03 Jul 2026 17:36:31 +0800</pubDate><description><![CDATA[它是微软所发展的Web前端应用程序开发解决方案，是微软丰富型互联网应用程序（Rich Internet Application）策略的主要应用程序开发平台之一，以浏览器的外挂组件方式提供Web应用程序中多媒体（含影音流与音效流）与高度交互性前端应用程序的解决方案，同时它也是微软UX（用户体验）策略中的一环，也是微软试图将美术设计和程序开发人员的工作明确切分与协同合作发展应用程序的尝试之一（另一个为WPF）。博客中提供的相关资料只是个人喜好，当然也有其他的很不错的资源，也期待大家的分享。]]></description><category></category></item><item><title><![CDATA[对CSS中的Position、Float属性的一些深入探讨]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162557508</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162557508</guid><author>QTI4jmRms</author><pubDate>Fri, 03 Jul 2026 17:35:08 +0800</pubDate><description><![CDATA[时光如梭，转眼之间，几年时间就像做梦一样无声无息的逝去！回顾一下，发现2013年是我人生新的起点，因为终于和相恋将近七年的女友于今年正月初六结婚了（现在应该改称老婆了），为此我在个人博客上发表了一篇文章前段时间一直很忙，忙着项目的进度、忙着项目重构以及代码的优化、忙着应付用户需求的变化等等, 现在终于闲下来了！趁着闲下来的几天时间，想写点什么，却不知道怎么下笔。]]></description><category></category></item><item><title><![CDATA[Spring 历史]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162528365</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162528365</guid><author>QTI4jmRms</author><pubDate>Thu, 02 Jul 2026 21:27:56 +0800</pubDate><description><![CDATA[Spring Boot 介绍Spring Boot 是由 Pivotal 团队提供的全新框架，其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置，从而使开发人员不再需要定义样板化的配置。用我的话来理解，就是 Spring Boot 其实不是什么新的框架，它默认配置了很多框架的使用方式，就像 maven 整合了所有的 jar 包，Spring Boot 整合了所有的框架（不知道这样比喻是否合适）。]]></description><category></category></item><item><title><![CDATA[藏在正则表达式里的陷阱]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162528353</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162528353</guid><author>QTI4jmRms</author><pubDate>Thu, 02 Jul 2026 21:26:49 +0800</pubDate><description><![CDATA[前几天线上一个项目监控信息突然报告异常，上到机器上后查看相关资源的使用情况，发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具，我们导出了出问题的堆栈信息。我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法，这样的报错信息在堆栈中一共超过 100 处。通过排查代码，我们知道这个方法的主要功能是校验 URL 是否合法。很奇怪，一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题，我们将其中的关键代码摘抄出来，做了个简单的单元测试。]]></description><category></category></item><item><title><![CDATA[Spring 历史]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162492308</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162492308</guid><author>QTI4jmRms</author><pubDate>Wed, 01 Jul 2026 16:44:08 +0800</pubDate><description><![CDATA[Spring Boot 介绍Spring Boot 是由 Pivotal 团队提供的全新框架，其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置，从而使开发人员不再需要定义样板化的配置。用我的话来理解，就是 Spring Boot 其实不是什么新的框架，它默认配置了很多框架的使用方式，就像 maven 整合了所有的 jar 包，Spring Boot 整合了所有的框架（不知道这样比喻是否合适）。]]></description><category></category></item><item><title><![CDATA[明白了回溯是导致问题的原因之后，其实就是减少这种回溯，你会发现如果我在第三部分加上下划线和百分号之后，程序就正常了。]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162492289</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162492289</guid><author>QTI4jmRms</author><pubDate>Wed, 01 Jul 2026 16:43:17 +0800</pubDate><description><![CDATA[一个小小的正则表达式竟然能够把 CPU 拖垮，也是很神奇了。这也给平时写程序的我们一个警醒，遇到正则表达式的时候要注意贪婪模式和回溯问题，否则我们每写的一个表达式都是一个雷。]]></description><category></category></item><item><title><![CDATA[前期准备：]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162457098</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162457098</guid><author>QTI4jmRms</author><pubDate>Tue, 30 Jun 2026 15:46:39 +0800</pubDate><description><![CDATA[鼠标无非以下几种基本操作：点击，移动，拖动，滚轮滑动。]]></description><category></category></item><item><title><![CDATA[【C++】智能指针]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162457058</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162457058</guid><author>QTI4jmRms</author><pubDate>Tue, 30 Jun 2026 15:45:55 +0800</pubDate><description><![CDATA[如果需要特殊的释放逻辑。]]></description><category></category></item><item><title><![CDATA[从回调认识动态代理 (Java)]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162424163</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162424163</guid><author>QTI4jmRms</author><pubDate>Mon, 29 Jun 2026 15:45:17 +0800</pubDate><description><![CDATA[想要实现这个思想，各个语言各有不同的方法(noob的猜测)；Java要实现回调函数，就要利用其重要的面向接口(Interface)思想1.回调接口2.调用类3.重写回调方法,为了方便使用匿名内部类只需要编写一个继承callback的类，并重写方法即可传入Caller实现回调，it's simple。]]></description><category></category></item><item><title><![CDATA[FileInputStream和RandomAccessFile的源码分析和使用方法详细分析（windows操作系统，JDK8）]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162424123</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162424123</guid><author>QTI4jmRms</author><pubDate>Mon, 29 Jun 2026 15:44:22 +0800</pubDate><description><![CDATA[RandomAccessFile实现了DataOutput.interface和DataInput.interface两个接口，拥有读取和写入java基本数据类型（byte，short，int，long，double，float，boolean，char） 和UTF-8字符串方法,有效地与IO流继承体系中其他部分实现了分离，由于不支持装饰者设计模式，所以不能与OutputStream和InputStream的子类结合起来使用。通过适配器模式，屏蔽了底层系统的复杂性，提供了跨平台的统一文件读取接口。]]></description><category></category></item><item><title><![CDATA[从 Prompt 到 Loop：理清 AI Agent 工程的概念演进]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162394689</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162394689</guid><author>QTI4jmRms</author><pubDate>Sun, 28 Jun 2026 15:54:04 +0800</pubDate><description><![CDATA[也就是说，模型之外的所有东西都是 Harness。你说"Harness"，可能指的是 Claude Code 这个产品我说"Harness"，可能指的是 Initializer + Coding Agent 这种设计模式他说"Harness"，可能指的是他项目里的 AGENT.md 配置文件三个人用同一个词，说的完全不是同一个东西。这就像说"软件工程"——你可能在说设计模式，也可能在说编程语言，也可能在说某个具体的代码库。问题的根源在于:Harness 的范围太广了。]]></description><category></category></item><item><title><![CDATA[一文读懂AI应用技术：自然语言处理、语音识别/合成、可解释AI]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162394674</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162394674</guid><author>QTI4jmRms</author><pubDate>Sun, 28 Jun 2026 15:53:22 +0800</pubDate><description><![CDATA[要先把你的声音变成文字（语音识别），理解"明天早上八点"是时间、"定闹钟"是任务（自然语言理解），然后执行操作，最后用语音告诉你"好的，已经设好闹钟了"（语音合成）。让机器读懂你说的话，让机器听懂你的声音，让机器能开口说话。这一技术也应用而生。昨天我们简单地介绍了《》，今天这篇文章，就把这四项技术讲清楚。读完之后，你会理解：为什么现在的AI能和你丝滑地对话。]]></description><category></category></item><item><title><![CDATA[把坏运气关在门外：哈希的随机化之路]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162373449</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162373449</guid><author>QTI4jmRms</author><pubDate>Sat, 27 Jun 2026 19:35:14 +0800</pubDate><description><![CDATA[哈希表通常被描述成“均摊 O(1)O(1)”的数据结构。这个说法在日常编程里很好用，但它暗含了一个前提：输入没有系统性地撞向同一批桶。只要这个前提失效，哈希表就会从一个轻快的工具变成一条很长的链表，或者一段反复探测的泥潭。当输入可能很坏，或者你无法相信输入分布时，怎样用随机化把坏运气挡在门外。]]></description><category></category></item><item><title><![CDATA[记录一下我的 Gradle 开发环境配置过程（萌新扫盲）]]></title><link>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162373444</link><guid>https://blog.youkuaiyun.com/QTI4jmRms/article/details/162373444</guid><author>QTI4jmRms</author><pubDate>Sat, 27 Jun 2026 19:34:28 +0800</pubDate><description><![CDATA[已经好久不写随笔了（虽然我的随笔并没有什么含金量），上一次写还是2025-11-10之前写随笔写博客记录，主要是为了自己后续工作方便，遇到问题随时回来查之前写过的文章记过的笔记，同时若能帮助到别人也很高兴，现在大 AI 时代几乎没有什么是 AI 解决不了的，遇到什么问题随口一问就解决了，所以好久没有记录一些东西了。]]></description><category></category></item></channel></rss>