<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[gswjc的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/gswjc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; gswjc]]></copyright><item><title><![CDATA[程序员的下班充电清单：10件小事找回生活]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/163564525</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/163564525</guid><author>gswjc</author><pubDate>Fri, 07 Aug 2026 14:21:32 +0800</pubDate><description><![CDATA[下班的两个小时怎么过，直接决定你对生活的感受。以前我下班就瘫着刷手机，越刷越累。后来给自己定了一份"充电清单"，每天挑 2-3 件做，整个人的状态完全不一样了。你的下班时间在做什么？#程序员日常 #下班后 #生活记录 #自我提升。]]></description><category></category></item><item><title><![CDATA[深入理解 Node.js 事件循环：从 libuv 线程池到 epoll 系统调用]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/163559254</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/163559254</guid><author>gswjc</author><pubDate>Fri, 07 Aug 2026 11:14:33 +0800</pubDate><description><![CDATA[![Node.js 事件循环与 libuv 全景架构图](/uploads/1786000202553-dggynf.png) # 深入理解 Node.js 事件循环：从 libuv 线程池到 epoll 系统调用 > 配图：Node.js 事件循环全景架构图（调用栈 / libuv 线程池 / 内核事件机制） ## 引言 "事件循环"是 Node.js 最常被提及的概念之一，但大部分人的理解停留在「setTimeout 和 Promise 哪个先执行」的层面。本文将追到底层源码与操作系统层面，剖析 Nod]]></description><category></category></item><item><title><![CDATA[浏览器渲染管线全解：从 HTML 字节到 GPU 像素的完整旅程]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/163539162</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/163539162</guid><author>gswjc</author><pubDate>Thu, 06 Aug 2026 16:42:12 +0800</pubDate><description><![CDATA[这 200 毫秒背后发生了什么？] → [StartTag:] → ... 标记流 → 解析器消费 DOM 节点 → 解析器构建 ``` 词法分析器是一个状态机，状态包括： - `Data`：处理普通字符 - `Tag open`：遇到 `<` 时进入 - `Tag name`：解析标签名 - `Before attribute name`：准备解析属性 - `Attribute name`、`Attribute value`：解析属性 - `Self-closing start tag`：处理 `]]></description><category></category></item><item><title><![CDATA[Git 撤销与恢复全攻略：从后悔药到时间旅行]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/163443594</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/163443594</guid><author>gswjc</author><pubDate>Mon, 03 Aug 2026 15:09:57 +0800</pubDate><description><![CDATA[Git 会记录所有 HEAD 曾经指向过的位置： ```bash git reflog ``` 输出里每一行都有 `HEAD@{n}` 的索引，可以找回被删的分支或提交： ```bash git reset --hard HEAD@{5} # 回到 5 步之前 git checkout -b recover HEAD@{3} # 从历史位置拉出一个新分支 ``` reflog 只在本地保存，**一旦被 `git gc` 清理且超过过期时间，就真的找不回来了**——所以 `--hard` 之前，先想清楚。]]></description><category></category></item><item><title><![CDATA[深入理解 JavaScript 事件循环：宏任务、微任务与实战解析]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/163435657</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/163435657</guid><author>gswjc</author><pubDate>Mon, 03 Aug 2026 11:05:50 +0800</pubDate><description><![CDATA[ES6 规范中，异步任务分为两类： | 类型 | 示例 | 优先级 | |------|------|--------| | **宏任务（Macrotask）** | `setTimeout`、`setInterval`、`I/O`、UI 渲染 | 低 | | **微任务（Microtask）** | `Promise.then`、`MutationObserver`、`queueMicrotask` | 高 | 关键规则：**每次宏任务执行完毕后，引擎会清空所有微任务队列，然后才执行下一个宏任务。]]></description><category></category></item><item><title><![CDATA[使用自动化工具实现多平台内容分发]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/163353679</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/163353679</guid><author>gswjc</author><pubDate>Fri, 31 Jul 2026 08:47:21 +0800</pubDate><description><![CDATA[# 解决方案 我开发了一套自动化发布系统，可以一键将文章分发到多个平台。### 核心功能 - **统一编辑器**：在一个地方写完文章，选择目标平台 - **自动发布**：系统自动在后台完成登录、填写内容、发布的全流程 - **发布状态追踪**：实时查看每个平台的发布结果 ### 支持平台 目前支持7个主流技术内容平台： 1. 优快云 2. 掘金 3. 知乎 4. 公众号 5. 博客园 6. 小红书 7. 抖音 ## 总结 通过自动化发布工具，我可以将更多精力放在内容创作本身，而不是重复的发布操作上。]]></description><category></category></item><item><title><![CDATA[[VUE] Test with custom tags 1785397387699]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/163338101</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/163338101</guid><author>gswjc</author><pubDate>Thu, 30 Jul 2026 15:43:14 +0800</pubDate><description><![CDATA[Testing with Vue setData approach - 1785397388323]]></description><category></category></item><item><title><![CDATA[从零开始搭建个人博客：完整技术指南为什么需要自己的博客？在当]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/163322791</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/163322791</guid><author>gswjc</author><pubDate>Thu, 30 Jul 2026 09:04:44 +0800</pubDate><description><![CDATA[从零开始搭建个人博客：完整技术指南 为什么需要自己的博客？ 在当今信息爆炸的时代，拥有一个属于自己的技术博客不仅是记录知识的方式，更是打造个人品牌、沉淀技术积累的重要途径。 技术选型 前端框架 选择 React + Vite 作为前端技术栈。Vite 快速冷启动，React 组件化思想让 UI 维护简单。 后端服务 Node.js + Express 轻量级...]]></description><category></category></item><item><title><![CDATA[【无标题】]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/163306563</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/163306563</guid><author>gswjc</author><pubDate>Wed, 29 Jul 2026 15:24:35 +0800</pubDate><description><![CDATA[你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章，了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持，除了标准的Markdown编辑器功能，我们增加了如下几点新功能，帮助你用它写博客：撤销：Ctrl/Command + Z
重做：Ctrl/Command + Y
加粗：Ctrl/Command + B
斜体：Ctrl/Command + I
标题：Ctrl/Command + S]]></description><category></category></item><item><title><![CDATA[基于SVM的垃圾邮件分类系统实现]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/148387220</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/148387220</guid><author>gswjc</author><pubDate>Mon, 02 Jun 2025 21:44:02 +0800</pubDate><description><![CDATA[数据准备与预处理：收集并划分数据集。词汇表加载：构建高频词词汇表并过滤停用词。邮件预处理：分词和停用词过滤。特征向量生成：使用TF-IDF将文本转换为数值特征。SVM模型训练与评估：训练线性SVM并评估性能。SVM在文本分类任务中表现良好，尤其是在高维稀疏数据（如文本）上。通过调整参数（如核函数和惩罚系数C）可以进一步提升性能。]]></description><category></category></item><item><title><![CDATA[利用python实现逻辑回归模型]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/148073941</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/148073941</guid><author>gswjc</author><pubDate>Mon, 19 May 2025 20:40:58 +0800</pubDate><description><![CDATA[逻辑回归的损失函数通常使用交叉熵损失函数，公式如下： J(θ)=−m1​∑i=1m​[y(i)log(hθ​(x(i)))+(1−y(i))log(1−hθ​(x(i)))]它通过将线性回归的输出映射到[0,1]区间，使用Sigmoid函数将线性回归的结果转换为概率值，从而进行分类。逻辑回归的决策边界是hθ​(x)=1+e−θTx1​=0.5，即当 hθ​(x)=1+e−θTx1​=0.5 时，预测为正类，否则为负类。逻辑回归常用于二分类问题，如判断邮件是否为垃圾邮件、用户是否会购买产品等。]]></description><category></category></item><item><title><![CDATA[朴素贝叶斯分类器实现]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/147721484</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/147721484</guid><author>gswjc</author><pubDate>Mon, 05 May 2025 19:53:57 +0800</pubDate><description><![CDATA[朴素贝叶斯分类器简单易实现，对小规模数据集表现良好，但是朴素贝叶斯算法假设特征之间相互独立，这在实际应用中往往不成立，可能会影响分类效果。朴素贝叶斯分类器是一个有效的分类工具，尤其适用于特征独立性假设成立的场景。尽管在某些情况下可能需要对算法进行改进或选择其他更适合的算法，但它仍然是机器学习初学者和专业人士的重要工具之一。通过本次实验，我不仅学会了如何使用朴素贝叶斯进行分类，还学会了如何评估和解释分类结果，为今后解决类似问题打下了坚实的基础。]]></description><category></category></item><item><title><![CDATA[机器学习决策树]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/147402539</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/147402539</guid><author>gswjc</author><pubDate>Mon, 21 Apr 2025 21:17:45 +0800</pubDate><description><![CDATA[ID3算法使用信息增益作为特征选择的准则。信息增益衡量的是在知道某个特征的取值后，样本集合的不确定性减少的程度。信息增益越大，意味着使用该特征进行划分能使样本集合的纯度提升越大，该特征对于分类的重要性也就越高。不过信息增益倾向于选择取值较多的特征，因为取值多的特征会使划分后的子集更纯净，导致信息增益更大。CART算法分类任务中使用基尼指数，回归任务中使用均方误差。基尼指数表示从样本集合中随机抽取两个样本，其类别标记不一致的概率，基尼指数越小，样本集合的纯度越高。]]></description><category></category></item><item><title><![CDATA[KNN算法的分类模型评估]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/147052330</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/147052330</guid><author>gswjc</author><pubDate>Mon, 07 Apr 2025 20:46:05 +0800</pubDate><description><![CDATA[通过全面、准确的评估，我们可以调整模型的参数（如 K 值），优化模型结构，从而提高模型的实用性和可靠性。在学习工作中，我们应根据数据特点，选择合适的评估指标，全面、准确地评估 KNN 分类模型的性能，不断优化模型，使其更好地服务于实际需求。2：ROC曲线主要应用于测试集中的样本分布的较为均匀的情况，且当测试集中的正负样本的分布变化的时候，ROC曲线能够保持不变。3：实际问题中，正负样本数量往往很不均衡，P-R曲线的变化就会非常大，而ROC曲线则能够更加稳定地反映模型本身的好坏。]]></description><category></category></item><item><title><![CDATA[基于K近邻算法的分类器的实现]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/146487454</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/146487454</guid><author>gswjc</author><pubDate>Mon, 24 Mar 2025 22:44:18 +0800</pubDate><description><![CDATA[存在一个样本数据集合，也称作训练样本集，并且样本集中的每个数据都存在标签，即我们知道样本集中每一数据与所属分类的对应关系。计算复杂度高：在预测阶段，对于每一个待预测的样本，都需要计算它与训练集中所有样本的距离，然后找出最近的 K 个邻居。它只是将训练数据存储起来，在预测时直接使用，因此训练速度快，尤其适用于数据量较大的情况。该网站现在需要尽可能向海伦推荐她喜欢的人，需要我们设计一个分类器，根据用户的以上三种特征，识别出是否该向海伦推荐。（5）接收用户输入的三个特征值，对用户输入的样本进行分类并输出结果。]]></description><category></category></item><item><title><![CDATA[【无标题】]]></title><link>https://blog.youkuaiyun.com/gswjc/article/details/146163438</link><guid>https://blog.youkuaiyun.com/gswjc/article/details/146163438</guid><author>gswjc</author><pubDate>Mon, 10 Mar 2025 20:42:56 +0800</pubDate><description><![CDATA[下载地址：Anaconda | Built to Advance Open Source AI。点击网址进入下载页面，点击Free Download。新建变量，结合anaconda的实际安装目录来写。在系统设置中搜索高级系统设置。一.下载 Anaconda。然后选择 all user。二.安装Anaconda。]]></description><category></category></item></channel></rss>