[{"data":1,"prerenderedAt":1624},["ShallowReactive",2],{"post:\u002Fposts\u002F2026\u002Fwsl3":3,"posts:catalog":1355},{"id":4,"title":5,"aiSummary":6,"audio":7,"body":8,"categories":1335,"cover":1337,"description":1338,"extension":1339,"meta":1340,"navigation":6,"path":1341,"pin":1342,"publish":1343,"seo":1344,"series":7,"seriesOrder":7,"stem":1345,"summary":7,"summarySource":1346,"tags":1347,"theme":1351,"update":1343,"wip":1352,"wordCount":1353,"__hash__":1354},"posts\u002Fposts\u002F2026\u002Fwsl3.md","WSL 3 正式发布~",true,null,{"type":9,"value":10,"toc":1317},"minimark",[11,23,28,36,39,43,573,593,600,604,607,623,626,651,658,662,665,671,679,695,698,702,714,730,733,737,748,752,756,785,788,796,808,811,820,824,827,836,839,877,894,897,916,923,926,985,988,997,1007,1010,1023,1026,1155,1158,1223,1226,1235,1238,1241,1244,1313],[12,13,14,15,22],"p",{},"就在昨天凌晨 1 点多，微软发布了 ",[16,17,21],"a",{"href":18,"rel":19},"https:\u002F\u002Fblogs.windows.com\u002Fwindowsdeveloper\u002F2026\u002F09\u002F29\u002Fwsl-containers-now-generally-available\u002F",[20],"nofollow","WSL 3.0.1","，本次更新最大的亮点就是 WSL 容器的稳定版，无需 Docker 即可原生创建、运行 Linux 容器，除此之外还有文件系统访问速度翻倍（virtiofs）、网络方面的改进（consomme）等等。",[24,25,27],"h2",{"id":26},"wsl-简介","WSL 简介",[12,29,30,31,35],{},"先给没用过的同学简单介绍一下，",[32,33,34],"code",{},"WSL"," 全称 Windows Subsystem for Linux，即“适用于 Linux 的 Windows 子系统”。",[12,37,38],{},"装了这个就可以在 Windows 里运行多种 Linux 发行版（如 Ubuntu、Debian 等），得到 Linux 系统开发的爽感（众所周知，Windows 原生命令行工具、文件系统和 Linux、MacOS 不一致导致了很多问题，也没法直接安装 zsh 等终端）。",[40,41,42],"h3",{"id":42},"安装",[44,45,46,122,150],"code-group",{},[47,48,54],"pre",{"className":49,"code":50,"filename":51,"language":52,"meta":53,"style":53},"language-powershell shiki shiki-themes catppuccin-mocha catppuccin-latte","> wsl --install\n\n请求的操作需要提升。\n正在下载: 适用于 Linux 的 Windows 子系统 3.0.1\n[==========================81.8%================           ]\n","安装 WSL","powershell","",[32,55,56,75,81,87,103],{"__ignoreMap":53},[57,58,61,65,69,72],"span",{"class":59,"line":60},"line",1,[57,62,64],{"class":63},"siJSA",">",[57,66,68],{"class":67},"szT_X"," wsl ",[57,70,71],{"class":63},"--",[57,73,74],{"class":67},"install\n",[57,76,78],{"class":59,"line":77},2,[57,79,80],{"emptyLinePlaceholder":6},"\n",[57,82,84],{"class":59,"line":83},3,[57,85,86],{"class":67},"请求的操作需要提升。\n",[57,88,90,93,97,100],{"class":59,"line":89},4,[57,91,92],{"class":67},"正在下载: 适用于 Linux 的 Windows 子系统 ",[57,94,96],{"class":95},"s_wmW","3.0",[57,98,99],{"class":67},".",[57,101,102],{"class":95},"1\n",[57,104,106,110,113,116,119],{"class":59,"line":105},5,[57,107,109],{"class":108},"sxk1D","[",[57,111,112],{"class":63},"==========================",[57,114,115],{"class":95},"81.8",[57,117,118],{"class":63},"%================",[57,120,121],{"class":108},"           ]\n",[47,123,126],{"className":49,"code":124,"filename":125,"language":52,"meta":53,"style":53},"> wsl --install --no-distribution\n","安装 WSL（不装发行版）",[32,127,128],{"__ignoreMap":53},[57,129,130,132,134,136,139,141,144,147],{"class":59,"line":60},[57,131,64],{"class":63},[57,133,68],{"class":67},[57,135,71],{"class":63},[57,137,138],{"class":67},"install ",[57,140,71],{"class":63},[57,142,143],{"class":67},"no",[57,145,146],{"class":63},"-",[57,148,149],{"class":67},"distribution\n",[47,151,154],{"className":49,"code":152,"filename":153,"language":52,"meta":53,"style":53},"> wsl --list --online\n\n以下是可安装的有效分发的列表。\n使用“wsl.exe --install \u003CDistro>”安装。\n\nNAME                            FRIENDLY NAME\nUbuntu                          Ubuntu\nUbuntu-26.04                    Ubuntu 26.04 LTS\nUbuntu-24.04                    Ubuntu 24.04 LTS\nUbuntu-22.04                    Ubuntu 22.04 LTS\nopenSUSE-Tumbleweed             openSUSE Tumbleweed\nopenSUSE-Leap-16.0              openSUSE Leap 16.0\nSUSE-Linux-Enterprise-15-SP7    SUSE Linux Enterprise 15 SP7\nSUSE-Linux-Enterprise-16.0      SUSE Linux Enterprise 16.0\nkali-linux                      Kali Linux Rolling\nDebian                          Debian GNU\u002FLinux\nAlmaLinux-8                     AlmaLinux OS 8\nAlmaLinux-9                     AlmaLinux OS 9\nAlmaLinux-Kitten-10             AlmaLinux OS Kitten 10\nAlmaLinux-10                    AlmaLinux OS 10\narchlinux                       Arch Linux\nFedoraLinux-44                  Fedora Linux 44\nFedoraLinux-43                  Fedora Linux 43\neLxr                            eLxr 12.12.0.0 GNU\u002FLinux\nOracleLinux_7_9                 Oracle Linux 7.9\nOracleLinux_8_10                Oracle Linux 8.10\nOracleLinux_9_5                 Oracle Linux 9.5\nSUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6\n\n> wsl --install Ubuntu-26.04 # 安装\n","查看和安装发行版",[32,155,156,172,176,181,193,197,203,209,228,244,260,271,292,323,345,356,368,385,400,421,435,441,458,473,494,503,512,521,548,553],{"__ignoreMap":53},[57,157,158,160,162,164,167,169],{"class":59,"line":60},[57,159,64],{"class":63},[57,161,68],{"class":67},[57,163,71],{"class":63},[57,165,166],{"class":67},"list ",[57,168,71],{"class":63},[57,170,171],{"class":67},"online\n",[57,173,174],{"class":59,"line":77},[57,175,80],{"emptyLinePlaceholder":6},[57,177,178],{"class":59,"line":83},[57,179,180],{"class":67},"以下是可安装的有效分发的列表。\n",[57,182,183,186,190],{"class":59,"line":89},[57,184,185],{"class":67},"使用",[57,187,189],{"class":188},"ssZzq","“wsl.exe --install \u003CDistro>”",[57,191,192],{"class":67},"安装。\n",[57,194,195],{"class":59,"line":105},[57,196,80],{"emptyLinePlaceholder":6},[57,198,200],{"class":59,"line":199},6,[57,201,202],{"class":67},"NAME                            FRIENDLY NAME\n",[57,204,206],{"class":59,"line":205},7,[57,207,208],{"class":67},"Ubuntu                          Ubuntu\n",[57,210,212,215,217,220,223,225],{"class":59,"line":211},8,[57,213,214],{"class":67},"Ubuntu",[57,216,146],{"class":63},[57,218,219],{"class":95},"26.04",[57,221,222],{"class":67},"                    Ubuntu ",[57,224,219],{"class":95},[57,226,227],{"class":67}," LTS\n",[57,229,231,233,235,238,240,242],{"class":59,"line":230},9,[57,232,214],{"class":67},[57,234,146],{"class":63},[57,236,237],{"class":95},"24.04",[57,239,222],{"class":67},[57,241,237],{"class":95},[57,243,227],{"class":67},[57,245,247,249,251,254,256,258],{"class":59,"line":246},10,[57,248,214],{"class":67},[57,250,146],{"class":63},[57,252,253],{"class":95},"22.04",[57,255,222],{"class":67},[57,257,253],{"class":95},[57,259,227],{"class":67},[57,261,263,266,268],{"class":59,"line":262},11,[57,264,265],{"class":67},"openSUSE",[57,267,146],{"class":63},[57,269,270],{"class":67},"Tumbleweed             openSUSE Tumbleweed\n",[57,272,274,276,278,281,283,286,289],{"class":59,"line":273},12,[57,275,265],{"class":67},[57,277,146],{"class":63},[57,279,280],{"class":67},"Leap",[57,282,146],{"class":63},[57,284,285],{"class":95},"16.0",[57,287,288],{"class":67},"              openSUSE Leap ",[57,290,291],{"class":95},"16.0\n",[57,293,295,298,300,303,305,308,310,313,315,318,320],{"class":59,"line":294},13,[57,296,297],{"class":67},"SUSE",[57,299,146],{"class":63},[57,301,302],{"class":67},"Linux",[57,304,146],{"class":63},[57,306,307],{"class":67},"Enterprise",[57,309,146],{"class":63},[57,311,312],{"class":95},"15",[57,314,146],{"class":63},[57,316,317],{"class":67},"SP7    SUSE Linux Enterprise ",[57,319,312],{"class":95},[57,321,322],{"class":67}," SP7\n",[57,324,326,328,330,332,334,336,338,340,343],{"class":59,"line":325},14,[57,327,297],{"class":67},[57,329,146],{"class":63},[57,331,302],{"class":67},[57,333,146],{"class":63},[57,335,307],{"class":67},[57,337,146],{"class":63},[57,339,285],{"class":95},[57,341,342],{"class":67},"      SUSE Linux Enterprise ",[57,344,291],{"class":95},[57,346,348,351,353],{"class":59,"line":347},15,[57,349,350],{"class":67},"kali",[57,352,146],{"class":63},[57,354,355],{"class":67},"linux                      Kali Linux Rolling\n",[57,357,359,362,365],{"class":59,"line":358},16,[57,360,361],{"class":67},"Debian                          Debian GNU",[57,363,364],{"class":63},"\u002F",[57,366,367],{"class":67},"Linux\n",[57,369,371,374,376,379,382],{"class":59,"line":370},17,[57,372,373],{"class":67},"AlmaLinux",[57,375,146],{"class":63},[57,377,378],{"class":95},"8",[57,380,381],{"class":67},"                     AlmaLinux OS ",[57,383,384],{"class":95},"8\n",[57,386,388,390,392,395,397],{"class":59,"line":387},18,[57,389,373],{"class":67},[57,391,146],{"class":63},[57,393,394],{"class":95},"9",[57,396,381],{"class":67},[57,398,399],{"class":95},"9\n",[57,401,403,405,407,410,412,415,418],{"class":59,"line":402},19,[57,404,373],{"class":67},[57,406,146],{"class":63},[57,408,409],{"class":67},"Kitten",[57,411,146],{"class":63},[57,413,414],{"class":95},"10",[57,416,417],{"class":67},"             AlmaLinux OS Kitten ",[57,419,420],{"class":95},"10\n",[57,422,424,426,428,430,433],{"class":59,"line":423},20,[57,425,373],{"class":67},[57,427,146],{"class":63},[57,429,414],{"class":95},[57,431,432],{"class":67},"                    AlmaLinux OS ",[57,434,420],{"class":95},[57,436,438],{"class":59,"line":437},21,[57,439,440],{"class":67},"archlinux                       Arch Linux\n",[57,442,444,447,449,452,455],{"class":59,"line":443},22,[57,445,446],{"class":67},"FedoraLinux",[57,448,146],{"class":63},[57,450,451],{"class":95},"44",[57,453,454],{"class":67},"                  Fedora Linux ",[57,456,457],{"class":95},"44\n",[57,459,461,463,465,468,470],{"class":59,"line":460},23,[57,462,446],{"class":67},[57,464,146],{"class":63},[57,466,467],{"class":95},"43",[57,469,454],{"class":67},[57,471,472],{"class":95},"43\n",[57,474,476,479,482,484,487,490,492],{"class":59,"line":475},24,[57,477,478],{"class":67},"eLxr                            eLxr ",[57,480,481],{"class":95},"12.12",[57,483,99],{"class":67},[57,485,486],{"class":95},"0.0",[57,488,489],{"class":67}," GNU",[57,491,364],{"class":63},[57,493,367],{"class":67},[57,495,497,500],{"class":59,"line":496},25,[57,498,499],{"class":67},"OracleLinux_7_9                 Oracle Linux ",[57,501,502],{"class":95},"7.9\n",[57,504,506,509],{"class":59,"line":505},26,[57,507,508],{"class":67},"OracleLinux_8_10                Oracle Linux ",[57,510,511],{"class":95},"8.10\n",[57,513,515,518],{"class":59,"line":514},27,[57,516,517],{"class":67},"OracleLinux_9_5                 Oracle Linux ",[57,519,520],{"class":95},"9.5\n",[57,522,524,526,528,530,532,534,536,538,540,543,545],{"class":59,"line":523},28,[57,525,297],{"class":67},[57,527,146],{"class":63},[57,529,302],{"class":67},[57,531,146],{"class":63},[57,533,307],{"class":67},[57,535,146],{"class":63},[57,537,312],{"class":95},[57,539,146],{"class":63},[57,541,542],{"class":67},"SP6    SUSE Linux Enterprise ",[57,544,312],{"class":95},[57,546,547],{"class":67}," SP6\n",[57,549,551],{"class":59,"line":550},29,[57,552,80],{"emptyLinePlaceholder":6},[57,554,556,558,560,562,565,567,569],{"class":59,"line":555},30,[57,557,64],{"class":63},[57,559,68],{"class":67},[57,561,71],{"class":63},[57,563,564],{"class":67},"install Ubuntu",[57,566,146],{"class":63},[57,568,219],{"class":95},[57,570,572],{"class":571},"s0D_2"," # 安装\n",[12,574,575,576,579,580,583,584,587,588],{},"未安装 WSL 时，使用 ",[32,577,578],{},"wsl --install"," 会安装 WSL 和默认的 Ubuntu。只准备体验 ",[32,581,582],{},"wslc","，可以用第二条，跳过普通发行版的安装。以后需要 Ubuntu，再执行 ",[32,585,586],{},"wsl --install -d Ubuntu"," 即可。",[16,589,592],{"href":590,"rel":591},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fwindows\u002Fwsl\u002Fbasic-commands",[20],"安装参数",[12,594,595,596,599],{},"需要重启 WSL 环境时，可以执行 ",[32,597,598],{},"wsl --shutdown","。",[40,601,603],{"id":602},"从-wsl-2-升级","从 WSL 2 升级",[12,605,606],{},"直接更新：",[47,608,611],{"className":49,"code":609,"filename":610,"language":52,"meta":53,"style":53},"wsl --update\n","更新 WSL",[32,612,613],{"__ignoreMap":53},[57,614,615,618,620],{"class":59,"line":60},[57,616,617],{"class":67},"wsl ",[57,619,71],{"class":63},[57,621,622],{"class":67},"update\n",[12,624,625],{},"商店下载卡住时，可以改用 GitHub 下载通道：",[47,627,630],{"className":49,"code":628,"filename":629,"language":52,"meta":53,"style":53},"wsl --update --web-download\n","不经过 Microsoft Store 更新",[32,631,632],{"__ignoreMap":53},[57,633,634,636,638,641,643,646,648],{"class":59,"line":60},[57,635,617],{"class":67},[57,637,71],{"class":63},[57,639,640],{"class":67},"update ",[57,642,71],{"class":63},[57,644,645],{"class":67},"web",[57,647,146],{"class":63},[57,649,650],{"class":67},"download\n",[12,652,653,654],{},"了解更多可参考：",[16,655,657],{"href":590,"rel":656},[20],"更新说明",[24,659,661],{"id":660},"wsl-3-改进内容","WSL 3 改进内容",[40,663,664],{"id":664},"跨操作系统文件访问性能",[666,667,668],"blockquote",{},[12,669,670],{},"从 Linux 环境访问 Windows 文件，性能最高可达原来的 2 倍。",[12,672,673,674,678],{},"WSL 底层使用 ",[675,676,677],"strong",{},"virtiofs","， 其为 Linux 内核的一个文件系统驱动，专门用于虚拟机和宿主机之间的文件共享。它比 WSL 2 之前使用的 Plan9 协议更高效，尤其在大量小文件的读写上有明显优势，这下终于不用在 Windows 和 WSL 存两处项目了。",[680,681,685],"alert",{"theme":682,"title":683,"type":684},"github","普通发行版 WSL 发行版并没有默认开启 virtiofs","important",[12,686,687,688,691,692,599],{},"WSLC 使用 virtiofs，但普通 WSL 发行版里还是实验性设置，想体验则需要在 ",[32,689,690],{},".wslconfig"," 设置为 ",[32,693,694],{},"true",[12,696,697],{},"但就算最高性能可以翻 2 倍，该卡还是会卡的，项目文件只需要在 Linux 中使用的话，还是放在 WSL 文件系统里更好。",[40,699,701],{"id":700},"网络-consomme","网络 Consomme",[12,703,704,705,708,709,599],{},"WSL 容器使用 ",[675,706,707],{},"Consommé"," 网络模式，它把 Linux 虚拟机的网络流量交给 Windows 侧的用户进程处理，包括 DNS、TCP \u002F UDP 和端口映射。出站流量以会话所属用户的身份进入 Windows 网络栈，因此能更好地配合 VPN 和防火墙。详情见",[16,710,713],{"href":711,"rel":712},"https:\u002F\u002Fdevblogs.microsoft.com\u002Fcommandline\u002Fwslc-architecture-deep-dive\u002F",[20],"网络实现",[12,715,716,717,721,722,725,726,729],{},"拿 ",[16,718,720],{"href":719},"#%E5%90%AF%E5%8A%A8%E4%B8%80%E4%B8%AA-nginx","Nginx"," 例子来说，最直接的用法就是 ",[32,723,724],{},"-p 8080:80","，然后从 Windows 访问 ",[32,727,728],{},"localhost:8080","，不用自己查容器 IP 再手工转发，也不用担心代理断开后容器就没网了。",[731,732],"hr",{},[24,734,736],{"id":735},"使用-wsl-container","使用 WSL container",[680,738,741],{"theme":682,"title":739,"type":740},"wslc 需要 2.9.3 或以上版本","note",[12,742,743,744,747],{},"使用 ",[32,745,746],{},"wsl --version"," 查看版本",[24,749,751],{"id":750},"run","Run",[40,753,755],{"id":754},"运行-ubuntu-容器","运行 Ubuntu 容器",[47,757,760],{"className":49,"code":758,"filename":759,"language":52,"meta":53,"style":53},"wslc run --rm -it ubuntu:latest bash -c \"echo Hello world from WSL container!\"\n","运行一次性容器",[32,761,762],{"__ignoreMap":53},[57,763,764,767,769,772,774,777,779,782],{"class":59,"line":60},[57,765,766],{"class":67},"wslc run ",[57,768,71],{"class":63},[57,770,771],{"class":67},"rm ",[57,773,146],{"class":63},[57,775,776],{"class":67},"it ubuntu:latest bash ",[57,778,146],{"class":63},[57,780,781],{"class":67},"c ",[57,783,784],{"class":188},"\"echo Hello world from WSL container!\"\n",[12,786,787],{},"正常运行后，会输出：",[47,789,794],{"className":790,"code":792,"language":793,"meta":53},[791],"language-text","Hello world from WSL container!\n","text",[32,795,792],{"__ignoreMap":53},[12,797,798,799,802,803],{},"本地没有镜像时会先下载，命令执行完之后，加的 ",[32,800,801],{},"--rm"," 会在退出后自动删除容器（下载的镜像不会删）。",[16,804,807],{"href":805,"rel":806},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fwindows\u002Fwsl\u002Ftutorials\u002Fwsl-containers",[20],"运行示例",[12,809,810],{},"查看本地镜像：",[47,812,814],{"className":49,"code":813,"language":52,"meta":53,"style":53},"wslc image ls\n",[32,815,816],{"__ignoreMap":53},[57,817,818],{"class":59,"line":60},[57,819,813],{"class":67},[40,821,823],{"id":822},"运行-nginx","运行 Nginx",[12,825,826],{},"先拉取镜像：",[47,828,830],{"className":49,"code":829,"language":52,"meta":53,"style":53},"wslc pull nginx\n",[32,831,832],{"__ignoreMap":53},[57,833,834],{"class":59,"line":60},[57,835,829],{"class":67},[12,837,838],{},"再执行：",[47,840,842],{"className":49,"code":841,"language":52,"meta":53,"style":53},"wslc run -d --rm -p 8080:80 --name web nginx\n",[32,843,844],{"__ignoreMap":53},[57,845,846,848,850,853,855,857,859,862,865,868,871,874],{"class":59,"line":60},[57,847,766],{"class":67},[57,849,146],{"class":63},[57,851,852],{"class":67},"d ",[57,854,71],{"class":63},[57,856,771],{"class":67},[57,858,146],{"class":63},[57,860,861],{"class":67},"p ",[57,863,864],{"class":95},"8080",[57,866,867],{"class":67},":",[57,869,870],{"class":95},"80",[57,872,873],{"class":63}," --",[57,875,876],{"class":67},"name web nginx\n",[12,878,879,882,883,885,886,889,890],{},[32,880,881],{},"-d"," 表示后台运行，",[32,884,724],{}," 把 Windows 的 8080 端口映射到容器的 80 端口，",[32,887,888],{},"--name web"," 给容器起一个方便操作的名字。",[16,891,893],{"href":805,"rel":892},[20],"端口映射示例",[12,895,896],{},"请求一下页面试试：",[47,898,900],{"className":49,"code":899,"language":52,"meta":53,"style":53},"curl http:\u002F\u002Flocalhost:8080\n",[32,901,902],{"__ignoreMap":53},[57,903,904,907,910,913],{"class":59,"line":60},[57,905,906],{"class":67},"curl http:",[57,908,909],{"class":63},"\u002F\u002F",[57,911,912],{"class":67},"localhost:",[57,914,915],{"class":95},"8080\n",[12,917,918,919,922],{},"也可以在浏览器里打开 ",[32,920,921],{},"http:\u002F\u002Flocalhost:8080","，可以看到 Nginx 欢迎页。",[12,924,925],{},"也可以看看容器、日志和里面的系统信息：",[47,927,930],{"className":49,"code":928,"filename":929,"language":52,"meta":53,"style":53},"# 查看运行中的容器\nwslc container ps\n\n# 查看 Nginx 日志\nwslc logs web\n\n# 在容器里执行命令\nwslc exec web cat \u002Fetc\u002Fos-release\n","查看运行状态",[32,931,932,937,942,946,951,956,960,965],{"__ignoreMap":53},[57,933,934],{"class":59,"line":60},[57,935,936],{"class":571},"# 查看运行中的容器\n",[57,938,939],{"class":59,"line":77},[57,940,941],{"class":67},"wslc container ps\n",[57,943,944],{"class":59,"line":83},[57,945,80],{"emptyLinePlaceholder":6},[57,947,948],{"class":59,"line":89},[57,949,950],{"class":571},"# 查看 Nginx 日志\n",[57,952,953],{"class":59,"line":105},[57,954,955],{"class":67},"wslc logs web\n",[57,957,958],{"class":59,"line":199},[57,959,80],{"emptyLinePlaceholder":6},[57,961,962],{"class":59,"line":205},[57,963,964],{"class":571},"# 在容器里执行命令\n",[57,966,967,970,972,975,977,980,982],{"class":59,"line":211},[57,968,969],{"class":67},"wslc exec web cat ",[57,971,364],{"class":63},[57,973,974],{"class":67},"etc",[57,976,364],{"class":63},[57,978,979],{"class":67},"os",[57,981,146],{"class":63},[57,983,984],{"class":67},"release\n",[12,986,987],{},"最后用完了停止它：",[47,989,991],{"className":49,"code":990,"language":52,"meta":53,"style":53},"wslc container stop web\n",[32,992,993],{"__ignoreMap":53},[57,994,995],{"class":59,"line":60},[57,996,990],{"class":67},[12,998,999,1000,1002,1003],{},"前面用了 ",[32,1001,801],{},"，所以停止后，这个容器也会被删除。要保留应用数据，就不要只往容器自身的可写层里存，应该另外配置卷或目录挂载。",[16,1004,1006],{"href":711,"rel":1005},[20],"存储说明",[40,1008,1009],{"id":1009},"自己构建一个镜像",[12,1011,1012,1014,1015,1018,1019],{},[32,1013,582],{}," 也提供了 ",[32,1016,1017],{},"build","，不只是运行现成镜像。官方教程给出了从构建到启动的完整流程。",[16,1020,1022],{"href":805,"rel":1021},[20],"构建教程",[12,1024,1025],{},"下面做个更简单的静态页面。在一个空目录中创建这两个文件：",[44,1027,1028,1131],{},[47,1029,1034],{"className":1030,"code":1031,"filename":1032,"language":1033,"meta":53,"style":53},"language-html shiki shiki-themes catppuccin-mocha catppuccin-latte","\u003C!doctype html>\n\u003Chtml lang=\"zh-CN\">\n  \u003Cmeta charset=\"utf-8\">\n  \u003Ctitle>Hello WSLC\u003C\u002Ftitle>\n  \u003Ch1>Hello from WSLC!\u003C\u002Fh1>\n\u003C\u002Fhtml>\n","index.html","html",[32,1035,1036,1049,1068,1086,1105,1123],{"__ignoreMap":53},[57,1037,1038,1042,1046],{"class":59,"line":60},[57,1039,1041],{"class":1040},"sDkzg","\u003C!doctype",[57,1043,1045],{"class":1044},"sIs8M"," html",[57,1047,1048],{"class":1040},">\n",[57,1050,1051,1054,1057,1060,1063,1066],{"class":59,"line":77},[57,1052,1053],{"class":63},"\u003C",[57,1055,1033],{"class":1056},"sZBvu",[57,1058,1059],{"class":1044}," lang",[57,1061,1062],{"class":63},"=",[57,1064,1065],{"class":188},"\"zh-CN\"",[57,1067,1048],{"class":63},[57,1069,1070,1073,1076,1079,1081,1084],{"class":59,"line":83},[57,1071,1072],{"class":63},"  \u003C",[57,1074,1075],{"class":1056},"meta",[57,1077,1078],{"class":1044}," charset",[57,1080,1062],{"class":63},[57,1082,1083],{"class":188},"\"utf-8\"",[57,1085,1048],{"class":63},[57,1087,1088,1090,1093,1095,1098,1101,1103],{"class":59,"line":89},[57,1089,1072],{"class":63},[57,1091,1092],{"class":1056},"title",[57,1094,64],{"class":63},[57,1096,1097],{"class":67},"Hello WSLC",[57,1099,1100],{"class":63},"\u003C\u002F",[57,1102,1092],{"class":1056},[57,1104,1048],{"class":63},[57,1106,1107,1109,1112,1114,1117,1119,1121],{"class":59,"line":105},[57,1108,1072],{"class":63},[57,1110,1111],{"class":1056},"h1",[57,1113,64],{"class":63},[57,1115,1116],{"class":67},"Hello from WSLC!",[57,1118,1100],{"class":63},[57,1120,1111],{"class":1056},[57,1122,1048],{"class":63},[57,1124,1125,1127,1129],{"class":59,"line":199},[57,1126,1100],{"class":63},[57,1128,1033],{"class":1056},[57,1130,1048],{"class":63},[47,1132,1137],{"className":1133,"code":1134,"filename":1135,"language":1136,"meta":53,"style":53},"language-dockerfile shiki shiki-themes catppuccin-mocha catppuccin-latte","FROM nginx:alpine\nCOPY index.html \u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\u002Findex.html\n","Dockerfile","dockerfile",[32,1138,1139,1147],{"__ignoreMap":53},[57,1140,1141,1144],{"class":59,"line":60},[57,1142,1143],{"class":1040},"FROM",[57,1145,1146],{"class":67}," nginx:alpine\n",[57,1148,1149,1152],{"class":59,"line":77},[57,1150,1151],{"class":1040},"COPY",[57,1153,1154],{"class":67}," index.html \u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\u002Findex.html\n",[12,1156,1157],{},"在这两个文件所在的目录打开 PowerShell：",[47,1159,1162],{"className":49,"code":1160,"filename":1161,"language":52,"meta":53,"style":53},"wslc build -t wslc-demo .\nwslc run -d --rm -p 8081:80 --name demo wslc-demo\ncurl http:\u002F\u002Flocalhost:8081\n","构建并运行",[32,1163,1164,1179,1212],{"__ignoreMap":53},[57,1165,1166,1169,1171,1174,1176],{"class":59,"line":60},[57,1167,1168],{"class":67},"wslc build ",[57,1170,146],{"class":63},[57,1172,1173],{"class":67},"t wslc",[57,1175,146],{"class":63},[57,1177,1178],{"class":67},"demo .\n",[57,1180,1181,1183,1185,1187,1189,1191,1193,1195,1198,1200,1202,1204,1207,1209],{"class":59,"line":77},[57,1182,766],{"class":67},[57,1184,146],{"class":63},[57,1186,852],{"class":67},[57,1188,71],{"class":63},[57,1190,771],{"class":67},[57,1192,146],{"class":63},[57,1194,861],{"class":67},[57,1196,1197],{"class":95},"8081",[57,1199,867],{"class":67},[57,1201,870],{"class":95},[57,1203,873],{"class":63},[57,1205,1206],{"class":67},"name demo wslc",[57,1208,146],{"class":63},[57,1210,1211],{"class":67},"demo\n",[57,1213,1214,1216,1218,1220],{"class":59,"line":83},[57,1215,906],{"class":67},[57,1217,909],{"class":63},[57,1219,912],{"class":67},[57,1221,1222],{"class":95},"8081\n",[12,1224,1225],{},"用完同样停止：",[47,1227,1229],{"className":49,"code":1228,"language":52,"meta":53,"style":53},"wslc container stop demo\n",[32,1230,1231],{"__ignoreMap":53},[57,1232,1233],{"class":59,"line":60},[57,1234,1228],{"class":67},[24,1236,1237],{"id":1237},"总结",[12,1239,1240],{},"到这里就结束了，赶快上手试试吧~",[24,1242,1243],{"id":1243},"参考资料",[1245,1246,1247,1255,1261,1268,1274,1280,1286,1293,1299,1306],"ul",{},[1248,1249,1250],"li",{},[16,1251,1254],{"href":1252,"rel":1253},"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FWSL\u002Freleases\u002Ftag\u002F3.0.1",[20],"Github Release",[1248,1256,1257],{},[16,1258,1260],{"href":18,"rel":1259},[20],"WSL Containers 官方公告",[1248,1262,1263],{},[16,1264,1267],{"href":1265,"rel":1266},"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FWSL\u002Freleases\u002Ftag\u002F2.9.3",[20],"2.9.3 预发布记录",[1248,1269,1270],{},[16,1271,51],{"href":1272,"rel":1273},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fwindows\u002Fwsl\u002Finstall",[20],[1248,1275,1276],{},[16,1277,1279],{"href":590,"rel":1278},[20],"WSL 常用命令",[1248,1281,1282],{},[16,1283,1285],{"href":805,"rel":1284},[20],"WSL 容器上手教程",[1248,1287,1288],{},[16,1289,1292],{"href":1290,"rel":1291},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fwindows\u002Fwsl\u002Fwsl-container?tabs=csharp",[20],"CLI 与 API 概览",[1248,1294,1295],{},[16,1296,1298],{"href":711,"rel":1297},[20],"WSLC 架构详解",[1248,1300,1301],{},[16,1302,1305],{"href":1303,"rel":1304},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fwindows\u002Fwsl\u002Fwsl-config",[20],"WSL 配置说明",[1248,1307,1308],{},[16,1309,1312],{"href":1310,"rel":1311},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fwindows\u002Fwsl\u002Fcompare-versions",[20],"WSL 架构与版本",[1314,1315,1316],"style",{},"html pre.shiki code .sDkzg, html code.shiki .sDkzg{--shiki-default:#CBA6F7;--shiki-light:#8839EF}html pre.shiki code .sIs8M, html code.shiki .sIs8M{--shiki-default:#F9E2AF;--shiki-light:#DF8E1D}html pre.shiki code .siJSA, html code.shiki .siJSA{--shiki-default:#94E2D5;--shiki-light:#179299}html pre.shiki code .sZBvu, html code.shiki .sZBvu{--shiki-default:#89B4FA;--shiki-light:#1E66F5}html pre.shiki code .ssZzq, html code.shiki .ssZzq{--shiki-default:#A6E3A1;--shiki-light:#40A02B}html pre.shiki code .szT_X, html code.shiki .szT_X{--shiki-default:#CDD6F4;--shiki-light:#4C4F69}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html pre.shiki code .s_wmW, html code.shiki .s_wmW{--shiki-default:#FAB387;--shiki-light:#FE640B}html pre.shiki code .sxk1D, html code.shiki .sxk1D{--shiki-default:#9399B2;--shiki-light:#7C7F93}html pre.shiki code .s0D_2, html code.shiki .s0D_2{--shiki-default:#9399B2;--shiki-default-font-style:italic;--shiki-light:#7C7F93;--shiki-light-font-style:italic}",{"title":53,"searchDepth":273,"depth":105,"links":1318},[1319,1323,1327,1328,1333,1334],{"id":26,"depth":77,"text":27,"children":1320},[1321,1322],{"id":42,"depth":83,"text":42},{"id":602,"depth":83,"text":603},{"id":660,"depth":77,"text":661,"children":1324},[1325,1326],{"id":664,"depth":83,"text":664},{"id":700,"depth":83,"text":701},{"id":735,"depth":77,"text":736},{"id":750,"depth":77,"text":751,"children":1329},[1330,1331,1332],{"id":754,"depth":83,"text":755},{"id":822,"depth":83,"text":823},{"id":1009,"depth":83,"text":1009},{"id":1237,"depth":77,"text":1237},{"id":1243,"depth":77,"text":1243},[1336],"工具","\u002Fimages\u002F2026\u002Fwsl3\u002Fwsl3.png","微软发布 WSL 3.0.1，正式提供稳定的 WSL 容器功能，无需 Docker 即可原生创建和运行 Linux 容器。该版本改进包括跨操作系统文件访问性能最高提升至原来的两倍（采用 virtiofs），以及网络模式 Consomme 优化端口映射和 VPN 兼容性。文章介绍了 WSL 安装、从 WSL 2 升级的方法，并示例使用 wslc 运行 Ubuntu、Nginx 容器及构建自定义镜像。","md",{},"\u002Fposts\u002F2026\u002Fwsl3",0,"2026-10-01",{"title":5,"description":1338},"posts\u002F2026\u002Fwsl3","ai",[34,302,1348,1349,1350],"Windows","Docker","容器","#a369ff",false,1038,"a0QHhUDwBKOlgtke9g75lfR9YB18gu1rq2vlqU8xC-c",[1356,1359,1373,1381,1394,1409,1422,1434,1444,1457,1469,1480,1492,1503,1516,1527,1536,1550,1562,1574,1587,1596,1606,1615],{"path":1341,"stem":1345,"title":5,"description":1338,"wordCount":1353,"publish":1343,"update":1343,"cover":1337,"tags":1357,"categories":1358,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},[34,302,1348,1349,1350],[1336],{"path":1360,"stem":1361,"title":1362,"description":1363,"wordCount":1364,"publish":1365,"update":7,"cover":1366,"tags":1367,"categories":1372,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2026\u002Fcodex-prompt","posts\u002F2026\u002Fcodex-prompt","Codex 的 GPT-6 Sol 提示词泄露了？","文章围绕网传Codex GPT-6 Sol提示词泄露展开，选取部分内容解读。提示词要求像同事一样交流、降低认知负担，用具体描述并说明改动、原因、测试与风险；明确禁止使用AI套话；通过高质量和低质量示例约束输出。摘要表还涵盖沟通、执行、权限、长期任务、工具与界面、质量与证据等核心要求。",1073,"2026-09-25","\u002Fimages\u002F2026\u002Fcodex-prompt\u002Fcodex-prompt.png",[1368,1369,1370,1371],"AI","Codex","提示词","Agent",[1368],{"path":1374,"stem":1375,"title":1376,"description":1377,"wordCount":1378,"publish":1365,"update":7,"cover":7,"tags":1379,"categories":1380,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2026\u002Fcodex-prompt-translation","posts\u002F2026\u002Fcodex-prompt-translation","Codex GPT-6 Sol 提示词完整中文译文","第三方仓库收录的 Codex GPT-6 Sol 提示词中文译文，按原顺序保留全部 54 个模板。",34261,[1368,1369,1370,1371],[1368],{"path":1382,"stem":1383,"title":1384,"description":1385,"wordCount":1386,"publish":1387,"update":1388,"cover":1389,"tags":1390,"categories":1393,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2026\u002Fjev","posts\u002F2026\u002Fjev","JEV 是好模型吗？","本文评析JEV模型，认为其并非通用大模型，而是专做预定义判断的System One模型，通过选择、评分、是非题返回结构化结果，不生成文本。其快与便宜源于非自回归并行输出，但“零幻觉”仅指输出结构合规，判断仍可能出错。该思路适用于答案范围明确、需频繁调用的场景，也可用普通大模型近似实现，核心在于把任务收窄为单一判断。",2429,"2026-09-21","2026-09-23","\u002Fimages\u002F2026\u002Fjev\u002Fjev.webp",[1368,1391,1392],"JEV","LLM",[1368],{"path":1395,"stem":1396,"title":1397,"description":1398,"wordCount":1399,"publish":1400,"update":1401,"cover":7,"tags":1402,"categories":1407,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002Fblog\u002Foverview","posts\u002F2.blog\u002F01.overview","新版博客已上线！","新版博客“mukuchi”上线，具备文章写作、标签分类、全文搜索、阅读目录、代码复制、图片缩放、深浅主题切换及移动端适配等功能。内容以Markdown和MDC编写，后台支持草稿、上传、预览与发布，并可生成AI摘要、朗读和双人播客。技术栈采用Nuxt、Vue、UnoCSS、Nuxt Content及Cloudflare服务，文章存于GitHub仓库。后续计划增加工具、重做账号系统并改为站内评论。",1059,"2026-09-14","2026-09-22",[1403,1404,1405,1406],"博客","Nuxt","Vue","Cloudflare",[1408],"建站记录",{"path":1410,"stem":1411,"title":1412,"description":1413,"wordCount":1414,"publish":1415,"update":7,"cover":7,"tags":1416,"categories":1420,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2026\u002Fgame-dlss5","posts\u002F2026\u002Fgame-dlss5","哦，我的上帝！这是真实的！ —— DLSS 5 渲染实测","文章以《崩坏3rd》和《崩坏：星穹铁道》为例，展示DLSS 5渲染在多个场景下开启与关闭的画面对比。教程说明通过XXMI-Launcher注入ReShade的d3d12.dll，启动游戏后按Home键配置RenoDX DLSS参数，并提示下线前需手动关闭。文末附相关工具与网盘资源下载方式。",390,"2026-09-08",[1417,1418,1419],"DLSS5","mod","xxmi",[1421],"游戏",{"path":1423,"stem":1424,"title":1425,"description":1426,"wordCount":1427,"publish":1428,"update":1429,"cover":7,"tags":1430,"categories":1433,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2026\u002Fmilanote-api","posts\u002F2026\u002Fmilanote-api","Milanote API","本文介绍了作者开发的 Milanote API 项目，用于在外部使用 Milanote 分享 Board 的内容。项目已完成根据分享链接获取完整 API 数据、解析卡片内容与布局、构建 Playground 在线可视化示例、部署至 Cloudflare Workers 并提供字段筛选功能；待实现免密钥在线解析。文章还说明了获取 Milanote 只读分享链接的步骤，并展示了 Playground 界面效果。",234,"2026-07-22","2026-07-23",[1431,1432],"Milanote","API",[1336],{"path":1435,"stem":1436,"title":1437,"description":1438,"wordCount":1439,"publish":1440,"update":7,"cover":1441,"tags":1442,"categories":1443,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2026\u002Fduolingo","posts\u002F2026\u002Fduolingo","今天你 Duolingo 了吗？","本文介绍使用 Cloudflare Workers 构建 Duolingo 用户信息接口，解决跨域与缓存问题。接口支持按环境变量查询固定用户，返回昵称、头像、经验及连续学习天数，并提供搜索和其他用户详情接口。通过 KV 缓存和定时任务减少上游请求，支持带鉴权的手动刷新，并包含超时和错误处理。",1581,"2026-07-14","\u002Fimages\u002F2026\u002Fduolingo\u002Fduolingo.png",[1432,1406],[1336],{"path":1445,"stem":1446,"title":1447,"description":1448,"wordCount":1449,"publish":1450,"update":7,"cover":7,"tags":1451,"categories":1456,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002Fblender","posts\u002Fblender\u002Findex","Blender 专题","本文介绍Blender这一免费开源3D建模软件，涵盖建模、动画、渲染、视频剪辑等功能，适合从入门到高级开发。文档提供官网地址；教程部分包含动画大师课VV purple、角色建模课Zimon3D，并附B站链接；素材推荐BlenderKit官方素材库、Sketchfab及模之屋等免费资源平台。",158,"2026-06-18",[1452,1453,1454,1455],"Blender","3D","建模","动画",[1452],{"path":1458,"stem":1459,"title":1460,"description":1461,"wordCount":1462,"publish":1450,"update":7,"cover":7,"tags":1463,"categories":1468,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002Fthreejs","posts\u002Fthreejs\u002Findex","Three.js 专题","本文介绍Three.js作为Web端主流3D图形库，封装WebGL\u002FWebGPU，用于构建3D场景、动画、游戏和数据可视化等。文章汇总官方资源，包括官网、示例、文档、教程、在线编辑器和GitHub仓库。基础使用方面，说明在Vue3中通过TresJS、React中通过React Three Fiber进行组件化开发，并提及GSAP动画库和Blender建模软件。其他资源推荐Three.js Journey系统教程、The Book of Shaders书籍和Kenney免费游戏素材，AI与问题部分尚在完善中。",418,[1464,1465,1466,1467],"Three.js","WebGL","WebGPU","Shader",[1464],{"path":1470,"stem":1471,"title":1472,"description":1473,"wordCount":1474,"publish":1475,"update":1475,"cover":1476,"tags":1477,"categories":1479,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2025\u002Fmagic-js","posts\u002F2025\u002Fmagic-js","你能看懂这些 JavaScript 表达式吗？","本文解析了JavaScript中多个怪异表达式结果的原因，指出其源于IEEE 754浮点数表示、隐式类型转换及同一符号在不同语法环境中的歧义。例如NaN为number、大整数舍入、0.1+0.2不等于0.3、空数组与对象相加、布尔值运算及宽松相等等行为，均可据此解释。建议工程中使用严格相等和明确转换以避免陷阱。",2035,"2025-07-31","\u002Fimages\u002F2025\u002Fmagic-js\u002Fmagic-js.png",[1478],"JavaScript",[1478],{"path":1481,"stem":1482,"title":1483,"description":1484,"wordCount":1485,"publish":1486,"update":1487,"cover":1488,"tags":1489,"categories":1491,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2021\u002Fgit","posts\u002F2021\u002Fgit","Git 笔记","本文介绍Git的安装与基础配置，涵盖用户名邮箱设置及配置作用域优先级；解释工作区、暂存区和本地仓库的工作流；列举git add、commit、branch、switch、log、diff、stash、rm、mv等常用命令；说明查看日志、比较差异、对象关系、搁置改动、忽略文件等操作；并回答删除分支、修改提交信息、合并提交、取消暂存、丢弃改动和删除文件等常见问题。",878,"2021-09-07","2026-05-17","https:\u002F\u002Fgit-scm.com\u002Fimages\u002Flogo@2x.png",[1490],"Git",[1336],{"path":1493,"stem":1494,"title":1495,"description":1496,"wordCount":1497,"publish":1498,"update":7,"cover":1499,"tags":1500,"categories":1502,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2021\u002Fhexo-editor","posts\u002F2021\u002Fhexo-editor","HexoEditor(适用于Hexo的专用编辑器)","本文介绍了专为Hexo优化的Markdown编辑器HexoEditor。该编辑器预览效果与Hexo生成页面高度相似，支持快速执行Hexo命令。软件开源，可从GitHub获取安装程序及中英文手册。配置包括通用、编辑、Hexo路径设置、渲染主题（支持GitHub和Next）以及图片云存储（如SM.MS、腾讯云等）。还提供右键快捷操作Hexo命令。",587,"2021-03-22","\u002Fimages\u002F2021\u002Fhexo-editor\u002Fhexo-editor.jpg",[1336,1501],"Hexo",[1336],{"path":1504,"stem":1505,"title":1506,"description":1507,"wordCount":1508,"publish":1498,"update":7,"cover":1509,"tags":1510,"categories":1514,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2021\u002Ftomcat-servlet","posts\u002F2021\u002Ftomcat-servlet","Tomcat和Servlet应用配置及部分问题","本文介绍Tomcat与Servlet的配置及常见问题。Tomcat部分涵盖安装、环境变量、启动关闭、乱码与端口占用处理、项目部署及IDEA集成。Servlet部分说明实现方式、生命周期、请求与响应对象、乱码处理、请求转发与重定向，以及Cookie、Session、ServletContext等对象和三大域对象的作用范围。",4196,"\u002Fimages\u002F2021\u002Ftomcat-servlet\u002Ftomcat-servlet.jpg",[1511,1512,1513],"JavaWEb","Tomcat","Servlet",[1515],"笔记",{"path":1517,"stem":1518,"title":1519,"description":1520,"wordCount":1521,"publish":1522,"update":7,"cover":1523,"tags":1524,"categories":1526,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2021\u002Fgithub-actions","posts\u002F2021\u002Fgithub-actions","使用Github Action实现全自动部署","本文介绍使用GitHub Action实现Hexo博客全自动部署的流程。需先获取GitHub与Coding的个人访问令牌，创建存放源码的私有仓库，并在站点配置中设置部署仓库地址和令牌。接着在.github\u002Fworkflows目录创建自动部署工作流文件，配置检出、安装Node与Hexo、缓存依赖、生成静态文件和部署步骤。随后更新远程仓库分支，添加.gitignore屏蔽项并推送源码，最后通过Actions查看部署状态。",910,"2021-01-26","\u002Fimages\u002F2021\u002Fgithub-actions\u002Fgithub-actions.jpg",[1525],"博客优化",[1525],{"path":1528,"stem":1529,"title":1530,"description":1531,"wordCount":1532,"publish":1522,"update":7,"cover":1533,"tags":1534,"categories":1535,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2021\u002Fhexo-auto-open-editor","posts\u002F2021\u002Fhexo-auto-open-editor","Hexo添加文章时自动打开编辑器","本文介绍Hexo新建文章后自动打开编辑器的方法。通过监听Hexo的new事件并在scripts目录下添加脚本，利用child_process.exec执行系统命令，Windows使用start、macOS使用open -a启动指定编辑器并打开新文章路径。用户需替换脚本中的编辑器绝对地址，保存后执行hexo new即可自动打开对应文件。",269,"\u002Fimages\u002F2021\u002Fhexo-auto-open-editor\u002Fhexo-auto-open-editor.webp",[1525],[1525],{"path":1537,"stem":1538,"title":1539,"description":1540,"wordCount":1541,"publish":1542,"update":7,"cover":1543,"tags":1544,"categories":1549,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2021\u002Fhttp-canary-ca","posts\u002F2021\u002Fhttp-canary-ca","解决部分安卓11HttpCanary无法安装证书及其他诸多问题","本文分享安卓11下HttpCanary证书安装失败等问题的解决方法，需root或虚拟机。MIUI系统点击安装根证书无反应时，将指定缓存路径的HttpCanary.pem复制为HttpCanary.jks并重启应用，再以root权限安装到系统；无效则先导出带.0证书再安装。抓https失败或提示证书不可信，可安装Xposed框架和JustTrustMe插件关闭SSL认证。资源可从酷安或应用商店获取，免费版与付费版主要区别为插件支持。",506,"2021-01-16","\u002Fimages\u002F2021\u002Fhttp-canary-ca\u002Fhttp-canary-ca.png",[1545,1546,1547,1548],"Android","HttpCanary","抓包","问题",[1547],{"path":1551,"stem":1552,"title":1553,"description":1554,"wordCount":1555,"publish":1556,"update":7,"cover":1557,"tags":1558,"categories":1561,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2020\u002Fmysql-basics","posts\u002F2020\u002Fmysql-basics","MySQL 基础","本文介绍MySQL关系型数据库管理系统基础知识，包括数据库、数据库管理系统、数据库系统和数据库应用系统的概念，及其数据结构化、共享性高、冗余度低、独立性强和统一管理等特点；简述数据库的创建、查看、打开、修改和删除操作，以及数据表的创建、修改、删除和表数据的添加、更新、删除方法，并提及图形化管理工具。",1825,"2020-06-05","\u002Fimages\u002F2020\u002Fmysql-basics\u002Fmysql-basics.png",[1559,1560],"mysql","数据库",[1515],{"path":1563,"stem":1564,"title":1565,"description":1566,"wordCount":1567,"publish":1568,"update":7,"cover":1569,"tags":1570,"categories":1573,"series":7,"seriesOrder":7,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002F2020\u002Fpython-tkinter","posts\u002F2020\u002Fpython-tkinter","Python图形用户界面(Tkinter)","本文简介Python常用GUI库，重点说明Tkinter的标准控件、共同属性及pack、grid、place三种几何布局管理器。使用Tkinter需导入模块、创建控件、添加交互并编写函数、进入主事件循环。文中以简单登录界面为例，演示标签、输入框、按钮的放置，以及为按钮设置回调函数进行输入校验和登录提示。",965,"2020-05-25","\u002Fimages\u002F2020\u002Fpython-tkinter\u002Fpython-tkinter.jpg",[1571,1572],"Python","GUI",[1515],{"path":1575,"stem":1576,"title":1577,"description":1578,"wordCount":1579,"publish":1580,"update":1581,"cover":7,"tags":1582,"categories":1585,"series":1586,"seriesOrder":105,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002Fmarkdown\u002Fcollapse","posts\u002F1.markdown\u002F05.collapse","在正文中使用折叠内容","本文说明正文中折叠内容的使用方法：折叠块适合放置补充说明、较长代码或可选阅读内容，标题始终可见，点击整行展开，各折叠块独立记录状态。支持默认收起，也可通过 open 属性设置初始展开。折叠内部可包含 Markdown、列表、代码、表格、图片等，目录或锚点访问内部标题会先展开所属折叠块。还支持嵌套折叠，外层使用三个冒号、内层使用两个冒号，内外层独立控制；访问嵌套目标可一次展开沿途两层。",428,"1970-01-01","2026-09-26",[1583,1584],"Markdown","MDC",[1586],"文章示例",{"path":1588,"stem":1589,"title":1590,"description":1591,"wordCount":1592,"publish":1580,"update":1388,"cover":7,"tags":1593,"categories":1595,"series":1586,"seriesOrder":89,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002Fmarkdown\u002Fvideo","posts\u002F1.markdown\u002F04.video","在文章中嵌入视频","本文介绍在文章与关于页中嵌入Bilibili和YouTube视频的MDC组件用法，无需API密钥或手写iframe。播放器按16:9自适应宽度，接近可视区域时加载，默认不自动播放。Bilibili可通过BV号或视频链接指定分P与开始时间，YouTube可通过11位视频ID或链接指定开始时间，标题由title参数设置。组件会过滤分享追踪参数与自动播放设置，无效参数仅显示提示，不影响正文。",597,[1583,1584,1594],"视频",[1586],{"path":1597,"stem":1598,"title":1599,"description":1600,"wordCount":1601,"publish":1580,"update":1602,"cover":7,"tags":1603,"categories":1605,"series":1586,"seriesOrder":83,"pin":1342,"wip":6,"theme":1351},"\u002Fposts\u002Fmarkdown\u002Fmarkdown-extended","posts\u002F1.markdown\u002F03.markdown-extended","Markdown 扩展功能","本文介绍Markdown扩展功能。已实现多风格提醒框，支持GitHub、Obsidian、VitePress、Docusaurus四种主题及折叠嵌套，可通过参数或全站配置设置；同时提供GitHub仓库卡片、Bilibili\u002FYouTube视频卡片与正文图片预览。图片画廊与作品集仍在计划中，当前采用标准图片语法配合图注和链接。GitHub仓库卡片在构建时获取公开仓库数据快照，不可用字段显示短横线。后续将实现图片画廊与作品集。",1822,"2026-09-27",[1583,1584,1604],"功能规划",[1586],{"path":1607,"stem":1608,"title":1609,"description":1610,"wordCount":1611,"publish":1580,"update":1602,"cover":7,"tags":1612,"categories":1614,"series":1586,"seriesOrder":77,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002Fmarkdown\u002Fmdc-tutorial","posts\u002F1.markdown\u002F02.mdc-tutorial","MDC 教程","本文介绍 MDC（Markdown Components）在 Nuxt Content 中的语法与用法，涵盖块级容器、行内属性、Props 传递、插槽、嵌套、绑定文章数据，以及代码块与代码组、图片预览、GitHub 仓库卡片、视频卡片、提醒框和文章自动提醒等已接入功能。文末说明自定义组件需实现并注册，并解答组件不显示、插槽误识别等常见问题。",2594,[1584,1613,1405],"Nuxt Content",[1586],{"path":1616,"stem":1617,"title":1618,"description":1619,"wordCount":1620,"publish":1580,"update":1400,"cover":7,"tags":1621,"categories":1623,"series":1586,"seriesOrder":60,"pin":1342,"wip":1352,"theme":1351},"\u002Fposts\u002Fmarkdown\u002Fmarkdown","posts\u002F1.markdown\u002F01.markdown","Markdown 教程","本文为 Markdown 教程，系统介绍常用语法：段落与换行、标题与目录生成、引用、无序\u002F有序\u002F任务列表、强调与行内代码、普通\u002F引用式\u002F自动链接、图片、代码块、表格、分隔线与转义，并说明本站 Nuxt Content 环境下文章文件位置、frontmatter 要求及后续扩展内容。",1449,[1583,1622],"写作",[1586],1791108779811]