<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Windows on 魔都水滴</title>
    <link>https://blog.margrop.net/tag/windows/</link>
    <description>Recent content in Windows on 魔都水滴</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
    <lastBuildDate>Mon, 10 Aug 2026 10:00:00 +0800</lastBuildDate>
    <atom:link href="https://blog.margrop.net/tag/windows/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>RTX 5060 Ti 跑 FlashVSR：我把 480P 视频“拉”到 1728×960，顺便踩完了这些坑</title>
      <link>https://blog.margrop.net/post/flashvsr-rtx-5060-ti-video-upscale/</link>
      <pubDate>Mon, 10 Aug 2026 10:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/flashvsr-rtx-5060-ti-video-upscale/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;写在前面&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;“把一段 480P 视频变清楚”听起来像把图片放大两倍，但真正运行一次才知道：视频超分更像是请一位修图师，连续修理上百张照片，还要保证相邻照片里的人脸、文字和光线不会突然跳变。本文记录一次完整的 FlashVSR_plus 实战：从 RTX 50 系兼容性判断、便携 Miniconda 安装，到模型下载、源码 bug、FFmpeg 音频合并，再到可复用的 Windows、Ubuntu 和 macOS 脚本。&lt;/p&gt;&#xA;&lt;p&gt;本文使用的社区版 FlashVSR_plus 并非官方仓库，命令和参数会随版本变化。文中的路径均已改为公开示例路径，不包含原始机器信息；原视频、模型和终端日志没有上传到博客。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>电脑从不“突然坏掉”：看懂日志，十分钟学会像侦探一样排障</title>
      <link>https://blog.margrop.net/post/%E7%9C%8B%E6%97%A5%E5%BF%97-log-reading-art/</link>
      <pubDate>Wed, 29 Jul 2026 20:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/%E7%9C%8B%E6%97%A5%E5%BF%97-log-reading-art/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;电脑很少会“毫无征兆地坏掉”。大多数时候，它早就把线索写进了日志：某个磁盘逐渐变满、某个服务先出现警告、某次 DNS 查询失败、某个进程反复启动又退出。真正的排障，不是看到红色报错就马上重装系统，而是像侦探一样回答五个问题：&lt;strong&gt;什么时候发生？谁发生了？严重程度怎样？前后还发生了什么？修好后能不能验证？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;这篇文章不把日志讲成只有工程师才懂的黑话，而是把它比作电脑每天写的日记。你会看到 Windows 11、Ubuntu 26.04 和 macOS 26 的真实采集输出，拿到三套不依赖第三方服务的只读脚本，还能把同一套思路交给 Agent 自动执行。即使你是小学生，也应该能看懂其中大部分；如果你是开发者或运维人员，则可以直接把方法带回生产环境。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>重启不是玄学：电脑为什么一关一开，就像治好了 99% 的毛病？</title>
      <link>https://blog.margrop.net/post/why-restart-fixes-99-percent-%E9%87%8D%E5%90%AF/</link>
      <pubDate>Wed, 29 Jul 2026 08:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/why-restart-fixes-99-percent-%E9%87%8D%E5%90%AF/</guid>
      <description>先说结论&#xA;重启不是魔法，也不是把所有故障都修好了。它更像是把一间住了很久、已经乱到找不到东西的房间清空：借出去但没归还的物品被收走，排队的人重新取号，临时便签被撕掉，门锁和电器重新检查。系统因此回到了一个更干净、更容易预测的起点。&#xA;所以，“重启解决了问题”通常意味着：故障藏在易失状态里，而不是硬件已经坏掉、配置一直错误或程序本身存在根因。&#xA;你一定见过这样的场景：浏览器突然打不开新标签页，文件明明存在却提示“正在使用”，远程桌面连不上，风扇像小飞机一样转，内存还剩很多却不停卡顿。你先关一个窗口，再关几个程序，最后抱着“试试看”的心态重启。&#xA;电脑重新亮起来后，刚才那个很难解释的毛病消失了。&#xA;这就是大家常说的“重启能解决 99% 的问题”。它当然不是一个经过严格统计的 99%，而是一种非常生动的工程经验：很多问题不是永久损坏，而是系统在长时间运行中积累了太多没有及时清理的临时状态。&#xA;图 1：重启像把“住乱了”的系统清场复位。原创配图。&#xA;把电脑想成一间一直有人使用的房间 刚搬进去时，房间很整齐。桌上只有一台电脑，柜子里有几份文件，门口有两双鞋。&#xA;但如果这间房连续住三个月，却从来不做大扫除，会发生什么？&#xA;快递盒越来越多，虽然每个盒子都不大，但过道被堵住了。 借出去的剪刀、充电器和钥匙没有归还，东西并没有“消失”，只是没人知道它在哪里。 门口排着很多人，已经离开的客人还占着号码。 桌上贴满旧便签，大家仍然按照过期的便签做决定。 两个人各自拿着一把钥匙，互相等对方先开门，谁都不愿意松手。 系统里的“房间”就是内存、文件句柄、网络连接、线程、锁、缓存、驱动状态和各种服务上下文。它们有一个共同特点：启动时会被建立，运行中会被修改，退出或重启时才有机会统一回收。&#xA;下面这张图把最常见的四种“乱”放在了一起。&#xA;图 2：状态泄漏、内存碎片、连接堆积，以及锁和旧缓存，是重启经常能缓解的四类问题。&#xA;状态泄漏：借出去的东西没有放回原位 “泄漏”不一定是水从水管里流出来。对程序来说，泄漏更像是“借了资源，但忘了归还”。&#xA;程序打开一个文件，系统会给它一个文件描述符；程序创建一个网络连接，系统会保存连接状态；程序申请一块内存，分配器会记住这块空间归谁使用。如果程序退出时没有正确关闭，或者它一直运行、从来不退出，那么这些资源就可能持续占着位置。&#xA;一次泄漏可能小得几乎看不见。比如每处理一千个请求只多留一个句柄，一天之后可能没有任何感觉；几周之后，系统却开始提示“打开文件太多”“无法创建线程”或“连接失败”。&#xA;这就是为什么重启一个服务有时比“再点一次按钮”有效：服务进程结束后，操作系统会回收该进程名下的内存、句柄、线程和连接。房间里那些没有登记归还的物品，会随着住客离开而被物业统一收走。&#xA;macOS 的 vm_stat 会把虚拟内存拆成很多页来观察；Linux 则常见 /proc/meminfo、free 和进程的 RSS。它们不是“电脑健康分数”，而是帮助我们确认房间里到底堆了什么。&#xA;图 3：真实的 macOS vm_stat 输出。数字会随机器和时间变化，重点是观察趋势，不是迷信某个固定值。&#xA;内存碎片：柜子还有缝，却塞不进大箱子 很多人看到“可用内存还有几 GB”，就会问：既然还有空间，为什么程序还是申请失败？&#xA;因为“总空位”不等于“连续的大空位”。&#xA;把内存想成一个有很多格子的柜子。程序先放入一个小盒子，又拿走另一个盒子，再放入一个大箱子。经过很多次申请和释放以后，柜子可能到处都有小缝，但没有一块连续的空位能放下大箱子。&#xA;这就是内存碎片最容易理解的版本。真实系统比这个复杂：用户态分配器、内核页分配器、不同大小的对象、内存映射和缓存都会影响布局。现代操作系统会尽力复用和整理空间，但整理本身也需要时间，并且并非所有内存都能随便移动。&#xA;图 4：蓝色格子表示已占用区域，浅色格子是分散的空位；“还有空位”并不代表能满足连续大块分配。&#xA;Linux 内核文档把 compaction（内存压缩整理）描述为把可移动页搬到一起，从而形成更大的连续空闲区域。这个过程像把衣柜里的小衣物先集中到一侧，让另一侧腾出完整空间，但它不是免费的：搬东西需要 CPU，也受不可移动页、正在使用的页和分配时机影响。&#xA;因此，重启有时会让内存表现“突然变好”，并不是重启凭空创造了内存，而是旧进程、旧映射和旧缓存全部结束后，新的进程在更干净的布局上重新分配。&#xA;图 5：真实的 Ubuntu free -h 与 ss -s 汇总。文章只保留统计项，不展示地址或机器名。&#xA;连接堆积：窗口有限，旧号码却没清掉 网络连接可以想成银行窗口。&#xA;服务器只有有限数量的连接槽位、文件描述符、线程和端口。一个请求来了，系统为它分配资源；请求结束后，资源应当尽快归还。但实际网络里还有重传、超时、半关闭、连接复用和 TIME-WAIT 等状态。某些状态本来就是协议设计的一部分，不是错误；问题在于它们的数量、持续时间和业务流量不匹配。&#xA;RFC 9293 说明了 TCP 状态机中的 TIME-WAIT：主动关闭连接的一方需要在一段时间内保留状态，以避免旧报文干扰后续连接。生活中，这就像快递柜不会在包裹刚取走的一秒钟就立刻把编号交给另一个人，系统要留一点时间确认“旧包裹真的结束了”。</description>
    </item>
    <item>
      <title>受够远程控制被限速？我把 RustDesk 服务端搬回自己家：多合一部署、避坑与安全加固</title>
      <link>https://blog.margrop.net/post/rustdesk-all-in-one-server-guide/</link>
      <pubDate>Fri, 10 Jul 2026 22:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/rustdesk-all-in-one-server-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;RustDesk 是一款强调开源与自托管的远程桌面工具。客户端之间能直接连接时，画面和键鼠数据优先点对点传输；直连失败时，才由中继服务转发。把服务端部署在自己控制的机器上，最大的价值不是“完全不要服务器”，而是把设备登记、中继路径、密钥、账号和日志重新放回自己的控制范围。&lt;/p&gt;&#xA;&lt;p&gt;本文使用社区维护的 &lt;code&gt;lejianwen/rustdesk-server-s6&lt;/code&gt; 多合一镜像，把 RustDesk OSS 的 &lt;code&gt;hbbs&lt;/code&gt;、&lt;code&gt;hbbr&lt;/code&gt; 与社区 API、Web 管理功能放进一个容器。它适合家庭、实验室和小团队简化部署，但&lt;strong&gt;不是 RustDesk 官方发行的多合一服务端&lt;/strong&gt;。生产环境仍需自行评估社区镜像、固定版本或镜像摘要、备份数据，并测试升级和回滚。&lt;/p&gt;&#xA;&lt;p&gt;本文所有域名都使用 &lt;code&gt;example.com&lt;/code&gt;，没有展示真实 IP、私有域名、主机名、设备 ID、账号、密钥、Token、Cookie 或镜像仓库地址。公开截图来自项目官方页面或社区仓库公开素材。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>我把 Docker 命令行装进了“驾驶舱”：Portainer 2.39.4 从部署到避坑，一篇就够</title>
      <link>https://blog.margrop.net/post/portainer-ce-docker-deployment-guide/</link>
      <pubDate>Fri, 10 Jul 2026 15:30:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/portainer-ce-docker-deployment-guide/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Portainer 不是 Docker 的替代品，它更像 Docker 主机的“驾驶舱”：底层发动机仍然是 Docker Engine，Portainer 只是把容器、镜像、网络、卷和 Compose Stack 整理成网页按钮、表格与状态卡片。&lt;/p&gt;&#xA;&lt;p&gt;我用 &lt;code&gt;portainer/portainer-ce:2.39.4&lt;/code&gt; 做了一次隔离部署，完成初始化、接入本机 Docker、查看仪表盘、筛选容器、创建演示 Stack，并记录了真实截图。部署本身只要一条 &lt;code&gt;docker run&lt;/code&gt;，真正需要认真理解的却是三件事：&lt;code&gt;/data&lt;/code&gt; 必须持久化、&lt;code&gt;/var/run/docker.sock&lt;/code&gt; 权限非常高、生产环境不要把管理页面毫无遮挡地暴露到公网。&lt;/p&gt;&#xA;&lt;p&gt;本文没有展示完整 IP 地址、真实主机名、内网域名、管理员密码、Token、Cookie、私有镜像地址或生产容器名称。截图里的实验资源使用专门的演示名称，容器地址已遮盖。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Windows 终于有了原生 Linux 命令：微软 coreutils 让你告别 WSL、Cygwin 和 Git Bash</title>
      <link>https://blog.margrop.net/post/windows-native-linux-commands-microsoft-coreutils/</link>
      <pubDate>Sat, 27 Jun 2026 08:00:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/windows-native-linux-commands-microsoft-coreutils/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先问一个问题：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;你有没有过这种体验——在 Windows 终端里想用 &lt;code&gt;grep&lt;/code&gt; 过滤一下日志，结果 PowerShell 告诉你 &lt;code&gt;grep&lt;/code&gt; 不是内部命令；想用 &lt;code&gt;find&lt;/code&gt; 批量查找文件，结果 Windows 的 &lt;code&gt;find&lt;/code&gt; 和 Linux 的 &lt;code&gt;find&lt;/code&gt; 完全是两个东西；写了个跨平台脚本，到了 Windows 上就得全部重写？&lt;/p&gt;&#xA;&lt;p&gt;这不是你的问题，这是 Windows 和 Linux 命令行之间那道&amp;quot;柏林墙&amp;quot;的问题。&lt;/p&gt;&#xA;&lt;p&gt;好消息是，微软自己动手拆墙了。2025 年底，微软在 GitHub 上开源了 &lt;strong&gt;coreutils&lt;/strong&gt; 项目——一个原生 Windows 版本的 Linux 核心命令集。不需要 WSL，不需要 Cygwin，不需要 Git Bash，一条 &lt;code&gt;winget install&lt;/code&gt; 就能让你的 Windows 终端直接听懂 &lt;code&gt;ls&lt;/code&gt;、&lt;code&gt;grep&lt;/code&gt;、&lt;code&gt;sed&lt;/code&gt;、&lt;code&gt;awk&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>别再远程桌面点点点：让 AI Agent 用 SSH 直接接管 Windows</title>
      <link>https://blog.margrop.net/post/agent-ssh-windows-openssh/</link>
      <pubDate>Wed, 13 May 2026 08:10:00 +0800</pubDate>
      <guid>https://blog.margrop.net/post/agent-ssh-windows-openssh/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;先说结论&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;让 AI Agent 从 Linux 或 macOS 管理 Windows，并不一定要走远程桌面、VNC、商业远控软件，也不一定要额外装一套奇怪的 Agent Runtime。对大多数个人工作站、实验机、开发机和内网服务器来说，最简单、最干净、最容易被自动化工具理解的方案，就是在 Windows 上启用系统自带的 &lt;strong&gt;OpenSSH Server&lt;/strong&gt;，然后从 Linux/macOS 直接执行：&lt;code&gt;ssh &amp;lt;user&amp;gt;@&amp;lt;windows-host&amp;gt;&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;真正需要做好的只有三件事：第一，Win10 / Win11 正确安装并启动 OpenSSH Server；第二，在 Linux/macOS 生成 SSH key，把公钥放到 Windows 对应位置；第三，如果登录用户属于 Windows 管理员组，要把公钥写入 &lt;code&gt;C:\ProgramData\ssh\administrators_authorized_keys&lt;/code&gt;，并用 &lt;code&gt;icacls&lt;/code&gt; 收紧权限。完成以后，AI Agent 就可以像操作 Linux 一样，用 SSH 在 Windows 上执行 PowerShell、复制脚本、读取日志、安装工具和做自动化运维。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;本文所有命令、截图和主机信息都使用通用占位符，不包含真实内网地址、真实用户名、真实机器名、密钥、Token 或私人路径。你只需要把 &lt;code&gt;&amp;lt;user&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;windows-host&amp;gt;&lt;/code&gt;、&lt;code&gt;&amp;lt;windows-ip&amp;gt;&lt;/code&gt; 这类占位符替换成自己的环境值即可。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Java基于 SpringBoot 的 JNI 本地方法库加载器</title>
      <link>https://blog.margrop.net/post/java-spring-boot-jni-java-native-interface-library-loader/</link>
      <pubDate>Sat, 27 Mar 2021 16:37:31 +0800</pubDate>
      <guid>https://blog.margrop.net/post/java-spring-boot-jni-java-native-interface-library-loader/</guid>
      <description>&lt;p&gt;由于Java跨平台需要，自行写了一个跨平台的 JNI 本地方法库加载器。&lt;/p&gt;&#xA;&lt;h1 id=&#34;简单实现逻辑&#34;&gt;简单实现逻辑&lt;/h1&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;根据环境变量&lt;code&gt;os.name&lt;/code&gt;，判断当前系统属于&lt;code&gt;Windows&lt;/code&gt;,&lt;code&gt;Linux&lt;/code&gt;还是&lt;code&gt;MacOS&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;如果是&lt;code&gt;Linux&lt;/code&gt;，继续判断是&lt;code&gt;CentOS&lt;/code&gt;还是&lt;code&gt;Debian&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;读取 jar 包中的库文件&lt;/li&gt;&#xA;&lt;li&gt;根据文件名后缀&lt;code&gt;dll&lt;/code&gt;、&lt;code&gt;so&lt;/code&gt;、&lt;code&gt;jnilib&lt;/code&gt;和&lt;code&gt;dylib&lt;/code&gt;，过滤符合当前平台的库文件&lt;/li&gt;&#xA;&lt;li&gt;将当前平台的库文件复制到系统临时目录&lt;code&gt;java.io.tmpdir&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;使用&lt;code&gt;System.load&lt;/code&gt;加载库文件&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>如何使用Windows运行N2N-运行篇</title>
      <link>https://blog.margrop.net/post/how-to-use-n2n-windows-edge/</link>
      <pubDate>Fri, 29 Jan 2021 13:43:19 +0800</pubDate>
      <guid>https://blog.margrop.net/post/how-to-use-n2n-windows-edge/</guid>
      <description>&lt;p&gt;这里只讲如何运行N2N的客户端edge，其实运行supernode起来更加简单，这里不再重复。&lt;/p&gt;&#xA;&lt;h1 id=&#34;下载并解压n2n&#34;&gt;下载并解压N2N&lt;/h1&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://download.margrop.net/d/oneindex/network/n2n_2.8_stable/Windows/n2n_20210129.zip&#34;&gt;一键打包下载&lt;/a&gt;&#xA;含&lt;code&gt;edge&lt;/code&gt;,&lt;code&gt;supernode&lt;/code&gt;,&lt;code&gt;openssl链接库&lt;/code&gt;(n2n运行必备),&lt;code&gt;tap-windows安装包&lt;/code&gt;(n2n运行必备，Win7&amp;amp;Win10)&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Windows常用软件推荐和下载，无推荐</title>
      <link>https://blog.margrop.net/post/windows-software-recommend-and-download/</link>
      <pubDate>Sun, 24 Jan 2021 22:22:47 +0800</pubDate>
      <guid>https://blog.margrop.net/post/windows-software-recommend-and-download/</guid>
      <description>&lt;p&gt;这里推荐一些本站在&lt;code&gt;Windows&lt;/code&gt;环境常用的一些软件，无推荐，不喜欢的赶紧关掉页面。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用KMS激活Win10，含第三方服务和自建服务</title>
      <link>https://blog.margrop.net/post/kms-activate-win10-slmgr/</link>
      <pubDate>Mon, 18 Jan 2021 22:12:43 +0800</pubDate>
      <guid>https://blog.margrop.net/post/kms-activate-win10-slmgr/</guid>
      <description>&lt;h1 id=&#34;第三方服务激活&#34;&gt;第三方服务激活&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;使用&lt;code&gt;管理员&lt;/code&gt;权限，运行两行命令即可（鸣谢：&lt;a href=&#34;https://03k.org/kms.html&#34;&gt;https://03k.org/kms.html&lt;/a&gt;）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;slmgr /skms kms.03k.org&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;slmgr /ato&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Windows安装Frp客户端，可使用远程桌面</title>
      <link>https://blog.margrop.net/post/windows-frpc-install-for-remote-desktop/</link>
      <pubDate>Sun, 17 Jan 2021 19:36:38 +0800</pubDate>
      <guid>https://blog.margrop.net/post/windows-frpc-install-for-remote-desktop/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;由于 TeamViewer 的使用限制越来越严格，时不时就会被当成企业用户，天下终究没有免费的午餐，下面是使用Frp客户端进行内网穿透，并可远程控制的方法。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;请自行准备Frp服务器，以及考虑将3389端口暴露公网后的安全风险。&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>如何使用Windows运行N2N-编译篇</title>
      <link>https://blog.margrop.net/post/how-to-use-n2n-windows-compile/</link>
      <pubDate>Fri, 15 Jan 2021 14:26:49 +0800</pubDate>
      <guid>https://blog.margrop.net/post/how-to-use-n2n-windows-compile/</guid>
      <description>&lt;p&gt;按照&lt;a href=&#34;https://github.com/ntop/n2n&#34;&gt;N2N官方网站&lt;/a&gt;的&lt;a href=&#34;https://github.com/ntop/n2n/blob/dev/doc/Building.md&#34;&gt;Building说明&lt;/a&gt;，Windows编译需要的软件有&#xA;&lt;code&gt;Visual Studio&lt;/code&gt;,&lt;code&gt;Cmake&lt;/code&gt;,&lt;code&gt;OpenSSL&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;p&gt;看到&lt;code&gt;Visual Studio&lt;/code&gt;我就头大，这个软件安装起来可不得了。&#xA;于是我选择了交叉编译，即使用Linux环境编译Windows的exe和dll文件。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
