PageSourceSearch

https://allenblog.icu/

html allenblog.icu collected 2026-10-06 14:14:26 UTC 165,593 bytes, 2 lines download raw bytes

1<!DOCTYPE html><html lang="en-us" class="__variable_dd5b2f scroll-smooth"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/36966cca54120369-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/edd057d2e5463fc6.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/bfa508b90d32aeb2.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-8fdb236ec2168770.js"/>
1<script src="/_next/static/chunks/4bd1b696-72b5a72e986768d6.js" async=""></script>
1<script src="/_next/static/chunks/1517-e0dfcddff952f439.js" async=""></script>
1<script src="/_next/static/chunks/main-app-9a3720905815865a.js" async=""></script>
1<script src="/_next/static/chunks/c16f53c3-bcb242d5373a2eb6.js" async=""></script>
1<script src="/_next/static/chunks/8173-dd19265b6e755bd2.js" async=""></script>
1<script src="/_next/static/chunks/9053-17631ffe2296bc6f.js" async=""></script>
1<script src="/_next/static/chunks/app/layout-b446072e2cbeff84.js" async=""></script>
1<script src="/_next/static/chunks/app/page-5b2aa95121ded5ff.js" async=""></script>
1<link rel="preload" href="https://analytics.umami.is/script.js" as="script"/><meta name="next-size-adjust" content=""/><link rel="icon" href="/static/favicons/favicon.svg" type="image/svg+xml"/><link rel="apple-touch-icon" sizes="76x76" href="/static/favicons/apple-touch-icon.png"/><link rel="icon" type="image/png" sizes="32x32" href="/static/favicons/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="/static/favicons/favicon-16x16.png"/><link rel="manifest" href="/static/favicons/site.webmanifest"/><link rel="mask-icon" href="/static/favicons/safari-pinned-tab.svg" color="#5bbad5"/><meta name="msapplication-TileColor" content="#000000"/><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fff"/><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#000"/><link rel="alternate" type="application/rss+xml" href="/feed.xml"/><title>Allen&#x27;s Blog</title><meta name="description" content="The purpose of this blog is to share his insights and experiences in the field of technology, programming, and personal thoughts."/><meta name="robots" content="index, follow"/><meta name="googlebot" content="index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1"/><link rel="canonical" href="https://allenblog.icu"/><link rel="alternate" type="application/rss+xml" href="https://allenblog.icu/feed.xml"/><meta property="og:title" content="Allen&#x27;s Blog"/><meta property="og:description" content="The purpose of this blog is to share his insights and experiences in the field of technology, programming, and personal thoughts."/><meta property="og:url" content="https://allenblog.icu"/><meta property="og:site_name" content="Allen&#x27;s Blog"/><meta property="og:locale" content="en_US"/><meta property="og:image" content="https://allenblog.icu/static/images/twitter-card.png"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Allen&#x27;s Blog"/><meta name="twitter:description" content="The purpose of this blog is to share his insights and experiences in the field of technology, programming, and personal thoughts."/><meta name="twitter:image" content="https://allenblog.icu/static/images/twitter-card.png"/>
1<script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script>
1</head><body class="bg-white pl-[calc(100vw-100%)] text-black antialiased dark:bg-gray-950 dark:text-white [.gradient_&amp;]:bg-gradient-to-br [.gradient_&amp;]:from-[#fffcfd] [.gradient_&amp;]:via-[#fffbfe] [.gradient_&amp;]:to-[#fafbff] dark:[.gradient_&amp;]:from-[#0f0510] dark:[.gradient_&amp;]:via-[#0a0818] dark:[.gradient_&amp;]:to-[#080d1a]">
1<script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark','system','gradient');var e=localStorage.getItem('theme');if('system'===e||(!e&&false)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}else{c.add('gradient')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()</script>
1<div class="fixed left-0 top-0 z-50 h-1 w-full bg-gray-200 dark:bg-gray-800"><div class="h-full bg-gradient-to-r from-cyan-500 via-blue-500 to-purple-500 transition-all duration-150 ease-out [.gradient_&amp;]:from-pink-500 [.gradient_&amp;]:via-rose-400 [.gradient_&amp;]:to-purple-500" style="width:0%"></div></div><section class="mx-auto max-w-3xl px-4 sm:px-6 xl:max-w-5xl xl:px-0"><header class="flex items-center w-full justify-between py-4 transition-all duration-300  bg-white dark:bg-gray-950 [.gradient_&amp;]:bg-transparent dark:[.gradient_&amp;]:bg-transparent"><a class="break-words" aria-label="Allen&#x27;s Blog" href="/"><div class="group flex items-center justify-between"><div class="mr-3 transition-transform duration-300 group-hover:scale-110"><svg xmlns="http://www.w3.org/2000/svg" width="52" height="48" aria-label="Allen Blog Logo - Neural Network A" viewBox="-2 0 52 48" class="h-10 w-10"><defs><linearGradient id="logo_svg__a" x1="0%" x2="100%" y1="0%" y2="100%"><stop offset="0%" style="stop-color:#06b6d4;stop-opacity:1"></stop><stop offset="100%" style="stop-color:#3b82f6;stop-opacity:1"></stop></linearGradient><linearGradient id="logo_svg__b" x1="0%" x2="100%" y1="100%" y2="0%"><stop offset="0%" style="stop-color:#8b5cf6;stop-opacity:1"></stop><stop offset="100%" style="stop-color:#06b6d4;stop-opacity:1"></stop></linearGradient></defs><circle cx="24" cy="24" r="22" fill="none" stroke="url(#logo_svg__a)" stroke-width="2" opacity="0.3"></circle><path fill="url(#logo_svg__a)" d="M24 8 12 38h4l2-6h12l2 6h4zm-4 20 4-12 4 12Z"></path><circle cx="24" cy="20" r="2" fill="url(#logo_svg__b)"></circle><circle cx="18" cy="32" r="1.5" fill="url(#logo_svg__b)" opacity="0.7"></circle><circle cx="30" cy="32" r="1.5" fill="url(#logo_svg__b)" opacity="0.7"></circle><path stroke="url(#logo_svg__b)" stroke-width="0.8" d="m24 20-6 12M24 20l6 12" opacity="0.5"></path><path fill="none" stroke="url(#logo_svg__a)" stroke-linecap="round" stroke-width="1.5" d="m6 18-4 6 4 6M42 18l4 6-4 6" opacity="0.6"></path></svg></div><div class="hidden bg-gradient-to-r from-gray-900 to-gray-600 bg-clip-text text-2xl font-bold text-transparent transition-all duration-300 group-hover:from-cyan-600 group-hover:to-blue-600 dark:from-white dark:to-gray-300 dark:group-hover:from-cyan-400 dark:group-hover:to-blue-400 sm:block [.gradient_&amp;]:group-hover:from-pink-400 [.gradient_&amp;]:group-hover:to-rose-400">Allen&#x27;s Blog</div></div></a><div class="flex items-center space-x-3 leading-5 sm:space-x-5"><nav class="no-scrollbar hidden max-w-40 items-center space-x-1 overflow-x-auto sm:flex md:max-w-72 lg:max-w-96"><a class="relative rounded-lg px-3 py-2 font-medium text-gray-700 transition-all duration-300 hover:bg-gray-100 hover:text-cyan-600 dark:text-gray-200 dark:hover:bg-gray-800 dark:hover:text-cyan-400 [.gradient_&amp;]:hover:text-pink-500" href="/blog">Blog</a><a class="relative rounded-lg px-3 py-2 font-medium text-gray-700 transition-all duration-300 hover:bg-gray-100 hover:text-cyan-600 dark:text-gray-200 dark:hover:bg-gray-800 dark:hover:text-cyan-400 [.gradient_&amp;]:hover:text-pink-500" href="/tags">Tags</a><a class="relative rounded-lg px-3 py-2 font-medium text-gray-700 transition-all duration-300 hover:bg-gray-100 hover:text-cyan-600 dark:text-gray-200 dark:hover:bg-gray-800 dark:hover:text-cyan-400 [.gradient_&amp;]:hover:text-pink-500" href="/projects">Projects</a><a class="relative rounded-lg px-3 py-2 font-medium text-gray-700 transition-all duration-300 hover:bg-gray-100 hover:text-cyan-600 dark:text-gray-200 dark:hover:bg-gray-800 dark:hover:text-cyan-400 [.gradient_&amp;]:hover:text-pink-500" href="/about">About</a></nav><div class="flex items-center space-x-2"><button aria-label="Search"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="h-6 w-6 text-gray-900 hover:text-primary-500 dark:text-gray-100 dark:hover:text-primary-400 [.gradient_&amp;]:hover:text-pink-500 dark:[.gradient_&amp;]:hover:text-pink-400"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z"></path></svg></button><div class="mr-5 flex items-center"><div class="relative inline-block text-left" data-headlessui-state=""><div class="flex items-center justify-center hover:text-primary-500 dark:hover:text-primary-400 [.gradient_&amp;]:hover:text-pink-500 dark:[.gradient_&amp;]:hover:text-pink-400"><button aria-label="Theme switcher" id="headlessui-menu-button-:R1t9kunb:" type="button" aria-haspopup="menu" aria-expanded="false" data-headlessui-state=""><svg class="h-6 w-6"></svg></button></div></div></div><button aria-label="Toggle Menu" class="sm:hidden"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="h-8 w-8 text-gray-900 hover:text-primary-500 dark:text-gray-100 dark:hover:text-primary-400 [.gradient_&amp;]:hover:text-pink-500 dark:[.gradient_&amp;]:hover:text-pink-400"><path fill-rule="evenodd" d="M3 5a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1zM3 15a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z" clip-rule="evenodd"></path></svg></button><span hidden="" style="position:fixed;top:1px;left:1px;width:1px;height:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;display:none"></span></div></div></header><main class="mb-auto"><div class="divide-y divide-gray-200 dark:divide-gray-700"><div class="space-y-6 pb-10 pt-8 md:space-y-8"><div class="relative overflow-hidden rounded-2xl bg-gradient-to-br from-[#f6faff] via-[#e9f2ff] to-[#ddebff] p-8 dark:from-[#0b1424] dark:via-[#0e1b33] dark:to-[#12264a] md:p-12 [.gradient_&amp;]:from-[#fffcfd] [.gradient_&amp;]:via-[#fffbfe] [.gradient_&amp;]:to-[#f8faff] dark:[.gradient_&amp;]:from-[#1a0a14] dark:[.gradient_&amp;]:via-[#120a1e] dark:[.gradient_&amp;]:to-[#0a0f1e]"><div class="bg-grid-pattern absolute inset-0 opacity-[0.04] [.gradient_&amp;]:opacity-0"></div><div class="from-sky-300/24 to-blue-500/22 absolute -right-20 -top-20 h-60 w-60 rounded-full bg-gradient-to-br blur-3xl [.gradient_&amp;]:hidden"></div><div class="absolute -bottom-20 -left-20 h-60 w-60 rounded-full bg-gradient-to-br from-blue-300/20 to-indigo-500/20 blur-3xl [.gradient_&amp;]:hidden"></div><div class="pointer-events-none absolute inset-0 hidden [.gradient_&amp;]:block"><div class="mesh-blob mesh-blob-1"></div><div class="mesh-blob mesh-blob-2"></div><div class="mesh-blob mesh-blob-3"></div></div><div class="relative z-10"><h1 class="bg-gradient-to-r from-gray-900 via-gray-700 to-gray-900 bg-clip-text text-4xl font-extrabold leading-tight tracking-tight text-transparent dark:from-white dark:via-gray-200 dark:to-white sm:text-5xl md:text-6xl">Welcome to<!-- --> <span class="bg-gradient-to-r from-cyan-500 to-blue-500 bg-clip-text text-transparent [.gradient_&amp;]:from-pink-400 [.gradient_&amp;]:via-rose-300 [.gradient_&amp;]:to-purple-400">Allen&#x27;s Blog</span></h1><div class="mt-4 text-xl text-gray-600 dark:text-gray-300 md:text-2xl">Exploring<!-- --> <span class="font-semibold text-cyan-600 dark:text-cyan-400 [.gradient_&amp;]:text-pink-500"><span class="animate-pulse text-primary-500">|</span></span></div><p class="mt-6 max-w-2xl text-lg leading-relaxed text-gray-500 dark:text-gray-400">The purpose of this blog is to share his insights and experiences in the field of technology, programming, and personal thoughts.</p></div></div><div class="flex items-center space-x-4"><h2 class="text-2xl font-bold tracking-tight text-gray-900 dark:text-gray-100 md:text-3xl">Latest Posts</h2><div class="h-px flex-1 bg-gradient-to-r from-gray-200 to-transparent dark:from-gray-700"></div></div></div><ul class="divide-y divide-gray-200 dark:divide-gray-700"><li class="py-6"><article class="group relative rounded-xl p-4 transition-all duration-300 hover:shadow-xl"><div class="absolute inset-0 rounded-xl border-2 border-gray-200/60 transition-all duration-300 group-hover:border-transparent group-hover:bg-gradient-to-r group-hover:from-cyan-400/10 group-hover:via-blue-400/10 group-hover:to-purple-400/10 dark:border-gray-700/60 [.gradient_&amp;]:group-hover:from-pink-400/10 [.gradient_&amp;]:group-hover:via-rose-400/10 [.gradient_&amp;]:group-hover:to-purple-400/10"></div><div class="relative rounded-xl bg-white/80 p-4 backdrop-blur-sm transition-colors duration-300 group-hover:bg-white dark:bg-gray-900/80 dark:group-hover:bg-gray-900 [.gradient_&amp;]:bg-white/40 dark:[.gradient_&amp;]:bg-gray-900/40"><div class="space-y-2 xl:grid xl:grid-cols-4 xl:items-baseline xl:space-y-0"><dl><dt class="sr-only">Published on</dt><dd class="text-base font-medium leading-6 text-gray-500 dark:text-gray-400"><time dateTime="2026-10-01T00:00:00.000Z" class="flex items-center space-x-2"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg><span>October 1, 2026</span></time></dd></dl><div class="space-y-4 xl:col-span-3"><div class="space-y-3"><div><h3 class="text-2xl font-bold leading-8 tracking-tight"><a class="text-gray-900 transition-colors duration-300 group-hover:text-cyan-600 dark:text-gray-100 dark:group-hover:text-cyan-400 [.gradient_&amp;]:group-hover:text-pink-500" href="/blog/national-day-psychology-class">国庆闲着,点开了一节心理学课</a></h3><div class="mt-2 flex flex-wrap gap-2"><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/writings">writings</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/psychology">Psychology</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/logic">Logic</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/ai">AI</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/career">career</a></div></div><div class="prose max-w-none text-gray-500 dark:text-gray-400">本来只是想学点心理学和逻辑学,结果变成了一次对自己的线上排障:打 log、挖根因、逐段测试,最后开始怀疑,要补的也许不只是能力,还有与人的连接。</div></div><div class="text-base font-medium leading-6"><a class="inline-flex items-center space-x-2 text-primary-500 transition-all duration-300 hover:text-primary-600 group-hover:text-primary-600 dark:text-primary-400 dark:hover:text-primary-300 dark:group-hover:text-primary-300 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600 [.gradient_&amp;]:group-hover:text-pink-600" aria-label="Read more: &quot;国庆闲着,点开了一节心理学课&quot;" href="/blog/national-day-psychology-class"><span>Read more</span><svg class="h-4 w-4 transition-transform duration-300 group-hover:translate-x-1" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path></svg></a></div></div></div></div></article></li><li class="py-6"><article class="group relative rounded-xl p-4 transition-all duration-300 hover:shadow-xl"><div class="absolute inset-0 rounded-xl border-2 border-gray-200/60 transition-all duration-300 group-hover:border-transparent group-hover:bg-gradient-to-r group-hover:from-cyan-400/10 group-hover:via-blue-400/10 group-hover:to-purple-400/10 dark:border-gray-700/60 [.gradient_&amp;]:group-hover:from-pink-400/10 [.gradient_&amp;]:group-hover:via-rose-400/10 [.gradient_&amp;]:group-hover:to-purple-400/10"></div><div class="relative rounded-xl bg-white/80 p-4 backdrop-blur-sm transition-colors duration-300 group-hover:bg-white dark:bg-gray-900/80 dark:group-hover:bg-gray-900 [.gradient_&amp;]:bg-white/40 dark:[.gradient_&amp;]:bg-gray-900/40"><div class="space-y-2 xl:grid xl:grid-cols-4 xl:items-baseline xl:space-y-0"><dl><dt class="sr-only">Published on</dt><dd class="text-base font-medium leading-6 text-gray-500 dark:text-gray-400"><time dateTime="2026-04-19T00:00:00.000Z" class="flex items-center space-x-2"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg><span>April 19, 2026</span></time></dd></dl><div class="space-y-4 xl:col-span-3"><div class="space-y-3"><div><h3 class="text-2xl font-bold leading-8 tracking-tight"><a class="text-gray-900 transition-colors duration-300 group-hover:text-cyan-600 dark:text-gray-100 dark:group-hover:text-cyan-400 [.gradient_&amp;]:group-hover:text-pink-500" href="/blog/what-counts-as-my-code-in-ai-era">每次用 AI 做完东西,我都会问:这还算我做的吗?</a></h3><div class="mt-2 flex flex-wrap gap-2"><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/writings">writings</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/ai">AI</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/career">career</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/vibe-coding">Vibe-Coding</a></div></div><div class="prose max-w-none text-gray-500 dark:text-gray-400">刚从大公司跳到电商公司,第一次接到内部知识库需求。我的本能:LangChain + RAGFlow + 自建。同事的做法:开源 MCP + 飞书同步。我盯着屏幕自问——一行核心代ç 
1éƒ½æ²¡æ‰‹å†™ï¼Œè¿™ä¸œè¥¿è¿˜ç®—「我做的」吗?</div></div><div class="text-base font-medium leading-6"><a class="inline-flex items-center space-x-2 text-primary-500 transition-all duration-300 hover:text-primary-600 group-hover:text-primary-600 dark:text-primary-400 dark:hover:text-primary-300 dark:group-hover:text-primary-300 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600 [.gradient_&amp;]:group-hover:text-pink-600" aria-label="Read more: &quot;每次用 AI 做完东西,我都会问:这还算我做的吗?&quot;" href="/blog/what-counts-as-my-code-in-ai-era"><span>Read more</span><svg class="h-4 w-4 transition-transform duration-300 group-hover:translate-x-1" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path></svg></a></div></div></div></div></article></li><li class="py-6"><article class="group relative rounded-xl p-4 transition-all duration-300 hover:shadow-xl"><div class="absolute inset-0 rounded-xl border-2 border-gray-200/60 transition-all duration-300 group-hover:border-transparent group-hover:bg-gradient-to-r group-hover:from-cyan-400/10 group-hover:via-blue-400/10 group-hover:to-purple-400/10 dark:border-gray-700/60 [.gradient_&amp;]:group-hover:from-pink-400/10 [.gradient_&amp;]:group-hover:via-rose-400/10 [.gradient_&amp;]:group-hover:to-purple-400/10"></div><div class="relative rounded-xl bg-white/80 p-4 backdrop-blur-sm transition-colors duration-300 group-hover:bg-white dark:bg-gray-900/80 dark:group-hover:bg-gray-900 [.gradient_&amp;]:bg-white/40 dark:[.gradient_&amp;]:bg-gray-900/40"><div class="space-y-2 xl:grid xl:grid-cols-4 xl:items-baseline xl:space-y-0"><dl><dt class="sr-only">Published on</dt><dd class="text-base font-medium leading-6 text-gray-500 dark:text-gray-400"><time dateTime="2026-02-22T00:00:00.000Z" class="flex items-center space-x-2"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg><span>February 22, 2026</span></time></dd></dl><div class="space-y-4 xl:col-span-3"><div class="space-y-3"><div><h3 class="text-2xl font-bold leading-8 tracking-tight"><a class="text-gray-900 transition-colors duration-300 group-hover:text-cyan-600 dark:text-gray-100 dark:group-hover:text-cyan-400 [.gradient_&amp;]:group-hover:text-pink-500" href="/blog/openclaw-deployment-blog">从零部署 OpenClaw 到 Telegram 的完整记录</a></h3><div class="mt-2 flex flex-wrap gap-2"><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/ai">AI</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/openclaw">OpenClaw</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/telegram-bot">Telegram-Bot</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/devops">DevOps</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/self-hosted">self-hosted</a></div></div><div class="prose max-w-none text-gray-500 dark:text-gray-400">一篇完整的 OpenClaw 部署记录:从腾讯云服务器搭建、Docker 构建、GFW 绕行(Xray + Chromium 包装脚本翻墙)、Telegram Bot 接入、161 个 Skills 同步、记忆系统配置(远程 embedding 失败 → hf-mirror.com 镜像下载 → 本地 node-llama-cpp 模型)、浏览器自动化(/dev/shm OOM、SingletonLock 残留、CDP 端口推导、Chrome Profile 自动选择陷阱、Playwright snapshot 验证、GFW 导航超时根因分析),到 Claude Code 与 Telegram Bot 的双向记忆同步架构(SQLite → Markdown 导出 → GitHub 私有仓库 → cron 定时推送)。踩了 21 个坑,每个都有完整的根因分析。</div></div><div class="text-base font-medium leading-6"><a class="inline-flex items-center space-x-2 text-primary-500 transition-all duration-300 hover:text-primary-600 group-hover:text-primary-600 dark:text-primary-400 dark:hover:text-primary-300 dark:group-hover:text-primary-300 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600 [.gradient_&amp;]:group-hover:text-pink-600" aria-label="Read more: &quot;从零部署 OpenClaw 到 Telegram 的完整记录&quot;" href="/blog/openclaw-deployment-blog"><span>Read more</span><svg class="h-4 w-4 transition-transform duration-300 group-hover:translate-x-1" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path></svg></a></div></div></div></div></article></li><li class="py-6"><article class="group relative rounded-xl p-4 transition-all duration-300 hover:shadow-xl"><div class="absolute inset-0 rounded-xl border-2 border-gray-200/60 transition-all duration-300 group-hover:border-transparent group-hover:bg-gradient-to-r group-hover:from-cyan-400/10 group-hover:via-blue-400/10 group-hover:to-purple-400/10 dark:border-gray-700/60 [.gradient_&amp;]:group-hover:from-pink-400/10 [.gradient_&amp;]:group-hover:via-rose-400/10 [.gradient_&amp;]:group-hover:to-purple-400/10"></div><div class="relative rounded-xl bg-white/80 p-4 backdrop-blur-sm transition-colors duration-300 group-hover:bg-white dark:bg-gray-900/80 dark:group-hover:bg-gray-900 [.gradient_&amp;]:bg-white/40 dark:[.gradient_&amp;]:bg-gray-900/40"><div class="space-y-2 xl:grid xl:grid-cols-4 xl:items-baseline xl:space-y-0"><dl><dt class="sr-only">Published on</dt><dd class="text-base font-medium leading-6 text-gray-500 dark:text-gray-400"><time dateTime="2026-02-09T00:00:00.000Z" class="flex items-center space-x-2"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg><span>February 9, 2026</span></time></dd></dl><div class="space-y-4 xl:col-span-3"><div class="space-y-3"><div><h3 class="text-2xl font-bold leading-8 tracking-tight"><a class="text-gray-900 transition-colors duration-300 group-hover:text-cyan-600 dark:text-gray-100 dark:group-hover:text-cyan-400 [.gradient_&amp;]:group-hover:text-pink-500" href="/blog/transformer-complete-guide">Transformer 完全指南:从注意力机制到 GPT/DeepSeek 架构,再到 LLM 使用技巧</a></h3><div class="mt-2 flex flex-wrap gap-2"><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/ai">AI</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/transformer">Transformer</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/attention">Attention</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/self-attention">Self-Attention</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/bert">BERT</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/gpt">GPT</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/nlp">NLP</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/pytorch">PyTorch</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/deep-learning">Deep-Learning</a></div></div><div class="prose max-w-none text-gray-500 dark:text-gray-400">最全面的 Transformer 中文教程:从注意力直觉到 Q/K/V 手算,从多头注意力到位置编码,从 Encoder-Decoder 到 PyTorch 实现。涵盖 GPT-4/Claude/DeepSeek/LLaMA 架构对比、LLM 使用技巧的 Transformer 原理解析、2025-2026 前沿趋势(FlashAttention、Mamba/SSM、MoE),附 10 个交互式可视化和完整代码。</div></div><div class="text-base font-medium leading-6"><a class="inline-flex items-center space-x-2 text-primary-500 transition-all duration-300 hover:text-primary-600 group-hover:text-primary-600 dark:text-primary-400 dark:hover:text-primary-300 dark:group-hover:text-primary-300 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600 [.gradient_&amp;]:group-hover:text-pink-600" aria-label="Read more: &quot;Transformer 完全指南:从注意力机制到 GPT/DeepSeek 架构,再到 LLM 使用技巧&quot;" href="/blog/transformer-complete-guide"><span>Read more</span><svg class="h-4 w-4 transition-transform duration-300 group-hover:translate-x-1" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path></svg></a></div></div></div></div></article></li><li class="py-6"><article class="group relative rounded-xl p-4 transition-all duration-300 hover:shadow-xl"><div class="absolute inset-0 rounded-xl border-2 border-gray-200/60 transition-all duration-300 group-hover:border-transparent group-hover:bg-gradient-to-r group-hover:from-cyan-400/10 group-hover:via-blue-400/10 group-hover:to-purple-400/10 dark:border-gray-700/60 [.gradient_&amp;]:group-hover:from-pink-400/10 [.gradient_&amp;]:group-hover:via-rose-400/10 [.gradient_&amp;]:group-hover:to-purple-400/10"></div><div class="relative rounded-xl bg-white/80 p-4 backdrop-blur-sm transition-colors duration-300 group-hover:bg-white dark:bg-gray-900/80 dark:group-hover:bg-gray-900 [.gradient_&amp;]:bg-white/40 dark:[.gradient_&amp;]:bg-gray-900/40"><div class="space-y-2 xl:grid xl:grid-cols-4 xl:items-baseline xl:space-y-0"><dl><dt class="sr-only">Published on</dt><dd class="text-base font-medium leading-6 text-gray-500 dark:text-gray-400"><time dateTime="2026-02-07T00:00:00.000Z" class="flex items-center space-x-2"><svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg><span>February 7, 2026</span></time></dd></dl><div class="space-y-4 xl:col-span-3"><div class="space-y-3"><div><h3 class="text-2xl font-bold leading-8 tracking-tight"><a class="text-gray-900 transition-colors duration-300 group-hover:text-cyan-600 dark:text-gray-100 dark:group-hover:text-cyan-400 [.gradient_&amp;]:group-hover:text-pink-500" href="/blog/from-pretraining-to-peft-complete-guide">从预训练到参数高效微调:LoRA、Adapter 与 QLoRA 完全指南</a></h3><div class="mt-2 flex flex-wrap gap-2"><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/ai">AI</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/llm">LLM</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/fine-tuning">Fine-tuning</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/lora">LoRA</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/qlora">QLoRA</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/adapter">Adapter</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/pytorch">PyTorch</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/huggingface">HuggingFace</a><a class="mr-3 text-sm font-medium uppercase text-primary-500 hover:text-primary-600 dark:hover:text-primary-400 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" href="/tags/deep-learning">Deep-Learning</a></div></div><div class="prose max-w-none text-gray-500 dark:text-gray-400">一篇从零开始的完整教程:从理解HuggingFace推理、预训练LLM、全量微调,到参数高效微调方法(Adapter、LoRA、QLoRA)的深度解析。包含大量PyTorch代码实现、数学原理和对比实验。</div></div><div class="text-base font-medium leading-6"><a class="inline-flex items-center space-x-2 text-primary-500 transition-all duration-300 hover:text-primary-600 group-hover:text-primary-600 dark:text-primary-400 dark:hover:text-primary-300 dark:group-hover:text-primary-300 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600 [.gradient_&amp;]:group-hover:text-pink-600" aria-label="Read more: &quot;从预训练到参数高效微调:LoRA、Adapter 与 QLoRA 完全指南&quot;" href="/blog/from-pretraining-to-peft-complete-guide"><span>Read more</span><svg class="h-4 w-4 transition-transform duration-300 group-hover:translate-x-1" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path></svg></a></div></div></div></div></article></li></ul></div><div class="flex justify-end pt-6 text-base font-medium leading-6"><a class="group inline-flex items-center space-x-2 font-semibold text-primary-500 transition-colors duration-300 hover:text-primary-600 dark:text-primary-400 dark:hover:text-primary-300 [.gradient_&amp;]:text-pink-500 [.gradient_&amp;]:hover:text-pink-600" aria-label="All posts" href="/blog"><span>All Posts</span><svg class="h-4 w-4 transition-transform duration-300 group-hover:translate-x-1" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8l4 4m0 0l-4 4m4-4H3"></path></svg></a></div><div class="mt-12 flex items-center justify-center"><div class="w-full max-w-md rounded-[28px] bg-gradient-to-br from-[#fef3ff] via-[#eef3ff] to-[#e0f7ff] p-8 shadow-2xl dark:from-[#080b
118] dark:via-[#10142f] dark:to-[#1d1f3d]"><h3 class="mb-4 text-center text-xl font-bold text-gray-900 dark:text-gray-100">Subscribe to Newsletter</h3><div><div class="pb-1 text-lg font-semibold text-gray-800 dark:text-gray-100">Subscribe to the newsletter</div><form class="flex flex-col sm:flex-row"><div><label for="email-input"><span class="sr-only">Email address</span><input id="email-input" type="email" autoComplete="email" required="" placeholder="Enter your email" class="w-72 rounded-md px-4 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-primary-600 dark:bg-black [.gradient_&amp;]:focus:ring-pink-600" name="email"/></label></div><div class="mt-2 flex w-full rounded-md shadow-sm sm:ml-3 sm:mt-0"><button type="submit" class="w-full rounded-md bg-primary-500 px-4 py-2 font-medium text-white focus:outline-none focus:ring-2 focus:ring-primary-600 focus:ring-offset-2 dark:ring-offset-black sm:py-0 [.gradient_&amp;]:bg-pink-500 [.gradient_&amp;]:focus:ring-pink-600 hover:bg-primary-700 dark:hover:bg-primary-400 [.gradient_&amp;]:hover:bg-pink-600 dark:[.gradient_&amp;]:hover:bg-pink-400">Sign up</button></div></form></div></div></div></main><footer><div class="mt-16 flex flex-col items-center"><div class="mb-3 flex space-x-4"><a class="text-sm text-gray-500 transition hover:text-gray-600" target="_blank" rel="noopener noreferrer" href="/cdn-cgi/l/email-protection#6d1a155b585a5e54595858592d5c5b5e430e0200"><span class="sr-only">mail</span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" class="fill-current text-gray-700 hover:text-primary-500 dark:text-gray-200 dark:hover:text-primary-400 [.gradient_&amp;]:hover:text-pink-500 h-6 w-6"><title>Mail</title><path d="M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z"></path><path d="M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z"></path></svg></a><a class="text-sm text-gray-500 transition hover:text-gray-600" target="_blank" rel="noopener noreferrer" href="https://github.com/kkkano"><span class="sr-only">github</span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="fill-current text-gray-700 hover:text-primary-500 dark:text-gray-200 dark:hover:text-primary-400 [.gradient_&amp;]:hover:text-pink-500 h-6 w-6"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"></path></svg></a><a class="text-sm text-gray-500 transition hover:text-gray-600" target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/in/AllenWangQWQ/"><span class="sr-only">linkedin</span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" class="fill-current text-gray-700 hover:text-primary-500 dark:text-gray-200 dark:hover:text-primary-400 [.gradient_&amp;]:hover:text-pink-500 h-6 w-6"><title>Linkedin</title><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path></svg></a></div><div class="mb-2 flex space-x-2 text-sm text-gray-500 dark:text-gray-400"><div>Allen Wang</div><div> • </div><div>© 2026</div><div> • </div><a class="break-words" href="/">Allen&#x27;s Blog</a></div><div class="mb-8 text-sm text-gray-500 dark:text-gray-400"><a class="break-words" target="_blank" rel="noopener noreferrer" href="https://github.com/timlrx/tailwind-nextjs-starter-blog">Tailwind Nextjs Theme</a></div></div></footer></section>
vendor: 108 bytes, line 1
1<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1<script src="/_next/static/chunks/webpack-8fdb236ec2168770.js" async=""></script>
1<script>(self.__next_f=self.__next_f||[]).push([0])</script>
1<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[79025,[\"2545\",\"static/chunks/c16f53c3-bcb242d5373a2eb6.js\",\"8173\",\"static/chunks/8173-dd19265b6e755bd2.js\",\"9053\",\"static/chunks/9053-17631ffe2296bc6f.js\",\"7177\",\"static/chunks/app/layout-b446072e2cbeff84.js\"],\"ThemeProviders\"]\n3:I[91777,[\"2545\",\"static/chunks/c16f53c3-bcb242d5373a2eb6.js\",\"8173\",\"static/chunks/8173-dd19265b6e755bd2.js\",\"9053\",\"static/chunks/9053-17631ffe2296bc6f.js\",\"7177\",\"static/chunks/app/layout-b446072e2cbeff84.js\"],\"default\"]\n4:I[53704,[\"2545\",\"static/chunks/c16f53c3-bcb242d5373a2eb6.js\",\"8173\",\"static/chunks/8173-dd19265b6e755bd2.js\",\"9053\",\"static/chunks/9053-17631ffe2296bc6f.js\",\"7177\",\"static/chunks/app/layout-b446072e2cbeff84.js\"],\"\"]\n5:I[17969,[\"2545\",\"static/chunks/c16f53c3-bcb242d5373a2eb6.js\",\"8173\",\"static/chunks/8173-dd19265b6e755bd2.js\",\"9053\",\"static/chunks/9053-17631ffe2296bc6f.js\",\"7177\",\"static/chunks/app/layout-b446072e2cbeff84.js\"],\"KBarSearchProvider\"]\n6:I[48370,[\"2545\",\"static/chunks/c16f53c3-bcb242d5373a2eb6.js\",\"8173\",\"static/chunks/8173-dd19265b6e755bd2.js\",\"9053\",\"static/chunks/9053-17631ffe2296bc6f.js\",\"7177\",\"static/chunks/app/layout-b446072e2cbeff84.js\"],\"default\"]\n7:I[15244,[],\"\"]\n8:I[43866,[],\"\"]\n9:I[48173,[\"2545\",\"static/chunks/c16f53c3-bcb242d5373a2eb6.js\",\"8173\",\"static/chunks/8173-dd19265b6e755bd2.js\",\"9053\",\"static/chunks/9053-17631ffe2296bc6f.js\",\"7177\",\"static/chunks/app/layout-b446072e2cbeff84.js\"],\"\"]\nb:I[86213,[],\"OutletBoundary\"]\nd:I[86213,[],\"MetadataBoundary\"]\nf:I[86213,[],\"ViewportBoundary\"]\n11:I[34835,[],\"\"]\n:HL[\"/_next/static/media/36966cca54120369-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/edd057d2e5463fc6.css\",\"style\"]\n:HL[\"/_next/static/css/bfa508b90d32aeb2.css\",\"style\"]\n"])</script>
1<script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"RWY4UQ__Wb-HDmoexJKDz\",\"p\":\"\",\"c\":[\"\",\"\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/edd057d2e5463fc6.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/bfa508b90d32aeb2.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en-us\",\"className\":\"__variable_dd5b2f scroll-smooth\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"/static/favicons/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"sizes\":\"76x76\",\"href\":\"/static/favicons/apple-touch-icon.png\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"32x32\",\"href\":\"/static/favicons/favicon-32x32.png\"}],[\"$\",\"link\",null,{\"rel\":\"icon\",\"type\":\"image/png\",\"sizes\":\"16x16\",\"href\":\"/static/favicons/favicon-16x16.png\"}],[\"$\",\"link\",null,{\"rel\":\"manifest\",\"href\":\"/static/favicons/site.webmanifest\"}],[\"$\",\"link\",null,{\"rel\":\"mask-icon\",\"href\":\"/static/favicons/safari-pinned-tab.svg\",\"color\":\"#5bbad5\"}],[\"$\",\"meta\",null,{\"name\":\"msapplication-TileColor\",\"content\":\"#000000\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"media\":\"(prefers-color-scheme: light)\",\"content\":\"#fff\"}],[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"media\":\"(prefers-color-scheme: dark)\",\"content\":\"#000\"}],[\"$\",\"link\",null,{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"/feed.xml\"}],[\"$\",\"body\",null,{\"className\":\"bg-white pl-[calc(100vw-100%)] text-black antialiased dark:bg-gray-950 dark:text-white [.gradient_\u0026]:bg-gradient-to-br [.gradient_\u0026]:from-[#fffcfd] [.gradient_\u0026]:via-[#fffbfe] [.gradient_\u0026]:to-[#fafbff] dark:[.gradient_\u0026]:from-[#0f0510] dark:[.gradient_\u0026]:via-[#0a0818] dark:[.gradient_\u0026]:to-[#080d1a]\",\"children\":[\"$\",\"$L2\",null,{\"children\":[[\"$\",\"$L3\",null,{}],[\"$undefined\",\"$undefined\",\"$undefined\",[\"$\",\"$L4\",null,{\"async\":true,\"defer\":true,\"src\":\"https://analytics.umami.is/script.js\"}],\"$undefined\",\"$undefined\"],[\"$\",\"section\",null,{\"className\":\"mx-auto max-w-3xl px-4 sm:px-6 xl:max-w-5xl xl:px-0\",\"children\":[[\"$\",\"$L5\",null,{\"kbarConfig\":{\"searchDocumentsPath\":\"/search.json\"},\"children\":[[\"$\",\"$L6\",null,{}],[\"$\",\"main\",null,{\"className\":\"mb-auto\",\"children\":[\"$\",\"$L7\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L8\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[],[\"$\",\"div\",null,{\"className\":\"flex flex-col items-start justify-start md:mt-24 md:flex-row md:items-center md:justify-center md:space-x-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"space-x-2 pb-8 pt-6 md:space-y-5\",\"children\":[\"$\",\"h1\",null,{\"className\":\"text-6xl font-extrabold leading-9 tracking-tight text-gray-900 dark:text-gray-100 md:border-r-2 md:px-6 md:text-8xl md:leading-14\",\"children\":\"404\"}]}],[\"$\",\"div\",null,{\"className\":\"max-w-md\",\"children\":[[\"$\",\"p\",null,{\"className\":\"mb-4 text-xl font-bold leading-normal md:text-2xl\",\"children\":\"Sorry we couldn't find this page.\"}],[\"$\",\"p\",null,{\"className\":\"mb-8\",\"children\":\"But dont worry, you can find plenty of other things on our homepage.\"}],[\"$\",\"$L9\",null,{\"className\":\"focus:shadow-outline-blue inline rounded-lg border border-transparent bg-primary-500 px-4 py-2 text-sm font-medium leading-5 text-white shadow transition-colors duration-150 hover:bg-primary-600 focus:outline-none dark:hover:bg-primary-400 [.gradient_\u0026]:bg-pink-500 [.gradient_\u0026]:hover:bg-pink-600 dark:[.gradient_\u0026]:hover:bg-pink-400\",\"href\":\"/\",\"children\":\"Back to homepage\"}]]}]]}]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}],[\"$\",\"footer\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"mt-16 flex flex-col items-center\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-3 flex space-x-4\",\"children\":[[\"$\",\"a\",null,{\"className\":\"text-sm text-gray-500 transition hover:text-gray-600\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"href\":\"mailto:[email protected]\",\"children\":[[\"$\",\"span\",null,{\"className\":\"sr-only\",\"children\":\"mail\"}],[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 20 20\",\"className\":\"fill-current text-gray-700 hover:text-primary-500 dark:text-gray-200 dark:hover:text-primary-400 [.gradient_\u0026]:hover:text-pink-500 h-6 w-6\",\"children\":[[\"$\",\"title\",null,{\"children\":\"Mail\"}],[\"$\",\"path\",null,{\"d\":\"M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z\"}],[\"$\",\"path\",null,{\"d\":\"M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z\"}]]}]]}],[\"$\",\"a\",null,{\"className\":\"text-sm text-gray-500 transition hover:text-gray-600\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"href\":\"https://github.com/kkkano\",\"children\":[[\"$\",\"span\",null,{\"className\":\"sr-only\",\"children\":\"github\"}],[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"className\":\"fill-current text-gray-700 hover:text-primary-500 dark:text-gray-200 dark:hover:text-primary-400 [.gradient_\u0026]:hover:text-pink-500 h-6 w-6\",\"children\":[[\"$\",\"title\",null,{\"children\":\"GitHub\"}],[\"$\",\"path\",null,{\"d\":\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"}]]}]]}],null,null,[\"$\",\"a\",null,{\"className\":\"text-sm text-gray-500 transition hover:text-gray-600\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"href\":\"https://www.linkedin.com/in/AllenWangQWQ/\",\"children\":[[\"$\",\"span\",null,{\"className\":\"sr-only\",\"children\":\"linkedin\"}],[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"className\":\"fill-current text-gray-700 hover:text-primary-500 dark:text-gray-200 dark:hover:text-primary-400 [.gradient_\u0026]:hover:text-pink-500 h-6 w-6\",\"children\":[[\"$\",\"title\",null,{\"children\":\"Linkedin\"}],[\"$\",\"path\",null,{\"d\":\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z\"}]]}]]}],null,null,null,null,null,null]}],[\"$\",\"div\",null,{\"className\":\"mb-2 flex space-x-2 text-sm text-gray-500 dark:text-gray-400\",\"children\":[[\"$\",\"div\",null,{\"children\":\"Allen Wang\"}],[\"$\",\"div\",null,{\"children\":\" • \"}],[\"$\",\"div\",null,{\"children\":\"© 2026\"}],[\"$\",\"div\",null,{\"children\":\" • \"}],[\"$\",\"$L9\",null,{\"className\":\"break-words\",\"href\":\"/\",\"children\":\"Allen's Blog\"}]]}],[\"$\",\"div\",null,{\"className\":\"mb-8 text-sm text-gray-500 dark:text-gray-400\",\"children\":[\"$\",\"a\",null,{\"className\":\"break-words\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"href\":\"https://github.com/timlrx/tailwind-nextjs-starter-blog\",\"children\":\"Tailwind Nextjs Theme\"}]}]]}]}]]}]]}]}]]}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[\"$La\",null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}]]}],{}
1,null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$1\",\"dydX3TMSGy3Y7f-r1FwqK\",{\"children\":[[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"$Lf\",null,{\"children\":\"$L10\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",\"$undefined\"],\"s\":false,\"S\":true}\n"])</script>
1<script>self.__next_f.push([1,"12:I[11417,[\"8173\",\"static/chunks/8173-dd19265b6e755bd2.js\",\"8974\",\"static/chunks/app/page-5b2aa95121ded5ff.js\"],\"default\"]\n"])</script>
1<script>self.__next_f.push([1,"a:[\"$\",\"$L12\",null,{\"posts\":[{\"title\":\"国庆闲着,点开了一节心理学课\",\"date\":\"2026-10-01T00:00:00.000Z\",\"tags\":[\"writings\",\"Psychology\",\"Logic\",\"AI\",\"career\"],\"draft\":false,\"comments\":true,\"summary\":\"本来只是想学点心理学和逻辑学,结果变成了一次对自己的线上排障:打 log、挖根因、逐段测试,最后开始怀疑,要补的也许不只是能力,还有与人的连接。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"25 min read\",\"minutes\":24.58,\"time\":1474800,\"words\":4916},\"slug\":\"national-day-psychology-class\",\"path\":\"blog/national-day-psychology-class\",\"filePath\":\"blog/national-day-psychology-class.mdx\",\"toc\":[{\"value\":\"写在前面\",\"url\":\"#写在前面\",\"depth\":2},{\"value\":\"一、第一条告警:一份问卷\",\"url\":\"#一第一条告警一份问卷\",\"depth\":2},{\"value\":\"二、开始到处打 log\",\"url\":\"#二开始到处打-log\",\"depth\":2},{\"value\":\"三、垂直箭头:一路挖到底\",\"url\":\"#三垂直箭头一路挖到底\",\"depth\":2},{\"value\":\"四、但——我当场就反驳了\",\"url\":\"#四但我当场就反驳了\",\"depth\":2},{\"value\":\"五、\\\"如果有成百上千条呢\\\"\",\"url\":\"#五如果有成百上千条呢\",\"depth\":2},{\"value\":\"六、只要能力够了就行吗\",\"url\":\"#六只要能力够了就行吗\",\"depth\":2},{\"value\":\"七、一条被过滤掉的数据\",\"url\":\"#七一条被过滤掉的数据\",\"depth\":2},{\"value\":\"八、遗留代码能重构吗\",\"url\":\"#八遗留代码能重构吗\",\"depth\":2},{\"value\":\"九、一个被纠正的偏见\",\"url\":\"#九一个被纠正的偏见\",\"depth\":2},{\"value\":\"写在最后\",\"url\":\"#写在最后\",\"depth\":2},{\"value\":\"附:几道直觉陷阱题\",\"url\":\"#附几道直觉陷阱题\",\"depth\":2},{\"value\":\"1. 三门问题\",\"url\":\"#1-三门问题\",\"depth\":3},{\"value\":\"2. 体检阳性\",\"url\":\"#2-体检阳性\",\"depth\":3},{\"value\":\"3. 琳达问题\",\"url\":\"#3-琳达问题\",\"depth\":3},{\"value\":\"4. 生日问题\",\"url\":\"#4-生日问题\",\"depth\":3}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"国庆闲着,点开了一节心理学课\",\"datePublished\":\"2026-10-01T00:00:00.000Z\",\"dateModified\":\"2026-10-01T00:00:00.000Z\",\"description\":\"本来只是想学点心理学和逻辑学,结果变成了一次对自己的线上排障:打 log、挖根因、逐段测试,最后开始怀疑,要补的也许不只是能力,还有与人的连接。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/national-day-psychology-class\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"每次用 AI 做完东西,我都会问:这还算我做的吗?\",\"date\":\"2026-04-19T00:00:00.000Z\",\"tags\":[\"writings\",\"AI\",\"career\",\"Vibe Coding\"],\"draft\":false,\"comments\":true,\"summary\":\"刚从大公司跳到电商公司,第一次接到内部知识库需求。我的本能:LangChain + RAGFlow + 自建。同事的做法:开源 MCP + 飞书同步。我盯着屏幕自问——一行核心代码都没手写,这东西还算「我做的」吗?\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"23 min read\",\"minutes\":22.01,\"time\":1320600,\"words\":4402},\"slug\":\"what-counts-as-my-code-in-ai-era\",\"path\":\"blog/what-counts-as-my-code-in-ai-era\",\"filePath\":\"blog/what-counts-as-my-code-in-ai-era.mdx\",\"toc\":[{\"value\":\"写在前面\",\"url\":\"#写在前面\",\"depth\":2},{\"value\":\"一、一个让我卡住的需求\",\"url\":\"#一一个让我卡住的需求\",\"depth\":2},{\"value\":\"二、同事一句话把我打回原型\",\"url\":\"#二同事一句话把我打回原型\",\"depth\":2},{\"value\":\"三、然后我盯着屏幕看了很久\",\"url\":\"#三然后我盯着屏幕看了很久\",\"depth\":2},{\"value\":\"四、L1 到 L5 —— 一个程度量表\",\"url\":\"#四l1-到-l5--一个程度量表\",\"depth\":2}
1,{\"value\":\"五、第一次修正:临时性 vs 生产性\",\"url\":\"#五第一次修正临时性-vs-生产性\",\"depth\":2},{\"value\":\"六、第二次修正:领域深度 vs 领域宽度\",\"url\":\"#六第二次修正领域深度-vs-领域宽度\",\"depth\":2},{\"value\":\"七、真正的判断尺:三条\",\"url\":\"#七真正的判断尺三条\",\"depth\":2},{\"value\":\"八、但——AI 越强 = 不用懂代码?错\",\"url\":\"#八但ai-越强--不用懂代码错\",\"depth\":2},{\"value\":\"九、糊弄是合法选择,但别既要又要\",\"url\":\"#九糊弄是合法选择但别既要又要\",\"depth\":2},{\"value\":\"十、当所有模块都\\\"乐高化\\\"——我还剩什么?\",\"url\":\"#十当所有模块都乐高化我还剩什么\",\"depth\":2},{\"value\":\"十一、新定义:什么叫\\\"在写代码\\\"\",\"url\":\"#十一新定义什么叫在写代码\",\"depth\":2},{\"value\":\"十二、但——\\\"写判断\\\"有一个隐含前提\",\"url\":\"#十二但写判断有一个隐含前提\",\"depth\":2},{\"value\":\"十三、写在最后\",\"url\":\"#十三写在最后\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"每次用 AI 做完东西,我都会问:这还算我做的吗?\",\"datePublished\":\"2026-04-19T00:00:00.000Z\",\"dateModified\":\"2026-04-19T00:00:00.000Z\",\"description\":\"刚从大公司跳到电商公司,第一次接到内部知识库需求。我的本能:LangChain + RAGFlow + 自建。同事的做法:开源 MCP + 飞书同步。我盯着屏幕自问——一行核心代码都没手写,这东西还算「我做的」吗?\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/what-counts-as-my-code-in-ai-era\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"从零部署 OpenClaw 到 Telegram 的完整记录\",\"date\":\"2026-02-22T00:00:00.000Z\",\"tags\":[\"AI\",\"OpenClaw\",\"Telegram Bot\",\"DevOps\",\"self-hosted\"],\"draft\":false,\"comments\":true,\"summary\":\"一篇完整的 OpenClaw 部署记录:从腾讯云服务器搭建、Docker 构建、GFW 绕行(Xray + Chromium 包装脚本翻墙)、Telegram Bot 接入、161 个 Skills 同步、记忆系统配置(远程 embedding 失败 → hf-mirror.com 镜像下载 → 本地 node-llama-cpp 模型)、浏览器自动化(/dev/shm OOM、SingletonLock 残留、CDP 端口推导、Chrome Profile 自动选择陷阱、Playwright snapshot 验证、GFW 导航超时根因分析),到 Claude Code 与 Telegram Bot 的双向记忆同步架构(SQLite → Markdown 导出 → GitHub 私有仓库 → cron 定时推送)。踩了 21 个坑,每个都有完整的根因分析。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"53 min read\",\"minutes\":52.62,\"time\":3157200,\"words\":10524},\"slug\":\"openclaw-deployment-blog\",\"path\":\"blog/openclaw-deployment-blog\",\"filePath\":\"blog/openclaw-deployment-blog.mdx\",\"toc\":[{\"value\":\"写在前面\",\"url\":\"#写在前面\",\"depth\":2},{\"value\":\"部署时间线\",\"url\":\"#部署时间线\",\"depth\":3},{\"value\":\"一、架构总览\",\"url\":\"#一架构总览\",\"depth\":2},{\"value\":\"二、服务器准备\",\"url\":\"#二服务器准备\",\"depth\":2},{\"value\":\"2.1 腾讯云轻量服务器\",\"url\":\"#21-腾讯云轻量服务器\",\"depth\":3},{\"value\":\"2.2 基础环境\",\"url\":\"#22-基础环境\",\"depth\":3},{\"value\":\"2.3 拉取 OpenClaw 源码\",\"url\":\"#23-拉取-openclaw-源码\",\"depth\":3},{\"value\":\"三、Docker 构建与配置\",\"url\":\"#三docker-构建与配置\",\"depth\":2},{\"value\":\"3.1 构建 Docker 镜像\",\"url\":\"#31-构建-docker-镜像\",\"depth\":3},{\"value\":\"3.2 Docker Compose 配置\",\"url\":\"#32-docker-compose-配置\",\"depth\":3},{\"value\":\"3.3 OpenClaw 核心配置\",\"url\":\"#33-openclaw-核心配置\",\"depth\":3},{\"value\":\"四、Telegram Bot 接入\",\"url\":\"#四telegram-bot-接入\",\"depth\":2},{\"value\":\"4.1 创建 Bot\",\"url\":\"#41-创建-bot\",\"depth\":3},{\"value\":\"4.2 GFW 绕行:Cloudflare Pages 反代\",\"url\":\"#42-gfw-绕行cloudflare-pages-反代\",\"depth\":3},{\"value\":\"4.3 配置 Telegram Channel\",\"url\":\"#43-配置-telegram-channel\",\"depth\":3},{\"value\":\"五、人格注入:SOUL.md\",\"url\":\"#五人格注入soulmd\",\"depth\":2},{\"value\":\"六、Skills 同步:从 3 到 161\",\"url\":\"#六skills-同步从-3-到-161\",\"depth\":2},{\"value\":\"6.1 发现问题\",\"url\":\"#61-发现问题\",\"depth\":3},{\"value\":\"6.2 上传 Skills 后的进展\",\"url\":\"#62-上传-skills-后的进展\",\"depth\":3},{\"value\":\"6.3 递归同步脚本\",\"url\":\"#63-递归同步脚本\",\"depth\":3},{\"value\":\"6.4 解除 Skills 限制\",\"url\":\"#64-解除-skills-限制\",\"depth\":3},{\"value\":\"6.5 Telegram 命令数限制\",\"url\":\"#65-telegram-命令数限制\",\"depth\":3},{\"value\":\"七、记忆系统:从\\\"没有索引命中\\\"到向量搜索\",\"url\":\"#七记忆系统从没有索引命中到向量搜索\",\"depth\":2},{\"value\":\"7.1 问题现象\",\"url\":\"#71-问题现象\",\"depth\":3},{\"value\":\"7.2 根因分析\",\"url\":\"#72-根因分析\",\"depth\":3},{\"value\":\"7.3 第一次尝试:远程 embedding(失败)\",\"url\":\"#73-第一次尝试远程-embedding失败\",\"depth\":3},{\"value\":\"7.4 最终方案:本地 embedding 模型\",\"url\":\"#74-最终方案本地-embedding-模型\",\"depth\":3},{\"value\":\"7.5 记忆文件组织\",\"url\":\"#75-记忆文件组织\",\"depth\":3},{\"value\":\"八、浏览器自动化:两只猫搞不定一个 Chrome\",\"url\":\"#八浏览器自动化两只猫搞不定一个-chrome\",\"depth\":2},{\"value\":\"8.1 起因:想让 Bot 自己去逛网页\",\"url\":\"#81-起因想让-bot-自己去逛网页\",\"depth\":3},{\"value\":\"8.2 安装 Chromium\",\"url\":\"#82-安装-chromium\",\"depth\":3},{\"value\":\"8.3 配置 executablePath\",\"url\":\"#83-配置-executablepath\",\"depth\":3},{\"value\":\"8.4 /dev/shm 导致 OOM 崩溃\",\"url\":\"#84-devshm-导致-oom-崩溃\",\"depth\":3},{\"value\":\"8.5 容器重建后 Chrome 再也起不来\",\"url\":\"#85-容器重建后-chrome-再也起不来\",\"depth\":3},{\"value\":\"永久修复:post-start.sh\",\"url\":\"#永久修复post-startsh\",\"depth\":4}
1,{\"value\":\"8.6 能启动但 Snapshot 超时\",\"url\":\"#86-能启动但-snapshot-超时\",\"depth\":3},{\"value\":\"端口推导链(很容易搞混)\",\"url\":\"#端口推导链很容易搞混\",\"depth\":4},{\"value\":\"Snapshot 方法验证\",\"url\":\"#snapshot-方法验证\",\"depth\":4},{\"value\":\"8.7 GFW 导航超时——真正的 Boss\",\"url\":\"#87-gfw-导航超时真正的-boss\",\"depth\":3},{\"value\":\"8.8 方案二:Cloudflare WARP(失败)\",\"url\":\"#88-方案二cloudflare-warp失败\",\"depth\":3},{\"value\":\"8.9 方案一:Xray + Clash 订阅(成功)\",\"url\":\"#89-方案一xray--clash-订阅成功\",\"depth\":3},{\"value\":\"8.10 Chromium 代理包装脚本\",\"url\":\"#810-chromium-代理包装脚本\",\"depth\":3},{\"value\":\"8.11 Chrome Profile 自动选择陷阱——最后的 Boss\",\"url\":\"#811-chrome-profile-自动选择陷阱最后的-boss\",\"depth\":3},{\"value\":\"根因:OpenClaw 有两个浏览器 Profile\",\"url\":\"#根因openclaw-有两个浏览器-profile\",\"depth\":4},{\"value\":\"第一次修复:设置 defaultProfile\",\"url\":\"#第一次修复设置-defaultprofile\",\"depth\":4},{\"value\":\"最终修复:两个 Profile 都指向 CDP\",\"url\":\"#最终修复两个-profile-都指向-cdp\",\"depth\":4},{\"value\":\"验证全链路\",\"url\":\"#验证全链路\",\"depth\":4},{\"value\":\"九、Compaction 与记忆持久化\",\"url\":\"#九compaction-与记忆持久化\",\"depth\":2},{\"value\":\"十、工具链配置\",\"url\":\"#十工具链配置\",\"depth\":2},{\"value\":\"10.1 Web Search\",\"url\":\"#101-web-search\",\"depth\":3},{\"value\":\"10.2 命令执行\",\"url\":\"#102-命令执行\",\"depth\":3},{\"value\":\"10.3 多媒体支持\",\"url\":\"#103-多媒体支持\",\"depth\":3},{\"value\":\"十一、国内网络问题汇总\",\"url\":\"#十一国内网络问题汇总\",\"depth\":2},{\"value\":\"十二、启动与验证\",\"url\":\"#十二启动与验证\",\"depth\":2},{\"value\":\"12.1 启动容器\",\"url\":\"#121-启动容器\",\"depth\":3},{\"value\":\"12.2 检查日志\",\"url\":\"#122-检查日志\",\"depth\":3},{\"value\":\"12.3 Telegram 测试\",\"url\":\"#123-telegram-测试\",\"depth\":3},{\"value\":\"十三、踩坑总结\",\"url\":\"#十三踩坑总结\",\"depth\":2},{\"value\":\"十四、配置文件速查\",\"url\":\"#十四配置文件速查\",\"depth\":2},{\"value\":\"宿主机(175.178.xxx.xxx)\",\"url\":\"#宿主机175178xxxxxx\",\"depth\":3},{\"value\":\"容器内(openclaw-openclaw-gateway-1)\",\"url\":\"#容器内openclaw-openclaw-gateway-1\",\"depth\":3},{\"value\":\"本地开发机\",\"url\":\"#本地开发机\",\"depth\":3},{\"value\":\"十五、运维脚本\",\"url\":\"#十五运维脚本\",\"depth\":2},{\"value\":\"十六、记忆同步架构\",\"url\":\"#十六记忆同步架构\",\"depth\":2},{\"value\":\"16.1 记忆存储格式\",\"url\":\"#161-记忆存储格式\",\"depth\":3},{\"value\":\"16.2 同步架构\",\"url\":\"#162-同步架构\",\"depth\":3},{\"value\":\"16.3 同步脚本\",\"url\":\"#163-同步脚本\",\"depth\":3},{\"value\":\"16.4 Claude Code 侧怎么用\",\"url\":\"#164-claude-code-侧怎么用\",\"depth\":3},{\"value\":\"16.5 为什么不直接共享 SQLite\",\"url\":\"#165-为什么不直接共享-sqlite\",\"depth\":3},{\"value\":\"16.6 完整同步链路\",\"url\":\"#166-完整同步链路\",\"depth\":3},{\"value\":\"16.7 记忆互写——让两个浮浮酱认识彼此\",\"url\":\"#167-记忆互写让两个浮浮酱认识彼此\",\"depth\":3},{\"value\":\"十七、还可以做什么\",\"url\":\"#十七还可以做什么\",\"depth\":2},{\"value\":\"十八、Day 4:API 限流、Strict Schema,以及\\\"配置键写错直接炸容器\\\"\",\"url\":\"#十八day-4api-限流strict-schema以及配置键写错直接炸容器\",\"depth\":2},{\"value\":\"18.1 x666.me 的 18 次/5 分钟限流\",\"url\":\"#181-x666me-的-18-次5-分钟限流\",\"depth\":3},{\"value\":\"18.2 真的生效的配置路径(写错就炸)\",\"url\":\"#182-真的生效的配置路径写错就炸\",\"depth\":3},{\"value\":\"18.3 DeepWiki 文档的坑\",\"url\":\"#183-deepwiki-文档的坑\",\"depth\":3},{\"value\":\"十九、Day 4:反代 Claude 接入,以及\\\"身份串味\\\"\",\"url\":\"#十九day-4反代-claude-接入以及身份串味\",\"depth\":2},{\"value\":\"19.1 为什么会串味\",\"url\":\"#191-为什么会串味\",\"depth\":3},{\"value\":\"19.2 三层环境注入\",\"url\":\"#192-三层环境注入\",\"depth\":3},{\"value\":\"二十、Day 4:Subagent 拉不起来——最后发现是权限 scope 缺了\",\"url\":\"#二十day-4subagent-拉不起来最后发现是权限-scope-缺了\",\"depth\":2},{\"value\":\"20.1 thinking 档位也有坑:xhigh 不是谁都能用\",\"url\":\"#201-thinking-档位也有坑xhigh-不是谁都能用\",\"depth\":3},{\"value\":\"二十一、Day 4:openclaw.json 被\\\"写坏了\\\"\",\"url\":\"#二十一day-4openclawjson-被写坏了\",\"depth\":2},{\"value\":\"二十二、Day 4 小结\",\"url\":\"#二十二day-4-小结\",\"depth\":2},{\"value\":\"写在最后\",\"url\":\"#写在最后\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"从零部署 OpenClaw 到 Telegram 的完整记录\",\"datePublished\":\"2026-02-22T00:00:00.000Z\",\"dateModified\":\"2026-02-22T00:00:00.000Z\",\"description\":\"一篇完整的 OpenClaw 部署记录:从腾讯云服务器搭建、Docker 构建、GFW 绕行(Xray + Chromium 包装脚本翻墙)、Telegram Bot 接入、161 个 Skills 同步、记忆系统配置(远程 embedding 失败 → hf-mirror.com 镜像下载 → 本地 node-llama-cpp 模型)、浏览器自动化(/dev/shm OOM、SingletonLock 残留、CDP 端口推导、Chrome Profile 自动选择陷阱、Playwright snapshot 验证、GFW 导航超时根因分析),到 Claude Code 与 Telegram Bot 的双向记忆同步架构(SQLite → Markdown 导出 → GitHub 私有仓库 → cron 定时推送)。踩了 21 个坑,每个都有完整的根因分析。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/openclaw-deployment-blog\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"Transformer 完全指南:从注意力机制到 GPT/DeepSeek 架构,再到 LLM 使用技巧\",\"date\":\"2026-02-09T00:00:00.000Z\",\"tags\":[\"AI\",\"Transformer\",\"Attention\",\"Self-Attention\",\"BERT\",\"GPT\",\"NLP\",\"PyTorch\",\"Deep Learning\"],\"draft\":false,\"comments\":true,\"summary\":\"最全面的 Transformer 中文教程:从注意力直觉到 Q/K/V 手算,从多头注意力到位置编码,从 Encoder-Decoder 到 PyTorch 实现。涵盖 GPT-4/Claude/DeepSeek/LLaMA 架构对比、LLM 使用技巧的 Transformer 原理解析、2025-2026 前沿趋势(FlashAttention、Mamba/SSM、MoE),附 10 个交互式可视化和完整代码。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"105 min read\",\"minutes\":104.475,\"time\":6268500,\"words\":20895}
1,\"slug\":\"transformer-complete-guide\",\"path\":\"blog/transformer-complete-guide\",\"filePath\":\"blog/transformer-complete-guide.mdx\",\"toc\":[{\"value\":\"Transformer 完全指南:从注意力机制到 GPT/DeepSeek 架构,再到 LLM 使用技巧\",\"url\":\"#transformer-完全指南从注意力机制到-gptdeepseek-架构再到-llm-使用技巧\",\"depth\":1},{\"value\":\"📑 目录\",\"url\":\"#-目录\",\"depth\":2},{\"value\":\"一、为什么需要 Transformer?\",\"url\":\"#一为什么需要-transformer\",\"depth\":2},{\"value\":\"1.1 RNN 的三大痛点\",\"url\":\"#11-rnn-的三大痛点\",\"depth\":3},{\"value\":\"1.2 Transformer 的革命性思想\",\"url\":\"#12-transformer-的革命性思想\",\"depth\":3},{\"value\":\"二、注意力机制:从\\\"查字典\\\"说起\",\"url\":\"#二注意力机制从查字典说起\",\"depth\":2},{\"value\":\"2.1 直觉类比:查字典\",\"url\":\"#21-直觉类比查字典\",\"depth\":3},{\"value\":\"2.2 从字典到注意力的数学\",\"url\":\"#22-从字典到注意力的数学\",\"depth\":3},{\"value\":\"2.3 自注意力:自己查自己的字典\",\"url\":\"#23-自注意力自己查自己的字典\",\"depth\":3},{\"value\":\"2.4 注意力的不对称性\",\"url\":\"#24-注意力的不对称性\",\"depth\":3},{\"value\":\"2.5 常见坑点\",\"url\":\"#25-常见坑点\",\"depth\":3},{\"value\":\"三、Q、K、V 矩阵运算:注意力的数学实现\",\"url\":\"#三qkv-矩阵运算注意力的数学实现\",\"depth\":2},{\"value\":\"3.1 直觉:同一个输入的\\\"三重人格\\\"\",\"url\":\"#31-直觉同一个输入的三重人格\",\"depth\":3},{\"value\":\"3.2 现实例子:一步步算注意力\",\"url\":\"#32-现实例子一步步算注意力\",\"depth\":3},{\"value\":\"3.3 用 PyTorch nn.Linear 的优雅写法\",\"url\":\"#33-用-pytorch-nnlinear-的优雅写法\",\"depth\":3},{\"value\":\"3.4 常见坑点\",\"url\":\"#34-常见坑点\",\"depth\":3},{\"value\":\"四、缩放点积注意力:为什么要除以 √d_k\",\"url\":\"#四缩放点积注意力为什么要除以-d_k\",\"depth\":2},{\"value\":\"4.1 直觉类比:音量调节旋钮 🔊\",\"url\":\"#41-直觉类比音量调节旋钮-\",\"depth\":3},{\"value\":\"4.2 数学原理:方差爆炸\",\"url\":\"#42-数学原理方差爆炸\",\"depth\":3},{\"value\":\"4.3 梯度消失:为什么 softmax 饱和是致命的\",\"url\":\"#43-梯度消失为什么-softmax-饱和是致命的\",\"depth\":3},{\"value\":\"4.4 最佳实践\",\"url\":\"#44-最佳实践\",\"depth\":3},{\"value\":\"4.5 常见坑点\",\"url\":\"#45-常见坑点\",\"depth\":3},{\"value\":\"五、多头注意力:一个脑袋怎么够?\",\"url\":\"#五多头注意力一个脑袋怎么够\",\"depth\":2},{\"value\":\"5.1 直觉类比:阅读理解小组 📖\",\"url\":\"#51-直觉类比阅读理解小组-\",\"depth\":3},{\"value\":\"5.2 技术实现:切分、并行、拼接\",\"url\":\"#52-技术实现切分并行拼接\",\"depth\":3},{\"value\":\"5.3 代码实现\",\"url\":\"#53-代码实现\",\"depth\":3},{\"value\":\"5.4 GPT-3 有 96 个头!\",\"url\":\"#54-gpt-3-有-96-个头\",\"depth\":3},{\"value\":\"5.5 常见坑点\",\"url\":\"#55-常见坑点\",\"depth\":3},{\"value\":\"六、位置编码:让模型知道\\\"谁在前谁在后\\\"\",\"url\":\"#六位置编码让模型知道谁在前谁在后\",\"depth\":2},{\"value\":\"6.1 直觉:打乱顺序的灾难 🔀\",\"url\":\"#61-直觉打乱顺序的灾难-\",\"depth\":3},{\"value\":\"6.2 解决方案:给每个位置一个\\\"身份证\\\"\",\"url\":\"#62-解决方案给每个位置一个身份证\",\"depth\":3},{\"value\":\"6.3 失败的尝试:线性编码\",\"url\":\"#63-失败的尝试线性编码\",\"depth\":3},{\"value\":\"6.4 正弦余弦编码:Transformer 的优雅方案\",\"url\":\"#64-正弦余弦编码transformer-的优雅方案\",\"depth\":3},{\"value\":\"6.5 代码实现\",\"url\":\"#65-代码实现\",\"depth\":3},{\"value\":\"6.6 RoPE:更现代的位置编码\",\"url\":\"#66-rope更现代的位置编码\",\"depth\":3},{\"value\":\"6.7 常见坑点\",\"url\":\"#67-常见坑点\",\"depth\":3},{\"value\":\"七、Encoder 架构:阅读理解专家\",\"url\":\"#七encoder-架构阅读理解专家\",\"depth\":2},{\"value\":\"7.1 直觉类比:一个越来越懂你的阅读理解专家 📚\",\"url\":\"#71-直觉类比一个越来越懂你的阅读理解专家-\",\"depth\":3},{\"value\":\"7.2 Encoder Layer 的四个组件\",\"url\":\"#72-encoder-layer-的四个组件\",\"depth\":3},{\"value\":\"7.3 代码实现\",\"url\":\"#73-代码实现\",\"depth\":3},{\"value\":\"7.4 Encoder 小结\",\"url\":\"#74-encoder-小结\",\"depth\":3},{\"value\":\"八、Decoder 架构:严禁偷看的写作专家\",\"url\":\"#八decoder-架构严禁偷看的写作专家\",\"depth\":2},{\"value\":\"8.1 直觉类比:考试中的作文题 ✍️\",\"url\":\"#81-直觉类比考试中的作文题-️\",\"depth\":3},{\"value\":\"8.2 Decoder Layer 的六个组件\",\"url\":\"#82-
1decoder-layer-的六个组件\",\"depth\":3},{\"value\":\"8.3 代码实现\",\"url\":\"#83-代码实现\",\"depth\":3},{\"value\":\"8.4 自回归生成:今天的输出是明天的输入\",\"url\":\"#84-自回归生成今天的输出是明天的输入\",\"depth\":3},{\"value\":\"8.5 常见坑点\",\"url\":\"#85-常见坑点\",\"depth\":3},{\"value\":\"九、完整 Transformer:组装编码器与解码器\",\"url\":\"#九完整-transformer组装编码器与解码器\",\"depth\":2},{\"value\":\"9.1 直觉:翻译流水线 🏭\",\"url\":\"#91-直觉翻译流水线-\",\"depth\":3},{\"value\":\"9.2 完整架构图\",\"url\":\"#92-完整架构图\",\"depth\":3},{\"value\":\"9.3 完整代码实现\",\"url\":\"#93-完整代码实现\",\"depth\":3},{\"value\":\"9.4 训练循环\",\"url\":\"#94-训练循环\",\"depth\":3},{\"value\":\"9.5 常见坑点\",\"url\":\"#95-常见坑点\",\"depth\":3},{\"value\":\"十、三大架构家族与主流 LLM 架构详解\",\"url\":\"#十三大架构家族与主流-llm-架构详解\",\"depth\":2},{\"value\":\"10.1 Encoder-Only:BERT 家族\",\"url\":\"#101-encoder-onlybert-家族\",\"depth\":3},{\"value\":\"10.2 Decoder-Only:GPT 家族\",\"url\":\"#102-decoder-onlygpt-家族\",\"depth\":3},{\"value\":\"10.3 Encoder-Decoder:T5 家族\",\"url\":\"#103-encoder-decodert5-家族\",\"depth\":3},{\"value\":\"10.4 全局对比\",\"url\":\"#104-全局对比\",\"depth\":3},{\"value\":\"10.5 当今主流 LLM 都用什么架构?\",\"url\":\"#105-当今主流-llm-都用什么架构\",\"depth\":3},{\"value\":\"10.6 为什么 Decoder-Only 统治了一切?\",\"url\":\"#106-为什么-decoder-only-统治了一切\",\"depth\":3},{\"value\":\"10.7 架构创新趋势:不止于 Decoder-Only\",\"url\":\"#107-架构创新趋势不止于-decoder-only\",\"depth\":3},{\"value\":\"十一、PyTorch 代码实战:从零搭建 Transformer\",\"url\":\"#十一pytorch-代码实战从零搭建-transformer\",\"depth\":2}
1,{\"value\":\"11.1 完整模型代码(整合版)\",\"url\":\"#111-完整模型代码整合版\",\"depth\":3},{\"value\":\"11.2 快速验证\",\"url\":\"#112-快速验证\",\"depth\":3},{\"value\":\"十二、常见坑点与最佳实践\",\"url\":\"#十二常见坑点与最佳实践\",\"depth\":2},{\"value\":\"12.1 学习率 Warmup:不能一开始就大步跑\",\"url\":\"#121-学习率-warmup不能一开始就大步跑\",\"depth\":3},{\"value\":\"12.2 Label Smoothing:不要太自信\",\"url\":\"#122-label-smoothing不要太自信\",\"depth\":3},{\"value\":\"12.3 梯度裁剪:防止梯度爆炸\",\"url\":\"#123-梯度裁剪防止梯度爆炸\",\"depth\":3},{\"value\":\"12.4 常见错误汇总\",\"url\":\"#124-常见错误汇总\",\"depth\":3},{\"value\":\"12.5 Attention 长上下文的稀释问题\",\"url\":\"#125-attention-长上下文的稀释问题\",\"depth\":3},{\"value\":\"12.6 Prompt 工程的底层原理(预告)\",\"url\":\"#126-prompt-工程的底层原理预告\",\"depth\":3},{\"value\":\"十三、从 Transformer 原理到 LLM 使用技巧\",\"url\":\"#十三从-transformer-原理到-llm-使用技巧\",\"depth\":2},{\"value\":\"13.1 为什么开头和结尾最重要?——首尾记忆效应\",\"url\":\"#131-为什么开头和结尾最重要首尾记忆效应\",\"depth\":3},{\"value\":\"13.2 温度参数:Softmax 的\\\"音量旋钮\\\"\",\"url\":\"#132-温度参数softmax-的音量旋钮\",\"depth\":3},{\"value\":\"13.3 Top-K 和 Top-P:更精细的采样控制\",\"url\":\"#133-top-k-和-top-p更精细的采样控制\",\"depth\":3},{\"value\":\"13.4 Chain-of-Thought:为什么\\\"先想后答\\\"效果好?\",\"url\":\"#134-chain-of-thought为什么先想后答效果好\",\"depth\":3},{\"value\":\"13.5 Few-Shot 示例:In-Context Learning 的注意力本质\",\"url\":\"#135-few-shot-示例in-context-learning-的注意力本质\",\"depth\":3},{\"value\":\"13.6 结构化 Prompt:注意力的\\\"分隔符\\\"\",\"url\":\"#136-结构化-prompt注意力的分隔符\",\"depth\":3},{\"value\":\"13.7 上下文窗口与 \\\"Lost in the Middle\\\"\",\"url\":\"#137-上下文窗口与-lost-in-the-middle\",\"depth\":3},{\"value\":\"13.8 为什么\\\"重复指令\\\"有效?\",\"url\":\"#138-为什么重复指令有效\",\"depth\":3},{\"value\":\"13.9 技巧速查表\",\"url\":\"#139-技巧速查表\",\"depth\":3},{\"value\":\"十四、2025-2026 Transformer 前沿趋势\",\"url\":\"#十四2025-2026-transformer-前沿趋势\",\"depth\":2},{\"value\":\"14.1 注意力机制的效率革命\",\"url\":\"#141-注意力机制的效率革命\",\"depth\":3},{\"value\":\"14.2 Mamba 与 SSM:Transformer 的挑战者\",\"url\":\"#142-mamba-与-ssmtransformer-的挑战者\",\"depth\":3},{\"value\":\"14.3 混合架构:取各家之长\",\"url\":\"#143-混合架构取各家之长\",\"depth\":3},{\"value\":\"14.4 其他值得关注的方向\",\"url\":\"#144-其他值得关注的方向\",\"depth\":3},{\"value\":\"14.5 一张图看未来\",\"url\":\"#145-一张图看未来\",\"depth\":3},{\"value\":\"十五、总结与学习路线\",\"url\":\"#十五总结与学习路线\",\"depth\":2},{\"value\":\"15.1 为什么每个人都应该了解 Transformer?\",\"url\":\"#151-为什么每个人都应该了解-transformer\",\"depth\":3},{\"value\":\"15.2 核心概念回顾\",\"url\":\"#152-核心概念回顾\",\"depth\":3},{\"value\":\"15.3 推荐学习路线\",\"url\":\"#153-推荐学习路线\",\"depth\":3},{\"value\":\"15.4 关键论文与参考资料\",\"url\":\"#154-关键论文与参考资料\",\"depth\":3}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Transformer 完全指南:从注意力机制到 GPT/DeepSeek 架构,再到 LLM 使用技巧\",\"datePublished\":\"2026-02-09T00:00:00.000Z\",\"dateModified\":\"2026-02-09T00:00:00.000Z\",\"description\":\"最全面的 Transformer 中文教程:从注意力直觉到 Q/K/V 手算,从多头注意力到位置编码,从 Encoder-Decoder 到 PyTorch 实现。涵盖 GPT-4/Claude/DeepSeek/LLaMA 架构对比、LLM 使用技巧的 Transformer 原理解析、2025-2026 前沿趋势(FlashAttention、Mamba/SSM、MoE),附 10 个交互式可视化和完整代码。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/transformer-complete-guide\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"从预训练到参数高效微调:LoRA、Adapter 与 QLoRA 完全指南\",\"date\":\"2026-02-07T00:00:00.000Z\",\"tags\":[\"AI\",\"LLM\",\"Fine-tuning\",\"LoRA\",\"QLoRA\",\"Adapter\",\"PyTorch\",\"HuggingFace\",\"Deep Learning\"],\"draft\":false,\"comments\":true,\"summary\":\"一篇从零开始的完整教程:从理解HuggingFace推理、预训练LLM、全量微调,到参数高效微调方法(Adapter、LoRA、QLoRA)的深度解析。包含大量PyTorch代码实现、数学原理和对比实验。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"35 min read\",\"minutes\":34.51,\"time\":2070600,\"words\":6902},\"slug\":\"from-pretraining-to-peft-complete-guide\",\"path\":\"blog/from-pretraining-to-peft-complete-guide\",\"filePath\":\"blog/from-pretraining-to-peft-complete-guide.mdx\",\"toc\":[{\"value\":\"从预训练到参数高效微调:LoRA、Adapter 与 QLoRA 完全指南\",\"url\":\"#从预训练到参数高效微调loraadapter-与-qlora-完全指南\",\"depth\":1},{\"value\":\"📑 目录\",\"url\":\"#-目录\",\"depth\":2},{\"value\":\"一、为什么需要微调?\",\"url\":\"#一为什么需要微调\",\"depth\":2},{\"value\":\"微调的核心思想\",\"url\":\"#微调的核心思想\",\"depth\":3},{\"value\":\"二、HuggingFace 入门:模型加载与推理\",\"url\":\"#二huggingface-入门模型加载与推理\",\"depth\":2},{\"value\":\"2.1 不用 pipeline 的手动推理流程\",\"url\":\"#21-不用-pipeline-的手动推理流程\",\"depth\":3},{\"value\":\"2.2 pipeline 函数:一行搞定推理\",\"url\":\"#22-pipeline-函数一行搞定推理\",\"depth\":3},{\"value\":\"2.3 pipeline 支持的常见任务\",\"url\":\"#23-pipeline-支持的常见任务\",\"depth\":3},{\"value\":\"2.4 文本生成实战:GPT-2\",\"url\":\"#24-文本生成实战gpt-2\",\"depth\":3},{\"value\":\"2.5 T5:Text-to-Text 万能模型\",\"url\":\"#25-t5text-to-text-万能模型\",\"depth\":3},{\"value\":\"三、预训练:LLM 是怎么诞生的\",\"url\":\"#三预训练llm-是怎么诞生的\",\"depth\":2},{\"value\":\"3.1 三大预训练目标\",\"url\":\"#31-三大预训练目标\",\"depth\":3},{\"value\":\"(1)掩码语言模型(Masked Language Modeling, MLM)\",\"url\":\"#1掩码语言模型masked-language-modeling-mlm\",\"depth\":4},{\"value\":\"(2)下一句预测(Next Sentence Prediction, NSP)\",\"url\":\"#2下一句预测next-sentence-prediction-nsp\",\"depth\":4},{\"value\":\"(3)下一个 Token 预测(Next Token Prediction)\",\"url\":\"#3下一个-token-预测next-token-prediction\",\"depth\":4},{\"value\":\"3.2 从零预训练 BERT(简化版)\",\"url\":\"#32-从零预训练-bert简化版\",\"depth\":3},{\"value\":\"3.3 评估预训练模型:困惑度(Perplexity)\",\"url\":\"#33-评估预训练模型困惑度perplexity\",\"depth\":3},{\"value\":\"四、全量微调:最直觉的方法\",\"url\":\"#四全é‡
1å¾®è°ƒæœ€ç›´è§‰çš„æ–¹æ³•\",\"depth\":2},{\"value\":\"4.1 用 PyTorch 手写训练循环\",\"url\":\"#41-用-pytorch-手写训练循环\",\"depth\":3},{\"value\":\"4.2 评估模型\",\"url\":\"#42-评估模型\",\"depth\":3},{\"value\":\"4.3 用 SFTTrainer 微调对话模型\",\"url\":\"#43-用-sfttrainer-微调对话模型\",\"depth\":3},{\"value\":\"五、微调策略对比实验:全量 vs 仅最后一层\",\"url\":\"#五微调策略对比实验全量-vs-仅最后一层\",\"depth\":2},{\"value\":\"5.1 实验设置\",\"url\":\"#51-实验设置\",\"depth\":3},{\"value\":\"5.2 模型架构\",\"url\":\"#52-模型架构\",\"depth\":3},{\"value\":\"位置编码(Positional Encoding)\",\"url\":\"#位置编码positional-encoding\",\"depth\":4},{\"value\":\"5.3 三种策略的实验结果\",\"url\":\"#53-三种策略的实验结果\",\"depth\":3},{\"value\":\"策略一:直接在 IMDB 上从零训练\",\"url\":\"#策略一直接在-imdb-上从零训练\",\"depth\":4},{\"value\":\"策略二:先在 AG News 预训练,再全量微调 IMDB\",\"url\":\"#策略二先在-ag-news-预训练再全量微调-imdb\",\"depth\":4},{\"value\":\"策略三:先在 AG News 预训练,仅微调最后一层\",\"url\":\"#策略三先在-ag-news-预训练仅微调最后一层\",\"depth\":4},{\"value\":\"5.4 结果对比\",\"url\":\"#54-结果对比\",\"depth\":3},{\"value\":\"5.5 进阶:选择性解冻特定层\",\"url\":\"#55-进阶选择性解冻特定层\",\"depth\":3},{\"value\":\"六、Adapter:轻量级模块化适配\",\"url\":\"#六adapter轻量级模块化适配\",\"depth\":2},{\"value\":\"6.1 Adapter 的架构\",\"url\":\"#61-adapter-的架构\",\"depth\":3},{\"value\":\"6.2 PyTorch 实现\",\"url\":\"#62-pytorch-实现\",\"depth\":3},{\"value\":\"6.3 将 Adapter 注入到模型中\",\"url\":\"#63-将-adapter-注入到模型中\",\"depth\":3},{\"value\":\"6.4 实验结果\",\"url\":\"#64-实验结果\",\"depth\":3},{\"value\":\"6.5 Adapter 的直觉理解\",\"url\":\"#65-adapter-的直觉理解\",\"depth\":3},{\"value\":\"七、LoRA:低秩矩阵的魔法\",\"url\":\"#七lora低秩矩阵的魔法\",\"depth\":2},{\"value\":\"7.1 数学原理\",\"url\":\"#71-数学原理\",\"depth\":3},{\"value\":\"7.2 PyTorch 从零实现 LoRA\",\"url\":\"#72-pytorch-从零实现-lora\",\"depth\":3},{\"value\":\"7.3 将 LoRA 注入到线性层\",\"url\":\"#73-将-lora-注入到线性层\",\"depth\":3},{\"value\":\"7.4 完整实验:AG News 预训练 → LoRA 微调 IMDB\",\"url\":\"#74-完整实验ag-news-预训练--lora-微调-imdb\",\"depth\":3},{\"value\":\"7.5 Rank 的选择\",\"url\":\"#75-rank-的选择\",\"depth\":3},{\"value\":\"7.6 实验结果\",\"url\":\"#76-实验结果\",\"depth\":3},{\"value\":\"八、QLoRA:量化 + LoRA 的极致效率\",\"url\":\"#八qlora量化--lora-的极致效率\",\"depth\":2},{\"value\":\"8.1 什么是量化?\",\"url\":\"#81-什么是量化\",\"depth\":3},{\"value\":\"8.2 用 HuggingFace 实现 QLoRA\",\"url\":\"#82-用-huggingface-实现-qlora\",\"depth\":3},{\"value\":\"8.3 训练和评估\",\"url\":\"#83-训练和评估\",\"depth\":3},{\"value\":\"8.4 QLoRA 实验结果\",\"url\":\"#84-qlora-实验结果\",\"depth\":3},{\"value\":\"8.5 QLoRA 的三大技术创新\",\"url\":\"#85-qlora-的三大技术创新\",\"depth\":3},{\"value\":\"九、全局对比:该选哪种方法?\",\"url\":\"#九全局对比该选哪种方法\",\"depth\":2},{\"value\":\"9.1 方法对比总表\",\"url\":\"#91-方法对比总表\",\"depth\":3},{\"value\":\"9.2 方法架构可视化\",\"url\":\"#92-方法架构可视化\",\"depth\":3},{\"value\":\"全量微调\",\"url\":\"#全量微调\",\"depth\":4},{\"value\":\"Adapter\",\"url\":\"#adapter\",\"depth\":4},{\"value\":\"LoRA\",\"url\":\"#lora\",\"depth\":4},{\"value\":\"9.3 决策指南\",\"url\":\"#93-决策指南\",\"depth\":3},{\"value\":\"9.4 代码速查表\",\"url\":\"#94-代码速查表\",\"depth\":3},{\"value\":\"十、总结与实践建议\",\"url\":\"#十总结与实践建议\",\"depth\":2},{\"value\":\"10.1 核心要点回顾\",\"url\":\"#101-核心要点回顾\",\"depth\":3},{\"value\":\"10.2 实践建议\",\"url\":\"#102-实践建议\",\"depth\":3},{\"value\":\"10.3 推荐学习路线\",\"url\":\"#103-推荐学习路线\",\"depth\":3},{\"value\":\"10.4 常见 FAQ\",\"url\":\"#104-常见-faq\",\"depth\":3}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"从预训练到参数高效微调:LoRA、Adapter 与 QLoRA 完全指南\",\"datePublished\":\"2026-02-07T00:00:00.000Z\",\"dateModified\":\"2026-02-07T00:00:00.000Z\",\"description\":\"一篇从零开始的完整教程:从理解HuggingFace推理、预训练LLM、全量微调,到参数高效微调方法(Adapter、LoRA、QLoRA)的深度解析。包含大量PyTorch代码实现、数学原理和对比实验。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/from-pretraining-to-peft-complete-guide\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"深夜胡言:一个程序员在AI时代的身份危机\",\"date\":\"2026-01-25T00:00:00.000Z\",\"tags\":[\"writings\",\"AI\",\"career\"],\"draft\":false,\"comments\":true,\"summary\":\"年度Review前夜的深夜独白。关于焦虑、孤独、VibeCoding带来的身份危机,以及在AI革命浪潮中一个普通程序员的迷茫与思考。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"59 min read\",\"minutes\":58.03,\"time\":3481800,\"words\":11606},\"slug\":\"midnight-thoughts-programmer-identity-crisis\",\"path\":\"blog/midnight-thoughts-programmer-identity-crisis\",\"filePath\":\"blog/midnight-thoughts-programmer-identity-crisis.mdx\",\"toc\":[{\"value\":\"写在前面\",\"url\":\"#写在前面\",\"depth\":2},{\"value\":\"一、年度Review前夜\",\"url\":\"#一年度review前夜\",\"depth\":2},{\"value\":\"二、32岁\",\"url\":\"#二32岁\",\"depth\":2},{\"value\":\"三、孤独\",\"url\":\"#三孤独\",\"depth\":2},{\"value\":\"存在主义的孤独\",\"url\":\"#存在主义的孤独\",\"depth\":3},{\"value\":\"程序员的孤独\",\"url\":\"#程序员的孤独\",\"depth\":3},{\"value\":\"深夜放大一切\",\"url\":\"#深夜放大一切\",\"depth\":3},{\"value\":\"四、和AI说话\",\"url\":\"#四和ai说话\",\"depth\":2},{\"value\":\"五、VibeCoding与身份危机\",\"url\":\"#五vibecoding与身份危机\",\"depth\":2},{\"value\":\"学习动力的丧失\",\"url\":\"#学习动力的丧失\",\"depth\":3},{\"value\":\"规则的改变\",\"url\":\"#规则的改变\",\"depth\":3},{\"value\":\"一年的感受\",\"url\":\"#一年的感受\",\"depth\":3},{\"value\":\"身份的瓦解\",\"url\":\"#身份的瓦解\",\"depth\":3},{\"value\":\"六、无法权衡的焦虑\",\"url\":\"#六无法权衡的焦虑\",\"depth\":2},{\"value\":\"决策瘫痪\",\"url\":\"#决策瘫痪\",\"depth\":3},{\"value\":\"没有正确答案\",\"url\":\"#没有正确答案\",\"depth\":3},{\"value\":\"被悬置的人生\",\"url\":\"#被悬置的人生\",\"depth\":3},{\"value\":\"焦虑的本质\",\"url\":\"#焦虑的本质\",\"depth\":3},{\"value\":\"七、时代的代价\",\"url\":\"#七时代的代价\",\"depth\":2},{\"value\":\"具体的代价是什么\",\"url\":\"#具体的代价是什么\",\"depth\":3}
1,{\"value\":\"历史的无情\",\"url\":\"#历史的无情\",\"depth\":3},{\"value\":\"个体 vs 时代\",\"url\":\"#个体-vs-时代\",\"depth\":3},{\"value\":\"适应还是抵抗\",\"url\":\"#适应还是抵抗\",\"depth\":3},{\"value\":\"八、意义的追问\",\"url\":\"#八意义的追问\",\"depth\":2},{\"value\":\"九、心流与自嗨\",\"url\":\"#九心流与自嗨\",\"depth\":2},{\"value\":\"热爱的幻觉\",\"url\":\"#热爱的幻觉\",\"depth\":3},{\"value\":\"自嗨的价值\",\"url\":\"#自嗨的价值\",\"depth\":3},{\"value\":\"十、孤独的另一面\",\"url\":\"#十孤独的另一面\",\"depth\":2},{\"value\":\"为什么找不到人说\",\"url\":\"#为什么找不到人说\",\"depth\":3},{\"value\":\"孤独的两种解法\",\"url\":\"#孤独的两种解法\",\"depth\":3},{\"value\":\"满的孤独\",\"url\":\"#满的孤独\",\"depth\":3},{\"value\":\"十一、敏感的人\",\"url\":\"#十一敏感的人\",\"depth\":2},{\"value\":\"十二、为什么学技术\",\"url\":\"#十二为什么学技术\",\"depth\":2},{\"value\":\"最表面的答案:为了工作\",\"url\":\"#最表面的答案为了工作\",\"depth\":3},{\"value\":\"稍微深一点的答案:为了跳槽\",\"url\":\"#稍微深一点的答案为了跳槽\",\"depth\":3},{\"value\":\"再深一点的答案:为了不被淘汰\",\"url\":\"#再深一点的答案为了不被淘汰\",\"depth\":3},{\"value\":\"我真正想要的答案:为了改变什么\",\"url\":\"#我真正想要的答案为了改变什么\",\"depth\":3},{\"value\":\"没有答案\",\"url\":\"#没有答案\",\"depth\":3},{\"value\":\"十三、学AI的两条路\",\"url\":\"#十三学ai的两条路\",\"depth\":2},{\"value\":\"两条路的区别\",\"url\":\"#两条路的区别\",\"depth\":3},{\"value\":\"我的选择\",\"url\":\"#我的选择\",\"depth\":3},{\"value\":\"理解的震撼\",\"url\":\"#理解的震撼\",\"depth\":3},{\"value\":\"十四、风口还是革命\",\"url\":\"#十四风口还是革命\",\"depth\":2},{\"value\":\"风口的特征\",\"url\":\"#风口的特征\",\"depth\":3},{\"value\":\"革命的迹象\",\"url\":\"#革命的迹象\",\"depth\":3},{\"value\":\"改变世界的感觉\",\"url\":\"#改变世界的感觉\",\"depth\":3},{\"value\":\"焦虑的来源\",\"url\":\"#焦虑的来源\",\"depth\":3},{\"value\":\"十五、MCP和Skills\",\"url\":\"#十五mcp和skills\",\"depth\":2},{\"value\":\"十六、思考的代价\",\"url\":\"#十六思考的代价\",\"depth\":2},{\"value\":\"十七、没有结论\",\"url\":\"#十七没有结论\",\"depth\":2},{\"value\":\"接受不确定性\",\"url\":\"#接受不确定性\",\"depth\":3},{\"value\":\"写作作为出口\",\"url\":\"#写作作为出口\",\"depth\":3},{\"value\":\"未完待续\",\"url\":\"#未完待续\",\"depth\":3},{\"value\":\"十八、给读到这里的你\",\"url\":\"#十八给读到这里的你\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"深夜胡言:一个程序员在AI时代的身份危机\",\"datePublished\":\"2026-01-25T00:00:00.000Z\",\"dateModified\":\"2026-01-25T00:00:00.000Z\",\"description\":\"年度Review前夜的深夜独白。关于焦虑、孤独、VibeCoding带来的身份危机,以及在AI革命浪潮中一个普通程序员的迷茫与思考。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/midnight-thoughts-programmer-identity-crisis\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"LangGraph Reflection Agents 完全指南:从原理到实战\",\"date\":\"2025-12-25T00:00:00.000Z\",\"tags\":[\"LangChain\",\"LangGraph\",\"AI Agent\",\"Reflection\",\"LLM\"],\"draft\":false,\"comments\":false,\"summary\":\"深入解析 LangGraph 中的 Reflection Agents 技术,涵盖 Basic Reflection、Reflexion、LATS 三种核心方法,以及与 ReAct 的对比分析。包含完整代码示例和实战指南。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"30 min read\",\"minutes\":29.22,\"time\":1753200,\"words\":5844},\"slug\":\"LangGraph Reflection Agents\",\"path\":\"blog/LangGraph Reflection Agents\",\"filePath\":\"blog/LangGraph Reflection Agents.mdx\",\"toc\":[{\"value\":\"Reflection 是什么?为什么值得用?\",\"url\":\"#reflection-是什么为什么值得用\",\"depth\":2},{\"value\":\"LangGraph Reflection Agents 完全指南\",\"url\":\"#langgraph-reflection-agents-完全指南\",\"depth\":2},{\"value\":\"前言\",\"url\":\"#前言\",\"depth\":2},{\"value\":\"什么是 Reflection Agents?\",\"url\":\"#什么是-reflection-agents\",\"depth\":2},{\"value\":\"核心思想\",\"url\":\"#核心思想\",\"depth\":3},{\"value\":\"核心权衡\",\"url\":\"#核心权衡\",\"depth\":3},{\"value\":\"三种 Reflection 技术详解\",\"url\":\"#三种-reflection-技术详解\",\"depth\":2},{\"value\":\"1️⃣ Basic Reflection(基础反思)\",\"url\":\"#1️⃣-basic-reflection基础反思\",\"depth\":3},{\"value\":\"工作原理\",\"url\":\"#工作原理\",\"depth\":4},{\"value\":\"核心特点\",\"url\":\"#核心特点\",\"depth\":4},{\"value\":\"LangGraph 实现\",\"url\":\"#langgraph-实现\",\"depth\":4},{\"value\":\"使用示例\",\"url\":\"#使用示例\",\"depth\":4},{\"value\":\"2️⃣ Reflexion(带验证的反思)\",\"url\":\"#2️⃣-reflexion带验证的反思\",\"depth\":3},{\"value\":\"论文背景\",\"url\":\"#论文背景\",\"depth\":4},{\"value\":\"工作原理\",\"url\":\"#工作原理-1\",\"depth\":4},{\"value\":\"与 Basic Reflection 的区别\",\"url\":\"#与-basic-reflection-的区别\",\"depth\":4},{\"value\":\"LangGraph 实现\",\"url\":\"#langgraph-实现-1\",\"depth\":4},{\"value\":\"核心优势\",\"url\":\"#核心优势\",\"depth\":4},{\"value\":\"局限性\",\"url\":\"#局限性\",\"depth\":4},{\"value\":\"3️⃣ LATS(Language Agent Tree Search)\",\"url\":\"#3️⃣-latslanguage-agent-tree-search\",\"depth\":3},{\"value\":\"论文背景\",\"url\":\"#论文背景-1\",\"depth\":4},{\"value\":\"工作原理\",\"url\":\"#工作原理-2\",\"depth\":4},{\"value\":\"LATS 五个核心步骤\",\"url\":\"#lats-五个核心步骤\",\"depth\":4},{\"value\":\"与其他方法的全面对比\",\"url\":\"#与其他方法的全面对比\",\"depth\":4},{\"value\":\"LangGraph 实现\",\"url\":\"#langgraph-实现-2\",\"depth\":4},{\"value\":\"LATS 适用场景\",\"url\":\"#lats-适用场景\",\"depth\":4},{\"value\":\"ReAct vs Reflection vs Reflexion\",\"url\":\"#react-vs-reflection-vs-reflexion\",\"depth\":2},{\"value\":\"一句话区分\",\"url\":\"#一句话区分\",\"depth\":3},{\"value\":\"详细对比\",\"url\":\"#详细对比\",\"depth\":3},{\"value\":\"流程对比图\",\"url\":\"#流程对比图\",\"depth\":3},{\"value\":\"生活类比\",\"url\":\"#生活类比\",\"depth\":3},{\"value\":\"关系总结\",\"url\":\"#关系总结\",\"depth\":3},{\"value\":\"选择指南\",\"url\":\"#选择指南\",\"depth\":3},{\"value\":\"三者结合使用\",\"url\":\"#三者结合使用\",\"depth\":2},{\"value\":\"组合方式\",\"url\":\"#组合方式\",\"depth\":3},{\"value\":\"组合示例架构\",\"url\":\"#组合示例架构\",\"depth\":3},{\"value\":\"AgentExecutor vs LangGraph\",\"url\":\"#agentexecutor-vs-langgraph\",\"depth\":2},{\"value\":\"背景\",\"url\":\"#背景\",\"depth\":3},{\"value\":\"核心区别\",\"url\":\"#核心区别\",\"depth\":3},{\"value\":\"为什么选择 LangGraph?\",\"url\":\"#为什么选择-langgraph\",\"depth\":3},{\"value\":\"LangGraph 人工介入示例\",\"url\":\"#langgraph-人工介入示例\",\"depth\":3},{\"value\":\"LangSmith vs LangGraph\",\"url\":\"#langsmith-vs-langgraph\",\"depth\":3},{\"value\":\"完整实战:推文优化 Agent\",\"url\":\"#完整实战推文优化-agent\",\"depth\":2},{\"value\":\"需求分析\",\"url\":\"#需求分析\",\"depth\":3},{\"value\":\"完整代码\",\"url\":\"#完整代码\",\"depth\":3},{\"value\":\"执行流程图\",\"url\":\"#执行流程图\",\"depth\":3},{\"value\":\"运行结果示例\",\"url\":\"#运行结果示例\",\"depth\":3},{\"value\":\"学习资源与路径\",\"url\":\"#学习资源与路径\",\"depth\":2},{\"value\":\"官方资源\",\"url\":\"#官方资源\",\"depth\":3},{\"value\":\"推荐学习路径\",\"url\":\"#推荐学习路径\",\"depth\":3},{\"value\":\"总结\",\"url\":\"#总结\",\"depth\":2},{\"value\":\"核心要点回顾\",\"url\":\"#核心要点回顾\",\"depth\":3},{\"value\":\"技术选择速查表\",\"url\":\"#技术选择速查表\",\"depth\":3},{\"value\":\"最后的建议\",\"url\":\"#最后的建议\",\"depth\":3},{\"value\":\"参考文献\",\"url\":\"#参考文献\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"LangGraph Reflection Agents 完全指南:从原理到实战\",\"datePublished\":\"2025-12-25T00:00:00.000Z\",\"dateModified\":\"2025-12-25T00:00:00.000Z\",\"description\":\"深入解析 LangGraph 中的 Reflection Agents 技术,涵盖 Basic Reflection、Reflexion、LATS 三种核心方法,以及与 ReAct 的对比分析。包含完整代码示例和实战指南。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/LangGraph Reflection Agents\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"基于深度Q学习的月球着陆\",\"date\":\"2025-05-04T00:00:00.000Z\",\"tags\":[\"Reinforcement Learning\",\"Deep Q-Learning\",\"DQN\",\"Experience Replay\",\"Target Network\",\"OpenAI Gym\",\"Lunar Lander\"],\"draft\":false,\"comments\":false,\"summary\":\"跟随本教程,学习如何应用深度Q学习(DQN)、经验回放和目标ç
1½‘络,从零开始训练一个能成功完成OpenAI Gym月球着陆器(Lunar Lander)任务的智能体。包含理论讲解、代码实现与结果展示。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"36 min read\",\"minutes\":35.825,\"time\":2149500,\"words\":7165},\"slug\":\"Deep Q-Learning - Lunar Lander\",\"path\":\"blog/Deep Q-Learning - Lunar Lander\",\"filePath\":\"blog/Deep Q-Learning - Lunar Lander.mdx\",\"toc\":[{\"value\":\"关键点\",\"url\":\"#关键点\",\"depth\":2},{\"value\":\"环境介绍\",\"url\":\"#环境介绍\",\"depth\":2},{\"value\":\"实现深度 Q 学习\",\"url\":\"#实现深度-q-学习\",\"depth\":2},{\"value\":\"训练与结果\",\"url\":\"#训练与结果\",\"depth\":2},{\"value\":\"详细报告\",\"url\":\"#详细报告\",\"depth\":2},{\"value\":\"引言\",\"url\":\"#引言\",\"depth\":3},{\"value\":\"与环境交互\",\"url\":\"#与环境交互\",\"depth\":4}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"基于深度Q学习的月球着陆\",\"datePublished\":\"2025-05-04T00:00:00.000Z\",\"dateModified\":\"2025-05-04T00:00:00.000Z\",\"description\":\"跟随本教程,学习如何应用深度Q学习(DQN)、经验回放和目标网络,从零开始训练一个能成功完成OpenAI Gym月球着陆器(Lunar Lander)任务的智能体。包含理论讲解、代码实现与结果展示。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/Deep Q-Learning - Lunar Lander\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"协同过滤推荐系统实践实验\",\"date\":\"2025-04-28T00:00:00.000Z\",\"tags\":[\"Machine Learning\",\"Recommender System\",\"Collaborative Filtering\"],\"draft\":false,\"comments\":false,\"summary\":\"在本实验中,您将实现协同过滤算法来构建一个电影推荐系统。通过理论讲解、代码实现和实践操作,您将深入理解协同过滤的核心原理。让我们开始吧!\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"11 min read\",\"minutes\":10.785,\"time\":647100,\"words\":2157},\"slug\":\"Collaborative_RecSys\",\"path\":\"blog/Collaborative_RecSys\",\"filePath\":\"blog/Collaborative_RecSys.mdx\",\"toc\":[{\"value\":\"大纲\",\"url\":\"#大纲\",\"depth\":2},{\"value\":\"包\",\"url\":\"#包\",\"depth\":2},{\"value\":\"1 - 符号说明\",\"url\":\"#1---符号说明\",\"depth\":2},{\"value\":\"2 - 推荐系统\",\"url\":\"#2---推荐系统\",\"depth\":2},{\"value\":\"3 - 电影评分数据集\",\"url\":\"#3---电影评分数据集\",\"depth\":2},{\"value\":\"4 - 协同过滤学习算法\",\"url\":\"#4---协同过滤学习算法\",\"depth\":2},{\"value\":\"4.1 协同过滤成本函数\",\"url\":\"#41-协同过滤成本函数\",\"depth\":3},{\"value\":\"练习 1:实现协同过滤成本函数\",\"url\":\"#练习-1实现协同过滤成本函数\",\"depth\":4},{\"value\":\"5 - 学习电影推荐\",\"url\":\"#5---学习电影推荐\",\"depth\":2},{\"value\":\"6 - 推荐\",\"url\":\"#6---推荐\",\"depth\":2},{\"value\":\"6.1 为什么协同过滤有时推荐得很“像”\",\"url\":\"#61-为什么协同过滤有时推荐得很像\",\"depth\":3},{\"value\":\"6.2 协同过滤调试检查清单\",\"url\":\"#62-协同过滤调试检查清单\",\"depth\":3},{\"value\":\"6.3 交互式可视化\",\"url\":\"#63-交互式可视化\",\"depth\":3},{\"value\":\"7 - 总结 通过本次实验,你成功掌握了协同过滤推荐系统的核心实现方法。以下是本次学习的关键收获: -\",\"url\":\"#7---总结-通过本次实验你成功掌握了协同过滤推荐系统的核心实现方法以下是本次学习的关键收获--\",\"depth\":2},{\"value\":\"算法实践:亲手实现了协同过滤的成本函数与梯度下降优化,深入理解了用户参数与电影特征之间的交互原理。 -\\n模型训练:运用TensorFlow搭建推荐模型,通过200次迭代优化,显著降低了预测评分与实际评分的误差。 -\\n实战应用:基于MovieLens数据集,构建了能输出个性化电影推荐的系统,并为用户生成TOP10推荐列表。 -\\
1n正则化技巧:在成本函数中引入L2正则化项,有效避免了过拟合问题,提升了模型的泛化能力。\\n下一步,你可以尝试调整学习率(如0.05或0.2)、正则化参数(如0.5或2),观察模型效果变化,或在完整版MovieLens数据集(包含27000部电影)上挑战更大规模的推荐任务。\",\"url\":\"#算法实践亲手实现了协同过滤的成本函数与梯度下降优化深入理解了用户参数与电影特征之间的交互原理--模型训练运用tensorflow搭建推荐模型通过200次迭代优化显著降低了预测评分与实际评分的误差--实战应用基于movielens数据集构建了能输出个性化电影推荐的系统并为用户生成top10推荐列表--正则化技巧在成本函数中引入l2正则化项有效避免了过拟合问题提升了模型的泛化能力下一步你可以尝试调整学习率如005或02正则化参数如05或2观察模型效果变化或在完整版movielens数据集包含27000部电影上挑战更大规模的推荐任务\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"协同过滤推荐系统实践实验\",\"datePublished\":\"2025-04-28T00:00:00.000Z\",\"dateModified\":\"2025-04-28T00:00:00.000Z\",\"description\":\"在本实验中,您将实现协同过滤算法来构建一个电影推荐系统。通过理论讲解、代码实现和实践操作,您将深入理解协同过滤的核心原理。让我们开始吧!\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/Collaborative_RecSys\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"构建电影推荐系统:协同过滤从理论到实践\",\"date\":\"2025-04-28T00:00:00.000Z\",\"tags\":[\"Machine Learning\",\"Recommender Systems\",\"Collaborative Filtering\",\"TensorFlow\",\"MovieLens Dataset\"],\"draft\":false,\"comments\":false,\"summary\":\"本文完整实现了基于协同过滤的电影推荐系统,使用TensorFlow框架在MovieLens数据集上完成了从理论推导到工程实践的全流程。通过矩阵分解方法学习用户偏好和电影特征,实现了包含正则化的成本函数和梯度下降优化,最终生成个性化Top10推荐列表。实验显示模型能准确预测用户评分并推荐高口碑电影,为推荐系统入门提供了完整的实践范例。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"18 min read\",\"minutes\":17.895,\"time\":1073700,\"words\":3579},\"slug\":\"RecSysNN_Assignment\",\"path\":\"blog/RecSysNN_Assignment\",\"filePath\":\"blog/RecSysNN_Assignment.mdx\",\"toc\":[{\"value\":\"目录\",\"url\":\"#目录\",\"depth\":2},{\"value\":\"1 - 推荐系统简介\",\"url\":\"#1---推荐系统简介\",\"depth\":2},{\"value\":\"2 - 协同过滤基础\",\"url\":\"#2---协同过滤基础\",\"depth\":2},{\"value\":\"矩阵分解方法\",\"url\":\"#矩阵分解方法\",\"depth\":3},{\"value\":\"符号表\",\"url\":\"#符号表\",\"depth\":3},{\"value\":\"3 - MovieLens 数据集\",\"url\":\"#3---movielens-数据集\",\"depth\":2},{\"value\":\"数据结构\",\"url\":\"#数据结构\",\"depth\":3},{\"value\":\"加载数据\",\"url\":\"#加载数据\",\"depth\":3},{\"value\":\"数据探索\",\"url\":\"#数据探索\",\"depth\":3},{\"value\":\"4 - 协同过滤算法实现\",\"url\":\"#4---协同过滤算法实现\",\"depth\":2},{\"value\":\"4.1 成本函数\",\"url\":\"#41-成本函数\",\"depth\":3},{\"value\":\"练习 1:实现成本函数\",\"url\":\"#练习-1实现成本函数\",\"depth\":4},{\"value\":\"向量化实现\",\"url\":\"#向量化实现\",\"depth\":4},{\"value\":\"5 - 训练电影推荐模型\",\"url\":\"#5---训练电影推荐模型\",\"depth\":2},{\"value\":\"归一化评分\",\"url\":\"#归一化评分\",\"depth\":3},{\"value\":\"初始化参数\",\"url\":\"#初始化参数\",\"depth\":3},{\"value\":\"训练循环\",\"url\":\"#训练循环\",\"depth\":3},{\"value\":\"6 - 生成推荐\",\"url\":\"#6---生成推荐\",\"depth\":2},{\"value\":\"添加新用户评分\",\"url\":\"#添加新用户评分\",\"depth\":3},{\"value\":\"更新数据集\",\"url\":\"#更新数据集\",\"depth\":3},{\"value\":\"重新训练模型\",\"url\":\"#重新训练模型\",\"depth\":3},{\"value\":\"预测评分\",\"url\":\"#预测评分\",\"depth\":3},{\"value\":\"生成推荐\",\"url\":\"#生成推荐\",\"depth\":3},{\"value\":\"比较预测与实际评分\",\"url\":\"#比较预测与实际评分\",\"depth\":3},{\"value\":\"过滤高质量推荐\",\"url\":\"#过滤高质量推荐\",\"depth\":3},{\"value\":\"6.1 调参建议(新手常见问题)\",\"url\":\"#61-调参建议新手常见问题\",\"depth\":3},{\"value\":\"6.2 冷启动问题怎么处理?\",\"url\":\"#62-冷启动问题怎么处理\",\"depth\":3},{\"value\":\"6.3 交互式可视化探索\",\"url\":\"#63-交互式可视化探索\",\"depth\":3},{\"value\":\"7 - 总结\",\"url\":\"#7---总结\",\"depth\":2},{\"value\":\"下一步\",\"url\":\"#下一步\",\"depth\":3},{\"value\":\"希望这篇文章为你打开了推荐系统的大门!快去为你的朋友推荐一部电影吧!🎬✨\",\"url\":\"#希望这篇文章为你打开了推荐系统的大门快去为你的朋友推荐一部电影吧\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"构建电影推荐系统:协同过滤从理论到实践\",\"datePublished\":\"2025-04-28T00:00:00.000Z\",\"dateModified\":\"2025-04-28T00:00:00.000Z\",\"description\":\"本文完整实现了基于协同过滤的电影推荐系统,使用TensorFlow框架在MovieLens数据集上完成了从理论推导到工程实践的全流程。通过矩阵分解方法学习用户偏好和电影特征,实现了包含正则化的成本函数和梯度下降优化,最终生成个性化Top10推荐列表。实验显示模型能准确预测用户评分并推荐高口碑电影,为推荐系统入门提供了完整的实践范例。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/RecSysNN_Assignment\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"异常检测:高斯模型在服务器异常检测中的应用\",\"date\":\"2025-04-21T00:00:00.000Z\",\"tags\":[\"Machine Learning\",\"Anomaly Detection\",\"Gaussian Model\",\"Data Science\"],\"draft\":false,\"comments\":false,\"summary\":\"本文详细讲解了异常检测算法的原理与实现,从理论基础到实际应用,通过监测服务器指标来检测网络中的异常行为。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"25 min read\",\"minutes\":24.025,\"time\":1441500,\"words\":4805},\"slug\":\"AnomalyDetection\",\"path\":\"blog/AnomalyDetection\",\"filePath\":\"blog/AnomalyDetection.mdx\",\"toc\":[{\"value\":\"目录\",\"url\":\"#目录\",\"depth\":2},{\"value\":\"1 - 准备工具包\",\"url\":\"#1---准备工具包\",\"depth\":2},{\"value\":\"2 - 异常检测\",\"url\":\"#2---异常检测\",\"depth\":2},{\"value\":\"2.1 问题背景\",\"url\":\"#21-问题背景\",\"depth\":3},{\"value\":\"2.2 数据集概览\",\"url\":\"#22-数据集概览\",\"depth\":3},{\"value\":\"初步查看数据\",\"url\":\"#初步查看数据\",\"depth\":4},{\"value\":\"检查数据维度\",\"url\":\"#检查数据维度\",\"depth\":4},{\"value\":\"数据可视化\",\"url\":\"#数据可视化\",\"depth\":4},{\"value\":\"2.3 高斯分布模型\",\"url\":\"#23-高斯分布模型\",\"depth\":3},{\"value\":\"练习 1:估计高斯参数\",\"url\":\"#练习-1估计高斯参数\",\"depth\":4},{\"value\":\"可视化拟合\",\"url\":\"#可视化拟合\",\"depth\":4},{\"value\":\"练习 2:选择阈值\",\"url\":\"#练习-2选择阈值\",\"depth\":4},{\"value\":\"标记异常点\",\"url\":\"#标记异常点\",\"depth\":4},{\"value\":\"2.4 应用于高维数据\",\"url\":\"#24-应用于高维数据\",\"depth\":3},{\"value\":\"加载数据\",\"url\":\"#加载数据\",\"depth\":4},{\"value\":\"运行异常检测\",\"url\":\"#运行异常检测\",\"depth\":4},{\"value\":\"3 - 交互式可视化\",\"url\":\"#3---交互式可视化\",\"depth\":2},{\"value\":\"3.1 高斯分布与异常检测\",\"url\":\"#31-高斯分布与异常检测\",\"depth\":3},{\"value\":\"3.2 F1分数与阈值选择\",\"url\":\"#32-f1分数与阈值选择\",\"depth\":3},{\"value\":\"3.3 多维高斯分布3D可视化\",\"url\":\"#33-多维高斯分布3d可视化\",\"depth\":3},{\"value\":\"4 - 深入理解高斯分布\",\"url\":\"#4---深入理解高斯分布\",\"depth\":2},{\"value\":\"4.1 为什么选择高斯分布?\",\"url\":\"#41-为什么选择高斯分布\",\"depth\":3},{\"value\":\"4.2 单变量 vs 多变量高斯分布\",\"url\":\"#42-单变量-vs-多变量高斯分布\",\"depth\":3},{\"value\":\"4.3 协方差矩阵的作用\",\"url\":\"#43-协方差矩阵的作用\",\"depth\":3},{\"value\":\"5 - 实战技巧与常见问题\",\"url\":\"#5---实战技巧与常见问题\",\"depth\":2},{\"value\":\"5.1 如何选择特征?\",\"url\":\"#51-如何选择特征\",\"depth\":3},{\"value\":\"5.2 处理不平衡数据\",\"url\":\"#52-处理不平衡数据\",\"depth\":3},{\"value\":\"5.3 模型验证与调试\",\"url\":\"#53-模型验证与调试\",\"depth\":3},{\"value\":\"5.4 性能优化\",\"url\":\"#54-性能优化\",\"depth\":3},{\"value\":\"5.5 扩展到其他异常检测方法\",\"url\":\"#55-扩展到其他异常检测方法\",\"depth\":3},{\"value\":\"总结\",\"url\":\"#总结\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"异常检测:高斯模型在服务器异常检测中的应用\",\"datePublished\":\"2025-04-21T00:00:00.000Z\",\"dateModified\":\"2025-04-21T00:00:00.000Z\",\"description\":\"本文详细讲解了异常检测算法的原理与实现,从理论基础到实际应用,通过监测服务器指标来检测网络中的异常行为。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/AnomalyDetection\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"K-means 聚类算法:从理论到图像压缩\",\"date\":\"2025-04-20T00:00:00.000Z\",\"tags\":[\"Machine Learning\",\"Clustering\",\"Image Processing\",\"K-means\",\"Python\",\"Unsupervised Learning\"],\"draft\":false,\"comments\":false,\"summary\":\"在这篇博客中ï¼
1Œæˆ‘们将深入探索 K-means 聚类算法,了解它如何将数据分组,并将其应用于图像压缩,减少图像颜色数量。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"15 min read\",\"minutes\":14.3,\"time\":858000,\"words\":2860},\"slug\":\"k-means\",\"path\":\"blog/k-means\",\"filePath\":\"blog/k-means.mdx\",\"toc\":[{\"value\":\"目录\",\"url\":\"#目录\",\"depth\":2},{\"value\":\"1 - 实现 K-means 算法\",\"url\":\"#1---实现-k-means-算法\",\"depth\":2},{\"value\":\"K-means 伪代码\",\"url\":\"#k-means-伪代码\",\"depth\":3},{\"value\":\"1.1 寻找最近的簇中心\",\"url\":\"#11-寻找最近的簇中心\",\"depth\":3},{\"value\":\"练习 1:实现 find_closest_centroids\",\"url\":\"#练习-1实现-find_closest_centroids\",\"depth\":4},{\"value\":\"1.2 计算簇中心均值\",\"url\":\"#12-计算簇中心均值\",\"depth\":3},{\"value\":\"练习 2:实现 compute_centroids\",\"url\":\"#练习-2实现-compute_centroids\",\"depth\":4},{\"value\":\"2 - 在样例数据集上运行 K-means\",\"url\":\"#2---在样例数据集上运行-k-means\",\"depth\":2},{\"value\":\"3 - 随机初始化簇中心\",\"url\":\"#3---随机初始化簇中心\",\"depth\":2},{\"value\":\"4 - 使用 K-means 进行图像压缩\",\"url\":\"#4---使用-k-means-进行图像压缩\",\"depth\":2},{\"value\":\"4.1 图像数据集\",\"url\":\"#41-图像数据集\",\"depth\":3},{\"value\":\"4.2 对图像像素应用 K-means\",\"url\":\"#42-对图像像素应用-k-means\",\"depth\":3},{\"value\":\"4.3 压缩图像\",\"url\":\"#43-压缩图像\",\"depth\":3},{\"value\":\"5 - 交互式可视化探索\",\"url\":\"#5---交互式可视化探索\",\"depth\":2},{\"value\":\"5.1 怎么选 K 才更稳妥?\",\"url\":\"#51-怎么选-k-才更稳妥\",\"depth\":3},{\"value\":\"5.2 常见排错建议\",\"url\":\"#52-常见排错建议\",\"depth\":3},{\"value\":\"总结\",\"url\":\"#总结\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"K-means 聚类算法:从理论到图像压缩\",\"datePublished\":\"2025-04-20T00:00:00.000Z\",\"dateModified\":\"2025-04-20T00:00:00.000Z\",\"description\":\"在这篇博客中,我们将深入探索 K-means 聚类算法,了解它如何将数据分组,并将其应用于图像压缩,减少图像颜色数量。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/k-means\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"决策树实战:从零构建蘑菇分类器\",\"date\":\"2025-04-09T00:00:00.000Z\",\"tags\":[\"Machine Learning\",\"Decision Tree\",\"Information Gain\"],\"draft\":false,\"comments\":false,\"summary\":\"从零开始构建一个决策树,用它来判断蘑菇是否可食用。通过理论讲解、代码实现和可视化,你将掌握决策树的核心原理。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"17 min read\",\"minutes\":16.485,\"time\":989100,\"words\":3297},\"slug\":\"DecisionTree\",\"path\":\"blog/DecisionTree\",\"filePath\":\"blog/DecisionTree.mdx\",\"toc\":[{\"value\":\"目录\",\"url\":\"#目录\",\"depth\":2},{\"value\":\"1 - 准备工具包\",\"url\":\"#1---准备工具包\",\"depth\":2},{\"value\":\"2 - 问题背景\",\"url\":\"#2---问题背景\",\"depth\":2},{\"value\":\"3 - 数据集概览\",\"url\":\"#3---数据集概览\",\"depth\":2},{\"value\":\"3.1 独热编码数据集\",\"url\":\"#31-独热编码数据集\",\"depth\":3},{\"value\":\"探索数据\",\"url\":\"#探索数据\",\"depth\":4},{\"value\":\"检查数据规模\",\"url\":\"#检查数据规模\",\"depth\":4},{\"value\":\"4 - 决策树基础\",\"url\":\"#4---决策树基础\",\"depth\":2},{\"value\":\"4.1 计算熵\",\"url\":\"#41-计算熵\",\"depth\":3},{\"value\":\"动手练习 1:实现熵计算\",\"url\":\"#动手练习-1实现熵计算\",\"depth\":4},{\"value\":\"4.2 数据集分割 数据3\",\"url\":\"#42-数据集分割-数据3\",\"depth\":3},{\"value\":\"动手练习 2:实现数据分割\",\"url\":\"#动手练习-2实现数据分割\",\"depth\":4},{\"value\":\"4.3 计算信息增益\",\"url\":\"#43-计算信息增益\",\"depth\":3},{\"value\":\"动手练习 3:实现信息增益\",\"url\":\"#动手练习-3实现信息增益\",\"depth\":4},{\"value\":\"4.4 选择最佳分割\",\"url\":\"#44-选择最佳分割\",\"depth\":3},{\"value\":\"动手练习 4:找到最佳特征\",\"url\":\"#动手练习-4找到最佳特征\",\"depth\":4},{\"value\":\"5 - 构建决策树\",\"url\":\"#5---构建决策树\",\"depth\":2},{\"value\":\"6 - 交互式可视化探索\",\"url\":\"#6---交互式可视化探索\",\"depth\":2},{\"value\":\"6.1 新手常见误区\",\"url\":\"#61-新手常见误区\",\"depth\":3},{\"value\":\"总结\",\"url\":\"#总结\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"决策树实战:从零构建蘑菇分类器\",\"datePublished\":\"2025-04-09T00:00:00.000Z\",\"dateModified\":\"2025-04-09T00:00:00.000Z\",\"description\":\"从零开始构建一个决策树,用它来判断蘑菇是否可食用。通过理论讲解、代码实现和可视化,你将掌握决策树的核心原理。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/DecisionTree\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"机器学习模型评估与改进\",\"date\":\"2025-04-05T00:00:00.000Z\",\"tags\":[\"Machine Learning\",\"Model Evaluation\",\"Overfitting\",\"Regularization\",\"Neural Networks\"],\"draft\":false,\"comments\":false,\"summary\":\"本文系统讲解机器学习模型评估的核心方法论,通过多项式回归与神经网络双视角,深入解析训练集/验证集/测试集的协同工作机制。结合梯度下降可视化与正则化技术,完整呈现从欠拟合识别、过拟合修正到模型泛化的全流程优化策略,并提供可复现的Python代码实现。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"33 min read\",\"minutes\":32.695,\"time\":1961700,\"words\":6539},\"slug\":\"C2_W3_Assignment3\",\"path\":\"blog/C2_W3_Assignment3\",\"filePath\":\"blog/C2_W3_Assignment3.mdx\",\"toc\":[{\"value\":\"目录\",\"url\":\"#目录\",\"depth\":2},{\"value\":\"1 - 准备工具包\",\"url\":\"#1---准备工具包\",\"depth\":2},{\"value\":\"2 - 评估学习算法(多项式回归)\",\"url\":\"#2---评估学习算法多项式回归\",\"depth\":2}
1,{\"value\":\"2.1 数据集分割\",\"url\":\"#21-数据集分割\",\"depth\":3},{\"value\":\"2.2 模型评估的误差计算(线性回归)\",\"url\":\"#22-模型评估的误差计算线性回归\",\"depth\":3},{\"value\":\"练习 1\",\"url\":\"#练习-1\",\"depth\":4},{\"value\":\"2.3 比较训练和测试数据的性能\",\"url\":\"#23-比较训练和测试数据的性能\",\"depth\":3},{\"value\":\"3 - 偏差与方差\",\"url\":\"#3---偏差与方差\",\"depth\":2},{\"value\":\"3.1 绘制训练、交叉验证和测试数据\",\"url\":\"#31-绘制训练交叉验证和测试数据\",\"depth\":3},{\"value\":\"3.2 寻找最优多项式阶数\",\"url\":\"#32-寻找最优多项式阶数\",\"depth\":3},{\"value\":\"3.3 调整正则化\",\"url\":\"#33-调整正则化\",\"depth\":3},{\"value\":\"3.4 获取更多数据:增加训练集规模\",\"url\":\"#34-获取更多数据增加训练集规模\",\"depth\":3},{\"value\":\"4 - 评估学习算法(神经网络)\",\"url\":\"#4---评估学习算法神经网络\",\"depth\":2},{\"value\":\"4.1 数据集\",\"url\":\"#41-数据集\",\"depth\":3},{\"value\":\"4.2 通过计算分类误差评估分类模型\",\"url\":\"#42-通过计算分类误差评估分类模型\",\"depth\":3},{\"value\":\"练习 2\",\"url\":\"#练习-2\",\"depth\":4},{\"value\":\"5 - 模型复杂度\",\"url\":\"#5---模型复杂度\",\"depth\":2},{\"value\":\"练习 3\",\"url\":\"#练习-3\",\"depth\":4},{\"value\":\"5.1 简单模型\",\"url\":\"#51-简单模型\",\"depth\":3},{\"value\":\"练习 4\",\"url\":\"#练习-4\",\"depth\":4},{\"value\":\"6 - 正则化\",\"url\":\"#6---正则化\",\"depth\":2},{\"value\":\"练习 5\",\"url\":\"#练习-5\",\"depth\":4},{\"value\":\"7 - 迭代寻找最优正则化值\",\"url\":\"#7---迭代寻找最优正则化值\",\"depth\":2},{\"value\":\"7.1 测试\",\"url\":\"#71-测试\",\"depth\":3},{\"value\":\"8 - 交互式可视化探索\",\"url\":\"#8---交互式可视化探索\",\"depth\":2},{\"value\":\"8.1 偏差-方差权衡可视化\",\"url\":\"#81-偏差-方差权衡可视化\",\"depth\":3},{\"value\":\"8.2 正则化效果动画\",\"url\":\"#82-正则化效果动画\",\"depth\":3},{\"value\":\"8.3 学习曲线3D可视化\",\"url\":\"#83-学习曲线3d可视化\",\"depth\":3},{\"value\":\"9 - 深入理解模型诊断\",\"url\":\"#9---深入理解模型诊断\",\"depth\":2},{\"value\":\"9.1 偏差-方差分解的数学原理\",\"url\":\"#91-偏差-方差分解的数学原理\",\"depth\":3},{\"value\":\"9.2 正则化的几何解释\",\"url\":\"#92-正则化的几何解释\",\"depth\":3},{\"value\":\"9.3 交叉验证的高级技巧\",\"url\":\"#93-交叉验证的高级技巧\",\"depth\":3},{\"value\":\"10 - 常见问题与解决方案\",\"url\":\"#10---常见问题与解决方案\",\"depth\":2},{\"value\":\"问题1:如何判断是否需要更多数据?\",\"url\":\"#问题1如何判断是否需要更多数据\",\"depth\":3},{\"value\":\"问题2:正则化参数λ如何选择?\",\"url\":\"#问题2正则化参数λ如何选择\",\"depth\":3},{\"value\":\"问题3:神经网络过拟合严重怎么办?\",\"url\":\"#问题3神经网络过拟合严重怎么办\",\"depth\":3},{\"value\":\"问题4:多项式特征导致维度爆炸\",\"url\":\"#问题4多项式特征导致维度爆炸\",\"depth\":3},{\"value\":\"11 - 实战技巧总结\",\"url\":\"#11---实战技巧总结\",\"depth\":2},{\"value\":\"模型评估检查清单\",\"url\":\"#模型评估检查清单\",\"depth\":3},{\"value\":\"性能优化建议\",\"url\":\"#性能优化建议\",\"depth\":3},{\"value\":\"扩展学习方向\",\"url\":\"#扩展学习方向\",\"depth\":3},{\"value\":\"总结\",\"url\":\"#总结\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"机器学习模型评估与改进\",\"datePublished\":\"2025-04-05T00:00:00.000Z\",\"dateModified\":\"2025-04-05T00:00:00.000Z\",\"description\":\"本文系统讲解机器学习模型评估的核心方法论,通过多项式回归与神经网络双视角,深入解析训练集/验证集/测试集的协同工作机制。结合梯度下降可视化与正则化技术,完整呈现从欠拟合识别、过拟合修正到模型泛化的全流程优化策略,并提供可复现的Python代码实现。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/C2_W3_Assignment3\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"多类分类神经网络:手写数字0-9识别\",\"date\":\"2025-03-31T00:00:00.000Z\",\"tags\":[\"Machine Learning\",\"Deep Learning\",\"TensorFlow\",\"Keras\",\"Neural Networks\",\"Multiclass Classification\",\"Python\"],\"draft\":false,\"comments\":false,\"summary\":\"本文通过TensorFlow实战,详解如何构建神经网络实现手写数字0-9的多分类识别,涵盖模型设计、训练优化与结果分析。\",\"authors\":[\"Allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"14 min read\",\"minutes\":13.525,\"time\":811500,\"words\":2705},\"slug\":\"C2_W2_Assignment2\",\"path\":\"blog/C2_W2_Assignment2\",\"filePath\":\"blog/C2_W2_Assignment2.mdx\",\"toc\":[{\"value\":\"手写数字识别神经网络实战指南\",\"url\":\"#手写数字识别神经网络实战指南\",\"depth\":1},{\"value\":\"欢迎词\",\"url\":\"#欢迎词\",\"depth\":2},{\"value\":\"目录\",\"url\":\"#目录\",\"depth\":2},{\"value\":\"一、环境与数据准备\",\"url\":\"#一环境与数据准备\",\"depth\":2},{\"value\":\"1.1 环境配置\",\"url\":\"#11-环境配置\",\"depth\":3}
1,{\"value\":\"1.2 数据集加载与预览\",\"url\":\"#12-数据集加载与预览\",\"depth\":3},{\"value\":\"数据可视化示例\",\"url\":\"#数据可视化示例\",\"depth\":4},{\"value\":\"二、关键组件解析\",\"url\":\"#二关键组件解析\",\"depth\":2},{\"value\":\"2.1 ReLU激活函数\",\"url\":\"#21-relu激活函数\",\"depth\":3},{\"value\":\"2.2 Softmax函数\",\"url\":\"#22-softmax函数\",\"depth\":3},{\"value\":\"三、神经网络构建\",\"url\":\"#三神经网络构建\",\"depth\":2},{\"value\":\"3.1 模型架构设计\",\"url\":\"#31-模型架构设计\",\"depth\":3},{\"value\":\"3.2 损失函数与优化器配置\",\"url\":\"#32-损失函数与优化器配置\",\"depth\":3},{\"value\":\"3.3 模型训练\",\"url\":\"#33-模型训练\",\"depth\":3},{\"value\":\"四、模型评估与预测\",\"url\":\"#四模型评估与预测\",\"depth\":2},{\"value\":\"4.1 准确率计算\",\"url\":\"#41-准确率计算\",\"depth\":3},{\"value\":\"4.2 结果可视化验证\",\"url\":\"#42-结果可视化验证\",\"depth\":3},{\"value\":\"4.3 错误分析\",\"url\":\"#43-错误分析\",\"depth\":3},{\"value\":\"五、进阶优化建议\",\"url\":\"#五进阶优化建议\",\"depth\":2},{\"value\":\"5.1 超参数调优\",\"url\":\"#51-超参数调优\",\"depth\":3},{\"value\":\"5.2 数据增强\",\"url\":\"#52-数据增强\",\"depth\":3},{\"value\":\"5.3 模型结构改进\",\"url\":\"#53-模型结构改进\",\"depth\":3},{\"value\":\"六、完整代码整合\",\"url\":\"#六完整代码整合\",\"depth\":2},{\"value\":\"6.1 交互式可视化探索\",\"url\":\"#61-交互式可视化探索\",\"depth\":2},{\"value\":\"6.1.1 Softmax概率分布可视化\",\"url\":\"#611-softmax概率分布可视化\",\"depth\":3},{\"value\":\"6.1.2 多分类训练过程动画\",\"url\":\"#612-多分类训练过程动画\",\"depth\":3},{\"value\":\"6.1.3 决策边界3D可视化\",\"url\":\"#613-决策边界3d可视化\",\"depth\":3},{\"value\":\"6.2 深入理解Softmax与交叉熵\",\"url\":\"#62-深入理解softmax与交叉熵\",\"depth\":2},{\"value\":\"6.2.1 为什么使用SparseCategoricalCrossentropy?\",\"url\":\"#621-为什么使用sparsecategoricalcrossentropy\",\"depth\":3},{\"value\":\"6.2.2 温度缩放(Temperature Scaling)\",\"url\":\"#622-温度缩放temperature-scaling\",\"depth\":3},{\"value\":\"6.3 常见问题与解决方案\",\"url\":\"#63-常见问题与解决方案\",\"depth\":2},{\"value\":\"问题1:训练损失不下降\",\"url\":\"#问题1训练损失不下降\",\"depth\":3},{\"value\":\"问题2:过拟合(训练准确率高但测试准确率低)\",\"url\":\"#问题2过拟合训练准确率高但测试准确率低\",\"depth\":3},{\"value\":\"问题3:某些类别准确率特别低\",\"url\":\"#问题3某些类别准确率特别低\",\"depth\":3},{\"value\":\"6.4 实战技巧总结\",\"url\":\"#64-实战技巧总结\",\"depth\":2},{\"value\":\"调试检查清单\",\"url\":\"#调试检查清单\",\"depth\":3},{\"value\":\"性能优化建议\",\"url\":\"#性能优化建议\",\"depth\":3},{\"value\":\"扩展学习方向\",\"url\":\"#扩展学习方向\",\"depth\":3},{\"value\":\"七、总结与展望\",\"url\":\"#七总结与展望\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"多类分类神经网络:手写数字0-9识别\",\"datePublished\":\"2025-03-31T00:00:00.000Z\",\"dateModified\":\"2025-03-31T00:00:00.000Z\",\"description\":\"本文通过TensorFlow实战,详解如何构建神经网络实现手写数字0-9的多分类识别,涵盖模型设计、训练优化与结果分析。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/C2_W2_Assignment2\",\"author\":[{\"@type\":\"Person\",\"name\":\"$undefined\"}]}},{\"title\":\"二元分类神经网络:手写数字0/1识别\",\"date\":\"2025-03-30T00:00:00.000Z\",\"tags\":[\"Machine Learning\",\"Deep Learning\",\"TensorFlow\",\"Keras\",\"Neural Networks\",\"Python\"],\"draft\":false,\"comments\":false,\"summary\":\"在这篇博客中,我们将深入探索如何使用神经网络实现手写数字0和1的二分类识别。\",\"authors\":[\"Allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"18 min read\",\"minutes\":17.205,\"time\":1032300,\"words\":3441},\"slug\":\"C2_W1_Assignment\",\"path\":\"blog/C2_W1_Assignment\",\"filePath\":\"blog/C2_W1_Assignment.mdx\",\"toc\":[{\"value\":\"手写数字0/1识别:神经网络实践指南\",\"url\":\"#手写数字01识别神经网络实践指南\",\"depth\":1},{\"value\":\"欢迎来到神经网络的学习之旅!\",\"url\":\"#欢迎来到神经网络的学习之旅\",\"depth\":2},{\"value\":\"你将学到什么\",\"url\":\"#你将学到什么\",\"depth\":3},{\"value\":\"目录\",\"url\":\"#目录\",\"depth\":2},{\"value\":\"1 - 环境准备:搭建学习舞台\",\"url\":\"#1---环境准备搭建学习舞台\",\"depth\":2},{\"value\":\"2 - 数据探索:了解我们的“原材料”\",\"url\":\"#2---数据探索了解我们的原材料\",\"depth\":2},{\"value\":\"2.1 数据集概览\",\"url\":\"#21-数据集概览\",\"depth\":3},{\"value\":\"2.2 数据可视化\",\"url\":\"#22-数据可视化\",\"depth\":3},{\"value\":\"3 - 模型构建:从高层到低层的双视角\",\"url\":\"#3---模型构建从高层到低层的双视角\",\"depth\":2},{\"value\":\"3.1 TensorFlow实现:快速上手\",\"url\":\"#31-tensorflow实现快速上手\",\"depth\":3},{\"value\":\"3.2 NumPy手写实现:理解底层原理\",\"url\":\"#32-numpy手写实现理解底层原理\",\"depth\":3},{\"value\":\"3.3 可选:向量化NumPy实现\",\"url\":\"#33-可选向量化numpy实现\",\"depth\":3},{\"value\":\"4 - 训练与评估:让模型“学会”识别\",\"url\":\"#4---训练与评估让模型学会识别\",\"depth\":2},{\"value\":\"4.1 模型训练\",\"url\":\"#41-模型训练\",\"depth\":3},{\"value\":\"4.2 结果可视化\",\"url\":\"#42-结果可视化\",\"depth\":3},{\"value\":\"5 - 关键技术解析\",\"url\":\"#5---关键技术解析\",\"depth\":2},{\"value\":\"5.1 激活函数对比\",\"url\":\"#51-激活函数对比\",\"depth\":3},{\"value\":\"5.2 参数计算原理\",\"url\":\"#52-参数计算原理\",\"depth\":3},{\"value\":\"5.3 可选:NumPy广播教程\",\"url\":\"#53-可选numpy广播教程\",\"depth\":3},{\"value\":\"6 - 交互式可视化探索\",\"url\":\"#6---交互式可视化探索\",\"depth\":2},{\"value\":\"6.1 神经网络结构可视化\",\"url\":\"#61-神经网络结构可视化\",\"depth\":3},{\"value\":\"6.2 训练过程动画\",\"url\":\"#62-训练过程动画\",\"depth\":3},{\"value\":\"6.3 决策边界可视化\",\"url\":\"#63-决策边界可视化\",\"depth\":3},{\"value\":\"7 - 深入理解神经网络\",\"url\":\"#7---深入理解神经网络\",\"depth\":2},{\"value\":\"7.1 前向传播的数学原理\",\"url\":\"#71-前向传播的数学原理\",\"depth\":3},{\"value\":\"7.2 损失函数详解\",\"url\":\"#72-损失函数详解\",\"depth\":3},{\"value\":\"7.3 优化器原理\",\"url\":\"#73-优化器原理\",\"depth\":3},{\"value\":\"8 - 常见问题与调试技巧\",\"url\":\"#8---常见问题与调试技巧\",\"depth\":2},{\"value\":\"8.1 模型不收敛怎么办?\",\"url\":\"#81-模型不收敛怎么办\",\"depth\":3},{\"value\":\"8.2 过拟合问题\",\"url\":\"#82-过拟合问题\",\"depth\":3},{\"value\":\"8.3 训练速度优化\",\"url\":\"#83-训练速度优化\",\"depth\":3},{\"value\":\"8.4 调试检查清单\",\"url\":\"#84-调试检查清单\",\"depth\":3},{\"value\":\"9 - 进阶话题\",\"url\":\"#9---进阶话题\",\"depth\":2},{\"value\":\"9.1 从二分类到多分类\",\"url\":\"#91-从二分类到多分类\",\"depth\":3},{\"value\":\"9.2 卷积神经网络(CNN)\",\"url\":\"#92-卷积神经网络cnn\",\"depth\":3},{\"value\":\"9.3 模型评估指标\",\"url\":\"#93-模型评估指标\",\"depth\":3},{\"value\":\"总结与展望\",\"url\":\"#总结与展望\",\"depth\":2},{\"value\":\"实现成果\",\"url\":\"#实现成果\",\"depth\":3},{\"value\":\"扩展挑战\",\"url\":\"#扩展挑战\",\"depth\":3}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"二元分类神经网络:手写数字0/1识别\",\"datePublished\":\"2025-03-30T00:00:00.000Z\",\"dateModified\":\"2025-03-30T00:00:00.000Z\",\"description\":\"在这篇博客中ï¼
1Œæˆ‘们将深入探索如何使用神经网络实现手写数字0和1的二分类识别。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/C2_W1_Assignment\",\"author\":[{\"@type\":\"Person\",\"name\":\"$undefined\"}]}},{\"title\":\"逻辑回归:从理论到实践\",\"date\":\"2025-03-25T00:00:00.000Z\",\"tags\":[\"Machine Learning\",\"Logistic Regression\",\"Python\"],\"draft\":false,\"comments\":false,\"summary\":\"欢迎来到这场逻辑回归的学习之旅!我们将从头构建逻辑回归模型,预测学生录取和芯片质量。结合理论、Python代码和可视化,让你轻松掌握这一核心算法。\",\"authors\":[\"Allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"24 min read\",\"minutes\":23.95,\"time\":1437000,\"words\":4790},\"slug\":\"C1_W3_Logistic_Regression\",\"path\":\"blog/C1_W3_Logistic_Regression\",\"filePath\":\"blog/C1_W3_Logistic_Regression.mdx\",\"toc\":[{\"value\":\"你将学到什么\",\"url\":\"#你将学到什么\",\"depth\":2},{\"value\":\"目录\",\"url\":\"#目录\",\"depth\":2},{\"value\":\"1 - 准备工具包\",\"url\":\"#1---准备工具包\",\"depth\":2},{\"value\":\"2 - 逻辑回归基础\",\"url\":\"#2---逻辑回归基础\",\"depth\":2},{\"value\":\"2.1 问题背景\",\"url\":\"#21-问题背景\",\"depth\":3},{\"value\":\"2.2 数据探索\",\"url\":\"#22-数据探索\",\"depth\":3},{\"value\":\"查看数据\",\"url\":\"#查看数据\",\"depth\":4},{\"value\":\"可视化数据\",\"url\":\"#可视化数据\",\"depth\":4},{\"value\":\"2.3 Sigmoid 函数\",\"url\":\"#23-sigmoid-函数\",\"depth\":3},{\"value\":\"2.4 成本函数\",\"url\":\"#24-成本函数\",\"depth\":3},{\"value\":\"2.5 梯度下降\",\"url\":\"#25-梯度下降\",\"depth\":3},{\"value\":\"2.6 训练模型\",\"url\":\"#26-训练模型\",\"depth\":3},{\"value\":\"2.7 决策边界可视化\",\"url\":\"#27-决策边界可视化\",\"depth\":3},{\"value\":\"2.8 评估模型\",\"url\":\"#28-评估模型\",\"depth\":3},{\"value\":\"3 - 正则化逻辑回归\",\"url\":\"#3---正则化逻辑回归\",\"depth\":2},{\"value\":\"3.1 新问题\",\"url\":\"#31-新问题\",\"depth\":3},{\"value\":\"3.2 数据洞察\",\"url\":\"#32-数据洞察\",\"depth\":3},{\"value\":\"3.3 特征映射\",\"url\":\"#33-特征映射\",\"depth\":3},{\"value\":\"3.4 正则化成本函数\",\"url\":\"#34-正则化成本函数\",\"depth\":3},{\"value\":\"3.5 正则化梯度\",\"url\":\"#35-正则化梯度\",\"depth\":3},{\"value\":\"3.6 带正则化的训练\",\"url\":\"#36-带正则化的训练\",\"depth\":3},{\"value\":\"3.7 复杂边界的可视化\",\"url\":\"#37-复杂边界的可视化\",\"depth\":3},{\"value\":\"3.8 评估正则化模型\",\"url\":\"#38-评估正则化模型\",\"depth\":3},{\"value\":\"4 - 交互式可视化探索\",\"url\":\"#4---交互式可视化探索\",\"depth\":2},{\"value\":\"4.1 Sigmoid函数可视化\",\"url\":\"#41-sigmoid函数可视化\",\"depth\":3},{\"value\":\"4.2 决策边界交互式调整\",\"url\":\"#42-决策边界交互式调整\",\"depth\":3},{\"value\":\"4.3 正则化效果对比\",\"url\":\"#43-正则化效果对比\",\"depth\":3},{\"value\":\"5 - 深入理解逻辑回归\",\"url\":\"#5---深入理解逻辑回归\",\"depth\":2},{\"value\":\"5.1 为什么使用Sigmoid函数?\",\"url\":\"#51-为什么使用sigmoid函数\",\"depth\":3},{\"value\":\"Sigmoid的数学性质\",\"url\":\"#sigmoid的数学性质\",\"depth\":4},{\"value\":\"5.2 成本函数的直觉理解\",\"url\":\"#52-成本函数的直觉理解\",\"depth\":3},{\"value\":\"对数损失的优势\",\"url\":\"#对数损失的优势\",\"depth\":4},{\"value\":\"5.3 梯度下降的收敛分析\",\"url\":\"#53-梯度下降的收敛分析\",\"depth\":3},{\"value\":\"学习率的影响\",\"url\":\"#学习率的影响\",\"depth\":4},{\"value\":\"5.4 正则化的数学原理\",\"url\":\"#54-正则化的数学原理\",\"depth\":3},{\"value\":\"L2正则化(Ridge)\",\"url\":\"#l2正则化ridge\",\"depth\":4},{\"value\":\"正则化强度的选择\",\"url\":\"#正则化强度的选择\",\"depth\":4},{\"value\":\"6 - 实战技巧与常见问题\",\"url\":\"#6---实战技巧与常见问题\",\"depth\":2},{\"value\":\"6.1 特征工程技巧\",\"url\":\"#61-特征工程技巧\",\"depth\":3},{\"value\":\"特征缩放的重要性\",\"url\":\"#特征缩放的重要性\",\"depth\":4},{\"value\":\"多项式特征创建\",\"url\":\"#多项式特征创建\",\"depth\":4},{\"value\":\"6.2 模型评估指标\",\"url\":\"#62-模型评估指标\",\"depth\":3},{\"value\":\"混淆矩阵\",\"url\":\"#混淆矩阵\",\"depth\":4},{\"value\":\"ROC曲线和AUC\",\"url\":\"#roc曲线和auc\",\"depth\":4},{\"value\":\"6.3 类别不平衡处理\",\"url\":\"#63-类别不平衡处理\",\"depth\":3},{\"value\":\"方法1:调整类别权重\",\"url\":\"#方法1调整类别权重\",\"depth\":4},{\"value\":\"方法2:重采样\",\"url\":\"#方法2重采样\",\"depth\":4},{\"value\":\"6.4 调试检查清单\",\"url\":\"#64-调试检查清单\",\"depth\":3},{\"value\":\"6.5 性能优化技巧\",\"url\":\"#65-性能优化技巧\",\"depth\":3},{\"value\":\"向量化实现\",\"url\":\"#向量化实现\",\"depth\":4},{\"value\":\"7 - 扩展学习方向\",\"url\":\"#7---扩展学习方向\",\"depth\":2},{\"value\":\"7.1 多分类问题\",\"url\":\"#71-多分类问题\",\"depth\":3},{\"value\":\"7.2 Softmax回归\",\"url\":\"#72-softmax回归\",\"depth\":3},{\"value\":\"7.3 高级优化算法\",\"url\":\"#73-高级优化算法\",\"depth\":3},{\"value\":\"7.4 深度学习的桥梁\",\"url\":\"#74-深度学习的桥梁\",\"depth\":3},{\"value\":\"总结\",\"url\":\"#总结\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"逻辑回归:从理论到实践\",\"datePublished\":\"2025-03-25T00:00:00.000Z\",\"dateModified\":\"2025-03-25T00:00:00.000Z\",\"description\":\"欢迎来到这场逻辑回归的学习之旅!我们将从头构建逻辑回归模型,预测学生录取和芯片质量。结合理论、Python代码和可视化,让你轻松掌握这一核心算法。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/C1_W3_Logistic_Regression\",\"author\":[{\"@type\":\"Person\",\"name\":\"$undefined\"}]}},{\"title\":\"线性回归中的梯度下降法:从理论到实践\",\"date\":\"2025-03-22T00:00:00.000Z\",\"tags\":[\"Machine Learning\",\"Linear Regression\",\"Gradient Descent\",\"Python\"],\"draft\":false,\"comments\":false,\"summary\":\"欢迎体验这场关于线性回归和梯度下降的探索之旅!我们将深入探讨如何使用梯度下降法优化线性回归模型的参数 w 和 b,通过理论、代码和可视化帮你掌握这一核心算法。让我们开始吧!\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"26 min read\",\"minutes\":25.42,\"time\":1525200,\"words\":5084},\"slug\":\"C1_W2_Linear_Regression\",\"path\":\"blog/C1_W2_Linear_Regression\",\"filePath\":\"blog/C1_W2_Linear_Regression.mdx\",\"toc\":[{\"value\":\"深入探索梯度下降法在线性回归中的应用\",\"url\":\"#深入探索梯度下降法在线性回归中的应用\",\"depth\":1},{\"value\":\"目录\",\"url\":\"#目录\",\"depth\":2},{\"value\":\"1 - 准备工具包\",\"url\":\"#1---准备工具包\",\"depth\":2},{\"value\":\"创建 utils.py\",\"url\":\"#创建-utilspy\",\"depth\":3},{\"value\":\"加载工具包\",\"url\":\"#加载工具包\",\"depth\":3},{\"value\":\"2 - 单变量线性回归\",\"url\":\"#2---单变量线性回归\",\"depth\":2},{\"value\":\"2.1 问题背景\",\"url\":\"#21-问题背景\",\"depth\":3},{\"value\":\"2.2 数据集概览\",\"url\":\"#22-数据集概览\",\"depth\":3},{\"value\":\"查看数据\",\"url\":\"#查看数据\",\"depth\":4},{\"value\":\"检查数据规模\",\"url\":\"#检查数据规模\",\"depth\":4},{\"value\":\"数据可视化\",\"url\":\"#数据可视化\",\"depth\":4},{\"value\":\"2.3 线性回归基础\",\"url\":\"#23-线性回归基础\",\"depth\":3},{\"value\":\"2.4 计算成本函数\",\"url\":\"#24-计算成本函数\",\"depth\":3},{\"value\":\"练习 1:实现成本函数\",\"url\":\"#练习-1实现成本函数\",\"depth\":4},{\"value\":\"2.5 梯度下降法\",\"url\":\"#25-梯度下降法\",\"depth\":3},{\"value\":\"练习 2:实现梯度计算\",\"url\":\"#练习-2实现梯度计算\",\"depth\":4},{\"value\":\"2.6 优化参数\",\"url\":\"#26-优化参数\",\"depth\":3},{\"value\":\"绘制拟合结果\",\"url\":\"#绘制拟合结果\",\"depth\":4},{\"value\":\"利润预测\",\"url\":\"#利润预测\",\"depth\":4},{\"value\":\"3 - 交互式可视化探索\",\"url\":\"#3---交互式可视化探索\",\"depth\":2},{\"value\":\"3.1 线性回归拟合可视化\",\"url\":\"#31-线性回归拟合可视化\",\"depth\":3},{\"value\":\"3.2 成本函数3D可视化\",\"url\":\"#32-成本函数3d可视化\",\"depth\":3},{\"value\":\"3.3 梯度下降动画演示\",\"url\":\"#33-梯度下降动画演示\",\"depth\":3},{\"value\":\"4 - 深入理解梯度下降\",\"url\":\"#4---深入理解梯度下降\",\"depth\":2},{\"value\":\"4.1 学习率的影响\",\"url\":\"#41-学习率的影响\",\"depth\":3},{\"value\":\"学习率过小\",\"url\":\"#学习率过小\",\"depth\":4},{\"value\":\"学习率过大\",\"url\":\"#学习率过大\",\"depth\":4},{\"value\":\"合适的学习率\",\"url\":\"#合适的学习率\",\"depth\":4},{\"value\":\"4.2 收敛判断\",\"url\":\"#42-收敛判断\",\"depth\":3},{\"value\":\"方法1:成本变化阈值\",\"url\":\"#方法1成本变化阈值\",\"depth\":4},{\"value\":\"方法2:梯度范数\",\"url\":\"#方法2梯度范数\",\"depth\":4},{\"value\":\"4.3 特征缩放的重要性\",\"url\":\"#43-特征缩放的重要性\",\"depth\":3},{\"value\":\"问题示例\",\"url\":\"#问题示例\",\"depth\":4},{\"value\":\"解决方案:特征归一化\",\"url\":\"#解决方案特征归一化\",\"depth\":4},{\"value\":\"5 - 常见问题与解决方案\",\"url\":\"#5---常见问题与解决方案\",\"depth\":2},{\"value\":\"5.1 成本函数不下降怎么办?\",\"url\":\"#51-成本函数不下降怎么办\",\"depth\":3},{\"value\":\"5.2 如何选择迭代次数?\",\"url\":\"#52-如何选择迭代次数\",\"depth\":3},{\"value\":\"5.3 向量化实现提升性能\",\"url\":\"#53-向量化实现提升性能\",\"depth\":3},{\"value\":\"向量化的成本函数\",\"url\":\"#向量化的成本函数\",\"depth\":4},{\"value\":\"向量化的梯度计算\",\"url\":\"#向量化的梯度计算\",\"depth\":4},{\"value\":\"性能对比\",\"url\":\"#性能对比\",\"depth\":4},{\"value\":\"5.4 多项式回归扩展\",\"url\":\"#54-多项式回归扩展\",\"depth\":3},{\"value\":\"多项式特征\",\"url\":\"#多项式特征\",\"depth\":4},{\"value\":\"可视化多项式拟合\",\"url\":\"#可视化多项式拟合\",\"depth\":4},{\"value\":\"6 - 实战技巧总结\",\"url\":\"#6---实战技巧总结\",\"depth\":2},{\"value\":\"6.1 调试检查清单\",\"url\":\"#61-调试检查清单\",\"depth\":3},{\"value\":\"6.2 性能优化建议\",\"url\":\"#62-性能优化建议\",\"depth\":3},{\"value\":\"6.3 扩展学习方向\",\"url\":\"#63-扩展学习方向\",\"depth\":3},{\"value\":\"总结\",\"url\":\"#总结\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"线性回归中的梯度下降法:从理论到实践\",\"datePublished\":\"2025-03-22T00:00:00.000Z\",\"dateModified\":\"2025-03-22T00:00:00.000Z\",\"description\":\"欢迎体验这场关于线性回归和梯度下降的探索之旅!我们将深入探讨如何使用梯度下降法优化线性回归模型的参数 w 和 b,通过理论、代码和可视化帮你掌握这一核心算法。让我们开始吧!\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/C1_W2_Linear_Regression\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"Java反射机制详解与应用实践\",\"date\":\"2025-02-23T00:00:00.000Z\",\"tags\":[\"Java\"],\"draft\":false,\"comments\":true,\"summary\":\"深入解析Java反射机制的核心概念、使用方法及实际应用场景。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"26 min read\",\"minutes\":25.95,\"time\":1557000,\"words\":5190},\"slug\":\"反射\",\"path\":\"blog/反射\",\"filePath\":\"blog/反射.mdx\",\"toc\":[{\"value\":\"Java反射机制\",\"url\":\"#java反射机制\",\"depth\":1},{\"value\":\"反射简介\",\"url\":\"#反射简介\",\"depth\":2},{\"value\":\"什么是反射\",\"url\":\"#什么是反射\",\"depth\":3},{\"value\":\"Java反射的作用\",\"url\":\"#java反射的作用\",\"depth\":3},{\"value\":\"反射机制有什么用\",\"url\":\"#反射机制有什么用\",\"depth\":3},{\"value\":\"哪里会用到反射机制\",\"url\":\"#哪里会用到反射机制\",\"depth\":3},{\"value\":\"反射机制的应用场景有哪些\",\"url\":\"#反射机制的应用场景有哪些\",\"depth\":3},{\"value\":\"JDBC重点(Class.forName导致类加载)\",\"url\":\"#jdbc重点classforname导致类加载\",\"depth\":3},{\"value\":\"Spring通过XML配置模式装载Bean的过程\",\"url\":\"#spring通过xml配置模式装载bean的过程\",\"depth\":3},{\"value\":\"反射机制的优缺点\",\"url\":\"#反射机制的优缺点\",\"depth\":3},{\"value\":\"反射机制的相关类在哪个包下\",\"url\":\"#反射机制的相关类在哪个包下\",\"depth\":3},{\"value\":\"反射使用步骤(获取Class对象、调用对象方法)\",\"url\":\"#反射使用步骤获取class对象调用对象方法\",\"depth\":2},{\"value\":\"获取Class对象的三种方法\",\"url\":\"#获取class对象的三种方法\",\"depth\":3},{\"value\":\"代码示例\",\"url\":\"#代码示例\",\"depth\":4},{\"value\":\"获取构造器对象,通过构造器new出一个对象\",\"url\":\"#获取构造器对象通过构造器new出一个对象\",\"depth\":3},{\"value\":\"通过反射Class对象创建一个实例对象\",\"url\":\"#通过反射class对象创建一个实例对象\",\"depth\":3},{\"value\":\"通过Class对象的newInstance()方法\",\"url\":\"#通过class对象的newinstance方法\",\"depth\":4},{\"value\":\"代码示例\",\"url\":\"#代码示例-1\",\"depth\":4},{\"value\":\"通过构造方法实例化对象,代码示例\",\"url\":\"#通过构造方法实例化对象代码示例\",\"depth\":3},{\"value\":\"通过Class对象获得一个属性对象\",\"url\":\"#通过class对象获得一个属性对象\",\"depth\":3},{\"value\":\"通过Class对象获得一个方法对象\",\"url\":\"#通过class对象获得一个方法对象\",\"depth\":3},{\"value\":\"让方法执行\",\"url\":\"#让方法执行\",\"depth\":3},{\"value\":\"Java反射创建对象效率高还是通过new创建对象的效率高?\",\"url\":\"#java反射创建对象效率高还是通过new创建对象的效率高\",\"depth\":3},{\"value\":\"反射机制相关的重要的类有哪些\",\"url\":\"#反射机制相关的重要的类有哪些\",\"depth\":3},{\"value\":\"Class代码示例\",\"url\":\"#class代码示例\",\"depth\":3},{\"value\":\"反射Field【反射/反编译一个类的属性】\",\"url\":\"#反射field反射反编译一个类的属性\",\"depth\":2},{\"value\":\"Class类方法\",\"url\":\"#class类方法\",\"depth\":3},{\"value\":\"获取一个类的父类以及所有实现的接口\",\"url\":\"#获取一个类的父类以及所有实现的接口\",\"depth\":3}
1,{\"value\":\"Field类方法\",\"url\":\"#field类方法\",\"depth\":3},{\"value\":\"反编译一个类的属性Field(本类的所有属性,不包含父类和接口),代码示例\",\"url\":\"#反编译一个类的属性field本类的所有属性不包含父类和接口代码示例\",\"depth\":3},{\"value\":\"取得实现的接口里的所有属性,代码示例\",\"url\":\"#取得实现的接口里的所有属性代码示例\",\"depth\":3},{\"value\":\"给属性赋值三要素\",\"url\":\"#给属性赋值三要素\",\"depth\":3},{\"value\":\"读属性值两个要素\",\"url\":\"#读属性值两个要素\",\"depth\":3},{\"value\":\"通过反射机制访问一个java对象的属性,代码示例\",\"url\":\"#通过反射机制访问一个java对象的属性代码示例\",\"depth\":3},{\"value\":\"set()可以访问私有属性吗?\",\"url\":\"#set可以访问私有属性吗\",\"depth\":3},{\"value\":\"Field方法\",\"url\":\"#field方法\",\"depth\":3},{\"value\":\"代码示例\",\"url\":\"#代码示例-2\",\"depth\":4},{\"value\":\"反射Method【反射/反编译一个类的方法】\",\"url\":\"#反射method反射反编译一个类的方法\",\"depth\":2},{\"value\":\"Method类方法\",\"url\":\"#method类方法\",\"depth\":3},{\"value\":\"反编译一个类的方法Method\",\"url\":\"#反编译一个类的方法method\",\"depth\":3},{\"value\":\"调用方法四要素\",\"url\":\"#调用方法四要素\",\"depth\":3},{\"value\":\"取得一个类的所有方法(包括父类和实现的接口)\",\"url\":\"#取得一个类的所有方法包括父类和实现的接口\",\"depth\":3},{\"value\":\"代码示例\",\"url\":\"#代码示例-3\",\"depth\":4},{\"value\":\"取得一个类的所有方法(不包括父类和实现的接口)\",\"url\":\"#取得一个类的所有方法不包括父类和实现的接口\",\"depth\":3},{\"value\":\"通过反射机制调用一个对象的方法\",\"url\":\"#通过反射机制调用一个对象的方法\",\"depth\":3},{\"value\":\"代码示例\",\"url\":\"#代码示例-4\",\"depth\":4},{\"value\":\"代码示例\",\"url\":\"#代码示例-5\",\"depth\":4},{\"value\":\"通过方法名和方法参数类型取得对象的方法\",\"url\":\"#通过方法名和方法参数类型取得对象的方法\",\"depth\":3},{\"value\":\"反射Constructor【反射/反编译一个类的构造方法】\",\"url\":\"#反射constructor反射反编译一个类的构造方法\",\"depth\":2},{\"value\":\"Constructor类方法\",\"url\":\"#constructor类方法\",\"depth\":3},{\"value\":\"取得一个类的所有构造函数\",\"url\":\"#取得一个类的所有构造函数\",\"depth\":3},{\"value\":\"根据参数类型取得构造函数\",\"url\":\"#根据参数类型取得构造函数\",\"depth\":3},{\"value\":\"反编译一个类的构造方法Constructor\",\"url\":\"#反编译一个类的构造方法constructor\",\"depth\":3},{\"value\":\"代码示例\",\"url\":\"#代码示例-6\",\"depth\":4},{\"value\":\"反射机制创建对象两步骤\",\"url\":\"#反射机制创建对象两步骤\",\"depth\":3}
1,{\"value\":\"通过反射机制调用构造方法实例化java对象\",\"url\":\"#通过反射机制调用构造方法实例化java对象\",\"depth\":3},{\"value\":\"代码示例\",\"url\":\"#代码示例-7\",\"depth\":4},{\"value\":\"获取一个类的父类以及实现的接口\",\"url\":\"#获取一个类的父类以及实现的接口\",\"depth\":3},{\"value\":\"代码示例\",\"url\":\"#代码示例-8\",\"depth\":4},{\"value\":\"反射操作注解\",\"url\":\"#反射操作注解\",\"depth\":3},{\"value\":\"通过反射获取类上的注解,类属性上的注解,代码示例\",\"url\":\"#通过反射获取类上的注解类属性上的注解代码示例\",\"depth\":4},{\"value\":\"反射实例应用\",\"url\":\"#反射实例应用\",\"depth\":3},{\"value\":\"使用反射向一个int集合添加一个String元素\",\"url\":\"#使用反射向一个int集合添加一个string元素\",\"depth\":3},{\"value\":\"代码示例\",\"url\":\"#代码示例-9\",\"depth\":4},{\"value\":\"通过反射修改数组元素的值\",\"url\":\"#通过反射修改数组元素的值\",\"depth\":3},{\"value\":\"代码示例\",\"url\":\"#代码示例-10\",\"depth\":4},{\"value\":\"扩展方法\",\"url\":\"#扩展方法\",\"depth\":4},{\"value\":\"通过反射修改数组的大小\",\"url\":\"#通过反射修改数组的大小\",\"depth\":3},{\"value\":\"通过反射实现通用工厂模式\",\"url\":\"#通过反射实现通用工厂模式\",\"depth\":3},{\"value\":\"总结\",\"url\":\"#总结\",\"depth\":2},{\"value\":\"核心要点回顾\",\"url\":\"#核心要点回顾\",\"depth\":3},{\"value\":\"反射机制核心流程\",\"url\":\"#反射机制核心流程\",\"depth\":3},{\"value\":\"使用建议\",\"url\":\"#使用建议\",\"depth\":3}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Java反射机制详解与应用实践\",\"datePublished\":\"2025-02-23T00:00:00.000Z\",\"dateModified\":\"2025-02-23T00:00:00.000Z\",\"description\":\"深入解析Java反射机制的核心概念、使用方法及实际应用场景。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/反射\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"LLM 在编程领域的局限性\",\"date\":\"2025-02-09T00:00:00.000Z\",\"tags\":[\"LLM\",\"coding agent\",\"context window\",\"reasoning vs. coding\"],\"draft\":false,\"comments\":true,\"summary\":\"探讨 LLM 和当前 Agent 技术在编程方面的局限性\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"15 min read\",\"minutes\":14.43,\"time\":865800,\"words\":2886},\"slug\":\"The-Limitations-of-LLMs-in-Programming\",\"path\":\"blog/The-Limitations-of-LLMs-in-Programming\",\"filePath\":\"blog/The-Limitations-of-LLMs-in-Programming.mdx\",\"toc\":[{\"value\":\"写在前面\",\"url\":\"#写在前面\",\"depth\":2},{\"value\":\"The original\",\"url\":\"#the-original\",\"depth\":2},{\"value\":\"立党老师的核心论点\",\"url\":\"#立党老师的核心论点\",\"depth\":2},{\"value\":\"我的一些想法\",\"url\":\"#我的一些想法\",\"depth\":2},{\"value\":\"再往深想一层\",\"url\":\"#再往深想一层\",\"depth\":2},{\"value\":\"Reasoning 强不代表 Engineering 强\",\"url\":\"#reasoning-强不代表-engineering-强\",\"depth\":3},{\"value\":\"Context Window:必要条件,但不是充分条件\",\"url\":\"#context-window必要条件但不是充分条件\",\"depth\":3},{\"value\":\"被忽视的交互循环\",\"url\":\"#被忽视的交互循环\",\"depth\":3},{\"value\":\"关于「替代」的粒度\",\"url\":\"#关于替代的粒度\",\"depth\":3},{\"value\":\"最后\",\"url\":\"#最后\",\"depth\":3}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"LLM 在编程领域的局限性\",\"datePublished\":\"2025-02-09T00:00:00.000Z\",\"dateModified\":\"2025-02-09T00:00:00.000Z\",\"description\":\"探讨 LLM 和当前 Agent 技术在编程方面的局限性\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/The-Limitations-of-LLMs-in-Programming\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"MySQL 索引优化实战:从原理到 EXPLAIN\",\"date\":\"2024-03-21T00:00:00.000Z\",\"tags\":[\"MySQL\",\"Index\",\"Performance\",\"Database\"],\"draft\":false,\"comments\":true,\"summary\":\"系统讲透 MySQL 索引优化:B+Tree 结构、最左前缀、回表与覆盖索引、EXPLAIN 判读、常见索引失效与修复策略,并配套交互式可视化。\",\"authors\":[\"allen\"],\"type\":\"Blog\",\"readingTime\":{\"text\":\"5 min read\",\"minutes\":5.005,\"time\":300300,\"words\":1001},\"slug\":\"mysql-index-optimization\",\"path\":\"blog/mysql-index-optimization\",\"filePath\":\"blog/mysql-index-optimization.mdx\",\"toc\":[{\"value\":\"MySQL 索引优化实战:从原理到 EXPLAIN\",\"url\":\"#mysql-索引优化实战从原理到-explain\",\"depth\":1},{\"value\":\"目录\",\"url\":\"#目录\",\"depth\":2},{\"value\":\"1 - 索引为什么快\",\"url\":\"#1---索引为什么快\",\"depth\":2},{\"value\":\"2 - B+Tree 索引核心机制\",\"url\":\"#2---btree-索引核心机制\",\"depth\":2},{\"value\":\"3 - 最左前缀与复合索引\",\"url\":\"#3---最左前缀与复合索引\",\"depth\":2},{\"value\":\"4 - 回表、覆盖索引与索引下推\",\"url\":\"#4---回表覆盖索引与索引下推\",\"depth\":2},{\"value\":\"4.1 回表\",\"url\":\"#41-回表\",\"depth\":3},{\"value\":\"4.2 覆盖索引\",\"url\":\"#42-覆盖索引\",\"depth\":3},{\"value\":\"4.3 索引下推(ICP)\",\"url\":\"#43-索引下推icp\",\"depth\":3},{\"value\":\"5 - EXPLAIN 实战判读\",\"url\":\"#5---explain-实战判读\",\"depth\":2},{\"value\":\"6 - 常见索引失效场景\",\"url\":\"#6---常见索引失效场景\",\"depth\":2},{\"value\":\"7 - 交互式可视化\",\"url\":\"#7---交互式可视化\",\"depth\":2},{\"value\":\"8 - 可执行优化清单\",\"url\":\"#8---可执行优化清单\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"MySQL 索引优化实战:从原理到 EXPLAIN\",\"datePublished\":\"2024-03-21T00:00:00.000Z\",\"dateModified\":\"2024-03-21T00:00:00.000Z\",\"description\":\"系统讲透 MySQL 索引优化:B+Tree 结构、最左前缀、回表与覆盖索引、EXPLAIN 判读、常见索引失效与修复策略,并配套交互式可视化。\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/mysql-index-optimization\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}},{\"title\":\"Markdown Guide\",\"date\":\"2019-10-11T00:00:00.000Z\",\"tags\":[\"github\",\"guide\"],\"draft\":false,\"comments\":false,\"summary\":\"Markdown cheatsheet for all your blogging needs - headers, lists, images, tables and more! An illustrated guide based on GitHub Flavored Markdown.\",\"type\":\"Blog\",\"readingTime\":{\"text\":\"4 min read\",\"minutes\":3.155,\"time\":189300,\"words\":631},\"slug\":\"github-markdown-guide\",\"path\":\"blog/github-markdown-guide\",\"filePath\":\"blog/github-markdown-guide.mdx\",\"toc\":[{\"value\":\"Introduction\",\"url\":\"#introduction\",\"depth\":1},{\"value\":\"What is Markdown?\",\"url\":\"#what-is-markdown\",\"depth\":1},{\"value\":\"Syntax guide\",\"url\":\"#syntax-guide\",\"depth\":1},{\"value\":\"Headers\",\"url\":\"#headers\",\"depth\":2},{\"value\":\"This is a h1 tag\",\"url\":\"#this-is-a-h1-tag\",\"depth\":1},{\"value\":\"This is a h2 tag\",\"url\":\"#this-is-a-h2-tag\",\"depth\":2},{\"value\":\"This is a h4 tag\",\"url\":\"#this-is-a-h4-tag\",\"depth\":4},{\"value\":\"Emphasis\",\"url\":\"#emphasis\",\"depth\":2},{\"value\":\"Lists\",\"url\":\"#lists\",\"depth\":2},{\"value\":\"Unordered\",\"url\":\"#unordered\",\"depth\":3},{\"value\":\"Ordered\",\"url\":\"#ordered\",\"depth\":3},{\"value\":\"Images\",\"url\":\"#images\",\"depth\":2},{\"value\":\"Links\",\"url\":\"#links\",\"depth\":2},{\"value\":\"Blockquotes\",\"url\":\"#blockquotes\",\"depth\":2},{\"value\":\"Inline code\",\"url\":\"#inline-code\",\"depth\":2},{\"value\":\"Syntax highlighting\",\"url\":\"#syntax-highlighting\",\"depth\":2},{\"value\":\"Footnotes\",\"url\":\"#footnotes\",\"depth\":2},{\"value\":\"Task Lists\",\"url\":\"#task-lists\",\"depth\":2},{\"value\":\"Tables\",\"url\":\"#tables\",\"depth\":2},{\"value\":\"Strikethrough\",\"url\":\"#strikethrough\",\"depth\":2}],\"structuredData\":{\"@context\":\"https://schema.org\",\"@type\":\"BlogPosting\",\"headline\":\"Markdown Guide\",\"datePublished\":\"2019-10-11T00:00:00.000Z\",\"dateModified\":\"2019-10-11T00:00:00.000Z\",\"description\":\"Markdown cheatsheet for all your blogging needs - headers, lists, images, tables and more! An illustrated guide based on GitHub Flavored Markdown.\",\"image\":\"/static/images/twitter-card.png\",\"url\":\"https://allenblog.icu/blog/github-markdown-guide\",\"author\":[{\"@type\":\"Person\",\"name\":\"Allen Wang\"}]}}],\"topTags\":[\"Machine Learning\",\"AI\",\"Python\",\"Deep Learning\",\"writings\",\"career\",\"LLM\",\"TensorFlow\"]}]\n"])</script>
1<script>self.__next_f.push([1,"10:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\ne:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"1\",{\"children\":\"Allen's Blog\"}],[\"$\",\"meta\",\"2\",{\"name\":\"description\",\"content\":\"The purpose of this blog is to share his insights and experiences in the field of technology, programming, and personal thoughts.\"}],[\"$\",\"meta\",\"3\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"4\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"link\",\"5\",{\"rel\":\"canonical\",\"href\":\"https://allenblog.icu\"}],[\"$\",\"link\",\"6\",{\"rel\":\"alternate\",\"type\":\"application/rss+xml\",\"href\":\"https://allenblog.icu/feed.xml\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:title\",\"content\":\"Allen's Blog\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:description\",\"content\":\"The purpose of this blog is to share his insights and experiences in the field of technology, programming, and personal thoughts.\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:url\",\"content\":\"https://allenblog.icu\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:site_name\",\"content\":\"Allen's Blog\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image\",\"content\":\"https://allenblog.icu/static/images/twitter-card.png\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:title\",\"content\":\"Allen's Blog\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:description\",\"content\":\"The purpose of this blog is to share his insights and experiences in the field of technology, programming, and personal thoughts.\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:image\",\"content\":\"https://allenblog.icu/static/images/twitter-card.png\"}]]\n"])</script>
1<script>self.__next_f.push([1,"c:null\n"])</script>
1<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":"46cc94be2706405197f757594d8b231b","r":1,"spa":2}' crossorigin="anonymous"></script>
1
2</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.