<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>一只会飞的旺旺-IT技术分享</title>
  
  <subtitle>一只会飞的旺旺,Java,Python,羊毛,hexo,博客</subtitle>
  <link href="https://www.wangwangit.com/atom.xml" rel="self"/>
  
  <link href="https://www.wangwangit.com/"/>
  <updated>2025-03-05T07:40:40.913Z</updated>
  <id>https://www.wangwangit.com/</id>
  
  <author>
    <name>一只会飞的旺旺</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>DeepSeek R1最全使用指南 🌟</title>
    <link href="https://www.wangwangit.com/DeepSeek-R1%E6%9C%80%E5%85%A8%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/"/>
    <id>https://www.wangwangit.com/DeepSeek-R1%E6%9C%80%E5%85%A8%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</id>
    <published>2025-02-07T09:00:00.000Z</published>
    <updated>2025-03-05T07:40:40.913Z</updated>
    
    <content type="html"><![CDATA[<p>大家好，我是旺旺，今天给大家带来一份超详细的 DeepSeek R1 使用指南！相信很多小伙伴都对最近爆火的 DeepSeek R1 大模型非常感兴趣，想亲自体验一下它的强大能力，却又不知道从何下手。别担心，这篇文章就是来拯救你的！😎 </p><p><strong>🤔 什么是 DeepSeek R1 ? 凭什么这么火？</strong></p><p>DeepSeek R1，是由国内 AI 独角兽公司 DeepSeek (深度求索) 推出的 <strong>超强</strong> 大语言模型！  它就像一位超级聪明的 AI 助手，可以理解你的指令，和你流畅对话，帮你写文章、搞创作、解答问题，甚至还能辅助编程！ 🚀</p><p>之所以这么火，是因为 DeepSeek R1 在性能上非常出色，在很多评测中都展现出了 <strong>媲美甚至超越 GPT-4</strong> 的实力！更重要的是，它对咱们国内用户非常友好，访问速度快，体验流畅！👍</p><p><strong>😫 可是…我还是不知道怎么用啊！</strong></p><p>别急别急！旺旺这就手把手教你，整理了目前最全、最靠谱的 DeepSeek R1 使用渠道，从官方平台到第三方，总有一款适合你！  Let’s go! 👇</p><p><strong>1.  官方网站: DeepSeek 触手可及 🌐</strong></p><ul><li><strong>地址:</strong>  <a href="https://www.deepseek.com/">https://www.deepseek.com/</a></li></ul><p><strong>特点:</strong>  <strong>最官方、最直接的体验！</strong>  就像去品牌官网买东西，绝对正品保障！  在这里你可以直接体验 DeepSeek 团队提供的最新、最全的功能。</p><p><strong>使用方法:</strong>  直接访问官网链接即可！  界面简洁明了，操作非常方便，打开就能用！  如果你只是想 <strong>快速体验 DeepSeek R1 的强大能力</strong>，官网绝对是你的首选！  🚀</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202502071736762.png" alt="image-20250207173636616"></p><p><strong>2. Azure AI:  企业级稳定之选 ☁️</strong></p><ul><li><strong>地址:</strong>  <a href="https://ai.azure.com/explore/models/DeepSeek-R1/version/1/registry/azureml-deepseek">https://ai.azure.com/explore/models/DeepSeek-R1/version/1/registry/azureml-deepseek</a></li></ul><p><strong>特点:</strong>  <strong>稳定、可靠、功能强大！</strong>  Azure 是微软的云计算平台，技术实力雄厚，服务质量有保障。  通过 Azure AI 部署 DeepSeek R1，可以获得 <strong>企业级的稳定性和可扩展性</strong>，适合开发者和企业用户。</p><p>​    <img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202502071727357.png" alt="image-20250207172746249"></p><p><strong>使用方法:</strong></p><ul><li><p><strong>注册 Azure 账号:</strong>  你需要先注册一个 Azure 账号。  文章中提到了两种方式：</p><ul><li><strong>绑定信用卡:</strong>  直接绑定信用卡，通常会有赠送的体验金，可以先免费体验。</li><li><strong>学生订阅:</strong>  如果你是学生，可以申请学生订阅，也有赠金可以使用！</li><li><strong>付费使用:</strong>  当然，如果体验金用完或者需要长期使用，就需要付费了。</li></ul></li><li><p><strong>部署 R1 模型:</strong>  账号注册完成后，直接访问提供的 Azure AI 链接，按照指引部署 DeepSeek R1 模型即可！  <strong>注意:</strong>  Azure 平台可能需要一定的技术基础，但官方文档和教程都比较完善，跟着步骤操作一般问题不大。</p></li></ul><p><strong>适合人群:</strong>  <strong>开发者、企业用户、对稳定性有较高要求的用户。</strong>  如果你需要将 DeepSeek R1 集成到自己的项目或者产品中，Azure AI 是一个非常不错的选择。 💪</p><p><strong>3. 硅基流动:  国内用户的福音 💧</strong></p><ul><li><strong>地址:</strong>  <a href="https://cloud.siliconflow.cn/i/Pf8xzecK">https://cloud.siliconflow.cn/i/Pf8xzecK</a></li></ul><p><strong>特点:</strong>  <strong>国内平台，访问速度快，注册就送 Tokens！</strong>  硅基流动是一个国内的 AI 云平台，对国内用户非常友好，访问速度快，延迟低。  更棒的是，<strong>注册就送 2000 万 Tokens！</strong>  对于个人用户来说，这些 Tokens 足够体验很长时间了！ 🎉</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202502071717029.png" alt="image-20250207171707843"></p><p><strong>使用方法:</strong></p><ul><li><p><strong>注册账号:</strong>  访问硅基流动链接，注册账号即可。  <strong>小提示:</strong>  通过文章提供的链接注册，双方都可以获得 2000 万 Tokens 哦！  相当于邀请码福利啦！ 😉</p></li><li><p><strong>开始使用:</strong>  注册成功后，就可以在硅基流动平台上找到 DeepSeek R1 模型，开始你的 AI 探索之旅啦！  硅基流动的界面也比较简洁易用，即使是新手也能快速上手。</p></li></ul><p><strong>适合人群:</strong>  <strong>个人用户、学生、技术爱好者、想免费体验 DeepSeek R1 的用户。</strong>  如果你不想折腾复杂的部署，又想在国内流畅体验 DeepSeek R1，硅基流动绝对是你的不二之选！  👍</p><p><strong>4. GitHub Models &amp; HuggingFace &amp; Nvidia :  技术达人的乐园 🧑‍💻</strong></p><ul><li><strong>GitHub Models 地址:</strong> <a href="https://github.com/marketplace/models/azureml-deepseek/DeepSeek-R1/playground">https://github.com/marketplace/models/azureml-deepseek/DeepSeek-R1/playground</a></li></ul><p>​<img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202502071740569.png" alt="image-20250207174037424"></p><ul><li><strong>HuggingFace 地址:</strong> <a href="https://huggingface.co/deepseek-ai/DeepSeek-R1">https://huggingface.co/deepseek-ai/DeepSeek-R1</a></li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202502071741652.png" alt="image-20250207174101504"></p><ul><li><strong>Nvidia 地址:</strong> <a href="https://build.nvidia.com/deepseek-ai/deepseek-r1">https://build.nvidia.com/deepseek-ai/deepseek-r1</a></li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202502071741094.png" alt="image-20250207174112901"></p><p><strong>特点:</strong>  <strong>面向开发者，更灵活、更开源！</strong>  这几个平台更多的是面向技术开发者，提供了 DeepSeek R1 的模型和相关资源，方便开发者进行二次开发、模型微调、部署等操作。  如果你是技术达人，喜欢折腾，想更深入地研究和使用 DeepSeek R1，这些平台会让你如鱼得水！ 🐠</p><p><strong>使用方法:</strong></p><ul><li><strong>GitHub Models &amp; HuggingFace:</strong>  这两个平台主要是模型托管平台，你可以在上面找到 DeepSeek R1 的模型文件、代码示例、社区交流等资源。  具体使用方法可能需要一定的编程基础和对 AI 模型的了解。</li><li><strong>Nvidia:</strong>  Nvidia 平台可能更侧重于在 Nvidia 硬件上优化 DeepSeek R1 的性能，适合开发者在 Nvidia 环境下进行开发和部署。</li></ul><p><strong>适合人群:</strong>  <strong>开发者、AI 研究者、对模型部署和微调有需求的专业用户。</strong>  如果你是技术大佬，想要深入研究 DeepSeek R1 的底层原理，或者将其应用到更复杂的场景中，这些平台会提供给你更大的自由度和可能性。  🚀</p><p><strong>⚠️  第三方平台需谨慎！  擦亮眼睛避坑！</strong></p><p>文章最后也提到了，除了这些官方和知名平台，市面上还有很多第三方平台也声称提供 DeepSeek R1 服务。  <strong>旺旺在这里要提醒大家，一定要谨慎选择第三方平台！</strong>  因为有些个人搭建的平台可能存在以下风险：</p><ul><li><strong>模型掺水:</strong>  提供的模型可能不是真正的 DeepSeek R1，而是阉割版或者其他模型冒充的。</li><li><strong>功能造假:</strong>  有些平台为了吸引用户，可能会夸大功能，甚至提供虚假的功能。</li><li><strong>信息泄露:</strong>  使用不知名的小平台，可能存在个人信息泄露的风险。</li></ul><p>**所以，旺旺强烈建议大家优先选择官方平台、Azure、硅基流动等 ** <strong>有信誉、有保障的平台</strong> <strong>!</strong>  毕竟，安全和可靠才是最重要的！ 🛡️</p><p><strong>🎉  总结:  选择最适合你的 DeepSeek R1 使用方式！</strong></p><p>总而言之，DeepSeek R1 的使用方式还是非常多样的，无论你是想快速体验，还是深入研究，都能找到合适的平台。  再给大家总结一下我的推荐：</p><ul><li><strong>快速尝鲜:</strong>  <strong>官方网站</strong>  (简单直接!)</li><li><strong>免费体验 + 国内流畅访问:</strong>  <strong>硅基流动</strong>  (注册就送 Tokens!)</li><li><strong>企业级稳定可靠:</strong>  <strong>Azure AI</strong>  (专业之选!)</li><li><strong>技术研究 &amp; 深度开发:</strong>  <strong>GitHub Models &#x2F; HuggingFace &#x2F; Nvidia</strong> (技术达人专属!)</li></ul><p>希望这篇指南能帮助大家轻松玩转 DeepSeek R1 大模型！  快去选择你喜欢的平台，开启你的 AI 探索之旅吧！  🚀  如果你在使用过程中遇到任何问题，欢迎在评论区留言，旺旺会尽力解答哦！  😊  让我们一起拥抱 AI，探索未来！  ✨</p>]]></content>
    
    
    <summary type="html">还在苦恼 DeepSeek R1 怎么用？这篇最全指南带你轻松玩转这款强大的大语言模型！官方平台、Azure、硅基流动...各种渠道一网打尽，小白也能快速上手，开启你的AI探索之旅！</summary>
    
    
    
    <category term="AI" scheme="https://www.wangwangit.com/categories/AI/"/>
    
    
    <category term="DeepSeek R1" scheme="https://www.wangwangit.com/tags/DeepSeek-R1/"/>
    
  </entry>
  
  <entry>
    <title>Github+Hexo搭建个人网站详细教程</title>
    <link href="https://www.wangwangit.com/Hexo%E6%90%AD%E5%BB%BA%E6%95%99%E7%A8%8B/"/>
    <id>https://www.wangwangit.com/Hexo%E6%90%AD%E5%BB%BA%E6%95%99%E7%A8%8B/</id>
    <published>2025-01-02T04:14:00.000Z</published>
    <updated>2025-03-05T07:40:40.917Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021115709.png" alt="v2-d4c1239e75c02e8482c22017a6c8d407_1440w"></p><h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>​随着互联网浪潮的翻腾，国内外涌现出越来越多优秀的社交网站让用户分享信息更加便捷。然后，如果你是一个不甘寂寞的程序猿，是否也想要搭建一个属于自己的个人网站，如果你曾经或者现在正有这样的想法，请跟随这篇文章发挥你的Geek精神，让你快速拥有自己的博客网站，写文章记录生活，享受这种从0到1的过程。</p><h2 id="准备"><a href="#准备" class="headerlink" title="准备"></a>准备</h2><ul><li>Github账号</li><li>安装Git</li><li>安装Node.js</li></ul><h3 id="Github账号"><a href="#Github账号" class="headerlink" title="Github账号"></a>Github账号</h3><p>首先我们需要一个<strong>Github</strong>账号,若是没有的话,可以前往<a href="https://github.com/">官网</a>注册一个,不懂的话,可以参考<a href="https://segmentfault.com/a/1190000040770337">Github账号注册</a></p><h3 id="安装Git"><a href="#安装Git" class="headerlink" title="安装Git"></a>安装Git</h3><p>什么是Git ?</p><p>简单来说Git是开源的分布式版本控制系统，用于敏捷高效地处理项目。我们网站在本地搭建好了，需要使用Git同步到GitHub上。</p><p>如果想要了解Git的细节，参看廖雪峰老师的Git教程：<a href="https://www.liaoxuefeng.com/wiki/896043488029600">Git教程</a></p><p>从Git官网下载：<a href="https://git-scm.com/download/win">Git - Downloading Package (git-scm.com)</a></p><p>现在的机子基本都是64位的，选择64位的安装包，下载后安装，在命令行里输入git测试是否安装成功，若安装失败，参看其他详细的Git安装教程。</p><p>安装成功后，将你的Git与GitHub帐号绑定，鼠标右击打开Git Bash</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021125501.png" alt="image-20230102112524450"></p><p>或者在菜单里搜索Git Bash，设置user.name和user.email配置信息：</p><pre><code>git config --global user.name &quot;你的GitHub用户名&quot;git config --global user.email &quot;你的GitHub注册邮箱&quot;</code></pre><p><strong>若存在多个账号共用的情况,请不要用–global,在每个项目中设置单独的信息</strong></p><p>生成ssh密钥文件：</p><pre><code>ssh-keygen -t rsa -C &quot;你的GitHub注册邮箱&quot;</code></pre><p>然后直接三个回车即可，默认不需要设置密码<br>然后找到生成的.ssh的文件夹中的id_rsa.pub密钥，将内容全部复制</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021126570.png" alt="image-20230102112653519"></p><p>打开github的<a href="https://github.com/settings/keys">SSH and GPG keys</a> 页面，新建new SSH Key</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021127244.png" alt="image-20230102112741186"></p><p>Title为标题，任意填即可，将刚刚复制的id_rsa.pub内容粘贴进去，最后点击Add SSH key。<br>在Git Bash中检测GitHub公钥设置是否成功，输入 ssh <a href="mailto:&#103;&#x69;&#116;&#x40;&#x67;&#105;&#x74;&#x68;&#117;&#x62;&#x2e;&#99;&#111;&#109;">&#103;&#x69;&#116;&#x40;&#x67;&#105;&#x74;&#x68;&#117;&#x62;&#x2e;&#99;&#111;&#109;</a> ,如下图所示则说明配置成功!</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021128368.png" alt="image-20230102112805293"></p><h3 id="安装Node-js"><a href="#安装Node-js" class="headerlink" title="安装Node.js"></a>安装Node.js</h3><p>Hexo基于Node.js， 前往 <a href="https://nodejs.org/zh-cn">Node官网</a>下载安装包，注意安装Node.js会包含环境变量及npm的安装，安装后，检测Node.js是否安装成功，在命令行中输入 node -v </p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021133738.png" alt="image-20230102113340687"></p><p>检测npm是否安装成功，在命令行中输入npm -v :</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021133006.png" alt="image-20230102113355960"></p><p>到这了，安装Hexo的环境已经全部搭建完成。</p><h2 id="安装Hexo"><a href="#安装Hexo" class="headerlink" title="安装Hexo"></a>安装Hexo</h2><p>Hexo就是我们的个人博客网站的框架， 这里需要自己在电脑常里创建一个文件夹，可以命名为Blog，Hexo框架与以后你自己发布的网页都在这个文件夹中。创建好后，进入文件夹中，按住shift键，右击鼠标点击命令行</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img1/202301021140439.png" alt="image-20230102114003386"></p><p>使用npm命令安装Hexo，输入：</p><pre><code>npm install -g hexo-cli </code></pre><p>这个安装时间较长耐心等待，安装完成后，初始化我们的博客，输入：</p><pre><code>hexo init blog</code></pre><p>注意，这里的命令都是作用在刚刚创建的Blog文件夹中。</p><p>为了检测我们的网站雏形，分别按顺序输入以下三条命令：</p><pre><code>hexo new test_my_sitehexo ghexo s</code></pre><p>三个命令依次是新建一篇博客文章、生成网页、在本地预览的操作。完成后，打开浏览器输入地址：</p><p><a href="http://localhost:4000/">http://localhost:4000</a></p><p>可以看出我们写出第一篇博客</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img1/202301021237653.png" alt="image-20230102122254270"></p><p><strong>Hexo常用命令</strong></p><pre><code>npm install hexo -g #安装Hexonpm update hexo -g #升级hexo init #初始化博客命令简写hexo n &quot;我的博客&quot; == hexo new &quot;我的博客&quot; #新建文章hexo g == hexo generate #生成hexo s == hexo server #启动服务预览hexo d == hexo deploy #部署hexo server #Hexo会监视文件变动并自动更新，无须重启服务器hexo server -s #静态模式hexo server -p 5000 #更改端口hexo server -i 192.168.1.1 #自定义 IPhexo clean #清除缓存，若是网页正常情况下可以忽略这条命令</code></pre><h3 id="创建Github仓库"><a href="#创建Github仓库" class="headerlink" title="创建Github仓库"></a>创建Github仓库</h3><p>打开<a href="https://github.com/%EF%BC%8C%E6%96%B0%E5%BB%BA%E4%B8%80%E4%B8%AA%E9%A1%B9%E7%9B%AE%EF%BC%8C%E5%A6%82%E4%B8%8B%E6%89%80%E7%A4%BA%EF%BC%9A">https://github.com/，新建一个项目，如下所示：</a></p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021148586.png" alt="image-20230102114820493"></p><p>然后如下图所示，输入自己的项目名字，后面一定要加<code>.github.io</code>后缀，README初始化也要勾上。<strong>名称一定要和你的github名字完全一样，比如你github名字叫<code>abc</code>，那么仓库名字一定要是<code>abc.github.io</code></strong></p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021149232.png" alt="image-20230102114957155"></p><p>然后项目就建成了，点击<code>Settings</code>，向下拉到最后有个<code>GitHub Pages</code>，点击<code>Choose a theme</code>选择一个主题。然后等一会儿，再回到<code>GitHub Pages</code>，会变成下面这样：</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021151790.png" alt="image-20230102115118709"></p><p>点击那个链接，就会出现自己的网页啦，效果如下(我的是已经使用主题的页面,你们的页面可能不一样)：</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021152123.png" alt="image-20230102115238914"></p><h2 id="连接Github仓库"><a href="#连接Github仓库" class="headerlink" title="连接Github仓库"></a>连接Github仓库</h2><p>打开博客根目录下的<code>_config.yml</code>文件，这是博客的配置文件，在这里你可以修改与博客相关的各种信息。</p><p>修改最后一行的配置：</p><pre><code>deploy:- type: git  repository: https://github.com/wangwangit/wangwangit.github.io.git  branch: master</code></pre><p>repository修改为你自己的github项目地址.</p><h2 id="绑定域名"><a href="#绑定域名" class="headerlink" title="绑定域名"></a>绑定域名</h2><p>现在默认的域名还是<code>xxx.github.io</code>，是不是很没有牌面？想不想也像我一样弄一个专属域名呢，首先你得购买一个域名，xx云都能买，看你个人喜好了。</p><p>以我的谷歌域名为例，如下图所示，添加一条解析记录：</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021204574.png" alt="image-20230102120424491"></p><p>然后打开你的github博客项目，点击<code>settings</code>，拉到下面<code>Custom domain</code>处，填上你自己的域名，保存：</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021205245.png" alt="image-20230102120521154"></p><p>这时候你的项目根目录应该会出现一个名为<code>CNAME</code>的文件了。如果没有的话，打开你本地博客<code>/source</code>目录，我的是<code>D:\study\program\blog\source</code>，新建<code>CNAME</code>文件，注意没有后缀。然后在里面写上你的域名，保存。最后运行<code>hexo g</code>、<code>hexo d</code>上传到github</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021205499.png" alt="image-20230102120559425"></p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202301021206160.png" alt="image-20230102120617069"></p><h2 id="备份博客源文件"><a href="#备份博客源文件" class="headerlink" title="备份博客源文件"></a>备份博客源文件</h2><p>有时候我们想换一台电脑继续写博客，这时候就可以将博客目录下的所有源文件都上传到github上面。</p><p>首先在github博客仓库下新建一个分支<code>hexo</code>，然后<code>git clone</code>到本地，把<code>.git</code>文件夹拿出来，放在博客根目录下。</p><p>然后<code>git checkout hexo</code>切换到<code>hexo</code>分支，然后<code>git add .</code>，然后<code>git commit -m &quot;xxx&quot;</code>，最后<code>git push origin hexo</code>提交就行了。</p><h2 id="替换主题"><a href="#替换主题" class="headerlink" title="替换主题"></a>替换主题</h2><p>我使用的主题是这个: <a href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></p><p>具体操作可以参考该主题的文档</p>]]></content>
    
    
    <summary type="html">true</summary>
    
    
    
    <category term="博客" scheme="https://www.wangwangit.com/categories/%E5%8D%9A%E5%AE%A2/"/>
    
    
    <category term="Hexo" scheme="https://www.wangwangit.com/tags/Hexo/"/>
    
    <category term="Github" scheme="https://www.wangwangit.com/tags/Github/"/>
    
  </entry>
  
  <entry>
    <title>玩转AI - 开发一个 YouTube 视频翻译助手</title>
    <link href="https://www.wangwangit.com/Youtube%E5%AE%9E%E6%97%B6%E9%85%8D%E9%9F%B3/"/>
    <id>https://www.wangwangit.com/Youtube%E5%AE%9E%E6%97%B6%E9%85%8D%E9%9F%B3/</id>
    <published>2024-11-30T03:25:00.000Z</published>
    <updated>2025-03-05T07:40:40.921Z</updated>
    
    <content type="html"><![CDATA[<h1 id="利用-Claude-3-5-打造-YouTube-翻译神器-🎯"><a href="#利用-Claude-3-5-打造-YouTube-翻译神器-🎯" class="headerlink" title="利用 Claude 3.5 打造 YouTube 翻译神器 🎯"></a>利用 Claude 3.5 打造 YouTube 翻译神器 🎯</h1><p>大家好!今天我要分享一个基于 Claude 3.5 开发的实用工具 - YouTube AI 翻译助手。这是一个功能强大的油猴脚本,可以帮助你轻松观看英文 YouTube 视频。让我们一起来看看这个工具有哪些强大的功能! 若想要进行二次开发,可以直接去查看油猴脚本的源代码,构建属于自己的专属工具!</p><p><strong>地址</strong>: <a href="https://greasyfork.org/zh-CN/scripts/519287-youtube-ai-%E7%BF%BB%E8%AF%91%E5%8A%A9%E6%89%8B-pro-%E5%AE%9E%E6%97%B6%E7%BF%BB%E8%AF%91-ai%E9%85%8D%E9%9F%B3">🎬 YouTube AI 翻译助手 Pro - 实时翻译+AI配音</a></p><h2 id="🌟-核心功能介绍"><a href="#🌟-核心功能介绍" class="headerlink" title="🌟 核心功能介绍"></a>🌟 核心功能介绍</h2><p>首先来看看这个翻译助手能为我们做什么:</p><ul><li>🎯 实时字幕翻译: 将英文字幕即时翻译成流畅的中文</li><li>🔊 智能 AI 配音: 自动为翻译后的内容配上自然的中文语音</li><li>📝 内容智能总结: 一键生成视频内容的中文摘要</li><li>🎨 优雅的界面设计: 简洁直观的用户交互体验</li><li>💫 支持多种 AI 模型: 可灵活切换不同的翻译引擎</li><li>🔄 智能缓存机制: 提高翻译响应速度</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202411301222590.png" alt="image-20241130122245234"></p><h2 id="🚀-使用方法"><a href="#🚀-使用方法" class="headerlink" title="🚀 使用方法"></a>🚀 使用方法</h2><h3 id="1-基础配置"><a href="#1-基础配置" class="headerlink" title="1. 基础配置"></a>1. 基础配置</h3><p>首先需要配置你的API API:</p><ul><li>打开脚本设置面板</li><li>填入你的 API Key 和接口地址</li><li>选择合适的翻译模型和语音引擎</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202411301215464.png" alt="image-20241130121554328"></p><h3 id="2-开始使用"><a href="#2-开始使用" class="headerlink" title="2. 开始使用"></a>2. 开始使用</h3><ul><li>进入任意 YouTube 视频页面</li><li>点击”加载字幕”按钮</li><li>等待字幕加载和翻译完成</li><li>点击”开始播放”即可享受中文配音</li></ul><h3 id="3-高级功能"><a href="#3-高级功能" class="headerlink" title="3. 高级功能"></a>3. 高级功能</h3><ul><li>支持字幕实时显示和同步</li><li>可调节语音播放速度和音色</li><li>提供视频内容一键总结</li><li>智能缓存已翻译内容</li></ul><h2 id="💡-使用技巧"><a href="#💡-使用技巧" class="headerlink" title="💡 使用技巧"></a>💡 使用技巧</h2><ol><li><p><strong>选择合适的配音模式</strong></p><ul><li>浏览器原生语音适合快速预览</li><li>AI 语音引擎提供更自然的朗读效果</li></ul></li><li><p><strong>优化翻译效果</strong></p><ul><li>根据视频内容选择专业领域的模型</li><li>调整翻译参数提升准确度</li></ul></li><li><p><strong>提升使用体验</strong></p><ul><li>开启智能缓存加快加载速度</li><li>使用快捷键控制播放暂停</li></ul></li></ol><h2 id="🌈-特色亮点"><a href="#🌈-特色亮点" class="headerlink" title="🌈 特色亮点"></a>🌈 特色亮点</h2><ol><li><p><strong>强大的翻译能力</strong></p><ul><li>采用 Claude 3.5 的先进翻译能力</li><li>支持专业术语和行业词汇</li><li>翻译结果自然流畅</li></ul></li><li><p><strong>优质的语音合成</strong></p><ul><li>多种语音模型可选</li><li>支持语速和音调调节</li><li>声音自然不机械</li></ul></li><li><p><strong>智能的内容处理</strong></p><ul><li>自动分析视频上下文</li><li>智能合并分段字幕</li><li>生成内容摘要</li></ul></li></ol><h2 id="🎯-适用场景"><a href="#🎯-适用场景" class="headerlink" title="🎯 适用场景"></a>🎯 适用场景</h2><ul><li>观看英文教学视频</li><li>学习专业技术内容</li><li>了解国外新闻资讯</li><li>欣赏英文娱乐节目</li></ul><h2 id="💪-未来展望"><a href="#💪-未来展望" class="headerlink" title="💪 未来展望"></a>💪 未来展望</h2><ol><li><p><strong>功能扩展</strong></p><ul><li>支持更多视频平台</li><li>添加更多 AI 模型选择</li><li>提供离线翻译能力</li></ul></li><li><p><strong>性能优化</strong></p><ul><li>提升翻译响应速度</li><li>优化内存占用</li><li>增强稳定性</li></ul></li></ol><h2 id="🎁-使用建议"><a href="#🎁-使用建议" class="headerlink" title="🎁 使用建议"></a>🎁 使用建议</h2><ol><li>确保网络环境稳定</li><li>合理设置翻译参数</li><li>根据需求选择合适的配音模式</li><li>善用缓存功能提升体验</li></ol><h2 id="🌟-结语"><a href="#🌟-结语" class="headerlink" title="🌟 结语"></a>🌟 结语</h2><p>通过这个工具,我们可以轻松跨越语言障碍,享受 YouTube 上的优质内容。它不仅是一个翻译工具,更是连接全球知识的桥梁。希望这个小工具能帮助到更多需要的朋友! </p><p>如果你对这个项目感兴趣,欢迎在评论区留言交流,让我们一起把这个工具做得更好! 🌈</p>]]></content>
    
    
    <summary type="html">详细介绍如何利用 Claude 3.5 开发一个实用的 YouTube 视频翻译和 AI 配音油猴脚本,包含完整的功能介绍和使用教程。</summary>
    
    
    
    <category term="软件" scheme="https://www.wangwangit.com/categories/%E8%BD%AF%E4%BB%B6/"/>
    
    
    <category term="脚本" scheme="https://www.wangwangit.com/tags/%E8%84%9A%E6%9C%AC/"/>
    
  </entry>
  
  <entry>
    <title>iot-dc3阅读笔记</title>
    <link href="https://www.wangwangit.com/iot-dc3%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0/"/>
    <id>https://www.wangwangit.com/iot-dc3%E9%98%85%E8%AF%BB%E7%AC%94%E8%AE%B0/</id>
    <published>2024-06-30T22:25:00.000Z</published>
    <updated>2025-03-05T07:40:40.921Z</updated>
    
    <content type="html"><![CDATA[<h2 id="地址"><a href="#地址" class="headerlink" title="地址"></a>地址</h2><p><a href="https://github.com/pnoker/iot-dc3">pnoker&#x2F;iot-dc3</a></p><p><strong>DC3 是基于 Spring Cloud 的开源可分布式物联网 (IOT) 平台,用于快速开发, 部署物联设备接入项目,是一整套物联系统解决方案。</strong></p><h2 id="目录结构"><a href="#目录结构" class="headerlink" title="目录结构"></a>目录结构</h2><pre><code>.├── dc3 资源文件,如sh,sql等├── dc3-api gRpc定义的接口结构├── dc3-center 平台中心模块├── dc3-common 平台公共模块├── dc3-driver 平台驱动模块├── dc3-driver-sdk 平台驱动SDK模块└── dc3-gateway 平台网关模块</code></pre><h3 id="平台中心模块"><a href="#平台中心模块" class="headerlink" title="平台中心模块"></a>平台中心模块</h3><pre><code>.├── dc3-center-auth 授权模块,主要负责接口权限├── dc3-center-data 数据模块,主要负责驱动数据处理└── dc3-center-manager 管理模块</code></pre><h3 id="平台公共模块"><a href="#平台公共模块" class="headerlink" title="平台公共模块"></a>平台公共模块</h3><pre><code>.├── dc3 git脚本├── dc3-common-api api├── dc3-common-auth 授权相关├── dc3-common-constant 常量相关├── dc3-common-exception 异常相关├── dc3-common-influxdata influxDataDB相关├── dc3-common-log 日志相关├── dc3-common-model 模型相关├── dc3-common-mongo mongoDB相关├── dc3-common-mqtt mqtt相关├── dc3-common-mysql 数据库相关├── dc3-common-public 公共配置相关├── dc3-common-quartz 定时任务├── dc3-common-rabbitmq 消息队列相关├── dc3-common-redis 缓存相关├── dc3-common-thread 线程相关└── dc3-common-web web服务配置</code></pre><h3 id="平台驱动模块"><a href="#平台驱动模块" class="headerlink" title="平台驱动模块"></a>平台驱动模块</h3><pre><code>├── dc3-driver-dtu-yeecom Dtu驱动相关├── dc3-driver-edge-gateway 边缘网关相关├── dc3-driver-listening-virtual 虚拟网关相关├── dc3-driver-lwm2m Lwm2m&amp;Coap相关├── dc3-driver-modbus-tcp modbusTcp相关├── dc3-driver-mqtt mqtt相关├── dc3-driver-opc-da opc-da相关├── dc3-driver-opc-ua opc-ua相关├── dc3-driver-plcs7 plcs7相关├── dc3-driver-virtual 测试驱动相关└── dc3-driver-weather-amap 高德地图天气相关</code></pre><h2 id="授权模块"><a href="#授权模块" class="headerlink" title="授权模块"></a>授权模块</h2><p>授权中心模块（dc3-center-auth）负责管理平台的登录授权功能，包括：</p><ul><li><strong>用户管理</strong>: 包括用户的增删改查，以及密码重置等操作。</li><li><strong>租户管理</strong>: 包括租户的增删改查，以及租户与用户绑定关系的管理。</li><li><strong>IP 黑名单</strong>: 维护 IP 黑名单，限制非法 IP 的访问。</li><li><strong>令牌管理</strong>: 生成、校验和注销用户的 Token 令牌，实现基于 Token 的身份验证。</li></ul><h3 id="登录流程"><a href="#登录流程" class="headerlink" title="登录流程"></a>登录流程</h3><ol><li><strong>获取租户信息</strong>： 网关从请求头中获取租户信息，并调用 TenantApi 查询租户是否存在且已启用。</li><li><strong>获取用户信息</strong>： 网关从请求头中获取用户登录名称，并调用 UserLoginApi 查询用户是否存在且已启用。</li><li><strong>校验 Token</strong>: 网关从请求头中获取 Token 信息，并调用 TokenApi 校验 Token 是否有效。</li><li><strong>设置用户信息</strong>: 如果 Token 校验通过，网关会将用户信息设置到请求头中，并转发到下游服务。</li></ol><pre><code class="java">// AuthenticGatewayFilterFactory.java@Componentstatic class AuthenticGatewayFilter implements GatewayFilter &#123;    @Override    public Mono&lt;Void&gt; filter(ServerWebExchange exchange, GatewayFilterChain chain) &#123;        ServerHttpRequest request = exchange.getRequest();        try &#123;            // 1. 获取租户信息            String tenantHeader = GatewayUtil.getRequestHeader(request, RequestConstant.Header.X_AUTH_TENANT);            String tenant = DecodeUtil.byteToString(DecodeUtil.decode(tenantHeader));            // ... 校验租户            // 2. 获取用户信息            String userHeader = GatewayUtil.getRequestHeader(request, RequestConstant.Header.X_AUTH_LOGIN);            String user = DecodeUtil.byteToString(DecodeUtil.decode(userHeader));            // ... 校验用户            // 3. 校验 Token            String tokenHeader = GatewayUtil.getRequestHeader(request, RequestConstant.Header.X_AUTH_TOKEN);            // ... 解析 Token 信息            // ... 校验 Token 是否有效            // 4. 设置用户信息            ServerHttpRequest build = request.mutate().headers(                httpHeader -&gt; &#123;                    // ... 设置用户信息到请求头                &#125;            ).build();            exchange.mutate().request(build).build();        &#125; catch (Exception e) &#123;            // ... 处理异常        &#125;        return chain.filter(exchange);    &#125;&#125;</code></pre><h3 id="Token-生成"><a href="#Token-生成" class="headerlink" title="Token 生成"></a>Token 生成</h3><p>用户登录时，会调用 TokenController 的 generateToken 接口生成 Token，具体实现步骤如下：</p><ol><li><strong>生成随机盐值</strong>: 调用 TokenService 的 generateSalt 方法生成一个随机盐值，并将其缓存到 Redis 中，有效期为 5 分钟。</li><li><strong>生成 Token</strong>: 调用 KeyUtil 的 generateToken 方法生成 Token，使用 JWT 算法，并将用户名、盐值和租户 ID 作为 payload，盐值作为密钥进行签名，有效期为 12 小时。</li><li><strong>缓存 Token</strong>: 将生成的 Token 缓存到 Redis 中，Key 为 PrefixConstant.USER + SuffixConstant.TOKEN + SymbolConstant.DOUBLE_COLON + username + SymbolConstant.HASHTAG + tenant.getId()，有效期为 12 小时。</li></ol><pre><code class="java">// TokenController.java@Slf4j@RestController@RequestMapping(AuthServiceConstant.TOKEN_URL_PREFIX)public class TokenController &#123;    @Resource    private TokenService tokenService;    @PostMapping(&quot;/generate&quot;)    public R&lt;String&gt; generateToken(@Validated(Auth.class) @RequestBody Login login) &#123;        String token = tokenService.generateToken(login.getName(), login.getSalt(), login.getPassword(), login.getTenant());        return ObjectUtil.isNotNull(token) ? R.ok(token, &quot;The token will expire in 12 hours.&quot;) : R.fail();    &#125;&#125;// TokenServiceImpl.java@Slf4j@Servicepublic class TokenServiceImpl implements TokenService &#123;    @Override    public String generateToken(String username, String salt, String password, String tenantName) &#123;        // ... 校验用户信息        String redisTokenKey = PrefixConstant.USER + SuffixConstant.TOKEN + SymbolConstant.DOUBLE_COLON + username + SymbolConstant.HASHTAG + tenant.getId();        String token = KeyUtil.generateToken(username, redisSaltValue, tenant.getId());        redisUtil.setKey(redisTokenKey, token, TimeoutConstant.TOKEN_CACHE_TIMEOUT, TimeUnit.HOURS);        return token;    &#125;&#125;</code></pre><h3 id="Token校验"><a href="#Token校验" class="headerlink" title="Token校验"></a>Token校验</h3><p>网关在收到请求时，会调用 TokenApi 的 checkTokenValid 接口校验 Token，具体实现步骤如下：</p><ol><li><strong>从 Redis 中获取 Token</strong>: 根据用户名和租户 ID 从 Redis 中获取 Token。</li><li><strong>解析 Token</strong>: 调用 KeyUtil 的 parserToken 方法解析 Token，并校验签名是否正确。</li><li><strong>判断 Token 是否过期</strong>: 如果 Token 未过期，返回 Token 的过期时间。</li></ol><pre><code class="java">// TokenApi.java@Slf4j@GrpcServicepublic class TokenApi extends TokenApiGrpc.TokenApiImplBase &#123;    @Override    public void checkTokenValid(LoginQuery request, StreamObserver&lt;RTokenDTO&gt; responseObserver) &#123;        // ...        TokenValid select = tokenService.checkTokenValid(request.getName(), request.getSalt(), request.getToken(), request.getTenant());        if (ObjectUtil.isNull(select)) &#123;            // ...        &#125; else if (!select.isValid()) &#123;            // ...        &#125; else &#123;            String expireTime = TimeUtil.completeFormat(select.getExpireTime());            // ...        &#125;        // ...    &#125;&#125;// TokenServiceImpl.java@Slf4j@Servicepublic class TokenServiceImpl implements TokenService &#123;    @Override    public TokenValid checkTokenValid(String username, String salt, String token, String tenantName) &#123;        // ...        String redisKey = PrefixConstant.USER + SuffixConstant.TOKEN + SymbolConstant.DOUBLE_COLON + username + SymbolConstant.HASHTAG + tenant.getId();        String redisToken = redisUtil.getKey(redisKey);        // ...        try &#123;            Claims claims = KeyUtil.parserToken(username, salt, token, tenant.getId());            return new TokenValid(true, claims.getExpiration());        &#125; catch (Exception e) &#123;            return new TokenValid(false, null);        &#125;    &#125;&#125;</code></pre><h2 id="数据采集"><a href="#数据采集" class="headerlink" title="数据采集"></a>数据采集</h2><p>我们以 MQTT 驱动为例，讲解一下数据从采集到入库再到展示的完整流程。</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img1/image-20240702151346536.png" alt="image-20240702151346536"></p><h3 id="驱动程序配置"><a href="#驱动程序配置" class="headerlink" title="驱动程序配置"></a>驱动程序配置</h3><p>MQTT 驱动程序（dc3-driver-mqtt）需要在配置文件中配置以下信息：</p><ul><li><strong>MQTT Broker 地址</strong>: 用于连接 MQTT Broker。</li><li><strong>驱动属性</strong>: 定义驱动程序自身的属性，例如连接超时时间、重连次数等。</li><li><strong>位号属性</strong>: 定义驱动程序支持的位号属性，例如读写权限、数据类型、单位等。</li><li><strong>订阅主题</strong>: 用于接收设备上报数据的主题。</li><li><strong>发布主题</strong>: 用于向设备发送指令的主题。</li></ul><h3 id="接收数据"><a href="#接收数据" class="headerlink" title="接收数据"></a>接收数据</h3><p>MQTT 驱动程序通过订阅主题接收设备上报的数据，具体实现步骤如下：</p><ol><li><strong>连接 MQTT Broker</strong>: 驱动程序启动时，会连接到配置的 MQTT Broker。</li><li><strong>订阅主题</strong>: 连接成功后，驱动程序会订阅配置文件中配置的主题。</li><li><strong>接收消息</strong>: 当设备向订阅主题发布消息时，驱动程序会接收到消息，并将其解析成 PointValue 对象。</li><li><strong>发送数据</strong>: 调用 DriverSenderService 的 pointValueSender 方法将 PointValue 对象发送到数据中心模块。</li></ol><pre><code class="java">// MqttReceiveHandler.java@Slf4j@Componentpublic class MqttReceiveHandler &#123;    // ...    @Bean    @ServiceActivator(inputChannel = &quot;mqttInboundChannel&quot;)    public MessageHandler mqttInboundReceive() &#123;        return message -&gt; &#123;            // ...                        MessageHeader messageHeader = new MessageHeader(message.getHeaders());            String payload = message.getPayload().toString();            // ... 校验消息            MqttScheduleJob.messageCount.getAndIncrement();            MqttMessage mqttMessage = new MqttMessage(messageHeader, payload);            // ...            // ... 根据数据量判断是否批量处理            threadPoolExecutor.execute(() -&gt; mqttReceiveService.receiveValue(mqttMessage));            // ...        &#125;;    &#125;&#125;// MqttReceiveServiceImpl.java@Slf4j@Servicepublic class MqttReceiveServiceImpl implements MqttReceiveService &#123;    @Override    public void receiveValue(MqttMessage mqttMessage) &#123;        // do something to process your mqtt messages        log.info(JsonUtil.toPrettyJsonString(mqttMessage));        PointValue pointValue = JsonUtil.parseObject(mqttMessage.getPayload(), PointValue.class);        pointValue.setOriginTime(new Date());        driverSenderService.pointValueSender(pointValue);    &#125;    // ...&#125;</code></pre><h3 id="数据入库"><a href="#数据入库" class="headerlink" title="数据入库"></a>数据入库</h3><p>数据中心模块（dc3-center-data）需要在配置文件中配置数据存储策略，例如：</p><ul><li><strong>存储方式</strong>: 支持 Redis、MongoDB、InfluxDB、TDengine、OpenTSDB、Elasticsearch 等多种存储方式。</li><li><strong>批量处理速度</strong>: 当数据采集速度超过该值时，启用批量处理机制。</li><li><strong>批量处理间隔</strong>: 批量处理的时间间隔。</li></ul><pre><code class="java">// PointValueReceiver.java@Slf4j@Componentpublic class PointValueReceiver &#123;    // ...    @RabbitHandler    @RabbitListener(queues = &quot;#&#123;pointValueQueue.name&#125;&quot;)    public void pointValueReceive(Channel channel, Message message, PointValue pointValue) &#123;        try &#123;            channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);            // ... 校验数据            PointValueScheduleJob.valueCount.getAndIncrement();            log.debug(&quot;Point value, From: &#123;&#125;, Received: &#123;&#125;&quot;, message.getMessageProperties().getReceivedRoutingKey(), pointValue);            // ... 根据数据量判断是否批量处理            threadPoolExecutor.execute(() -&gt; pointValueService.savePointValue(pointValue));            // ...        &#125; catch (Exception e) &#123;            log.error(e.getMessage(), e);        &#125;    &#125;&#125;// PointValueServiceImpl.java@Slf4j@Servicepublic class PointValueServiceImpl implements PointValueService &#123;    // ...    @Override    public void savePointValue(PointValue pointValue) &#123;        // ... 校验数据        pointValue.setCreateTime(new Date());        repositoryHandleService.save(pointValue);    &#125;    // ...&#125;// RepositoryHandleServiceImpl.java@Slf4j@Servicepublic class RepositoryHandleServiceImpl implements RepositoryHandleService &#123;    // ...    @Override    public void save(PointValue pointValue) &#123;        // 保存单个数据到 Redis &amp; Mongo        savePointValueToRepository(pointValue, redisRepositoryService, mongoRepositoryService);        // ... 根据配置选择存储服务    &#125;    // ...&#125;</code></pre><h3 id="数据展示"><a href="#数据展示" class="headerlink" title="数据展示"></a>数据展示</h3><p>用户可以通过平台提供的 API 接口查询设备数据，具体实现步骤如下：</p><ol><li><strong>发送请求</strong>: 用户通过平台 API 接口发送数据查询请求。</li><li><strong>接收请求</strong>: 数据中心模块接收到请求后，解析请求参数，例如设备 ID、位号 ID、时间范围等。</li><li><strong>查询数据</strong>: 根据请求参数，从数据库中查询数据。</li><li><strong>返回数据</strong>: 将查询到的数据返回给用户。</li></ol><pre><code class="java">// PointValueController.java@Slf4j@RestController@RequestMapping(DataServiceConstant.VALUE_URL_PREFIX)public class PointValueController &#123;    // ...    @PostMapping(&quot;/latest&quot;)    public R&lt;Page&lt;PointValue&gt;&gt; latest(@RequestBody PointValuePageQuery pointValuePageQuery) &#123;        // ...        Page&lt;PointValue&gt; page = pointValueService.latest(pointValuePageQuery);        // ...    &#125;    // ...&#125;// PointValueServiceImpl.java@Slf4j@Servicepublic class PointValueServiceImpl implements PointValueService &#123;    // ...    @Override    public Page&lt;PointValue&gt; latest(PointValuePageQuery pageQuery) &#123;        // ...        // 查询实时数据        List&lt;PointValue&gt; pointValues = realtime(pageQuery.getDeviceId(), pointIds);        if (CollUtil.isEmpty(pointValues)) &#123;            // 查询最近数据            pointValues = latest(pageQuery.getDeviceId(), pointIds);        &#125;        // ...        // ... 查询历史数据    &#125;    // ...&#125;</code></pre><h2 id="数据可视化"><a href="#数据可视化" class="headerlink" title="数据可视化"></a>数据可视化</h2><p>平台可以提供数据可视化功能，将查询到的数据以图表等形式展示给用户，例如：</p><ul><li><strong>实时曲线</strong>: 展示位号值的实时变化趋势。</li><li><strong>历史曲线</strong>: 展示位号值在一段时间内的变化趋势。</li><li><strong>报表</strong>: 以表格形式展示位号值。<h3 id="状态展示"><a href="#状态展示" class="headerlink" title="状态展示"></a>状态展示</h3></li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img1/image-20240702154506368.png" alt="image-20240702154506368"></p><p><strong>图解说明:</strong></p><ol><li><strong>驱动程序定时发送设备状态事件消息</strong>: 驱动程序会定期执行定时任务，读取设备的实时状态，并将其封装成 DeviceEvent 对象，通过 RabbitMQ 的事件交换机发送到数据中心。</li><li><strong>数据中心接收并处理设备状态事件消息</strong>: 数据中心模块订阅了事件交换机的消息，接收到设备状态事件消息后，会将设备状态信息写入 Redis，Key 为 device_status:{deviceId}，并设置过期时间。</li><li><strong>前端页面请求设备状态</strong>: 前端页面通过 AJAX 等方式请求数据中心的 API 接口，获取设备的实时状态信息。</li><li><strong>数据中心从 Redis 中读取并返回设备状态</strong>: 数据中心模块接收到前端请求后，从 Redis 中读取设备状态信息，并将其返回给前端页面。</li></ol><h4 id="推送机制"><a href="#推送机制" class="headerlink" title="推送机制"></a>推送机制</h4><ul><li>驱动程序定期读取设备状态，并通过 RabbitMQ 推送到数据中心。</li><li>数据中心接收到状态信息后，更新 Redis 中的缓存数据。</li></ul><h4 id="拉取机制"><a href="#拉取机制" class="headerlink" title="拉取机制"></a>拉取机制</h4><ul><li>前端页面定期轮询数据中心 API 接口，获取最新的设备状态信息。</li></ul><h4 id="核心代码"><a href="#核心代码" class="headerlink" title="核心代码"></a>核心代码</h4><p>1.驱动程序定时发送设备状态</p><pre><code class="java">// DriverCustomServiceImpl.java@Slf4j@Servicepublic class DriverCustomServiceImpl implements DriverCustomService &#123;    // ...    @Override    public void schedule() &#123;        // 定时任务逻辑，例如每隔 10 秒执行一次        driverContext.getDriverMetadata().getDeviceMap().keySet()                .forEach(id -&gt; driverSenderService.deviceEventSender(new DeviceEvent(id, EventConstant.Device.STATUS, DeviceStatusEnum.ONLINE, 25, TimeUnit.SECONDS)));    &#125;    // ...&#125;</code></pre><p>2.数据中心接收和处理设备状态事件</p><pre><code class="java">// DeviceEventReceiver.java@Slf4j@Componentpublic class DeviceEventReceiver &#123;    // ...    @RabbitHandler    @RabbitListener(queues = &quot;#&#123;deviceEventQueue.name&#125;&quot;)    public void deviceEventReceive(Channel channel, Message message, DeviceEvent deviceEvent) &#123;        // ...        switch (deviceEvent.getType()) &#123;            case EventConstant.Device.STATUS:                redisUtil.setKey(                        PrefixConstant.DEVICE_STATUS_KEY_PREFIX + deviceEvent.getDeviceId(),                        deviceEvent.getContent(),                        deviceEvent.getTimeOut(),                        deviceEvent.getTimeUnit()                );                break;            // ...        &#125;        // ...    &#125;&#125;</code></pre><p>3.前端请求设备状态</p><pre><code class="java">// 前端代码示例，使用 AJAX 请求数据setInterval(function() &#123;  $.ajax(&#123;    url: &#39;/data/device/status/device&#39;,    type: &#39;GET&#39;,    success: function(data) &#123;      // 更新页面上的设备状态信息      // ...    &#125;  &#125;);&#125;, 1000); // 每隔 1 秒请求一次</code></pre><h3 id="数据展示-1"><a href="#数据展示-1" class="headerlink" title="数据展示"></a>数据展示</h3><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img1/image-20240702154521066.png" alt="image-20240702154521066"></p><p><strong>图解说明:</strong></p><ol><li><strong>驱动程序读取设备数据</strong>: 驱动程序会定期执行定时任务，读取设备的实时数据，并将其封装成 PointValue 对象。</li><li><strong>驱动程序发送设备数据消息</strong>: 驱动程序将 PointValue 对象通过 RabbitMQ 的数据交换机发送到数据中心。</li><li><strong>数据中心接收并处理设备数据消息</strong>: 数据中心模块订阅了数据交换机的消息，接收到设备数据消息后，会进行以下操作：<ul><li>将 PointValue 对象写入 Redis，Key 为 realtime_value:{deviceId}.{pointId}，用于实时数据展示。</li><li>将 PointValue 对象写入 MongoDB，用于存储历史数据。</li></ul></li><li><strong>前端页面请求设备实时数据</strong>: 前端页面通过 AJAX 等方式请求数据中心的 API 接口，获取设备的实时数据。</li><li><strong>数据中心从 Redis 中读取并返回设备实时数据</strong>: 数据中心模块接收到前端请求后，从 Redis 中读取设备实时数据，并将其返回给前端页面。</li></ol><h4 id="推送机制-1"><a href="#推送机制-1" class="headerlink" title="推送机制"></a>推送机制</h4><ul><li>驱动程序定期读取设备数据，并通过 RabbitMQ 推送到数据中心。</li><li>数据中心接收到数据后，更新 Redis 和 MongoDB 中的缓存数据。</li></ul><h4 id="拉取机制-1"><a href="#拉取机制-1" class="headerlink" title="拉取机制"></a>拉取机制</h4><ul><li>前端页面定期轮询数据中心 API 接口，获取最新的设备数据。</li></ul><h4 id="核心代码-1"><a href="#核心代码-1" class="headerlink" title="核心代码"></a>核心代码</h4><p>1.驱动程序读取并发送设备数据</p><pre><code>// DriverReadScheduleJob.java@Slf4j@Componentpublic class DriverReadScheduleJob extends QuartzJobBean &#123;        // ...    @Override    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException &#123;        // ... 遍历设备和位号        threadPoolExecutor.execute(() -&gt; driverCommandService.read(device.getId(), pointId));        // ...    &#125;&#125;// DriverCommandServiceImpl.java@Slf4j@Servicepublic class DriverCommandServiceImpl implements DriverCommandService &#123;    // ...    @Override    public PointValue read(String deviceId, String pointId) &#123;        // ... 获取设备和位号信息        try &#123;            // 调用驱动自定义 read 方法读取数据            String rawValue = driverCustomService.read(                // ...            );            // ... 校验数据            PointValue pointValue = new PointValue(deviceId, pointId, rawValue, ConvertUtil.convertValue(point, rawValue));            driverSenderService.pointValueSender(pointValue);            return pointValue;        &#125; catch (Exception e) &#123;            // ... 处理异常        &#125;    &#125;        // ...&#125;</code></pre><p>2.数据中心接收和处理设备数据</p><pre><code class="java">// PointValueReceiver.java@Slf4j@Componentpublic class PointValueReceiver &#123;    // ...    @RabbitHandler    @RabbitListener(queues = &quot;#&#123;pointValueQueue.name&#125;&quot;)    public void pointValueReceive(Channel channel, Message message, PointValue pointValue) &#123;        // ...        // ... 根据数据量判断是否批量处理        threadPoolExecutor.execute(() -&gt; pointValueService.savePointValue(pointValue));        // ...    &#125;&#125;// PointValueServiceImpl.java@Slf4j@Servicepublic class PointValueServiceImpl implements PointValueService &#123;    // ...    @Override    public void savePointValue(PointValue pointValue) &#123;        // ...        pointValue.setCreateTime(new Date());        repositoryHandleService.save(pointValue);    &#125;    // ...&#125;// RepositoryHandleServiceImpl.java@Slf4j@Servicepublic class RepositoryHandleServiceImpl implements RepositoryHandleService &#123;    // ...    @Override    public void save(PointValue pointValue) &#123;        // 保存单个数据到 Redis &amp; Mongo        savePointValueToRepository(pointValue, redisRepositoryService, mongoRepositoryService);        // ... 根据配置选择其他存储服务    &#125;    // ...&#125;</code></pre><p>3.前端请求示例</p><pre><code class="java">// 前端代码示例，使用 AJAX 请求数据setInterval(function() &#123;  $.ajax(&#123;    url: &#39;/data/point_value/latest&#39;, // 假设 API 接口为 /data/point_value/latest    type: &#39;POST&#39;,    data: JSON.stringify(&#123; deviceId: &#39;device1&#39; &#125;), // 假设需要查询 deviceId 为 device1 的设备数据    success: function(data) &#123;      // 更新页面上的设备数据      // ...    &#125;  &#125;);&#125;, 1000); // 每隔 1 秒请求一次</code></pre><h2 id="指令下置"><a href="#指令下置" class="headerlink" title="指令下置"></a>指令下置</h2><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img1/image-20240702160343549.png" alt="image-20240702160343549"></p><p><strong>图解说明:</strong></p><ol><li><strong>用户发送指令下置请求</strong>: 用户通过平台 API 接口发送指令下置请求，例如控制设备开关、设置参数等。</li><li><strong>平台网关查询驱动信息</strong>: 平台网关接收到请求后，调用设备管理中心 API 接口，查询该设备绑定的驱动程序信息，例如驱动程序服务名。</li><li><strong>平台网关将指令下发到 RabbitMQ</strong>: 平台网关将指令内容封装成 DeviceCommandDTO 对象，并将其发送到 RabbitMQ 的指令交换机，RoutingKey 为 dc3.r.command.device.{driverServiceName}，例如 dc3.r.command.device.dc3-driver-modbus-tcp。</li><li><strong>驱动程序接收指令消息</strong>: 驱动程序订阅了指令交换机上的对应主题，接收到指令消息后，解析指令内容，例如设备 ID、位号 ID、指令类型、指令参数等。</li><li><strong>驱动程序将指令发送到设备</strong>: 驱动程序根据解析出的指令内容，通过对应的驱动协议将指令发送到设备。</li></ol><h3 id="核心代码-2"><a href="#核心代码-2" class="headerlink" title="核心代码"></a>核心代码</h3><p>1.平台网关发送指令</p><pre><code class="java">// PointValueCommandController.java@Slf4j@RestController@RequestMapping(DataServiceConstant.VALUE_COMMAND_URL_PREFIX)public class PointValueCommandController &#123;    // ...    @PostMapping(&quot;/write&quot;)    public R&lt;Boolean&gt; write(@Validated @RequestBody PointValueWriteVO entityVO) &#123;        // ...        DeviceCommandDTO.DeviceWrite deviceWrite = new DeviceCommandDTO.DeviceWrite(entityVO.getDeviceId(), entityVO.getPointId(), entityVO.getValue());        DeviceCommandDTO deviceCommandDTO = new DeviceCommandDTO(DeviceCommandTypeEnum.WRITE, JsonUtil.toJsonString(deviceWrite));        rabbitTemplate.convertAndSend(RabbitConstant.TOPIC_EXCHANGE_COMMAND, RabbitConstant.ROUTING_DEVICE_COMMAND_PREFIX + rDriverDTO.getData().getServiceName(), deviceCommandDTO);        // ...    &#125;    // ...&#125;</code></pre><p>2.驱动程序接收指令</p><pre><code class="java">// DeviceCommandReceiver.java@Slf4j@Componentpublic class DeviceCommandReceiver &#123;    // ...    @RabbitHandler    @RabbitListener(queues = &quot;#&#123;deviceCommandQueue.name&#125;&quot;)    public void deviceCommandReceive(Channel channel, Message message, DeviceCommandDTO entityDTO) &#123;        // ...        switch (entityDTO.getType()) &#123;            case WRITE:                driverCommandService.write(entityDTO);                break;            // ...        &#125;        // ...    &#125;&#125;// DriverCommandServiceImpl.java@Slf4j@Servicepublic class DriverCommandServiceImpl implements DriverCommandService &#123;    // ...    @Override    public void write(DeviceCommandDTO commandDTO) &#123;        // ... 解析指令内容        log.info(&quot;Start command of write: &#123;&#125;&quot;, JsonUtil.toPrettyJsonString(commandDTO));        Boolean write = write(deviceWrite.getDeviceId(), deviceWrite.getPointId(), deviceWrite.getValue()); // 调用驱动程序自定义的 write 方法        log.info(&quot;End command of write: write &#123;&#125;&quot;, write);    &#125;    // ...&#125;</code></pre><h2 id="MQ订阅设计"><a href="#MQ订阅设计" class="headerlink" title="MQ订阅设计"></a>MQ订阅设计</h2><p>项目采用了一种层次化的主题命名规范，主要包含以下几个部分：</p><table><thead><tr><th>部分</th><th>说明</th><th>示例</th></tr></thead><tbody><tr><td>应用标识</td><td>用于区分不同的应用，通常为 dc3</td><td>dc3</td></tr><tr><td>消息类型</td><td>用于区分不同的消息类型，例如事件、元数据、指令、数据</td><td>e (事件), m (元数据), c (指令), v (数据)</td></tr><tr><td>操作方向</td><td>用于区分消息的发送方和接收方，例如驱动、设备、平台</td><td>d (驱动), p (平台)</td></tr><tr><td>模块类型</td><td>用于区分不同的模块，例如驱动、设备</td><td>driver, device</td></tr><tr><td>服务名称</td><td>用于区分不同的服务，通常为驱动程序或设备的唯一标识</td><td>dc3-driver-mqtt</td></tr><tr><td>其他信息</td><td>可选，用于进一步区分消息，例如设备 ID、位号 ID 等</td><td>{deviceId}, {pointId}</td></tr></tbody></table><p>例如，驱动程序向数据中心发送设备状态事件消息，主题可以命名为：dc3&#x2F;e&#x2F;d&#x2F;device&#x2F;{driverServiceName}，其中：</p><ul><li>dc3： 应用标识</li><li>e： 事件消息类型</li><li>d： 驱动程序发送方向</li><li>device： 模块类型</li><li>{driverServiceName}： 驱动程序服务名称</li></ul><p>项目中，不同的模块会根据其功能和职责订阅不同的主题，以实现高效的消息传递和处理。</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img1/image-20240702161250757.png" alt="image-20240702161250757"></p><p><strong>驱动程序:</strong></p><ul><li><strong>同步主题</strong>: 订阅 dc3&#x2F;sync&#x2F;d&#x2F;{driverClient} 主题，接收平台下发的同步指令。</li><li><strong>元数据主题</strong>: 订阅 dc3&#x2F;m&#x2F;p&#x2F;driver&#x2F;{driverService} 主题，接收平台下发的元数据更新指令。</li><li><strong>指令主题</strong>: 订阅 dc3&#x2F;c&#x2F;p&#x2F;driver&#x2F;{driverService} 和 dc3&#x2F;c&#x2F;p&#x2F;device&#x2F;{driverService} 主题，接收平台下发的指令。</li></ul><p><strong>数据中心:</strong></p><ul><li><strong>事件主题</strong>: 订阅 dc3&#x2F;e&#x2F;d&#x2F;* 主题，接收驱动程序上报的驱动和设备事件消息。</li><li><strong>数据主题</strong>: 订阅 dc3&#x2F;v&#x2F;d&#x2F;* 主题，接收驱动程序上报的设备数据消息。</li></ul><p><strong>平台网关:</strong></p><ul><li><strong>指令主题</strong>: 根据设备绑定的驱动程序，将指令发布到 dc3&#x2F;c&#x2F;p&#x2F;driver&#x2F;{driverServiceName} 或 dc3&#x2F;c&#x2F;p&#x2F;device&#x2F;{driverServiceName} 主题。</li></ul><h2 id="Modbus实现"><a href="#Modbus实现" class="headerlink" title="Modbus实现"></a>Modbus实现</h2><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img1/image-20240702163901323.png" alt="image-20240702163901323"></p>]]></content>
    
    
    <summary type="html">iot-dc3项目阅读笔记</summary>
    
    
    
    <category term="Java" scheme="https://www.wangwangit.com/categories/Java/"/>
    
    
    <category term="物联网" scheme="https://www.wangwangit.com/tags/%E7%89%A9%E8%81%94%E7%BD%91/"/>
    
  </entry>
  
  <entry>
    <title>专属短链服务搭建(Cloudflare系列教程二)</title>
    <link href="https://www.wangwangit.com/%F0%9F%91%8B%20%E8%BF%98%E5%9C%A8%E8%8B%A6%E8%8B%A6%E5%AF%BB%E6%89%BE%E5%85%8D%E8%B4%B9%E5%A5%BD%E7%94%A8%E7%9A%84%E7%9F%AD%E9%93%BE%E6%8E%A5%E6%9C%8D%E5%8A%A1%E5%90%97/"/>
    <id>https://www.wangwangit.com/%F0%9F%91%8B%20%E8%BF%98%E5%9C%A8%E8%8B%A6%E8%8B%A6%E5%AF%BB%E6%89%BE%E5%85%8D%E8%B4%B9%E5%A5%BD%E7%94%A8%E7%9A%84%E7%9F%AD%E9%93%BE%E6%8E%A5%E6%9C%8D%E5%8A%A1%E5%90%97/</id>
    <published>2024-06-24T11:14:00.000Z</published>
    <updated>2025-03-05T07:40:40.925Z</updated>
    
    <content type="html"><![CDATA[<h2 id="👋-还在苦苦寻找免费好用的短链接服务吗？"><a href="#👋-还在苦苦寻找免费好用的短链接服务吗？" class="headerlink" title="👋 还在苦苦寻找免费好用的短链接服务吗？"></a>👋 还在苦苦寻找免费好用的短链接服务吗？</h2><p>你是否经常需要分享链接到社交平台，却因为链接太长而被限制？你是否担心使用第三方短链接平台，数据不安全或者哪天突然就跑路了？</p><p>如果你也有这些烦恼，那么是时候拥有自己的短链接服务了！</p><h2 id="🛠️-准备工作"><a href="#🛠️-准备工作" class="headerlink" title="🛠️ 准备工作"></a>🛠️ 准备工作</h2><p>在开始之前，你需要准备以下几样东西：</p><ol><li><strong>一个 Cloudflare 账号：</strong> 如果没有，可以免费注册一个。</li><li><strong>一个域名：</strong> 越短越好，用来创建你的专属短链接，例如 yourdomain.com。</li><li><strong>一颗爱折腾的心：</strong> 这才是最重要的！ 😂</li></ol><h2 id="🚀-开始搭建"><a href="#🚀-开始搭建" class="headerlink" title="🚀 开始搭建"></a>🚀 开始搭建</h2><h3 id="1-Fork-项目并部署"><a href="#1-Fork-项目并部署" class="headerlink" title="1. Fork 项目并部署"></a>1. Fork 项目并部署</h3><ul><li>访问 GitHub 项目地址： <a href="https://github.com/wangwangit/short">https://github.com/wangwangit/short</a></li><li>点击右上角的 “Fork” 按钮，将项目复制到你的 GitHub 账号下。</li><li>登录 Cloudflare 控制台：<a href="https://dash.cloudflare.com/">https://dash.cloudflare.com/</a></li><li>选择 “Pages” &gt; “创建项目” &gt; “连接到 Git”。</li><li>选择你刚刚 Fork 的项目仓库，在 “设置构建和部署” 部分保持默认设置，然后点击 “保存并部署”。</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406241843317.png" alt="image-20240624184354225"></p><h3 id="2-创建-D1-数据库"><a href="#2-创建-D1-数据库" class="headerlink" title="2. 创建 D1 数据库"></a>2. 创建 D1 数据库</h3><ul><li>参考官方文档 <a href="https://github.com/x-dr/telegraph-Image/blob/main/docs/manage.md">https://github.com/x-dr/telegraph-Image/blob/main/docs/manage.md</a> 创建一个 D1 数据库。(注意,使用下方的语句建表!)</li><li>在 D1 数据库控制台中执行以下 SQL 命令创建数据表：</li></ul><pre><code class="sql">DROP TABLE IF EXISTS links;CREATE TABLE IF NOT EXISTS links (  `id` integer PRIMARY KEY NOT NULL,  `url` text,  `slug` text,  `ua` text,  `ip` text,  `status` int,  `create_time` DATE,  `expires_at` timestamp);DROP TABLE IF EXISTS logs;CREATE TABLE IF NOT EXISTS logs (  `id` integer PRIMARY KEY NOT NULL,  `url` text ,  `slug` text,  `referer` text,  `ua` text ,  `ip` text ,  `create_time` DATE);</code></pre><h3 id="3-绑定短域名"><a href="#3-绑定短域名" class="headerlink" title="3. 绑定短域名"></a>3. 绑定短域名</h3><ul><li>在 Cloudflare 控制台依次点击 “Workers &amp; Pages” &gt; “linklet” &gt; “Custom domains” &gt; “Set up a custom domain”。</li><li>输入要绑定的短域名，例如 s.yourdomain.com，点击提交完成域名绑定。</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406241845036.png" alt="image-20240624184525965"></p><h2 id="🎉-大功告成！"><a href="#🎉-大功告成！" class="headerlink" title="🎉 大功告成！"></a>🎉 大功告成！</h2><p>现在，你可以访问 <a href="https://url.wangwangit.com/">https://url.wangwangit.com/</a> 体验你的专属短链接平台了！</p><h2 id="💡-进阶玩法"><a href="#💡-进阶玩法" class="headerlink" title="💡 进阶玩法"></a>💡 进阶玩法</h2><ul><li><strong>自定义短链接：</strong> 通过修改代码，你可以实现自定义短链接的功能，例如将 s.yourdomain.com&#x2F;abc 指向 <a href="https://www.example.com./">https://www.example.com。</a></li><li><strong>设置链接密码：</strong> 为你的短链接添加密码保护，只有知道密码的人才能访问。</li><li><strong>数据统计：</strong> 记录每个短链接的访问次数、来源等数据，方便你分析链接效果。</li></ul><h2 id="💪-开始你的短链接之旅吧！"><a href="#💪-开始你的短链接之旅吧！" class="headerlink" title="💪 开始你的短链接之旅吧！"></a>💪 开始你的短链接之旅吧！</h2><p>拥有自己的短链接服务，不仅可以提高效率，还能保护数据安全，更能彰显你的个性！赶紧动手试试吧！ 💪</p>]]></content>
    
    
    <summary type="html">还在为找不到好用的短链接服务而烦恼吗？还在担心第三方平台跑路吗？本文将手把手教你利用 Cloudflare Workers 免费搭建自己的短链接平台，简单易懂，小白也能轻松上手！</summary>
    
    
    
    <category term="教程" scheme="https://www.wangwangit.com/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="短链接" scheme="https://www.wangwangit.com/tags/%E7%9F%AD%E9%93%BE%E6%8E%A5/"/>
    
  </entry>
  
  <entry>
    <title>打通网络任督二脉,手把手教你玩转 Cloudflare Tunnel 🚀(Cloudflare系列教程一)</title>
    <link href="https://www.wangwangit.com/%E6%89%93%E9%80%9A%E7%BD%91%E7%BB%9C%E4%BB%BB%E7%9D%A3%E4%BA%8C%E8%84%89,%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E7%8E%A9%E8%BD%AC-Cloudflare-Tunnel-%F0%9F%9A%80/"/>
    <id>https://www.wangwangit.com/%E6%89%93%E9%80%9A%E7%BD%91%E7%BB%9C%E4%BB%BB%E7%9D%A3%E4%BA%8C%E8%84%89,%E6%89%8B%E6%8A%8A%E6%89%8B%E6%95%99%E4%BD%A0%E7%8E%A9%E8%BD%AC-Cloudflare-Tunnel-%F0%9F%9A%80/</id>
    <published>2024-06-19T10:25:00.000Z</published>
    <updated>2025-03-05T07:40:40.921Z</updated>
    
    <content type="html"><![CDATA[<h2 id="👋-还在为远程访问私有网络而烦恼？"><a href="#👋-还在为远程访问私有网络而烦恼？" class="headerlink" title="👋  还在为远程访问私有网络而烦恼？"></a>👋  还在为远程访问私有网络而烦恼？</h2><p>作为一名开发者或者系统管理员，你是否经常遇到以下情况：</p><ul><li>😫  需要远程访问公司内网的开发环境或者服务器。</li><li>😫  想要安全地将自己的应用程序发布到公网上，但又不想暴露自己的真实 IP 地址和端口。</li><li>😫  厌倦了繁琐的 VPN 配置和维护工作，渴望更简单、高效的远程访问方案。</li></ul><p>如果你对以上任何一个问题的答案是肯定的，那么恭喜你，你来对地方了！🎉  <strong>Cloudflare Tunnel</strong> 正是解决这些问题的利器。</p><h2 id="✨-Cloudflare-Tunnel：你的网络任督二脉"><a href="#✨-Cloudflare-Tunnel：你的网络任督二脉" class="headerlink" title="✨  Cloudflare Tunnel：你的网络任督二脉"></a>✨  Cloudflare Tunnel：你的网络任督二脉</h2><p>Cloudflare Tunnel 是 Cloudflare 提供的一项免费服务，它可以帮助你：</p><ul><li>🔒  <strong>安全地连接私有网络</strong>：无需暴露任何服务器的公网 IP 地址和端口，即可通过 Cloudflare 的全球网络安全地访问你的私有应用程序和网络。</li><li>🚀  <strong>简化远程访问</strong>：告别传统的 VPN 配置，只需几条简单的命令即可建立安全连接，轻松实现远程办公和开发。</li><li>💪  <strong>提高网络性能</strong>：利用 Cloudflare 的全球 CDN 网络加速你的应用程序访问速度，提升用户体验。</li></ul><h2 id="🛠️-手把手教你搭建-Cloudflare-Tunnel"><a href="#🛠️-手把手教你搭建-Cloudflare-Tunnel" class="headerlink" title="🛠️  手把手教你搭建 Cloudflare Tunnel"></a>🛠️  手把手教你搭建 Cloudflare Tunnel</h2><p>接下来，我将手把手教你如何使用 Cloudflare Tunnel 连接你的应用程序和网络。别担心，即使你是新手也能轻松上手！😉</p><h3 id="1-准备工作"><a href="#1-准备工作" class="headerlink" title="1.  准备工作"></a>1.  准备工作</h3><ul><li>一个 Cloudflare 账号 (免费版即可)。</li><li>一个已添加到 Cloudflare 并配置了域名解析的域名。</li><li>一台可以连接互联网的电脑，用于安装 Cloudflare Tunnel 客户端 (cloudflared)。</li></ul><h3 id="2-创建-Cloudflare-Tunnel"><a href="#2-创建-Cloudflare-Tunnel" class="headerlink" title="2.  创建 Cloudflare Tunnel"></a>2.  创建 Cloudflare Tunnel</h3><ol><li>登录 Cloudflare Zero Trust 控制台，选择 <strong>Access</strong> &gt; <strong>Tunnels</strong>。<br><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240619094137037.png" alt="image-20240619094137037"></li><li>点击 <strong>Create a tunnel</strong>，选择 <strong>Cloudflared</strong> 作为连接器类型，然后点击 <strong>Next</strong>。<br><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240619093817404.png" alt="image-20240619093817404"></li><li>输入隧道的名称，例如 <code>my-first-tunnel</code>，然后点击 <strong>Save tunnel</strong>。</li></ol><h3 id="3-安装并运行-Cloudflared"><a href="#3-安装并运行-Cloudflared" class="headerlink" title="3.  安装并运行 Cloudflared"></a>3.  安装并运行 Cloudflared</h3><ol><li>根据你的操作系统下载并安装 Cloudflared 客户端。按照官方说明进行安装!<br><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240619094613036.png" alt="image-20240619094613036"></li><li>使用管理员权限打开终端或命令行窗口，输入上面红色框框中的命令执行<br><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240619094556608.png" alt="image-20240619094556608"></li><li>查看控制台页面,会发现隧道已经处于使用状态<br><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240619094631701.png" alt="image-20240619094631701"></li><li>连接应用程序<br><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240619094327321.png" alt="image-20240619094327321"><br>在 Cloudflare Zero Trust 控制台中，进入你创建的隧道，选择 Public Hostnames 选项卡。<br>点击 Add a public hostname。<br>在 Subdomain 字段中输入你想要使用的子域名，例如 app。<br>在 Domain 字段中选择你想要使用的域名。<br>在 Service 字段中输入你的应用程序地址，例如 <a href="http://localhost:8080。">http://localhost:8080。</a><br>点击 Save。<br><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240619094826136.png" alt="image-20240619094826136"></li></ol><p>🎉 恭喜！现在你可以通过 <a href="https://app.yourdomain.com/">https://app.yourdomain.com</a> 访问你的应用程序了！<br><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240619094926522.png" alt="image-20240619094926522"><br>现在，你可以通过 Cloudflare Tunnel 安全地访问你的私有网络了。<br>后续需要停止或者卸载服务,可以前往系统的服务管理里面查看!<br><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240619095224493.png" alt="image-20240619095224493"></p><h2 id="🚀-开启无忧远程访问新体验！"><a href="#🚀-开启无忧远程访问新体验！" class="headerlink" title="🚀 开启无忧远程访问新体验！"></a>🚀 开启无忧远程访问新体验！</h2><p>通过本教程，你已经学会了如何使用 Cloudflare Tunnel 建立安全、便捷的远程访问通道。</p><p><strong>Cloudflare Tunnel 还有更多强大的功能等着你去探索，例如：</strong></p><ul><li><strong>访问控制策略</strong>: 控制哪些用户和设备可以访问你的应用程序和网络。</li><li><strong>流量路由</strong>: 根据不同的条件将流量路由到不同的目标服务器。</li><li><strong>日志和监控</strong>: 实时监控隧道流量和连接状态。</li></ul><p><strong>官方文档地址</strong>:  (<a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/">https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/</a>)</p><p>赶快行动起来，体验 Cloudflare Tunnel 带来的便利和安全吧！😊</p>]]></content>
    
    
    <summary type="html">还在为远程访问私有网络而烦恼吗？Cloudflare Tunnel 提供了一种简单、安全、高效的解决方案，让你轻松连接应用程序和网络，告别繁琐的配置和安全风险。本文将带你一步步搭建属于你自己的安全通道，开启无忧远程访问新体验！</summary>
    
    
    
    <category term="教程" scheme="https://www.wangwangit.com/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Cloudflare" scheme="https://www.wangwangit.com/tags/Cloudflare/"/>
    
    <category term="内网穿透" scheme="https://www.wangwangit.com/tags/%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/"/>
    
  </entry>
  
  <entry>
    <title>阿里云盘限速太心塞？这款开源神器让你告别龟速下载！</title>
    <link href="https://www.wangwangit.com/%E9%98%BF%E9%87%8C%E4%BA%91%E7%9B%98%E6%BB%A1%E9%80%9F%E4%B8%8B%E8%BD%BD%E6%95%99%E7%A8%8B/"/>
    <id>https://www.wangwangit.com/%E9%98%BF%E9%87%8C%E4%BA%91%E7%9B%98%E6%BB%A1%E9%80%9F%E4%B8%8B%E8%BD%BD%E6%95%99%E7%A8%8B/</id>
    <published>2024-06-16T08:14:00.000Z</published>
    <updated>2025-03-05T07:40:40.925Z</updated>
    
    <content type="html"><![CDATA[<h2 id="还在为阿里云盘限速而烦恼吗？😭"><a href="#还在为阿里云盘限速而烦恼吗？😭" class="headerlink" title="还在为阿里云盘限速而烦恼吗？😭"></a>还在为阿里云盘限速而烦恼吗？😭</h2><p>相信很多小伙伴都跟我一样，是阿里云盘的忠实用户。海量存储空间、简洁的操作界面，都让我们爱不释手。可是，最近阿里云盘开始限速了，下载速度慢如蜗牛🐌，真是让人抓狂！难道就没有什么办法可以解决了吗？</p><p>别担心！今天就来给大家推荐一款开源神器——<strong>小白羊云盘</strong>，让你彻底告别龟速下载，畅享飞一般的感觉！🚀</p><h2 id="小白羊云盘是什么？"><a href="#小白羊云盘是什么？" class="headerlink" title="小白羊云盘是什么？"></a>小白羊云盘是什么？</h2><p>小白羊云盘是一款基于阿里云盘 Open API 开发的第三方客户端，支持 Windows、macOS 和 Linux 等多个平台。它不仅完全免费，而且没有任何广告和限制，最重要的是，<strong>它可以突破阿里云盘的下载限速！</strong></p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161558283.png" alt="image-20240616155845215"></p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161600381.png" alt="image-20240616160020286"></p><h2 id="小白羊云盘有哪些优势？"><a href="#小白羊云盘有哪些优势？" class="headerlink" title="小白羊云盘有哪些优势？"></a>小白羊云盘有哪些优势？</h2><p>除了不限速之外，小白羊云盘还拥有许多其他优点：</p><ul><li><strong>界面简洁清爽，操作简单易用</strong>，即使是小白用户也能轻松上手。</li><li><strong>支持多账号登录</strong>，方便管理多个阿里云盘账号。</li><li><strong>提供特有的文件夹树</strong>，方便快速查找文件。</li><li><strong>支持在线播放高清视频</strong>，并支持外挂字幕、音轨和播放速度调整。</li><li><strong>支持批量重命名、快速复制、直接删除等便捷操作</strong>。</li><li><strong>支持远程 Aria2 下载</strong>，可以将文件直接下载到远程服务器。</li></ul><h2 id="如何下载安装小白羊云盘？"><a href="#如何下载安装小白羊云盘？" class="headerlink" title="如何下载安装小白羊云盘？"></a>如何下载安装小白羊云盘？</h2><p>1.打开小白羊云盘的 GitHub 页面：</p><p>原版本: (<a href="https://github.com/liupan1890/aliyunpan">https://github.com/liupan1890/aliyunpan</a>)</p><p>二开版本: (<a href="https://github.com/gaozhangmin/aliyunpan">https://github.com/gaozhangmin/aliyunpan</a>)</p><p>2.根据你的操作系统，下载对应的安装包(若是打不开github地址,可以前往)。</p><p><a href="https://url.wangwangit.com/aliyun">https://url.wangwangit.com/aliyun</a></p><p>3.双击安装包，按照提示完成安装。</p><h2 id="如何使用小白羊云盘？"><a href="#如何使用小白羊云盘？" class="headerlink" title="如何使用小白羊云盘？"></a>如何使用小白羊云盘？</h2><p>安装完成后，打开小白羊云盘，使用你的阿里云盘账号登录即可。然后你就可以像使用官方客户端一样，浏览、下载和管理你的文件了。</p><h2 id="一些使用技巧"><a href="#一些使用技巧" class="headerlink" title="一些使用技巧"></a>一些使用技巧</h2><ul><li><strong>开启下载加速：</strong> 在设置中开启多线程下载，可以最大限度地提升下载速度。</li><li><strong>使用远程 Aria2 下载：</strong> 如果你有自己的服务器，可以使用远程 Aria2 下载功能，将文件直接下载到服务器，进一步提升下载速度。</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161558532.png" alt="image-20240616155814464"></p><ul><li><strong>利用好文件夹树：</strong> 文件夹树可以帮助你快速定位到目标文件，提高操作效率。</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161558677.png" alt="image-20240616155824616"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>阿里云盘限速虽然让人头疼，但是有了小白羊云盘这款神器，我们就可以轻松突破限制，畅享高速下载的乐趣了！如果你也被阿里云盘限速困扰，不妨试试这款开源软件，相信它一定不会让你失望！😊</p>]]></content>
    
    
    <summary type="html">阿里云盘限速怎么办？试试这款开源神器——小白羊云盘，告别龟速下载，享受飞一般的感觉！本文将详细介绍小白羊云盘的功能特点、下载安装教程以及使用技巧，助你轻松解决阿里云盘限速烦恼！</summary>
    
    
    
    <category term="软件" scheme="https://www.wangwangit.com/categories/%E8%BD%AF%E4%BB%B6/"/>
    
    
    <category term="小白羊云盘" scheme="https://www.wangwangit.com/tags/%E5%B0%8F%E7%99%BD%E7%BE%8A%E4%BA%91%E7%9B%98/"/>
    
  </entry>
  
  <entry>
    <title>WizTree-你的磁盘空间救星 🚀</title>
    <link href="https://www.wangwangit.com/WizTree-%E4%BD%A0%E7%9A%84%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E6%95%91%E6%98%9F-%F0%9F%9A%80/"/>
    <id>https://www.wangwangit.com/WizTree-%E4%BD%A0%E7%9A%84%E7%A3%81%E7%9B%98%E7%A9%BA%E9%97%B4%E6%95%91%E6%98%9F-%F0%9F%9A%80/</id>
    <published>2024-06-16T07:14:00.000Z</published>
    <updated>2025-03-05T07:40:40.921Z</updated>
    
    <content type="html"><![CDATA[<p>还记得电脑刚买回来时运行如飞的感觉吗？随着时间推移，软件安装、文件下载，我们的电脑硬盘，尤其是 C 盘空间越来越小，电脑也变得越来越卡顿。 😩 </p><p>别担心！今天就给大家推荐一款磁盘空间分析和清理神器——<strong>WizTree</strong>，它可以帮助你快速找到占用空间的大文件，并进行清理，让你的电脑恢复流畅！</p><h2 id="为什么选择-WizTree？"><a href="#为什么选择-WizTree？" class="headerlink" title="为什么选择 WizTree？"></a>为什么选择 WizTree？</h2><ul><li><strong>扫描速度极快</strong>:  告别传统磁盘清理工具的漫长等待，WizTree 可以在几秒钟内完成对整个磁盘的扫描，效率超高！</li><li><strong>结果清晰直观</strong>:  通过树状图和文件列表两种方式展示磁盘空间使用情况，让你一目了然地找到占用空间大户。</li><li><strong>操作简单易懂</strong>:  无需复杂的操作，即使是电脑小白也能轻松上手。</li></ul><h2 id="WizTree-使用教程：快速清理-C-盘"><a href="#WizTree-使用教程：快速清理-C-盘" class="headerlink" title="WizTree 使用教程：快速清理 C 盘"></a>WizTree 使用教程：快速清理 C 盘</h2><p><strong>步骤一：下载安装 WizTree</strong></p><ol><li>点击 WizTree 官网下载地址：<a href="https://diskanalyzer.com/download">https://diskanalyzer.com/download</a></li><li>选择适合你电脑系统的版本进行下载。</li><li>下载完成后，双击安装文件，按照提示完成安装。</li></ol><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161546374.png" alt="image-20240616154645186"></p><p><strong>步骤二：扫描 C 盘</strong></p><ol><li>打开 WizTree 软件，在软件界面上方选择要扫描的磁盘，这里我们选择 C 盘。</li><li>点击 “扫描” 按钮，WizTree 会开始扫描 C 盘，整个过程非常快。</li></ol><p><strong>步骤三：分析磁盘空间使用情况</strong></p><p>扫描完成后，你可以在 “树查看” 界面看到 C 盘下所有文件夹和文件的大小，以及它们占用的空间比例。</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161547587.png" alt="image-20240616154720489"></p><p>你还可以切换到 “文件查看” 界面，通过文件类型、大小等条件筛选文件。</p><p><strong>步骤四：清理无用文件</strong></p><ol><li>找到想要清理的文件或文件夹，右键点击，选择 “删除” 即可。</li><li><strong>注意！</strong>  在删除文件之前，请务必确认该文件不再需要，<strong>不要删除系统文件或你不认识的文件</strong>，以免造成系统错误。</li></ol><h2 id="清理-C-盘小贴士"><a href="#清理-C-盘小贴士" class="headerlink" title="清理 C 盘小贴士"></a>清理 C 盘小贴士</h2><ul><li>定期清理系统垃圾文件：可以使用系统自带的磁盘清理工具或第三方软件进行清理。</li><li>卸载不常用的软件：  打开 “控制面板”  - “程序”  - “卸载程序”，找到不常用的软件进行卸载。</li><li>转移文件到其他磁盘：  将图片、视频、文档等大文件转移到其他磁盘，释放 C 盘空间。</li></ul><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>WizTree 是一款简单易用 yet 功能强大的磁盘空间分析和清理工具，可以帮助你快速释放磁盘空间，提升电脑运行速度。希望这篇教程能够帮助你更好地管理磁盘空间，让你的电脑保持最佳状态！ 😊 </p>]]></content>
    
    
    <summary type="html">今天就给大家推荐一款磁盘空间分析和清理神器——WizTree，它可以帮助你快速找到占用空间的大文件，并进行清理，让你的电脑恢复流畅！</summary>
    
    
    
    <category term="教程" scheme="https://www.wangwangit.com/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="WizTree" scheme="https://www.wangwangit.com/tags/WizTree/"/>
    
  </entry>
  
  <entry>
    <title>Google账号免手机号注册</title>
    <link href="https://www.wangwangit.com/Google%E8%B4%A6%E5%8F%B7%E5%85%8D%E6%89%8B%E6%9C%BA%E5%8F%B7%E6%B3%A8%E5%86%8C/"/>
    <id>https://www.wangwangit.com/Google%E8%B4%A6%E5%8F%B7%E5%85%8D%E6%89%8B%E6%9C%BA%E5%8F%B7%E6%B3%A8%E5%86%8C/</id>
    <published>2024-06-16T04:14:00.000Z</published>
    <updated>2025-03-05T07:40:40.917Z</updated>
    
    <content type="html"><![CDATA[<p>本指南将带你学习如何一步一步完成Goo账号注册。尤其在注册过程中，很多人遇到“手机号码无法验证”的问题，在本文中将为你完美解决。而且超级简单,简直是懒人必备!</p><h2 id="注册Goo账号之前的工具准备"><a href="#注册Goo账号之前的工具准备" class="headerlink" title="注册Goo账号之前的工具准备"></a>注册Goo账号之前的工具准备</h2><p>注册谷歌账号前，我们需要以下工具：</p><ul><li>干净的网络环境</li><li>一个带Goo商店的手机</li></ul><h2 id="开始注册"><a href="#开始注册" class="headerlink" title="开始注册"></a>开始注册</h2><p>首先,我们打开Goo商店,如下图!点击这个按钮,会有添加账号的选项!</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161524383.png" alt="image-20240616152445325"></p><p>然后点击下方的创建账号</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161525406.png" alt="image-20240616152513366"></p><p>按照页面的提示,填入相关信息,并且修改自己想要的前缀名!如果网络环境正常,那么一直下一步!账号就注册完了!</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161526717.png" alt="image-20240616152650668"></p><h2 id="最后"><a href="#最后" class="headerlink" title="最后"></a>最后</h2><p>若中途提示输入手机号,使用国内手机号应该也是可以正常能够注册的,若是不行,则说明网络不行,那么就放弃吧!!! </p><p>每天注册的账号数量会有限制。建议每天用一个手机号只申请一个账号, 避免被系统识别为恶意申请。</p>]]></content>
    
    
    <summary type="html">本指南将带你学习如何一步一步完成Google账号注册。尤其在注册过程中，很多人遇到“手机号码无法验证”的问题，在本文中将为你完美解决。而且超级简单,简直是懒人必备!</summary>
    
    
    
    <category term="教程" scheme="https://www.wangwangit.com/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Google" scheme="https://www.wangwangit.com/tags/Google/"/>
    
  </entry>
  
  <entry>
    <title>跟软件卸载说拜拜👋 IObit Uninstaller Pro 让你的电脑焕然一新</title>
    <link href="https://www.wangwangit.com/%E8%B7%9F%E8%BD%AF%E4%BB%B6%E5%8D%B8%E8%BD%BD%E8%AF%B4%E6%8B%9C%E6%8B%9C%F0%9F%91%8B-IObit-Uninstaller-Pro-%E8%AE%A9%E4%BD%A0%E7%9A%84%E7%94%B5%E8%84%91%E7%84%95%E7%84%B6%E4%B8%80%E6%96%B0/"/>
    <id>https://www.wangwangit.com/%E8%B7%9F%E8%BD%AF%E4%BB%B6%E5%8D%B8%E8%BD%BD%E8%AF%B4%E6%8B%9C%E6%8B%9C%F0%9F%91%8B-IObit-Uninstaller-Pro-%E8%AE%A9%E4%BD%A0%E7%9A%84%E7%94%B5%E8%84%91%E7%84%95%E7%84%B6%E4%B8%80%E6%96%B0/</id>
    <published>2024-06-15T11:14:00.000Z</published>
    <updated>2025-03-05T07:40:40.925Z</updated>
    
    <content type="html"><![CDATA[<p>你是否也像我一样，看到好软件就忍不住下载试试？😁  可时间一长，电脑里就塞满了各种软件，有些早就不用了，想卸载却怎么也卸不干净…  结果系统越来越慢，还时不时蹦出各种错误，真是让人头疼！😩</p><p>相信很多朋友都遇到过类似的烦恼。Windows 系统自带的卸载功能，有时候真的不够给力，经常会留下一些顽固的软件残留，占用宝贵的磁盘空间，拖慢系统速度。 </p><p>为了解决这个问题，我尝试过很多方法，最终发现了一款神器——<strong>IObit Uninstaller Pro</strong>。它是一款专业且易用的软件卸载工具，可以帮助我们彻底清除电脑上的无用软件及其残留，让系统恢复流畅运行！🚀</p><h2 id="为什么选择-IObit-Uninstaller-Pro？"><a href="#为什么选择-IObit-Uninstaller-Pro？" class="headerlink" title="为什么选择 IObit Uninstaller Pro？"></a>为什么选择 IObit Uninstaller Pro？</h2><p>你可能会问，市面上卸载工具那么多，为什么偏偏选择它呢？ 🤔 </p><p>那是因为 IObit Uninstaller Pro 真的好用！它不仅可以轻松卸载顽固软件，还能深度清理残留文件和注册表项，不留一丝痕迹。更重要的是，它还提供了一些非常实用的附加功能，例如：</p><ul><li><strong>软件健康扫描</strong>: 一键检测已安装软件的状态，修复权限、通知和注册表等问题，让软件保持最佳状态。</li><li><strong>监控软件安装</strong>: 实时监控软件安装过程，备份安装包，并记录对系统的更改，方便日后卸载或恢复。</li><li><strong>浏览器扩展管理</strong>:  自动检测并清理恶意浏览器插件，保护上网安全。</li><li><strong>软件批量升级</strong>:  一键更新多个软件，省时省力。</li><li><strong>强制卸载</strong>:  对于无法正常卸载的软件，可以使用强制卸载功能将其彻底清除。</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161620112.png" alt="image-20240616162027004"></p><h2 id="IObit-Uninstaller-Pro-使用指南"><a href="#IObit-Uninstaller-Pro-使用指南" class="headerlink" title="IObit Uninstaller Pro 使用指南"></a>IObit Uninstaller Pro 使用指南</h2><p>看到这里，你是不是已经迫不及待想要试试这款神器了呢？别着急，我这就来教你如何使用 IObit Uninstaller Pro 彻底卸载软件，释放磁盘空间，让你的电脑焕然一新！✨</p><p><strong>步骤一：下载并安装 IObit Uninstaller Pro</strong></p><p>你可以前往 IObit 官网 [<a href="https://www.iobit.com/en/advanceduninstaller.php">https://www.iobit.com/en/advanceduninstaller.php</a>) 下载 IObit Uninstaller Pro 的最新版本。安装过程非常简单，只需按照提示操作即可。</p><p><strong>步骤二：选择要卸载的软件</strong></p><p>打开 IObit Uninstaller Pro，你将看到所有已安装软件的列表。找到你想要卸载的软件，并勾选它。</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161619039.png" alt="image-20240616161957927"></p><p><strong>步骤三：执行卸载程序</strong></p><p>勾选软件后，点击“卸载”按钮，IObit Uninstaller Pro 会自动运行该软件的卸载程序。</p><p><strong>步骤四：深度扫描残留文件</strong></p><p>软件卸载完成后，IObit Uninstaller Pro 会自动进行深度扫描，查找并清理残留文件、文件夹和注册表项。</p><p><strong>步骤五：确认清理</strong></p><p>扫描完成后，IObit Uninstaller Pro 会列出所有找到的残留文件。确认无误后，点击“删除”按钮即可将其彻底清除。</p><h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h2><p>使用 IObit Uninstaller Pro，软件卸载变得如此简单轻松！它不仅可以帮助我们彻底清除无用软件，还能释放磁盘空间，提升系统性能，让电脑保持最佳状态。</p><p>如果你也经常为软件卸载不干净而烦恼，不妨试试 IObit Uninstaller Pro 吧！相信它会成为你管理电脑软件的好帮手！👍</p><p>最后大家要是要激活Pro,可以看图示方法搜索一下激活码!</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161621768.png" alt="image-20240616162131706"></p>]]></content>
    
    
    <summary type="html">你是否也曾被电脑里顽固的软件残留困扰？卸载不干净，系统越来越慢？别担心！今天就来分享一款神器——IObit Uninstaller Pro，帮你彻底告别软件卸载烦恼，让电脑焕然一新！</summary>
    
    
    
    <category term="软件" scheme="https://www.wangwangit.com/categories/%E8%BD%AF%E4%BB%B6/"/>
    
    
    <category term="Windows" scheme="https://www.wangwangit.com/tags/Windows/"/>
    
    <category term="系统清理" scheme="https://www.wangwangit.com/tags/%E7%B3%BB%E7%BB%9F%E6%B8%85%E7%90%86/"/>
    
  </entry>
  
  <entry>
    <title>电脑卡顿？别慌！试试 Driver Booster 一键更新驱动，让你的 Windows 溜到飞起 🚀</title>
    <link href="https://www.wangwangit.com/Driver-Booster%E4%B8%80%E9%94%AE%E6%9B%B4%E6%96%B0%E9%A9%B1%E5%8A%A8/"/>
    <id>https://www.wangwangit.com/Driver-Booster%E4%B8%80%E9%94%AE%E6%9B%B4%E6%96%B0%E9%A9%B1%E5%8A%A8/</id>
    <published>2024-06-14T11:14:00.000Z</published>
    <updated>2025-03-05T07:40:40.913Z</updated>
    
    <content type="html"><![CDATA[<p>前几天，我的蓝牙鼠标突然罢工了，怎么也连接不上电脑。😥  捣鼓了半天，怀疑是驱动出了问题。可是，手动更新驱动太麻烦了，还要自己去找官网下载，一不小心还会下载错版本。😩</p><p>就在我快要放弃的时候，朋友推荐我试试 <strong>Driver Booster</strong>。抱着试试看的心态，我下载安装了这款软件，没想到它真的帮我解决了问题！🤩</p><h2 id="Driver-Booster-是什么？"><a href="#Driver-Booster-是什么？" class="headerlink" title="Driver Booster 是什么？"></a>Driver Booster 是什么？</h2><p>Driver Booster 是一款专为 Windows 用户设计的驱动更新工具，它可以自动检测并更新过时的驱动程序，让你的电脑硬件始终保持最佳状态。它拥有超过 650 万种设备驱动的庞大数据库，无论是显卡、声卡、网卡，还是打印机、扫描仪，都能轻松找到并更新最新的驱动程序。</p><h2 id="为什么选择-Driver-Booster？"><a href="#为什么选择-Driver-Booster？" class="headerlink" title="为什么选择 Driver Booster？"></a>为什么选择 Driver Booster？</h2><p>你可能会问，更新驱动程序，Windows 系统不是自带更新功能吗？为什么还要用第三方软件呢？ 🤔</p><p>这是因为 Windows 更新功能有时候并不靠谱，它更新驱动程序的速度比较慢，而且更新的版本也不一定是最新的。而 Driver Booster 可以扫描系统中所有硬件设备，并与最新的驱动程序数据库进行比对，快速找到需要更新的驱动程序，并提供一键下载和安装的功能，省时省力又安全可靠。👍</p><p>除此之外，Driver Booster 还有一些其他优点：</p><ul><li><strong>操作简单</strong>:  即使你是电脑小白，也能轻松上手，一键更新所有驱动程序。</li><li><strong>安全可靠</strong>:  Driver Booster 只会下载和安装来自官方网站的驱动程序，确保系统安全稳定。</li><li><strong>功能丰富</strong>:  除了驱动更新，Driver Booster 还提供了游戏加速、系统优化等功能，让你的电脑运行更加流畅。</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161633910.png" alt="image-20240616163319142"></p><h2 id="如何使用-Driver-Booster-更新驱动？"><a href="#如何使用-Driver-Booster-更新驱动？" class="headerlink" title="如何使用 Driver Booster 更新驱动？"></a>如何使用 Driver Booster 更新驱动？</h2><p>使用 Driver Booster 更新驱动程序非常简单，只需按照以下步骤操作即可：</p><p><strong>步骤一：下载并安装 Driver Booster</strong></p><p>你可以在 Driver Booster 官网 (<a href="https://www.iobit.com/en/driver-booster.php">https://www.iobit.com/en/driver-booster.php</a>) 下载最新版本的软件。安装过程非常简单，只需按照提示操作即可。</p><p><strong>步骤二：运行 Driver Booster 并扫描驱动程序</strong></p><p>安装完成后，运行 Driver Booster，它会自动开始扫描你电脑上的所有硬件设备，并检测是否有过时的驱动程序。</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406161633198.png" alt="image-20240616163305132"></p><p><strong>步骤三：更新过时的驱动程序</strong></p><p>扫描完成后，Driver Booster 会列出所有需要更新的驱动程序。你可以选择一键更新所有驱动程序，也可以根据需要选择更新个别驱动程序。</p><p><strong>步骤四：重启电脑</strong></p><p>更新完成后，重启电脑，让新的驱动程序生效。</p><h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h2><p>自从使用了 Driver Booster，我的电脑再也没有出现过驱动程序相关的问题，运行速度也比以前快了很多。如果你也希望提升电脑性能，解决各种驱动问题，不妨试试 Driver Booster 吧！相信它会成为你电脑维护的好帮手！😊</p>]]></content>
    
    
    <summary type="html">电脑运行缓慢，游戏卡顿，外设无法识别？这些问题很有可能是驱动程序惹的祸！别担心，今天就来分享一款神器——Driver Booster，帮你一键更新驱动，让你的 Windows 重新流畅起来！</summary>
    
    
    
    <category term="软件" scheme="https://www.wangwangit.com/categories/%E8%BD%AF%E4%BB%B6/"/>
    
    
    <category term="驱动更新" scheme="https://www.wangwangit.com/tags/%E9%A9%B1%E5%8A%A8%E6%9B%B4%E6%96%B0/"/>
    
  </entry>
  
  <entry>
    <title>信息爆炸时代，如何摆脱标题党的魔爪？</title>
    <link href="https://www.wangwangit.com/%E4%BF%A1%E6%81%AF%E7%88%86%E7%82%B8%E6%97%B6%E4%BB%A3%EF%BC%8C%E5%A6%82%E4%BD%95%E6%91%86%E8%84%B1%E6%A0%87%E9%A2%98%E5%85%9A%E7%9A%84%E9%AD%94%E7%88%AA%EF%BC%9F/"/>
    <id>https://www.wangwangit.com/%E4%BF%A1%E6%81%AF%E7%88%86%E7%82%B8%E6%97%B6%E4%BB%A3%EF%BC%8C%E5%A6%82%E4%BD%95%E6%91%86%E8%84%B1%E6%A0%87%E9%A2%98%E5%85%9A%E7%9A%84%E9%AD%94%E7%88%AA%EF%BC%9F/</id>
    <published>2024-06-10T04:16:00.000Z</published>
    <updated>2025-03-05T07:40:40.921Z</updated>
    
    <content type="html"><![CDATA[<p>还记得那些让你点进去就后悔的标题吗？”震惊！XX事件背后的真相！”、”XX明星婚变？真相令人不寒而栗！”……这些耸人听闻的标题党，早已成为互联网世界的一道“风景线”。它们隐藏着关键信息，用“沸腾了”、“全城轰动”之类的煽动性词语吸引眼球，却往往藏着低俗的广告营销内容，令人不胜其烦。</p><p>面对海量信息，我们已经没有耐心逐字逐句地阅读每一篇文章。标题，成为了我们筛选信息的重要路标，是信息时代的“入口”。然而，标题党的存在，却让这个“入口”变得越来越混乱，信息获取的效率也随之降低。</p><p><strong>AI，信息时代的“救世主”？</strong></p><p>幸运的是，人工智能技术的发展，为我们提供了新的解决方案。一些AI驱动的新闻网站，通过智能分析和总结，提取最精华的内容，并进行客观的评论，帮助我们摆脱标题党的干扰，快速获取关键信息。</p><p><strong>推荐一款AI驱动的新闻网站：</strong></p><p>今天就让我向你推荐一款名为 <strong>新闻速读</strong>(<a href="https://news.wangwangit.com/">https://news.wangwangit.com/</a>) 的新闻网站。该网站通过AI技术，自动筛选和总结每天的新闻，并以简洁明了的语言呈现，避免冗长复杂的叙述，让你在短短几分钟内就能快速了解一天的新闻热点。</p><h3 id="特点"><a href="#特点" class="headerlink" title="特点"></a>特点</h3><ul><li><strong>无广告，不标题党：</strong> 拒绝广告干扰，专注于提供优质的新闻内容。</li><li><strong>AI分析总结：</strong> 通过AI技术自动提取新闻的核心信息，让阅读更有效率。</li><li><strong>AI锐评：</strong>  提供专业的AI评论，帮助你从多个角度理解新闻事件。</li><li><strong>每日更新：</strong> 只保存当日的新闻，避免信息过载，让你轻松掌控每日资讯。</li></ul><p><strong>告别标题党，拥抱高效阅读：</strong></p><p>相信我，这个网站会成为你获取新闻资讯的全新选择！赶快体验一下，感受AI带来的信息获取新体验吧！</p><p><strong>除了这个网站 之外，还有很多其他优秀的AI新闻网站，例如：</strong></p><ul><li><a href="https://metatrend.ai/news">https://metatrend.ai/news</a></li><li><a href="https://www.buzzing.cc/">https://www.buzzing.cc</a></li></ul><p><strong>希望本文能够帮助你摆脱信息爆炸的困扰，找到更便捷、更有效的新闻获取方式。</strong></p><p><strong>最后，别忘了分享给你的朋友们，一起告别标题党，拥抱高效的信息时代！</strong> 😊</p>]]></content>
    
    
    <summary type="html">厌倦了标题党？想快速高效获取新闻资讯？本文带你摆脱信息爆炸，推荐AI驱动的新闻网站，助你轻松掌握每日热点！</summary>
    
    
    
    <category term="网站" scheme="https://www.wangwangit.com/categories/%E7%BD%91%E7%AB%99/"/>
    
    
    <category term="新闻资讯" scheme="https://www.wangwangit.com/tags/%E6%96%B0%E9%97%BB%E8%B5%84%E8%AE%AF/"/>
    
    <category term="人工智能" scheme="https://www.wangwangit.com/tags/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/"/>
    
  </entry>
  
  <entry>
    <title>自建Docker镜像加速,告别镜像拉取&quot;龟速&quot;🚀</title>
    <link href="https://www.wangwangit.com/%E8%87%AA%E5%BB%BADocker%E9%95%9C%E5%83%8F%E5%8A%A0%E9%80%9F,%E5%91%8A%E5%88%AB%E9%95%9C%E5%83%8F%E6%8B%89%E5%8F%96%E9%BE%9F%E9%80%9F%F0%9F%9A%80/"/>
    <id>https://www.wangwangit.com/%E8%87%AA%E5%BB%BADocker%E9%95%9C%E5%83%8F%E5%8A%A0%E9%80%9F,%E5%91%8A%E5%88%AB%E9%95%9C%E5%83%8F%E6%8B%89%E5%8F%96%E9%BE%9F%E9%80%9F%F0%9F%9A%80/</id>
    <published>2024-06-10T03:47:35.000Z</published>
    <updated>2025-03-05T07:40:40.925Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406101209910.png" alt="img"></p><p>作为一名程序员，Docker几乎已经成为我们日常开发中不可或缺的一部分。但是最近，国内的一些Docker商业&#x2F;教育镜像站突然被关闭，导致很多开发者在拉取镜像时速度非常慢，甚至无法拉取。这可真是让人头疼！😭</p><p>别担心，本文将手把手教你使用CloudFlare Workers搭建一个免费的Docker镜像加速服务，轻松解决镜像拉取速度慢的问题！🙌</p><h2 id="镜像加速的重要性"><a href="#镜像加速的重要性" class="headerlink" title="镜像加速的重要性"></a>镜像加速的重要性</h2><p>在使用Docker部署应用时,镜像拉取的速度直接影响到开发和上线效率。如果每次构建镜像都要等半天,那工作效率可想而知有多低。而且在生产环境下,快速拉取镜像也是服务高可用的保证。</p><p>所以说,镜像加速绝对是一个刚需!🔥</p><h2 id="常见的加速方案"><a href="#常见的加速方案" class="headerlink" title="常见的加速方案"></a>常见的加速方案</h2><p>为了解决拉取速度慢的问题,一般有几种常见的方案:</p><ol><li>使用国内镜像源,如阿里云、网易等提供的免费镜像加速服务。</li><li>搭建私有Registry,在内网环境下使用。 </li><li>利用CDN等加速服务对镜像仓库进行加速。</li></ol><p>其中前两种方案都有一定的局限性,而且在当前的大环境下,公共镜像源的稳定性也不容乐观。😕</p><h2 id="CloudFlare-Workers方案"><a href="#CloudFlare-Workers方案" class="headerlink" title="CloudFlare Workers方案"></a>CloudFlare Workers方案</h2><p>相比之下,利用CloudFlare Workers搭建私有加速服务是一个不错的选择。它有以下几个优点:</p><ol><li>CloudFlare拥有全球化的CDN网络,加速效果非常好。</li><li>Workers提供了免费的计算资源,搭建成本低。</li><li>配置简单,只需要几行代码就可以实现。</li><li>安全可靠,不用担心镜像源跑路。</li></ol><p>下面我就来介绍具体的操作步骤。</p><h2 id="搭建步骤"><a href="#搭建步骤" class="headerlink" title="搭建步骤"></a>搭建步骤</h2><p>注册一个CloudFlare账号,并登录Workers管理界面。</p><p>点击创建一个新的Worker。</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406101119386.png" alt="image-20240610111913243"></p><p>将以下代码复制到代码编辑区:</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406101120432.png" alt="image-20240610112001352"></p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406101121032.png" alt="image-20240610112145937"></p><p><strong>注意</strong>: 这里需要先把代码粘贴保存之后,才能绑定自定义域名,后面再来修改这里的域名!</p><pre><code class="javascript">&#39;use strict&#39;const hub_host = &#39;registry-1.docker.io&#39;const auth_url = &#39;https://auth.docker.io&#39;const workers_url = &#39;https://自己的域名&#39;/*** static files (404.html, sw.js, conf.js)*//** @type &#123;RequestInit&#125; */const PREFLIGHT_INIT = &#123;    // status: 204,    headers: new Headers(&#123;        &#39;access-control-allow-origin&#39;: &#39;*&#39;,        &#39;access-control-allow-methods&#39;: &#39;GET,POST,PUT,PATCH,TRACE,DELETE,HEAD,OPTIONS&#39;,        &#39;access-control-max-age&#39;: &#39;1728000&#39;,    &#125;),&#125;/*** @param &#123;any&#125; body* @param &#123;number&#125; status* @param &#123;Object&lt;string, string&gt;&#125; headers*/function makeRes(body, status = 200, headers = &#123;&#125;) &#123;    headers[&#39;access-control-allow-origin&#39;] = &#39;*&#39;    return new Response(body, &#123;        status,        headers    &#125;)&#125;/*** @param &#123;string&#125; urlStr*/function newUrl(urlStr) &#123;    try &#123;        return new URL(urlStr)    &#125; catch(err) &#123;        return null    &#125;&#125;addEventListener(&#39;fetch&#39;, e = &gt;&#123;    const ret = fetchHandler(e).    catch(err = &gt;makeRes(&#39;cfworker error:\n&#39; + err.stack, 502)) e.respondWith(ret)&#125;)/*** @param &#123;FetchEvent&#125; e*/asyncfunction fetchHandler(e) &#123;    const getReqHeader = (key) = &gt;e.request.headers.get(key);    let url = new URL(e.request.url);    // 修改 pre head get 请求    // 是否含有 %2F ，用于判断是否具有用户名与仓库名之间的连接符    // 同时检查 %3A 的存在    if (!/%2F/.test(url.search) &amp;&amp; /%3A/.test(url.toString())) &#123;        let modifiedUrl = url.toString().replace(/%3A(?=.*?&amp;)/, &#39;%3Alibrary%2F&#39;);        url = new URL(modifiedUrl);        console.log(`handle_url: $ &#123;            url        &#125;`)    &#125;    if (url.pathname === &#39;/token&#39;) &#123;        let token_parameter = &#123;            headers: &#123;                &#39;Host&#39;: &#39;auth.docker.io&#39;,                &#39;User-Agent&#39;: getReqHeader(&quot;User-Agent&quot;),                &#39;Accept&#39;: getReqHeader(&quot;Accept&quot;),                &#39;Accept-Language&#39;: getReqHeader(&quot;Accept-Language&quot;),                &#39;Accept-Encoding&#39;: getReqHeader(&quot;Accept-Encoding&quot;),                &#39;Connection&#39;: &#39;keep-alive&#39;,                &#39;Cache-Control&#39;: &#39;max-age=0&#39;            &#125;        &#125;;        let token_url = auth_url + url.pathname + url.search        return fetch(new Request(token_url, e.request), token_parameter)    &#125;    // 修改 head 请求    if (/^\/v2\/[^/] + \ / [ ^ /]+\/[^/] + $ / .test(url.pathname) &amp;&amp; !/^\/v2\/library/.test(url.pathname)) &#123;        url.pathname = url.pathname.replace(/\/v2\//, &#39;/v2/library/&#39;);        console.log(`modified_url: $ &#123;            url.pathname        &#125;`)    &#125;    url.hostname = hub_host;    let parameter = &#123;        headers: &#123;            &#39;Host&#39;: hub_host,            &#39;User-Agent&#39;: getReqHeader(&quot;User-Agent&quot;),            &#39;Accept&#39;: getReqHeader(&quot;Accept&quot;),            &#39;Accept-Language&#39;: getReqHeader(&quot;Accept-Language&quot;),            &#39;Accept-Encoding&#39;: getReqHeader(&quot;Accept-Encoding&quot;),            &#39;Connection&#39;: &#39;keep-alive&#39;,            &#39;Cache-Control&#39;: &#39;max-age=0&#39;        &#125;,        cacheTtl: 3600    &#125;;    if (e.request.headers.has(&quot;Authorization&quot;)) &#123;        parameter.headers.Authorization = getReqHeader(&quot;Authorization&quot;);    &#125;    let original_response = await fetch(new Request(url, e.request), parameter) let original_response_clone = original_response.clone();    let original_text = original_response_clone.body;    let response_headers = original_response.headers;    let new_response_headers = new Headers(response_headers);    let status = original_response.status;    if (new_response_headers.get(&quot;Www-Authenticate&quot;)) &#123;        let auth = new_response_headers.get(&quot;Www-Authenticate&quot;);        let re = new RegExp(auth_url, &#39;g&#39;);        new_response_headers.set(&quot;Www-Authenticate&quot;, response_headers.get(&quot;Www-Authenticate&quot;).replace(re, workers_url));    &#125;    if (new_response_headers.get(&quot;Location&quot;)) &#123;        return httpHandler(e.request, new_response_headers.get(&quot;Location&quot;))    &#125;    let response = new Response(original_text, &#123;        status,        headers: new_response_headers    &#125;) return response;&#125;/*** @param &#123;Request&#125; req* @param &#123;string&#125; pathname*/function httpHandler(req, pathname) &#123;    const reqHdrRaw = req.headers    // preflight    if (req.method === &#39;OPTIONS&#39; &amp;&amp; reqHdrRaw.has(&#39;access-control-request-headers&#39;)) &#123;        return new Response(null, PREFLIGHT_INIT)    &#125;    let rawLen = &#39;&#39;    const reqHdrNew = new Headers(reqHdrRaw)    const refer = reqHdrNew.get(&#39;referer&#39;)    let urlStr = pathname    const urlObj = newUrl(urlStr)    /** @type &#123;RequestInit&#125; */    const reqInit = &#123;        method: req.method,        headers: reqHdrNew,        redirect: &#39;follow&#39;,        body: req.body    &#125;    return proxy(urlObj, reqInit, rawLen)&#125;/**** @param &#123;URL&#125; urlObj* @param &#123;RequestInit&#125; reqInit*/asyncfunction proxy(urlObj, reqInit, rawLen) &#123;    const res = await fetch(urlObj.href, reqInit) const resHdrOld = res.headers const resHdrNew = new Headers(resHdrOld)    // verify    if (rawLen) &#123;        const newLen = resHdrOld.get(&#39;content-length&#39;) || &#39;&#39;const badLen = (rawLen !== newLen)        if (badLen) &#123;            return makeRes(res.body, 400, &#123;                &#39;--error&#39;: `bad len: $ &#123;                    newLen                &#125;,                except: $ &#123;                    rawLen                &#125;`,                &#39;access-control-expose-headers&#39;: &#39;--error&#39;,            &#125;)        &#125;    &#125;    const status = res.status resHdrNew.set(&#39;access-control-expose-headers&#39;, &#39;*&#39;) resHdrNew.set(&#39;access-control-allow-origin&#39;, &#39;*&#39;) resHdrNew.set(&#39;Cache-Control&#39;, &#39;max-age=1500&#39;)    resHdrNew.delete(&#39;content-security-policy&#39;) resHdrNew.delete(&#39;content-security-policy-report-only&#39;) resHdrNew.delete(&#39;clear-site-data&#39;)    return new Response(res.body, &#123;        status,        headers: resHdrNew    &#125;)&#125;</code></pre><p>绑定一个自定义域名到该Worker。</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406101120456.png" alt="image-20240610112058379"></p><p>配置Docker守护进程,将<code>registry-mirrors</code>参数设置为你的域名。</p><pre><code class="json">&#123;  &quot;registry-mirrors&quot;: [&quot;https://你自己的域名&quot;]&#125;</code></pre><p>搞定!现在当你拉取镜像时,就会自动通过你的加速服务进行获取,速度提升几倍不止!🚀</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202406101143942.png" alt="image-20240610114355893"></p><h2 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h2><ul><li>免费版Workers对出口流量有一定限制,如果使用量大建议升级到付费版。</li><li>不同版本的Docker对配置文件的路径有所不同,需要根据实际情况进行修改。</li><li>在生产环境中,还要注意Worker脚本的安全性,以免被恶意利用。</li></ul><h2 id="参考"><a href="#参考" class="headerlink" title="参考"></a>参考</h2><p>V2EX(<a href="https://global.v2ex.com/t/1007922">https://global.v2ex.com/t/1007922</a>)</p><h2 id="小结"><a href="#小结" class="headerlink" title="小结"></a>小结</h2><p>Docker镜像加速作为容器化开发中的一个重要环节,对提升工作效率有很大帮助。利用CloudFlare Workers提供的边缘计算能力,我们可以低成本地搭建一套高性能的镜像加速方案,解决国内网络环境下拉取速度慢的问题。<br>希望通过本文的介绍,能为大家在日常开发中提供一些思路。Docker镜像加速的方案其实有很多,关键是要根据自己的实际情况,选择最合适的那一种。<br>你是否也在使用Docker呢?在镜像拉取方面有什么问题和经验,欢迎留言交流!😉</p>]]></content>
    
    
    <summary type="html">本文介绍了如何利用CloudFlare Workers搭建私有Docker镜像加速服务,解决国内拉取镜像慢的问题,提高开发效率。</summary>
    
    
    
    <category term="教程" scheme="https://www.wangwangit.com/categories/%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Docker" scheme="https://www.wangwangit.com/tags/Docker/"/>
    
    <category term="CloudFlare" scheme="https://www.wangwangit.com/tags/CloudFlare/"/>
    
  </entry>
  
  <entry>
    <title>Git速查表</title>
    <link href="https://www.wangwangit.com/Git%E9%80%9F%E6%9F%A5%E8%A1%A8/"/>
    <id>https://www.wangwangit.com/Git%E9%80%9F%E6%9F%A5%E8%A1%A8/</id>
    <published>2024-05-26T10:25:00.000Z</published>
    <updated>2025-03-05T07:40:40.917Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240527104040276.png" alt="image-20240527104040276"></p><table><thead><tr><th align="center"><strong>入门</strong></th><th align="center"><strong>在分支间移动</strong></th><th align="center"><strong>差异比较</strong></th><th align="center"><strong>放弃更改</strong></th><th align="center"><strong>合并分支</strong></th></tr></thead><tbody><tr><td align="center">开始一个新仓库：<br> <code>git init</code></td><td align="center">切换分支：<br> <code>git switch $NAME</code> <br> 或<br> <code>git checkout $NAME</code></td><td align="center">展示不同提交间的差异：<br> <code>git show $COMMIT_ID</code></td><td align="center">丢弃所有已暂存和未暂存的更改到一个文件：<br> <code>git checkout HEAD $FILE</code></td><td align="center">合并分支前的结构：<br> <img src="https://example.com/merge_before.png" alt="before merge"></td></tr><tr><td align="center">克隆现有仓库：<br> <code>git clone $URL</code></td><td align="center">创建一个分支：<br> <code>git switch -c $NAME</code> <br> 或<br> <code>git checkout -b $NAME</code></td><td align="center">展示不同提交间的差异：<br> <code>git diff $COMMIT_ID1 $COMMIT_ID2</code></td><td align="center">丢弃单个文件中的更改：<br> <code>git checkout $FILE</code></td><td align="center"><strong>用 rebase 合并</strong>：<br> <code>git switch main</code> <br> <code>git rebase $NAME</code> <br> <img src="https://example.com/rebase.png" alt="rebase"></td></tr><tr><td align="center"></td><td align="center">列出分支：<br> <code>git branch</code></td><td align="center">比较暂存和未暂存的更改：<br> <code>git diff</code></td><td align="center">丢弃所有未暂存的更改：<br> <code>git reset --hard</code></td><td align="center"><strong>用 merge 合并</strong>：<br> <code>git switch main</code> <br> <code>git merge $NAME</code> <br> <img src="https://example.com/merge.png" alt="merge"></td></tr><tr><td align="center"></td><td align="center">删除一个分支：<br> <code>git branch -d $NAME</code></td><td align="center">比较提交和工作目录：<br> <code>git diff $COMMIT_ID</code></td><td align="center">清理未追踪的文件：<br> <code>git clean</code></td><td align="center"><strong>用 squash 合并</strong>：<br> <code>git switch main</code> <br> <code>git merge --squash $NAME</code> <br> <code>git commit</code> <br> <img src="https://example.com/squash_merge.png" alt="squash merge"></td></tr><tr><td align="center"></td><td align="center">强制删除一个分支：<br> <code>git branch -D $NAME</code></td><td align="center">仅显示特定文件的差异：<br> <code>git diff $COMMIT_ID $FILE</code></td><td align="center"></td><td align="center"></td></tr></tbody></table><table><thead><tr><th align="center"><strong>查看当前状态</strong></th><th align="center"><strong>准备提交</strong></th><th align="center"><strong>查看分支历史</strong></th><th align="center"><strong>编辑历史</strong></th><th align="center"><strong>推送和拉取更改</strong></th></tr></thead><tbody><tr><td align="center"><code>git status</code></td><td align="center">添加未追踪的文件：<br> <code>git add $FILE</code></td><td align="center">查看分支日志：<br> <code>git log main</code></td><td align="center">撤销最近的提交：<br> <code>git reset HEAD~</code></td><td align="center">添加远程仓库：<br> <code>git remote add $NAME $URL</code></td></tr><tr><td align="center"></td><td align="center">添加所有未追踪和未暂存的更改：<br> <code>git add .</code></td><td align="center">查看两个分支的关系：<br> <code>git log --graph a b</code></td><td align="center">修改最后一次提交：<br> <code>git commit --amend</code></td><td align="center">推送更改到远程仓库：<br> <code>git push origin main</code></td></tr><tr><td align="center"></td><td align="center">选择暂存的部分文件：<br> <code>git add -p</code></td><td align="center">单行日志：<br> <code>git log --oneline</code></td><td align="center">修正多个提交（交互式 rebase）：<br> <code>git rebase -i HEAD~4</code></td><td align="center">强制推送：<br> <code>git push --force-with-lease</code></td></tr><tr><td align="center"></td><td align="center">删除或移动文件：<br> <code>git rm $FILE</code> <br> 或<br> <code>git mv $OLD $NEW</code></td><td align="center"></td><td align="center"></td><td align="center"></td></tr><tr><td align="center"></td><td align="center">停止追踪但不删除文件：<br> <code>git rm --cached $FILE</code></td><td align="center"></td><td align="center"></td><td align="center"></td></tr><tr><td align="center"></td><td align="center">取消所有暂存的更改：<br> <code>git reset HEAD</code></td><td align="center"></td><td align="center"></td><td align="center"></td></tr></tbody></table><table><thead><tr><th align="center"><strong>提交更改</strong></th><th align="center"><strong>代码考古</strong></th><th align="center"><strong>配置 git</strong></th><th align="center"><strong>其他命令</strong></th><th align="center"><strong>引用提交的方式</strong></th></tr></thead><tbody><tr><td align="center">提交更改（打开编辑器以写入信息）：<br> <code>git commit</code></td><td align="center">查看文件的更改历史：<br> <code>git blame $FILE</code></td><td align="center">设置配置选项：<br> <code>git config user.name &#39;Julia&#39;</code></td><td align="center">检查本地 git 配置：<br> <code>git config --list</code></td><td align="center">每次使用 $COMMIT_ID，可以使用以下任意方式：<br> - 分支：<code>main</code><br> - 标签：<code>v0.1</code><br> - 哈希：<code>1e3887a</code><br> - 分支名@{时间}：<code>main@&#123;yesterday&#125;</code><br> - 提交相对引用：<code>HEAD~3</code></td></tr><tr><td align="center">提交消息：<br> <code>git commit -m &#39;message&#39;</code></td><td align="center">显示每次修改的内容：<br> <code>git log -p $FILE</code></td><td align="center">查看所有配置选项：<br> <code>man git-config</code></td><td align="center">恢复文件到某次提交：<br> <code>git restore $FILE --source $COMMIT_ID</code></td><td align="center"></td></tr><tr><td align="center">提交所有未暂存的更改：<br> <code>git commit -a -m &#39;message&#39;</code></td><td align="center"></td><td align="center">编辑配置全局选项：<br> <code>git config --global user.name &#39;Julia&#39;</code></td><td align="center">恢复整个提交：<br> <code>git restore --source $COMMIT_ID</code></td><td align="center"></td></tr><tr><td align="center"></td><td align="center"></td><td align="center">别名配置：<br> <code>git config alias.st status</code></td><td align="center"></td><td align="center"></td></tr></tbody></table>]]></content>
    
    
    <summary type="html">这么火爆的Git速查表，让我想起了小时候的小抄，简直是程序员们的福音啊！看来大家都想在Git这条路上越走越远啊！</summary>
    
    
    
    <category term="开发" scheme="https://www.wangwangit.com/categories/%E5%BC%80%E5%8F%91/"/>
    
    
    <category term="Git" scheme="https://www.wangwangit.com/tags/Git/"/>
    
  </entry>
  
  <entry>
    <title>批量重命名神器，让你的文件井井有条😎</title>
    <link href="https://www.wangwangit.com/%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D%E7%A5%9E%E5%99%A8%EF%BC%8C%E8%AE%A9%E4%BD%A0%E7%9A%84%E6%96%87%E4%BB%B6%E4%BA%95%E4%BA%95%E6%9C%89%E6%9D%A1%F0%9F%98%8E/"/>
    <id>https://www.wangwangit.com/%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D%E7%A5%9E%E5%99%A8%EF%BC%8C%E8%AE%A9%E4%BD%A0%E7%9A%84%E6%96%87%E4%BB%B6%E4%BA%95%E4%BA%95%E6%9C%89%E6%9D%A1%F0%9F%98%8E/</id>
    <published>2024-05-26T05:25:00.000Z</published>
    <updated>2025-03-05T07:40:40.921Z</updated>
    
    <content type="html"><![CDATA[<p>大家在日常工作中是否经常遇到需要批量修改文件名的情况?比如整理照片、归档文档、处理数据集等。一个个手动改,既费时又容易出错,让人头大。😣</p><p>别担心,今天我就给大家安利一款强大的文件批量重命名神器,它可以让你事半功倍,节省大量宝贵的时间和精力。🚀</p><h2 id="软件介绍"><a href="#软件介绍" class="headerlink" title="软件介绍"></a>软件介绍</h2><p>这款软件支持Windows、macOS、Linux等多个平台,功能非常强大:</p><ul><li>支持拖拽添加文件和文件夹</li><li>可以创建多个配置方案</li><li>单个配置内支持多个重命名规则</li><li>内置js脚本,可实现更灵活的自定义规则</li><li>集成Monaco Editor代码编辑器,写脚本更方便</li></ul><p>总之就是非常智能和人性化,但又不失灵活性,绝对是文件管理的神器啊!</p><h2 id="使用教程"><a href="#使用教程" class="headerlink" title="使用教程"></a>使用教程</h2><p>接下来我就手把手教大家如何使用这个工具,保证小白也能快速上手。</p><h3 id="第一步-添加文件"><a href="#第一步-添加文件" class="headerlink" title="第一步:添加文件"></a>第一步:添加文件</h3><p>打开网站(<a href="https://renamer.cyhuajuan.site/profile/d3In3T7t">https://renamer.cyhuajuan.site/profile/d3In3T7t</a> ) 后,直接将需要重命名的文件或文件夹拖入界面。你也可以点击”添加文件”按钮来选择。</p><h3 id="第二步-创建配置"><a href="#第二步-创建配置" class="headerlink" title="第二步:创建配置"></a>第二步:创建配置</h3><p>在配置列表里点击”+”号,创建一个新的配置。给配置起个名字,比如”照片整理”。</p><h3 id="第三步-设置规则"><a href="#第三步-设置规则" class="headerlink" title="第三步:设置规则"></a>第三步:设置规则</h3><p>选中你刚创建的配置,在右侧设置重命名规则:</p><ol><li>添加前缀或后缀</li><li>替换特定字符</li><li>根据正则表达式匹配和替换</li><li>使用js脚本处理文件名</li></ol><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202405261449007.png" alt="image-20240526144942944"></p><p>脚本编辑器提供了代码高亮、自动补全等功能,即使不懂编程也可以根据注释提示轻松写脚本。</p><p>这里有几个常用脚本的例子供大家参考:</p><pre><code class="js">// 例1:将文件名拼接上日期const &#123; fileInfo, index &#125; = args;// 获取当前日期let now = new Date();// 格式化日期为 YYYYMMDD_HHMMSSlet formattedDate = `$&#123;now.getFullYear()&#125;$&#123;String(now.getMonth() + 1).padStart(2, &#39;0&#39;)&#125;$&#123;String(now.getDate()).padStart(2, &#39;0&#39;)&#125;_$&#123;String(now.getHours()).padStart(2, &#39;0&#39;)&#125;$&#123;String(now.getMinutes()).padStart(2, &#39;0&#39;)&#125;$&#123;String(now.getSeconds()).padStart(2, &#39;0&#39;)&#125;`;// 拼接文件名let name = `IMG_$&#123;formattedDate&#125;_$&#123;fileInfo.name&#125;` + &#39;.jpg&#39;; // 添加 index 以确保唯一性return name; </code></pre><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202405261449881.png" alt="image-20240526144909800"></p><h3 id="第四步-预览和应用"><a href="#第四步-预览和应用" class="headerlink" title="第四步:预览和应用"></a>第四步:预览和应用</h3><p>设置好规则后,查看”预览”列,可以看到文件名修改的效果。确认无误后,点击”执行”,文件名就批量修改好啦!👏 是不是超级简单?掌握了这个技能,以后整理文件分分钟搞定,再也不用担心效率低下了。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>文件批量重命名看似小事一桩,但却能给我们的工作和生活带来很大的便利。有了这样一款得力的工具,无论是程序员还是普通用户,都能轻松应对海量文件管理的挑战。🌈 </p><p>你也赶快去试试吧,相信一定会给你带来惊喜。对了,这款工具是免费开源的,大家可以放心使用。 这个宝藏软件的在线地址我放在文末了,记得收藏哦。</p><p>如果你还知道其他好用的文件整理工具,欢迎在评论区留言分享。 让我们一起成为文件管理达人,向低效说再见!💪</p>]]></content>
    
    
    <summary type="html">还在为文件重命名烦恼吗？文件管理大师养成记：批量重命名神器，让你的文件井井有条！本文介绍一款功能强大、易用的文件批量重命名软件，支持js脚本，内置Monaco Editor，让你的文件管理效率提升10倍！</summary>
    
    
    
    <category term="软件" scheme="https://www.wangwangit.com/categories/%E8%BD%AF%E4%BB%B6/"/>
    
    
    <category term="文件管理" scheme="https://www.wangwangit.com/tags/%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86/"/>
    
    <category term="批量重命名" scheme="https://www.wangwangit.com/tags/%E6%89%B9%E9%87%8F%E9%87%8D%E5%91%BD%E5%90%8D/"/>
    
  </entry>
  
  <entry>
    <title>100+平台视频一键下载,这个免费工具太好用了! 🎬</title>
    <link href="https://www.wangwangit.com/100+%E5%B9%B3%E5%8F%B0%E8%A7%86%E9%A2%91%E4%B8%80%E9%94%AE%E4%B8%8B%E8%BD%BD,%E8%BF%99%E4%B8%AA%E5%85%8D%E8%B4%B9%E5%B7%A5%E5%85%B7%E5%A4%AA%E5%A5%BD%E7%94%A8%E4%BA%86!-%F0%9F%8E%AC/"/>
    <id>https://www.wangwangit.com/100+%E5%B9%B3%E5%8F%B0%E8%A7%86%E9%A2%91%E4%B8%80%E9%94%AE%E4%B8%8B%E8%BD%BD,%E8%BF%99%E4%B8%AA%E5%85%8D%E8%B4%B9%E5%B7%A5%E5%85%B7%E5%A4%AA%E5%A5%BD%E7%94%A8%E4%BA%86!-%F0%9F%8E%AC/</id>
    <published>2024-05-26T04:25:00.000Z</published>
    <updated>2025-03-05T07:40:40.913Z</updated>
    
    <content type="html"><![CDATA[<p>你是不是也遇到过这些烦恼？</p><ul><li><strong>喜欢的视频无法保存？</strong></li><li><strong>想下载素材却找不到好用的工具？</strong></li><li><strong>复杂的下载流程让人头大？</strong></li></ul><p>别担心！今天我要给你介绍一款 <strong>神器</strong> —— <strong>TiQu.cc</strong>，它能帮你轻松搞定 <strong>100 多个平台</strong> 的视频下载，而且 <strong>完全免费</strong>，<strong>无需注册</strong>！</p><h2 id="🚀-TiQu-cc：视频下载界的”哆啦A梦”"><a href="#🚀-TiQu-cc：视频下载界的”哆啦A梦”" class="headerlink" title="🚀 TiQu.cc：视频下载界的”哆啦A梦”"></a>🚀 TiQu.cc：视频下载界的”哆啦A梦”</h2><p>TiQu.cc 就像是从百宝袋里掏出来的法宝，拥有超多神奇功能：</p><ol><li><strong>支持平台超多：</strong> B站、抖音、快手、小红书、Twitter、Instagram、TikTok、Reddit…只有你想不到，没有它下不了！</li><li><strong>操作简单到爆：</strong> 复制视频链接，粘贴到 TiQu.cc，点击下载，搞定！就是这么easy！</li><li><strong>完全免费：</strong> 不用花一分钱，就能享受超棒的视频下载体验！</li><li><strong>无需注册：</strong> 省去繁琐的注册流程，打开就能用！</li><li><strong>安全可靠：</strong> 没有广告、没有捆绑，安心下载！</li></ol><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202405261348802.png"></p><h2 id="🎁-TiQu-cc-使用指南，小白也能秒变大神！"><a href="#🎁-TiQu-cc-使用指南，小白也能秒变大神！" class="headerlink" title="🎁 TiQu.cc 使用指南，小白也能秒变大神！"></a>🎁 TiQu.cc 使用指南，小白也能秒变大神！</h2><p>下面，我将手把手教你如何使用 TiQu.cc：</p><ol><li><strong>打开 TiQu.cc 网站：</strong> 在浏览器中输入 <code>https://tiqu.cc/</code>，进入 TiQu.cc 官网。</li><li><strong>复制视频链接：</strong> 打开你想要下载的视频，复制视频链接。</li><li><strong>粘贴链接：</strong> 将复制的视频链接粘贴到 TiQu.cc 网站的输入框中。</li><li><strong>点击下载：</strong> 点击 “下载” 按钮，TiQu.cc 会自动解析视频并开始下载。</li><li><strong>下载完成：</strong> 下载完成后，你可以在指定的文件夹中找到下载好的视频。</li></ol><p>是不是超级简单？就算是刚接触电脑的小白也能轻松上手！</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202405261348950.png"></p><h2 id="✨-TiQu-cc-使用小贴士，让下载更顺畅！"><a href="#✨-TiQu-cc-使用小贴士，让下载更顺畅！" class="headerlink" title="✨ TiQu.cc 使用小贴士，让下载更顺畅！"></a>✨ TiQu.cc 使用小贴士，让下载更顺畅！</h2><ul><li><strong>下载速度慢？</strong> 尝试更换网络环境或时间段。</li><li><strong>无法下载？</strong> 可能是视频平台限制了下载，可以尝试其他下载方式。</li><li><strong>想下载高清视频？</strong> TiQu.cc 支持多种清晰度选择，根据需要选择即可。</li></ul><h2 id="🎉-总结：TiQu-cc，你的专属视频下载神器！"><a href="#🎉-总结：TiQu-cc，你的专属视频下载神器！" class="headerlink" title="🎉 总结：TiQu.cc，你的专属视频下载神器！"></a>🎉 总结：TiQu.cc，你的专属视频下载神器！</h2><p>TiQu.cc 是一款功能强大、操作简单、安全可靠的视频下载工具，无论你是想保存喜欢的视频，还是下载素材，TiQu.cc 都能满足你的需求。赶快试试吧，让 TiQu.cc 成为你的专属视频下载神器！</p>]]></content>
    
    
    <summary type="html">推荐一个视频下载神器TiQu.cc,支持B站、抖音、油管等100+平台,无需注册,免费使用,一键下载视频到本地,是UP主和视频爱好者的必备工具。</summary>
    
    
    
    <category term="网站" scheme="https://www.wangwangit.com/categories/%E7%BD%91%E7%AB%99/"/>
    
    
    <category term="视频下载" scheme="https://www.wangwangit.com/tags/%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD/"/>
    
  </entry>
  
  <entry>
    <title>惊艳!Fish Speech让游戏配音更有灵魂,还开源了</title>
    <link href="https://www.wangwangit.com/%E6%83%8A%E8%89%B3!Fish-Speech%E8%AE%A9%E6%B8%B8%E6%88%8F%E9%85%8D%E9%9F%B3%E6%9B%B4%E6%9C%89%E7%81%B5%E9%AD%82,%E8%BF%98%E5%BC%80%E6%BA%90%E4%BA%86/"/>
    <id>https://www.wangwangit.com/%E6%83%8A%E8%89%B3!Fish-Speech%E8%AE%A9%E6%B8%B8%E6%88%8F%E9%85%8D%E9%9F%B3%E6%9B%B4%E6%9C%89%E7%81%B5%E9%AD%82,%E8%BF%98%E5%BC%80%E6%BA%90%E4%BA%86/</id>
    <published>2024-05-26T04:25:00.000Z</published>
    <updated>2025-03-05T07:40:40.921Z</updated>
    
    <content type="html"><![CDATA[<p>😊 你是否曾想过，让游戏角色用自己独特的声音与你对话？或者，让 AI 用你最喜欢的声音为你朗读小说？随着人工智能技术的不断发展，这些曾经的幻想正在逐渐变为现实。</p><p>今天，我要向大家介绍一款强大的开源文本转语音模型——Fish Speech，它将为你打开 AI 语音合成的新世界大门。</p><h2 id="😮-Fish-Speech是什么"><a href="#😮-Fish-Speech是什么" class="headerlink" title="😮 Fish Speech是什么?"></a>😮 Fish Speech是什么?</h2><p>Fish Speech是由Fish Audio开发的一个开源文本转语音模型。它基于VQ-GAN、Llama和VITS等前沿的AI技术,能够将文本转换成逼真的语音。</p><p>地址: (<a href="https://github.com/fishaudio/fish-speech">https://github.com/fishaudio/fish-speech</a> )</p><p>最让人惊喜的是,它不仅支持中文、日语、英语三种主流语言,合成的音质也非常高,堪比专业配音!🎙️ 尤其对于一些知名游戏角色的声音,如《原神》、《崩坏:星穹铁道》等,简直以假乱真。<br><audio src="https://ali.wangwangit.com/d/onedrive/%E5%85%AC%E4%BC%97%E5%8F%B7/speech.wav?sign=QMjsqyd_YvbXp3VhuoNLqnwhKEP8tqGO-muCfVDvfQY=:0"></audio></p><h2 id="🌟-Fish-Speech有什么特点"><a href="#🌟-Fish-Speech有什么特点" class="headerlink" title="🌟 Fish Speech有什么特点?"></a>🌟 Fish Speech有什么特点?</h2><p>与其他文本转语音模型相比,Fish Speech有以下几个优势:</p><ol><li>完全开源,任何人都可以免费使用和改进代码。</li><li>支持多种主流语言,并且合成效果都很棒。</li><li>基于最新的AI模型,合成音质接近真人发音。</li><li>专门针对游戏配音场景进行了优化。</li></ol><h2 id="🛠️-如何使用Fish-Speech"><a href="#🛠️-如何使用Fish-Speech" class="headerlink" title="🛠️ 如何使用Fish Speech?"></a>🛠️ 如何使用Fish Speech?</h2><p>Fish Speech 提供了一个简单易用的在线平台，让你无需任何技术基础，也能轻松体验 AI 语音合成的乐趣。</p><ol><li><strong>访问 Fish Speech 在线平台：</strong> 打开浏览器，访问 <a href="https://fs.firefly.matce.cn/%E3%80%82">https://fs.firefly.matce.cn/。</a></li><li><strong>输入文字：</strong> 在文本框中输入你想要合成的文字内容。</li><li><strong>选择声音：</strong> 从 Fish Speech 提供的多种声音模型中选择你喜欢的角色或声音。</li><li><strong>点击生成：</strong> 点击“生成”按钮，等待 Fish Speech 完成语音合成。</li><li><strong>下载或试听：</strong> 合成完成后，你可以下载生成的语音文件，或直接在线试听。</li></ol><p><strong>注意事项：</strong></p><ul><li><strong>引导音频选择：</strong> 由于自回归的不可控性，为保证音色准确，请务必在选择 Speaker 后点击旁白的骰子，随机选定一个引导音频。</li><li><strong>漏句子、长静音问题：</strong> 偶尔可能出现漏句子或长静音的情况，这通常与引导音频有关，请重新选定引导音频后重新生成。</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202405261423204.png" alt="image-20240526142311117"></p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202405261425668.png" alt="image-20240526142528588"></p><h2 id="🎮-Fish-Speech有哪些有趣的应用"><a href="#🎮-Fish-Speech有哪些有趣的应用" class="headerlink" title="🎮 Fish Speech有哪些有趣的应用?"></a>🎮 Fish Speech有哪些有趣的应用?</h2><p>除了给游戏配音,Fish Speech还有很多有趣的应用场景,比如:</p><ul><li>为视频创作配旁白</li><li>制作有声读物</li><li>开发智能语音助手</li><li>给动画片配音</li><li>……</li></ul><p>相信你已经想到了更多有创意的玩法。只要发挥想象力,Fish Speech就能为你打造出独一无二的语音作品。✨</p><h2 id="📚-总结"><a href="#📚-总结" class="headerlink" title="📚 总结"></a>📚 总结</h2><p>Fish Speech作为一个优秀的开源语音合成项目,为我们打开了一扇探索AI语音的大门。🚪 无论你是程序员、游戏爱好者,还是普通用户,都能从中获得乐趣和启发。</p><p>如果你也对语音合成技术感兴趣,不妨赶快去体验一下Fish Speech吧!说不定能创造出更多惊喜。💖</p><p>希望这篇文章能给你带来一些思路和灵感。你觉得Fish Speech还有哪些有趣的应用场景呢?欢迎在评论区分享你的想法。😉</p>]]></content>
    
    
    <summary type="html">Fish Speech是一个基于VQ-GAN和Llama、VITS的开源文本转语音模型,提供多语言支持和高质量语音合成,特别适合游戏配音等场景。本文将详细介绍它的特点、使用方法和应用案例。</summary>
    
    
    
    <category term="网站" scheme="https://www.wangwangit.com/categories/%E7%BD%91%E7%AB%99/"/>
    
    
    <category term="语音合成" scheme="https://www.wangwangit.com/tags/%E8%AF%AD%E9%9F%B3%E5%90%88%E6%88%90/"/>
    
  </entry>
  
  <entry>
    <title>不懂英语也能快速获取国外热点资讯,这个网站值得一试</title>
    <link href="https://www.wangwangit.com/%E4%B8%8D%E6%87%82%E8%8B%B1%E8%AF%AD%E4%B9%9F%E8%83%BD%E5%BF%AB%E9%80%9F%E8%8E%B7%E5%8F%96%E5%9B%BD%E5%A4%96%E7%83%AD%E7%82%B9%E8%B5%84%E8%AE%AF,%E8%BF%99%E4%B8%AA%E7%BD%91%E7%AB%99%E5%80%BC%E5%BE%97%E4%B8%80%E8%AF%95/"/>
    <id>https://www.wangwangit.com/%E4%B8%8D%E6%87%82%E8%8B%B1%E8%AF%AD%E4%B9%9F%E8%83%BD%E5%BF%AB%E9%80%9F%E8%8E%B7%E5%8F%96%E5%9B%BD%E5%A4%96%E7%83%AD%E7%82%B9%E8%B5%84%E8%AE%AF,%E8%BF%99%E4%B8%AA%E7%BD%91%E7%AB%99%E5%80%BC%E5%BE%97%E4%B8%80%E8%AF%95/</id>
    <published>2024-05-26T03:25:00.000Z</published>
    <updated>2025-03-05T07:40:40.921Z</updated>
    
    <content type="html"><![CDATA[<p>大家有没有遇到过这样的困扰:明明对国外的科技资讯、产品动态很感兴趣,但苦于英语水平有限,看原文费时费力,最后只能放弃。😔</p><p>不过现在有了一个很棒的解决方案,那就是Buzzing(<a href="https://www.buzzing.cc/">https://www.buzzing.cc/</a> )。它会将Hacker News、经济学人、Reddit等知名媒体的热门内容用中文进行简述,让你轻松获取第一手资讯。👍</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202405261333879.png" alt="image-20240526133357735"></p><p>比如最近Hacker News上讨论很火的一个话题是 “程序员35岁后去哪了”,Buzzing上就有一个中文简述:</p><blockquote><p>标题:程序员35岁后去哪了?</p><p>在Hacker News上,一个热门话题引发了大家的讨论。楼主感叹,身边的程序员朋友35岁后大多转管理或去了创业公司,很少有人还在一线写代码。这是否意味着程序员的职业生涯很短?</p><p>评论区的观点很有意思。不少人认为这取决于个人,如果你热爱coding,完全可以写到60岁。也有人指出,虽然管理和创业的收入高,但压力和风险也大,未必是更好的选择。</p><p>总的来说,程序员的职业规划要因人而异。重要的是做好准备,给自己多一些选择。即使转管理或创业,扎实的技术功底仍是立身之本。你怎么看这个话题?欢迎留言讨论。</p></blockquote><p>是不是感觉非常亲切?不仅有话题梗概,还有热门评论总结,看完就能get到讨论的要点。这比硬啃英文不知道高效多少倍。😆</p><p>除了Hacker News,Buzzing还覆盖了:</p><ul><li>经济学人:了解全球政经动向</li><li>Product Hunt:发现新奇有趣的产品</li><li>彭博社:直击金融市场脉搏  </li><li>Reddit:潜入网友的热议话题</li><li>卫报、金融时报、CNN:补充国际化视角</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202405261334996.png" alt="image-20240526133412930"></p><p>每天10分钟,你就能在Buzzing上迅速浏览这些权威媒体的头条新闻,大大拓宽认知边界。🧐 </p><p>如果你只对某个媒体感兴趣,Buzzing还提供了单独的子域名。比如:</p><ul><li>hn.buzzing.cc 专注Hacker News</li><li>ph.buzzing.cc 专注Product Hunt</li></ul><p>这样针对性的订阅,让你的信息获取更高效。</p><p>当然,Buzzing并不能完全取代英文原文。它更像是一个抛砖引玉的角色,通过中文简述激发你的兴趣,再进一步去探索详细内容。就像学游泳,先在浅水区练习,掌握了基本技能,再尝试深水区。总之要循序渐进。🏊</p><p>适当”偷懒”并不可耻,反而能帮你筛选出真正感兴趣的东西,避免信息过载。就像Buzzing的口号所说:”高效获取,聚焦洞见”。🎯</p><p>我从去年开始使用Buzzing,现在已经养成了每天必看的习惯。它让我在最短的时间内获取了最有价值的信息,也启发了很多新的思路。我觉得每个想了解国外动态的人都应该试试。</p><p>你有类似的利器吗?不妨在评论区分享一下,让更多人受益。也欢迎你关注我,一起探讨如何用科技提升效率,获取洞见。😉</p>]]></content>
    
    
    <summary type="html">介绍一个可以快速获取国外热门资讯的网站Buzzing,无需英语也能了解Hacker News、经济学人等知名媒体的热点内容,拓宽视野的利器。</summary>
    
    
    
    <category term="网站" scheme="https://www.wangwangit.com/categories/%E7%BD%91%E7%AB%99/"/>
    
    
    <category term="资讯聚合" scheme="https://www.wangwangit.com/tags/%E8%B5%84%E8%AE%AF%E8%81%9A%E5%90%88/"/>
    
  </entry>
  
  <entry>
    <title>告别繁琐的Hosts管理,用SwitchHosts一键切换! 👨‍💻</title>
    <link href="https://www.wangwangit.com/%E5%91%8A%E5%88%AB%E7%B9%81%E7%90%90%E7%9A%84Hosts%E7%AE%A1%E7%90%86,%E7%94%A8SwitchHosts%E4%B8%80%E9%94%AE%E5%88%87%E6%8D%A2/"/>
    <id>https://www.wangwangit.com/%E5%91%8A%E5%88%AB%E7%B9%81%E7%90%90%E7%9A%84Hosts%E7%AE%A1%E7%90%86,%E7%94%A8SwitchHosts%E4%B8%80%E9%94%AE%E5%88%87%E6%8D%A2/</id>
    <published>2024-05-26T02:25:00.000Z</published>
    <updated>2025-03-05T07:40:40.921Z</updated>
    
    <content type="html"><![CDATA[<p>😁 作为一名程序员,我经常需要在不同的开发环境中切换Hosts配置。比如调试网站时,需要将域名指向本地服务器;测试线上bug时,又要连接到测试服务器。频繁修改Hosts文件,不仅操作繁琐,还容易出错。</p><p>大家有没有遇到过这些问题呢?🤔</p><ul><li>手动修改Hosts,需要管理员权限,非常麻烦</li><li>找不到Hosts文件的位置,或者改错了导致网络连不上</li><li>想备份一下Hosts,但是忘了之前改了哪些内容</li><li>需要在多台电脑上维护相同的Hosts,同步很困难</li></ul><p>别担心,今天我就给大家介绍一款非常实用的Hosts管理工具 - SwitchHosts! 👏</p><h2 id="Hosts文件的作用"><a href="#Hosts文件的作用" class="headerlink" title="Hosts文件的作用"></a>Hosts文件的作用</h2><p>Hosts文件是一个纯文本文件，用于将主机名（域名）映射到IP地址。它在网络请求中起着关键作用，经常被用于以下场景：</p><ul><li><strong>本地开发和测试</strong>：将域名指向本地服务器，方便开发调试。</li><li><strong>屏蔽广告或恶意网站</strong>：通过将不良网站的域名映射到本地地址（如127.0.0.1），实现屏蔽效果。</li><li><strong>加速访问特定网站</strong>：将频繁访问的网站域名映射到特定IP，减少DNS解析时间。</li></ul><h2 id="SwitchHosts-特点一览"><a href="#SwitchHosts-特点一览" class="headerlink" title="SwitchHosts 特点一览"></a>SwitchHosts 特点一览</h2><ul><li>快速添加、切换多个Hosts方案</li><li>支持从网络或本地文件导入Hosts配置</li><li>语法高亮、自动提示,编辑Hosts更高效</li><li>Windows&#x2F;Mac&#x2F;Linux全平台支持</li><li>完全免费、开源,你的数据不会被上传</li><li>无需安装,下载解压即可用</li></ul><p>听起来是不是很强大?😎 接下来我们一起来看看怎么使用SwitchHosts吧!</p><h2 id="安装SwitchHosts"><a href="#安装SwitchHosts" class="headerlink" title="安装SwitchHosts"></a>安装SwitchHosts</h2><ol><li>访问 SwitchHosts 的 官网(<a href="https://switchhosts.vercel.app/">https://switchhosts.vercel.app/</a> ) 或 Github仓库(<a href="https://github.com/oldj/SwitchHosts">https://github.com/oldj/SwitchHosts</a> ) ,下载对应系统版本的安装包。</li><li>解压后双击运行,启动SwitchHosts。</li></ol><p>就是这么简单!不需要安装,直接用。👍</p><h2 id="使用SwitchHosts"><a href="#使用SwitchHosts" class="headerlink" title="使用SwitchHosts"></a>使用SwitchHosts</h2><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/202405261330260.png" alt="image-20240526133004156"></p><h3 id="新建Hosts方案"><a href="#新建Hosts方案" class="headerlink" title="新建Hosts方案"></a>新建Hosts方案</h3><ol><li><p>点击左下角 + 号,选择”新建Hosts”</p></li><li><p>输入方案名称,如”本地开发环境”</p></li><li><p>编辑Hosts内容,语法与原生Hosts文件相同</p><pre><code># 本地开发环境127.0.0.1    activate.navicat.com</code></pre></li><li><p>Ctrl+S保存(Mac用Command+S)</p></li></ol><h3 id="切换Hosts方案"><a href="#切换Hosts方案" class="headerlink" title="切换Hosts方案"></a>切换Hosts方案</h3><ol><li>在左侧方案列表中,勾选要使用的Hosts</li><li>点击右下角”应用”按钮</li></ol><p>就是这么easy,一键切换,再也不用手动改Hosts了!😄</p><h3 id="导入远程Hosts"><a href="#导入远程Hosts" class="headerlink" title="导入远程Hosts"></a>导入远程Hosts</h3><ol><li>点击左下角 + 号,选择”订阅远程Hosts”</li><li>输入方案名称和URL地址,如 <code>https://raw.githubusercontent.com/googlehosts/hosts/master/hosts-files/hosts</code></li><li>点击”确定”,SwitchHosts会自动同步远程Hosts内容</li></ol><p>非常适合团队统一管理Hosts,保证环境一致性。🤝 </p><h2 id="使用体验"><a href="#使用体验" class="headerlink" title="使用体验"></a>使用体验</h2><p>我平时会用SwitchHosts管理几套Hosts方案:</p><ul><li>全局方案: 平时使用,修改了常用网站的DNS解析,加快访问速度</li><li>开发方案: 调试本地程序时使用,把域名指向本机</li><li>测试方案: 连接到测试服务器,验证bug</li><li>公司方案: 公司内部的各种域名映射,团队共享</li></ul><p>切换起来非常方便,大大提高了效率。再也不用把时间浪费在重复的Hosts编辑上了。👨‍💻</p><p>而且SwitchHosts作为开源软件,我完全不用担心隐私和安全问题。源代码都在GitHub上,大家可以放心使用。✅</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>总的来说,SwitchHosts是一款非常优秀的Hosts管理工具。它简单易用,功能强大,满足了我对Hosts的各种需求。如果你也经常需要切换Hosts,不妨试试SwitchHosts,相信你会喜欢上它的!😍</p><p>你平时有修改Hosts的需求吗?都是用什么方法管理的呢?欢迎在评论区交流心得!💬</p><hr><p>最后,附上SwitchHosts的下载地址:</p><ul><li>官网: <a href="https://switchhosts.vercel.app/">https://switchhosts.vercel.app/</a></li><li>GitHub: <a href="https://github.com/oldj/SwitchHosts">https://github.com/oldj/SwitchHosts</a></li></ul><p>希望对大家有所帮助!下期见~👋</p>]]></content>
    
    
    <summary type="html">介绍一款开源、跨平台的Hosts管理工具SwitchHosts,帮你轻松切换多个Hosts方案,提升工作效率。</summary>
    
    
    
    <category term="软件" scheme="https://www.wangwangit.com/categories/%E8%BD%AF%E4%BB%B6/"/>
    
    
    <category term="Hosts" scheme="https://www.wangwangit.com/tags/Hosts/"/>
    
  </entry>
  
  <entry>
    <title>GIF录制从未如此简单！🚀</title>
    <link href="https://www.wangwangit.com/GIF%E5%BD%95%E5%88%B6%E4%BB%8E%E6%9C%AA%E5%A6%82%E6%AD%A4%E7%AE%80%E5%8D%95/"/>
    <id>https://www.wangwangit.com/GIF%E5%BD%95%E5%88%B6%E4%BB%8E%E6%9C%AA%E5%A6%82%E6%AD%A4%E7%AE%80%E5%8D%95/</id>
    <published>2024-05-21T10:25:00.000Z</published>
    <updated>2025-03-05T07:40:40.917Z</updated>
    
    <content type="html"><![CDATA[<h2 id="GIF-录屏，总是麻烦不断？🤯"><a href="#GIF-录屏，总是麻烦不断？🤯" class="headerlink" title="GIF 录屏，总是麻烦不断？🤯"></a>GIF 录屏，总是麻烦不断？🤯</h2><p>作为一名内容创作者，你是否经常需要制作 GIF 动图？无论是制作表情包、演示操作步骤，还是分享有趣瞬间，GIF 都是不可或缺的利器。</p><p>然而，传统的 GIF 录屏方式却常常让人抓狂：</p><ul><li><strong>步骤繁琐：</strong> 录屏、编辑、压缩、上传……一系列操作下来，时间和精力都耗费不少。</li><li><strong>兼容性差：</strong> 做好的 GIF 放到微信、公众号里，却发现无法播放或者变成了静态图。</li><li><strong>画质不佳：</strong> GIF 体积太大，上传缓慢，或者画质模糊，影响观看体验。</li></ul><p>别担心！今天我要向你推荐一款神器 —— <strong>Gif123</strong>，它将彻底解决你的烦恼，让 GIF 录屏变得前所未有的简单！🎉</p><p><strong>地址</strong>:  (<a href="https://gif123.aardio.com/">https://gif123.aardio.com/</a> )</p><h2 id="Gif123：GIF-录屏，一键搞定！✨"><a href="#Gif123：GIF-录屏，一键搞定！✨" class="headerlink" title="Gif123：GIF 录屏，一键搞定！✨"></a>Gif123：GIF 录屏，一键搞定！✨</h2><p>Gif123 是一款完全免费开源的 GIF 录屏工具，它拥有以下令人惊艳的特性：</p><ul><li><strong>极简操作：</strong> 无需安装，下载即用，一键录制、复制、粘贴，GIF 动图轻松搞定。</li><li><strong>强大功能：</strong> 支持自定义帧率、压缩优化、鼠标轨迹录制、高分屏适配等，满足你的各种需求。</li><li><strong>超强兼容：</strong> 完美兼容 XP、Win7、Win10 等主流操作系统，以及微信、公众号等常用平台。</li></ul><p>有了 Gif123，你只需按下 <code>Ctrl+V</code>，就能将 GIF 动图直接粘贴到微信、公众号文章中，无需再忍受繁琐的上传步骤！🤩</p><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240521161558788.png" alt="image-20240521161558788"></p><h2 id="Gif123：GIF-画质，更上一层楼！🎨"><a href="#Gif123：GIF-画质，更上一层楼！🎨" class="headerlink" title="Gif123：GIF 画质，更上一层楼！🎨"></a>Gif123：GIF 画质，更上一层楼！🎨</h2><p>Gif123 不仅操作简单，还具备强大的画质优化功能，让你制作的 GIF 动图更小更清晰：</p><ul><li><strong>帧率控制：</strong> 自由调整每秒帧数，在文件大小和动画流畅度之间找到最佳平衡。</li><li><strong>压缩优化：</strong> 自动调用 Gifsicle 压缩算法，显著减小 GIF 体积，同时保持画质。</li><li><strong>色彩优化：</strong> 在 GIF 有限的颜色限制下，智能提升画质，让画面更细腻。</li><li><strong>分辨率适配：</strong> 在高分屏下自动压缩 GIF 分辨率，避免图片过大。</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/image-20240521161909060.png" alt="image-20240521161909060"></p><h2 id="Gif123：更多惊喜，等你发现！🎁"><a href="#Gif123：更多惊喜，等你发现！🎁" class="headerlink" title="Gif123：更多惊喜，等你发现！🎁"></a>Gif123：更多惊喜，等你发现！🎁</h2><p>Gif123 还隐藏着许多实用功能，等待你去探索：</p><ul><li><strong>鼠标轨迹录制：</strong> 清晰展示鼠标移动轨迹，让操作演示更直观。</li><li><strong>鼠标指针高亮：</strong> 可自定义鼠标指针大小和高亮效果，聚焦用户注意力。</li><li><strong>动画帧编辑：</strong> 暂停预览后可编辑动画帧，随心所欲修改 GIF 内容。</li></ul><p><img src="https://i0.wp.com/wangwangit001.cachefly.net/wangwangit/image/master/img/screenshots.gif" alt="screenshots"></p><h2 id="总结：Gif123，让-GIF-录屏成为享受！🌈"><a href="#总结：Gif123，让-GIF-录屏成为享受！🌈" class="headerlink" title="总结：Gif123，让 GIF 录屏成为享受！🌈"></a>总结：Gif123，让 GIF 录屏成为享受！🌈</h2><p>如果你正在寻找一款简单易用、功能强大的 GIF 录屏工具，那么 Gif123 绝对是不二之选！它将为你节省大量时间和精力，让你轻松制作出高质量的 GIF 动图。</p><p>赶快下载 Gif123，开启你的 GIF 创作之旅吧！🚀</p>]]></content>
    
    
    <summary type="html">Gif123是一款免费开源的GIF录屏软件，具有操作简单、功能强大、兼容性好等特点。它能帮你轻松录制GIF动图，并进行压缩和优化，让你的GIF动图更小更清晰。</summary>
    
    
    
    <category term="软件" scheme="https://www.wangwangit.com/categories/%E8%BD%AF%E4%BB%B6/"/>
    
    
    <category term="GIF" scheme="https://www.wangwangit.com/tags/GIF/"/>
    
    <category term="录屏" scheme="https://www.wangwangit.com/tags/%E5%BD%95%E5%B1%8F/"/>
    
    <category term="软件推荐" scheme="https://www.wangwangit.com/tags/%E8%BD%AF%E4%BB%B6%E6%8E%A8%E8%8D%90/"/>
    
  </entry>
  
</feed>
