<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>记忆回溯 on 沐风的博客</title><link>https://blog.muwinds.com/categories/%E8%AE%B0%E5%BF%86%E5%9B%9E%E6%BA%AF/</link><description>Recent content in 记忆回溯 on 沐风的博客</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 01 Aug 2026 23:10:44 +0800</lastBuildDate><atom:link href="https://blog.muwinds.com/categories/%E8%AE%B0%E5%BF%86%E5%9B%9E%E6%BA%AF/index.xml" rel="self" type="application/rss+xml"/><item><title>Inagora 爬虫实习面试记录</title><link>https://blog.muwinds.com/archives/390/</link><pubDate>Sat, 01 Aug 2026 23:10:44 +0800</pubDate><guid>https://blog.muwinds.com/archives/390/</guid><description>&lt;p&gt;一面：&lt;/p&gt;
&lt;p&gt;面试问项目啥的直接跳过，说说问的技术问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;浏览器里除了会保存 cookie 信息以外还会保存什么其他信息吗？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这个问题我当时答得磕磕绊绊的，只说了有个 local storage 然后还会保存一些 css 这种信息用来提高多次加载的速度以外没回答出什么。正常的回答如下：&lt;/p&gt;</description></item><item><title>pi agent 不显示 xhigh 和 max 的解决方法</title><link>https://blog.muwinds.com/archives/389/</link><pubDate>Tue, 28 Jul 2026 20:52:04 +0800</pubDate><guid>https://blog.muwinds.com/archives/389/</guid><description>&lt;p&gt;最近开始使用 pi 的 coding agent，发现没法通过 shift+tab 来调整 effort level 到 xhigh 和 max，pi 的 settings 里也没有&lt;/p&gt;
&lt;p&gt;让 pi 自己解决，很快就好了&lt;/p&gt;
&lt;p&gt;直接把 thinkingLevelMap 放在模型对象下，并且在 max 键上也做映射（否则 max 级别不会出现）：&lt;/p&gt;</description></item><item><title>记忆回溯：C++ map</title><link>https://blog.muwinds.com/archives/360/</link><pubDate>Sun, 08 Mar 2026 22:32:55 +0800</pubDate><guid>https://blog.muwinds.com/archives/360/</guid><description>&lt;p&gt;&lt;code&gt;map&lt;/code&gt; 是有序键值对容器，它的元素的键是唯一的．搜索、移除和插入操作拥有对数复杂度．&lt;code&gt;map&lt;/code&gt; 通常实现为 红黑树（红黑树是一种自平衡的二叉搜索树．每个节点额外存储了一个 color 字段 (&amp;ldquo;RED&amp;rdquo; or &amp;ldquo;BLACK&amp;rdquo;)，用于确保树在插入和删除时保持平衡）．&lt;/p&gt;</description></item><item><title>实习的记忆记录5：Vibe Coding</title><link>https://blog.muwinds.com/archives/359/</link><pubDate>Fri, 06 Mar 2026 11:24:51 +0800</pubDate><guid>https://blog.muwinds.com/archives/359/</guid><description>&lt;p&gt;每天上班到单位打开电脑，除了 vscode 和 idea 以外就是打开claude code和codex（因为 mentor 也希望我能习惯用 AI 写代码），因此记录一些 vibe coding 需要注意的事儿。&lt;/p&gt;
&lt;p&gt;日常工作中的 vibe coding 其实就是 agentic engineering，让 LLM 决策和写代码的过程本身不可控，这时候就要参考线性规划问题的思路，也就是要给 LLM 上约束，接下来我将参考我的实习内容说说如何优化我们的 vibe coding&lt;/p&gt;</description></item><item><title>实习的记忆记录4：git stash</title><link>https://blog.muwinds.com/archives/358/</link><pubDate>Thu, 05 Mar 2026 17:37:05 +0800</pubDate><guid>https://blog.muwinds.com/archives/358/</guid><description>&lt;p&gt;由于有写了一半但是又得有同时修另外一个分支代码的需求，所以就得用stash了&lt;/p&gt;
&lt;p&gt;当你执行 &lt;code&gt;git stash&lt;/code&gt; 时，Git 会做两件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;保存&lt;/strong&gt;：将你当前**工作区（Working Directory）&lt;strong&gt;和&lt;/strong&gt;暂存区（Staging Area）**中所有已跟踪文件的修改保存到一个栈（Stack）中。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;还原&lt;/strong&gt;：将你的工作目录还原到上一次提交（&lt;code&gt;HEAD&lt;/code&gt;）时的干净状态。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;此时，你的工作区是干净的，你可以随意切换分支。&lt;/p&gt;</description></item><item><title>实习的记忆记录3：Windows 配置 Claude Code 解决 settings.json 不生效</title><link>https://blog.muwinds.com/archives/355/</link><pubDate>Tue, 24 Feb 2026 13:52:33 +0800</pubDate><guid>https://blog.muwinds.com/archives/355/</guid><description>&lt;p&gt;转载自：&lt;a href="https://frytea.com/archives/1616/"&gt;https://frytea.com/archives/1616/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;默认情况下 Windows 安装的 &lt;code&gt;Claude Code&lt;/code&gt; 会从这个位置读取配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;C:\Users\&amp;lt;YOUR_NAME&amp;gt;\.claude
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其他系统则类似的找到 &lt;code&gt;~/.claude&lt;/code&gt; 路径。&lt;/p&gt;
&lt;p&gt;官方流程在安装结束后就完成了，可以直接登录使用。如果需要修改配置将 &lt;code&gt;Claude Code&lt;/code&gt; 接入第三方 API，就需要修改这里的 &lt;code&gt;settings.json&lt;/code&gt; 配置文件，可以使用 &lt;code&gt;CC-Switch&lt;/code&gt; 或是手动编写，但是修改后会发现不生效。&lt;/p&gt;</description></item><item><title>实习的记忆记录 2：使用 Git 提交 PR</title><link>https://blog.muwinds.com/archives/353/</link><pubDate>Mon, 16 Feb 2026 11:15:32 +0800</pubDate><guid>https://blog.muwinds.com/archives/353/</guid><description>&lt;p&gt;以往用 Github 也是差不多这个流程，但是总是忘……&lt;/p&gt;
&lt;p&gt;正常的流程：先 Fork 然后 Clone 到本地，做修改后提交 Commit 再 Push 到自己的仓库，确保没冲突后再发起 Pull Request。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Fork 仓库到自己的 GitHub&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/你的用户名/仓库.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; 仓库
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 添加上游仓库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git remote add upstream https://github.com/原仓库地址.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 同步最新代码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git fetch upstream
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git rebase upstream/main
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git checkout -b feat/add-new-component &lt;span class="c1"&gt;# 创建描述性的分支名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git add 具体文件 &lt;span class="c1"&gt;# 避免 git add .&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git commit -m &lt;span class="s2"&gt;&amp;#34;feat: 添加登录表单验证&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 推送与创建 PR&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git push origin feat/add-new-component
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;注意：如果要开新的功能，就自己再开新的分支并同步上游代码然后再去改，这个分支相关的 PR 被合并后就可以删掉这个分支了&lt;/p&gt;</description></item><item><title>实习的记忆记录 1：Docker Compose</title><link>https://blog.muwinds.com/archives/352/</link><pubDate>Sat, 14 Feb 2026 23:47:51 +0800</pubDate><guid>https://blog.muwinds.com/archives/352/</guid><description>&lt;p&gt;正式开始接触项目开发的第一天就是把项目从公司内网的机器上迁移到阿里云的公网机器上，组长让我写 Dockerfile 和 Docker Compose 开始折腾 CI/CD Pipeline 了。&lt;/p&gt;
&lt;p&gt;Dockerfile好写，毕竟上学的时候写过，但是我用 Docker 一般也是以调试为主，很少有需要编排的需求，也就没写过 Docker Compose，所以我就要开始折腾 Docker Compose 相关的内容了。&lt;/p&gt;</description></item><item><title>ubuntu 卸载CUDA Toolkit</title><link>https://blog.muwinds.com/archives/351/</link><pubDate>Fri, 13 Feb 2026 23:27:53 +0800</pubDate><guid>https://blog.muwinds.com/archives/351/</guid><description>&lt;p&gt;转自CSDN,&lt;a href="https://blog.csdn.net/qq_39918087/article/details/143957089"&gt;https://blog.csdn.net/qq_39918087/article/details/143957089&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一票只知道教怎么装，现在nv都提供runfile了，复制一下指令喝杯水的工夫就装上去了还用你教啊？倒是卸载就没几个人出正经教程的。&lt;/p&gt;
&lt;p&gt;1、To remove CUDA Toolkit:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt-get --purge remove &lt;span class="s2"&gt;&amp;#34;*cuda*&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*cublas*&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*cufft*&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*cufile*&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*curand*&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;*cusolver*&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*cusparse*&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*gds-tools*&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*npp*&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*nvjpeg*&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;nsight*&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*nvvm*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2.检查以下，到/usr/local/ 查看是否还有cuda相关文件夹。&lt;/p&gt;</description></item><item><title>中航信（航旅纵横）：运维开发面试记录</title><link>https://blog.muwinds.com/archives/316/</link><pubDate>Tue, 06 Jan 2026 00:16:15 +0800</pubDate><guid>https://blog.muwinds.com/archives/316/</guid><description>&lt;p&gt;第一次遇到技术面，由于我问题没答上来几道并且时间排不开，所以无疾而终……&lt;/p&gt;
&lt;p&gt;这个岗位的背景：会用Linux进行定位和调试，需要用Python+Django技术栈编写一些简单的运维工具。&lt;/p&gt;</description></item><item><title>Ubuntu安装kali源</title><link>https://blog.muwinds.com/archives/313/</link><pubDate>Fri, 31 Oct 2025 19:00:41 +0800</pubDate><guid>https://blog.muwinds.com/archives/313/</guid><description>&lt;p&gt;这是个很奇怪的需求，但是还是有&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;deb http://http.kali.org/kali kali-rolling main contrib non-free&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee /etc/apt/sources.list.d/kali.list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wget -q -O - https://archive.kali.org/archive-key.asc &lt;span class="p"&gt;|&lt;/span&gt; sudo apt-key add -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;当然了，也有移除kali源的&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo rm /etc/apt/sources.list.d/kali.list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Accuracy、Recall、Precission、F1 Score分别是什么？</title><link>https://blog.muwinds.com/archives/280/</link><pubDate>Sun, 28 Sep 2025 03:12:45 +0800</pubDate><guid>https://blog.muwinds.com/archives/280/</guid><description>&lt;p&gt;无论是打数模还是单纯的搞机器学习，都需要对最后训练结果进行分析，这时候常用的四个指标：准确率、召回率、精确率、F1分数。&lt;/p&gt;
&lt;p&gt;作为指标，一定会涉及几个方面&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用来描述什么&lt;/li&gt;
&lt;li&gt;如何计算的&lt;/li&gt;
&lt;li&gt;指标的意义是什么&lt;br&gt;
那为了计算这几个指标，我们需要了解什么是TP、TN、FP、FN&lt;br&gt;
用识别苹果举例&lt;br&gt;
假设我们有100张照片：&lt;br&gt;
其中有40张是真的苹果照片称之为正样本。&lt;br&gt;
另外60张不是苹果照片称之为负样本。&lt;br&gt;
模型预测可能有四种情况：&lt;/li&gt;
&lt;li&gt;预测是苹果，实际是苹果，TruePositive (TP)&lt;/li&gt;
&lt;li&gt;预测是苹果，实际不是苹果，FalsePositive (FP)&lt;/li&gt;
&lt;li&gt;预测不是苹果，实际是苹果，FalseNegative (FN)&lt;/li&gt;
&lt;li&gt;预测不是苹果，实际也不是苹果，TrueNegative (TN)&lt;br&gt;
True or False =有没有猜对&lt;br&gt;
Positive or Negative 表示猜的结果 是不是正类，是苹果为正类。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;假设：&lt;/p&gt;</description></item><item><title>在 Git Bash 中设置 Conda</title><link>https://blog.muwinds.com/archives/277/</link><pubDate>Thu, 25 Sep 2025 21:46:08 +0800</pubDate><guid>https://blog.muwinds.com/archives/277/</guid><description>&lt;p&gt;下面的内容转载自&lt;a href="https://discuss.codecademy.com/t/setting-up-conda-in-git-bash/534473"&gt;https://discuss.codecademy.com/t/setting-up-conda-in-git-bash/534473&lt;/a&gt;，本人测试效果相当好&lt;/p&gt;
&lt;h4 id="a-open-git-bash-a打开-git-bash"&gt;A) Open Git Bash A）打开 Git Bash&lt;/h4&gt;
&lt;p&gt;Now that you have an idea of how &lt;code&gt;conda&lt;/code&gt; should look, go ahead and open Git Bash. As you can see, there is nothing on the prompt to indicate whether you are inside an active &lt;code&gt;conda&lt;/code&gt; environment or not. Unfortunately, it’s not quite that simple. If you type &lt;code&gt;conda list&lt;/code&gt; in Git Bash, you will receive an error that looks something like this:&lt;br&gt;
现在你已经了解了 &lt;code&gt;conda&lt;/code&gt; 应该是什么样子，继续打开 Git Bash。正如你所见，提示符上没有任何内容表明你是否处于活动的 &lt;code&gt;conda&lt;/code&gt; 环境中。不幸的是，事情并没有那么简单。如果你在 Git Bash 中输入 &lt;code&gt;conda list&lt;/code&gt; ，你会收到类似这样的错误：&lt;/p&gt;</description></item><item><title>体系基础部分整理</title><link>https://blog.muwinds.com/archives/268/</link><pubDate>Wed, 24 Sep 2025 23:56:00 +0800</pubDate><guid>https://blog.muwinds.com/archives/268/</guid><description>&lt;h2 id="a并行计算与并行结构"&gt;A.并行计算与并行结构&lt;/h2&gt;
&lt;p&gt;在所有四类计算机设计中，多级并行化现在是主要动力，功耗和成本是主要限制因素。在应用中基本上有两种并行性：&lt;/p&gt;
&lt;p&gt;1.数据级并行（DLP），产生的原因是有许多数据项可以同时操作。&lt;/p&gt;</description></item><item><title>我的PowerShell配置方法</title><link>https://blog.muwinds.com/archives/267/</link><pubDate>Sun, 21 Sep 2025 16:05:54 +0800</pubDate><guid>https://blog.muwinds.com/archives/267/</guid><description>&lt;p&gt;这里把我的powershell的配置方法做一个整理，我的系统环境是Windows10 22H2&lt;/p&gt;
&lt;p&gt;1.关闭ps脚本安全策略&lt;/p&gt;
&lt;p&gt;因为我主用conda做环境配置（里面的带的库配置还是很全的，用着好使），powershell默认的配置是限制conda的ps脚本运行的，所以得关掉这个配置。&lt;/p&gt;</description></item><item><title>删除某网盘附带的“智能看图”</title><link>https://blog.muwinds.com/archives/265/</link><pubDate>Sun, 31 Aug 2025 09:28:05 +0800</pubDate><guid>https://blog.muwinds.com/archives/265/</guid><description>&lt;p&gt;转载自&lt;a href="https://xzonn.top/posts/Remove-Intelligent-Image-Viewer.html"&gt;https://xzonn.top/posts/Remove-Intelligent-Image-Viewer.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;某网盘更新到7.58版本之后附带了一个“智能看图”软件，关联了一堆常见图片格式。这个软件的名字前面加了个空格，所以在默认程序列表里很靠前。目前该网盘里没有删除这个功能的设置，所以需要手动编辑一下注册表，先按 &lt;code&gt;Win&lt;/code&gt; + &lt;code&gt;R&lt;/code&gt; 打开“运行”窗口，输入&lt;code&gt;regedit&lt;/code&gt;并回车，打开注册表编辑器，&lt;br&gt;
然后删除以下项目：&lt;/p&gt;</description></item><item><title>Next.js+CDN首页无法清除缓存问题</title><link>https://blog.muwinds.com/archives/261/</link><pubDate>Tue, 15 Jul 2025 05:10:57 +0800</pubDate><guid>https://blog.muwinds.com/archives/261/</guid><description>&lt;p&gt;问题如题，我的CDN为Cloudflare，即便是去Cloudflare控制台清除缓存也无济于事&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.muwinds.com/wp-content/uploads/2025/07/image-1.png"&gt;&lt;img loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2025/07/image-1-1024x382.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;百度和谷歌也没什么有效的解决方案，最后有朋友提醒我去把反向代理层也就是Nginx的缓存清除，问题解决。&lt;/p&gt;</description></item><item><title>记录一波Android studio安装报错缺失文件</title><link>https://blog.muwinds.com/archives/258/</link><pubDate>Sat, 12 Jul 2025 23:56:15 +0800</pubDate><guid>https://blog.muwinds.com/archives/258/</guid><description>&lt;p&gt;&lt;a href="https://blog.muwinds.com/wp-content/uploads/2025/07/image.png"&gt;&lt;img loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2025/07/image.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在某些环境安装AS的时候，比如网吧安装会有此类弹窗提示说；当前aehd.sys无法复制&lt;/p&gt;
&lt;p&gt;这个原因的是权限不足导致安装as错误&lt;/p&gt;
&lt;p&gt;解决方法：下载或者弹窗的浏览按钮复制aehd.sys到系统盘路径的：C:\Windows\System32\drivers&lt;/p&gt;</description></item><item><title>理解PID控制算法</title><link>https://blog.muwinds.com/archives/245/</link><pubDate>Sun, 29 Jun 2025 01:39:52 +0800</pubDate><guid>https://blog.muwinds.com/archives/245/</guid><description>&lt;p&gt;PID控制算法，可以将其看作是一个 &lt;strong&gt;“不断尝试缩小目标与现状之间差距”的智能调节器&lt;/strong&gt;。它广泛应用于工业控制（如温度、压力、流量控制）、机器人、自动驾驶、无人机稳定系统等需要精确调节物理量的场景。&lt;/p&gt;</description></item><item><title>数学建模笔记-最优化问题</title><link>https://blog.muwinds.com/archives/145/</link><pubDate>Sat, 28 Jun 2025 12:51:56 +0800</pubDate><guid>https://blog.muwinds.com/archives/145/</guid><description>&lt;h2 id="一基本概念"&gt;一、基本概念&lt;/h2&gt;
&lt;p&gt;最优化：首先是一种理念，其次才是一种方法，它所追求的是一种“至善”之道，一种追求卓越的精神。&lt;br&gt;
例子：小明同学，烧一壶水要8分钟，灌开水要1分钟，取牛奶和报纸要5分钟，整理书包要6分钟，为了尽快做完这些事，怎样安排才能使时间最少？最少需要几分钟？&lt;/p&gt;</description></item><item><title>线性回归&amp;Logistic Model</title><link>https://blog.muwinds.com/archives/210/</link><pubDate>Tue, 17 Jun 2025 12:18:39 +0800</pubDate><guid>https://blog.muwinds.com/archives/210/</guid><description>&lt;p&gt;&lt;strong&gt;线性回归模型&lt;/strong&gt;，它是统计学和机器学习中最基础、最核心的预测模型之一，主要用于解决&lt;strong&gt;回归问题&lt;/strong&gt;，即预测一个&lt;strong&gt;连续的数值型输出&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="核心思想建立输入与输出之间的线性关系"&gt;核心思想：建立“输入”与“输出”之间的线性关系&lt;/h3&gt;
&lt;p&gt;线性回归的核心目标非常直观：&lt;strong&gt;假设并建模目标变量 &lt;code&gt;y&lt;/code&gt;（因变量、输出）与一个或多个预测变量 &lt;code&gt;x&lt;/code&gt;（自变量、特征、输入）之间存在的线性关系。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>PowerShell进去到conda的虚拟环境base特别慢（实现conda环境懒加载）</title><link>https://blog.muwinds.com/archives/208/</link><pubDate>Sun, 15 Jun 2025 15:43:20 +0800</pubDate><guid>https://blog.muwinds.com/archives/208/</guid><description>&lt;ol&gt;
&lt;li&gt;打开powershell输入命令，找到powershell配置文件&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$PROFILE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;有conda init加载导致powershell很慢的时候，配置文件如下：&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#region conda initialize&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# !! Contents within this block are managed by &amp;#39;conda init&amp;#39; !!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;If&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Test-Path&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;D:\tool\Anaconda\Scripts\conda.exe&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;(&amp;amp;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;path\to\conda.exe&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;shell.powershell&amp;#34;&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;hook&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Out-String&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="p"&gt;?{&lt;/span&gt;&lt;span class="nv"&gt;$_&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;Invoke-Expression&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;#endregion&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;实现conda环境懒加载，只需把内容换成如下即可（此后执行&lt;code&gt;conda activate 环境名&lt;/code&gt;时会自动初始化conda，无需预先加载）&lt;/p&gt;</description></item><item><title>KMP算法</title><link>https://blog.muwinds.com/archives/207/</link><pubDate>Sun, 15 Jun 2025 11:51:05 +0800</pubDate><guid>https://blog.muwinds.com/archives/207/</guid><description>&lt;p&gt;KMP算法（Knuth-Morris-Pratt）是一种高效的字符串匹配算法，它通过避免回溯主串指针来实现O(n+m)的时间复杂度。要深入理解KMP算法，需要掌握其核心思想——&lt;strong&gt;部分匹配表（Pi数组）&lt;strong&gt;和&lt;/strong&gt;匹配过程中的智能回退机制&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>What is hypervisor?</title><link>https://blog.muwinds.com/archives/202/</link><pubDate>Sat, 24 May 2025 21:24:43 +0800</pubDate><guid>https://blog.muwinds.com/archives/202/</guid><description>&lt;h2 id="what-are-hypervisors"&gt;What are hypervisors?&lt;/h2&gt;
&lt;p&gt;A hypervisor is a software that enables multiple &lt;a href="https://www.ibm.com/think/topics/virtual-machines"&gt;virtual machines (VMs)&lt;/a&gt;—each with its own operating system (OS)—to run on one physical server. The hypervisor pools and allocates physical computing resources as needed by the VM, enabling efficiency, flexibility and scalability&lt;/p&gt;
&lt;p&gt;Sometimes called a virtual machine monitor (VMM), the hypervisor manages VMs as they run alongside each other. It separates VMs from each other logically, assigning each its own slice of the underlying computing power, memory and storage. This prevents the VMs from interfering with each other. For example, if one OS suffers a crash or a security compromise, the others survive.&lt;/p&gt;</description></item><item><title>双指针</title><link>https://blog.muwinds.com/archives/152/</link><pubDate>Sun, 04 May 2025 15:18:24 +0800</pubDate><guid>https://blog.muwinds.com/archives/152/</guid><description>&lt;p&gt;双指针顾名思义，就是同时使用两个指针，在序列、链表结构上指向的是位置，在树、图结构中指向的是节点，通过或同向移动，或相向移动来维护、统计信息。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://leetcode.cn/problems/subarray-product-less-than-k/"&gt;713. 乘积小于 K 的子数组&lt;/a&gt;&lt;/p&gt;</description></item><item><title>VS Code+platformio配置ESP32-S3-N16R8（8MB PSRAM + 16MB FLASH）工程</title><link>https://blog.muwinds.com/archives/148/</link><pubDate>Thu, 01 May 2025 07:41:37 +0800</pubDate><guid>https://blog.muwinds.com/archives/148/</guid><description>&lt;h2 id="一背景"&gt;一、背景&lt;/h2&gt;
&lt;p&gt;platformio现有的板子库里面没有ESP32-S3-N16R8（8MB PSRAM + 16MB FLASH）的开发板模型，直接强行套用，要么就是解锁不了8MB PSRAM，要么就下载后运行不起来。但是Arduino可以正常解锁。&lt;/p&gt;</description></item><item><title>位运算记录</title><link>https://blog.muwinds.com/archives/143/</link><pubDate>Mon, 14 Apr 2025 13:40:20 +0800</pubDate><guid>https://blog.muwinds.com/archives/143/</guid><description>&lt;p&gt;在现代计算机中，所有数据都以二进制形式存储，即 0 和 1 两种状态。计算机对二进制数据进行的运算（如加、减、乘、除）被称为位运算，即对二进制数的每一位进行操作的运算。&lt;/p&gt;
&lt;p&gt;为了更好地理解位运算，举个简单的例子：假设我们有如下代码进行两个整数的加法运算：&lt;/p&gt;</description></item><item><title>stringstream用法整理</title><link>https://blog.muwinds.com/archives/128/</link><pubDate>Wed, 09 Apr 2025 20:06:17 +0800</pubDate><guid>https://blog.muwinds.com/archives/128/</guid><description>&lt;p&gt;一部分转载自巴哈姆特：&lt;a href="https://home.gamer.com.tw/creationDetail.php?sn=4114818"&gt;https://home.gamer.com.tw/creationDetail.php?sn=4114818&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;stringstream是一個C++底下的類別，專門拿來讀取字串並且處理，很多時候拿來做字串的切割，或者是int跟string類別之間的轉換。&lt;/p&gt;</description></item><item><title>接入Cloudflare的网站发现部分css和js加载不出来的解决方法</title><link>https://blog.muwinds.com/archives/127/</link><pubDate>Wed, 09 Apr 2025 20:05:07 +0800</pubDate><guid>https://blog.muwinds.com/archives/127/</guid><description>&lt;p&gt;问题如题，本博客也有过这个问题&lt;/p&gt;
&lt;p&gt;按f12发现这部分交由static.cloudflareinsight.com/beacon.min.js进行加载，现代的浏览器都有严格cors的策略了，咋可能加载的出来……&lt;/p&gt;</description></item><item><title>惠普m1216打印机无法安装驱动无法打印</title><link>https://blog.muwinds.com/archives/126/</link><pubDate>Wed, 09 Apr 2025 20:04:41 +0800</pubDate><guid>https://blog.muwinds.com/archives/126/</guid><description>&lt;p&gt;给打印机插到打印的电脑上，开始安装驱动，卡在这里：&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2025/03/202503221742616376130990.png"&gt;&lt;/p&gt;
&lt;p&gt;在此之前我插到自己的电脑装过驱动试过，卡个2分钟也就装上了， 我也就没管出去吃饭了，结果吃完一小时再回来还是这个鬼窗口，我就觉得事情不对了。&lt;/p&gt;</description></item><item><title>Windows 11睡眠自动关机解决</title><link>https://blog.muwinds.com/archives/125/</link><pubDate>Wed, 09 Apr 2025 20:04:09 +0800</pubDate><guid>https://blog.muwinds.com/archives/125/</guid><description>&lt;p&gt;Windows11改变了睡眠的几个状态，取消了hibernate机制，但没有针对hybrid sleep机制作出改变，所以导致睡眠久了卡在hibernate（以及一些各种古怪问题）上导致内核崩溃自动关机&lt;/p&gt;</description></item><item><title>git忽略文件相关问题</title><link>https://blog.muwinds.com/archives/124/</link><pubDate>Wed, 09 Apr 2025 20:03:20 +0800</pubDate><guid>https://blog.muwinds.com/archives/124/</guid><description>&lt;p&gt;vscode运行python脚本的时候会出现很多__pycache__文件夹，内含.pyc文件，上传git时这些文件没必要传上去，所以需要在gitignore中加入规则。&lt;/p&gt;</description></item><item><title>记录模板题：图论-树：最近公共祖先（LCA）</title><link>https://blog.muwinds.com/archives/123/</link><pubDate>Wed, 09 Apr 2025 20:02:53 +0800</pubDate><guid>https://blog.muwinds.com/archives/123/</guid><description>&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2025/02/202502091739100275557208.png"&gt;&lt;/p&gt;
&lt;p&gt;模板题：洛谷p3379&lt;/p&gt;
&lt;h2 id="题目描述"&gt;题目描述&lt;/h2&gt;
&lt;p&gt;如题，给定一棵有根多叉树，请求出指定两个点直接最近的公共祖先。&lt;/p&gt;
&lt;h2 id="输入格式"&gt;输入格式&lt;/h2&gt;
&lt;p&gt;第一行包含三个正整数 N,M,S&lt;em&gt;N&lt;/em&gt;,&lt;em&gt;M&lt;/em&gt;,&lt;em&gt;S&lt;/em&gt;，分别表示树的结点个数、询问的个数和树根结点的序号。&lt;/p&gt;</description></item><item><title>Windows平台Python aiodns模块异步代码无法执行</title><link>https://blog.muwinds.com/archives/122/</link><pubDate>Wed, 09 Apr 2025 20:01:17 +0800</pubDate><guid>https://blog.muwinds.com/archives/122/</guid><description>&lt;p&gt;首先放一下原先的异步函数代码：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@staticmethod&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;check_subdomain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;异步子域名枚举&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;resolver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;aiodns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DNSResolver&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;found&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nb"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;app/1knames.txt&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;subdomains&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;FileNotFoundError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Subdomain dictionary not found&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;False&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;semaphore&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Semaphore&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 限制并发量&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;semaphore&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;full_domain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;full_domain&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;a_records&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;resolver&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;full_domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;A&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;a_records&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;found&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;full_domain&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;aiodns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DNSError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;pass&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;cname_records&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;resolver&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;full_domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;CNAME&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;cname_records&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;found&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;full_domain&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;aiodns&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DNSError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;pass&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;batch_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;subdomains&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;batch_size&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;batch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;subdomains&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;batch_size&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tasks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;sub&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;batch&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;asyncio&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gather&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;tasks&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;assets_table&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AssetsTable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;subdomain&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;found&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;assets_info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;AssetsInfo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;assets_table&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;assets_info&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update_host_info&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;True&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;乍一看没啥问题，但是如果在windows下跑起来就会发现啥输出都没有，如果一步步调试就会神奇的发现卡在第一行初始化&lt;/p&gt;</description></item><item><title>题解：蓝桥例题3260最大区间和</title><link>https://blog.muwinds.com/archives/121/</link><pubDate>Wed, 09 Apr 2025 19:59:45 +0800</pubDate><guid>https://blog.muwinds.com/archives/121/</guid><description>&lt;p&gt;先发题目内容：&lt;/p&gt;
&lt;h3 id="问题描述"&gt;问题描述&lt;/h3&gt;
&lt;p&gt;小明是一名勇敢的冒险家，他在一次探险途中发现了一组神秘的宝石，这些宝石的价值都不同。但是，他发现这些宝石会随着时间的推移逐渐失去价值，因此他必须在规定的次数内对它们进行处理。&lt;/p&gt;</description></item><item><title>前缀和 &amp; 差分</title><link>https://blog.muwinds.com/archives/120/</link><pubDate>Wed, 09 Apr 2025 19:58:57 +0800</pubDate><guid>https://blog.muwinds.com/archives/120/</guid><description>&lt;p&gt;C++ 标准库中实现了前缀和函数 std::partial_sum，定义于头文件 &lt;numeric&gt; 中。&lt;/p&gt;
&lt;p&gt;一个经典的例题：&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2025/02/202502051738737737464851.png"&gt;&lt;/p&gt;
&lt;p&gt;暴力当然直接TLE&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;//这段代码是能拿50分的，大规模会有超时问题&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;//没有很好的利用前缀和&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="nx"&gt;include&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;bits&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;stdc&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;using&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;namespace&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;std&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cin&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;vector&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;cin&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push_back&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cin&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;m&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cin&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;l&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="o"&gt;+=&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cout&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;将上面代码的加起来的过程给优化一下，在输入阶段就将数组改写成前缀和的形式，输出的时候只要s[r]-s[l-1]就可以了&lt;/p&gt;</description></item><item><title>在vscode MinGW GCC C++编译环境下使用httplib.h编译报错</title><link>https://blog.muwinds.com/archives/119/</link><pubDate>Wed, 09 Apr 2025 19:57:51 +0800</pubDate><guid>https://blog.muwinds.com/archives/119/</guid><description>&lt;p&gt;来源：&lt;a href="https://www.zkea.net/blog/detail/vscode-mingw-gcc-httplib.html"&gt;在vscode MinGW GCC C++编译环境下使用httplib.h发送http请求 (zkea.net)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在vscode MinGW GCC C++编译环境下使用&lt;a href="https://github.com/yhirose/cpp-httplib"&gt;httplib.h&lt;/a&gt;，在编译时报错：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;undefined reference to `__imp_closesocket'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;cpp-httplib是C++的一个http类库，使用它可以很方便的实现http请求，但在vs code环境下编译会报错，原因是因为没有引用&lt;code&gt;ws2_32.lib&lt;/code&gt;，在visual studio环境下，会自动引用这个库：&lt;/p&gt;</description></item><item><title>Adobe系列软件出现This unlicensed Photoshop app has been disabled.禁止使用</title><link>https://blog.muwinds.com/archives/118/</link><pubDate>Wed, 09 Apr 2025 19:57:18 +0800</pubDate><guid>https://blog.muwinds.com/archives/118/</guid><description>&lt;p&gt;This unlicensed Photoshop app has been disabled.&lt;/p&gt;
&lt;p&gt;最近adobe好像更新了什么，大面积出现未经授权许可禁止使用。（这两年的官方盗版被一网打尽了）&lt;/p&gt;
&lt;p&gt;解决方法&lt;/p&gt;
&lt;p&gt;原理：禁止Adobe启动时候的联网审查→禁止Adobe联网&lt;/p&gt;</description></item><item><title>go gin框架实现限流</title><link>https://blog.muwinds.com/archives/117/</link><pubDate>Wed, 09 Apr 2025 19:56:49 +0800</pubDate><guid>https://blog.muwinds.com/archives/117/</guid><description>&lt;p&gt;接手一个项目，甲方希望在项目中实现指定用户的限流，这需要我们在go项目中实现一个限流器。&lt;/p&gt;
&lt;p&gt;限流器的实现有很多经典的思想，不过令牌桶的思路简单，运行效率高，它是以恒定的速度往木桶里加入令牌，木桶满了则不再加入令牌。&lt;/p&gt;</description></item><item><title>PKU HPCGame 2nd WriteUp</title><link>https://blog.muwinds.com/archives/113/</link><pubDate>Wed, 09 Apr 2025 19:50:05 +0800</pubDate><guid>https://blog.muwinds.com/archives/113/</guid><description>&lt;h3 id="1签到题"&gt;1.签到题&lt;/h3&gt;
&lt;h3 id="答案的第一位是"&gt;&lt;em&gt;答案的第一位是**1&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;second number is eight&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;*叁：*&lt;em&gt;9&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;最后一个是八&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;第一题：1 8 9 8（北京大学的创校时间xD），这读完都知道在哪吧……&lt;/p&gt;
&lt;h3 id="2小北问答"&gt;2.小北问答&lt;/h3&gt;
&lt;p&gt;1某厂的CPU采用了大小核架构，大核有超线程，小核没有超线程。已知物理核心数为12，逻辑核心数为16，大核数量为____，小核数量为____。&lt;/p&gt;</description></item><item><title>数据结构——堆（Heap）大根堆、小根堆</title><link>https://blog.muwinds.com/archives/111/</link><pubDate>Wed, 09 Apr 2025 19:39:56 +0800</pubDate><guid>https://blog.muwinds.com/archives/111/</guid><description>&lt;p&gt;转载：&lt;a href="https://www.cnblogs.com/wangchaowei/p/8288216.html"&gt;https://www.cnblogs.com/wangchaowei/p/8288216.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Heap是一种数据结构具有以下的特点：&lt;/p&gt;
&lt;p&gt;1）完全二叉树；&lt;/p&gt;
&lt;p&gt;2）heap中存储的值是偏序；&lt;/p&gt;
&lt;p&gt;Min-heap: 父节点的值小于或等于子节点的值；&lt;/p&gt;
&lt;p&gt;Max-heap: 父节点的值大于或等于子节点的值；&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2025/01/202501311738323816689956.png"&gt;&lt;/p&gt;
&lt;h3 id="堆的存储"&gt;堆的存储：&lt;/h3&gt;
&lt;p&gt;一般都用数组来表示堆，i结点的父结点下标就为(i–1)/2。它的左右子结点下标分别为2 * i + 1和2 * i + 2。如第0个结点左右子结点下标分别为1和2。&lt;/p&gt;</description></item><item><title>ikuai+OpenWrt旁路由模式配置ipv6</title><link>https://blog.muwinds.com/archives/110/</link><pubDate>Wed, 09 Apr 2025 19:39:35 +0800</pubDate><guid>https://blog.muwinds.com/archives/110/</guid><description>&lt;p&gt;openwrt主路由模式下的ipv6能力太差，同时对大量连接数的处理性能也不是很好，最后无奈换成了ikuai主路由+openwrt旁路由的模式&lt;/p&gt;
&lt;p&gt;之前介绍过&lt;a href="https://blog.muwinds.com/post/71.html"&gt;旁路由模式&lt;/a&gt;，但是说的有点小问题，其实旁路由模式也可以使用ipv6，同样的，独臂路由是用作主路由，而不是作为旁路网关。&lt;/p&gt;
&lt;p&gt;由于博客的机器（和nas在一起的）是ipv6源站，镜像源的更新需要走旁路由，以及无线路由器也是指向旁路网关以方便用梯子的，所以得让走旁路网关的机器也能分配到ipv6地址。&lt;/p&gt;</description></item><item><title>OpenWrt旁路由配置wireguard+校园网白嫖教程</title><link>https://blog.muwinds.com/archives/109/</link><pubDate>Wed, 09 Apr 2025 19:39:03 +0800</pubDate><guid>https://blog.muwinds.com/archives/109/</guid><description>&lt;p&gt;*本身这篇博文是为了我上大学为了减少校园网的费用所预备的，结果上大学后发现校园网不要钱……&lt;/p&gt;
&lt;p&gt;WireGuard是一款极其简单、快速、现代化的VPN，采用最先进的加密技术。它的目标是比IPsec更快、更简单、更精简、更有用，同时避免了配置上巨大的头痛。它比OpenVPN的性能高得多。WireGuard被设计为一种通用VPN，用于在嵌入式接口和超级计算机上运行，适用于许多不同的情况。它最初是为Linux内核发布的，现在是跨平台的（Windows、macOS、BSD、iOS、Android），可广泛部署。它目前正在大力开发中，但它可能已经被视为行业中最安全、最容易使用和最简单的VPN解决方案。&lt;/p&gt;</description></item><item><title>Python3 Linux发行版读取系统版本</title><link>https://blog.muwinds.com/archives/108/</link><pubDate>Wed, 09 Apr 2025 19:37:39 +0800</pubDate><guid>https://blog.muwinds.com/archives/108/</guid><description>&lt;p&gt;开发机环境切换到openEuler，测试了一下宝塔的功能，除了因为发行版问题基本上mysql，nginx，php的安装都需要编译安装以外。其实就没什么问题了，甚至连docker都是正常的&lt;/p&gt;</description></item><item><title>Redis详知详解</title><link>https://blog.muwinds.com/archives/107/</link><pubDate>Wed, 09 Apr 2025 19:36:52 +0800</pubDate><guid>https://blog.muwinds.com/archives/107/</guid><description>&lt;p&gt;来自知乎文章：&lt;a href="https://zhuanlan.zhihu.com/p/628425925"&gt;Redis详知详解 - 知乎 (zhihu.com)&lt;/a&gt;在这里做一些改动方便阅读&lt;/p&gt;
&lt;h2 id="redis学习"&gt;Redis学习&lt;/h2&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;p&gt;三大主线：&lt;/p&gt;
&lt;p&gt;1.高性能：线程模型，数据结构，持久化，网络框架&lt;/p&gt;
&lt;p&gt;2.高可靠性：主从复制，哨兵机制&lt;/p&gt;
&lt;p&gt;3.高可拓展：数据分片，负载均衡&lt;/p&gt;</description></item><item><title>OpenWrt无损扩大分区</title><link>https://blog.muwinds.com/archives/106/</link><pubDate>Wed, 09 Apr 2025 19:35:58 +0800</pubDate><guid>https://blog.muwinds.com/archives/106/</guid><description>&lt;p&gt;如果用openwrt默认镜像的，应该知道官方给的默认img镜像大小只有128M，安装的分区也自然只有128M&lt;/p&gt;
&lt;p&gt;因此，安装后我们需要扩大一下分区。&lt;/p&gt;
&lt;p&gt;下面来自openwrt官方文档：&lt;a href="https://openwrt.org/docs/guide-user/installation/openwrt_x86#expanding_root_partition"&gt;[OpenWrt 维基]x86 硬件上的 OpenWrt（PC/VM/服务器）&lt;/a&gt;&lt;/p&gt;</description></item><item><title>OpenWrt安装Passwall</title><link>https://blog.muwinds.com/archives/105/</link><pubDate>Wed, 09 Apr 2025 19:35:25 +0800</pubDate><guid>https://blog.muwinds.com/archives/105/</guid><description>&lt;p&gt;官方给的安装文档太过精简，缺少必要的东西，补充一下&lt;/p&gt;
&lt;p&gt;1.安装前请先在openwrt弄好梯子，保证可以访问sourceforge&lt;/p&gt;
&lt;p&gt;2.更换openwrt默认带的dnsmasq到dnsmasq_full版本：&lt;/p&gt;</description></item><item><title>ikuai配置手动限速实测无效的解决方法</title><link>https://blog.muwinds.com/archives/104/</link><pubDate>Wed, 09 Apr 2025 19:34:35 +0800</pubDate><guid>https://blog.muwinds.com/archives/104/</guid><description>&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2024/04/202404051712323351130181.png"&gt;&lt;/p&gt;
&lt;p&gt;家庭环境：北京移动，上行120Mbps，下行1000Mbps，开启桥接，默认fullcone NAT环境&lt;/p&gt;
&lt;p&gt;我本人还跑pcdn，但是也有时候需要vpn到家里来访问家里的文件，需要优先保证我访问到的家里的vpn的速度和稳定性&lt;/p&gt;</description></item><item><title>华为OpenEuler通过vscode连接远程开发报错</title><link>https://blog.muwinds.com/archives/103/</link><pubDate>Wed, 09 Apr 2025 19:34:11 +0800</pubDate><guid>https://blog.muwinds.com/archives/103/</guid><description>&lt;p&gt;根据报错可知，是openEuler的ssh配置禁止了TCP转发&lt;/p&gt;
&lt;p&gt;调整/etc/ssh/sshd_config配置文件，将AllowTcpForwarding前面的升号去除即可&lt;/p&gt;</description></item><item><title>ProxmoxVE降频节能控温</title><link>https://blog.muwinds.com/archives/102/</link><pubDate>Wed, 09 Apr 2025 19:33:53 +0800</pubDate><guid>https://blog.muwinds.com/archives/102/</guid><description>&lt;p&gt;部分内容和转载自：&lt;a href="http://fisherworks.cn/?p=2568"&gt;ProxmoxVE软路由降频节能控温 | 渔人小径 (fisherworks.cn)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;前些日子想把我all in one电费降下来（毕竟跑PCDN没多少钱，能多赚点是一点）孙总告诉我说为啥不装windows10？配置节能模式功耗这不嘎嘎降？&lt;/p&gt;</description></item><item><title>Docker国内镜像源</title><link>https://blog.muwinds.com/archives/101/</link><pubDate>Wed, 09 Apr 2025 19:30:03 +0800</pubDate><guid>https://blog.muwinds.com/archives/101/</guid><description>&lt;p&gt;畜生的dockerhub让我的nas自动走ipv6是难绷的&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2024/07/202407231721729871282352.png"&gt;&lt;/p&gt;
&lt;p&gt;由于临时急用，我选择找镜像源&lt;/p&gt;
&lt;h2 id="dockerhub国内镜像源列表"&gt;DockerHub国内镜像源列表&lt;/h2&gt;
&lt;p&gt;此列表只收录无需限定条件的DockerHub镜像源，感谢这些公益服务者。&lt;/p&gt;
&lt;p&gt;2024年6月18日 亲测可用&lt;/p&gt;</description></item><item><title>Passwall无法访问gstatic等问题</title><link>https://blog.muwinds.com/archives/99/</link><pubDate>Wed, 09 Apr 2025 19:18:23 +0800</pubDate><guid>https://blog.muwinds.com/archives/99/</guid><description>&lt;p&gt;下载笔记本的恢复镜像的时候发现：&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/09/202309241695541342894098.png"&gt;&lt;/p&gt;
&lt;p&gt;选择google账户登录的时候点不动选择的按钮&lt;/p&gt;
&lt;p&gt;按F12查看的时候发现：ssl.gstatic.com无响应&lt;/p&gt;
&lt;p&gt;我将passwall等一系列设置成强制代理gstatic后仍无法解决&lt;/p&gt;</description></item><item><title>conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。</title><link>https://blog.muwinds.com/archives/98/</link><pubDate>Wed, 09 Apr 2025 19:17:49 +0800</pubDate><guid>https://blog.muwinds.com/archives/98/</guid><description>&lt;p&gt;Anaconda默认安装路径：&lt;/p&gt;
&lt;p&gt;C:\Users\username\anaconda&lt;/p&gt;
&lt;p&gt;增加环境变量：&lt;/p&gt;
&lt;p&gt;G:\ProgramData\Anaconda3&lt;/p&gt;
&lt;p&gt;G:\ProgramData\Anaconda3\Scripts&lt;/p&gt;
&lt;p&gt;G:\ProgramData\Anaconda3\Library\bin&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/09/202309241695548511791595.png"&gt;&lt;/p&gt;</description></item><item><title>交换机&amp;VLAN</title><link>https://blog.muwinds.com/archives/95/</link><pubDate>Wed, 09 Apr 2025 19:15:13 +0800</pubDate><guid>https://blog.muwinds.com/archives/95/</guid><description>&lt;h2 id="为什么需要vlan"&gt;为什么需要VLAN&lt;/h2&gt;
&lt;p&gt;早期以太网是一种基于CSMA/CD（Carrier Sense Multiple Access/Collision Detection）的共享通讯介质的数据网络通讯技术。当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。通过二层设备实现LAN互连虽然可以解决冲突严重的问题，但仍然不能隔离广播报文和提升网络质量。&lt;/p&gt;</description></item><item><title>Windows10和Windows11快速关闭自动更新大法</title><link>https://blog.muwinds.com/archives/94/</link><pubDate>Wed, 09 Apr 2025 19:12:54 +0800</pubDate><guid>https://blog.muwinds.com/archives/94/</guid><description>&lt;p&gt;win+r输入cmd打开命令提示符，输入指令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;reg&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="n"&gt;FlightSettingsMaxPauseDays&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="n"&gt;reg_dword&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="mf"&gt;5000&lt;/span&gt; &lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2024/01/202401141705199223830546.png"&gt;&lt;/p&gt;
&lt;p&gt;然后去设置-&amp;gt;windows更新-&amp;gt;高级选项，调整暂停更新的时间&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2024/01/202401141705199267793368.png"&gt;&lt;/p&gt;</description></item><item><title>php如何理解严格模式declare(strict_types=1)？</title><link>https://blog.muwinds.com/archives/93/</link><pubDate>Wed, 09 Apr 2025 19:10:47 +0800</pubDate><guid>https://blog.muwinds.com/archives/93/</guid><description>&lt;p&gt;严格模式的写法：&lt;/p&gt;
&lt;p&gt;PHP&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;decleare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;strict_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;严格模式的声明需要放到php文件的最顶端，否则会抛出错误：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Fatal error: strict_types declaration must be the very first statement in the script
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个声明的类型属于是没有错误去制造错误，主要就是检测变量的类型&lt;code&gt;type&lt;/code&gt;，如果不对，就会报错。值得特别说明的是：如果没有定义严格模式的话，这些类型错误很有可能都是可以接受的，并不会报错。&lt;/p&gt;</description></item><item><title>VS Code: 代码词汇报错</title><link>https://blog.muwinds.com/archives/91/</link><pubDate>Wed, 09 Apr 2025 19:07:19 +0800</pubDate><guid>https://blog.muwinds.com/archives/91/</guid><description>&lt;p&gt;&lt;img alt="enter image description here" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/06/202306251687689384126783.png"&gt;&lt;/p&gt;
&lt;p&gt;不得不吐槽一句：VSCode这个词汇检查弱智如word，大哥，动一动脑子好好改改……&lt;/p&gt;
&lt;p&gt;简单朴素的解决方法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Go to setting &lt;em&gt;(Ctrl+,)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;type &lt;code&gt;cSpell.diagnosticLevel&lt;/code&gt; in a search box&lt;/li&gt;
&lt;li&gt;change the option to &lt;strong&gt;Hint&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;转载：https://stackoverflow.com/questions/50309834/vs-code-enable-inline-spell-checker-but-disable-spell-check-in-the-problems&lt;/p&gt;</description></item><item><title>OpenWrt旁路由/独臂路由配置</title><link>https://blog.muwinds.com/archives/90/</link><pubDate>Wed, 09 Apr 2025 19:05:44 +0800</pubDate><guid>https://blog.muwinds.com/archives/90/</guid><description>&lt;p&gt;在介绍旁路由配置之前，先说一下旁路由原理：&lt;/p&gt;
&lt;p&gt;&lt;img alt="在这里插入图片描述" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/07/202307021688274015971941.png"&gt;&lt;/p&gt;
&lt;p&gt;你可以很清楚的看出：旁路由的网络接入与其他终端设备无异，你可以把他理解为一个普通的设备，这个设备负责数据交换的处理。&lt;/p&gt;
&lt;p&gt;大多数人装openwrt是为了翻墙，广告过滤，实际上这玩意儿行为管理的能力也不太行……&lt;/p&gt;</description></item><item><title>python selector网页含有tbody表格，输出返回空列表</title><link>https://blog.muwinds.com/archives/89/</link><pubDate>Wed, 09 Apr 2025 19:05:16 +0800</pubDate><guid>https://blog.muwinds.com/archives/89/</guid><description>&lt;p&gt;在搓外汇API的时候，需要弄BOC爬虫去爬汇率数据，每次浏览器检查都是正常的，但在用bs4的selector后就是返回空列表：&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/07/202307061688633615883089.png"&gt;&lt;/p&gt;
&lt;p&gt;百度翻了半天，简单说一下原因：如果不是浏览器渲染的话，是不会渲染tbody的，就和下面的这个图一样&lt;/p&gt;</description></item><item><title>php Swoole 在supervisor或systemd下高并发频发redis mysql连接失败</title><link>https://blog.muwinds.com/archives/88/</link><pubDate>Wed, 09 Apr 2025 19:04:08 +0800</pubDate><guid>https://blog.muwinds.com/archives/88/</guid><description>&lt;p&gt;*前提：在你操作之前请先按照Swoole官方操作文档对内核修改完成后再看本文：&lt;/p&gt;
&lt;p&gt;文档地址：&lt;a href="https://wiki.swoole.com/#/other/sysctl"&gt;https://wiki.swoole.com/#/other/sysctl&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;汇率的API写好了，Swoole内网测试并发总会发生诸如redis went away的问题而导致502，当redis在同步模式下运行的时候无此问题，仅在Swoole一键协程化的时候出现：&lt;/p&gt;</description></item><item><title>php Swoole和FPM性能对比</title><link>https://blog.muwinds.com/archives/87/</link><pubDate>Wed, 09 Apr 2025 19:01:20 +0800</pubDate><guid>https://blog.muwinds.com/archives/87/</guid><description>&lt;p&gt;早闻Swoole因其持久化的特性有高性能高并发和语法简单的特点，突发奇想试着把汇率API项目的API部分用Swoole处理，在这里对比一下两者的性能差异&lt;/p&gt;
&lt;p&gt;服务器配置：&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/07/202307181689673249802427.png"&gt;&lt;/p&gt;</description></item><item><title>pve网卡速度慢的可能解决方法（包括不限于SMB速度异常慢等）</title><link>https://blog.muwinds.com/archives/86/</link><pubDate>Wed, 09 Apr 2025 18:58:50 +0800</pubDate><guid>https://blog.muwinds.com/archives/86/</guid><description>&lt;p&gt;如果pve网卡并非直通模式，请把虚拟网卡的Model处改成pve的virtIO:&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/07/202307201689821210644477.png"&gt;&lt;/p&gt;
&lt;p&gt;通常情况下这就可以跑满，即使你的网卡型号和model处吻合。&lt;/p&gt;
&lt;p&gt;接下来是诊断过程：&lt;/p&gt;
&lt;p&gt;当我做完全盘映射并做好Samba正在导入数据，发现写入只有可怜的50M/s（我家是千兆网，顺序写入就算是机械也不可能这么慢），读取更是炸裂，只有10M/s&lt;/p&gt;</description></item><item><title>Proxmox VE直通硬盘（全盘映射方式）</title><link>https://blog.muwinds.com/archives/85/</link><pubDate>Wed, 09 Apr 2025 18:57:47 +0800</pubDate><guid>https://blog.muwinds.com/archives/85/</guid><description>&lt;p&gt;打开pve的shell，输入：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ls /dev/disk/by-id
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/07/202307201689821363370150.png"&gt;&lt;/p&gt;
&lt;p&gt;我要将最上方的ata-ST400做全盘映射到ID为101的主机：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qm &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="m"&gt;101&lt;/span&gt; -scsi1 /dev/disk/by-id/ata-ST4000VX000-2AG166_ZDH0687G
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接下来去PVE后台看是否映射成功：&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/07/202307201689821504627353.png"&gt;&lt;/p&gt;</description></item><item><title>Proxmox VE登陆的时候提示没有有效的订阅You do not have a valid subscription for this server.</title><link>https://blog.muwinds.com/archives/84/</link><pubDate>Wed, 09 Apr 2025 18:57:09 +0800</pubDate><guid>https://blog.muwinds.com/archives/84/</guid><description>&lt;p&gt;KVM用的proxmox是免费版社区版的，所以每次都提示这个没有有效的订阅挺烦的！&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/07/202307211689918403569901.png"&gt;&lt;/p&gt;
&lt;h1 id="解决方法"&gt;解决方法：&lt;/h1&gt;
&lt;p&gt;修改文件/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js&lt;/p&gt;</description></item><item><title>PVE管理后台提示报错apt-get update failed解决方法</title><link>https://blog.muwinds.com/archives/83/</link><pubDate>Wed, 09 Apr 2025 18:56:36 +0800</pubDate><guid>https://blog.muwinds.com/archives/83/</guid><description>&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/07/202307261690381778292229.png"&gt;&lt;/p&gt;
&lt;p&gt;基本上还是PVE没有企业订阅的问题，下面说解决方法，版本适合PVE7：&lt;/p&gt;
&lt;p&gt;使用nano，/etc/apt/sources.list.d/pve-enterprise.list下：&lt;/p&gt;</description></item><item><title>OpenWrt ARP缓存溢出问题解决</title><link>https://blog.muwinds.com/archives/81/</link><pubDate>Wed, 09 Apr 2025 14:11:34 +0800</pubDate><guid>https://blog.muwinds.com/archives/81/</guid><description>&lt;p&gt;旁路由做了FullconeNAT之后，比特彗星测试结果还是PortStrictedFullconeNAT，同时通过dmesg进行内核诊断，我发现日志总是爆出ARP缓存溢出的错误：&lt;/p&gt;</description></item><item><title>支付系统下MySQL超时问题</title><link>https://blog.muwinds.com/archives/80/</link><pubDate>Wed, 09 Apr 2025 14:08:20 +0800</pubDate><guid>https://blog.muwinds.com/archives/80/</guid><description>&lt;p&gt;现在跑的支付系统在处理客户问题查询订单的时候经常查询超时锁表……&lt;/p&gt;
&lt;p&gt;支付系统的在数据库的特性是高更新频率，当我在排查问题的时候看到了query cache，去google了一下：&lt;/p&gt;</description></item><item><title>电阻与电源消耗电功率问题</title><link>https://blog.muwinds.com/archives/79/</link><pubDate>Wed, 09 Apr 2025 14:06:38 +0800</pubDate><guid>https://blog.muwinds.com/archives/79/</guid><description>&lt;p&gt;高中物理必修电学会用到一个结论，就是当R=r时（R为路端总电阻，r为电源内阻）电源的输出功率最大&lt;/p&gt;
&lt;p&gt;这个结论并没有要求证明，但是我没证明过程我记不住&lt;/p&gt;
&lt;p&gt;故在这里简单证明一下：&lt;/p&gt;</description></item><item><title>中学电学必修：电表电路原理</title><link>https://blog.muwinds.com/archives/78/</link><pubDate>Wed, 09 Apr 2025 14:05:59 +0800</pubDate><guid>https://blog.muwinds.com/archives/78/</guid><description>&lt;p&gt;初中的时候老师告诉我们看电压表电流表在电路里时，将电流表充当导线，电压表充当断路。&lt;/p&gt;
&lt;p&gt;这里简单说一下原因。&lt;/p&gt;
&lt;p&gt;任何一个电压表和电流表都由灵敏电流计配合大电阻组成：&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/03/202303271679868903484000.png"&gt;&lt;/p&gt;
&lt;p&gt;原理图可以看出：电流表中的R用来分G的电流，并以此来达到更大的量程；电压表的R用来分G的电压，也可以得到更大的量程。&lt;/p&gt;</description></item><item><title>Hyper-v 配置 NAT + 端口映射</title><link>https://blog.muwinds.com/archives/76/</link><pubDate>Wed, 09 Apr 2025 14:04:14 +0800</pubDate><guid>https://blog.muwinds.com/archives/76/</guid><description>&lt;p&gt;本指南将引导你完成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;创建 NAT 网络&lt;/li&gt;
&lt;li&gt;将现有虚拟机连接到新网络&lt;/li&gt;
&lt;li&gt;确认虚拟机正确连接&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;要求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 10 周年更新或更高版本&lt;/li&gt;
&lt;li&gt;已启用 Hyper-V（单击&lt;a href="https://link.zhihu.com/?target=https%3A//docs.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v"&gt;此处&lt;/a&gt; 查看相关说明）&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：目前，每台主机仅限一个 NAT 网络。 有关 Windows NAT (WinNAT) 实现、功能和限制的更多详细信息，请参考 &lt;a href="https://link.zhihu.com/?target=https%3A//techcommunity.microsoft.com/t5/Virtualization/Windows-NAT-WinNAT-Capabilities-and-limitations/ba-p/382303"&gt;WinNAT capabilities and limitations blog&lt;/a&gt;（WinNAT 功能和限制日志）&lt;/p&gt;</description></item><item><title>Zerotier配合Nginx实现内网穿透</title><link>https://blog.muwinds.com/archives/74/</link><pubDate>Wed, 09 Apr 2025 13:49:41 +0800</pubDate><guid>https://blog.muwinds.com/archives/74/</guid><description>&lt;p&gt;之前博客网站一直用的家里机器配合香港Azure做frp内网穿透，用CF CDN进行数据分发，不提frp的虚拟局域网模式在跨国数据传输时面临的数据审查和路由方向会给速度及稳定性造成非常大的影响，其可能有的内存溢出和服务重启时的持续掉线问题也是很抓狂的，在这里，使用zerotier为两机打洞连接p2p，使用nginx进行反向代理来进行内网穿透。&lt;/p&gt;</description></item><item><title>CentOS设置开机启动</title><link>https://blog.muwinds.com/archives/72/</link><pubDate>Wed, 09 Apr 2025 13:42:54 +0800</pubDate><guid>https://blog.muwinds.com/archives/72/</guid><description>&lt;p&gt;AIO出现了硬盘问题，重启后发现离线下载服务没有开机自启，快速给开一下：&lt;/p&gt;
&lt;p&gt;先写一个开机自启的脚本：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="cp"&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#chkconfig: 2345 80 90&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;#description:aria2开机自启&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aria2c --conf-path&lt;span class="o"&gt;=&lt;/span&gt;/etc/aria2/aria2.conf -D
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;脚本第一行 “#!/bin/sh” 告诉系统使用的shell；&lt;br&gt;
脚本第二行 “#chkconfig: 2345 80 90” 表示在2/3/4/5运行级别启动，启动序号(S80)，关闭序号(K90)；&lt;br&gt;
脚本第三行 表示的是服务的描述信息&lt;br&gt;
&lt;strong&gt;注意：&lt;/strong&gt; 第二行和第三行必写，否则会出现如“服务 autostart.sh 不支持 chkconfig”这样的错误。&lt;/p&gt;</description></item><item><title>yarn构建提示Error: error:0308010C:digital envelope routines::unsupported的解决方法</title><link>https://blog.muwinds.com/archives/70/</link><pubDate>Wed, 09 Apr 2025 13:40:40 +0800</pubDate><guid>https://blog.muwinds.com/archives/70/</guid><description>&lt;p&gt;&lt;a href="https://blog.muwinds.com/wp-content/uploads/2025/04/image-12.png"&gt;&lt;img loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2025/04/image-12.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个是SSL套件的问题，输入下面的指令切换一下就好了：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$env&lt;/span&gt;:NODE_OPTIONS &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;--openssl-legacy-provider&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>node-saas问题</title><link>https://blog.muwinds.com/archives/69/</link><pubDate>Wed, 09 Apr 2025 13:39:48 +0800</pubDate><guid>https://blog.muwinds.com/archives/69/</guid><description>&lt;p&gt;构建vue项目的时候报错：&lt;/p&gt;
&lt;p&gt;&lt;img alt="image.png" loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2023/02/202302021675333331740729.png"&gt;&lt;/p&gt;
&lt;p&gt;很简单，nodejs版本太新了，直接换到dart-sass&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yarn remove node-sass
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yarn add sass
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>记录一个远古垃圾系统的维护</title><link>https://blog.muwinds.com/archives/68/</link><pubDate>Wed, 09 Apr 2025 13:39:10 +0800</pubDate><guid>https://blog.muwinds.com/archives/68/</guid><description>&lt;p&gt;这次接手的是tp框架的远古收款系统，开局几个ajax认不上我已经习以为常了，反手把php版本改成7.0就恢复正常（7.0算是个兼容版本 5.x的和7.x都兼容一点 各位穷途末路了可以试试）&lt;/p&gt;</description></item><item><title>雨云CDN清除指定文件的缓存</title><link>https://blog.muwinds.com/archives/65/</link><pubDate>Wed, 09 Apr 2025 13:38:41 +0800</pubDate><guid>https://blog.muwinds.com/archives/65/</guid><description>&lt;p&gt;雨云的CDN并没有给用户清除缓存的选项，想清除缓存的话其实挺麻烦的。&lt;/p&gt;
&lt;p&gt;通过浏览器对网站的请求头我们可以看到，CDN的服务器是apache apisix&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.muwinds.com/wp-content/uploads/2025/04/image-10.png"&gt;&lt;img loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2025/04/image-10.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;通过查阅apisix有关缓存的文档，我们可以发现清除缓存的方法：&lt;/p&gt;</description></item><item><title>OpenWrt无法保存配置无法生效的解决方法</title><link>https://blog.muwinds.com/archives/64/</link><pubDate>Wed, 09 Apr 2025 13:36:54 +0800</pubDate><guid>https://blog.muwinds.com/archives/64/</guid><description>&lt;p&gt;原因：意外断电导致硬盘卡在只读状态&lt;/p&gt;
&lt;p&gt;进入openwrt后台按回车输入下面命令，重新挂载即可：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o remount rw /
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;2024.07.10更新：&lt;/p&gt;
&lt;p&gt;换了官方固件后因为要拆下来换机箱散热器又是一次意外断电，卡在了只读状态，但是这次重新挂载无用了。&lt;/p&gt;</description></item><item><title>快速且简单通用的批量转码方法</title><link>https://blog.muwinds.com/archives/58/</link><pubDate>Tue, 08 Apr 2025 00:14:31 +0800</pubDate><guid>https://blog.muwinds.com/archives/58/</guid><description>&lt;p&gt;前情提要：MC服务器迁移到HomeServer后，突然有一天玩家跟我说挑战功能全是乱码，我打开挑战文件一看：&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.muwinds.com/wp-content/uploads/2025/04/image-9.png"&gt;&lt;img loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2025/04/image-9-1024x425.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;而且挑战文件都在一个文件夹共有291个，一个个扔到npp里面转成utf8也不是事儿。&lt;/p&gt;</description></item><item><title>PVE删除订阅提示</title><link>https://blog.muwinds.com/archives/50/</link><pubDate>Tue, 08 Apr 2025 00:12:51 +0800</pubDate><guid>https://blog.muwinds.com/archives/50/</guid><description>&lt;p&gt;每次登录PVE的网页后台就看到那个烦人的订阅提示，这里关掉他&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /usr/share/javascript/proxmox-widget-toolkit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cp proxmoxlib.js proxmoxlib.js.bak
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;nano proxmoxlib.js
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ssh链接pve的机器后 输入上面三行命令会打开一个文件，按ctrl+w查找No valid subscription&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.muwinds.com/wp-content/uploads/2025/04/image-8.png"&gt;&lt;img loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2025/04/image-8-1024x773.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;将前面的“Ext.Msg.show({”更改成“void({”后，按ctrl+o回车保存，按ctrl+x退出，清除pve后台cookie并再次登录检查提示是否存在&lt;/p&gt;</description></item><item><title>PVE双网口实践</title><link>https://blog.muwinds.com/archives/21/</link><pubDate>Mon, 07 Apr 2025 23:05:29 +0800</pubDate><guid>https://blog.muwinds.com/archives/21/</guid><description>&lt;p&gt;由于新三的科学能力太差（属实没想到一科学就卡），故打算自组一台软路由，顺便弄成了一台all in one&lt;/p&gt;
&lt;p&gt;拓补图：&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://blog.muwinds.com/wp-content/uploads/2025/04/image-1024x484.png"&gt;&lt;/p&gt;
&lt;p&gt;（随手画了个 你看着难受跟我有啥关系）&lt;/p&gt;
&lt;p&gt;机器被奸商城老板坑了，600块整了个e5 2630l+x79寨板，是纯纯的冤种&lt;/p&gt;</description></item></channel></rss>