自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 Argo 家族:云原生 CI/CD 的双剑合璧与协同之美

在云原生技术的浪潮中,Argo 项目家族以其强大的功能和灵活的设计脱颖而出,成为 Kubernetes 生态中不可或缺的一部分。Argo 家族的核心组件——Argo Workflows、Argo CD、Argo Events 和 Argo Rollouts——各自专注于不同的领域,却又能无缝协作,共同构建一个完整的云原生 CI/CD 系统。本文将深入探讨 Argo 家族的核心能力,并分析其如何通过协同作用实现高效、可靠的开发与部署流程。

2025-12-11 21:58:47 637

原创 静默超时:一次 Pending Pod 背后的 Kubernetes 存储控制流崩塌

本文深入分析了Kubernetes中一个Pod卡在Pending状态的典型案例,揭示了其背后存储系统的复杂机制。通过解构PV/PVC/StorageClass三层架构的设计哲学,详细追踪了从Pod到云API的12层调用链。文章不仅提供了具体的排查路径和诊断方法,更从系统工程角度反思了分层解耦带来的可观测性挑战,提出了控制流穿透、混沌工程等进阶解决方案,为云原生环境下的存储问题诊断提供了系统性思考框架。

2025-11-21 20:46:31 605

原创 Kubernetes:云原生时代的操作系统与思维革命

Kubernetes作为云原生时代的操作系统,重新定义了基础设施管理方式。其核心价值在于从命令式到声明式思维的转变,通过YAML文件描述"应该是什么"而非"如何做",实现了业务目标与技术细节的解耦。Kubernetes架构包含控制平面(集群大脑)和节点(计算单元),具备自动调度、自愈和跨环境一致性等特性。典型应用场景包括金融系统高可用保障和电商大促自动扩容,故障恢复时间从30分钟缩短至30秒。未来Kubernetes将向AI驱动优化和多云统一管理演进,其本质是工程师从

2025-11-20 22:36:42 978 1

原创 SLB配置陷阱全揭秘:从curl超时故障到AI驱动智能运维体系

当curl "http://xxyenv.site.net/api/disasterrecovery"连接超时的警报再次响起,资深CD工程师看到的不再是简单的网络问题,而是服务就绪性验证体系的缺口。在云时代,部署成功不等于服务可用。遵循结构化排查流程:从DNS到安全组,层层深入理解SLB工作原理:区分L4/L7的本质差异将SLB验证嵌入CD:确保"部署成功"等于"服务可用"能否处理服务发现层的短暂空窗能否验证业务逻辑的真实就绪能否理解真正的持续部署将CD从基础设施操作升级为当CD流水线开始检查。

2025-11-15 23:22:15 759

原创 超越故障修复:从 Kubernetes POD 崩溃到 AI 驱动的运维认知重构

摘要:本文通过一次真实的云产品部署故障,深入分析Kubernetes中CRD缺失导致POD启动失败的完整链路。CRD作为Kubernetes API扩展引擎,其缺失会引发控制器初始化失败,进而导致关联POD崩溃。文章揭示了CRD/CR与POD的隐性依赖关系,并提出三级解决方案:紧急修复CRD、增强控制器健壮性、完善CD流程验证机制。进一步探讨了AI技术在诊断此类故障中的应用,包括构建三层认知架构(感知-推理-行动)、实现资源依赖图实时构建等核心技术突破。

2025-11-14 00:10:58 1066

原创 破壁“架构孤岛”:云原生混合网络的AI运维升维实践

针对云计算混合架构中的网络通信障碍,提出了一套系统性排查方案。文章首先分析了VPC与经典网络架构差异导致的技术挑战,随后详细介绍了10个关键排查步骤:从DNS解析、安全组规则、路由配置到NAT网关检查等。特别强调了双向安全组规则匹配的核心原则,并提供了具体检测命令和示例。最后提出从人工运维向AI智能诊断转型的设想,建议将传统排查手册转化为训练AI的数据资产,构建能够自动诊断、修复网络问题的自治系统。文中包含大量实用技术细节和排查示例,为云环境下的网络运维人员提供了实用参

2025-11-13 00:14:01 937

原创 MinIO:云原生时代的分布式对象存储从入门到精通

本文全面介绍了高性能对象存储系统MinIO的核心特性与实践指南。作为开源云原生存储解决方案,MinIO具有S3兼容、高性能、轻量级等优势。文章详细解析了其分布式架构、纠删码技术、部署模式等核心概念,并提供了从安装配置到生产部署的完整指导。重点内容包括:MinIO与传统存储的对比优势、分布式集群部署方案、多层级数据保护机制、Kubernetes集成方法以及性能调优技巧。同时涵盖了生产环境中的容量规划、混合云策略和故障排查等关键实践。通过本文,读者可系统掌握MinIO这一云原生时代的重要存储技术,为构建现代化数

2025-11-12 00:14:58 1077

原创 从HDFS NN报错看Flink+K8s+HDFS:基础、架构与问题AI诊断

本文分析了Flink+K8s+HDFS云原生架构中的核心组件协作关系,并针对常见故障进行了实战排查。架构层面重点阐释了:HDFS三大角色(NN、DN、JN)的分工与HA模式下的初始化依赖Flink三层架构的计算调度机制三者组合在弹性调度、可靠存储、高可用方面的优势针对NN Pod报错"存储目录异常"问题,通过日志和PVC状态分析,定位到根本原因是:HA模式下JN集群PVC处于Pending状态导致JN节点无法满足Quorum机制进而阻塞NN初始化流程文章提出了基于多Agent协作的智能诊

2025-11-03 23:49:11 1005

原创 Linux系统启动流程深度解析:从BIOS到用户空间的全链路指南

Linux系统启动流程深度解析与故障排查指南 本文详细剖析了现代Linux(UEFI+GRUB2+systemd)启动流程的6个核心阶段: UEFI:硬件初始化并加载GRUB引导程序 GRUB2:提供启动菜单并加载内核/initramfs 内核:解压内核、加载驱动并挂载initramfs临时根文件系统 Initramfs:执行关键初始化脚本,挂载真实根分区 systemd:并行启动服务(取代传统SysVinit) 用户空间:完成系统就绪 关键价值:掌握启动流程可快速定位故障(如GRUB损坏、内核恐慌、驱动缺

2025-11-03 22:26:54 782

原创 Linux中Shell命令与操作系统的交互原理:从输入到输出的全解析

摘要:Linux系统执行命令(如ls)涉及多层协作:1. Shell接收键盘输入并解析,区分内置/外部命令;2. 通过PATH查找外部命令路径;3. 创建子进程执行命令,通过fork()和execve()系统调用实现进程隔离;4. 命令进程通过系统调用(如open()、getdents64())与内核交互,获取目录内容;5. 结果通过标准输出返回终端。整个过程体现了Linux分层架构(用户-Shell-内核-硬件)的协同机制和系统调用的桥梁作用,确保了系统安全性和稳定性。(149字)

2025-11-02 22:06:55 738

原创 面试官问:Linux常用哪些工具/命令?

摘要:本文系统介绍了运维开发中的核心命令工具及其应用哲学。从系统监控(htop、sar)、网络诊断(tcpdump、mtr)到日志分析(grep+awk+sed组合)、文件操作(find+xargs批量处理),重点强调"用命令构建自动化流水线"的运维思维。通过对比单命令与组合命令、手动操作与自动化的差异,提出"命令是运维思维的延伸"的核心观点,建议运维人员应理解命令背后的设计哲学,而非单纯记忆命令,最终实现从单点问题解决到系统化运维的思维升级。

2025-11-02 16:10:55 343

原创 【从词向量到Transformer:大语言模型(LLM)的技术演进简述】

自然语言处理(NLP)领域在过去几年经历了革命性变革。从简单的词向量到Transformer架构,技术的每一步跨越都推动着模型从"机械记忆"迈向"语义理解"。

2025-04-26 21:39:20 216

原创 DMZ技术初探:构建网络防御的“非军事区“

摘要:在企业网络和互联网之间,DMZ(De-Militarized Zone,非军事区)是一个不可或缺的安全隔离层。它通过将对外服务器与内网隔离,有效降低直接攻击内网的风险。本文将从DMZ的基础概念、原理、配置方法,帮助读者理解DMZ的设计与实现。

2025-03-08 16:50:39 756

原创 【Linux基础学习-文件管理day03】

Linux基础-文件操作

2022-09-26 23:04:42 227

原创 Linux基础命令

Linux基础命令

2022-09-19 22:58:07 381

原创 Linux基础

Linux文件系统入门

2022-09-18 22:40:55 456

原创 1003、检查替换后的词是否有效

题目给定有效字符串 “abc”。对于任何有效的字符串 V,我们可以将 V 分成两个部分 X 和 Y,使得 X + Y(X 与 Y 连接)等于 V。(X 或 Y 可以为空。)那么,X + “abc” + Y 也同样是有效的。例如,如果 S = “abc”,则有效字符串的示例是:“abc”,“aabcbc”,“abcabc”,“abcabcababcc”。无效字符串的示例是:“abccba”,“ab”,“cababc”,“bac”。如果给定字符串 S 有效,则返回 true;否则,返回 false。示

2021-01-12 21:47:07 227

原创 925、长按键入

题目你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。示例 1:输入:name = “alex”, typed = “aaleex”输出:true解释:‘alex’ 中的 ‘a’ 和 ‘e’ 被长按。示例 2:输入:name = “saeed”, typed = “ssaaedd”输出:false解释

2021-01-12 20:32:13 136

原创 可变参数的宏

举例#define LOG(format, …) do { char msg[128];sprintf(msg, format, VA_ARGS);fprintf(stdout, “%s\n”, msg);}while(0)其中,…表示参数可变,__VA_ARGS__在预处理中为实际的参数集所替换在上述定义的宏不能省略可变参数。如果要省略需要在__VA_ARGS__前加###include <stdio.h>#include <stdarg.h>#define

2020-12-09 16:28:47 195

原创 C++ static关键字作用

C++中static作用总结1、隐藏功能(C/C++)2、静态局部变量(C/C++)3、类成员声明为static(C++)隐藏功能当全局变量和函数声明为static,只能在本文件中可见,对于其他文件不可见。其他文件可以有相同的函数/变量名字,不会冲突。// test.cpp#include <iostream>using namespace std;int n = 10; int add(int a, int b) { return a + b;} int

2020-12-09 14:32:40 187

原创 虚函数与纯虚函数

虚函数与纯虚函数的区别虚函数的作用虚函数的作用基类的指针可以调用子类的该函数,虚函数在基类中必须要实现。纯虚函数在基类中不需要实现,子类中必须实现该函数。虚函数#include <iostrem>using namespace std;class Animal {public: virtual void printClassName() { cout << "Animal" << endl; } };class

2020-12-08 11:16:42 402

原创 17.电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number著作权归领扣网络所有。商业转载请联系官方授权,非

2020-12-02 14:53:06 324

原创 3.无重复字符的字符串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是

2020-12-02 10:50:18 927

原创 48.旋转图像

给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix =[[ 5, 1, 9,11],[ 2, 4, 8,10],[13, 3, 6, 7],[15,14,

2020-12-01 20:08:12 203 1

原创 41.缺失的第一个正数

给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-missing-positive著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题解:使用map,将nums作为keyclass Soluti

2020-12-01 20:04:25 105

原创 40.组合总和II

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]示例 2:输入: candidate

2020-12-01 09:53:37 136

原创 39.组合总数

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates = [2,3,5], target = 8,所求

2020-12-01 09:43:32 146

原创 27.移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,3,0,4,2]

2020-12-01 08:41:00 198

原创 26.删除排序数组中的重复项

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nums 的

2020-11-30 19:54:13 72

原创 18.四位数之和

给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[-2, -1, 1, 2],[-2, 0, 0, 2]]来源:力扣(Le

2020-11-30 16:46:37 171

原创 16.最接近的三数之和

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum-closest著作权归领扣网络所有。商业转

2020-11-30 14:58:05 139

原创 11. 盛最多水的容器

给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:height =

2020-11-30 10:34:57 413

原创 1.two sum

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有

2020-11-30 09:56:54 157

原创 153、寻找循环数组中的最小值

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素。示例 1:输入: [1,3,5]输出: 1示例 2:输入: [2,2,2,0,1]输出: 0代码:clas

2020-10-11 20:33:54 806

原创 90、子集II

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets-ii给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]题解:回溯法class Solution {public: vector<vector<int>> subsetsW

2020-10-10 22:14:06 101

原创 78、子集

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subsets给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]题解:回溯法class Solution {public: vector<vector<int&gt

2020-10-10 22:10:18 126

原创 28. 实现 strStr

来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/implement-strstr实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”,

2020-10-10 20:57:18 117

原创 队列

队列什么是队列队列的实现顺序表模拟队列顺序表模拟队列的弊端链表模拟队列总结什么是队列队列是一种线性的数据结构。只允许在头部删除(出队),在尾部插入(入队)。元素遵守先进先出(FIFO)原则。队列的实现顺序表模拟队列 队列三元素:存放数据的数组,头,尾 */typedef struct _queue{ int data[100]; int head; int tail;}queue;int enQueue(queue* q, int num){ q-&

2020-09-05 20:06:05 103

原创 快速排序

快速排序快速排序的思想单路快速排序双路快速排序三路快速排序四、复杂度分析五、三种快速排序算法的比较快速排序的思想快速排序的思想:通过一趟可以将一组元素划分两个部分,一个部分大于基准数,另外一个部分小于基准数。然后再对这两个部分进行排序,典型的分治思想。单路快速排序int partition(int* arr, int l, int r){ int i = 0, j = 0; // 找基准数,随机一个 int t = rand() % (r - l + 1) + l;

2020-09-05 14:47:20 120

原创 冒泡排序

冒泡排序什么冒泡排序代码实现复杂度分析什么冒泡排序冒泡排序的基本思想:比较相邻的两个元素,如果顺序有误就把位置调换。冒泡排序的核心:双重嵌套循环。比如:9 0 8 1 7 2 6 3 (按照从小到大的顺序排列)第一次循环:9先与0进行比较,9 > 0,调换位置,9再与8进行比较,9 > 8,调换位置,以此类推,0 8 1 7 2 6 3 9第二次循环:0与8进行比较,0 < 8,不调换位置,8再与1进行比较,8 > 0,8与1调换位置,以此类推,0 1 7 2 6 3 8

2020-09-05 10:06:43 209

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除