PageSourceSearch

https://tianxingleo.top/

html tianxingleo.top collected 2026-10-06 13:15:18 UTC 98,782 bytes, 503 lines download raw bytes

1<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"><title>Tianxingleo的Blog</title><meta name="author" content="Tianxingleo"><meta name="copyright" content="Tianxingleo"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#f7f9fe"><meta name="mobile-web-app-capable" content="yes"><meta name="apple-touch-fullscreen" content="yes"><meta name="apple-mobile-web-app-title" content="Tianxingleo的Blog"><meta name="application-name" content="Tianxingleo的Blog"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="#f7f9fe"><meta property="og:type" content="website"><meta property="og:title" content="Tianxingleo的Blog"><meta property="og:url" content="https://tianxingleo.top/index.html"><meta property="og:site_name" content="Tianxingleo的Blog"><meta property="og:description"><meta property="og:locale" content="zh-CN"><meta property="og:image" content="https://github.com/tianxingleo.png"><meta property="article:author" content="Tianxingleo"><meta property="article:tag"><meta name="twitter:card" content="summary"><meta name="twitter:image" content="https://github.com/tianxingleo.png"><meta name="description"><link rel="shortcut icon" href="/favicon.ico"><link rel="canonical" href="https://tianxingleo.top/"><link rel="preconnect" href="//cdn.cbd.int"/><link rel="preconnect" href="//www.google-analytics.com" crossorigin=""/><link rel="preconnect" href="//hm.baidu.com"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><meta name="google-site-verification" content="xxx"/><meta name="baidu-site-verification" content="code-xxx"/><meta name="msvalidate.01" content="xxx"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.cbd.int/[email protected]/dist/snackbar.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.cbd.int/@fancyapps/[email protected]/dist/fancybox/fancybox.css" media="print" onload="this.media='all'">
1<script async="async" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1224030144383381" crossorigin="anonymous"></script>
1<script>var _hmt = _hmt || [];
2(function() {
3  var hm = document.createElement("script");
4  hm.src = "https://hm.baidu.com/hm.js?2abdc2befae45d70b9fd72c864f6fac0";
5  var s = document.getElementsByTagName("script")[0]; 
6  s.parentNode.insertBefore(hm, s);
7})();
8</script>
vendor: 71 bytes, line 8
8<script async="async" src="https://www.googletagmanager.com/gtag/js?id=
8G-NVDE0BFR5M
vendor: 11 bytes, line 8
8"></script>
8<script>
vendor: 127 bytes, lines 8-11
8window.dataLayer = window.dataLayer || [];
9function gtag(){dataLayer.push(arguments);}
10gtag('js', new Date());
11gtag('config', '
11G-NVDE0BFR5M
vendor: 4 bytes, line 11
11');
12</script>
12<script>const GLOBAL_CONFIG = {
13  linkPageTop: undefined,
14  peoplecanvas: undefined,
15  postHeadAiDescription: {"enable":true,"gptName":"AnZhiYu","mode":"tianli","switchBtn":false,"btnLink":"https://afdian.net/item/886a79d4db6711eda42a52540025c377","randomNum":3,"basicWordCount":1000,"key":"S-IQC7J39MX5C7PRZM","Referer":"https://xx.xx/"},
16  diytitle: {"enable":true,"leaveTitle":"w(゚Д゚)w 不要走!再看看嘛!","backTitle":"♪(^∇^*)欢迎肥来!"},
17  LA51: undefined,
18  greetingBox: undefined,
19  twikooEnvId: '',
20  commentBarrageConfig:undefined,
21  music_page_default: "nav_music",
22  root: '/',
23  preloader: {"source":3},
24  friends_vue_info: undefined,
25  navMusic: false,
26  mainTone: undefined,
27  authorStatus: undefined,
28  algolia: {"appId":"66YB7CN8AP","apiKey":"61956196bfa43507ef197aade2f06e78","indexName":"my-hexo-blog","hits":{"per_page":6},"languages":{"input_placeholder":"输入关键词后按下回车查找","hits_empty":"找不到您查询的内容:${query}","hits_stats":"找到 ${hits} 条结果,用时 ${time} 毫秒"}},
29  localSearch: undefined,
30  translate: {"defaultEncoding":2,"translateDelay":0,"msgToTraditionalChinese":"繁","msgToSimplifiedChinese":"简","rightMenuMsgToTraditionalChinese":"转为繁体","rightMenuMsgToSimplifiedChinese":"转为简体"},
31  noticeOutdate: undefined,
32  highlight: {"plugin":"highlight.js","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":330},
33  copy: {
34    success: '复制成功',
35    error: '复制错误',
36    noSupport: '浏览器不支持'
37  },
38  relativeDate: {
39    homepage: false,
40    simplehomepage: true,
41    post: false
42  },
43  runtime: '天',
44  date_suffix: {
45    just: '刚刚',
46    min: '分钟前',
47    hour: '小时前',
48    day: '天前',
49    month: '个月前'
50  },
51  copyright: {"copy":true,"copyrightEbable":false,"limitCount":50,"languages":{"author":"作者: Tianxingleo","link":"链接: ","source":"来源: Tianxingleo的Blog","info":"著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。","copySuccess":"复制成功,复制和转载请标注本文地址"}},
52  lightbox: 'fancybox',
53  Snackbar: {"chs_to_cht":"你已切换为繁体","cht_to_chs":"你已切换为简体","day_to_night":"你已切换为深色模式","night_to_day":"你已切换为浅色模式","bgLight":"#425AEF","bgDark":"#1f1f1f","position":"top-center"},
54  source: {
55    justifiedGallery: {
56      js: 'https://cdn.cbd.int/[email protected]/dist/fjGallery.min.js',
57      css: 'https://cdn.cbd.int/[email protected]/dist/fjGallery.css'
58    }
59  },
60  isPhotoFigcaption: false,
61  islazyload: true,
62  isAnchor: false,
63  shortcutKey: undefined,
64  autoDarkmode: true
65}</script>
65<script id="config-diff">var GLOBAL_CONFIG_SITE = {
66  configTitle: 'Tianxingleo的Blog',
67  title: 'Tianxingleo的Blog',
68  postAI: '',
69  pageFillDescription: '',
70  isPost: false,
71  isHome: true,
72  isHighlightShrink: false,
73  isToc: false,
74  postUpdate: '2026-05-02 12:10:59',
75  postMainColor: '',
76}</script>
76<noscript><style type="text/css">
77  #nav {
78    opacity: 1
79  }
80  .justified-gallery img {
81    opacity: 1
82  }
83
84  #recent-posts time,
85  #post-meta time {
86    display: inline !important
87  }
88</style></noscript>
88<script>(win=>{
89      win.saveToLocal = {
90        set: (key, value, ttl) => {
91          if (ttl === 0) return
92          const now = Date.now()
93          const expiry = now + ttl * 86400000
94          const item = {
95            value,
96            expiry
97          }
98          localStorage.setItem(key, JSON.stringify(item))
99        },
100      
101        get: key => {
102          const itemStr = localStorage.getItem(key)
103      
104          if (!itemStr) {
105            return undefined
106          }
107          const item = JSON.parse(itemStr)
108          const now = Date.now()
109      
110          if (now > item.expiry) {
111            localStorage.removeItem(key)
112            return undefined
113          }
114          return item.value
115        }
116      }
117    
118      win.getScript = (url, attr = {}) => new Promise((resolve, reject) => {
119        const script = document.createElement('script')
120        script.src = url
121        script.async = true
122        script.onerror = reject
123        script.onload = script.onreadystatechange = function() {
124          const loadState = this.readyState
125          if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
126          script.onload = script.onreadystatechange = null
127          resolve()
128        }
129
130        Object.keys(attr).forEach(key => {
131          script.setAttribute(key, attr[key])
132        })
133
134        document.head.appendChild(script)
135      })
136    
137      win.getCSS = (url, id = false) => new Promise((resolve, reject) => {
138        const link = document.createElement('link')
139        link.rel = 'stylesheet'
140        link.href = url
141        if (id) link.id = id
142        link.onerror = reject
143        link.onload = link.onreadystatechange = function() {
144          const loadState = this.readyState
145          if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
146          link.onload = link.onreadystatechange = null
147          resolve()
148        }
149        document.head.appendChild(link)
150      })
151    
152      win.activateDarkMode = () => {
153        document.documentElement.setAttribute('data-theme', 'dark')
154        if (document.querySelector('meta[name="theme-color"]') !== null) {
155          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#18171d')
156        }
157      }
158      win.activateLightMode = () => {
159        document.documentElement.setAttribute('data-theme', 'light')
160        if (document.querySelector('meta[name="theme-color"]') !== null) {
161          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#f7f9fe')
162        }
163      }
164      const t = saveToLocal.get('theme')
165    
166          const isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
167          const isLightMode = window.matchMedia('(prefers-color-scheme: light)').matches
168          const isNotSpecified = window.matchMedia('(prefers-color-scheme: no-preference)').matches
169          const hasNoSupport = !isDarkMode && !isLightMode && !isNotSpecified
170
171          if (t === undefined) {
172            if (isLightMode) activateLightMode()
173            else if (isDarkMode) activateDarkMode()
174            else if (isNotSpecified || hasNoSupport) {
175              const now = new Date()
176              const hour = now.getHours()
177              const isNight = hour <= 6 || hour >= 18
178              isNight ? activateDarkMode() : activateLightMode()
179            }
180            window.matchMedia('(prefers-color-scheme: dark)').addListener(e => {
181              if (saveToLocal.get('theme') === undefined) {
182                e.matches ? activateDarkMode() : activateLightMode()
183              }
184            })
185          } else if (t === 'light') activateLightMode()
186          else activateDarkMode()
187        
188      const asideStatus = saveToLocal.get('aside-status')
189      if (asideStatus !== undefined) {
190        if (asideStatus === 'hide') {
191          document.documentElement.classList.add('hide-aside')
192        } else {
193          document.documentElement.classList.remove('hide-aside')
194        }
195      }
196    
197      const detectApple = () => {
198        if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
199          document.documentElement.classList.add('apple')
200        }
201      }
202      detectApple()
203    })(window)</script>
203<!-- hexo injector head_end start --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.9/katex.min.css" integrity="sha512-fHwaWebuwA7NSF5Qg/af4UeDx9XqUpYpOGgubo3yWu+b2IQR4UeQwbb42Ti7gVAjNtVoI/I9TEoYeu9omwcC6g==" crossorigin="anonymous" referrerpolicy="no-referrer" /><!-- hexo injector head_end end --><meta name="generator" content="Hexo 8.1.1"><link rel="alternate" href="/atom.xml" title="Tianxingleo的Blog" type="application/atom+xml">
204</head><body data-type="anzhiyu"><div id="web_bg"></div><div id="an_music_bg"></div><div id="loading-box" onclick="document.getElementById(&quot;loading-box&quot;).classList.add(&quot;loaded&quot;)"><div class="loading-bg"><img class="loading-img nolazyload" alt="加载头像" src="https://avatars.githubusercontent.com/u/237200863?v=4"/><div class="loading-image-dot"></div></div></div>
204<script>const preloader = {
205  endLoading: () => {
206    document.getElementById('loading-box').classList.add("loaded");
207  },
208  initLoading: () => {
209    document.getElementById('loading-box').classList.remove("loaded")
210  }
211}
212window.addEventListener('load',()=> { preloader.endLoading() })
213setTimeout(function(){preloader.endLoading();},10000)
214
215if (false) {
216  document.addEventListener('pjax:send', () => { preloader.initLoading() })
217  document.addEventListener('pjax:complete', () => { preloader.endLoading() })
218}</script>
218<link rel="stylesheet" href="https://cdn.cbd.int/[email protected]/progress_bar/progress_bar.css"/>
218<script async="async" src="https://cdn.cbd.int/[email protected]/pace.min.js" data-pace-options="{ &quot;restartOnRequestAfter&quot;:false,&quot;eventLag&quot;:false}"></script>
218<div class="page" id="body-wrap"><header class="full_page" id="page-header" style="background: url(https://pub-f8d3afa0c3274f1e943ee2f8c45dff96.r2.dev/64761443_p01.webp) top / cover no-repeat"><nav id="nav"><div id="nav-group"><span id="blog_name"><div class="back-home-button"><i class="anzhiyufont anzhiyu-icon-grip-vertical"></i><div class="back-menu-list-groups"><div class="back-menu-list-group"><div class="back-menu-list-title">网页</div><div class="back-menu-list"><a class="back-menu-item" target="_blank" rel="noopener" href="https://tianxingleo.github.io" title="博客"><img class="back-menu-item-icon" src="https://avatars.githubusercontent.com/u/237200863?v=4" alt="博客"/><span class="back-menu-item-text">博客</span></a></div></div><div class="back-menu-list-group"><div class="back-menu-list-title">项目</div><div class="back-menu-list"><a class="back-menu-item" target="_blank" rel="noopener" href="https://acgti.tianxingleo.top" title="ACGTI"><img class="back-menu-item-icon" src="https://acgti.tianxingleo.top/favicon.svg" alt="ACGTI"/><span class="back-menu-item-text">ACGTI</span></a><a class="back-menu-item" target="_blank" rel="noopener" href="https://github.com/tianxingleo" title="Github"><img class="back-menu-item-icon" src="https://github.githubassets.com/assets/GitHub-Mark-ea2971cee799.png" alt="Github"/><span class="back-menu-item-text">Github</span></a></div></div></div></div><a id="site-name" href="/" accesskey="h"><div class="title">Tianxingleo的Blog</div><i class="anzhiyufont anzhiyu-icon-house-chimney"></i></a></span><div class="mask-name-container"><div id="name-container"><a id="page-name" href="javascript:anzhiyu.scrollToDest(0, 500)">Tianxingleo的Blog</a></div></div><div id="menus"><div class="menus_items"><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 首页</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/"><i class="anzhiyufont anzhiyu-icon-home faa-tada" style="font-size: 0.9em;"></i><span> 首页</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 文章</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/archives/"><i class="anzhiyufont anzhiyu-icon-box-archive faa-tada" style="font-size: 0.9em;"></i><span> 归档</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/categories/"><i class="anzhiyufont anzhiyu-icon-shapes faa-tada" style="font-size: 0.9em;"></i><span> 分类</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/tags/"><i class="anzhiyufont anzhiyu-icon-tags faa-tada" style="font-size: 0.9em;"></i><span> 标签</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 友链</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/link/"><i class="anzhiyufont anzhiyu-icon-link faa-tada" style="font-size: 0.9em;"></i><span> 友人帐</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 关于</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/about/"><i class="anzhiyufont anzhiyu-icon-paper-plane faa-tada" style="font-size: 0.9em;"></i><span> 关于本人</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/privacy/"><i class="anzhiyufont anzhiyu-icon-shield faa-tada" style="font-size: 0.9em;"></i><span> 隐私政策</span></a></li><li><a class="site-page child faa-parent animated-hover" href="javascript:toRandomPost()"><i class="anzhiyufont anzhiyu-icon-shoe-prints1 faa-tada" style="font-size: 0.9em;"></i><span> 随便逛逛</span></a></li></ul></div></div></div><div id="nav-right"><div class="nav-button" id="randomPost_button"><a class="site-page" onclick="toRandomPost()" title="随机前往一个文章" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-dice"></i></a></div><div class="nav-button" id="search-button"><a class="site-page social-icon search" href="javascript:void(0);" title="搜索🔍" accesskey="s"><i class="anzhiyufont anzhiyu-icon-magnifying-glass"></i><span> 搜索</span></a></div><input id="center-console" type="checkbox"/><label class="widget" for="center-console" title="中控台" onclick="anzhiyu.switchConsole();"><i class="left"></i><i class="widget center"></i><i class="widget right"></i></label><div id="console"><div class="console-card-group-reward"><ul class="reward-all console-card"><li class="reward-item"><a href="https://npm.elemecdn.com/[email protected]/img/post/common/qrcode-weichat.png" target="_blank"><img class="post-qr-code-img" alt="微信" src="https://npm.elemecdn.com/[email protected]/img/post/common/qrcode-weichat.png"/></a><div class="post-qr-code-desc">微信</div></li><li class="reward-item"><a href="https://npm.elemecdn.com/[email protected]/img/post/common/qrcode-alipay.png" target="_blank"><img class="post-qr-code-img" alt="支付宝" src="https://npm.elemecdn.com/[email protected]/img/post/common/qrcode-alipay.png"/></a><div class="post-qr-code-desc">支付宝</div></li></ul></div><div class="console-card-group"><div class="console-card-group-left"></div><div class="console-card-group-right"><div class="console-card tags"><div class="card-content"><div class="author-content-item-tips">兴趣点</div><span class="author-content-item-title">寻找你感兴趣的领域</span><div class="card-tags"><div class="item-headline"></div><div class="card-tag-cloud"><a href="/tags/3D%E6%89%93%E5%8D%B0/" style="font-size: 1.05rem;">3D打印<sup>1</sup></a><a href="/tags/3dgs/" style="font-size: 1.05rem;">3dgs<sup>7</sup></a><a href="/tags/AI/" style="font-size: 1.05rem;">AI<sup>1</sup></a><a href="/tags/CG/" style="font-size: 1.05rem;">CG<sup>7</sup></a><a href="/tags/CV/" style="font-size: 1.05rem;">CV<sup>6</sup></a><a href="/tags/GAMES/" style="font-size: 1.05rem;">GAMES<sup>1</sup></a><a href="/tags/GAMES101/" style="font-size: 1.05rem;">GAMES101<sup>1</sup></a><a href="/tags/LLM/" style="font-size: 1.05rem;">LLM<sup>1</sup></a><a href="/tags/SDFoam/" style="font-size: 1.05rem;">SDFoam<sup>4</sup></a><a href="/tags/ai/" style="font-size: 1.05rem;">ai<sup>1</sup></a><a href="/tags/c/" style="font-size: 1.05rem;">c<sup>4</sup></a><a href="/tags/cloudflare/" style="font-size: 1.05rem;">cloudflare<sup>1</sup></a><a href="/tags/cpc/" style="font-size: 1.05rem;">cpc<sup>4</sup></a><a href="/tags/cpp/" style="font-size: 1.05rem;">cpp<sup>14</sup></a><a href="/tags/css/" style="font-size: 1.05rem;">css<sup>1</sup></a><a href="/tags/docker/" style="font-size: 1.05rem;">docker<sup>1</sup></a><a href="/tags/frp/" style="font-size: 1.05rem;">frp<sup>1</sup></a><a href="/tags/html/" style="font-size: 1.05rem;">html<sup>1</sup></a><a href="/tags/mask/" style="font-size: 1.05rem;">mask<sup>1</sup></a><a href="/tags/metapi/" style="font-size: 1.05rem;">metapi<sup>1</sup></a><a href="/tags/nerfstudio/" style="font-size: 1.05rem;">nerfstudio<sup>1</sup></a><a href="/tags/nuxt/" style="font-size: 1.05rem;">nuxt<sup>1</sup></a><a href="/tags/sam/" style="font-size: 1.05rem;">sam<sup>1</sup></a><a href="/tags/sam3/" style="font-size: 1.05rem;">sam3<sup>1</sup></a><a href="/tags/ssh/" style="font-size: 1.05rem;">ssh<sup>1</sup></a><a href="/tags/supabase/" style="font-size: 1.05rem;">supabase<sup>1</sup></a><a href="/tags/tic/" style="font-size: 1.05rem;">tic<sup>1</sup></a><a href="/tags/vps/" style="font-size: 1.05rem;">vps<sup>3</sup></a><a href="/tags/vscode/" style="font-size: 1.05rem;">vscode<sup>
2182</sup></a><a href="/tags/wsl2/" style="font-size: 1.05rem;">wsl2<sup>1</sup></a><a href="/tags/yolo/" style="font-size: 1.05rem;">yolo<sup>1</sup></a><a href="/tags/%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA/" style="font-size: 1.05rem;">三维重建<sup>5</sup></a><a href="/tags/%E5%89%8D%E7%AB%AF/" style="font-size: 1.05rem;">前端<sup>2</sup></a><a href="/tags/%E5%A4%A7%E5%AD%A6/" style="font-size: 1.05rem;">大学<sup>11</sup></a><a href="/tags/%E5%AD%A6%E4%B9%A0/" style="font-size: 1.05rem;">学习<sup>6</sup></a><a href="/tags/%E6%8C%87%E9%92%88/" style="font-size: 1.05rem;">指针<sup>2</sup></a><a href="/tags/%E6%90%9C%E7%B4%A2/" style="font-size: 1.05rem;">搜索<sup>1</sup></a><a href="/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8/" style="font-size: 1.05rem;">服务器<sup>1</sup></a><a href="/tags/%E7%AE%97%E6%B3%95/" style="font-size: 1.05rem;">算法<sup>6</sup></a><a href="/tags/%E9%AB%98%E6%95%B0/" style="font-size: 1.05rem;">高数<sup>7</sup></a></div></div><hr/></div></div><div class="console-card history"><div class="item-headline"><i class="anzhiyufont anzhiyu-icon-box-archiv"></i><span>文章</span></div><div class="card-archives"><div class="item-headline"><i class="anzhiyufont anzhiyu-icon-archive"></i><span>归档</span></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/05/"><span class="card-archive-list-date">五月 2026</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">1</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/04/"><span class="card-archive-list-date">
218四月 2026</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">2</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/03/"><span class="card-archive-list-date">三月 2026</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">1</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/02/"><span class="card-archive-list-date">二月 2026</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">5</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/01/"><span class="card-archive-list-date">一月 2026</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">4</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2025/12/"><span class="card-archive-list-date">十二月 2025</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">18</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2025/11/"><span class="card-archive-list-date">十一月 2025</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">18</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2025/10/"><span class="card-archive-list-date">十月 2025</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">11</span><span>篇</span></div></a></li></ul></div><hr/></div></div></div><div class="button-group"><div class="console-btn-item"><a class="darkmode_switchbutton" title="显示模式切换" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-moon"></i></a></div><div class="console-btn-item" id="consoleHideAside" onclick="anzhiyu.hideAsideBtn()" title="边栏显示控制"><a class="asideSwitch"><i class="anzhiyufont anzhiyu-icon-arrows-left-right"></i></a></div></div><div class="console-mask" onclick="anzhiyu.hideConsole()" href="javascript:void(0);"></div></div><div class="nav-button" id="nav-totop"><a class="totopbtn" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i><span id="percent" onclick="anzhiyu.scrollToDest(0,500)">0</span></a></div><div id="toggle-menu"><a class="site-page" href="javascript:void(0);" title="切换"><i class="anzhiyufont anzhiyu-icon-bars"></i></a></div></div></div></nav><div id="site-info"><h1 id="site-title">Tianxingleo的Blog</h1><div id="site_social_icons"><a class="social-icon faa-parent animated-hover" href="/atom.xml" target="_blank" title="RSS"><i class="anzhiyufont anzhiyu-icon-rss"></i></a></div></div><div id="scroll-down"><i class="anzhiyufont anzhiyu-icon-angle-down scroll-down-effects"></i></div></header><main id="blog-container"><div id="home_top"><div class="swiper_container_card" style="height: auto;width: 100%"><div id="bannerGroup"><div id="random-banner"><div class="banners-title"><div class="banners-title-big">皈依不在天堂</div><div class="banners-title-big">皈依就在路上。</div><div class="banners-title-small">tianxingleo.github.io</div></div><div id="skills-tags-group-all"><div class="tags-group-wrapper"><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #fff"><img class="no-lightbox" title="Java" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/26ba17ce013ecde9afc8b373e2fc0b9d_1804318147854602575.jpg" size="60px" alt="Java"></div><div class="tags-group-icon" style="background: #57b6e6"><img class="no-lightbox" title="Docker" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/544b2d982fd5c4ede6630b29d86f3cae_7350393908531420887.png" size="60px" alt="Docker"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #4082c3"><img class="no-lightbox" title="Photoshop" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/4ce1d081b9b37b06e3714bee95e58589_1613929877388832041.png" size="60px" alt="Photoshop"></div><div class="tags-group-icon" style="background: #333"><img class="no-lightbox" title="Node" src="https://npm.elemecdn.com/[email protected]/img/svg/node-logo.svg" size="60px" alt="Node"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #2e3a41"><img class="no-lightbox" title="Webpack" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/32dc115fbfd1340f919f0234725c6fb4_4060605986539473613.png" size="60px" alt="Webpack"></div><div class="tags-group-icon" style="background: #fff"><img class="no-lightbox" title="Pinia" src="https://npm.elemecdn.com/[email protected]/img/svg/pinia-logo.svg" size="60px" alt="Pinia"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #fff"><img class="no-lightbox" title="Python" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/02c9c621414cc2ca41035d809a4154be_7912546659792951301.png" size="60px" alt="Python"></div><div class="tags-group-icon" style="background: #937df7"><img class="no-lightbox" title="Vite" src="https://npm.elemecdn.com/[email protected]/img/svg/vite-logo.svg" size="60px" alt="Vite"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #4499e4"><img class="no-lightbox" title="Flutter" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/b5aa93e0b61d8c9784cf76d14886ea46_4590392178423108088.png" size="60px" alt="Flutter"></div><div class="tags-group-icon" style="background: #b8f0ae"><img class="no-lightbox" title="Vue" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/cf23526f451784ff137f161b8fe18d5a_692393069314581413.png" size="60px" alt="Vue"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #222"><img class="no-lightbox" title="React" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0xMS41IC0xMC4yMzE3NCAyMyAyMC40NjM0OCI+CiAgPHRpdGxlPlJlYWN0IExvZ288L3RpdGxlPgogIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIyLjA1IiBmaWxsPSIjNjFkYWZiIi8+CiAgPGcgc3Ryb2tlPSIjNjFkYWZiIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiPgogICAgPGVsbGlwc2Ugcng9IjExIiByeT0iNC4yIi8+CiAgICA8ZWxsaXBzZSByeD0iMTEiIHJ5PSI0LjIiIHRyYW5zZm9ybT0icm90YXRlKDYwKSIvPgogICAgPGVsbGlwc2Ugcng9IjExIiByeT0iNC4yIiB0cmFuc2Zvcm09InJvdGF0ZSgxMjApIi8+CiAgPC9nPgo8L3N2Zz4K" size="60px" alt="React"></div><div class="tags-group-icon" style="background: #2c51db"><img class="no-lightbox" title="CSS3" src="https://upload-bbs.miyoushe.com/upload/2025/08/02/125766904/948767d87de7c5733b5f59b036d28b4b_3573026798828830876.png" size="60px" alt="CSS3"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #f7cb4f"><img class="no-lightbox" title="JS" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/06216e7fddb6704b57cb89be309443f9_7269407781142156006.png" size="60px" alt="JS"></div>
218<div class="tags-group-icon" style="background: #e9572b"><img class="no-lightbox" title="HTML" src="https://upload-bbs.miyoushe.com/upload/2025/08/02/125766904/f774c401c8bc2707e1df1323bdc9e423_1926035231499717029.png" size="60px" alt="HTML"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #df5b40"><img class="no-lightbox" title="Git" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/fcc0dbbfe206b4436097a8362d64b558_6981541002497327189.webp" size="60px" alt="Git"></div><div class="tags-group-icon" style="background: #e65164"><img class="no-lightbox" title="Apifox" src="https://upload-bbs.miyoushe.com/upload/2025/08/02/125766904/b61bc7287d7f7f89bd30079c7f04360e_2465770520170903938.png" size="60px" alt="Apifox"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #fff"><img class="no-lightbox" title="Java" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/26ba17ce013ecde9afc8b373e2fc0b9d_1804318147854602575.jpg" size="60px" alt="Java"></div><div class="tags-group-icon" style="background: #57b6e6"><img class="no-lightbox" title="Docker" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/544b2d982fd5c4ede6630b29d86f3cae_7350393908531420887.png" size="60px" alt="Docker"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #4082c3"><img class="no-lightbox" title="Photoshop" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/4ce1d081b9b37b06e3714bee95e58589_1613929877388832041.png" size="60px" alt="Photoshop"></div><div class="tags-group-icon" style="background: #333"><img class="no-lightbox" title="Node" src="https://npm.elemecdn.com/[email protected]/img/svg/node-logo.svg" size="60px" alt="Node"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #2e3a41"><img class="no-lightbox" title="Webpack" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/32dc115fbfd1340f919f0234725c6fb4_4060605986539473613.png" size="60px" alt="Webpack"></div><div class="tags-group-icon" style="background: #fff"><img class="no-lightbox" title="Pinia" src="https://npm.elemecdn.com/[email protected]/img/svg/pinia-logo.svg" size="60px" alt="Pinia"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #fff"><img class="no-lightbox" title="Python" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/02c9c621414cc2ca41035d809a4154be_7912546659792951301.png" size="60px" alt="Python"></div><div class="tags-group-icon" style="background: #937df7"><img class="no-lightbox" title="Vite" src="https://npm.elemecdn.com/[email protected]/img/svg/vite-logo.svg" size="60px" alt="Vite"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #4499e4"><img class="no-lightbox" title="Flutter" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/b5aa93e0b61d8c9784cf76d14886ea46_4590392178423108088.png" size="60px" alt="Flutter"></div><div class="tags-group-icon" style="background: #b8f0ae"><img class="no-lightbox" title="Vue" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/cf23526f451784ff137f161b8fe18d5a_692393069314581413.png" size="60px" alt="Vue"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #222"><img class="no-lightbox" title="React" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0xMS41IC0xMC4yMzE3NCAyMyAyMC40NjM0OCI+CiAgPHRpdGxlPlJlYWN0IExvZ288L3RpdGxlPgogIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIyLjA1IiBmaWxsPSIjNjFkYWZiIi8+CiAgPGcgc3Ryb2tlPSIjNjFkYWZiIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiPgogICAgPGVsbGlwc2Ugcng9IjExIiByeT0iNC4yIi8+CiAgICA8ZWxsaXBzZSByeD0iMTEiIHJ5PSI0LjIiIHRyYW5zZm9ybT0icm90YXRlKDYwKSIvPgogICAgPGVsbGlwc2Ugcng9IjExIiByeT0iNC4yIiB0cmFuc2Zvcm09InJvdGF0ZSgxMjApIi8+CiAgPC9nPgo8L3N2Zz4K" size="60px" alt="React"></div><div class="tags-group-icon" style="background: #2c51db"><img class="no-lightbox" title="CSS3" src="https://upload-bbs.miyoushe.com/upload/2025/08/02/125766904/948767d87de7c5733b5f59b036d28b4b_3573026798828830876.png" size="60px" alt="CSS3"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #f7cb4f"><img class="no-lightbox" title="JS" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/06216e7fddb6704b57cb89be309443f9_7269407781142156006.png" size="60px" alt="JS"></div>
218<div class="tags-group-icon" style="background: #e9572b"><img class="no-lightbox" title="HTML" src="https://upload-bbs.miyoushe.com/upload/2025/08/02/125766904/f774c401c8bc2707e1df1323bdc9e423_1926035231499717029.png" size="60px" alt="HTML"></div></div><div class="tags-group-icon-pair"><div class="tags-group-icon" style="background: #df5b40"><img class="no-lightbox" title="Git" src="https://upload-bbs.miyoushe.com/upload/2025/07/29/125766904/fcc0dbbfe206b4436097a8362d64b558_6981541002497327189.webp" size="60px" alt="Git"></div><div class="tags-group-icon" style="background: #e65164"><img class="no-lightbox" title="Apifox" src="https://upload-bbs.miyoushe.com/upload/2025/08/02/125766904/b61bc7287d7f7f89bd30079c7f04360e_2465770520170903938.png" size="60px" alt="Apifox"></div></div></div></div><a id="random-hover" href="javascript:toRandomPost()"><i class="anzhiyufont anzhiyu-icon-paper-plane"></i><div class="bannerText">随便逛逛<i class="anzhiyufont anzhiyu-icon-arrow-right"></i></div></a></div><div class="categoryGroup"><div class="categoryItem" style="box-shadow:var(--anzhiyu-shadow-blue)"><a class="categoryButton blue" href="/categories/%E5%AD%A6%E4%B9%A0/"><span class="categoryButtonText">学习</span><i class="anzhiyufont anzhiyu-icon-dove"></i></a></div><div class="categoryItem" style="box-shadow:var(--anzhiyu-shadow-red)"><a class="categoryButton red" href="/categories/%E9%A1%B9%E7%9B%AE/"><span class="categoryButtonText">项目</span><i class="anzhiyufont anzhiyu-icon-fire"></i></a></div><div class="categoryItem" style="box-shadow:var(--anzhiyu-shadow-green)"><a class="categoryButton green" href="/categories/%E7%94%9F%E6%B4%BB/"><span class="categoryButtonText">生活</span><i class="anzhiyufont anzhiyu-icon-book"></i></a></div></div></div><div class="topGroup"><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl(&quot;/posts/c725fe1a895f/&quot;) : window.location.href=&quot;/posts/c725fe1a895f/&quot;"><div class="post_cover left_radius"><a href="posts/c725fe1a895f/" title="2025学年高数上期末考试复习提纲"><span class="recent-post-top-text">荐</span><img class="post_bg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="cover" src="https://pub-f8d3afa0c3274f1e943ee2f8c45dff96.r2.dev/114477837_p0_master1200.webp?_r_=c1457af2-cb86-0bba-cb1b-fdbb6217f
218c4b"></a></div><div class="recent-post-info"><a class="article-title" href="posts/c725fe1a895f/" title="2025学年高数上期末考试复习提纲">2025学年高数上期末考试复习提纲</a></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl(&quot;/posts/f31cef78598b/&quot;) : window.location.href=&quot;/posts/f31cef78598b/&quot;"><div class="post_cover left_radius"><a href="posts/f31cef78598b/" title="CPU服务器跑LLM实录"><span class="recent-post-top-text">荐</span><img class="post_bg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="cover" src="https://pub-f8d3afa0c3274f1e943ee2f8c45dff96.r2.dev/9c7026124dcb360f454545904aac9838cb95adb8.webp?_r_=860c929a-21ec-b990-da89-af02f091f7a5"></a></div><div class="recent-post-info"><a class="article-title" href="posts/f31cef78598b/" title="CPU服务器跑LLM实录">CPU服务器跑LLM实录</a></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl(&quot;/posts/e215c1943dfb/&quot;) : window.location.href=&quot;/posts/e215c1943dfb/&quot;"><div class="post_cover left_radius"><a href="posts/e215c1943dfb/" title="2025学年高数上期中期末考试复习提纲"><span class="recent-post-top-text">荐</span><img class="post_bg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="cover" src="https://pub-f8d3afa0c3274f1e943ee2f8c45dff96.r2.dev/8eb85bb13982d5a8187fee8a42adf1bc1a95a704.webp?_r_=406473bb-f1b9-d8e9-22f4-d442b950ab68"></a></div><div class="recent-post-info"><a class="article-title" href="posts/e215c1943dfb/" title="2025学年高数上期中期末考试复习提纲">2025学年高数上期中期末考试复习提纲</a></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl(&quot;/posts/ad6732188258/&quot;) : window.location.href=&quot;/posts/ad6732188258/&quot;"><div class="post_cover left_radius"><a href="posts/ad6732188258/" title="2025年度总结"><span class="recent-post-top-text">荐</span><img class="post_bg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="cover" src="https://pub-f8d3afa0c3274f1e943ee2f8c45dff96.r2.dev/91953835_p0.webp?_r_=ad1d1f16-627c-2c04-b5b2-09f27120c269"></a></div><div class="recent-post-info"><a class="article-title" href="posts/ad6732188258/" title="2025年度总结">2025年度总结</a></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl(&quot;/posts/6bed9573cc87/&quot;) : window.location.href=&quot;/posts/6bed9573cc87/&quot;"><div class="post_cover left_radius"><a href="posts/6bed9573cc87/" title="C语言中常见的输入函数"><span class="recent-post-top-text">荐</span><img class="post_bg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="cover" src="https://pub-f8d3afa0c3274f1e943ee2f8c45dff96.r2.dev/ae2d1eca082f876be72a1278e9e959e9.webp?_r_=13b65b76-a656-0920-e70a-5cdc9d27fa00"></a></div><div class="recent-post-info"><a class="article-title" href="posts/6bed9573cc87/" title="C语言中常见的输入函数">C语言中常见的输入函数</a></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl(&quot;/posts/14b6f659dc49/&quot;) : window.location.href=&quot;/posts/14b6f659dc49/&quot;"><div class="post_cover left_radius"><a href="posts/14b6f659dc49/" title="DUT开发区cpc组第一次例会笔记(2025秋)"><span class="recent-post-top-text">荐</span><img class="post_bg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="cover" src="https://pub-f8d3afa0c3274f1e943ee2f8c45dff96.r2.dev/9c7026124dcb360f454545904aac9838cb95adb8.webp?_r_=9a20639a-6b7d-e269-71f2-350267a84a23"></a></div><div class="recent-post-info"><a class="article-title" href="posts/14b6f659dc49/" title="DUT开发区cpc组第一次例会笔记(2025秋)">DUT开发区cpc组第一次例会笔记(2025秋)</a></div></div><a class="todayCard" id="todayCard" target="_blank" rel="noopener" href="https://github.com/tianxingleo" style="z-index: 1;"><div class="todayCard-info"><div class="todayCard-tips">github.com/tianxingleo</div><div class="todayCard-title">我的github主页</div></div><img class="todayCard-cover" src="https://pub-f8d3afa0c3274f1e943ee2f8c45dff96.r2.dev/miku.jpg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="封面"><div class="banner-button-group"><div class="banner-button" onclick="event.stopPropagation();event.preventDefault();anzhiyu.hideTodayCard();"><i class="anzhiyufont anzhiyu-icon-arrow-circle-right"></i><span class="banner-button-text">更多推荐</span></div></div></a></div><link rel="stylesheet"></div></div><div class="layout" id="content-inner"><div class="recent-posts" id="recent-posts"><div id="categoryBar"><div class="category-bar" id="category-bar"><div id="catalog-bar"><div id="catalog-list"><div class="catalog-list-item" id="首页"><a href="/">首页</a></div>
219    <div class="catalog-list-item" id="/categories/学习/">
220      <a href="/categories/学习/">
221        学习
222      </a>
223    </div>
224    
225    <div class="catalog-list-item" id="/categories/项目/">
226      <a href="/categories/项目/">
227        项目
228      </a>
229    </div>
230    
231    <div class="catalog-list-item" id="/categories/生活/">
232      <a href="/categories/生活/">
233        生活
234      </a>
235    </div>
236    
237    <div class="catalog-list-item" id="/categories/折腾记录/">
238      <a href="/categories/折腾记录/">
239        折腾记录
240      </a>
241    </div>
242    </div><div class="category-bar-next" id="category-bar-next" onclick="anzhiyu.scrollCategoryBarToRight()"><i class="anzhiyufont anzhiyu-icon-angle-double-right"></i></div><a class="catalog-more" href="/categories/">更多</a></div></div></div><div class="recent-post-item lastestpost-item" onclick="window.pjax ? pjax.loadUrl('/posts/047ec04c09e7/') : window.location.href='/posts/047ec04c09e7/'"><div class="recent-post-info no-cover"><div class="recent-post-info-top"><div class="recent-post-info-top-tips"><div class="article-categories-original">折腾记录</div><span class="newPost">最新</span><a class="unvisited-post" href="/posts/047ec04c09e7/" title="Metapi统一AI网关部署全记录:从WSL2到Cloudflare Tunnel的完整配置与踩坑">未读</a></div><a class="article-title" href="/posts/047ec04c09e7/" title="Metapi统一AI网关部署全记录:从WSL2到Cloudflare Tunnel的完整配置与踩坑">Metapi统一AI网关部署全记录:从WSL2到Cloudflare Tunnel的完整配置与踩坑</a></div><div class="article-meta-wrap"><span class="post-meta-date"><i class="anzhiyufont anzhiyu-icon-calendar-days" style="font-size: 15px; display:none"></i><span class="article-meta-label">发表于</span><time datetime="2026-05-02T07:00:00.000Z" title="发表于 2026-05-02 15:00:00" time="2026-05-02 15:00:00">2026-05-02</time><time class="time_hidden" datetime="2026-05-01T17:39:33.927Z" title="更新于 2026-05-02 01:39:33" time="2026-05-02 01:39:33">2026-05-02</time></span><span class="article-meta tags"><a class="article-meta__tags" href="/tags/metapi/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>metapi</span></a><a class="article-meta__tags" href="/tags/docker/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>
242docker</span></a><a class="article-meta__tags" href="/tags/wsl2/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>wsl2</span></a><a class="article-meta__tags" href="/tags/cloudflare/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>cloudflare</span></a><a class="article-meta__tags" href="/tags/ai/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>ai</span></a></span></div><div class="content">Metapi 统一 AI 网关部署全记录:从 WSL2 到 Cloudflare Tunnel 的完整配置与踩坑
243
244本文记录了在 Windows WSL2 环境下部署 Metapi 统一 AI 网关的完整过程,重点记录了接入 DeepSeek 作为备用上游时遇到的一系列兼容性问题及其解决方案。
245
246一、起因:为什么需要 Metapi?
2471.1 背景:五花八门的 AI Token
248作为一名重度 AI 用户,我手上有各种来源的 API Token:
249
250GLM Coding Plan Lite:智谱的编程专用额度,价格便宜但并发限制严格
251**Xiaomi Mimo **:小米的 Coding Plan,有一定赠送额度
252DeepSeek API:自充值余额,v4-pro 降价后性价比极高
253各种 New API / One API 中转站:注册了一堆站点,额度分散
254
255这些 Token 分散在不同平台、不同账号,管理起来非常头疼。每次使用都要切换 Base URL 和 API Key,而且无法统一调度额度。
2561.2 直接诱因:GLM Coding Plan 并发不足
257GLM Coding Plan  ...</div></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl('/posts/9bcf27f17565/') : window.location.href='/posts/9bcf27f17565/'"><div class="recent-post-info no-cover"><div class="recent-post-info-top"><div class="recent-post-info-top-tips"><div class="article-categories-original">项目</div><a class="unvisited-post" href="/posts/9bcf27f17565/" title="【复盘】从一晚上一米工位到3天400w+浏览量的网站,我做了什么">未读</a></div><a class="article-title" href="/posts/9bcf27f17565/" title="【复盘】从一晚上一米工位到3天400w+浏览量的网站,我做了什么">【复盘】从一晚上一米工位到3天400w+浏览量的网站,我做了什么</a></div><div class="article-meta-wrap"><span class="post-meta-date"><i class="anzhiyufont anzhiyu-icon-calendar-days" style="font-size: 15px; display:none"></i><span class="article-meta-label">发表于</span><time datetime="2026-04-12T12:44:41.000Z" title="发表于 2026-04-12 20:44:41" time="2026-04-12 20:44:41">2026-04-12</time><time class="time_hidden" datetime="2026-04-28T16:36:53.165Z" title="更新于 2026-04-29 00:36:53" time="2026-04-29 00:36:53">2026-04-29</time></span><span class="article-meta tags"><a class="article-meta__tags" href="/tags/%E5%89%8D%E7%AB%AF/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>前端</span></a><a class="article-meta__tags" href="/tags/Vue/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>Vue</span></a><a class="article-meta__tags" href="/tags/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>开源项目</span></a><a class="article-meta__tags" href="/tags/ACG/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>ACG</span></a></span></div><div class="content">截止到 2026 年 4 月 14 日 16:00,ACGTI 的成果:
258站点累计浏览量超过 400w,访问人数超过 117w,GitHub 仓库收获 332 ⭐、22 Fork。
259对一个从热点中快速起意、以纯前端方式搭建、几天内完成上线和迭代的娱乐型小项目来说,这个传播速度远远超出了我一开始的预期。
260
261
262故事要从2026年4月9号说起
263那一天,我在B站刷到了一个关注的博主发的视频,展示了她做的SBTI。那一两天,朋友圈、小红书都被这个小网站刷屏了。
264我抱着看看这项目长什么样的心态去找了开源仓库,发现这居然是一个两三千行的单HTML文件。第一次看到的时候挺震撼——这么高热度的网站,居然是面向ChatGPT App vibe出来的。同时我也觉得这个项目的上限可以继续提升:单HTML文件决定了它难以维护,很多东西拓展起来不太方便,不够工程化。那如果用Vue3 rebuild一下,是不是就能极大拔高它的上限?
265先在GitHub上找了一下有没ACG相关的MBTI测试,感觉好像都不是我所想的那样,既然如此,不如自己做一个玩玩,正好不想复习高数(www结果高数考试也不算理想)。
266那一个晚上,我与  ...</div></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl('/posts/cb56b2867ae4/') : window.location.href='/posts/cb56b2867ae4/'"><div class="recent-post-info no-cover"><div class="recent-post-info-top"><div class="recent-post-info-top-tips"><div class="article-categories-original">生活</div><a class="unvisited-post" href="/posts/cb56b2867ae4/" title="2w+的3D打印机拓竹H2D上手体验">未读</a></div><a class="article-title" href="/posts/cb56b2867ae4/" title="2w+的3D打印机拓竹H2D上手体验">2w+的3D打印机拓竹H2D上手体验</a></div><div class="article-meta-wrap"><span class="post-meta-date"><i class="anzhiyufont anzhiyu-icon-calendar-days" style="font-size: 15px; display:none"></i><span class="article-meta-label">发表于</span><time datetime="2026-04-06T16:16:55.000Z" title="发表于 2026-04-07 00:16:55" time="2026-04-07 00:16:55">2026-04-07</time><time class="time_hidden" datetime="2026-04-28T16:36:53.106Z" title="更新于 2026-04-29 00:36:53" time="2026-04-29 00:36:53">2026-04-29</time></span><span class="article-meta tags"><a class="article-meta__tags" href="/tags/3D%E6%89%93%E5%8D%B0/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>3D打印</span></a></span></div><div class="content">有幸使用了拓竹H2D顶配3D打印机器,以下是这几周的使用体验。
267拿到的时候打印机已经基本安装好,但是存在刀切模组没有校准、TPU材料卡在AMS里面等问题。
268经过一个上午拆开AMS,取出卡在里面的AMS 85A材料,最终ä¿
268®å¥½äº†AMS可以正常打印。
269初次体验
270最初的使用体验:快
271开启狂暴模式166%速度的时候,打印小船模型就几分钟,打印一个小夹子,质量感觉还不错。
272
273
274AMS多色打印
275使用PLA打印了一组12个奶龙,忘记使用黑色材料了眼珠没打出来 www。开了狂暴模式之后好像也花了大概6小时,好像和普通模式打印速度区别不大,不知道为什么会这样。打到了晚上,最终刚好给组里每个人发了个奶龙。
276
277
278高精度打印
279尝试了一下这个机子的最高精度,选择的是PLA Matte灰色,打印了一对石狮子(6cm版本,感觉实际上就4cm),0.4mm喷嘴、0.08mm层高、树状支撑、100%速度,打印耗时3小时,除了存在一点轻微拉丝,质量还是非常不错的(对比奶龙可知)。
280
281刀切模组
282使用刀切模组尝试了官方demo生日贺卡,用的是标准A4打印纸。纸太薄了,容易掉渣,在粘性面板上不好清理,容易留渣导致面板的粘性下降以 ...</div></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl('/posts/daebf52d5077/') : window.location.href='/posts/daebf52d5077/'"><div class="recent-post-info no-cover"><div class="recent-post-info-top"><div class="recent-post-info-top-tips"><div class="article-categories-original">学习</div><a class="unvisited-post" href="/posts/daebf52d5077/" title="对 UrbanScene3D 数据集的一次初步调研">未读</a></div><a class="article-title" href="/posts/daebf52d5077/" title="对 UrbanScene3D 数据集的一次初步调研">对 UrbanScene3D 数据集的一次初步调研</a></div><div class="article-meta-wrap"><span class="post-meta-date"><i class="anzhiyufont anzhiyu-icon-calendar-days" style="font-size: 15px; display:none"></i><span class="article-meta-label">发表于</span><time datetime="2026-03-16T07:29:23.000Z" title="发表于 2026-03-16 15:29:23" time="2026-03-16 15:29:23">2026-03-16</time><time class="time_hidden" datetime="2026-04-28T16:36:53.184Z" title="更新于 2026-04-29 00:36:53" time="2026-04-29 00:36:53">2026-04-29</time></span><span class="article-meta tags"><a class="article-meta__tags" href="/tags/%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>三维重建</span></a><a class="article-meta__tags" href="/tags/SDF/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>SDF</span></a><a class="article-meta__tags" href="/tags/GIS/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>GIS</span></a><a class="article-meta__tags" href="/tags/%E6%95%B0%E6%8D%AE%E9%9B%86/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>数据集</span></a><a class="article-meta__tags" href="/tags/%E7%A7%91%E7%A0%94/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>科研</span></a><a class="article-meta__tags" href="/tags/UrbanScene3D/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>UrbanScene3D</span></a></span></div><div class="content">对 UrbanScene3D 数据集的一次初步调研:它能否用于基于 GIS 先验的 SDF 城市三维重建?
283最近在为“基于 GIS 先验的 SDF 城市级三维重建”找合适的数据集,我顺手把 UrbanScene3D 过了一遍。这里先记一份初步调研,重点不是做完整综述,而是回答一个更实际的问题:它能不能拿来把这条路线先跑通。
2841. 总体印象
285UrbanScene3D 官方给人的第一感觉是一个偏大规模城市场景的数据平台。不过实际下载和检查之后会发现,它并不是一套“原始影像 + 精确 GIS 模型 + 标准真值”打包整齐的数据,而更像是一组用途不同的资源放在了一起。
286从我目前看到的 Dropbox 目录来看,主要包括:
287
288Simulator.zip
289Image/
290Path/
291Proxy/
292Reconstructed/
293Evaluation.zip
294
295这些目录的作用并不一样。有些偏仿真,有些更接近重建输入,也有些更像辅助结果或已有处理中间产物。
2962. Simulator.zip:本质上是 UE 项目文件
297一开始我对 Simulator.zip 的预期,是它可能会包含某种可以直接使用的仿真数据, ...</div></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl('/posts/85effadda5b8/') : window.location.href='/posts/85effadda5b8/'"><div class="recent-post-info no-cover"><div class="recent-post-info-top"><div class="recent-post-info-top-tips"><div class="article-categories-original">学习</div><a class="unvisited-post" href="/posts/85effadda5b8/" title="极简条件下的房间3D重建,DA3与各3DGS Pipeline方案横评">未读</a></div><a class="article-title" href="/posts/85effadda5b8/" title="极简条件下的房间3D重建,DA3与各3DGS Pipeline方案横评">极简条件下的房间3D重建,DA3与各3DGS Pipeline方案横评</a></div><div class="article-meta-wrap"><span class="post-meta-date"><i class="anzhiyufont anzhiyu-icon-calendar-days" style="font-size: 15px; display:none"></i><span class="article-meta-label">发表于</span><time datetime="2026-02-20T08:21:03.000Z" title="发表于 2026-02-20 16:21:03" time="2026-02-20 16:21:03">2026-02-20</time><time class="time_hidden" datetime="2026-04-28T16:36:53.203Z" title="更新于 2026-04-29 00:36:53" time="2026-04-29 00:36:53">2026-04-29</time></span><span class="article-meta tags"><a class="article-meta__tags" href="/tags/CV/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>CV</span></a><a class="article-meta__tags" href="/tags/CG/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>CG</span></a><a class="article-meta__tags" href="/tags/SDF/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>SDF</span></a><a class="article-meta__tags" href="/tags/3DGS/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>3DGS</span></a><a class="article-meta__tags" href="/tags/Depth-Anything-3/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>Depth Anything 3</span></a></span></div><div class="content">极少素材极低质量的极端情况下房间三维重建不同Pipeline对比
298在推进个人 3D 记忆库构建的过程中,我们经常会遇到一个棘手的问题:日常随手记录的视频往往是不完美的。我们无法像实验室里那样,架设专业设备去获取无死角、高分辨率的素材。 如果只有一段极少视角的手机视频、极低画质、再加上满屋子的白墙和反光地板,三维重建还能做吗? 传统的 SfM(如 COLMAP)在这种大面积弱纹理场景下往往直接宣告失败。为了探寻在极少素材、极低质量的极端情况下的最佳解决方案,我在本地(RTX 5070 12G)对目前主流的几种结合深度先验的 3DGS Pipeline 进行了横向对比测试。
299素材
300
301拍摄器材:OPPO Find X8
302拍摄环境:室内傍晚暗光环境
303素材规格:从手机拍摄视频中抽取165张约500×700的照片,焦段15mm广角镜头(极少素材极低质量的极端情况)
304
305训练环境
30612600kF + RTX5070 12G + 64G RAM
307参考资料
308论文
309
3103D Gaussian Splatting for Real-Time Radiance Field Rendering - Bernard  ...</div></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl('/posts/88143c5a2f82/') : window.location.href='/posts/88143c5a2f82/'"><div class="recent-post-info no-cover"><div class="recent-post-info-top"><div class="recent-post-info-top-tips"><div class="article-categories-original">项目</div><a class="unvisited-post" href="/posts/88143c5a2f82/" title="Nuxt3+Supabase全栈应用私有化部署全记录">未读</a></div><a class="article-title" href="/posts/88143c5a2f82/" title="Nuxt3+Supabase全栈应用私有化部署全记录">Nuxt3+Supabase全栈应用私有化部署全记录</a></div><div class="article-meta-wrap"><span class="post-meta-date"><i class="anzhiyufont anzhiyu-icon-calendar-days" style="font-size: 15px; display:none"></i><span class="article-meta-label">发表于</span><time datetime="2026-02-10T08:01:34.000Z" title="发表于 2026-02-10 16:01:34" time="2026-02-10 16:01:34">2026-02-10</time><time class="time_hidden" datetime="2026-04-28T16:36:53.146Z" title="更新于 2026-04-29 00:36:53" time="2026-04-29 00:36:53">2026-04-29</time></span><span class="article-meta tags"><a class="article-meta__tags" href="/tags/nuxt/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>nuxt</span></a><a class="article-meta__tags" href="/tags/supabase/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>supabase</span></a><a class="article-meta__tags" href="/tags/vps/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>vps</span></a></span></div><div class="content">Nuxt3 + Supabase 全栈应用私有化部署全记录
311
312本文由 opencode + glm4.7 整理
313
314文章结构
315本文分为两个主要部分:
316第一部分:理想之路 —— 标准化部署 SOP
317详细介绍在理想情况下应该如何进行部署,包括环境准备、Supabase 配置、数据迁移、Nuxt 部署等完整流ç¨
317‹ã€‚
318第二部分:实战踩坑实录 —— 每一个报错背后的血泪
319真实还原部署过程中遇到的各种问题,从 Docker 安装失败到数据库密码地狱,再到构建优化等,为读者提供避坑指南。
320
321第一部分:理想之路 —— 标准化部署 SOP (如果不踩坑,你应该这样做)
322
323💡 核心逻辑:基于 Ubuntu 22.04 LTS,使用 Docker Compose 编排 Supabase,配合 Docker 运行 Nuxt3,并通过 GitHub Actions 实现自动化部署,最后由 Nginx 进行反向代理和 SSL 终结。
324
325一、 基础设施与环境准备 (Infrastructure)
3261.1 服务器选型与初始化
327硬件基准配置
328在部署 Supabase + Nuxt 3 全栈应用时,服务器配置需要综合考虑以 ...</div></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl('/posts/c66e8d2525fe/') : window.location.href='/posts/c66e8d2525fe/'"><div class="recent-post-info no-cover"><div class="recent-post-info-top"><div class="recent-post-info-top-tips"><div class="article-categories-original">学习</div><a class="unvisited-post" href="/posts/c66e8d2525fe/" title="GAMES101笔记: Lecture 01 Overview of Computer Graphics &amp; Lecture 02 Review of Linear Algebra &amp; Lecture 03 Transformation &amp; Lecture 04 Transformation Cont.">未读</a></div><a class="article-title" href="/posts/c66e8d2525fe/" title="GAMES101笔记: Lecture 01 Overview of Computer Graphics &amp; Lecture 02 Review of Linear Algebra &amp; Lecture 03 Transformation &amp; Lecture 04 Transformation Cont.">GAMES101笔记: Lecture 01 Overview of Computer Graphics &amp; Lecture 02 Review of Linear Algebra &amp; Lecture 03 Transformation &amp; Lecture 04 Transformation Cont.</a></div><div class="article-meta-wrap"><span class="post-meta-date"><i class="anzhiyufont anzhiyu-icon-calendar-days" style="font-size: 15px; display:none"></i><span class="article-meta-label">发表于</span><time datetime="2026-02-02T11:11:55.000Z" title="发表于 2026-02-02 19:11:55" time="2026-02-02 19:11:55">2026-02-02</time><time class="time_hidden" datetime="2026-04-28T16:36:53.138Z" title="更新于 2026-04-29 00:36:53" time="2026-04-29 00:36:53">2026-04-29</time></span><span class="article-meta tags"><a class="article-meta__tags" href="/tags/CG/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>CG</span></a><a class="article-meta__tags" href="/tags/GAMES101/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>GAMES101</span></a><a class="article-meta__tags" href="/tags/GAMES/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>GAMES</span></a></span></div><div class="content">Lecture 03 Transformation
329缩放矩阵:
330标准缩放:
331非均匀缩放:
332
333
334切变:
335
336旋转:
337
338其次坐标:Homogenous Coordinates
339为了能够用矩阵乘法统一表示平移(Translation),引入了第三个坐标分量:www 坐标。
3401. 坐标表示定义
341
3422D 点 (2D point):表示为 (x,y,1)T(x, y, 1)^T(x,y,1)T
3432D 向量 (2D vector):表示为 (x,y,0)T(x, y, 0)^T(x,y,0)T
344
345
346注意:www 分量为 111 表示位置(点),为 000 表示方向(向量)。这样设计的一个巧妙之处在于:向量具有平移不变性(加上平移量后,www 依旧为 000)。
347
348
3492. 平移的矩阵表示 (Matrix representation of translations)
350通过 3×33 \times 33×3 矩阵,我们可以将平移操作写成矩阵乘法形式:
351(x′y′w′)=(10tx01ty001)⋅(xy1)=(x+txy+ty1)\begin{pmatrix} x&#x27; \\ y&#x27; \\  ...</div></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl('/posts/f31cef78598b/') : window.location.href='/posts/f31cef78598b/'"><div class="recent-post-info no-cover"><div class="recent-post-info-top"><div class="recent-post-info-top-tips"><div class="article-categories-original">项目</div><a class="unvisited-post" href="/posts/f31cef78598b/" title="CPU服务器跑LLM实录">未读</a></div><a class="article-title" href="/posts/f31cef78598b/" title="CPU服务器跑LLM实录">CPU服务器跑LLM实录</a></div><div class="article-meta-wrap"><span class="post-meta-date"><i class="anzhiyufont anzhiyu-icon-calendar-days" style="font-size: 15px; display:none"></i><span class="article-meta-label">发表于</span><time datetime="2026-01-30T14:35:08.000Z" title="发表于 2026-01-30 22:35:08" time="2026-01-30 22:35:08">2026-01-30</time><time class="time_hidden" datetime="2026-04-28T16:36:53.118Z" title="更新于 2026-04-29 00:36:53" time="2026-04-29 00:36:53">2026-04-29</time></span><span class="article-meta tags"><a class="article-meta__tags" href="/tags/AI/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>AI</span></a><a class="article-meta__tags" href="/tags/LLM/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>LLM</span></a><a class="article-meta__tags" href="/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>服务器</span></a></span></div><div class="content">1. 硬件配置概况
352这台服务器的配置比较特殊,是典型的企业级后端服务器:
353
354CPU: 双路 Intel Xeon Gold 6231,共64个逻辑核心。支持 AVX-512 指令集。
355内存: 376GiB(约384GB)。这是这台机器最大的优势。
356硬盘: 238GB NVMe 固态硬盘(系统盘)+ 5块 14.6TB 机械硬盘(数据盘)。
357显卡: 无独立显卡。
358
359核心思路:利用 384GB 的超大内存作为“显存”,运行大参数量的量化模型。
3602. 环境搭建与网络难题
361要在 Linux 上跑模型,首选 Ollama。但在国内服务器上安装 Ollama 经常卡在下载环节。
362代理配置
363Ollama 的安装脚本和模型库都在 GitHub/Amazon S3 上。我先部署了 Hysteria2 客户端,将其转为本地 8080 端口的 HTTP 代理。
364在执行安装脚本时,必须手动指定代理:
365123export https_proxy=http://127.0.0.1:8080export http_proxy=http://127.0.0.1:8080curl -fsSL https://ollam ...</div></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl('/posts/87c4bf718838/') : window.location.href='/posts/87c4bf718838/'"><div class="recent-post-info no-cover"><div class="recent-post-info-top"><div class="recent-post-info-top-tips"><div class="article-categories-original">项目</div><a class="unvisited-post" href="/posts/87c4bf718838/" title="VSCode远程开发指南:使用FRP自建公网穿透与内网直连方案">未读</a></div><a class="article-title" href="/posts/87c4bf718838/" title="VSCode远程开发指南:使用FRP自建公网穿透与内网直连方案">VSCode远程开发指南:使用FRP自建公网穿透与内网直连方案</a></div><div class="article-meta-wrap"><span class="post-meta-date"><i class="anzhiyufont anzhiyu-icon-calendar-days" style="font-size: 15px; display:none"></i><span class="article-meta-label">发表于</span><time datetime="2026-01-15T15:31:46.000Z" title="发表于 2026-01-15 23:31:46" time="2026-01-15 23:31:46">2026-01-15</time><time class="time_hidden" datetime="2026-04-28T16:36:53.148Z" title="更新于 2026-04-29 00:36:53" time="2026-04-29 00:36:53">2026-04-29</time></span><span class="article-meta tags"><a class="article-meta__tags" href="/tags/vps/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>vps</span></a><a class="article-meta__tags" href="/tags/ssh/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>ssh</span></a><a class="article-meta__tags" href="/tags/vscode/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>vscode</span></a><a class="article-meta__tags" href="/tags/frp/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>frp</span></a></span></div><div class="content">背景
366VS Code 自带的 Tunnel 功能基于 Azure 中继服务器,在跨国或网络环境复杂的情况下(如国内连接海外),存在高延迟、连接不稳定及保存卡顿的问题。
367本教程介绍如何利用一台具有公网 IP 的 VPS,配合开源工具 FRP 搭建私有穿透隧道,实现低延迟的远程开发。同时介绍了在局域网环境下如何配置直连,避免流量绕行。
368架构说明
369
370服务端 (VPS):CentOS 9,公网 IP(示例:104.168.105.185)。
371目标机 (Target):Windows 运行的 WSL (Ubuntu),处于内网,无公网 IP。
372客户端 (Client):本地笔记本,安装 VS Code。
373
374
375第一部分:VPS 服务端配置
376需要在 VPS 上运行 FRP 的服务端 (frps),用于中转流量。
3771. 下载与安装
378登录 VPS,下载 FRP(需根据系统架构选择,此处以 Linux AMD64 为例):
37912345cd ~wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd ...</div></div></div><div class="recent-post-item" onclick="window.pjax ? pjax.loadUrl('/posts/0
379763f8f44d63/') : window.location.href='/posts/0763f8f44d63/'"><div class="recent-post-info no-cover"><div class="recent-post-info-top"><div class="recent-post-info-top-tips"><div class="article-categories-original">项目</div><a class="unvisited-post" href="/posts/0763f8f44d63/" title="针对 RackNerd VPS 与中国移动出口带宽限制的排查与优化指南">未读</a></div><a class="article-title" href="/posts/0763f8f44d63/" title="针对 RackNerd VPS 与中国移动出口带宽限制的排查与优化指南">针对 RackNerd VPS 与中国移动出口带宽限制的排查与优化指南</a></div><div class="article-meta-wrap"><span class="post-meta-date"><i class="anzhiyufont anzhiyu-icon-calendar-days" style="font-size: 15px; display:none"></i><span class="article-meta-label">发表于</span><time datetime="2026-01-15T15:06:03.000Z" title="发表于 2026-01-15 23:06:03" time="2026-01-15 23:06:03">2026-01-15</time><time class="time_hidden" datetime="2026-04-28T16:36:53.236Z" title="更新于 2026-04-29 00:36:53" time="2026-04-29 00:36:53">2026-04-29</time></span><span class="article-meta tags"><a class="article-meta__tags" href="/tags/vps/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>vps</span></a><a class="article-meta__tags" href="/tags/RackNerd/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>RackNerd</span></a><a class="article-meta__tags" href="/tags/Hysteria-2/" onclick="event.stopPropagation();"><span> <i class="anzhiyufont anzhiyu-icon-hashtag"></i>Hysteria 2</span></a></span></div><div class="content">针对 RackNerd VPS 与中国移动出口带宽限制的排查与利用Hysteria 2优化指南
3801. 问题背景与现象
381在使用 RackNerd 等美西廉价 VPS 时,中国移动宽带用户常遇到以下典型现象:
382
383初期正常:VPS 刚部署完成时(通常在非高峰时段),连接速度快,延迟可接受。
384后期衰减:在晚高峰(19:00 - 23:00)或部署一段时间后,SSH 连接卡顿,文件传输速度跌至极低水平(如 0.5Mbps - 2Mbps),且伴随高丢包率。
385协议失效:使用基于 TCP 的协议(如 VLESS-Reality、VMess-TCP)时,即使更换端口或伪装域名,速度依然无法恢复。
386
3872. 排查思路与根因分析
388当出现上述问题时,需按照以下逻辑进行排查,确认是否为线路拥堵导致的物理瓶颈。
3892.1 排除本地与服务端配置问题
390在进行链路分析前,需确认并非单点故障:
391
392本地网络:访问国内网站或其他非跨境服务速度正常,排除本地光猫或路由器问题。
393VPS 负载:通过 top 或 htop 命令检查 VPS 的 CPU 和内存占用。如果 CPU Steal Time (st) 较低,排除“邻居”占用资 ...</div></div></div><nav id="pagination"><div class="pagination"><span class="page-number current">1</span><a class="page-number" href="/page/2/#content-inner">2</a><a class="page-number" href="/page/3/#content-inner">3</a><a class="extend next" rel="next" href="/page/2/#content-inner"><div class="pagination_tips_next">下页</div><i style="font-weight: inherit; font-size: 1rem;" class="anzhiyufont anzhiyu-icon-chevron-right fa-fw"></i></a><div class="toPageGroup"><input id="toPageText" oninput="value=value.replace(/[^0-9]/g,'')" maxlength="3" onkeyup="this.value=this.value.replace(/[^u4e00-u9fa5w]/g,'')" aria-label="toPage"><a id="toPageButton" onclick="anzhiyu.toPage()"><i class="anzhiyufont anzhiyu-icon-angles-right" style="font-weight: inherit; font-size: 1rem;"></i></a></div></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="card-content"><div class="author-info-avatar"><img class="avatar-img" src="https://github.com/tianxingleo.png" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__description"><div style="line-height:1.38;margin:0.6rem 0;text-align:justify;color:rgba(255, 255, 255, 0.8);"><b style="color:#fff">这是天马行空(tianxingleo)</b>的blog,用于<b style="color:#fff">记录、分享、学习、交流</b></div></div><div class="author-info__bottom-group"><a class="author-info__bottom-group-left" href="/"><h1 class="author-info__name">Tianxingleo</h1><div class="author-info__desc"></div></a><div class="card-info-social-icons is-center"><a class="social-icon faa-parent animated-hover" href="/atom.xml" target="_blank" title="RSS"><i class="anzhiyufont anzhiyu-icon-rss"></i></a></div></div></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="anzhiyufont anzhiyu-icon-bullhorn anzhiyu-shake"></i><span>公告</span></div><div class="announcement_content">欢迎来看我的博客鸭~</div></div><div class="sticky_layout"><div class="card-widget"><div class="card-tags"><div class="item-headline"></div><div class="card-tag-cloud"><a href="/tags/3D%E6%89%93%E5%8D%B0/" style="font-size: 1.05rem;">3D打印<sup>1</sup></a><a href="/tags/3dgs/" style="font-size: 1.05rem;">3dgs<sup>7</sup></a><a href="/tags/AI/" style="font-size: 1.05rem;">AI<sup>1</sup></a><a href="/tags/CG/" style="font-size: 1.05rem;">CG<sup>7</sup></a><a href="/tags/CV/" style="font-size: 1.05rem;">CV<sup>6</sup></a><a href="/tags/GAMES/" style="font-size: 1.05rem;">GAMES<sup>1</sup></a><a href="/tags/GAMES101/" style="font-size: 1.05rem;">GAMES101<sup>1</sup></a><a href="/tags/LLM/" style="font-size: 1.05rem;">LLM<sup>1</sup></a><a href="/tags/SDFoam/" style="font-size: 1.05rem;">SDFoam<sup>4</sup></a><a href="/tags/ai/" style="font-size: 1.05rem;">ai<sup>1</sup></a><a href="/tags/c/" style="font-size: 1.05rem;">c<sup>4</sup></a><a href="/tags/cloudflare/" style="font-size: 1.05rem;">cloudflare<sup>1</sup></a><a href="/tags/cpc/" style="font-size: 1.05rem;">cpc<sup>4</sup></a><a href="/tags/cpp/" style="font-size: 1.05rem;">cpp<sup>14</sup></a><a href="/tags/css/" style="font-size: 1.05rem;">css<sup>1</sup></a><a href="/tags/docker/" style="font-size: 1.05rem;">docker<sup>1</sup></a><a href="/tags/frp/" style="font-size: 1.05rem;">frp<sup>1</sup></a><a href="/tags/html/" style="font-size: 1.05rem;">html<sup>1</sup></a><a href="/tags/mask/" style="font-size: 1.05rem;">mask<sup>1</sup></a><a href="/tags/metapi/" style="font-size: 1.05rem;">metapi<sup>1</sup></a><a href="/tags/nerfstudio/" style="font-size: 1.05rem;">nerfstudio<sup>1</sup></a><a href="/tags/nuxt/" style="font-size: 1.05rem;">nuxt<sup>1</sup></a><a href="/tags/sam/" style="font-size: 1.05rem;">sam<sup>1</sup></a><a href="/tags/sam3/" style="font-size: 1.05rem;">sam3<sup>1</sup></a><a href="/tags/ssh/" style="font-size: 1.05rem;">ssh<sup>1</sup></a><a href="/tags/supabase/" style="font-size: 1.05rem;">supabase<sup>1</sup></a><a href="/tags/tic/" style="font-size: 1.05rem;">tic<sup>1</sup></a><a href="/tags/vps/" style="font-size: 1.05rem;">vps<sup>3</sup></a><a href="/tags/vscode/" style="font-size: 1.05rem;">vscode<sup>
3932</sup></a><a href="/tags/wsl2/" style="font-size: 1.05rem;">wsl2<sup>1</sup></a><a href="/tags/yolo/" style="font-size: 1.05rem;">yolo<sup>1</sup></a><a href="/tags/%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA/" style="font-size: 1.05rem;">三维重建<sup>5</sup></a><a href="/tags/%E5%89%8D%E7%AB%AF/" style="font-size: 1.05rem;">前端<sup>2</sup></a><a href="/tags/%E5%A4%A7%E5%AD%A6/" style="font-size: 1.05rem;">大学<sup>11</sup></a><a href="/tags/%E5%AD%A6%E4%B9%A0/" style="font-size: 1.05rem;">学习<sup>6</sup></a><a href="/tags/%E6%8C%87%E9%92%88/" style="font-size: 1.05rem;">指针<sup>2</sup></a><a href="/tags/%E6%90%9C%E7%B4%A2/" style="font-size: 1.05rem;">搜索<sup>1</sup></a><a href="/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8/" style="font-size: 1.05rem;">服务器<sup>1</sup></a><a href="/tags/%E7%AE%97%E6%B3%95/" style="font-size: 1.05rem;">算法<sup>6</sup></a><a href="/tags/%E9%AB%98%E6%95%B0/" style="font-size: 1.05rem;">高数<sup>7</sup></a></div></div><hr/><div class="card-archives"><div class="item-headline"><i class="anzhiyufont anzhiyu-icon-archive"></i><span>归档</span></div><ul class="card-archive-list"><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/05/"><span class="card-archive-list-date">2026年05月</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">1</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/04/"><span class="card-archive-list-date">2026年04月</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">2</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/03/"><span class="card-archive-list-date">2026年03月</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">1</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/02/"><span class="card-archive-list-date">2026年02月</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">5</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2026/01/"><span class="card-archive-list-date">2026年01月</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">4</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2025/12/"><span class="card-archive-list-date">2025年12月</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">18</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2025/11/"><span class="card-archive-list-date">2025年11月</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">18</span><span>篇</span></div></a></li><li class="card-archive-list-item"><a class="card-archive-list-link" href="/archives/2025/10/"><span class="card-archive-list-date">2025年10月</span><div class="card-archive-list-count-group"><span class="card-archive-list-count">11</span><span>篇</span></div></a></li></ul></div><hr/><div class="card-webinfo"><div class="item-headline"><i class="anzhiyufont anzhiyu-icon-chart-line"></i><span>网站资讯</span></div><div class="webinfo"><div class="webinfo-item"><div class="webinfo-item-title"><i class="anzhiyufont anzhiyu-icon-file-lines"></i><div class="item-name">
393文章总数 :</div></div><div class="item-count">60</div></div><div class="webinfo-item"><div class="webinfo-item-title"><i class="anzhiyufont anzhiyu-icon-stopwatch"></i><div class="item-name">建站天数 :</div></div><div class="item-count" id="runtimeshow" data-publishDate="2025-10-13T16:00:00.000Z"><i class="anzhiyufont anzhiyu-icon-spinner anzhiyu-spin"></i></div></div><div class="webinfo-item"><div class="webinfo-item-title"><i class="anzhiyufont anzhiyu-icon-universal-access"></i><div class="item-name">总访客数 :</div></div><div class="item-count" id="busuanzi_value_site_uv"><i class="anzhiyufont anzhiyu-icon-spinner anzhiyu-spin"></i></div></div><div class="webinfo-item"><div class="webinfo-item-title"><i class="anzhiyufont anzhiyu-icon-square-poll-vertical"></i><div class="item-name">总访问量 :</div></div><div class="item-count" id="busuanzi_value_site_pv"><i class="anzhiyufont anzhiyu-icon-spinner anzhiyu-spin"></i></div></div></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div id="anzhiyu-footer"><div class="footer-group"><div class="footer-title">协议</div><div class="footer-links"><a class="footer-item" title="隐私政策" href="/privacy/">隐私政策</a><a class="footer-item" title="关于本站" href="/about/">关于本站</a></div></div><div class="footer-group"><div class="footer-title-group"><div class="footer-title">友链</div><a class="random-friends-btn" id="footer-random-friends-btn" href="javascript:addFriendLinksInFooter();" title="换一批友情链接"><i class="anzhiyufont anzhiyu-icon-arrow-rotate-right"></i></a></div><div class="footer-links" id="friend-links-in-footer"></div></div></div></div><div id="footer-bar"><div class="footer-bar-links"><div class="footer-bar-left"><div id="footer-bar-tips"><div class="copyright">&copy;2025 - 2026 By <a class="footer-bar-link" href="/" title="Tianxingleo" target="_blank">Tianxingleo</a></div></div><div id="footer-type-tips"></div></div><div class="footer-bar-right"><a class="footer-bar-link" target="_blank" rel="noopener" href="https://github.com/anzhiyu-c/hexo-theme-anzhiyu" title="主题">主题</a><a class="footer-bar-link" href="/privacy/" title="隐私政策">隐私政策</a><a class="footer-bar-link" href="/about/" title="关于">关于</a></div></div></div></footer></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="sidebar-site-data site-data is-center"><a href="/archives/" title="archive"><div class="headline">文章</div><div class="length-num">60</div></a><a href="/tags/" title="tag"><div class="headline">标签</div><div class="length-num">97</div></a><a href="/categories/" title="category"><div class="headline">分类</div><div class="length-num">4</div></a></div><span class="sidebar-menu-item-title">功能</span><div class="sidebar-menu-item"><a class="darkmode_switchbutton menu-child" href="javascript:void(0);" title="显示模式"><i class="anzhiyufont anzhiyu-icon-circle-half-stroke"></i><span>显示模式</span></a></div><div class="back-menu-list-groups"><div class="back-menu-list-group"><div class="back-menu-list-title">网页</div><div class="back-menu-list"><a class="back-menu-item" target="_blank" rel="noopener" href="https://tianxingleo.github.io" title="博客"><img class="back-menu-item-icon" src="https://avatars.githubusercontent.com/u/237200863?v=4" alt="博客"/><span class="back-menu-item-text">博客</span></a></div></div><div class="back-menu-list-group"><div class="back-menu-list-title">项目</div><div class="back-menu-list"><a class="back-menu-item" target="_blank" rel="noopener" href="https://acgti.tianxingleo.top" title="ACGTI"><img class="back-menu-item-icon" src="https://acgti.tianxingleo.top/favicon.svg" alt="ACGTI"/><span class="back-menu-item-text">ACGTI</span></a><a class="back-menu-item" target="_blank" rel="noopener" href="https://github.com/tianxingleo" title="Github"><img class="back-menu-item-icon" src="https://github.githubassets.com/assets/GitHub-Mark-ea2971cee799.png" alt="Github"/><span class="back-menu-item-text">Github</span></a></div></div></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 首页</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/"><i class="anzhiyufont anzhiyu-icon-home faa-tada" style="font-size: 0.9em;"></i><span> 首页</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 文章</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/archives/"><i class="anzhiyufont anzhiyu-icon-box-archive faa-tada" style="font-size: 0.9em;"></i><span> 归档</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/categories/"><i class="anzhiyufont anzhiyu-icon-shapes faa-tada" style="font-size: 0.9em;"></i><span> 分类</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/tags/"><i class="anzhiyufont anzhiyu-icon-tags faa-tada" style="font-size: 0.9em;"></i><span> 标签</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 友链</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/link/"><i class="anzhiyufont anzhiyu-icon-link faa-tada" style="font-size: 0.9em;"></i><span> 友人帐</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><span> 关于</span></a><ul class="menus_item_child"><li><a class="site-page child faa-parent animated-hover" href="/about/"><i class="anzhiyufont anzhiyu-icon-paper-plane faa-tada" style="font-size: 0.9em;"></i><span> 关于本人</span></a></li><li><a class="site-page child faa-parent animated-hover" href="/privacy/"><i class="anzhiyufont anzhiyu-icon-shield faa-tada" style="font-size: 0.9em;"></i><span> 隐私政策</span></a></li><li><a class="site-page child faa-parent animated-hover" href="javascript:toRandomPost()"><i class="anzhiyufont anzhiyu-icon-shoe-prints1 faa-tada" style="font-size: 0.9em;"></i><span> 随便逛逛</span></a></li></ul></div></div><span class="sidebar-menu-item-title">标签</span><div class="card-tags"><div class="item-headline"></div><div class="card-tag-cloud"><a href="/tags/3D%E6%89%93%E5%8D%B0/" style="font-size: 0.88rem;">3D打印<sup>1</sup></a><a href="/tags/3dgs/" style="font-size: 0.88rem;">3dgs<sup>7</sup></a><a href="/tags/AI/" style="font-size: 0.88rem;">AI<sup>1</sup></a><a href="/tags/CG/" style="font-size: 0.88rem;">CG<sup>7</sup></a><a href="/tags/CV/" style="font-size: 0.88rem;">CV<sup>6</sup></a><a href="/tags/GAMES/" style="font-size: 0.88rem;">GAMES<sup>1</sup></a><a href="/tags/GAMES101/" style="font-size: 0.88rem;">GAMES101<sup>1</sup></a><a href="/tags/LLM/" style="font-size: 0.88rem;">LLM<sup>1</sup></a><a href="/tags/SDFoam/" style="font-size: 0.88rem;">SDFoam<sup>4</sup></a><a href="/tags/ai/" style="font-size: 0.88rem;">ai<sup>1</sup></a><a href="/tags/c/" style="font-size: 0.88rem;">c<sup>4</sup></a><a href="/tags/cloudflare/" style="font-size: 0.88rem;">cloudflare<sup>1</sup></a><a href="/tags/cpc/" style="font-size: 0.88rem;">cpc<sup>4</sup></a><a href="/tags/cpp/" style="font-size: 0.88rem;">cpp<sup>14</sup></a><a href="/tags/css/" style="font-size: 0.88rem;">css<sup>1</sup></a><a href="/tags/docker/" style="font-size: 0.88rem;">docker<sup>1</sup></a><a href="/tags/frp/" style="font-size: 0.88rem;">frp<sup>1</sup></a><a href="/tags/html/" style="font-size: 0.88rem;">html<sup>1</sup></a><a href="/tags/mask/" style="font-size: 0.88rem;">mask<sup>1</sup></a><a href="/tags/metapi/" style="font-size: 0.88rem;">metapi<sup>1</sup></a><a href="/tags/nerfstudio/" style="font-size: 0.88rem;">nerfstudio<sup>1</sup></a><a href="/tags/nuxt/" style="font-size: 0.88rem;">nuxt<sup>1</sup></a><a href="/tags/sam/" style="font-size: 0.88rem;">sam<sup>1</sup></a><a href="/tags/sam3/" style="font-size: 0.88rem;">sam3<sup>1</sup></a><a href="/tags/ssh/" style="font-size: 0.88rem;">ssh<sup>1</sup></a><a href="/tags/supabase/" style="font-size: 0.88rem;">supabase<sup>1</sup></a><a href="/tags/tic/" style="font-size: 0.88rem;">tic<sup>1</sup></a><a href="/tags/vps/" style="font-size: 0.88rem;">vps<sup>3</sup></a><a href="/tags/vscode/" style="font-size: 0.88rem;">vscode<sup>
3932</sup></a><a href="/tags/wsl2/" style="font-size: 0.88rem;">wsl2<sup>1</sup></a><a href="/tags/yolo/" style="font-size: 0.88rem;">yolo<sup>1</sup></a><a href="/tags/%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA/" style="font-size: 0.88rem;">三维重建<sup>5</sup></a><a href="/tags/%E5%89%8D%E7%AB%AF/" style="font-size: 0.88rem;">前端<sup>2</sup></a><a href="/tags/%E5%A4%A7%E5%AD%A6/" style="font-size: 0.88rem;">大学<sup>11</sup></a><a href="/tags/%E5%AD%A6%E4%B9%A0/" style="font-size: 0.88rem;">学习<sup>6</sup></a><a href="/tags/%E6%8C%87%E9%92%88/" style="font-size: 0.88rem;">指针<sup>2</sup></a><a href="/tags/%E6%90%9C%E7%B4%A2/" style="font-size: 0.88rem;">搜索<sup>1</sup></a><a href="/tags/%E6%9C%8D%E5%8A%A1%E5%99%A8/" style="font-size: 0.88rem;">服务器<sup>1</sup></a><a href="/tags/%E7%AE%97%E6%B3%95/" style="font-size: 0.88rem;">算法<sup>6</sup></a><a href="/tags/%E9%AB%98%E6%95%B0/" style="font-size: 0.88rem;">高数<sup>7</sup></a></div></div><hr/></div></div><div id="rightside"><div id="rightside-config-hide"><button id="translateLink" type="button" title="简繁转换">繁</button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="anzhiyufont anzhiyu-icon-circle-half-stroke"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="anzhiyufont anzhiyu-icon-arrows-left-right"></i></button></div><div id="rightside-config-show"><button id="rightside-config" type="button" title="设置"><i class="anzhiyufont anzhiyu-icon-gear"></i></button><button id="go-up" type="button" title="回到顶部"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><div id="algolia-search"><div class="search-dialog"><nav class="search-nav"><span class="search-dialog-title">搜索</span><button class="search-close-button"><i class="anzhiyufont anzhiyu-icon-xmark"></i></button></nav><div class="search-wrap"><div id="algolia-search-input"></div><hr/><div id="algolia-search-results"><div id="algolia-hits"></div><div id="algolia-pagination"></div><div id="algolia-info"><div class="algolia-stats"></div><div class="algolia-poweredBy"></div></div></div></div></div><div id="search-mask"></div></div><div id="rightMenu"><div class="rightMenu-group rightMenu-small"><div class="rightMenu-item" id="menu-backward"><i class="anzhiyufont anzhiyu-icon-arrow-left"></i></div><div class="rightMenu-item" id="menu-forward"><i class="anzhiyufont anzhiyu-icon-arrow-right"></i></div><div class="rightMenu-item" id="menu-refresh"><i class="anzhiyufont anzhiyu-icon-arrow-rotate-right" style="font-size: 1rem;"></i></div><div class="rightMenu-item" id="menu-top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></div></div><div class="rightMenu-group rightMenu-line rightMenuPlugin"><div class="rightMenu-item" id="menu-copytext"><i class="anzhiyufont anzhiyu-icon-copy"></i><span>复制选中文本</span></div><div class="rightMenu-item" id="menu-pastetext"><i class="anzhiyufont anzhiyu-icon-paste"></i><span>粘贴文本</span></div><a class="rightMenu-item" id="menu-commenttext"><i class="anzhiyufont anzhiyu-icon-comment-medical"></i><span>引用到评论</span></a><div class="rightMenu-item" id="menu-newwindow"><i class="anzhiyufont anzhiyu-icon-window-restore"></i><span>新窗口打开</span></div><div class="rightMenu-item" id="menu-copylink"><i class="anzhiyufont anzhiyu-icon-link"></i><span>复制链接地址</span></div><div class="rightMenu-item" id="menu-copyimg"><i class="anzhiyufont anzhiyu-icon-images"></i><span>复制此图片</span></div><div class="rightMenu-item" id="menu-downloadimg"><i class="anzhiyufont anzhiyu-icon-download"></i><span>下载此图片</span></div><div class="rightMenu-item" id="menu-newwindowimg"><i class="anzhiyufont anzhiyu-icon-window-restore"></i><span>新窗口打开图片</span></div><div class="rightMenu-item" id="menu-search"><i class="anzhiyufont anzhiyu-icon-magnifying-glass"></i><span>站内搜索</span></div><div class="rightMenu-item" id="menu-searchBaidu"><i class="anzhiyufont anzhiyu-icon-magnifying-glass"></i><span>百度搜索</span></div><div class="rightMenu-item" id="menu-music-toggle"><i class="anzhiyufont anzhiyu-icon-play"></i><span>播放音乐</span></div><div class="rightMenu-item" id="menu-music-back"><i class="anzhiyufont anzhiyu-icon-backward"></i><span>切换到上一首</span></div><div class="rightMenu-item" id="menu-music-forward"><i class="anzhiyufont anzhiyu-icon-forward"></i><span>切换到下一首</span></div><div class="rightMenu-item" id="menu-music-playlist" onclick="window.open(&quot;https://y.qq.com/n/ryqq/playlist/8802438608&quot;, &quot;_blank&quot;);" style="display: none;"><i class="anzhiyufont anzhiyu-icon-radio"></i><span>查看所有歌曲</span></div><div class="rightMenu-item" id="menu-music-copyMusicName"><i class="anzhiyufont anzhiyu-icon-copy"></i><span>复制歌名</span></div></div><div class="rightMenu-group rightMenu-line rightMenuOther"><a class="rightMenu-item menu-link" id="menu-randomPost"><i class="anzhiyufont anzhiyu-icon-shuffle"></i><span>随便逛逛</span></a><a class="rightMenu-item menu-link" href="/categories/"><i class="anzhiyufont anzhiyu-icon-cube"></i><span>博客分类</span></a><a class="rightMenu-item menu-link" href="/tags/"><i class="anzhiyufont anzhiyu-icon-tags"></i><span>文章标签</span></a></div><div class="rightMenu-group rightMenu-line rightMenuOther"><a class="rightMenu-item" id="menu-copy" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-copy"></i><span>复制地址</span></a><a class="rightMenu-item" id="menu-commentBarrage" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-message"></i><span class="menu-commentBarrage-text">关闭热评</span></a><a class="rightMenu-item" id="menu-darkmode" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-circle-half-stroke"></i><span class="menu-darkmode-text">深色模式</span></a><a class="rightMenu-item" id="menu-translate" href="javascript:void(0);"><i class="anzhiyufont anzhiyu-icon-language"></i><span>轉為繁體</span></a></div></div><div id="rightmenu-mask"></div><div>
393<script src="/js/utils.js"></script>
393<script src="/js/main.js"></script>
393<script src="/js/tw_cn.js"></script>
393<script src="https://cdn.cbd.int/@fancyapps/[email protected]/dist/fancybox/fancybox.umd.js"></script>
393<script src="https://cdn.cbd.int/[email protected]/dist/lazyload.iife.min.js"></script>
393<script src="https://cdn.cbd.int/[email protected]/dist/snackbar.min.js"></script>
393<canvas id="universe"></canvas>
393<script async src="https://npm.elemecdn.com/[email protected]/dark/dark.js"></script>
393<script>// 消除控制台打印
394var HoldLog = console.log;
395console.log = function () {};
396let now1 = new Date();
397queueMicrotask(() => {
398  const Log = function () {
399    HoldLog.apply(console, arguments);
400  }; //在恢复前输出日志
401  const grt = new Date("Tue Oct 14 2025 00:00:00 GMT+0800 (香港标准时间)"); //此处修改你的建站时间或者网站上线时间
402  now1.setTime(now1.getTime() + 250);
403  const days = (now1 - grt) / 1000 / 60 / 60 / 24;
404  const dnum = Math.floor(days);
405  const ascll = [
406    `欢迎使用安知鱼!`,
407    `生活明朗, 万物可爱`,
408    `
409        
410       █████╗ ███╗   ██╗███████╗██╗  ██╗██╗██╗   ██╗██╗   ██╗
411      ██╔══██╗████╗  ██║╚══███╔╝██║  ██║██║╚██╗ ██╔╝██║   ██║
412      ███████║██╔██╗ ██║  ███╔╝ ███████║██║ ╚████╔╝ ██║   ██║
413      ██╔══██║██║╚██╗██║ ███╔╝  ██╔══██║██║  ╚██╔╝  ██║   ██║
414      ██║  ██║██║ ╚████║███████╗██║  ██║██║   ██║   ╚██████╔╝
415      ╚═╝  ╚═╝╚═╝  ╚═══╝╚══════╝╚═╝  ╚═╝╚═╝   ╚═╝    ╚═════╝
416        
417        `,
418    "已上线",
419    dnum,
420    "天",
421    "©2025 By 安知鱼 V1.6.14",
422  ];
423  const ascll2 = [`NCC2-036`, `调用前置摄像头拍照成功,识别为【小笨蛋】.`, `Photo captured: `, `🤪`];
424
425  setTimeout(
426    Log.bind(
427      console,
428      `\n%c${ascll[0]} %c ${ascll[1]} %c ${ascll[2]} %c${ascll[3]}%c ${ascll[4]}%c ${ascll[5]}\n\n%c ${ascll[6]}\n`,
429      "color:#425AEF",
430      "",
431      "color:#425AEF",
432      "color:#425AEF",
433      "",
434      "color:#425AEF",
435      ""
436    )
437  );
438  setTimeout(
439    Log.bind(
440      console,
441      `%c ${ascll2[0]} %c ${ascll2[1]} %c \n${ascll2[2]} %c\n${ascll2[3]}\n`,
442      "color:white; background-color:#4fd953",
443      "",
444      "",
445      'background:url("https://npm.elemecdn.com/[email protected]/img/post/common/tinggge.gif") no-repeat;font-size:450%'
446    )
447  );
448
449  setTimeout(Log.bind(console, "%c WELCOME %c 你好,小笨蛋.", "color:white; background-color:#4f90d9", ""));
450
451  setTimeout(
452    console.warn.bind(
453      console,
454      "%c ⚡ Powered by 安知鱼 %c 你正在访问 Tianxingleo 的博客.",
455      "color:white; background-color:#f0ad4e",
456      ""
457    )
458  );
459
460  setTimeout(Log.bind(console, "%c W23-12 %c 你已打开控制台.", "color:white; background-color:#4f90d9", ""));
461
462  setTimeout(
463    console.warn.bind(console, "%c S013-782 %c 你现在正处于监控中.", "color:white; background-color:#d9534f", "")
464  );
465});</script>
465<script async src="/anzhiyu/random.js"></script>
465<script src="https://cdn.cbd.int/[email protected]/dist/algoliasearch-lite.umd.js"></script>
465<script src="https://cdn.cbd.int/[email protected]/dist/instantsearch.production.min.js"></script>
465<script src="/js/search/algolia.js"></script>
465<div class="js-pjax">
465<script>(() => {
466  const $mermaid = document.querySelectorAll('#article-container .mermaid-wrap')
467  if ($mermaid.length === 0) return
468  const runMermaid = () => {
469    window.loadMermaid = true
470    const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'default'
471
472    Array.from($mermaid).forEach((item, index) => {
473      const mermaidSrc = item.firstElementChild
474      const mermaidThemeConfig = '%%{init:{ \'theme\':\'' + theme + '\'}}%%\n'
475      const mermaidID = 'mermaid-' + index
476      const mermaidDefinition = mermaidThemeConfig + mermaidSrc.textContent
477
478      const renderFn = mermaid.render(mermaidID, mermaidDefinition)
479
480      const renderV10 = () => {
481        renderFn.then(({svg}) => {
482          mermaidSrc.insertAdjacentHTML('afterend', svg)
483        })
484      }
485
486      const renderV9 = svg => {
487        mermaidSrc.insertAdjacentHTML('afterend', svg)
488      }
489
490      typeof renderFn === 'string' ? renderV9(renderFn) : renderV10()
491    })
492  }
493
494  const loadMermaid = () => {
495    window.loadMermaid ? runMermaid() : getScript('https://cdn.cbd.int/[email protected]/dist/mermaid.min.js').then(runMermaid)
496  }
497
498  anzhiyu.addGlobalFn('themeChange', runMermaid, 'mermaid')
499
500  window.pjax ? loadMermaid() : document.addEventListener('DOMContentLoaded', loadMermaid)
501})()</script>
501<input type="hidden" name="page-type" id="page-type" value="anzhiyu"></div>
501<script>var visitorMail = "";
502</script>
502<script async data-pjax src="https://cdn.cbd.int/[email protected]/waterfall/waterfall.js"></script>
502<script src="https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/qrcodejs/1.0.0/qrcode.min.js"></script>
502<link rel="stylesheet" href="https://cdn.cbd.int/[email protected]/icon/ali_iconfont_css.css">
502<script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
502<script charset="UTF-8" src="https://cdn.cbd.int/[email protected]/accesskey/accesskey.js"></script>
502</div><div id="popup-window"><div class="popup-window-title">通知</div><div class="popup-window-divider"></div><div class="popup-window-content"><div class="popup-tip">你好呀</div><div class="popup-link"><i class="anzhiyufont anzhiyu-icon-arrow-circle-right"></i></div></div></div>
502<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"9e25fd688ffb436a9ef3b57b2fc6077e","r":1,"spa":2}' crossorigin="anonymous"></script>
502
503</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.