IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:XML

共 29 篇相关文章

IT 累计浏览 2,847

一个 GUI 系统的组成部分

这篇文章从作者开发 iOS 上的 XML+CSS UI 布局框架 CocoaUI 的切身实践出发,探讨了构建一个现代 GUI 系统所需的基石。作者首先犀利地指出了 iOS 与 Android 在界面体验上的差距,认为其根源很大程度在于底层的软件技术,尤其是字体渲染。他推崇苹果在高分辨率屏幕上锐利的渲染技术,并直言某些虚化技术带来的粗糙感。 随后,文章系统性地梳理了自建一个 GUI 系统至少需要的六大核心模块:从最基础的 Core Text(字体渲染)和 Core Graphics(2D 图形引擎),到赋予界面生命力的 Core Animation(动画)和 Event Handling(事件处理),再到支撑智能设备的 Core Audio/Video(多媒体)与 WebKit(浏览器引擎)。作者认为,字体技术的长期积累是重中之重。 最后,作者以自己的 CocoaUI 框架为例,介绍了如何利用类 Web 的 HTML+CSS 技术进行界面布局,将界面描述与逻辑编程分离,避免了用 XML 进行“编程”的误区。整篇文章是作者对 GUI 技术栈的深入思考与经验总结。

IT 累计浏览 2,198

Android设置应用内文字的默认颜色和大小

这篇文章解决了一个 Android 开发中常见的主题适配问题:当未显式设置 TextView 或 Button 的文字颜色时,切换应用主题会导致文字颜色意外改变;另外,若想调整 Toast 的文字大小,通常需要重写其内部实现,颇为繁琐。 作者从 Android 主题继承机制出发,提出了一种简洁的方案:在项目的 `styles.xml` 中为应用主题(如 `AppTheme`)直接定义 `android:textSize` 和 `android:textColor` 属性,并在 `AndroidManifest.xml` 中引用该主题。这样,所有未单独设置文字样式属性的 View,都会自动继承主题中指定的颜色和大小,包括 Toast。 这个方案的核心在于利用主题的全局覆盖特性,以最小代码成本统一了应用内文字的默认视觉表现,避免了在每个 View 上重复定义或处理意外的主题变更。需要注意的是,该设置仅作为默认值生效,如果某个 View 已经通过代码或 XML 明确指定了文字颜色或大小,将优先采用其自身设置。

IT 累计浏览 7,729

XML和JSON

这篇文章从社区中一个常见的争论出发,客观对比了XML和JSON这两种数据交换格式。作者没有简单地断言谁更优越,而是通过具体代码示例,细致地分析了两者在体积、表达直观性和功能特性上的关键差异。 文章指出,JSON在数据类型区分(如数字与字符串)、数组表示(用[]更直观)以及处理特殊字符(如换行)时更为简洁自然,这些特性使其在JavaScript生态中拥有原生支持的优势。然而,XML也并非没有强项:它支持声明和编码信息,可通过命名空间灵活组合不同定义,并且其DTD和XML Schema提供的验证能力远强于JSON Schema,能实现更严格的自描述和自校验。 在对象转换方面,JSON的解析和序列化在许多语言中已成为基础操作,而XML则通常需要依赖额外的类库和注解配置。文章还介绍了在线转换工具作为实用补充。总的来说,作者的分析平衡而深入,帮助读者理解两种格式各自的适用场景——JSON更轻便直观,适合Web API和前端交互;XML则在需要复杂验证、命名空间管理和文档自解释性的企业级或配置场景中更显稳固。

IT 累计浏览 1,905

跨平台移动框架iMAG开发入门

这篇讲的是iMAG这个跨平台移动开发框架的入门上手。文章开宗明义,指出iMAG的核心优势在于“原生跨平台”——它采用XML加JavaScript的方式,将符合规范的代码解释成Android或iOS的本地原生控件来执行,因此拥有与原生应用一致的性能和用户体验。这一点将它明确区别于PhoneGap、JQuery Mobile这类Web技术封装的框架,更适合对性能要求较高的场景。 作者随后介绍了iMAG极为简洁的开发环境。开发者无需在本地搭建环境,只需在官网注册账号,安装手机客户端并使用在线工具,就能实时编辑XML并在手机上刷新查看效果,上手门槛极低。 文章通过一个“Hello World”示例,清晰展示了iMAG的XML结构。例如,使用封装页面,和<content>划分区域,而<list>控件则负责内容布局。这种结构会解释成各自平台的原生组件,比如Android上的TextView或iOS上的UILabel。文末还初步梳理了iMAG的控件体系,将其分为内容、表单和布局三类。总体来说,这篇文章为想快速构建高性能跨平台应用的前端或移动端开发者,提供了一个轻量且高效的新选项。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 5,876</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/6016?f=tg">国内团购网前端严重安全漏洞– 以满座网为案例分析</a></h2> <p class="br-summary">这篇讲的是作者以满座网为例,深入剖析了一个典型的前端安全漏洞。文章从日常技术排查出发,演示了如何利用浏览器开发工具(Firebug)和简单的jQuery命令,绕过团购页面对商品购买数量的前端限制。 作者发现,尽管网站前端代码设置了最多999件的购买上限,但这一限制仅存在于客户端。通过修改本地参数,理论上可以提交极大数量的订单。这个漏洞的根源在于“前端不信任后端,后端不信任前端”这一基本安全原则被忽视。仅依赖前端进行关键业务逻辑校验(如数量、价格),而缺乏后端的有效复核,为系统留下了风险。 案例的警示意义很直接:在Web 2.0时代,JavaScript和Ajax的便利不应以牺牲安全性为代价。对于涉及交易的系统,任何关键数据都必须在服务端进行严格校验。文章也借此提醒开发者,构建可靠的应用需要将安全成本纳入整体规划,不能心存侥幸。</p> </div> </article> <article class="br-card br-plain-card"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 2,971</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/4981?f=tg">Clojure世界:XML处理</a></h2> <p class="br-summary">这篇讲的是Clojure中处理XML的那些事儿。作者从XML在现代Clojure生态中略显尴尬的地位切入——它或许不再是配置文件的首选,但在与遗留系统对接或进行系统间通讯时,你依然避不开它。 文章的核心是介绍Clojure标准库 `clojure.xml` 的用法。它通过一个具体的解析示例,展示了如何将XML数据转换为Clojure中方便操作的嵌套向量与映射结构。这种处理方式保持了函数式编程的风格,让XML数据能无缝融入Clojure的数据处理流程。 对比来看,虽然Clojure社区更推崇EDN和JSON这类更贴合Lisp的格式,但 `clojure.xml` 工具库的存在,确保了开发者在面对不可避免的XML任务时,有一个扎实、标准且符合语言习惯的解决方案,这对于维护旧系统或实现跨平台通信至关重要。</p> </div> <div class="br-thumb br-compact-thumb is-cached"> <img src="/upload/thumb/2026/05/87db9337486e6758d772829a26342839bc8c1a52.gif" alt="" loading="lazy"> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 3,374</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/4539?f=tg">XML实体注入漏洞安全警告</a></h2> <p class="br-summary">这篇安全警告详细拆解了XML实体注入(XXE)这一常见但危害极大的漏洞。文章从攻击者视角出发,演示了如何利用XML解析器默认开启的外部实体引用功能,通过精心构造的XML文档,实现本地文件读取、内网端口扫描甚至远程代码执行。作者特别指出,这种漏洞在Web应用接口、文档上传解析、老旧系统数据交互中尤为普遍,往往因为开发者对底层解析库的安全配置疏忽而埋下隐患。 文章的核心价值在于将复杂的攻击原理转化为具体的防御清单。它不仅对比了不同编程语言(如Java、PHP、Python)中XML解析器的默认行为与安全配置差异,还提供了切实可行的修复方案:包括在解析前显式禁用外部实体和DTD、实施严格的输入校验、以及使用更安全的数据格式(如JSON)作为替代。通过几个真实案例的复盘,文章强调了“最小权限原则”在XML解析场景下的具体应用,让读者能快速将知识转化为代码层面的加固措施。 这些细致的分析和建议,使得它超越一般漏洞公告,成为一份开发与安全团队可以立即参照的实战手册。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 2,458</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/3770?f=tg">Ajax和WEB服务数据格式:自定义返回格式</a></h2> <p class="br-summary">在Ajax和WEB服务数据格式系列的收官之作中,作者深入探讨了自定义返回格式。此前,系列已对比了标准格式:XML、SOAP和HTML结构严谨,适合企业级数据交换,但数据体积较大;JSON和JSONP则以轻量和易用性著称,尤其适合AJAX的异步请求,但可能受限于预设结构。现在,文章转向自定义格式,允许开发者根据特定场景设计数据结构。 关键差异在于灵活性与权衡。自定义格式能突破标准约束,例如,在内部高性能系统中,采用自定义二进制格式可大幅减少传输开销;而在需要广泛兼容的公开API中,JSON仍是更稳妥的选择。文章通过实例展示了如何平衡:比如在微服务架构中,使用自定义格式优化内部通信效率,同时对外暴露JSON接口以确保易用性。作者强调,设计时需考虑解析复杂度、安全性和团队维护成本。 这种思路为开发者提供了决策参考:数据格式的选择并非一成不变,应基于项目需求动态调整。文章以具体技术细节收尾,帮助读者在多样化的数据交换场景中找到适合的方案。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 4,134</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/3768?f=tg">Ajax和WEB服务数据格式:XML SOAP HTML</a></h2> <p class="br-summary">这篇讲的是Ajax技术中数据格式的演变与选择。文章从Ajax最初的名称“异步JavaScript与XML”切入,指出其核心是实现页面无刷新的数据交互,而承载这些数据的格式至关重要。 作者对比了三种主要格式:XML作为早期Web服务的“通用语”,结构严谨但冗长;SOAP基于XML构建了复杂的通信协议,虽然功能强大但增加了带宽和解析负担;HTML模板则更直接,常用于服务器渲染片段,但并非纯粹的数据载体。 文章特别提到,随着开发实践深入,这些格式的不足逐渐显现。于是JSON凭借其轻量、易于阅读和解析的特性,迅速成为Ajax通信中的新标准。这种格式演变反映了Web开发从追求严格规范到注重效率与开发体验的务实转变。 对于开发者而言,理解这些格式的特点与适用场景,能帮助在设计API或实现前后端交互时做出更合理的技术选型。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 3,195</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/3709?f=tg">使用javascript将XML解析为JSON</a></h2> <p class="br-summary">这篇文章聚焦于一个前端开发中常见的格式转换需求:如何用 JavaScript 将 XML 数据高效地解析为 JSON 对象。文章直接展示了一段实用的转换代码,其核心思路是通过遍历 XML 的节点树,递归地将其标签、属性和文本内容映射到一个对应的 JSON 结构中。 作者以 David Walsh 的一篇技术分享为蓝本,清晰地讲解了转换过程中的几个关键步骤:处理元素节点、提取属性、处理文本内容,并最终拼装成标准的 JSON 格式。这种方法巧妙地利用了 DOM 解析器(如 `DOMParser`)来处理 XML,避免了手动编写复杂的字符串解析逻辑。 对于需要处理来自旧系统 API 或配置文件的 XML 数据,同时又希望在现代 Web 应用中以更灵活、易于处理的 JSON 格式使用的开发者来说,这段代码提供了一个轻量且直接的解决方案。它展示了如何弥合两种数据格式之间的鸿沟,让数据流转更加顺畅。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 3,181</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/3653?f=tg">实例演示SimpleXMLElement的用法</a></h2> <p class="br-summary">这篇讲的是如何直接使用PHP的SimpleXMLElement类来操作XML,而不只是通过simplexml_load_string快速加载。作者从基础对象创建切入,通过一系列实例演示了节点遍历、属性读取、子元素增删改查等核心操作。 文章特别对比了SimpleXMLElement作为底层对象与simplexml_load_string包装函数的关系,指出后者虽然便捷,但直接操作前者能获得更精细的控制力。例如,在处理复杂XML结构或需要动态修改文档时,显式地创建SimpleXMLElement对象并调用其方法(如asXML、addChild、xpath)会更加灵活可靠。 整体来看,作者通过可运行的代码片段,将抽象的XML操作转化为具体步骤,让读者能清晰看到每一步对DOM结构产生的变化。对于需要在PHP中动态生成或精细调整XML数据的开发者而言,这篇内容提供了扎实的用法参考。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 1,630</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/3502?f=tg">WSDL 1.1 中文规范</a></h2> <p class="br-summary">在Web服务领域,WSDL(Web Services Description Language)作为描述接口的核心标准,一直存在版本迭代的讨论。这篇文章从实际应用出发,对比了WSDL 1.1与2.0两个版本,并解释了作者为何选择翻译1.1版本的中文规范。作者观察到,尽管WSDL 2.0在架构上更为先进,但当前大多数企业和项目仍沿用1.1版本,这主要是因为1.1内容更简洁,易于理解和实施,且在已有系统中形成了稳定的生态。 关键差异上,WSDL 1.1以直观的结构定义了服务元素,如类型、消息和绑定,适合快速集成和维护旧系统;而2.0版本引入了模块化设计和新特性,增强了灵活性</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 2,973</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/3449?f=tg">纯文本配置还是注册表</a></h2> <p class="br-summary">这篇讲的是操作系统配置文件的哲学之争。作者从 Unix/Linux 沿用40多年的纯文本配置传统出发,直接对比了微软在 Windows 上一系列眼花缭乱的方案演进——从 INI 文件到注册表,再到 XML。 文章的核心观点很鲜明:Unix 的纯文本配置胜在简单、透明,用户可以直接查看和修改,这种“一切皆文本”的文化是一种强大的延续。而 Windows 的“创新”——特别是注册表——则常被诟病为复杂且不透明,尽管它一度被视为强大的集中式配置管理方案。 作者通过对比,揭示了两种设计哲学的根本差异:一种是信任用户、追求极简与可维护性;另一种是平台主导、功能集中但可能带来额外复杂度。文章并没有简单地评判高下,而是引导读者思考不同场景下,这种差异带来的实际影响和选择背后的逻辑。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 2,868</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/3246?f=tg">SOAP的S是Simple</a></h2> <p class="br-summary">这篇文章探讨的是SOAP协议名字与本质之间的有趣反差。作者从早期的技术争论切入,指出在WS-*系列扩展规范大量出现之前,SOAP的设计初衷确实是遵循其名字中的“S”——Simple(简单),专注于使用XML进行基本的消息交换。 但随后文章话锋一转,剖析了现实的发展:随着WS-Security、WS-ReliableMessaging等一系列旨在增强功能的扩展规范加入,SOAP协议栈的整体复杂度急剧增加,以至于“简单”这一点常常被诟病。作者通过这个演变过程,揭示了技术理想与工程实践之间的张力。 这篇文章的价值在于,它没有停留在简单的褒贬,而是引导读者思考协议设计的边界与适用场景。它提醒我们,一个技术的初始愿景和其最终生态可能大相径庭,选择时需看清其核心与附加部分的本质区别。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 4,547</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/3243?f=tg">信XML,得自信</a></h2> <p class="br-summary">这篇文章从一个略带讽刺的视角,剖析了XML这项曾经被视为“必备神器”的技术如何从一个基础数据格式,演变成一些项目中过度甚至荒诞使用的情况。作者以“信XML,得永生”这类流行梗为引子,直指XML的滥用现象——它仿佛成了一种“不写就不够时髦”的标配,导致许多本不必要的复杂性被引入。 文中列举了若干为了用XML而用XML的极端案例,揭示了这种盲目崇拜背后的“Zhuangbility”心态。文章的核心观点在于:XML本身是强大且有用的工具,但技术选型不应随波逐流或为了形式而形式。它启发开发者需保持清醒,根据实际场景(如数据交换、配置管理)来判断是否真的需要XML,避免陷入“为了技术而技术”的误区,让工具真正服务于解决问题本身。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 4,671</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/2388?f=tg">xml转数组的方法</a></h2> <p class="br-summary">这篇文章聚焦于一个具体的开发痛点:当需要处理来自API或配置文件的XML格式数据时,如何高效、可靠地将其转换为更便于程序操作的数组结构。 作者从实际编码场景出发,对比了至少两种主流方案:一种是利用PHP内置的`simplexml_load_string`结合`json_encode`与`json_decode`的经典“曲线救国”法;另一种则是评估使用像`XMLReader`这样的流式解析器配合手动处理。文章没有停留在表面,而是深入到了细节:比如前一种方法在处理包含属性(attributes)和命名空间(namespaces)的复杂XML时,需要额外小心地进行数据清洗;而后一种方法虽然代码更繁琐,但在处理超大XML文件时能有效控制内存占用。 核心结论非常清晰:对于结构简单、数据量可控的XML,第一种方法因其代码简洁、开发效率高而成为首选;一旦面对结构复杂或体积庞大的XML,就需要权衡性能与开发成本,可能倾向于更底层、更可控的解析方式。文章给出了清晰的决策树,帮助开发者根据项目实际情况做出快速选择。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 4,569</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/2309?f=tg">前端模板引擎</a></h2> <p class="br-summary">这篇讲的是前端开发中常见的模板引擎选择问题。作者从实际项目需求出发,对比了 Mustache、Handlebars、EJS 以及现代框架内置的模板方案(如 Vue 模板、React JSX)等几种主流选择。文章没有停留在语法层面的罗列,而是深入剖析了它们在设计哲学上的根本差异:比如 Mustache 的“无逻辑”约束如何带来更强的可维护性,而 EJS 允许嵌入完整 JavaScript 代码的灵活性又适用于何种场景。通过分析它们在首次渲染性能、客户端重渲染开销、以及与不同类型后端集成的便利性上的具体表现,文章得出了一个核心结论:没有“最好”的模板引擎,只有最适合项目上下文的选择——对于需要前后端同构的轻量项目,逻辑受限的模板可能更优;而对于构建复杂的单页应用,与组件框架深度集成的方案(如 JSX)则更能发挥长期价值。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 4,287</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/2095?f=tg">用于前端的模板引擎</a></h2> <p class="br-summary">这篇讲的是前端开发中一个绕不开的话题:模板引擎。作者从项目维护的痛点出发,对比了几种主流方案——比如 Mustache 和 Handlebars 的“无逻辑”理念、EJS 与原生 JavaScript 的无缝嵌套,以及 Pug 等工具带来的写法革新。文章没有停留在语法展示上,而是深入到了它们的核心设计思想:像 Mustache 强调通过严格的数据绑定来分离关注点,而 EJS 则更注重书写时的直观与灵活。这种设计上的差异直接导致了它们在调试体验、团队协作效率以及大型项目可维护性上的不同表现。例如,逻辑严格的模板能减少运行时意外,但在复杂条件渲染时可能显得笨拙。文章最终落脚于一个务实的选择框架:根据团队习惯、项目复杂度以及是否需要强大的运行时扩展能力来决定使用哪把“锤子”。读完后,对如何为具体场景挑选最合适的模板方案有了更清晰的认识。</p> </div> </article> <article class="br-card br-plain-card br-plain-card--no-thumb"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 3,180</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/1958?f=tg">PHP simplexml_load_file与特殊字符</a></h2> <p class="br-summary">这篇讲的是作者周末被合作方电话“轮番轰炸”的亲身经历——而问题的根源,竟然全都指向同一个PHP函数:`simplexml_load_file`。原来,当XML数据中包含某些特殊字符(比如常见的`&`符号)时,如果直接扔给这个函数解析,它会立刻“罢工”并抛出错误。 文章由此切入,详细拆解了为什么`simplexml_load_file`面对特殊字符时如此“脆弱”,以及在实际项目(尤其是接收外部数据)中该如何稳妥地处理这类情况。作者不仅点出了问题的典型表现,更重要的是分享了经过验证的解决方案:在加载前对XML字符串进行必要的转义,或者调整相关配置,从而确保程序稳定运行。 对于需要处理动态XML数据或对接第三方接口的开发者来说,这篇文章提供了一个非常具体且常见的排坑指南,能帮助大家避免在类似的地方栽跟头。</p> </div> </article> <article class="br-card br-plain-card"> <div> <div class="br-meta"> <span class="br-source-dot">IT</span> <span>累计浏览 7,179</span> </div> <h2 class="br-card-title"><a href="https://blogread.cn/it/article/1880?f=tg">AWStats是一个基于Perl的WEB日志分析工具。</a></h2> <p class="br-summary">这篇讲的是经典的WEB日志分析工具AWStats的核心工作原理。不同于很多现代SaaS监控方案,AWStats基于Perl脚本运行,它的“运行模式”其实是一套清晰的离线分析流程。 作者从分析需求出发,阐述了AWStats如何通过解析服务器生成的访问日志文件(如Apache的access.log),按照预设的规则对访问者IP、浏览器、操作系统、访问URL、流量来源等数十个维度进行统计。其中巧妙之处在于,AWStats并非实时计算,而是通过生成中间状态文件来记录统计快照,后续每次分析只需处理新增的日志数据,大大提升了重复分析的效率。 最终,这些统计数据会被渲染成直观的HTML报表,包含趋势图、排行榜和详细数据表。这种模式虽然传统,但对于需要轻量部署、完全掌控数据,或分析特定时间窗口历史日志的场景依然非常实用,尤其适合中小型站点的运维人员进行流量回溯与基础分析。</p> </div> <div class="br-thumb br-compact-thumb is-cached"> <img src="/upload/thumb/2026/05/9638f7951fecaa5dba2f8303768928351dd945bb.gif" alt="" loading="lazy"> </div> </article> <nav class="br-pagination" aria-label="pagination"> <ul class="pagination pagination-sm"><li class="page-item active" aria-current="page"><span class="page-link">1</span></li><li class="page-item"><a class="page-link" href="/it/tags/XML/2">2</a></li></ul> </nav> </section> <aside class="br-stack br-sidebar" aria-label="IT sidebar"> <section class="br-side-card"> <h2>近 3 天十大热文</h2> <ol class="br-rank-list"> <li><span class="br-rank">1</span><a href="https://blogread.cn/it/article/8698?f=hot3">等了十年的 Go 链式管道,终于来了:seq<small>近 3 天 81 浏览</small></a></li> <li><span class="br-rank">2</span><a href="https://blogread.cn/it/article/4088?f=hot3">浅谈MySQL索引背后的数据结构及算法<small>近 3 天 79 浏览</small></a></li> <li><span class="br-rank">3</span><a href="https://blogread.cn/it/article/4015?f=hot3">程序员技术练级攻略<small>近 3 天 69 浏览</small></a></li> <li><span class="br-rank">4</span><a href="https://blogread.cn/it/article/4964?f=hot3">推荐算法Slope One初探<small>近 3 天 62 浏览</small></a></li> <li><span class="br-rank">5</span><a href="https://blogread.cn/it/article/3733?f=hot3">使用gcov完成代码覆盖率的测试<small>近 3 天 62 浏览</small></a></li> <li><span class="br-rank">6</span><a href="https://blogread.cn/it/article/8694?f=hot3">AI Coding Agent 时代,我自己<small>近 3 天 61 浏览</small></a></li> <li><span class="br-rank">7</span><a href="https://blogread.cn/it/article/8696?f=hot3">CSS color-scheme属性与lig<small>近 3 天 59 浏览</small></a></li> <li><span class="br-rank">8</span><a href="https://blogread.cn/it/article/8693?f=hot3">如何写好设计文档?<small>近 3 天 56 浏览</small></a></li> <li><span class="br-rank">9</span><a href="https://blogread.cn/it/article/8690?f=hot3">美团海报生成 AIGC 技术创新与实践<small>近 3 天 51 浏览</small></a></li> <li><span class="br-rank">10</span><a href="https://blogread.cn/it/article/8697?f=hot3">如何做决策 - 从 Go 的一个 issue<small>近 3 天 51 浏览</small></a></li> </ol> </section> <div class="br-ad-slot br-ad-sidebar"> <div id="_u7013829"></div> <script type="text/javascript"> (window.slotbydup = window.slotbydup || []).push({ id: "u7013829", container: "_u7013829", async: true }); </script> </div> </aside> </main> <footer class="br-shell" style="padding-top:12px;padding-bottom:20px;color:var(--br-muted);font-size:13px;"> <div style="text-align:center;line-height:1.9;"> © 2009 - 2026 by blogread.cn  ·  微博:<a href="https://weibo.com/blogread" target="_blank" style="color:var(--br-accent)">@IT技术博客大学习</a>  ·  <span class="news-footer-trust-links"><a href="/about.html">关于</a> · <a href="/contact.html">联系</a> · <a href="/privacy.html">隐私</a> · <a href="/disclaimer.html">内容来源声明</a></span>  ·  <a href="https://beian.miit.gov.cn/" target="_blank">京ICP备15002552号-1</a> </div> </footer> <!-- Bootstrap 5 bundle (含 Popper); 不再依赖 jQuery。 --> <script src="/plugins/bootstrap-5.3.8/js/bootstrap.bundle.min.js"></script> <script src="/assets/frontend-modern/reader-actions.js"></script> </body> </html>