[{"data":1,"prerenderedAt":725},["ShallowReactive",2],{"post:\u002Fposts\u002F2021\u002Fhexo-auto-open-editor":3,"posts:catalog":451},{"id":4,"title":5,"aiSummary":6,"audio":7,"body":8,"categories":434,"cover":436,"description":437,"extension":438,"meta":439,"navigation":6,"path":440,"pin":441,"publish":442,"seo":443,"series":7,"seriesOrder":7,"stem":444,"summary":7,"summarySource":445,"tags":446,"theme":447,"update":7,"wip":448,"wordCount":449,"__hash__":450},"posts\u002Fposts\u002F2021\u002Fhexo-auto-open-editor.md","Hexo添加文章时自动打开编辑器",true,null,{"type":9,"value":10,"toc":431},"minimark",[11,15,21,24,27,30,40,222,225,230,233,236,380,383,386,399,402,427],[12,13,14],"p",{},"之前通过Hexo新建文章，在命令行中输入：",[12,16,17],{},[18,19,20],"code",{},"hexo new \"title name\"",[12,22,23],{},"然后还需在Hexo根目录下source文件夹下的_post目录打开编辑md文件，而在众多的文章中想找到刚创建好的，是一件较为麻烦的事。好在可以通过JS脚本实现在创建文章后自动打开编辑器。",[25,26],"hr",{},[12,28,29],{},"Hexo的作者在GitHub项目中的issue里，给出了方法，以下为作者原文:",[31,32,33],"blockquote",{},[12,34,35,36,39],{},"You can try to listen to the ",[18,37,38],{},"new"," event. For example:",[41,42,47],"pre",{"className":43,"code":44,"language":45,"meta":46,"style":46},"language-javascript shiki shiki-themes catppuccin-mocha catppuccin-latte","const spawn = require('node:child_process').exec\n\n\u002F\u002F Hexo 2.x\nhexo.on('new', (path) => {\n  spawn('vi', [path])\n})\n\n\u002F\u002F Hexo 3\nhexo.on('new', (data) => {\n  spawn('vi', [data.path])\n})\n","javascript","",[18,48,49,86,92,99,134,150,159,164,170,196,215],{"__ignoreMap":46},[50,51,54,58,62,66,70,73,77,80,83],"span",{"class":52,"line":53},"line",1,[50,55,57],{"class":56},"sDkzg","const",[50,59,61],{"class":60},"szT_X"," spawn ",[50,63,65],{"class":64},"siJSA","=",[50,67,69],{"class":68},"s3Fsb"," require",[50,71,72],{"class":60},"(",[50,74,76],{"class":75},"ssZzq","'node:child_process'",[50,78,79],{"class":60},")",[50,81,82],{"class":64},".",[50,84,85],{"class":60},"exec\n",[50,87,89],{"class":52,"line":88},2,[50,90,91],{"emptyLinePlaceholder":6},"\n",[50,93,95],{"class":52,"line":94},3,[50,96,98],{"class":97},"s0D_2","\u002F\u002F Hexo 2.x\n",[50,100,102,105,107,110,112,115,119,122,126,128,131],{"class":52,"line":101},4,[50,103,104],{"class":60},"hexo",[50,106,82],{"class":64},[50,108,109],{"class":68},"on",[50,111,72],{"class":60},[50,113,114],{"class":75},"'new'",[50,116,118],{"class":117},"sxk1D",",",[50,120,121],{"class":117}," (",[50,123,125],{"class":124},"sYNyg","path",[50,127,79],{"class":117},[50,129,130],{"class":56}," =>",[50,132,133],{"class":117}," {\n",[50,135,137,140,142,145,147],{"class":52,"line":136},5,[50,138,139],{"class":68},"  spawn",[50,141,72],{"class":60},[50,143,144],{"class":75},"'vi'",[50,146,118],{"class":117},[50,148,149],{"class":60}," [path])\n",[50,151,153,156],{"class":52,"line":152},6,[50,154,155],{"class":117},"}",[50,157,158],{"class":60},")\n",[50,160,162],{"class":52,"line":161},7,[50,163,91],{"emptyLinePlaceholder":6},[50,165,167],{"class":52,"line":166},8,[50,168,169],{"class":97},"\u002F\u002F Hexo 3\n",[50,171,173,175,177,179,181,183,185,187,190,192,194],{"class":52,"line":172},9,[50,174,104],{"class":60},[50,176,82],{"class":64},[50,178,109],{"class":68},[50,180,72],{"class":60},[50,182,114],{"class":75},[50,184,118],{"class":117},[50,186,121],{"class":117},[50,188,189],{"class":124},"data",[50,191,79],{"class":117},[50,193,130],{"class":56},[50,195,133],{"class":117},[50,197,199,201,203,205,207,210,212],{"class":52,"line":198},10,[50,200,139],{"class":68},[50,202,72],{"class":60},[50,204,144],{"class":75},[50,206,118],{"class":117},[50,208,209],{"class":60}," [data",[50,211,82],{"class":64},[50,213,214],{"class":60},"path])\n",[50,216,218,220],{"class":52,"line":217},11,[50,219,155],{"class":117},[50,221,158],{"class":60},[12,223,224],{},"子进程用法：",[12,226,227],{},[18,228,229],{},"child_process.exec(command[, options][, callback])",[12,231,232],{},"在这里直接使用exec(command)，利用子进程执行命令行指令打开编辑器",[12,234,235],{},"稍加修改便可以使用了：",[41,237,239],{"className":43,"code":238,"language":45,"meta":46,"style":46},"const spawn = require('node:child_process').exec\n\n\u002F\u002F Hexo 2.x\nhexo.on('new', (path) => {\n  spawn(`start \"编辑器绝对地址.exe\"${path}`)\n})\n\n\u002F\u002F Hexo 3\nhexo.on('new', (data) => {\n  spawn(`start \"编辑器绝对地址.exe\"${data.path}`)\n})\n",[18,240,241,261,265,269,293,314,320,324,328,352,374],{"__ignoreMap":46},[50,242,243,245,247,249,251,253,255,257,259],{"class":52,"line":53},[50,244,57],{"class":56},[50,246,61],{"class":60},[50,248,65],{"class":64},[50,250,69],{"class":68},[50,252,72],{"class":60},[50,254,76],{"class":75},[50,256,79],{"class":60},[50,258,82],{"class":64},[50,260,85],{"class":60},[50,262,263],{"class":52,"line":88},[50,264,91],{"emptyLinePlaceholder":6},[50,266,267],{"class":52,"line":94},[50,268,98],{"class":97},[50,270,271,273,275,277,279,281,283,285,287,289,291],{"class":52,"line":101},[50,272,104],{"class":60},[50,274,82],{"class":64},[50,276,109],{"class":68},[50,278,72],{"class":60},[50,280,114],{"class":75},[50,282,118],{"class":117},[50,284,121],{"class":117},[50,286,125],{"class":124},[50,288,79],{"class":117},[50,290,130],{"class":56},[50,292,133],{"class":117},[50,294,295,297,299,302,305,307,309,312],{"class":52,"line":136},[50,296,139],{"class":68},[50,298,72],{"class":60},[50,300,301],{"class":75},"`start \"编辑器绝对地址.exe\"",[50,303,304],{"class":117},"${",[50,306,125],{"class":60},[50,308,155],{"class":117},[50,310,311],{"class":75},"`",[50,313,158],{"class":60},[50,315,316,318],{"class":52,"line":152},[50,317,155],{"class":117},[50,319,158],{"class":60},[50,321,322],{"class":52,"line":161},[50,323,91],{"emptyLinePlaceholder":6},[50,325,326],{"class":52,"line":166},[50,327,169],{"class":97},[50,329,330,332,334,336,338,340,342,344,346,348,350],{"class":52,"line":172},[50,331,104],{"class":60},[50,333,82],{"class":64},[50,335,109],{"class":68},[50,337,72],{"class":60},[50,339,114],{"class":75},[50,341,118],{"class":117},[50,343,121],{"class":117},[50,345,189],{"class":124},[50,347,79],{"class":117},[50,349,130],{"class":56},[50,351,133],{"class":117},[50,353,354,356,358,360,362,364,366,368,370,372],{"class":52,"line":198},[50,355,139],{"class":68},[50,357,72],{"class":60},[50,359,301],{"class":75},[50,361,304],{"class":117},[50,363,189],{"class":60},[50,365,82],{"class":64},[50,367,125],{"class":60},[50,369,155],{"class":117},[50,371,311],{"class":75},[50,373,158],{"class":60},[50,375,376,378],{"class":52,"line":217},[50,377,155],{"class":117},[50,379,158],{"class":60},[12,381,382],{},"mac系统下只需要将 'start' 换成 'open -a' 。",[12,384,385],{},"操作步骤：",[387,388,389,393,396],"ol",{},[390,391,392],"li",{},"在Hexo目录下新建scripts目录，新建一个xxx.js文件。",[390,394,395],{},"选用适合版本的代码，复制粘贴进.js文件。",[390,397,398],{},"替换掉\"编辑器绝对地址.exe\"，例如换成\"D:\\Typora\\Typora.exe\"，然后保存。",[12,400,401],{},"下次使用 hexo new 时就能自动打开编辑器了~。",[12,403,404,415,423],{},[405,406,410],"a",{"href":407,"rel":408},"https:\u002F\u002Fblog.setobox.com\u002F",[409],"nofollow",[411,412],"img",{"alt":413,"src":414},"Website","\u002Fimages\u002F2021\u002Fhexo-auto-open-editor\u002Fhexo-auto-open-editor-1.svg",[405,416,419],{"href":417,"rel":418},"https:\u002F\u002Fnotes.doublemine.me\u002F2015-06-29-Hexo%E6%B7%BB%E5%8A%A0%E6%96%87%E7%AB%A0%E6%97%B6%E8%87%AA%E5%8A%A8%E6%89%93%E5%BC%80%E7%BC%96%E8%BE%91%E5%99%A8.html",[409],[411,420],{"alt":421,"src":422},"Reference","\u002Fimages\u002F2021\u002Fhexo-auto-open-editor\u002Fhexo-auto-open-editor-2.svg",[411,424],{"alt":425,"src":426},"Say Thanks","\u002Fimages\u002F2021\u002Fhexo-auto-open-editor\u002Fhexo-auto-open-editor-3.svg",[428,429,430],"style",{},"html pre.shiki code .sDkzg, html code.shiki .sDkzg{--shiki-default:#CBA6F7;--shiki-light:#8839EF}html pre.shiki code .szT_X, html code.shiki .szT_X{--shiki-default:#CDD6F4;--shiki-light:#4C4F69}html pre.shiki code .siJSA, html code.shiki .siJSA{--shiki-default:#94E2D5;--shiki-light:#179299}html pre.shiki code .s3Fsb, html code.shiki .s3Fsb{--shiki-default:#89B4FA;--shiki-default-font-style:italic;--shiki-light:#1E66F5;--shiki-light-font-style:italic}html pre.shiki code .ssZzq, html code.shiki .ssZzq{--shiki-default:#A6E3A1;--shiki-light:#40A02B}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}html pre.shiki code .sxk1D, html code.shiki .sxk1D{--shiki-default:#9399B2;--shiki-light:#7C7F93}html pre.shiki code .sYNyg, html code.shiki .sYNyg{--shiki-default:#EBA0AC;--shiki-default-font-style:italic;--shiki-light:#E64553;--shiki-light-font-style:italic}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);}",{"title":46,"searchDepth":432,"depth":136,"links":433},12,[],[435],"博客优化","\u002Fimages\u002F2021\u002Fhexo-auto-open-editor\u002Fhexo-auto-open-editor.webp","本文介绍Hexo新建文章后自动打开编辑器的方法。通过监听Hexo的new事件并在scripts目录下添加脚本，利用child_process.exec执行系统命令，Windows使用start、macOS使用open -a启动指定编辑器并打开新文章路径。用户需替换脚本中的编辑器绝对地址，保存后执行hexo new即可自动打开对应文件。","md",{},"\u002Fposts\u002F2021\u002Fhexo-auto-open-editor",0,"2021-01-26",{"title":5,"description":437},"posts\u002F2021\u002Fhexo-auto-open-editor","ai",[435],"#a369ff",false,269,"9erng6wmzw4mYlDCkAJbx53IZj5H6qA3N7hd0g0bFio",[452,468,482,490,503,518,531,543,553,566,578,589,601,612,625,634,637,651,663,675,688,697,707,716],{"path":453,"stem":454,"title":455,"description":456,"wordCount":457,"publish":458,"update":458,"cover":459,"tags":460,"categories":466,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\u002Fposts\u002F2026\u002Fwsl3","posts\u002F2026\u002Fwsl3","WSL 3 正式发布~","微软发布 WSL 3.0.1，正式提供稳定的 WSL 容器功能，无需 Docker 即可原生创建和运行 Linux 容器。该版本改进包括跨操作系统文件访问性能最高提升至原来的两倍（采用 virtiofs），以及网络模式 Consomme 优化端口映射和 VPN 兼容性。文章介绍了 WSL 安装、从 WSL 2 升级的方法，并示例使用 wslc 运行 Ubuntu、Nginx 容器及构建自定义镜像。",1038,"2026-10-01","\u002Fimages\u002F2026\u002Fwsl3\u002Fwsl3.png",[461,462,463,464,465],"WSL","Linux","Windows","Docker","容器",[467],"工具",{"path":469,"stem":470,"title":471,"description":472,"wordCount":473,"publish":474,"update":7,"cover":475,"tags":476,"categories":481,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\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",[477,478,479,480],"AI","Codex","提示词","Agent",[477],{"path":483,"stem":484,"title":485,"description":486,"wordCount":487,"publish":474,"update":7,"cover":7,"tags":488,"categories":489,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\u002Fposts\u002F2026\u002Fcodex-prompt-translation","posts\u002F2026\u002Fcodex-prompt-translation","Codex GPT-6 Sol 提示词完整中文译文","第三方仓库收录的 Codex GPT-6 Sol 提示词中文译文，按原顺序保留全部 54 个模板。",34261,[477,478,479,480],[477],{"path":491,"stem":492,"title":493,"description":494,"wordCount":495,"publish":496,"update":497,"cover":498,"tags":499,"categories":502,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\u002Fposts\u002F2026\u002Fjev","posts\u002F2026\u002Fjev","JEV 是好模型吗？","本文评析JEV模型，认为其并非通用大模型，而是专做预定义判断的System One模型，通过选择、评分、是非题返回结构化结果，不生成文本。其快与便宜源于非自回归并行输出，但“零幻觉”仅指输出结构合规，判断仍可能出错。该思路适用于答案范围明确、需频繁调用的场景，也可用普通大模型近似实现，核心在于把任务收窄为单一判断。",2429,"2026-09-21","2026-09-23","\u002Fimages\u002F2026\u002Fjev\u002Fjev.webp",[477,500,501],"JEV","LLM",[477],{"path":504,"stem":505,"title":506,"description":507,"wordCount":508,"publish":509,"update":510,"cover":7,"tags":511,"categories":516,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\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",[512,513,514,515],"博客","Nuxt","Vue","Cloudflare",[517],"建站记录",{"path":519,"stem":520,"title":521,"description":522,"wordCount":523,"publish":524,"update":7,"cover":7,"tags":525,"categories":529,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\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",[526,527,528],"DLSS5","mod","xxmi",[530],"游戏",{"path":532,"stem":533,"title":534,"description":535,"wordCount":536,"publish":537,"update":538,"cover":7,"tags":539,"categories":542,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\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",[540,541],"Milanote","API",[467],{"path":544,"stem":545,"title":546,"description":547,"wordCount":548,"publish":549,"update":7,"cover":550,"tags":551,"categories":552,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\u002Fposts\u002F2026\u002Fduolingo","posts\u002F2026\u002Fduolingo","今天你 Duolingo 了吗？","本文介绍使用 Cloudflare Workers 构建 Duolingo 用户信息接口，解决跨域与缓存问题。接口支持按环境变量查询固定用户，返回昵称、头像、经验及连续学习天数，并提供搜索和其他用户详情接口。通过 KV 缓存和定时任务减少上游请求，支持带鉴权的手动刷新，并包含超时和错误处理。",1581,"2026-07-14","\u002Fimages\u002F2026\u002Fduolingo\u002Fduolingo.png",[541,515],[467],{"path":554,"stem":555,"title":556,"description":557,"wordCount":558,"publish":559,"update":7,"cover":7,"tags":560,"categories":565,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\u002Fposts\u002Fblender","posts\u002Fblender\u002Findex","Blender 专题","本文介绍Blender这一免费开源3D建模软件，涵盖建模、动画、渲染、视频剪辑等功能，适合从入门到高级开发。文档提供官网地址；教程部分包含动画大师课VV purple、角色建模课Zimon3D，并附B站链接；素材推荐BlenderKit官方素材库、Sketchfab及模之屋等免费资源平台。",158,"2026-06-18",[561,562,563,564],"Blender","3D","建模","动画",[561],{"path":567,"stem":568,"title":569,"description":570,"wordCount":571,"publish":559,"update":7,"cover":7,"tags":572,"categories":577,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\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,[573,574,575,576],"Three.js","WebGL","WebGPU","Shader",[573],{"path":579,"stem":580,"title":581,"description":582,"wordCount":583,"publish":584,"update":584,"cover":585,"tags":586,"categories":588,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\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",[587],"JavaScript",[587],{"path":590,"stem":591,"title":592,"description":593,"wordCount":594,"publish":595,"update":596,"cover":597,"tags":598,"categories":600,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\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",[599],"Git",[467],{"path":602,"stem":603,"title":604,"description":605,"wordCount":606,"publish":607,"update":7,"cover":608,"tags":609,"categories":611,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\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",[467,610],"Hexo",[467],{"path":613,"stem":614,"title":615,"description":616,"wordCount":617,"publish":607,"update":7,"cover":618,"tags":619,"categories":623,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\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",[620,621,622],"JavaWEb","Tomcat","Servlet",[624],"笔记",{"path":626,"stem":627,"title":628,"description":629,"wordCount":630,"publish":442,"update":7,"cover":631,"tags":632,"categories":633,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\u002Fposts\u002F2021\u002Fgithub-actions","posts\u002F2021\u002Fgithub-actions","使用Github Action实现全自动部署","本文介绍使用GitHub Action实现Hexo博客全自动部署的流程。需先获取GitHub与Coding的个人访问令牌，创建存放源码的私有仓库，并在站点配置中设置部署仓库地址和令牌。接着在.github\u002Fworkflows目录创建自动部署工作流文件，配置检出、安装Node与Hexo、缓存依赖、生成静态文件和部署步骤。随后更新远程仓库分支，添加.gitignore屏蔽项并推送源码，最后通过Actions查看部署状态。",910,"\u002Fimages\u002F2021\u002Fgithub-actions\u002Fgithub-actions.jpg",[435],[435],{"path":440,"stem":444,"title":5,"description":437,"wordCount":449,"publish":442,"update":7,"cover":436,"tags":635,"categories":636,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},[435],[435],{"path":638,"stem":639,"title":640,"description":641,"wordCount":642,"publish":643,"update":7,"cover":644,"tags":645,"categories":650,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\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",[646,647,648,649],"Android","HttpCanary","抓包","问题",[648],{"path":652,"stem":653,"title":654,"description":655,"wordCount":656,"publish":657,"update":7,"cover":658,"tags":659,"categories":662,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\u002Fposts\u002F2020\u002Fmysql-basics","posts\u002F2020\u002Fmysql-basics","MySQL 基础","本文介绍MySQL关系型数据库管理系统基础知识，包括数据库、数据库管理系统、数据库系统和数据库应用系统的概念，及其数据结构化、共享性高、冗余度低、独立性强和统一管理等特点；简述数据库的创建、查看、打开、修改和删除操作，以及数据表的创建、修改、删除和表数据的添加、更新、删除方法，并提及图形化管理工具。",1825,"2020-06-05","\u002Fimages\u002F2020\u002Fmysql-basics\u002Fmysql-basics.png",[660,661],"mysql","数据库",[624],{"path":664,"stem":665,"title":666,"description":667,"wordCount":668,"publish":669,"update":7,"cover":670,"tags":671,"categories":674,"series":7,"seriesOrder":7,"pin":441,"wip":448,"theme":447},"\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",[672,673],"Python","GUI",[624],{"path":676,"stem":677,"title":678,"description":679,"wordCount":680,"publish":681,"update":682,"cover":7,"tags":683,"categories":686,"series":687,"seriesOrder":136,"pin":441,"wip":448,"theme":447},"\u002Fposts\u002Fmarkdown\u002Fcollapse","posts\u002F1.markdown\u002F05.collapse","在正文中使用折叠内容","本文说明正文中折叠内容的使用方法：折叠块适合放置补充说明、较长代码或可选阅读内容，标题始终可见，点击整行展开，各折叠块独立记录状态。支持默认收起，也可通过 open 属性设置初始展开。折叠内部可包含 Markdown、列表、代码、表格、图片等，目录或锚点访问内部标题会先展开所属折叠块。还支持嵌套折叠，外层使用三个冒号、内层使用两个冒号，内外层独立控制；访问嵌套目标可一次展开沿途两层。",428,"1970-01-01","2026-09-26",[684,685],"Markdown","MDC",[687],"文章示例",{"path":689,"stem":690,"title":691,"description":692,"wordCount":693,"publish":681,"update":497,"cover":7,"tags":694,"categories":696,"series":687,"seriesOrder":101,"pin":441,"wip":448,"theme":447},"\u002Fposts\u002Fmarkdown\u002Fvideo","posts\u002F1.markdown\u002F04.video","在文章中嵌入视频","本文介绍在文章与关于页中嵌入Bilibili和YouTube视频的MDC组件用法，无需API密钥或手写iframe。播放器按16:9自适应宽度，接近可视区域时加载，默认不自动播放。Bilibili可通过BV号或视频链接指定分P与开始时间，YouTube可通过11位视频ID或链接指定开始时间，标题由title参数设置。组件会过滤分享追踪参数与自动播放设置，无效参数仅显示提示，不影响正文。",597,[684,685,695],"视频",[687],{"path":698,"stem":699,"title":700,"description":701,"wordCount":702,"publish":681,"update":703,"cover":7,"tags":704,"categories":706,"series":687,"seriesOrder":94,"pin":441,"wip":6,"theme":447},"\u002Fposts\u002Fmarkdown\u002Fmarkdown-extended","posts\u002F1.markdown\u002F03.markdown-extended","Markdown 扩展功能","本文介绍Markdown扩展功能。已实现多风格提醒框，支持GitHub、Obsidian、VitePress、Docusaurus四种主题及折叠嵌套，可通过参数或全站配置设置；同时提供GitHub仓库卡片、Bilibili\u002FYouTube视频卡片与正文图片预览。图片画廊与作品集仍在计划中，当前采用标准图片语法配合图注和链接。GitHub仓库卡片在构建时获取公开仓库数据快照，不可用字段显示短横线。后续将实现图片画廊与作品集。",1822,"2026-09-27",[684,685,705],"功能规划",[687],{"path":708,"stem":709,"title":710,"description":711,"wordCount":712,"publish":681,"update":703,"cover":7,"tags":713,"categories":715,"series":687,"seriesOrder":88,"pin":441,"wip":448,"theme":447},"\u002Fposts\u002Fmarkdown\u002Fmdc-tutorial","posts\u002F1.markdown\u002F02.mdc-tutorial","MDC 教程","本文介绍 MDC（Markdown Components）在 Nuxt Content 中的语法与用法，涵盖块级容器、行内属性、Props 传递、插槽、嵌套、绑定文章数据，以及代码块与代码组、图片预览、GitHub 仓库卡片、视频卡片、提醒框和文章自动提醒等已接入功能。文末说明自定义组件需实现并注册，并解答组件不显示、插槽误识别等常见问题。",2594,[685,714,514],"Nuxt Content",[687],{"path":717,"stem":718,"title":719,"description":720,"wordCount":721,"publish":681,"update":509,"cover":7,"tags":722,"categories":724,"series":687,"seriesOrder":53,"pin":441,"wip":448,"theme":447},"\u002Fposts\u002Fmarkdown\u002Fmarkdown","posts\u002F1.markdown\u002F01.markdown","Markdown 教程","本文为 Markdown 教程，系统介绍常用语法：段落与换行、标题与目录生成、引用、无序\u002F有序\u002F任务列表、强调与行内代码、普通\u002F引用式\u002F自动链接、图片、代码块、表格、分隔线与转义，并说明本站 Nuxt Content 环境下文章文件位置、frontmatter 要求及后续扩展内容。",1449,[684,723],"写作",[687],1791108778916]