<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[探索代码与逻辑的边界]]></title> 
<atom:link href="https://moegirl.qzz.io/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[记录技术沉淀，分享开发实战，从底层原理到架构设计]]></description>
<link>https://moegirl.qzz.io/</link>
<language>zh-cn</language>
<generator>emlog</generator>

<item>
    <title>程序员的进阶之路：除了写代码，你还需要具备哪些能力？</title>
    <link>https://moegirl.qzz.io/?post=5</link>
    <description><![CDATA[<p>很多程序员在职业生涯的初期，往往陷入一种误区：认为只要技术足够牛，就能解决所有问题，就能获得晋升。然而，当你从初级工程师迈向高级工程师，甚至技术专家或管理岗时，你会发现，代码能力只是冰山一角，水面之下的软技能往往决定了你的职业天花板。<br />
首先是沟通能力。这里的沟通不是指闲聊，而是指能够用通俗易懂的语言，向非技术人员（如产品经理、运营、客户）解释复杂的技术方案。你需要学会换位思考，理解业务背后的真实需求，而不是机械地执行文档。很多时候，最好的技术方案不是最复杂的，而是最能平衡业务价值与开发成本的。<br />
其次是解决问题的思维。遇到Bug时，初级程序员可能会盲目地尝试修改代码，而资深工程师则会建立假设、验证假设，利用日志、监控和调试工具抽丝剥茧。这种系统化的排查思路，比掌握某种具体的语法更重要。最后，保持持续学习的好奇心。技术更新迭代极快，昨天的热门框架明天可能就无人问津。唯有保持对底层原理的探究和对新技术的敏感度，才能在激烈的竞争中立于不败之地。记住，代码只是工具，创造价值才是目的。</p>]]></description>
    <pubDate>Mon, 11 May 2026 15:08:26 +0800</pubDate>
    <dc:creator>emer</dc:creator>
    <guid>https://moegirl.qzz.io/?post=5</guid>
</item>
<item>
    <title>Docker与Kubernetes入门：容器化部署的最佳实践</title>
    <link>https://moegirl.qzz.io/?post=4</link>
    <description><![CDATA[<p>“在我的机器上能跑，为什么在服务器上就不行？”这句经典的抱怨，催生并加速了容器化技术的普及。Docker通过将应用及其依赖打包成一个轻量级、可移植的容器，彻底解决了环境不一致的难题。而Kubernetes（K8s）则作为容器编排的霸主，解决了大规模容器管理的复杂问题。<br />
对于初学者来说，编写一个高效的Dockerfile是第一步。很多新手习惯直接使用庞大的官方镜像，导致镜像体积动辄几个G。其实，我们可以利用多阶段构建（Multi-stage builds），在第一阶段编译代码，在第二阶段只拷贝编译后的二进制文件或静态资源到精简的基础镜像（如Alpine）中。这样可以将镜像体积缩小90%以上，大幅提升拉取和启动速度。<br />
在K8s的实践中，理解Pod、Deployment和Service的概念至关重要。Pod是K8s最小的调度单元，而Deployment负责管理Pod的副本数和滚动更新。为了保证服务的高可用，我们通常会配置健康检查（Liveness和Readiness Probe）。当应用死锁时，Liveness Probe会重启容器；当应用正在加载数据无法处理请求时，Readiness Probe会将流量暂时切断。掌握这些基础概念，是迈向云原生架构的第一步。</p>]]></description>
    <pubDate>Fri, 17 Apr 2026 15:08:08 +0800</pubDate>
    <dc:creator>emer</dc:creator>
    <guid>https://moegirl.qzz.io/?post=4</guid>
</item>
<item>
    <title>大模型落地实战：如何利用LangChain构建企业级知识库问答机器人</title>
    <link>https://moegirl.qzz.io/?post=3</link>
    <description><![CDATA[<p>随着大语言模型（LLM）的爆发，如何利用私有数据构建企业级的知识库问答系统，成为了许多技术团队关注的焦点。通用的ChatGPT虽然强大，但它并不了解我们公司内部的技术文档和业务规范。今天，我们就来探讨如何利用LangChain框架，结合向量数据库，搭建一个精准的RAG（检索增强生成）应用。<br />
RAG的核心逻辑其实并不复杂：当用户提问时，系统首先将问题转化为向量，在向量数据库（如Milvus或Pinecone）中检索出最相关的文档片段，然后将这些片段作为上下文，连同用户的问题一起喂给大模型，让模型基于这些事实生成答案。这样不仅解决了大模型的“幻觉”问题，还保证了数据的安全性。<br />
在实战中，数据清洗和切片（Chunking）是决定效果的关键。如果切片过大，会包含过多无关噪音；切片过小，则可能丢失上下文语义。我们经过多次测试，发现按语义段落进行切分，并保留一定的重叠窗口，效果最佳。此外，引入重排序（Rerank）机制，可以在检索出初步结果后，再次进行精细打分，进一步提升回答的准确率。通过这套架构，我们成功将内部文档的检索效率提升了80%，大大降低了新员工的上手门槛。</p>]]></description>
    <pubDate>Thu, 02 Apr 2026 15:07:52 +0800</pubDate>
    <dc:creator>emer</dc:creator>
    <guid>https://moegirl.qzz.io/?post=3</guid>
</item>
<item>
    <title>告别白屏焦虑：前端性能优化的五个关键指标</title>
    <link>https://moegirl.qzz.io/?post=2</link>
    <description><![CDATA[<p>在现代Web开发中，用户体验直接决定了产品的留存率。而加载速度，往往是用户对产品产生第一印象的关键。很多开发者习惯于盯着打包体积看，却忽略了浏览器渲染的真实过程。今天，我想聊聊除了减少包体积之外，前端性能优化的五个核心指标。<br />
首先是首屏内容绘制（FCP）。为了让用户尽快看到内容，我们可以采用服务端渲染（SSR）或静态站点生成（SSG）技术，将首屏的HTML直接返回给浏览器，而不是等待JavaScript下载执行完毕。其次是最大内容绘制（LCP），这通常与最大的图片或文本块有关。优化LCP的关键在于预加载关键资源，并对图片进行懒加载处理，确保核心内容优先展示。<br />
交互体验同样重要。累积布局偏移（CLS）衡量的是页面的稳定性。你是否遇到过点击按钮时，页面突然跳动导致点错的情况？这就是CLS过高导致的。通过为图片和广告位预留固定的宽高占位符，可以有效避免这种糟糕的体验。最后，不要忽视总阻塞时间（TBT）和首次输入延迟（FID），减少主线程的长任务，利用Web Worker处理复杂计算，能让页面响应如丝般顺滑。性能优化是一场持久战，需要我们在开发的每一个环节都保持敬畏之心。</p>]]></description>
    <pubDate>Wed, 11 Mar 2026 15:07:31 +0800</pubDate>
    <dc:creator>emer</dc:creator>
    <guid>https://moegirl.qzz.io/?post=2</guid>
</item>
<item>
    <title>从单体到微服务：我们重构核心业务系统的踩坑实录</title>
    <link>https://moegirl.qzz.io/?post=1</link>
    <description><![CDATA[<p>在业务高速发展的初期，单体架构凭借其开发效率高、部署简单的优势，成为了大多数初创团队的首选。然而，随着用户量突破百万，代码库的日益臃肿，以及不同模块间耦合度的加深，单体架构逐渐成为了业务迭代的瓶颈。最近半年，我们团队完成了核心交易系统的微服务化重构，今天就来复盘一下这期间的经验与教训。<br />
重构的第一步是服务拆分。我们并没有盲目追求细粒度的拆分，而是基于“领域驱动设计（DDD）”的思想，划定了清晰的业务边界。比如将用户中心、订单服务、支付网关独立出来。但在拆分过程中，分布式事务成为了最大的拦路虎。为了保证数据的一致性，我们放弃了性能较差的2PC方案，最终采用了基于消息队列的最终一致性方案。虽然增加了系统的复杂度，但换来了各服务间的高可用与解耦。<br />
此外，监控与链路追踪也是微服务架构中不可或缺的一环。引入SkyWalking后，我们能够清晰地看到每一个请求在各个微服务间的流转耗时，快速定位性能瓶颈。这次重构让我们深刻认识到，架构没有银弹，只有最适合当前业务阶段的方案。微服务不是目的，而是解决特定规模下工程问题的工具。</p>]]></description>
    <pubDate>Fri, 20 Feb 2026 23:25:12 +0800</pubDate>
    <dc:creator>emer</dc:creator>
    <guid>https://moegirl.qzz.io/?post=1</guid>
</item>
</channel>
</rss>