当前位置: 首页 > news >正文

k8s---pod进阶

//资源限制
当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。

当为 Pod 中的容器指定了 request 资源时,调度器就使用该信息来决定将 Pod 调度到哪个节点上。当还为容器指定了 limit 资源时,kubelet 就会确保运行的容器不会使用超出所设的 limit 资源量。kubelet 还会为容器预留所设的 request 资源量, 供该容器使用。

如果 Pod 运行所在的节点具有足够的可用资源,容器可以使用超出所设置的 request 资源量。不过,容器不可以使用超出所设置的 limit 资源量。

如果给容器设置了内存的 limit 值,但未设置内存的 request 值,Kubernetes 会自动为其设置与内存 limit 相匹配的 request 值。 类似的,如果给容器设置了 CPU 的 limit 值但未设置 CPU 的 request 值,则 Kubernetes 自动为其设置 CPU 的 request 值 并使之与 CPU 的 limit 值匹配。

官网示例:

https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container///Pod 和 容器 的资源请求和限制:
spec.containers[].resources.requests.cpu		//定义创建容器时预分配的CPU资源
spec.containers[].resources.requests.memory		//定义创建容器时预分配的内存资源
spec.containers[].resources.limits.cpu			//定义 cpu 的资源上限 
spec.containers[].resources.limits.memory		//定义内存的资源上限

//CPU 资源单位
CPU 资源的 request (最小资源)和 limit (最大资源)以 cpu 为单位。Kubernetes 中的一个 cpu 相当于1个 vCPU(1个超线程)。
Kubernetes 也支持带小数 CPU 的请求。spec.containers[].resources.requests.cpu 为 0.5 的容器能够获得一个 cpu 的一半 CPU 资源(类似于Cgroup对CPU资源的时间分片)。表达式 0.1 等价于表达式 100m(毫核),表示每 1000 毫秒内容器可以使用的 CPU 时间总量为 0.1*1000 毫秒。
Kubernetes 不允许设置精度小于 1m 的 CPU 资源。

//内存 资源单位
内存的 request 和 limit 以字节为单位。可以以整数表示,或者以10为底数的指数的单位(E、P、T、G、M、K)来表示, 或者以2为底数的指数的单位(Ei、Pi、Ti、Gi、Mi、Ki)来表示。

如:1KB=10^3=1000,1MB=10^6=1000000=1000KB,1GB=10^9=1000000000=1000MB
1KiB=2^10=1024,1MiB=2^20=1048576=1024KiB

举例PS:在买硬盘的时候,操作系统报的数量要比产品标出或商家号称的小一些,主要原因是标出的是以 MB、GB为单位的,1GB 就是1,000,000,000Byte,而操作系统是以2进制为处理单位的,因此检查硬盘容量时是以MiB、GiB为单位,1GiB=2^30=1,073,741,824,相比较而言,1GiB要比1GB多出1,073,741,824-1,000,000,000=73,741,824Byte,所以检测实际结果要比标出的少一些。

https://kubernetes.io/zh-cn/docs/concepts/configuration/manage-resources-containers/示例1:
apiVersion: v1
kind: Pod
metadata:name: frontend
spec:containers:- name: appimage: images.my-company.example/app:v4env:- name: MYSQL_ROOT_PASSWORDvalue: "password"resources:requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"- name: log-aggregatorimage: images.my-company.example/log-aggregator:v6resources:requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"

此例子中的 Pod 有两个容器。每个容器的 request(最小) 值为 0.25 cpu 和 64MiB 内存,每个容器的 limit (最大)值为 0.5 cpu 和 128MiB 内存。那么可以认为该 Pod 的总的资源 request 为 0.5 cpu 和 128 MiB 内存,总的资源 limit 为 1 cpu 和 256MiB 内存。

示例2:
vim pod2.yaml
apiVersion: v1
kind: Pod
metadata:name: frontend
spec:containers:- name: webimage: nginxenv:- name: WEB_ROOT_PASSWORDvalue: "password"resources:requests:memory: "64Mi"cpu: "250m"limits:memory: "128Mi"cpu: "500m"- name: dbimage: mysqlenv:- name: MYSQL_ROOT_PASSWORDvalue: "abc123"resources:requests:memory: "512Mi"  128cpu: "0.5"limits:memory: "1Gi"    256cpu: "1"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#根据提供的 pod2.yaml 文件中的配置信息,创建或更新一个 Pod 对象
kubectl apply -f pod2.yaml
#获取有关名为 "frontend" 的 Pod 的详细信息
kubectl describe pod frontend

在这里插入图片描述

#查看pods的详细信息
kubectl get pods -o wide

在这里插入图片描述

#获取有关名为 "node01" 的节点的详细信息
kubectl describe nodes node01

在这里插入图片描述

top 按下1

在这里插入图片描述
查看cpu个数:

cat /proc/cpuinfo | grep processor

在这里插入图片描述
总结:

了解资源限制(cpu内存)
pod 容器资源的限制
spec.container.resource.request.cpu/memory #创建pod容器时需要预留的资源 举例
0.5 500m(0.5cpu 500毫核)pod容器资源的上限
spec.container.resource.limits.cpu/memory#pod容器能够 使用的资源的上限MI GI(2为底数)
M G(10为底数)kubectl descrbe pod/node 名称 查看pod或者node 资源使用情况

-----健康检查:又称为探针(Probe)
探针是由kubelet对容器执行的定期诊断。

探针的三种规则:

●livenessProbe :判断容器是否正在运行。如果探测失败,则kubelet会杀死容器,并且容器将根据 restartPolicy 来设置 Pod 状态。 如果容器不提供存活探针,则默认状态为Success。●readinessProbe :判断容器是否准备好接受请求。如果探测失败,端点控制器将从与 Pod 匹配的所有 service 址endpoints 中剔除删除该Pod的IP地。 初始延迟之前的就绪状态默认为Failure。如果容器不提供就绪探针,则默认状态为Success。●startupProbe(这个1.17版本增加的):判断容器内的应用程序是否已启动,主要针对于不能确定具体启动时间的应用。如果配置了 startupProbe 探测,在则在 startupProbe 状态为 Success 之前,其他所有探针都处于无效状态,直到它成功后其他探针才起作用。 如果 startupProbe 失败,kubelet 将杀死容器,容器将根据 restartPolicy 来重启。如果容器没有配置 startupProbe, 则默认状态为 Success。
#注:以上规则可以同时定义。在readinessProbe检测成功之前,Pod的running状态是不会变成ready状态的。

在这里插入图片描述

Probe支持三种检查方法:

●exec :在容器内执行指定命令。如果命令退出时返回码为0则认为诊断成功。●tcpSocket :对指定端口上的容器的IP地址进行TCP检查(三次握手)。如果端口打开,则诊断被认为是成功的。●httpGet :对指定的端口和路径上的容器的IP地址执行HTTPGet请求。如果响应的状态码大于等于200且小于400,则诊断被认为是成功的

每次探测都将获得以下三种结果之一:
●成功:容器通过了诊断。
●失败:容器未通过诊断。
●未知:诊断失败,因此不会采取任何行动

官网示例:

https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes///示例1:exec方式
apiVersion: v1
kind: Pod
metadata:labels:test: livenessname: liveness-exec
spec:containers:- name: livenessimage: k8s.gcr.io/busyboxargs:  - /bin/sh- -c- touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 60livenessProbe:exec:command:- cat- /tmp/healthyfailureThreshold: 1initialDelaySeconds: 5periodSeconds: 5#initialDelaySeconds:指定 kubelet 在执行第一次探测前应该等待5秒,即第一次探测是在容器启动后的第6秒才开始执行。默认是 0 秒,最小值是 0。
#periodSeconds:指定了 kubelet 应该每 5 秒执行一次存活探测。默认是 10 秒。最小值是 1。
#failureThreshold: 当探测失败时,Kubernetes 将在放弃之前重试的次数。 存活探测情况下的放弃就意味着重新启动容器。就绪探测情况下的放弃 Pod 会被打上未就绪的标签。默认值是 3。最小值是 1。
#timeoutSeconds:探测的超时后等待多少秒。默认值是 1 秒。最小值是 1。(在 Kubernetes 1.20 版本之前,exec 探针会忽略 timeoutSeconds 探针会无限期地 持续运行,甚至可能超过所配置的限期,直到返回结果为止。)可以看到 Pod 中只有一个容器。kubelet 在执行第一次探测前需要等待 5 秒,kubelet 会每 5 秒执行一次存活探测。kubelet 在容器内执行命令 cat /tmp/healthy 来进行探测。如果命令执行成功并且返回值为 0,kubelet 就会认为这个容器是健康存活的。 当到达第 31 秒时,这个命令返回非 0 值,kubelet 会杀死这个容器并重新启动它。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

vim exec.yaml
apiVersion: v1
kind: Pod
metadata:name: liveness-execnamespace: default
spec:containers:- name: liveness-exec-containerimage: busyboximagePullPolicy: IfNotPresentcommand: ["/bin/sh","-c","touch /tmp/live ; sleep 30; rm -rf /tmp/live; sleep 3600"]livenessProbe:exec:command: ["test","-e","/tmp/live"]initialDelaySeconds: 1periodSeconds: 3kubectl create -f exec.yaml

在这里插入图片描述

kubectl describe pods liveness-exec

在这里插入图片描述

#获取当前运行的Pod的列表,并实时监视它们的状态。
kubectl get pods -w

在这里插入图片描述

//示例2:httpGet方式

apiVersion: v1
kind: Pod
metadata:labels:test: livenessname: liveness-http
spec:containers:- name: livenessimage: k8s.gcr.io/livenessargs:- /serverlivenessProbe:httpGet:path: /healthzport: 8080httpHeaders:- name: Custom-Headervalue: AwesomeinitialDelaySeconds: 3periodSeconds: 3在这个配置文件中,可以看到 Pod 也只有一个容器。initialDelaySeconds 字段告诉 kubelet 在执行第一次探测前应该等待 3 秒。periodSeconds 字段指定了 kubelet 每隔 3 秒执行一次存活探测。kubelet 会向容器内运行的服务(服务会监听 8080 端口)发送一个 HTTP GET 请求来执行探测。如果服务器上 /healthz 路径下的处理程序返回成功代码,则 kubelet 认为容器是健康存活的。如果处理程序返回失败代码,则 kubelet 会杀死这个容器并且重新启动它。任何大于或等于 200 并且小于 400 的返回代码标示成功,其它返回代码都标示失败。
vim httpget.yaml
apiVersion: v1
kind: Pod
metadata:name: liveness-httpgetnamespace: default
spec:containers:- name: liveness-httpget-containerimage: soscscs/myapp:v1imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80livenessProbe:httpGet:port: httppath: /index.htmlinitialDelaySeconds: 1periodSeconds: 3timeoutSeconds: 10kubectl create -f httpget.yaml

在这里插入图片描述在这里插入图片描述

kubectl get pod -owide
#获取当前运行的Pod的列表,并显示更详细的信息。
通过运行这个命令,您将获得一个包含所有Pod的表格,其中包括每个Pod的名称、所属命名空间、状态、重启次数、IP地址、节点名称和容器运行时等更详细的信息。

在这里插入图片描述

访问:curl 10.244.1.6/index.html  

在这里插入图片描述

kubectl exec -it liveness-httpget -- rm -rf /usr/share/nginx/html/index.html
或者:
kubectl exec -it liveness-httpget sh #进入到 "liveness-httpget" Pod 的容器中,并打开一个交互式的Shell会话
cd /usr/share/nginx/html/
rm -rf index.html

在这里插入图片描述

kubectl get pods
#删除后 看见重启后又恢复正常,相当于重新恢复

在这里插入图片描述

//示例3:tcpSocket方式

apiVersion: v1
kind: Pod
metadata:name: goproxylabels:app: goproxy
spec:containers:- name: goproxyimage: k8s.gcr.io/goproxy:0.1ports:- containerPort: 8080readinessProbe:tcpSocket:port: 8080initialDelaySeconds: 5periodSeconds: 10livenessProbe:tcpSocket:port: 8080initialDelaySeconds: 15periodSeconds: 20这个例子同时使用 readinessProbe 和 livenessProbe 探测。kubelet 会在容器启动 5 秒后发送第一个 readinessProbe 探测。这会尝试连接 goproxy 容器的 8080 端口。如果探测成功,kubelet 将继续每隔 10 秒运行一次检测。除了 readinessProbe 探测,这个配置包括了一个 livenessProbe 探测。kubelet 会在容器启动 15 秒后进行第一次 livenessProbe 探测。就像 readinessProbe 探测一样,会尝试连接 goproxy 容器的 8080 端口。如果 livenessProbe 探测失败,这个容器会被重新启动。
vim tcpsocket.yaml
apiVersion: v1
kind: Pod
metadata:name: probe-tcp
spec:containers:- name: nginximage: soscscs/myapp:v1livenessProbe:initialDelaySeconds: 5timeoutSeconds: 1tcpSocket:port: 8080periodSeconds: 10failureThreshold: 2kubectl create -f tcpsocket.yaml

在这里插入图片描述

kubectl exec -it probe-tcp  -- netstat -natp

在这里插入图片描述

kubectl get pods -w
NAME        READY   STATUS    RESTARTS   AGE
probe-tcp   1/1     Running             0          1s
probe-tcp   1/1     Running             1          25s       #第一次是 init(5秒) + period(10秒) * 2
probe-tcp   1/1     Running             2          45s       #第二次是 period(10秒) + period(10秒)  重试了两次
probe-tcp   1/1     Running             3          65s

在这里插入图片描述
在这里插入图片描述

总结:

pod 容器资源的限制
spec.container.resource.request.cpu/memory #创建pod容器时需要预留的资源 举例
0.5 500m(0.5cpu 500毫核)pod容器资源的上限
spec.container.resource.limits.cpu/memory#pod容器能够 使用的资源的上限MI GI(2为底数)
M G(10为底数)kubectl descrbe pod/node 名称 查看pod或者node 资源使用情况探针(健康检查) 存活 就绪 启动
存活探针(livenessProbe):判断容器是否正常运行,如果探测失败则杀掉容器(不是pod),容器会根据容器策略决定是否重启。就绪探针(readinessProbe):判断pod是能够进入ready状态,做好就绪请求的准备:
如果探测失败就会进入notready状态并且service资源的endpoints中剔除,service将不会把请求转发给这个pod。启动探针(startupProbe):判断容器是否会成功,在探测成功状态为success之前,其他探针都会处于失效状态。三种探测方式:
exec:通过command设置执行在容器内执行的linux命令来探测,如果返回码为0,则为探测成功.httpget:通过http get请求指定的容器端口和url路径,如果返回状态为>=200且<400(2xx 3xx),则为探测成功。tcpsocket:通过指定的端口发送tcp连接,如果端口无误,且三次握手成功(tcp连接成功),则认为探测成功。

相关文章:

k8s---pod进阶

//资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小&#xff0c;以及其他类型的资源。 当为 Pod 中的容器指定了 request 资源时&#xff0c;调度器就使用该信息来决定将 Pod 调度到哪个节点上。当还为容器指定了 li…...

scrapy框架爬取数据(创建一个scrapy项目+xpath解析数据+通过pipelines管道实现数据保存+中间件)

目录 一、创建一个scrapy项目 二、xpath解析数据 三、通过pipelines管道实现数据保存 四、中间件 一、创建一个scrapy项目 1.创建一个文件夹&#xff1a;C06 在终端输入以下命令&#xff1a; 2.安装scrapy:pip install scrapy 3.来到文件夹下&#xff1a;cd C06 4.创建…...

你被骗了吗?别拿低价诱骗机器视觉小白,4000元机器视觉系统怎么来的?机器视觉工程师自己组装一个2000元不到,还带深度学习

淘宝闲鱼&#xff0c;大家搜搜铺价格&#xff0c;特别是机器视觉小白。 机架&#xff1a;&#xff08;新的&#xff09;200元以下。(看需求&#xff0c;自己简单打光&#xff0c;买个50元的。如果复杂&#xff0c;就拿给供应商免费打光) 相机&#xff0c;镜头&#xff1a;&am…...

计算机毕业设计选题推荐-大学生校园兼职微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

如何使用 Docker 搭建 Jenkins 环境?从安装到精通

不少兄弟搭 jenkins 环境有问题&#xff0c;有的同学用 window, 有的同学用 mac&#xff0c; 有的同学用 linux。 还有的同学公司用 window, 家里用 mac&#xff0c;搭个环境头发掉了一地。。。 这回我们用 docker 去搭建 jenkins 环境&#xff0c;不管你是用的是什么系统&…...

YOLOv5配置文件之 - yaml

在YOLOv5的目录中&#xff0c;models文件夹里存储了YOLO的模型配置。 ./models/yolov5.yaml 定义了YOLOv5s网络结构的定义文件 yaml的主要内容 参数配置 nc: 80 类别数量 depth_multiple: 0.33 模型深度缩放因子 width_multiple: 0.50 控制卷积特征图的通道个数 anchors配…...

HBuilderX实现安卓真机调试

1. 简介 HBuilderX 简称 HX&#xff0c;HBuilder&#xff0c;H 是 HTML 的缩写&#xff0c;Builder 是建设者。是为前端开发者服务的通用 IDE&#xff0c;或者称为编辑器。与 vscode、sublime、webstorm 类似。 它可以开发普通 web 项目&#xff0c;也可以开发 DCloud 出品的 u…...

如何使用IP归属地查询API加强网络安全

引言 在当今数字化时代&#xff0c;网络安全对于个人和组织来说至关重要。恶意网络活动的威胁不断增加&#xff0c;因此采取有效的措施来加强网络安全至关重要。其中之一是利用IP归属地查询API。这个工具可以为您的网络安全策略提供宝贵的信息&#xff0c;帮助您更好地保护自己…...

Nginx 实战指南:暴露出请求的真实 IP

&#x1f52d; 嗨&#xff0c;您好 &#x1f44b; 我是 vnjohn&#xff0c;在互联网企业担任 Java 开发&#xff0c;CSDN 优质创作者 &#x1f4d6; 推荐专栏&#xff1a;Spring、MySQL、Nacos、Java&#xff0c;后续其他专栏会持续优化更新迭代 &#x1f332;文章所在专栏&…...

golang工程— grpc-gateway健康检查和跨域配置

grpc健康检查网关跨域配置 grpc健康检查 grpc健康检查使用 服务端配置 import ("google.golang.org/grpc/health""google.golang.org/grpc/health/grpc_health_v1" )//添加健康检查服务,多路复用 grpc_health_v1.RegisterHealthServer(s, health.NewSe…...

怎么样把握单片机的实际应用?说几句大实话

关注我们 你听说小米的大动作了吗&#xff1f; 没错&#xff0c;小米终于揭开了新操作系统的面纱。 小米澎湃OS暨小米14系列新品发布会于10月26日19:00举行&#xff0c;小米14手机系列、小米首款血压手表、小米Watch S3...... ​ 今天主要讲的是自研7年的小米澎湃系统 没…...

PostgreSQL在云端:部署、管理和扩展你的数据库

随着云计算技术的迅猛发展&#xff0c;将数据库迁移到云端已经成为许多企业的首选。而在众多数据库管理系统中&#xff0c;PostgreSQL因其稳定性、灵活性和可扩展性而成为了不少企业的首选之一。 部署PostgreSQL在云端 将PostgreSQL部署在云端是一个相对简单的过程。云服务提供…...

Maven进阶系列-继承和聚合

Maven进阶系列-继承和聚合 文章目录 Maven进阶系列-继承和聚合1. 继承2. 继承的作用2.1 在父工程中配置依赖的统一管理2.2 在父工程中声明自定义属性2.3 父工程中必须要继承的配置 3. 聚合4. 聚合的作用 1. 继承 Maven工程之间存在继承关系&#xff0c;例如工程B继承工程A&…...

Lintcode 3715 · Lowest Common Ancestor V (最小祖先好题)

3715 Lowest Common Ancestor VPRE Algorithms Medium This topic is a pre-release topic. If you encounter any problems, please contact us via “Problem Correction”, and we will upgrade your account to VIP as a thank you. Description Given a binary tree wit…...

SQL LIKE 运算符

SQL LIKE 运算符 在WHERE子句中使用LIKE运算符来搜索列中的指定模式。 有两个通配符与LIKE运算符一起使用&#xff1a; &#xff05; - 百分号表示零个&#xff0c;一个或多个字符_ - 下划线表示单个字符 注意&#xff1a; MS Access使用问号&#xff08;?&#xff09;而不是…...

AR眼镜定制开发-智能眼镜的主板硬件、软件

AR眼镜定制开发是一项复杂而又重要的工作&#xff0c;它需要准备相关的硬件设备和软件。这些设备包括多个传感器、显示装置和处理器等。传感器用于捕捉用户的动作和环境信息&#xff0c;如摄像头、陀螺仪、加速度计等;显示装置则用于将虚拟信息呈现给用户;处理器用于处理和协调…...

[双指针] (三) LeetCode LCR 179. 查找总价格为目标值的两个商品 和 15. 三数之和

[双指针] (三) LeetCode LCR 179. 查找总价格为目标值的两个商品 和 15. 三数之和 文章目录 [双指针] (三) LeetCode LCR 179. 查找总价格为目标值的两个商品 和 15. 三数之和查找总价格为目标值的两个商品题目分析解题思路代码实现总结 三数之和题目分析解题思路代码实现总结 …...

左移测试,如何确保安全合规还能实现高度自动化?

「云原生安全既是一种全新安全理念&#xff0c;也是实现云战略的前提。 基于蚂蚁集团内部多年实践&#xff0c;云原生PaaS平台SOFAStack发布完整的软件供应链安全产品及解决方案&#xff0c;包括静态代码扫描Pinpoint&#xff0c;软件成分分析SCA&#xff0c;交互式安全测试IA…...

mysql 增删改查基础命令

数据库是企业的重要信息资产&#xff0c;在使用数据库时&#xff0c;要注意(查和增,无所谓,但是删和改,要谨慎! ) 数据库管理系统(DBMS) :实现对数据的有效组织&#xff0c;管理和存取的系统软件 mysgl 数据库是一个系统&#xff0c; 是一个人机系统&#xff0c;硬件, gs,数据库…...

C# 使用 AES 加解密文件

[作者:张赐荣] 对称加密是一种加密技术&#xff0c;它使用相同的密钥来加密和解密数据。换句话说&#xff0c;加密者和解密者需要共享同一个密钥&#xff0c;才能进行通信。 对称加密的优点是速度快&#xff0c;效率高&#xff0c;适合大量数据的加密。对称加密的缺点是密钥的管…...

从双非到科软:我的22408备考复盘与实战指南

1. 双非逆袭科软&#xff1a;我的备考心路历程 作为一名双非院校的计算机专业学生&#xff0c;我深知考研这条路有多难走。去年这个时候&#xff0c;我也和屏幕前的你一样&#xff0c;在知乎、贴吧疯狂搜索各种经验贴&#xff0c;既期待又忐忑。现在回想起来&#xff0c;从3月到…...

Windows Subsystem for Android终极指南:5大核心优势与完整开发实战

Windows Subsystem for Android终极指南&#xff1a;5大核心优势与完整开发实战 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA Windows Subsystem for Andr…...

明日方舟自动化:用MAA重构你的游戏体验,告别重复劳动

明日方舟自动化&#xff1a;用MAA重构你的游戏体验&#xff0c;告别重复劳动 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: h…...

GitHub本周热门项目(2026-05-18)

GitHub 本周热门项目推荐 更新时间&#xff1a;2026-05-18 数据来源&#xff1a;GitHub Trending &#x1f525; TOP 10 热门项目 1. mattpocock/skills 一句话描述&#xff1a;面向真实工程师的技能框架&#xff0c;提供Claude Code等AI编码工具的专业技能扩展。 项目信息详…...

NTN 长距离通信领域亮相

核心蜂窝解决方案亮相并带来Nordic NTN 核心解决方案深度分享。环节将全面解析 nRF9151 模组的核心特性与技术优势&#xff0c;详解卫星星座生态布局及 nRFCloud 平台的应用价值&#xff0c;为参会者勾勒 NTN 技术的整体框架与商业落地前景&#xff0c;为后续内容奠定专业基础。…...

对比直接使用官方API,体验通过Taotoken进行多模型选型与切换的便捷性

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接使用官方API&#xff0c;体验通过Taotoken进行多模型选型与切换的便捷性 在实际的开发工作中&#xff0c;我们常常需要根据…...

Linux Idle 调度器的 cpuidle_reflect:Idle 状态统计更新

简介 在 Linux 内核电源管理与调度体系中&#xff0c;CPU Idle&#xff08;空闲&#xff09;调度器是实现 CPU 低功耗管理的核心模块&#xff0c;负责在 CPU 无任务可调度时&#xff0c;选择并进入合适的硬件空闲状态&#xff08;C-state&#xff09;&#xff0c;在性能与功耗…...

Linux编译OpenSSL 3.0.1时,那个烦人的‘Can‘t locate IPC/Cmd.pm’错误,我是这样解决的

解决Linux编译OpenSSL 3.0.1时的Perl模块依赖问题 在Linux环境下从源码编译安装OpenSSL时&#xff0c;开发者常会遇到各种依赖问题&#xff0c;其中Cant locate IPC/Cmd.pm错误尤为常见。这个错误看似简单&#xff0c;却可能让不熟悉Perl模块管理机制的用户陷入困境。本文将深入…...

Floquet量子码的动态纠错与时空同步技术解析

1. Floquet量子码的时空同步原理在量子纠错领域&#xff0c;Floquet码代表了一种通过周期性测量实现动态稳定的新型编码方案。与传统静态量子纠错码不同&#xff0c;Floquet码的核心创新在于将时间维度纳入编码结构&#xff0c;形成时空一体的纠错机制。这种动态特性使其在容错…...

从Prompt到生产力:收藏这5个Agent工程要素,让大模型成为你的得力助手!

本文深入探讨了Agent在大模型应用中的工程要素&#xff0c;指出许多团队仅将Agent视为高级Prompt&#xff0c;导致工具调用脱节、状态丢失等问题。文章详细解析了函数/工具调用、工作流编排、RAG、记忆与状态管理、权限与安全边界这五个关键方面&#xff0c;强调了从Demo到产品…...