<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>编程教程 · AI 技术 · 热点观察</title><description>面向开发者的编程教程、AI 技术、开发工具和热点技术观察平台。</description><link>https://blog.szkit99.com/</link><language>zh-CN</language><item><title>Go 实战：写一个命令行工具</title><link>https://blog.szkit99.com/zh-cn/articles/go-build-a-cli-tool/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-build-a-cli-tool/</guid><description>用标准库做一个统计文本行数与最长行的 CLI：flag 解析、按参数读文件或 stdin、bufio 逐行扫描、错误与退出码、子命令结构，以及用 ldflags 注入版本号。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>CLI</category><category>工具开发</category></item><item><title>Go 实战：写一个 HTTP 服务</title><link>https://blog.szkit99.com/zh-cn/articles/go-build-an-http-service/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-build-an-http-service/</guid><description>用标准库 net/http 实现 JSON 接口：方法路由、请求解析与校验、统一错误响应、中间件记录日志与请求 ID、超时配置、优雅停机，以及 httptest 验收。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>HTTP</category><category>服务端</category></item><item><title>Go context 与取消传播</title><link>https://blog.szkit99.com/zh-cn/articles/go-context-and-cancellation/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-context-and-cancellation/</guid><description>context 的作用与用法：Background 与 TODO 的取舍、WithCancel/WithTimeout/WithDeadline、ctx 作为首个参数向下传递、select 监听 Done、避免泄漏与不要存进结构体。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>context</category><category>并发</category></item><item><title>Go 泛型入门</title><link>https://blog.szkit99.com/zh-cn/articles/go-generics-intro/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-generics-intro/</guid><description>类型参数与约束的实用入门：any 与 comparable、自定义约束与 ~ 底层类型、Map/Filter 等通用函数、泛型类型、类型推断，以及什么时候不该用泛型。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>泛型</category><category>类型参数</category></item><item><title>Go goroutine 与 channel</title><link>https://blog.szkit99.com/zh-cn/articles/go-goroutines-and-channels/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-goroutines-and-channels/</guid><description>并发原语的正确用法：go 与 WaitGroup、无缓冲与有缓冲 channel、close 与 range 的规则、select 与超时、worker pool、Mutex 与 channel 的选择，以及 race detector。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>goroutine</category><category>channel</category></item><item><title>Go 包与模块管理</title><link>https://blog.szkit99.com/zh-cn/articles/go-packages-and-modules/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-packages-and-modules/</guid><description>讲清 module、package 与目录的关系：go.mod 与 go.sum、internal 目录、导出规则、go get 与 go mod tidy、版本选择与 replace，以及常见的循环依赖处理。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>模块</category><category>包管理</category></item><item><title>Go 性能剖析：用 pprof 找热点</title><link>https://blog.szkit99.com/zh-cn/articles/go-profiling-with-pprof/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-profiling-with-pprof/</guid><description>从基准测试产物到生产采样：CPU 与堆 profile 的采集方式、top/list/web 与火焰图的读法、benchstat 对比两次改动，以及 pprof 端点该暴露给谁。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>性能</category><category>pprof</category></item><item><title>Go 测试与基准测试</title><link>https://blog.szkit99.com/zh-cn/articles/go-testing-and-benchmarks/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-testing-and-benchmarks/</guid><description>用标准库 testing 写表驱动测试：t.Run 子测试、t.Helper 与 t.Cleanup、临时目录、错误断言、基准测试与内存统计、覆盖率与 fuzz，以及测试的组织习惯。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>测试</category><category>基准测试</category></item><item><title>JavaScript 异步与 Promise</title><link>https://blog.szkit99.com/zh-cn/articles/js-async-and-promises/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-async-and-promises/</guid><description>从事件循环出发讲清 Promise 的三种状态与链式调用，async/await 的错误处理，串行与并行的取舍，以及 Promise.all、allSettled、race、any 的使用场景。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>异步</category><category>Promise</category></item><item><title>JavaScript 实战：不用框架写一个前端小应用</title><link>https://blog.szkit99.com/zh-cn/articles/js-browser-app-without-framework/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-browser-app-without-framework/</guid><description>用原生 JS 完成一个读书清单应用：单一状态对象加渲染函数、事件委托处理交互、localStorage 持久化、表单校验与可访问性，全程无第三方依赖。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>DOM</category><category>Web应用</category></item><item><title>JavaScript 实战：用 Node.js 写一个命令行工具</title><link>https://blog.szkit99.com/zh-cn/articles/js-cli-tool-with-node/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-cli-tool-with-node/</guid><description>从零做一个检查 Markdown 外链的 CLI：用 parseArgs 解析参数、fs/promises 遍历目录、fetch 并发探测、分级日志与退出码，并把它装成可全局执行的命令。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>CLI</category><category>Node.js</category></item><item><title>JavaScript DOM 与事件</title><link>https://blog.szkit99.com/zh-cn/articles/js-dom-and-events/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-dom-and-events/</guid><description>选择与创建节点、批量更新与重排、事件冒泡与捕获、事件委托、监听器清理与 AbortSignal，以及 innerHTML 带来的 XSS 风险与表单处理要点。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>DOM</category><category>事件</category></item><item><title>JavaScript fetch 与 HTTP 请求实践</title><link>https://blog.szkit99.com/zh-cn/articles/js-fetch-and-http/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-fetch-and-http/</guid><description>fetch 的基本用法与常见误判：状态码不会自动 reject、Response 只能读一次、超时与取消、失败重试与退避，以及浏览器 CORS 和 Node 环境的差异。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>fetch</category><category>HTTP</category></item><item><title>JavaScript 模块：ESM 与 CommonJS</title><link>https://blog.szkit99.com/zh-cn/articles/js-modules-esm-and-cjs/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-modules-esm-and-cjs/</guid><description>讲清 ESM 的 export/import、默认导出与具名导出的取舍、动态 import、CommonJS 的 require/module.exports，以及 Node 与浏览器中的模块解析规则和互操作坑。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>模块化</category><category>ESM</category></item><item><title>JavaScript 测试：用 Vitest 写单元测试</title><link>https://blog.szkit99.com/zh-cn/articles/js-testing-with-vitest/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-testing-with-vitest/</guid><description>从零配置 Vitest：断言怎么选、异步代码与假计时器怎么测、vi.fn 与 vi.mock 的替身边界、覆盖率阈值，以及在 CI 里稳定执行。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>Testing</category><category>Vitest</category></item><item><title>JavaScript 工程化：npm、Vite 与代码检查</title><link>https://blog.szkit99.com/zh-cn/articles/js-tooling-and-package-management/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-tooling-and-package-management/</guid><description>从 package.json 字段与语义化版本讲起，覆盖 npm ci 与锁文件、npm scripts、npx、Vite 开发与构建、ESLint 与 Prettier 分工，以及环境变量与产物检查。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>npm</category><category>Vite</category></item><item><title>PHP 实战：用 PDO 搭一个待办应用</title><link>https://blog.szkit99.com/zh-cn/articles/php-build-a-todo-app/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-build-a-todo-app/</guid><description>完整走一遍：SQLite + PDO 建表、表单增删改状态、CSRF 防护、PRG 重定向与闪存消息、视图渲染与输入校验，部署前的最小安全检查清单。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>PDO</category><category>项目实战</category></item><item><title>PHP Composer 与命名空间</title><link>https://blog.szkit99.com/zh-cn/articles/php-composer-and-namespaces/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-composer-and-namespaces/</guid><description>用 Composer 管理依赖与自动加载：composer.json 结构、PSR-4 命名空间映射、版本约束与锁文件、脚本与自动加载优化，以及团队协作中的常见坑。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>Composer</category><category>命名空间</category></item><item><title>PHP 调试与日志</title><link>https://blog.szkit99.com/zh-cn/articles/php-debugging-and-logging/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-debugging-and-logging/</guid><description>开发与生产两套错误配置、error_log 与自定义处理器、异常兜底、结构化日志与请求 ID，以及 Xdebug 断点、慢查询与「白屏」排查顺序。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>调试</category><category>日志</category></item><item><title>PHP 面向对象与类型系统</title><link>https://blog.szkit99.com/zh-cn/articles/php-oop-and-types/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-oop-and-types/</guid><description>PHP 8.4 的面向对象与类型：构造函数提升、readonly、枚举、接口与抽象类、trait、联合类型与 nullable、strict_types，以及继承与组合的选择。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>OOP</category><category>类型系统</category></item><item><title>PHP PDO 与预处理语句</title><link>https://blog.szkit99.com/zh-cn/articles/php-pdo-and-prepared-statements/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-pdo-and-prepared-statements/</guid><description>用 PDO 安全访问数据库：DSN 与连接选项、异常模式、位置参数与命名参数、事务、取值模式，以及 LIKE、IN、排序字段等预处理语句的边界。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>PDO</category><category>SQL</category></item><item><title>PHP 实战：写一个 JSON REST API</title><link>https://blog.szkit99.com/zh-cn/articles/php-rest-api-with-pdo/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-rest-api-with-pdo/</guid><description>用 PDO 实现一个最小 REST API：按方法分发的路由、统一 JSON 响应与错误结构、输入校验、分页与排序白名单、状态码约定，以及用 curl 做验收。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>REST</category><category>API</category></item><item><title>PHP 模板与视图分离</title><link>https://blog.szkit99.com/zh-cn/articles/php-templates-and-layouts/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-templates-and-layouts/</guid><description>把查询与输出拆开：一个 render 函数、布局与局部视图、输出转义、替代语法，以及模板里不该出现的数据库查询与业务判断。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>模板</category><category>视图</category></item><item><title>PHP 单元测试：PHPUnit 上手与实战</title><link>https://blog.szkit99.com/zh-cn/articles/php-unit-testing-with-phpunit/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-unit-testing-with-phpunit/</guid><description>从 Composer 安装 PHPUnit 11 讲起，覆盖 phpunit.xml 配置、断言选择、数据供给器、测试替身、SQLite 内存库与覆盖率，以及在 CI 里稳定执行。</description><pubDate>Tue, 03 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>测试</category><category>PHPUnit</category></item><item><title>什么是 AI Agent</title><link>https://blog.szkit99.com/zh-cn/articles/what-is-an-ai-agent/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/what-is-an-ai-agent/</guid><description>拆解 AI Agent 的观察—决策—执行循环，说明它与普通聊天和脚本自动化的边界，以及哪些场景不适合用 Agent。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>AI</category><category>Agent</category><category>LLM</category></item><item><title>Go 控制流：if、for、switch</title><link>https://blog.szkit99.com/zh-cn/articles/go-control-flow/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-control-flow/</guid><description>说明 Go 为什么只有一种循环、if 的初始化语句怎么用、switch 的默认无穿透行为，以及 range 遍历切片、map 与字符串的区别。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>流程控制</category><category>range</category></item><item><title>Go 函数与错误处理</title><link>https://blog.szkit99.com/zh-cn/articles/go-functions-and-errors/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-functions-and-errors/</guid><description>讲解多返回值与命名返回值、error 接口的正确用法、fmt.Errorf 的 %w 包装与 errors.Is/As，以及 defer、panic 与 recover 的适用边界。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>函数</category><category>错误处理</category></item><item><title>Go 环境搭建与第一个程序</title><link>https://blog.szkit99.com/zh-cn/articles/go-install-and-hello-world/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-install-and-hello-world/</guid><description>从安装 Go 1.24 开始，讲清 GOPATH 与模块模式的区别、go mod init / run / build / fmt 的实际用法，并给出最小项目结构。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>环境搭建</category><category>模块</category></item><item><title>Go 接口与组合</title><link>https://blog.szkit99.com/zh-cn/articles/go-interfaces-and-composition/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-interfaces-and-composition/</guid><description>讲清 Go 接口的隐式实现、小接口原则、类型断言与类型 switch，说明 nil 接口与 nil 指针的区别，以及用组合替代继承的写法。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>接口</category><category>组合</category></item><item><title>Go Map 与结构体</title><link>https://blog.szkit99.com/zh-cn/articles/go-maps-and-structs/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-maps-and-structs/</guid><description>讲清 Go map 的声明、comma-ok 取值、删除与并发限制，以及结构体定义、字面量、字段导出规则与嵌入组合的用法。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>Map</category><category>结构体</category></item><item><title>Go 指针、方法与值语义</title><link>https://blog.szkit99.com/zh-cn/articles/go-pointers-and-methods/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-pointers-and-methods/</guid><description>解释 Go 指针的取地址与解引用、new 与 &amp; 的区别，讲清值接收者与指针接收者的方法集规则，并给出何时该用指针的判断标准。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>指针</category><category>方法</category></item><item><title>Go Slice 和 Array 的区别</title><link>https://blog.szkit99.com/zh-cn/articles/go-slices-vs-arrays/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-slices-vs-arrays/</guid><description>对比 Go 数组与切片的内存模型，说明长度与容量的关系、append 扩容规则，以及共享底层数组导致的隐蔽 bug。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>Slice</category><category>Array</category></item><item><title>Go 变量、类型与零值</title><link>https://blog.szkit99.com/zh-cn/articles/go-variables-and-types/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/go-variables-and-types/</guid><description>讲清 var 与 := 的区别、Go 的零值机制、常量与 iota 的用法，以及数值转换、string 与 []byte、rune 之间的边界。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Go</category><category>变量</category><category>类型</category></item><item><title>JavaScript 数组常用方法</title><link>https://blog.szkit99.com/zh-cn/articles/js-array-methods/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-array-methods/</guid><description>按「是否改变原数组」梳理 map、filter、reduce、find、some、sort 等高频方法，配可运行示例与 flat、sort 的默认行为陷阱。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>数组</category><category>高阶函数</category></item><item><title>JavaScript 条件判断与循环</title><link>https://blog.szkit99.com/zh-cn/articles/js-conditionals-and-loops/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-conditionals-and-loops/</guid><description>讲解 if / switch 的写法差异、for、for...of、while 的适用场景，以及遍历数组和对象时最容易犯的索引与中断错误。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>流程控制</category><category>循环</category></item><item><title>JavaScript 错误处理</title><link>https://blog.szkit99.com/zh-cn/articles/js-error-handling/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-error-handling/</guid><description>讲解 Error 对象的结构与自定义错误，说明 try / catch / finally 的执行顺序、throw 的正确用法，以及异步场景下的错误捕获方式。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>错误处理</category><category>异常</category></item><item><title>JavaScript 函数与作用域</title><link>https://blog.szkit99.com/zh-cn/articles/js-functions-and-scope/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-functions-and-scope/</guid><description>对比函数声明、函数表达式与箭头函数，说明参数默认值与剩余参数，讲清作用域链、闭包与 var 在循环中的经典陷阱。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>函数</category><category>闭包</category></item><item><title>JavaScript 对象与解构</title><link>https://blog.szkit99.com/zh-cn/articles/js-objects-and-destructuring/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-objects-and-destructuring/</guid><description>讲解对象字面量、属性访问与遍历，说明解构赋值、展开运算符与浅拷贝的关系，以及对象引用带来的修改共享问题。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>对象</category><category>解构</category></item><item><title>JavaScript 运算符与类型转换</title><link>https://blog.szkit99.com/zh-cn/articles/js-operators-and-type-coercion/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-operators-and-type-coercion/</guid><description>讲清 == 与 === 的差别、隐式转换规则、truthy 与 falsy 判断，以及 ||、??、可选链在取值兜底时的正确用法。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>运算符</category><category>类型转换</category></item><item><title>JavaScript 字符串与模板字符串</title><link>https://blog.szkit99.com/zh-cn/articles/js-strings-and-template-literals/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-strings-and-template-literals/</guid><description>整理字符串常用方法与模板字符串的写法，说明字符串不可变性、slice 与 substring 的区别，以及 replace 与 replaceAll 的匹配规则。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>字符串</category><category>模板字符串</category></item><item><title>JavaScript 变量声明：var、let 与 const</title><link>https://blog.szkit99.com/zh-cn/articles/js-variables-and-data-types/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/js-variables-and-data-types/</guid><description>对比 var、let、const 的作用域与提升行为，说明暂时性死区与引用绑定的区别，并梳理 JavaScript 的七种原始类型与 typeof 判断。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>JavaScript</category><category>变量</category><category>数据类型</category></item><item><title>PHP 条件判断与循环</title><link>https://blog.szkit99.com/zh-cn/articles/php-conditionals-and-loops/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-conditionals-and-loops/</guid><description>讲解 if / match / switch 的选择，for、foreach、while 的适用场景，以及模板中使用的替代语法与循环中修改数组的注意事项。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>流程控制</category><category>循环</category></item><item><title>PHP 错误与异常处理</title><link>https://blog.szkit99.com/zh-cn/articles/php-error-handling/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-error-handling/</guid><description>区分 PHP 的错误等级与异常体系，讲解 try / catch / finally、自定义异常与全局处理器，以及生产环境隐藏错误细节的配置方式。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>异常</category><category>错误处理</category></item><item><title>PHP 文件读写</title><link>https://blog.szkit99.com/zh-cn/articles/php-file-io/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-file-io/</guid><description>讲解 file_get_contents 与 file_put_contents 的用法、逐行读取大文件的方式、目录遍历与路径处理，以及文件锁与权限相关的注意事项。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>文件IO</category><category>文件系统</category></item><item><title>PHP 表单与请求处理</title><link>https://blog.szkit99.com/zh-cn/articles/php-forms-and-request-handling/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-forms-and-request-handling/</guid><description>讲解 $_GET 与 $_POST 的使用场景、请求方法判断、输入过滤与输出转义，说明如何避免 XSS 与把表单数据写回页面的正确方式。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>表单</category><category>安全</category></item><item><title>PHP 函数与作用域</title><link>https://blog.szkit99.com/zh-cn/articles/php-functions-and-scope/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-functions-and-scope/</guid><description>讲解函数定义与类型声明、参数默认值与可变参数，说明返回值类型、变量作用域与 static 变量，以及匿名函数和箭头函数的用法。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>函数</category><category>类型声明</category></item><item><title>PHP 会话与 Cookie</title><link>https://blog.szkit99.com/zh-cn/articles/php-sessions-and-cookies/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-sessions-and-cookies/</guid><description>讲解 session 的启动与读写、Cookie 的设置参数与安全选项，说明两者的适用场景、登录态管理的基本做法与常见的会话安全隐患。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>Session</category><category>Cookie</category></item><item><title>PHP 字符串与数组</title><link>https://blog.szkit99.com/zh-cn/articles/php-strings-and-arrays/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-strings-and-arrays/</guid><description>整理 PHP 字符串处理与数组操作的高频函数，说明索引数组与关联数组的遍历方式，以及 array_map、array_filter 与数组合并的规则。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>字符串</category><category>数组</category></item><item><title>PHP 变量与数据类型</title><link>https://blog.szkit99.com/zh-cn/articles/php-variables-and-data-types/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/php-variables-and-data-types/</guid><description>讲解 PHP 变量的写法与作用域、标量类型与数组的类型判断，说明松散比较的陷阱以及 declare(strict_types=1) 的作用。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>PHP</category><category>变量</category><category>数据类型</category></item><item><title>Python 类与面向对象基础</title><link>https://blog.szkit99.com/zh-cn/articles/python-classes-and-oop/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-classes-and-oop/</guid><description>讲解类的定义、实例与类属性的区别、@property、继承与 super，以及 __repr__、__eq__ 等常用魔术方法的写法与用途。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>OOP</category></item><item><title>Python 命令行工具与项目结构</title><link>https://blog.szkit99.com/zh-cn/articles/python-cli-argparse-and-project-structure/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-cli-argparse-and-project-structure/</guid><description>用 argparse 实现带子命令的 CLI，讲清参数类型、默认值与退出码，并给出可直接套用的项目目录结构与 pyproject.toml 配置。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>CLI</category><category>argparse</category></item><item><title>Python 推导式与迭代工具</title><link>https://blog.szkit99.com/zh-cn/articles/python-comprehensions-and-iteration/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-comprehensions-and-iteration/</guid><description>系统讲解列表、字典、集合推导式与生成器表达式，以及 enumerate、zip、sorted、itertools 等把循环写短的迭代工具。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>Iteration</category><category>itertools</category></item><item><title>Python 条件判断与循环</title><link>https://blog.szkit99.com/zh-cn/articles/python-conditionals-and-loops/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-conditionals-and-loops/</guid><description>讲清 if / elif / else 的真值判断规则、for 与 while 的用法、break / continue / else 子句，以及遍历时最常见的错误。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>ControlFlow</category></item><item><title>Python 数据处理实战：清洗 CSV 与 JSON</title><link>https://blog.szkit99.com/zh-cn/articles/python-data-cleaning-csv-json/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-data-cleaning-csv-json/</guid><description>用一个完整脚本演示 CSV 数据清洗流程：读取、类型转换、缺失与异常处理、聚合统计、输出 JSON 报告，并说明如何拆成可测试的结构。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>CSV</category><category>JSON</category><category>DataProcessing</category></item><item><title>Python dataclass 与类型注解</title><link>https://blog.szkit99.com/zh-cn/articles/python-dataclasses-and-type-hints/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-dataclasses-and-type-hints/</guid><description>介绍类型注解语法与 mypy 检查，讲解 @dataclass 自动生成的方法、default_factory、frozen 与 slots，以及和 NamedTuple 的选择。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>TypeHints</category><category>dataclass</category></item><item><title>Python 异常处理与自定义异常</title><link>https://blog.szkit99.com/zh-cn/articles/python-error-handling/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-error-handling/</guid><description>讲解 try / except / else / finally 的执行顺序、捕获具体异常的写法、raise from 保留异常链，以及自定义异常与常见反模式。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>Exception</category></item><item><title>Python 文件读写与路径处理</title><link>https://blog.szkit99.com/zh-cn/articles/python-file-io-and-paths/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-file-io-and-paths/</guid><description>讲解 open 与 with 的正确用法、文本与 JSON / CSV 读写、pathlib 处理路径与遍历目录，以及编码与换行相关的常见错误。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>FileIO</category><category>JSON</category></item><item><title>Python 函数与参数传递</title><link>https://blog.szkit99.com/zh-cn/articles/python-functions-and-arguments/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-functions-and-arguments/</guid><description>讲解函数定义、位置与关键字参数、默认值的可变对象陷阱、*args 与 **kwargs，以及作用域规则。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>Function</category></item><item><title>Python 迭代器与生成器</title><link>https://blog.szkit99.com/zh-cn/articles/python-iterators-and-generators/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-iterators-and-generators/</guid><description>区分可迭代对象与迭代器，讲清 yield 的执行流程、生成器管道处理大文件、yield from 与 send，以及生成器只能用一次的注意事项。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>Generator</category><category>Iterator</category></item><item><title>Python 列表和字典常用操作</title><link>https://blog.szkit99.com/zh-cn/articles/python-lists-and-dicts/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-lists-and-dicts/</guid><description>整理 list 与 dict 的高频操作，包括切片、遍历、深浅拷贝与循环内修改的陷阱，配可运行示例。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>List</category><category>Dict</category></item><item><title>Python 模块、包与虚拟环境</title><link>https://blog.szkit99.com/zh-cn/articles/python-modules-packages-and-venv/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-modules-packages-and-venv/</guid><description>讲清 import 的几种写法、包与相对导入、__main__ 入口的作用，以及用 venv + pip 隔离依赖、固化 requirements 的完整流程。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>Package</category><category>venv</category></item><item><title>Python 正则表达式入门</title><link>https://blog.szkit99.com/zh-cn/articles/python-regex-basics/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-regex-basics/</guid><description>讲解 re 模块的 search、match、findall、finditer、sub 用法，常用元字符与分组、贪婪与非贪婪匹配，以及正则最容易踩的坑。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>Regex</category></item><item><title>Python 常用标准库：datetime、collections 与 json</title><link>https://blog.szkit99.com/zh-cn/articles/python-standard-library-essentials/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-standard-library-essentials/</guid><description>按使用场景介绍 datetime 的时间计算与格式化、collections 的 Counter / defaultdict / deque，以及环境变量与命令行参数等高频标准库用法。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>StandardLibrary</category></item><item><title>Python 字符串处理与格式化</title><link>https://blog.szkit99.com/zh-cn/articles/python-strings-and-formatting/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-strings-and-formatting/</guid><description>覆盖字符串创建、索引切片、split / join / strip 等常用方法、f-string 格式化语法，以及 str 与 bytes 的编码区别。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>String</category></item><item><title>Python 用 pytest 写测试</title><link>https://blog.szkit99.com/zh-cn/articles/python-testing-with-pytest/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-testing-with-pytest/</guid><description>从第一个 pytest 用例讲起，覆盖断言写法、pytest.raises、parametrize 参数化、fixture 与 tmp_path，以及测试组织方式和常见反模式。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>Testing</category><category>pytest</category></item><item><title>Python 元组、集合与不可变性</title><link>https://blog.szkit99.com/zh-cn/articles/python-tuples-and-sets/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-tuples-and-sets/</guid><description>对比 list / tuple / set / dict 的适用场景：元组的打包解包与可哈希性、集合的去重与集合运算，以及不可变性的实际含义。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>DataStructure</category></item><item><title>Python 变量和数据类型</title><link>https://blog.szkit99.com/zh-cn/articles/python-variables-and-data-types/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/python-variables-and-data-types/</guid><description>讲解 Python 变量的绑定机制与内置数据类型，说明可变与不可变类型的区别，以及初学阶段最容易踩的几个坑。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>Python</category><category>数据类型</category></item><item><title>如何分析一个热门 GitHub AI 项目</title><link>https://blog.szkit99.com/zh-cn/articles/how-to-read-a-trending-github-ai-project/</link><guid isPermaLink="true">https://blog.szkit99.com/zh-cn/articles/how-to-read-a-trending-github-ai-project/</guid><description>给出一套可复用的核查路径：确认官方仓库、读发布与许可、看维护活跃度、跑最小示例，最后才评估适用场景。</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>GitHub</category><category>AI</category><category>Open Source</category></item></channel></rss>