Kubernetes概念及实践
Kubernetes(K8S)中文文档_Kubernetes中文社区
Kubernetes 文档 | Kubernetes

kubeadm快速部署K8s集群的工具,如:
创建master node:kubeadm init
将worker node加入到集群中:kubeadm join
kubectl是K8s的命令行工具,可以对集群本身进行管理,也能在集群中对容器化应用程序进行安装部署。
kubelet是master node派到worker node的代表,管理本机容器
- 一个集群中每个节点上运行的代理,它保证容器都运行在Pod中
- 负责维护容器的生命周期,同时也负责Volume(CSI) 和 网络(CNI)的管理
一、理解Kubernetes是由哪些组件构成,以及各组件的功能
组件
1、控制平面组件control plane components(Master Node)
控制平面组件为集群做出全局决策,如资源的调度,以及检测和响应集群事件。
(1)Kube-apiserver
K8s的请求入口服务。负责公开K8s的API,负责处理接受请求的工作,是K8s的前端。可以运行多个Kube-apiserver的实例,并在这些实例之间平衡流量。
API Server 负责接收 K8S 所有请求(来自 UI 界面或者 CLI 命令行工 具),然后,API Server 根据用户的具体请求,去通知其他组件干活。
(2)键值存储的后台数据库etcd
K8s的存储服务。一致且高可用的键值存储,用作K8s所有集群数据的后台数据库。(注意数据备份)。
etcd 存储了 K8S 的关键配置和用户配置,K8S 中仅 API Server 才具备读写权限,其 他组件必须通过 API Server 的接口才能读写数据。
(3)调度器kube-scheduler
K8s所有工作节点的调度器。负责监视新创建的、未指定运行节点的Pods,并选择节点来让Pod在上面运行。
当用户要部署服务时,Scheduler 会选择最合适的 Worker Node(服务器)来部署。
调度决策考虑的因素包括单个Pod及Pod集合的资源需求、软硬件及策略约束、亲和性和反亲和性规范、数据位置、工作负载间对的干扰及最后时限。
(4)控制器管理器kube-controller-manager
K8s所有工作节点的监视器。 负责运行控制器进程。如节点控制器、任务控制器、端点分片控制器、服务账号控制器等。
Controller 负责监控和调整在 Worker Node 上部署的服务的状态,比如用户要求 A 服务部署 2 个副本,那么当其中一个服务挂了的时候, Controller 会马上调整,让 Scheduler 再选择一个 Worker Node 重新部署服务。
(5)云控制器管理器cloud-controller-manager
嵌入了特定于云平台的控制逻辑。该管理器允许将集群连接到云提供商的API之上,并将与该云平台交互的组件同与你的集群交互的组件分离开来。
2、Node节点组件
节点组件在每个节点上运行,负责维护运行的Pod并提供K8s运行环境。
(1)kubelet
工作节点的监视器,主节点的通讯器。
kubelet会在集群中每个节点上运行。它保证容器都运行在Pod中。
kubelet接收一组通过各类机制提供给它的PodSpec,确保这些PodSpec中描述的容器处于运行状态且健康。
Kubelet 是 Master Node 派到Worker Node 上的“代表”,它会定期向 Master Node 汇报自己 Node 上运行的服务的状态,并接受来自 Master Node 的指示采取调整措施。负责控制所有容器的启动停止,保证节点工作正常。
(2)kubelet-proxy
K8s的网络代理。kubelet-proxy是集群中每个节点上所运行的网络代理,实现K8s中service概念的一部分。kubelet-proxy维护节点上的一些网络规则,这些规则运行从集群内部或外部的网络会话与Pod进行网络通信。
(3)容器运行时contariner runtime
Worker Node 的运行环境,即安装了容器化所需的软件环境确保容器化程序能够跑起
3、插件Addons
插件使用K8s资源(DaemonSet,Deployment等)实现集群功能。插件提供集群级别的功能,插件中命名空间域的资源属于kube-system命名空间。下面是常见的插件。
(1) DNS
集群DNS是一个DNS服务器,和环境中的其他DNS服务器一起工作,它为K8s服务提供DNS记录。
(2)仪表盘Web界面Dashboard
Dashboard是K8s集群的通用、基于web的用户界面。用于管理集群中运行的应用程序以及集群本身,并进行故障排除。
(3)容器资源监控
将关于容器的一些常见的时间序列度量值保存到一个集中的数据库中,并提供浏览这些数据的界面。
(4)集群层面日志
负责将容器的日志数据保存到一个集中的日志存储中,集中日志存储提供搜索和浏览接口。
(5)网络插件
实现容器网络接口CNI(container network interface)规范的软件组件,负责为Pod分配IP地址,并使用这些Pod能在集群内部相互通信。
二、Pod是什么,他和容器有什么关系
(1)Cluster——>(n)Node——>(n)Pod——>(n)Container——>(1/n)Application
容器放入Pod,Pod运行在节点上,节点可能是虚拟机或物理机。节点由Master Node控制面管理。
Pod和容器是包含关系,Pod包含容器。

Pod表示包含一个或多个应用容器(如Docker),以及这些容器一些共享资源的一个集合。
Pod中若干个应用容器共享的资源包括:共享存储、网络(作为唯一的集群IP地址)、有关每个容器如何运行的信息(如容器镜像版本或端口)。
Pod可以包含若干个相对紧耦合的应用容器。例如一个Pod包含两个应用容器,一个应用容器是Node.js应用,另一个是提供Node.js应用服务器要发布的数据的应用。
Pod中的若干个应用容器共享IP地址和端口,始终位于同一位置并且共享调度,并在同一节点上的共享上下文中运行。
Pod是K8s集群中创建、管理和调度的最小单位,即原子单位。当在K8s中创建Deployment时,会创建包含容器的Pod,而不是直接创建容器。每个Pod与调度它的Node节点绑定,并保持在那里,直到终止或删除。如果节点发生故障,则会在集群中的其他可用节点上调度相同的Pod。
三、Deployment是什么,他为什么适合无状态服务
Deployments | Kubernetes
kubernetes-Deployment部署无状态服务的原理详解(二十五) - Andya_net - 博客园 (cnblogs.com)
无状态服务VS有状态服务
K8S: 有状态 vs 无状态服务 - 知乎
- 无状态服务
无状态服务不会在本地存储持久化数据。多个服务实例对于同一个用户请求的响应结果是完全一致的。这种多服务实例之间是没有依赖关系,比如web应用,在k8s控制器 中动态启停无状态服务的pod并不会对其它的pod产生影响。
- 有状态服务
有状态服务需要在本地存储持久化数据。典型的是分布式数据库的应用,分布式节点实例之间有依赖的拓扑关系。比如,主从关系,如果K8S停止分布式集群中任 一实例pod,就可能会导致数据丢失或者集群的crash。
ReplicaSet
ReplicaSet 的目的是维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合。 因此,它通常用来保证给定数量的、完全相同的 Pod 的可用性。ReplicaSet 主要用途是提供给 Deployment 作为编排 Pod 创建、删除和更新的一种机制。
Deployment
创建了K8s集群后,就可以在其上面部署容器化应用程序。先创建K8s Deployment配置,以指挥K8s创建和更新应用程序的实例。创建Deployment后,Master Node将应用程序实例调度到集群中的各个Worker Node上。Deployment控制器会持续监视这些实例。若节点关闭或被删除,则Deployment控制器会将应用程序实例替换为集群中另一个节点上的实例(自我修复机制以解决机器故障维护问题)。
一个 Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能力。
• 部署无状态应用
• 管理Pod和ReplicaSet(副本控制、更新回滚)
• 具有上线部署、副本设定、滚动升级、回滚等功能
• 提供声明式更新,例如只更新一个新的Image
Deployment被设计用来管理无状态服务的pod,每个pod完全一致:
•无状态服务内的多个Pod创建的顺序是没有顺序的;
•无状态服务内的多个Pod的名称是随机的。p0d被重新启动调度后,它的名称与P都会发生变化;
•无状态服务内的多个Pod背后是共享存储的。
Deployment可以管理多个副本的Pod实现无缝迁移、自动扩容缩容、自动灾难恢复、一键回滚等功能。
Deployment组件是为无状态服务而设计的,其中的Pod名称、主机名、存储都是随机、不稳定的,并且Pod的创建与销毁也是无序的。这个设计决定了无状态服务并不适合数据库领域的应用。

如果应用程序不需要任何稳定的标识符或有序的部署、删除或扩缩, 则应该使用由一组无状态的副本控制器提供的工作负载来部署应用程序,比如 Deployment 或者 ReplicaSet。
四、StatusfulSet是什么,他为什么适合有状态服务,他有什么特性
StatefulSet | Kubernetes
概念
StatefulSet 是用来管理有状态应用的工作负载 API 对象。
StatefulSet 用来管理某 Pod 集合的部署和扩缩, 并为这些 Pod 提供持久存储和持久标识符。
特征
Stateful管理有状态的应用,它的Pod有如下特征:
•唯一性:每个Pod会被分配一个唯一序号;
•顺序性:Pod启动,更新,销毁是按顺序进行;
•稳定的网络标识:Pod主机名,DNS地址不会随着Pod被重新调度而发生变化;
•稳定的持久化存储:Pod被重新调度后,仍然能挂载原有的PV,从而保证了数据的完整性和一致性。
五、DaemonSet概念及其特性
DaemonSet | Kubernetes
概念
DaemonSet:守护进程集,缩写为ds,在所有节点或者是匹配的节点上都部署一个Pod。
DaemonSet使用场景
• 运行集群存储的daemon,比如ceph或者glusterd
•节点的CNI网络插件,calico
•节点日志的收集:fluentd或者是filebeat
•节点的监控:node exporter
• 服务暴露:部署一个ingress nginx
DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
DaemonSet 的一些典型用法:
- 在每个节点上运行集群守护进程
- 在每个节点上运行日志收集守护进程
- 在每个节点上运行监控守护进程
六、Service:通过网络暴露 Pod 组合
使用 Service 暴露你的应用 | Kubernetes
服务(Service) | Kubernetes
Service服务用于对外部暴露应用。

Service 允许应用程序接收流量。
Service API 是 Kubernetes 的组成部分,它是一种抽象,帮助你通过网络暴露 Pod 组合。 每个 Service 对象定义一个逻辑组的端点(通常这些端点是 Pod)以及如何才能访问这些 Pod 的策略。
七、阐述ClusterIP、NodePort、Headless、Ingress、LoadBalance等Service的区别
服务(Service) | Kubernetes
k8s 之如何从集群外部访问内部服务的三种方法 - 春光牛牛 - 博客园 (cnblogs.com)
深入了解Kubernetes服务类型:ClusterIP、NodePort、LoadBalancer和ExternalName - 掘金 (juejin.cn)
Kubernetes的集群外部访问方式:NodePort、LoadBalancer和Ingress。
Kubernetes的集群内部访问方式:ClusterIP
ClusterIP
ClusterIP 服务是 Kubernetes 的默认服务,是K8s系统自动分配的虚拟IP,只能在集群内部访问。它给你一个集群内的服务,集群内的其它应用都可以访问该服务。集群外部无法访问它,但是可以通过在cluster里提供proxy代理方式访问,kubectl proxy。如Dashboard的访问。
当您创建一个Service资源对象而没有指定服务类型时,默认会被设置为ClusterIP类型。ClusterIP只能通过内部DNS进行访问,因此它适合处理内部流量。
ClusterIP根据是否生成ClusterIP又可分为普通Service和Headless Service
Service两类:
- 普通Service:为Kubernetes的Service分配一个集群内部可访问的固定虚拟IP(Cluster IP), 实现集群内的访问。(service name解析为cluster ip,然后cluster ip对应到后面的Pod Ip)
- Headless Service: 该服务不会分配Cluster IP, 也不通过kube-proxy做反向代理和负载均衡。而是通过DNS提供稳定的网络ID来访问,DNS会将headless service的后端直接解析为Pod Ip列表。(无头服务:service name 直接解析为后面的Pod Ip)
使用 Kubernetes 的 proxy 模式来访问你的服务的场景:
- 由于某些原因,你需要调试你的服务,或者需要直接通过笔记本电脑去访问它们。
- 容许内部通信,展示内部仪表盘等。
这种方式要求运行 kubectl 作为一个未认证的用户,因此不能用这种方式把服务暴露到 internet 或者在生产环境使用。
NodePort
将Service通过指定的Node上的端口暴露给外部,通过此方法,就可以在集群外部访问服务。(在每个Node上分配一个端口作为外部访问入口)。
NodePort 服务是引导外部流量到你的服务的最原始方式。NodePort,在所有节点(虚拟机)上开放一个特定端口,任何发送到该端口的流量都被转发到对应服务。
使用场景:
- 这种方法有许多缺点;
- 每个端口只能是一种服务;
- 端口范围只能是 30000-32767
如果运行的服务不要求一直可用,或者对成本比较敏感,可以使用这种方法。这样的应用的最佳例子是 demo 应用,或者某些临时应用。
LoadBalancer
LoadBalancer服务类型是一种Kubernetes扩展,它可以通过云提供商支持的负载均衡器来暴露服务。这种类型的服务适用于处理公共流量,并且需要在外部进行访问。
LoadBalancer 服务是暴露服务到 internet 的标准方式。在 GKE 上,这种方式会启动一个 Network Load Balancer,它将给一个单独的 IP 地址,转发所有流量到服务。
工作在特定的Cloud Provider上,例如Google Cloud,AWS,OpenStack。
如果想要直接暴露服务,这就是默认方式。所有通往指定的端口的流量都会被转发到对应的服务。它没有过滤条件,没有路由等。这意味着几乎可以发送任何种类的流量到该服务,像 HTTP,TCP,UDP,Websocket,gRPC 或其它任意种类。
这个方式的最大缺点是每一个用 LoadBalancer 暴露的服务都会有它自己的 IP 地址,每个用到的 LoadBalancer 都需要付费,这将是非常昂贵的。

Ingress
Ingress 公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由。
一个将所有流量都发送到同一 Service 的简单 Ingress 示例:

有别于以上所有例子,Ingress 事实上不是一种服务类型。相反,它处于多个服务的前端,扮演着“智能路由”或者集群入口的角色。
使用Ingress可以做很多事情,不同类型的Ingress控制器有不同的功能。
默认的GKE ingress控制器会启动一个 HTTP(S) Load Balancer,可以通过基于路径或者是基于子域名的方式路由到后端服务。例如,可以通过foo.yourdomain.com 发送任何东西到foo服务,或者是发送yourdomain.com/bar/路径下的任何东西到bar服务。
八、FQDN概念及其使用场景
FQDN:Fully Qualified Domain Name,完全限定域名。
FQDN = Hostname + DomainName,主机+域名。
例如申请了域名comp.com,有一台主机名为web,则可以使用web.comp.com得到这个主机IP。
若还有两台提供邮件和OA服务的主机cmail,oa,则这时候可以用以下FQDN:
cmail.comp.com
oa.comp.com
如果希望跨名字空间访问,则需要使用完全限定域名(FQDN)。
九、如何挂载文件,如果挂载本地文件
https://www.cnblogs.com/limeiyang/p/16575628.html
kubernetes学习总结之文件挂载_helm 挂载文件_望长安于日下的博客-CSDN博客
一个运行中的容器,缺省情况下,对文件系统的写入,都是发生在其分层文件系统的可写层的,一旦容器运行结束,所有写入都会被丢弃。因此需要对持久化支持。Kubernetes 中通过 Volume 的方式提供对存储的支持。
十、如何配置节点调度策略,有几种方式,各有什么区别
调度 是指将 Pod 放置到合适的节点上,以便对应节点上的 Kubelet 能够运行这些 Pod。
十一、边车实现的原理
https://blog.csdn.net/knight_zhou/article/details/126241319
k8s总结之边车模式sidecar – 云原生之路 (361way.com)
边车模式sidecar是在不改变原有container功能的情况下,在同一个pod下增加其他container来增加对应的功能。
因为在同一个Pod下的容是共享一个namespace空间的,所以对应的网络、存储等资源也是同一个空间下的,这就可以很方便的进行两个containers之间交互。
十二、如何使用Init容器初始化环境
快速理解initContainer概念、用法、使用场景_initcontainers_[shenhonglei]的博客-CSDN博客
Init 容器 | Kubernetes
k8s中初始化容器(init container)的作用及其使用方法 - 安大 - 博客园 (cnblogs.com)
在容器的部署过程中,有的时候需要在容器运行之前进行一些预配置的工作,比如下载配置,判断某些服务是否启动,修改配置等一些准备的工作,想要实现这些功能,在k8s中可以使用初始化容器,在应用容器运行之前进行一些预处理的工作。
Init 容器是一种特殊容器,在 Pod 内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本。
使用 Init 容器
因为 Init 容器具有与应用容器分离的单独镜像,其启动相关代码具有如下优势:
-
Init 容器可以包含一些安装过程中应用容器中不存在的实用工具或个性化代码。 例如,没有必要仅为了在安装过程中使用类似
sed、awk、python或dig这样的工具而去FROM一个镜像来生成一个新的镜像。 -
应用镜像的创建者和部署者可以各自独立工作,而没有必要联合构建一个单独的应用镜像。
-
与同一 Pod 中的多个应用容器相比,Init 容器能以不同的文件系统视图运行。因此,Init 容器可以被赋予访问应用容器不能访问的 Secret 的权限。
-
由于 Init 容器必须在应用容器启动之前运行完成,因此 Init 容器提供了一种机制来阻塞或延迟应用容器的启动,直到满足了一组先决条件。 一旦前置条件满足,Pod 内的所有的应用容器会并行启动。
-
Init 容器可以安全地运行实用程序或自定义代码,而在其他方式下运行这些实用程序或自定义代码可能会降低应用容器镜像的安全性。 通过将不必要的工具分开,你可以限制应用容器镜像的被攻击范围。
参考文献:
k8s的安装与简单使用 - 大数据 - 亿速云 (yisu.com)
相关文章:
Kubernetes概念及实践
Kubernetes(K8S)中文文档_Kubernetes中文社区 Kubernetes 文档 | Kubernetes K8S 是负责自动化运维管理多个跨机器 Docker 程序的 集群。 kubeadm快速部署K8s集群的工具,如: 创建master node:kubeadm init 将worker node加入到集群中&#x…...
洛谷 B2007 A+B问题 C++代码
目录 题目描述 AC Code 题目描述 AC Code #include<bits/stdc.h> using namespace std; typedef long long ll; int main() { int a,b;cin>>a>>b;cout<<ab<<endl;return 0; }...
Git基础 | 原理、配置、用法、分支 合并
目录 1 git初步了解 1.1 git的安装 1.2 git原理模型 1.3 git基础配置 1.4 git基础用法 1 将文件加入暂存区 2 查看当前的git仓库状态 3 删除文件 4 commit 将暂存区文件加入本地git版本仓库 5 查看提交历史 更改 2 分支 2.1 创建分支 2.2 查看分支 2.3 切换分支 …...
刀具磨损状态识别(Python代码,MSCNN_LSTM_Attention模型,初期磨损、正常磨损和急剧磨损分类,解压缩直接运行)
1.运行效果:刀具磨损状态识别(Python代码,MSCNN_LSTM_Attention模型,初期磨损、正常磨损和急剧磨损)_哔哩哔哩_bilibili 环境库: NumPy 版本: 1.19.4 Pandas 版本: 0.23.4 Matplotlib 版本: 2.2.3 Keras …...
web:[网鼎杯 2020 青龙组]AreUSerialz
题目 点进题目发现 需要进行代码审计 function __destruct() {if($this->op "2")$this->op "1";$this->content "";$this->process();}这里有__destruct()函数,在对象销毁时自动调用,根据$op属性的值进行…...
【Python机器学习】零基础掌握PolynomialCountSketch内核近似特征
面临挑战的机器学习模型:如何提高准确性? 在实际应用中,机器学习模型常常面临一个问题:如何在保持模型复杂性不变的情况下,提高模型的准确性?特别是在处理高维数据集时,这个问题尤为突出。这里,有一种名为“核方法”的技术可以解决这个问题,但通常会增加计算成本。那…...
【Linux】深入理解系统文件操作(1w字超详解)
1.系统下的文件操作: ❓是不是只有C\C有文件操作呢?💡Python、Java、PHP、go也有,他们的文件操作的方法是不一样的啊 1.1对于文件操作的思考: 我们之前就说过了:文件内容属性 针对文件的操作就变成了对…...
echarts柱状图和折线图双图表配置项
{tooltip: {trigger: axis,axisPointer: { // 坐标轴指示器,坐标轴触发有效type: cross // 默认为直线,可选为:line | shadow}},legend: {data: [新增客户数, 新增客户两年内回款情况],type: scroll,selectedMode: false // 控制是否可以通过…...
【LVS实战】02 搭建一个LVS-NAT实验
一、网络结构 用虚拟机搭建如下的几台机器,并配置如下的ip 关于虚拟机网卡和网络的配置,可以参考 iptables章节,05节:网络转发实验 主机A模拟外网的机器 B为负载均衡的机器 C和D为 RealServer 二、C和D主机的网关设置 C和D机…...
2023.10.26-SQL测试题
employee表: department表: job表: location表: 题目及答案: -- (1).查询工资大于一万的员工的姓名(first_name与last_name用“.”进行连接)和工资-- select CONCAT(first_name,.,last_name) as 姓名 ,salary -…...
JVM虚拟机:从结构到指令让你对栈有足够的认识
本文重点 在前面的课程中,我们学习了运行时数据区的大概情况,从本文开始,我们将对一些组件进行详细的介绍,本文我们将学习栈。栈内存主管java的运行,是在线程创建时创建的,它是线程私有的,它的生命周期是跟随线程的生命期,也就是说线程结束栈内存就释放了,对于栈来说…...
【启发式算法】白鲸优化算法【附python实现代码】
写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 路虽远,行则将至&#…...
【Python机器学习】零基础掌握RBFSampler内核近似特征
有没有想过如何在复杂的数据集上快速进行分类? 在现实生活中,大量的数据集通常非常复杂,并不总是线性可分的。例如,在医疗领域,诊断患者是否患有某种疾病通常涉及多个变量和复杂的模式。简单的线性模型可能无法有效地处理这种复杂性。 一种可能的解决方案是使用更复杂的…...
高级工技能等级认定---网络设备安全
目录 一、DHCP 安全配置 二、SSH配置 三、标准ACL的配置 四、配置交换机端口安全 五、三层交换和ACL的配置 一、DHCP 安全配置 配置要求: 1.给交换机配置enable密码. 2.在交换机上创建VLAN 100,将F0/1-3口改为Access口,并加入到VLAN …...
spting Boot常见知识点
31.介绍一下 SpringBoot,有哪些优点? 1、Spring Boot 基于 Spring 开发,Spirng Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。它并不是用来替代 Spring 的解…...
大模型在数据分析场景下的能力评测
“你们能对接国产大模型吗?” “开源的 LLaMA 能用吗,中文支持怎么样?” “私有化部署和在线服务哪个更合适?” 自 7 月 14 日发布 AI 数智助理 Kyligence Copilot 后,我们收到了很多类似上面的咨询,尤其…...
[笔记] 关于y1变量取名冲突的问题
参考博客 遇到的问题和这位老哥的一模一样。 结论是:当我们用math头文件的时候,不能在全局定义 y0 和 y1,j0、j1、jn、yn。...
js笔记(函数参数、面向对象、装饰器、高级函数、捕获异常)
JavaScript 笔记 函数参数 默认参数 在 JavaScript 中,我们可以为函数的参数设置默认值。如果调用函数时没有传递参数,那么参数将使用默认值。 function greet(name World) {console.log(Hello, ${name}!); }greet(); // 输出:Hello, Wo…...
Istio实战(八)- Istio 动态准入 Webhook 配置
准入 Webhook 是 HTTP 方式的回调,接收准入请求并对其进行相关操作。 可定义两种类型的准入 Webhook,Validating 准入 Webhook 和 Mutating 准入 Webhook。使用 Validating Webhook,可以通过自定义的准入策略来拒绝请求; 使用 Mut…...
Vue的安装
----------------------------------------------------前置---------------------------------------------------- 1.node.js的下载安装、缓存路径的设置 ①安装 ②设置npm prefix, cache 2.NODE_PATH、PATH ①系统变量中加 ②PATH中加 3.配置镜像源 -----------------------…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
