自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 13. EventBroadcaster 事件管理器

Kubernetes 系统以 Pod 资源为核心,Deployment、StatefulSet、ReplicaSet、DaemonSet、CronJob 等,最终都会创建出 Pod。因此 Kubernetes 事件也是围绕 Pod 进行的,在 Pod 生命周期内的关键步骤中都会产生事件消息。

2024-02-29 13:02:15 921

原创 12. WorkQueue(工作队列)

如图所示,在并发场景下,假设 goroutine A 通过 Get 方法获取 1 元素,1 元素被添加到 processing 字段中,同一时间,goroutine B 通过 Add 方法插入另一个 1 元素,此时在 processing 字段中已经存在相同的元素,所以后面的 1 元素并不会被直接添加到 queue 字段中,当前 FIFO 队列中的 dirty 字段中存有 1、2、3 元素,processing 字段存有 1 元素。限速队列利用延迟队列的特性,延迟多个相同元素的插入时间,达到限速目的;

2024-02-28 15:31:58 626

原创 11. Informer 机制总结

DeltaFIFO 可以分开理解,FIFO 是一个先进先出的队列,它拥有队列操作的基本方法,例如 Add、Update、Delete、List、Pop、Close等,而 Delta 是一个资源对象存储,它可以保存资源对象的操作类型,例如 Added(添加)操作类型、Updated(更新)操作类型、Deleted(删除)操作类型、Sync(同步)操作类型等。(1)r.listerWatcher.List 用于获取资源下的所有对象的数据,例如,获取所有 Pod 的资源数据。答案就是 Informer 机制。

2024-02-28 15:28:15 908

原创 10. informer源码分析-Indexer源码分析

Indexer 中有 informer 维护的指定资源对象的相对于 etcd 数据的一份本地内存缓存,可通过该缓存获取资源对象,以减少对 apiserver、对etcd 的请求压力。...informer 所维护的缓存依赖于 threadSafeMap 结构体中的 items 属性,其本质上是一个用 map 构建的键值对,资源对象都存在 items 这个 map 中,key 为资源对象的 namespace/name 组成,value 为资源对象本身,这些构成了 informer 的本地缓存。

2024-02-27 20:51:19 1027 1

原创 9. informer源码分析-Controller&Processor源码分析

1.controller 与 Processor 概述ControllerController 从 DeltaFIFO 中 pop Deltas 出来处理,根据对象的变化更新 Indexer 本地缓存,并通知 Processor 相关对象有变化事件发生。ProcessorProcessor 根据 Controller 的通知,即根据对象的变化事件类型,调用相应的 ResourceEventHandler 来处理对象的变化。先通过一张 informer 概要架构图看一下 Controller&amp

2024-02-27 20:25:33 1136

原创 8. informer源码分析-DeltaFIFO源码分析

先从名字上来看,DeltaFIFO,首先它是一个FIFO,也就是一个先进先出的队列,而 Delta 代表变化的资源对象,其包含资源对象数据本身及其变化类型。......具体来说,DeltaFIFO 存储着以及object key的 queue,Delta 装有对象数据及对象的变化类型。输入输出方面,Reflector 负责 DeltaFIFO 的输入,Controller 负责处理 DeltaFIFO 的输出。

2024-02-27 20:02:32 801

原创 7. informer源码分析-Reflector源码分析

Reflector 从 kube-apiserver 中 list&watch 资源对象,然后将对象的变化包装成 Delta 并将其丢到 DeltaFIFO 中。简单点来说,就是将 Etcd 的对象及其变化反射到 DeltaFIFO 中。

2024-02-27 20:00:44 1021

原创 6. informer源码分析-初始化与启动分析

return...上一节有列举了informer的使用代码,注意看到示例代码中的下面这段代码,做了informer初始化与启动,其中包括:(1)informers.NewSharedInformerFactory:初始化informer factory;(2)podInformer.Informer:初始化pod informer;(3)factory.Start:启动informer factory;

2024-02-27 19:57:02 590

原创 5. informer源码分析-概要分析

我们都知道可以使用 k8s 的 Clientset 来获取所有的原生资源对象,那么怎么能持续的获取集群的所有资源对象,或监听集群的资源对象数据的变化呢?这里不需要轮询去不断执行 List 操作,而是调用 Watch 接口,即可监听资源对象的变化,当资源对象发生变化,客户端即可通过 Watch 接口收到资源对象的变化。Watch 接口虽然可以直接使用,但一般情况下很少直接使用,因为往往由于集群中的资源较多,我们需要自己在客户端去维护一套缓存,而这个维护成本比较大。

2024-02-27 19:53:15 1520

原创 4. client-go 编程式交互

Kubernetes 系统使用 client-go 作为 Go 语言的官方编程式交互客户端库,提供对 Kubernetes API Server 服务的交互访问。Kubernetes 的源码中已经集成了 client-go 的源码,无须单独下载。client-go 源码路径为 。开发者经常使用 client-go 基于 Kubernetes 做二次开发,所以 client-go 是开发者应熟练掌握的必会技能。client-go 的代码库已经集成到 Kubernetes 源码中了,无须考虑版本兼容性问题,源码

2024-02-27 19:50:52 919

原创 3. kubectl 命令行交互

在维护 Kubernetes 系统集群时,kubectl 应该是最常用的工具之一。从 Kubernetes 架构设计的角度看,kubectl 工具是 Kubernetes API Server 的客户端。它的主要工作是向 Kubernetes API Server 发起 HTTP 请求。Kubernetes 是一个完全以资源为中心的系统,而 kubectl 会通过发起 HTTP 请求来操纵这些资源,以控制 Kubernetes 系统集群。

2024-02-27 19:48:15 1089

原创 2. Kubernetes 核心数据结构

Kubernetes 资源代码定义在pkg/apis目录下,同一资源对应着内部版本和外部版本,内部版本和外部版本资源代码结构并不相同。资源的内部版本定义了所支持的资源类型(types.go)、资源验证方法(validation.go)、资源注册至资源注册表的方法(install/install.go)等。而资源的外部版本定义了资源的转换方法(conversion.go)、资源的默认值(defaults.go)等。

2024-02-27 19:39:20 996

原创 1. 使用 vs-code 来阅读源码

地址:https://github.com/kubernetes/kubernetes/releases/tag/v1.25.15。目录,这时会提示我们下载 go 库,按照提示下载按照即可。然后 kubernetes 本身是支持 gomod 的,但源码这里提供了所有的依赖在。接着重启 vscode,这时会提醒我们下载更多依赖库,按照提示下载按照即可。我的电脑 -> 属性 -> 高级系统设置 -> 环境变量,添加如下形式。目录下,可以将此目录内的文件复制到。使用 vscode 打开。目录,注意目录层次,

2024-02-27 19:30:46 456

原创 23. Python

猴子补丁(Monkey Patching)是指在运行时动态修改已有的代码,通常是在不修改原始代码的情况下添加、替换或修改现有的功能。在Python中,由于Python的动态特性,我们可以在运行时修改类、模块或对象的行为,以满足特定的需求或修复问题。这种修改的方式就被称为猴子补丁。

2023-11-14 07:43:50 120

原创 22. 传统算法

除了机器学习、深度学习。在这之前,还存在着一些传统算法,其中非常经典的牛顿法、二项插值、傅里叶、滤波算法等等。考察不多,但有必要了解。

2023-11-14 07:43:10 146

原创 21. 机器学习——特征工程

特征工程是指在机器学习和数据分析任务中,对原始数据进行转换、选择、提取和创建特征的过程。它是一个关键的步骤,可以显著影响模型的性能和结果。特征工程的目的是通过合理的特征表示,提取数据中的有用信息,减少冗余和噪声,使得机器学习模型能够更好地理解数据并进行准确的预测或分类。数据预处理:在进行特征提取之前,通常需要对原始数据进行预处理。这包括数据清洗、去除噪声、处理缺失值、归一化或标准化等操作,以保证数据的质量和一致性。特征选择:特征选择是从原始特征中选择一部分最有用和相关的特征。

2023-11-14 07:42:19 99

原创 20. 机器学习——PCA 与 LDA

机器学习面试题汇总与解析——PCA 与 LDA本章讲解知识点什么是数据降维PCA本专栏适合于Python已经入门的学生或人士,有一定的编程基础。本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。相信大家都有着高尚的灵魂,请尊重我的知识产权,未经允许严禁各类机构和个人转

2023-11-13 13:09:53 317

原创 19. 机器学习——朴素贝叶斯

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理和特征条件独立性假设的分类算法。它通过统计特征在不同类别下的条件概率,来进行分类任务。参考回答朴素贝叶斯是一个基于特征条件独立假设和贝叶斯原理的一种分类算法。朴素贝叶斯通过训练数据得到 X 与 y 的联合分布;之后对于要预测的 X,根据贝叶斯公式,输出后验概率最大的 y。朴素贝叶斯是一种生成式。

2023-11-13 13:04:34 356

原创 18. 机器学习——集成学习

机器学习面试题汇总与解析——集成学习本章讲解知识点什么是集成学习AdaBoost梯度提升树(Gradient Boosting Decision Tree, GBDT)随机森林(Random Forest,简称RF)XGBoostLightGBM本专栏适合于Python已经入门的学生或人士,有一定的编程基础。本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅

2023-11-13 12:59:10 305

原创 17. 机器学习——SVM

在深度神经网络 (Deep Neural Network, DNN) 大热之前, 在机器学习里有个明星算法——支持向量机(Support Vector Machine, SVM)。它是昔日的明星,虽然现在没有DNN风光,但它依然是机器学习领域内耀眼的存在,这当然取决于其强大的学习能力。SVM是一种常用且强大的机器学习算法,它在解决分类和回归问题中具有广泛的应用。它的优雅和高效使得它成为机器学习领域的重要工具之一。SVM 的独特之处在于它能够通过在特征空间中寻找最优超平面来进行分类。

2023-11-13 12:52:47 1053

原创 16. 机器学习——决策树

决策树是一种基于树形结构的机器学习模型,其灵感源自人类的决策过程。通过对数据进行逐步划分和推理,决策树能够自动学习和生成规则,从而在分类和回归任务中发挥作用。与其他复杂的机器学习算法相比,决策树的优势在于其易于理解和解释性强的特点,使得非专业人士也能够轻松理解和应用。决策树是一种基于树状结构的机器学习模型,用于解决分类和回归问题。它模拟了人类在面对决策时的思考过程,并通过构建一系列决策规则来预测目标变量的值。决策树的构建过程始于根节点,通过对数据的特征进行划分,逐步生成分支和叶节点。

2023-11-13 12:49:48 976

原创 15. 机器学习——聚类

聚类算法是一种无监督学习算法,用于将数据集中的样本划分为若干个组或簇,使得同一组内的样本具有较高的相似度,而不同组之间的样本具有较大的差异。聚类算法在数据分析、模式识别、图像处理等领域具有广泛的应用。根据样本之间的距离或者说是相似性(亲疏性),把越相似、差异越小的样本聚成一类(簇),最后形成多个簇,使同一个簇内部的样本相似度高,不同簇之间差异性高。以下是几种常见的聚类算法:K-means 聚类算法:K-means 是一种基于距离的聚类算法。

2023-11-13 12:47:00 1216

原创 14. 机器学习——kNN

在学习机器学习的时候,接触的第一个算法大都是 kNN。简言之,kNN 算法计算不同特征值之间的距离对样本进行分类。现在有这么一组数据。上面 6 个样本(电影)分别给出其特征(打斗镜头、拥抱镜头)和标签(电影类型)信息,现在给定一个新的样本,我们想知道这部电影的类型。由于是 2 维数据,我们可以用平面直角坐标系表示。绿色的点是未知的,红色的黄色的点是已知的。kNN 要做的就是计算未知的点到所有已知点的距离,根据距离进行排序。排序后的数据如下,

2023-11-13 12:44:56 337

原创 13. 机器学习——回归

机器学习面试题汇总与解析——回归本章讲解知识点什么是回归分析?为什么要使用回归分析?线性回归逻辑回归逻辑回归和 Lasso 回归本专栏适合于Python已经入门的学生或人士,有一定的编程基础。本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。

2023-11-13 12:41:28 403

原创 12. 机器学习——评价指标

在机器学习中,评价指标用于衡量模型的性能和预测结果的准确度。选择适当的评价指标取决于任务的性质,比如分类、回归或聚类等。TPFPFNTN分别为真阳性假阳性和假阴性真阴性。真阳性(True Positive,TP):标签为正类,预测为正类;假阳性(False Positive,FP):标签为负类,预测为正类;假阴性(False Negative,FN):标签为正类,预测为负类;真阴性(True Negative,TN):标签为负类,预测为负类;

2023-11-13 08:24:44 173

原创 11. 深度学习——强化学习

强化学习(Reinforcement Learning)是机器学习的一个分支,通过智能体(Agent)与环境的交互学习最优策略来解决问题。在强化学习中,智能体通过观察环境的状态,采取特定的行动,并从环境中获得奖励或惩罚。智能体的目标是通过与环境的交互,学习出使累计奖励最大化的最优策略。简而言之,强化学习,是智能体在与环境的互动当中,为了达成一个目标而进行的学习过程。强化学习在许多领域都有广泛的应用,例如机器人控制、游戏智能、自动驾驶等。

2023-11-13 08:21:41 498

原创 10. 深度学习——模型优化

深度学习技术在过去几年中取得了令人瞩目的进展,并在许多领域取得了显著的成果。然而,深度学习模型通常需要大量的计算资源和存储空间,这限制了它们在嵌入式设备上的应用。嵌入式设备如智能手机、物联网设备和无人机等,具有有限的计算能力、内存和功耗要求,因此将深度学习模型应用到这些设备上面临着挑战。然而,随着嵌入式设备的计算能力的提升和深度学习算法的优化,将深度学习模型应用到嵌入式设备的需求也日益增加。嵌入式设备可以通过在本地处理数据和运行深度学习模型,提供实时的智能决策和高度个性化的用户体验。

2023-11-13 08:19:38 149

原创 9. 深度学习——GAN

2014 年,Generative Adversarial Networks(GANs)在深度学习领域掀起了一场革命。这场革命产生了一些重大的技术突破。Ian Goodfellow 等人在 “Generative Adversarial Networks” 中提出了生成对抗网络,这篇paper算是这个领域的开山之作。学术界和工业界都开始接受并欢迎 GAN 的到来。GAN 的崛起不可避免。首先,GAN 最厉害的地方是它的学习性质是无监督的。

2023-11-13 08:16:16 232

原创 8. 深度学习——NLP

NLP(Natural Language Processing,自然语言处理)是一门研究如何使计算机能够理解、处理和生成人类自然语言的学科。它涉及到文本分析、语义理解、机器翻译、情感分析、问答系统等多个任务。为了解决这些任务,NLP 使用了多种技术和方法,包括词嵌入(word embeddings)、循环神经网络(RNN)、卷积神经网络(CNN)、注意力机制(attention)、序列到序列模型(sequence-to-sequence)、预训练模型(如 BERT、GPT 等)等。

2023-11-13 08:06:21 339

原创 7. 深度学习——技术发展

深度学习真正广为人知是 2016 年阿尔法狗战胜围棋高手李世石九段,隔年战胜彼时的世界围棋第一人柯洁。深度学习其实是由机器学习中的神经网络发展而来,而神经网络早在上世纪 50 年代就开始发展了,历经三起两落。提出神经网络的简单模型为第一个高峰。最开始的神经网络只有单层,并且是线性的,所以表示能力有限,解决不了“异或”问题。神经网络进入第一次低潮。上世纪 80 年代,David Rumelhar 和 Geoffery E.Hinton提出了反向传播(back propagation)算法。

2023-11-13 07:54:39 484

原创 6. 深度学习——卷积与池化

什么是卷积卷积是很重要的概念,这里我们一定要讲讲。在数学中,称f∗gn(f*g)(n)f∗gn为fgf,gfg的卷积,f∗gn∫−∞∞fτgn−τdτ(.)\tag{.}f∗gn∫−∞∞​fτgn−τdτf∗gn∑τ−∞∞fτgn−τ(.)\tag{.}f∗gnτ−∞∑∞​fτgn−τ。

2023-11-13 07:46:42 415

原创 5. 深度学习——正则化

正则化是在训练机器学习模型时使用的一种技术,旨在减小模型的过拟合(overfitting)风险。过拟合是指模型在训练数据上表现很好,但在未见过的测试数据上表现较差的现象。正则化通过在损失函数中引入惩罚项来限制模型的复杂度,以防止模型过度拟合训练数据。惩罚项会在优化过程中对模型的参数进行调整,以平衡模型的拟合能力和泛化能力。正则化的作用包括:防止过拟合:正则化技术通过限制模型的复杂度,减少模型对训练数据的过度拟合,提高模型在未见过的数据上的泛化能力。

2023-11-12 10:12:47 465

原创 4. 深度学习——优化函数

前一篇讲了损失函数,损失函数是用来度量模型预测值和真实值间的偏差,偏差越小,模型越好,所以我们需要最小化损失函数。如何求最小值呢?高中知识告诉我们,对于凸函数可以直接求导可以找到最值,但是神经网络的损失函数往往是非凸函数,我们并不能直接求导。所以优化函数就可以帮助我们解决这个问题,优化函数就是用来最小化我们的损失函数的。优化函数(Optimization Function)是用于训练机器学习模型的算法,用于调整模型的参数以最小化(或最大化)一个定义良好的目标函数。

2023-11-12 10:08:35 346

原创 3. 深度学习——损失函数

机器学习面试题汇总与解析——损失函数本章讲解知识点什么是损失函数?为什么要使用损失函数?详细讲解损失函数本专栏适合于Python已经入门的学生或人士,有一定的编程基础。本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是一份面试题总结的正确打开方式。这样才方便背诵如专栏内容有错漏,欢迎在评论区指出或私聊我更改,一起学习,共同进步。相信大家都有着高尚的灵魂,请尊重我的知识

2023-11-11 10:05:16 672

原创 2. 深度学习——初始化方法

什么是网络参数初始化深度学习中的初始化方法是指在训练神经网络时,对模型的参数进行初始赋值的方法。合适的初始化方法可以加速模型的收敛速度,提高模型的性能。神经网络在训练时,前向传播和反向传播都涉及到每个神经元的权重更新wiw_iwi​,也就是我们说的网络参数了,当然这些参数需要一个初始值。方法有很多,全 0 初始、随机初始等等,每个方法都有优缺点。

2023-11-11 09:55:46 385

原创 1. 深度学习——激活函数

激活函数是一种用于神经网络和其他机器学习模型中的非线性函数。它被应用于神经网络的每个神经元上,将输入信号进行转换,产生输出信号。激活函数的作用是引入非线性性质,使神经网络能够学习和表示更复杂的函数关系。在神经网络中,每个神经元接收来自上一层神经元的加权输入,然后通过激活函数对这个加权输入进行非线性变换,生成神经元的输出。这个输出被传递到下一层神经元作为输入。激活函数的主要作用有以下几点:引入非线性:激活函数能够将线性变换后的输入转换为非线性输出,使得神经网络具备非线性建模能力。

2023-11-10 22:25:26 876

原创 0. 前言与大纲

故事引入专栏介绍作者介绍大纲受众:本教程适合于Python已经入门的学生或人士,有一定的编程基础。本教程适合于算法工程师机器学习求职的学生或人士。湖南大学(985)硕士研究生(1%保研),国家奖学金、省优秀研究生称号获得者。校招面试过数十家公司,经验丰富,获得过华为、京东、顺丰科技等公司 offer。个人面试经历写作为专刊文章,目前为牛客网专刊作者。擅长机器学习、C++后台开发、嵌入式软件开发。非科班研究生。

2023-11-10 22:22:15 961

原创 14. 一文快速学懂常用工具——etcdctl 命令

Etcd 在微服务和Kubernates集群中不仅可以作为服务注册与发现,还可以作为 key-value 存储的中间件。etcdctl 是一个命令行的客户端,它能提供一些简洁的命令,供用户直接跟 etcd 服务打交道,而无需基于 HTTP API 方式。方便对服务进行测试或者手动修改数据库内容。我们刚开始可以通过 etdctl 来熟悉相关操作。这些操作跟 HTTP API 基本上是对应的。etcdctl 在两个不同的 etcd 版本下的行为方式也完全不同。本文主要以 API 3 为主。

2023-11-09 23:14:02 101

原创 13. 一文快速学懂常用工具——Kubernetes 命令

以上仅以 pod 示例,还可以替换为 node、deployment(deploy)、statefulset(sts)、service(svc)、daemonset(ds)、pv、configmap、secret等。以上仅以 pod 示例,还可以替换为 node、deployment(deploy)、statefulset(sts)、service(svc)、daemonset(ds)、pv、configmap、secret等。用于查看和编辑资源对象的详细信息。

2023-11-09 13:16:59 40

原创 12. 一文快速学懂常用工具——docker 命令

Docker 客户端命令行(Client Docker CLI):允许用户与服务端 Docker daemon 交互,客户端发送的一系列请求,例如运行容器、构建镜像等操作,将最终由服务端 Docker daemon 来执行。需要注意的是,使用 docker commit 命令创建的镜像通常比使用 Dockerfile 创建的镜像更难以管理和维护。通过使用该命令,可以查看有关容器、镜像、网络等对象的所有属性信息,例如容器的 IP 地址、端口映射、挂载的卷等。处理客户端的请求,并执行相应的操作。

2023-11-09 12:40:59 215

空空如也

空空如也

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

TA关注的人

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