<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dangkei 的专栏]]></title><description><![CDATA[程序员笔记]]></description><link>https://blog.youkuaiyun.com/dangkei</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dangkei]]></copyright><item><title><![CDATA[Wangler环境变量接口的工作原理]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/151087932</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/151087932</guid><author>dangkei</author><pubDate>Tue, 02 Sep 2025 00:16:41 +0800</pubDate><description><![CDATA[摘要：TypeScript接口Env定义了环境变量的结构和类型，但实际配置由Cloudflare Workers运行时注入。环境变量来源包括wrangler.toml、Cloudflare Dashboard和本地.dev.vars文件。该接口提供编译时类型检查，确保代码安全性和智能提示，而实际值在运行时由平台映射。这种设计分离了类型定义和实现，既保证了开发时的类型安全，又实现了生产环境的灵活配置。（149字）]]></description><category></category></item><item><title><![CDATA[详细分析CORS 工作原理]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/150940301</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/150940301</guid><author>dangkei</author><pubDate>Thu, 28 Aug 2025 00:31:14 +0800</pubDate><description><![CDATA[CORS 是一种安全机制，允许网页从不同的域（域名、协议、端口）请求资源。** credentials **：如果前端需要发送cookie，需要设置。预检通过后，浏览器才会发送真正的请求（GET、POST等）。** 本地开发 **：建议允许本地开发服务器的域名，方便调试。这段代码是确保您的前后端分离架构能够正常工作的关键！浏览器会阻止这种跨域请求，除非后端明确允许。当浏览器发送跨域请求时，会先发送一个。请求来询问服务器是否允许实际请求。** 生产环境配置 **：记得将。替换为您实际的前端域名。]]></description><category></category></item><item><title><![CDATA[【Wrangler（Cloudflare 的官方 CLI）和 npm/npx 的区别一次讲清】]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/150766356</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/150766356</guid><author>dangkei</author><pubDate>Mon, 25 Aug 2025 13:01:22 +0800</pubDate><description><![CDATA[Wrangler 是 Cloudflare 官方 CLI 工具，用于开发、部署和管理 Workers 及相关服务（KV、R2、D1 等）。支持本地开发调试（wrangler dev）、资源管理（KV/R2 操作）、密钥管理（secret put）和日志查看（tail）等功能。与 npm/npx 的区别在于：npm 用于安装管理依赖，npx 可直接运行未安装的包（如 npx wrangler@latest dev）。建议长期项目用 npm 安装 Wrangler，临时使用则用 npx 运行最新版本。]]></description><category></category></item><item><title><![CDATA[Cloudflare应用如何选择你的Worker 项目骨架]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/150615403</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/150615403</guid><author>dangkei</author><pubDate>Fri, 22 Aug 2025 17:57:09 +0800</pubDate><description><![CDATA[Cloudflare Worker模板主要针对不同应用场景提供预置项目结构。核心模板包括：1）Worker only（纯净版，适合学习或简单API）；2）Static site（静态网站托管）；3）SSR/full-stack（前后端一体化应用）；4）Durable Objects系列（实时状态管理）；5）Workflow/Queue（异步任务处理）；6）API starter（标准REST API开发）。对于后台API开发，推荐选择Worker only（灵活性高）或API starter（集成OpenA]]></description><category></category></item><item><title><![CDATA[如何创建一个Cloudfalare worker项目？]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/150614367</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/150614367</guid><author>dangkei</author><pubDate>Fri, 22 Aug 2025 17:37:55 +0800</pubDate><description><![CDATA[本文介绍了如何在Cloudflare Workers上创建免费的音乐管理后台服务。主要内容包括： 项目初始化：提供了4种Worker模板选择建议（从Hello World到完整应用），推荐根据需求选择合适模板。 技术配置：详细说明了D1数据库创建、R2存储绑定的配置方法，以及如何初始化数据库表结构。 开发建议： 推荐使用Hono框架简化API开发 演示了基础路由和请求处理实现 强调在免费额度内开发 免费资源说明： Workers：10万次/天 KV存储：100万次操作/天 D1数据库：1GB存储+500万行]]></description><category></category></item><item><title><![CDATA[ES6同步功能改造layui-table的显示]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/131602467</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/131602467</guid><author>dangkei</author><pubDate>Fri, 22 Aug 2025 17:29:14 +0800</pubDate><description><![CDATA[该代码实现了一个基于表格的数据展示功能，主要包含以下部分： 数据加载：通过loadTableData函数异步获取表格数据，支持分页参数和查询条件 表格渲染：使用treeTable组件渲染数据，包含标题、作者、创建日期等列，并提供预览、编辑、删除操作按钮 分页控制：通过laypage实现分页功能，支持页码跳转、每页显示数量调整 数据交互：当分页参数变化时自动重新加载数据并刷新表格 整个功能采用Promise处理异步操作，实现了表格数据的动态加载和分页展示。]]></description><category></category></item><item><title><![CDATA[用最通俗的方式帮你拆解一下 Cloudflare Worker 的原理和用法。]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/150614477</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/150614477</guid><author>dangkei</author><pubDate>Fri, 22 Aug 2025 17:27:10 +0800</pubDate><description><![CDATA[Cloudflare Worker是一个运行在边缘服务器上的小程序，相当于部署在全球各地的智能机器人。它拦截用户请求并执行JS/TS代码，可返回数据、访问存储服务（R2存大文件、KV存键值、D1存结构化数据）或转发请求。开发者无需维护服务器，就能构建低成本、自动扩展的后端服务。典型应用如歌曲API：Worker处理请求，从KV获取歌词，R2提供音频，D1管理用户数据，前端直接调用接口。这种架构实现了前后端分离的轻量级解决方案。]]></description><category></category></item><item><title><![CDATA[分享【GitHub自动化部署脚本配置】]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/150263532</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/150263532</guid><author>dangkei</author><pubDate>Tue, 12 Aug 2025 10:10:58 +0800</pubDate><description><![CDATA[摘要： 本文介绍如何配置Vite项目实现GitHub Actions自动部署至GitHub Pages。通过增强版vite.config.ts自动解析package.json中的homepage字段生成基准路径，配合.github/workflows/deploy.yml工作流文件实现提交代码后自动构建部署。关键步骤包括：1）配置Vite自动识别仓库名；2）设置GitHub Actions工作流监听main分支推送；3）确保package.json包含正确的homepage URL。最终只需git push]]></description><category></category></item><item><title><![CDATA[【分享-POI工具,Excel字段取值容错小工具】]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/144580164</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/144580164</guid><author>dangkei</author><pubDate>Thu, 19 Dec 2024 11:10:10 +0800</pubDate><description><![CDATA[当cell内的值是一个纯数字的时候, POI取到的还会是一个double类型的值. getStringCellValue(这个方法就会抛出类型不匹配的错误.)row.getCell(1).getStringCellValue();这里是很容易报错的. 因为excel里的列格式即使设置为文本。避免excel总是自动转换或者用户输入错误造成的导入数据错误.然后我们必须要从cell中取String类型就这样使用。在使用POI导出Excel数据的时候这样。取double类型就这样使用。]]></description><category></category></item><item><title><![CDATA[自然朗读的强大工具：Natural Reader 使用指南]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/142915781</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/142915781</guid><author>dangkei</author><pubDate>Mon, 14 Oct 2024 13:15:30 +0800</pubDate><description><![CDATA[Natural Reader 不仅支持短文本的快速转换，还能处理长文档，是你学习、工作和日常生活的有力工具。无论是为了提升阅读体验，还是希望将书籍、文档变成音频随时收听，Natural Reader 都能让你轻松实现。想亲自体验一下？点击这里下载并试用 Natural Reader 吧！Windows版本下载链接 https://en.freedownloadmanager.org/Windows-PC/NaturalReader-FREE.html#google_vignette。]]></description><category></category></item><item><title><![CDATA[so-vits-svcAI-人声训练工具-详细的安装指南和使用教程]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/142849970</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/142849970</guid><author>dangkei</author><pubDate>Fri, 11 Oct 2024 11:47:16 +0800</pubDate><description><![CDATA[推理时可以通过修改推理脚本中的参数来调整声线的特性和转换效果，如音色转换程度、音高变化等。]]></description><category></category></item><item><title><![CDATA[【Ajax提交Form中表单不跳转示例】]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/141781028</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/141781028</guid><author>dangkei</author><pubDate>Mon, 02 Sep 2024 09:30:00 +0800</pubDate><description><![CDATA[前端提交表单是经常遇到的需求. 点击表单提交执行Ajax提交表单内容, 但不跳转页面]]></description><category></category></item><item><title><![CDATA[定义自己的@RequestBody]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/131875826</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/131875826</guid><author>dangkei</author><pubDate>Sat, 07 Oct 2023 09:56:03 +0800</pubDate><description><![CDATA[升级 Spring WebMVC 版本到支持 @RequestBody 注解的版本，这样就可以正常使用 @RequestBody 注解了。但是实际项目中我们往往不能为了一个功能升级全局的spring版本所以只能考虑第二种方案。在 Spring WebMVC 版本不支持 @RequestBody 注解的情况下，你可以自己实现一个类似的注解来替代 @RequestBody。② 在控制器方法中使用 @MyRequestBody 注解来接收请求体内容。① 创建一个自定义注解，例如 @MyRequestBody。]]></description><category></category></item><item><title><![CDATA[JavaScript变量，对象和函数概念问答]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/131851072</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/131851072</guid><author>dangkei</author><pubDate>Fri, 21 Jul 2023 14:29:44 +0800</pubDate><description><![CDATA[Javascript入门容易，想成为高手难啊，初学者很容易上手开始开发程序， 但是使用久了会遇到很多迷惑的问题可能很久都无法参透，本人学习中曾经遇到过很多这种情况。现在把问题总结如下供初学者参考。]]></description><category></category></item><item><title><![CDATA[压力测试工具ab命令安装使用介绍]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/131780340</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/131780340</guid><author>dangkei</author><pubDate>Tue, 18 Jul 2023 09:55:34 +0800</pubDate><description><![CDATA[在Windows上使用ab命令需要安装Apache HTTP服务器的Windows版本，也就是Apache Lounge版本。ab（Apache Bench）是Apache自带的一个性能测试工具，用于模拟多个并发访问，测试服务器的性能。e. 在“编辑环境变量”窗口中添加“C:\Apache24\bin”路径，然后点击“确定”关闭窗口。这个命令将会向http://www.example.com/发送1000个请求，每次并发数量为10。a. 右键单击“计算机”图标，选择“属性”。c. 点击“环境变量”。]]></description><category></category></item><item><title><![CDATA[【Mybatis分页拦截器使用】]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/131204920</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/131204920</guid><author>dangkei</author><pubDate>Tue, 20 Jun 2023 13:43:39 +0800</pubDate><description><![CDATA[使用mybatis后，很多增删改查，编写一些crud之类的mapper.xml mapperDao.java的代码基本都形成套路的模式。这时使用mybatis-plus就是简化这一工作量的好方法。]]></description><category></category></item><item><title><![CDATA[【Spring配置元数据的三种方式】]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/131206348</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/131206348</guid><author>dangkei</author><pubDate>Tue, 20 Jun 2023 13:24:30 +0800</pubDate><description><![CDATA[Spring提供进一步典型化注解：@Component，@Service，@Repository和 @Controller。@Repository，@Service和@Controller是@Component针对更特定用例的专业化（分别在持久层，服务层和表示层）。因此，可以使用@Component，但是使用@Repository，@Service或者@Controller，能更好地适合于通过工具处理，或与切面进行关联，而且这些构造型注解在Spring框架的将来版本中还可以包含其他语义。]]></description><category></category></item><item><title><![CDATA[【awk基本用法】]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/131206256</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/131206256</guid><author>dangkei</author><pubDate>Mon, 19 Jun 2023 17:50:35 +0800</pubDate><description><![CDATA[默认awk是以空格和tab制表符分隔每一行文本。也可以使用-F参数指定字符分割每行文本。$后跟数字是awk把每一行字符串分割处理后的列表。先到这里， 有兴趣时候再继续发掘。]]></description><category></category></item><item><title><![CDATA[【journalctl查看日志命令详解】]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/131206439</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/131206439</guid><author>dangkei</author><pubDate>Mon, 19 Jun 2023 17:46:11 +0800</pubDate><description><![CDATA[verbose: 显示该条目的全部可用journal字段，包括通常被内部隐藏的字段。json-sse: JSON格式，经过打包以兼容server-sent事件。short-iso: 默认格式，强调显示ISO 8601挂钟时间戳。short-monotonic: 默认格式，提供普通时间戳。json-pretty: JSON格式，适合人类阅读习惯。short-precise: 默认格式，提供微秒级精度。short: 默认syslog类输出格式。json: 标准JSON，每行一个条目。]]></description><category></category></item><item><title><![CDATA[【public interface Comparator＜T＞ 接口用法】]]></title><link>https://blog.youkuaiyun.com/dangkei/article/details/131206685</link><guid>https://blog.youkuaiyun.com/dangkei/article/details/131206685</guid><author>dangkei</author><pubDate>Mon, 19 Jun 2023 17:45:03 +0800</pubDate><description><![CDATA[FunctionalInterface 这个注解表明该接口是一个函数式接口。一般而言，函数式接口(Functional Interface)就是一个有且仅有一个抽象方法，但是可以有多个非抽象方法的接口。@FunctionalInterface：标明一个接口是一个函数式接口。Java引入Lambda，改善了集合操作（引入Stream API），并可以利用到Lambda表达式的延后性。函数式接口可以使用lambda表达式调用。]]></description><category></category></item></channel></rss>