<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[andrewbytecoder]]></title><description><![CDATA[keep life simple!  stupid]]></description><link>https://blog.youkuaiyun.com/andrewgithub</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; andrewgithub]]></copyright><item><title><![CDATA[Ubuntu 24.04 完整安装 zsh + Oh My Zsh + Powerlevel10k + 字体图标配置指南]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/166831734</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/166831734</guid><author>andrewgithub</author><pubDate>Tue, 29 Sep 2026 09:50:38 +0800</pubDate><description><![CDATA[字体没切换，回到第六步确认终端字体设置。安装过程中会询问是否设为默认，选。按需选择即可，随时可以重跑。装完后自动进入 zsh。不想用 Nerd Font。]]></description><category></category></item><item><title><![CDATA[深入理解kubernetes - 第五章 Kubernetes DNS]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/166690572</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/166690572</guid><author>andrewgithub</author><pubDate>Sat, 26 Sep 2026 16:42:33 +0800</pubDate><description><![CDATA[本实验深入探讨Kubernetes集群中DNS的工作原理，重点解析kubelet如何配置Pod的DNS（通过/etc/resolv.conf指向kube-dns），CoreDNS如何实现服务发现与名称解析。通过验证kube-dns服务及CoreDNS Pod状态、检查Corefile配置，明确了集群内域名（如nginx.svc.cluster.local）的解析机制，以及外部域名的转发策略。实验表明，DNS在实现动态服务发现、避免硬编码IP、保障服务间通信可靠性方面至关重要。]]></description><category></category></item><item><title><![CDATA[深入理解kubernetes - 第四章 Kubernetes Services - ClusterIP]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/166646822</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/166646822</guid><author>andrewgithub</author><pubDate>Fri, 25 Sep 2026 21:47:27 +0800</pubDate><description><![CDATA[Kubernetes Service为Pod提供稳定的虚拟IP和DNS名称，实现集群内L4负载均衡与服务发现。通过ClusterIP类型服务，kube-proxy基于iptables或IPVS将流量转发至后端Pod，支持跨节点通信且无需SNAT。实验验证了Service VIP（10.96.102.172）与EndpointSlice中Pod IP的一致性，确保客户端可通过稳定入口访问动态变化的Pod实例。]]></description><category></category></item><item><title><![CDATA[深入理解kubernetes - 第三章 Pod Routing Across Nodes 跨节点的Pod路由]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/166601617</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/166601617</guid><author>andrewgithub</author><pubDate>Thu, 24 Sep 2026 22:34:51 +0800</pubDate><description><![CDATA[Calico通过高效路由机制解决Kubernetes Pod通信挑战，支持节点内与跨节点通信。采用确定性主机路由和节点块分配，实现无SNAT的Pod身份保留、稳定路由及可观测性。结合ECMP均衡流量，提升性能并避免路由空洞。通过DaemonSet部署multitool测试服务，验证网络连通性，确保集群环境稳定可靠。]]></description><category></category></item><item><title><![CDATA[深入理解kubernetes - 第二章 Pod Networking]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/166491336</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/166491336</guid><author>andrewgithub</author><pubDate>Wed, 23 Sep 2026 20:01:11 +0800</pubDate><description><![CDATA[Kubernetes 中，Calico 通过 CNI 插件实现 Pod 网络配置：kubelet 调用 Calico CNI 分配 IP（如 192.168.131.130/32），创建 veth 接口并连接容器与主机网络，更新路由与数据存储。Pod 通过虚拟网关通信，实现跨节点互通。部署 multitool Pod 后，可通过 kubectl exec 验证其网络连通性与 IP 分配，确保集群内服务发现与通信正常。]]></description><category></category></item><item><title><![CDATA[深入理解kubernetes-第一章 calico IPAM]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/166484412</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/166484412</guid><author>andrewgithub</author><pubDate>Wed, 23 Sep 2026 15:43:49 +0800</pubDate><description><![CDATA[本文通过ContainerLab与Kind搭建Kubernetes实验环境，配置Calico IPAM实现Pod IP自动分配。利用自定义IP池（192.168.0.0/16，块大小/26），避免冲突并支持跨节点通信。通过deploy.sh自动化部署，结合Tigera Operator和自定义资源，完成Calico无CNI模式安装，验证了IPAM在动态集群中的高效性与可扩展性。]]></description><category></category></item><item><title><![CDATA[k8s中nginx worker process自动设置]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/166254467</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/166254467</guid><author>andrewgithub</author><pubDate>Mon, 21 Sep 2026 20:39:33 +0800</pubDate><description><![CDATA[在Kubernetes中，Nginx容器的worker_processes auto会读取宿主机CPU核心数，而非Pod的CPU Limit，导致资源分配不匹配。即使Pod限制为200m CPU，Nginx仍可能启动多个worker，因时间片过小影响性能。解决方案是通过环境变量或启动脚本动态设置worker_processes为实际可用核数（如基于cgroup限制），实现资源合理利用。]]></description><category></category></item><item><title><![CDATA[深入理解go语言-第8章 质量保障]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/163368622</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/163368622</guid><author>andrewgithub</author><pubDate>Fri, 31 Jul 2026 15:15:42 +0800</pubDate><description><![CDATA[本文介绍了Go语言内置的质量保障体系，重点阐述了单元测试和基准测试的设计哲学与实现方式。Go的测试框架遵循"约定优于配置"原则，通过_test.go文件、Test/Benchmark前缀函数和testing包实现统一测试标准。文章展示了表格驱动测试、子测试、并行测试等最佳实践，并通过基准测试对比不同实现方式的性能差异。Go的内置测试工具链提供了覆盖率分析、竞态检测等一站式功能，体现了"少即是多"的设计哲学，使质量保障成为开发生命周期的自然组成部分。]]></description><category></category></item><item><title><![CDATA[深入理解go语言-第7章 标准库深入]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/163367940</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/163367940</guid><author>andrewgithub</author><pubDate>Fri, 31 Jul 2026 14:51:05 +0800</pubDate><description><![CDATA[本文深入探讨了Go语言标准库中的I/O操作、文件处理和缓冲I/O三个核心模块。主要内容包括： I/O设计哲学：Go采用"组合优于继承"的设计理念，基于简单的Reader/Writer接口构建了整个I/O生态，通过接口组合和装饰器模式实现高度灵活性。 io包核心功能： 通过UpperReader示例展示了自定义Reader实现 演示了io.Copy、io.LimitReader等实用函数 使用io.Pipe实现内存中的同步管道通信 os包文件操作： 文件创建、读写基本操作 文件指针定位与内容读取 批量读写文件]]></description><category></category></item><item><title><![CDATA[深入理解go语言-第6章 接口与面向组合设计]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/163367570</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/163367570</guid><author>andrewgithub</author><pubDate>Fri, 31 Jul 2026 14:48:17 +0800</pubDate><description><![CDATA[文章摘要 Go语言通过独特的接口设计实现了"组合优于继承"的编程哲学。其接口系统主要特点包括： 隐式实现：类型无需显式声明实现接口，只要包含接口所有方法即自动满足，实现接口与实现的解耦 Duck Typing："像鸭子一样走路和叫的就是鸭子"的设计理念，强调行为而非类型 接口值双层结构：包含动态类型和动态值，需注意nil指针赋给接口后的非nil判断 空接口与类型断言：interface{}或any可接收任意类型，配合类型断言实现运行时类型检查 接口组合：遵循小接口原则，通过组合多个小接口构建复杂功能 这种设]]></description><category></category></item><item><title><![CDATA[深入理解go语言-第5章 并发编程——Go的灵魂]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/163367065</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/163367065</guid><author>andrewgithub</author><pubDate>Fri, 31 Jul 2026 14:22:56 +0800</pubDate><description><![CDATA[本文摘要： Go语言并发编程的核心是goroutine和Channel，遵循CSP模型"通过通信共享内存"的理念。goroutine是轻量级执行单元，初始栈仅2KB可动态扩缩，创建成本仅0.3μs，通过M:N调度模型高效利用多核。文章对比了并发与并行的本质区别，强调并发是程序结构属性，并行是硬件执行属性。通过代码示例展示了goroutine创建、WaitGroup同步、栈动态扩容以及避免泄漏的最佳实践。Go的并发模型在用户态实现高效调度，既保持轻量级特性，又能充分利用多核并行能力。]]></description><category></category></item><item><title><![CDATA[深入理解go语言- 第4章流程控制与接口]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/163314697</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/163314697</guid><author>andrewgithub</author><pubDate>Wed, 29 Jul 2026 23:48:11 +0800</pubDate><description><![CDATA[本文介绍了Go语言中的流程控制结构和接口设计。主要内容包括： 控制结构： if语句：支持基本条件判断、if-else链以及带初始化语句的if结构 switch语句：提供多值匹配、无条件switch、类型判断和fallthrough穿透功能 for循环：涵盖经典for、while式、无限循环和for-range四种形式 重点剖析： 详细讲解了for-range的底层实现原理，包括对切片、map和channel的遍历机制 揭示了for-range常见陷阱及解决方案 说明Go 1.22对循环变量语义的重要变更 设]]></description><category></category></item><item><title><![CDATA[深入理解go语言- 第3章 基础语法与数据类型]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/163314559</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/163314559</guid><author>andrewgithub</author><pubDate>Wed, 29 Jul 2026 23:25:05 +0800</pubDate><description><![CDATA[本文摘要： 本文详细介绍了Go语言的基础语法与数据类型，重点解析变量与常量的声明和使用。主要内容包括： Go语言的4种变量声明方式，强调静态类型语言与动态语言在变量声明上的本质差异，以及零值机制的设计哲学。 短变量声明的特点与注意事项，包括作用域限制、多变量赋值规则等。 常量声明方法，展示iota枚举器的基本用法和高级应用（如位标志模式、存储单位计算）。 无类型常量与类型常量的区别，说明Go中唯一的隐式转换场景。 文章通过大量代码示例，展示了Go语言在类型系统设计上的严谨性和实用性，特别是编译期安全检查、零]]></description><category></category></item><item><title><![CDATA[深入理解go语言- 第2章 程序结构与项目管理]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/163314353</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/163314353</guid><author>andrewgithub</author><pubDate>Wed, 29 Jul 2026 22:57:49 +0800</pubDate><description><![CDATA[本文介绍了Go语言程序的基本结构和项目管理要点。主要内容包括： 程序基本结构：Go程序由包组成，main包为入口，详细说明了文件组成顺序（包声明→导入→常量→变量→类型→函数）。 包管理机制：讲解包声明规则、import的多种用法（标准导入、别名导入、点导入和空白导入），以及通过首字母大小写控制可见性的设计哲学。 初始化流程：介绍特殊的init函数执行规则和初始化顺序，比较了Go与OOP语言在初始化设计上的差异。 内部包管理：演示了internal目录的特殊作用，限制包的可访问范围。 文章包含多个代码示例，]]></description><category></category></item><item><title><![CDATA[深入理解go语言- 第1章 语言概览与哲学]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/163221667</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/163221667</guid><author>andrewgithub</author><pubDate>Sun, 26 Jul 2026 22:56:22 +0800</pubDate><description><![CDATA[文章摘要： Go语言诞生于2007年，由Google工程师Rob Pike、Ken Thompson和Robert Griesemer设计，旨在解决大型C++项目开发中的编译慢、依赖混乱和并发困难等问题。Go融合了C语言的语法风格、Oberon的包机制和CSP的并发模型，专注于简单性、显式表达、组合、并发和工程实用性。其设计哲学强调"少即是多"，省略了继承、异常等复杂特性，采用组合和错误返回值等更简单直接的方案。Go凭借静态编译、高效并发和跨平台能力，成为云原生基础设施（如Docker、Kubernetes]]></description><category></category></item><item><title><![CDATA[Traefik 中 EntryPoint 和Router 以及Service 三者之间的关系]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/163216869</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/163216869</guid><author>andrewgithub</author><pubDate>Sun, 26 Jul 2026 15:06:51 +0800</pubDate><description><![CDATA[本文介绍了反向代理中三个核心组件的协作关系：EntryPoint（入口点）、Router（路由器）和Service（服务）。EntryPoint负责监听端口并接收网络请求，类似小区大门；Router根据请求特征（如域名、路径等）决定由哪个服务处理，类似前台接待；Service则负责将请求转发到具体后端服务器，并实现负载均衡。三者形成"EntryPoint→Router→Service"的严格处理链，支持一对多的层级关系。文中通过电商系统示例和Docker配置展示了实际应用场景，并解释了代码层面的实现逻辑，最]]></description><category></category></item><item><title><![CDATA[《从零实现cobra》手写一个 mini 版 Cobra]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/163025226</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/163025226</guid><author>andrewgithub</author><pubDate>Sun, 19 Jul 2026 23:17:50 +0800</pubDate><description><![CDATA[文章摘要： 本文剖析了命令行工具库 Cobra 的核心实现原理，作者通过200行Go代码实现了一个简化版命令框架。核心结构体 Command 包含名称、描述、执行函数和子命令列表，形成命令树结构。递归派发逻辑 execute 负责解析参数并路由到对应命令，处理包括帮助请求、参数校验等场景。虽然省略了Cobra的flag解析等高级功能，但清晰展示了"命令树+递归派发"的核心机制。这种实现方式解释了 git commit --amend 等复杂命令背后的路由原理，为理解主流CLI库的工作机制提供了简洁的参考模型]]></description><category></category></item><item><title><![CDATA[常用寄存器总结]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/161602537</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/161602537</guid><author>andrewgithub</author><pubDate>Mon, 01 Jun 2026 22:54:28 +0800</pubDate><description><![CDATA[本文介绍了80386处理器的寄存器组成及其功能，主要分为通用寄存器、指令指针和标志寄存器、段寄存器、系统地址寄存器等类别。重点讨论了通用寄存器（EAX、EBX等）在函数调用和系统调用中的参数传递规则，指令指针寄存器EIP和标志寄存器EFLAGS的作用，以及段寄存器（CS、DS等）如何通过段选择子索引描述符表。此外，还简要说明了系统地址寄存器（GDTR、IDTR等）在地址转换和保护机制中的关键作用，包括全局描述符表、中断描述符表等系统结构的定位方式。这些寄存器共同构成了80386处理器的基础架构，支持其保护模]]></description><category></category></item><item><title><![CDATA[What is Virtual Memory?]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/161602491</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/161602491</guid><author>andrewgithub</author><pubDate>Mon, 01 Jun 2026 22:49:59 +0800</pubDate><description><![CDATA[摘要： 虚拟内存是一种利用二级存储扩展主存容量的技术，通过分页和分段机制实现。当物理内存不足时，操作系统将不活跃的页面暂存到硬盘的交换文件中，利用虚拟内存管理器（VMM）动态调度进程。主要技术包括按需分页（仅加载被引用的页面）和页面置换算法（如FIFO、OPT、LRU）。优点包括支持大进程和多任务，但可能因频繁硬盘访问降低性能。典型应用场景为物理内存不足时，通过置换最近未使用的页面为新页面腾出空间，平衡内存使用效率。]]></description><category></category></item><item><title><![CDATA[useful tools to detect memory leaks with examples]]></title><link>https://blog.youkuaiyun.com/andrewgithub/article/details/161602396</link><guid>https://blog.youkuaiyun.com/andrewgithub/article/details/161602396</guid><author>andrewgithub</author><pubDate>Mon, 01 Jun 2026 22:43:13 +0800</pubDate><description><![CDATA[Detecting Memory Leaks in Linux This tutorial explores tools and methods to identify memory leaks in Linux processes like Apache (httpd) or Java, which can lead to out-of-memory (OOM) errors. Memory leaks occur when allocated memory is not freed after use,]]></description><category></category></item></channel></rss>