kubekey 离线安装高可用 kubernetes 集群
1. 准备环境
版本:
kubernetes: v1.29.2
kubesphere: v3.4.1
kubekey: v3.1.1
说明:
- kubekey 只用于安装 kubernetes,因为 kubesphere 的配置在安装时经常需要变动,用 ks-installer 的 yaml 文件更好管理;
- ks-installer 用于安装 kubesphere,kubekey、ks-installer 分工明确;
- 本文在已有 harbor 仓库环境下,建议把镜像都放在公开仓库
library
中,如没有 harbor 仓库,按官方文档来即可;
1.1 机器准备
4 台机器,操作系统:Ubuntu 24.04/RHEL8/CentOS9
10.0.0.130 k8smaster-lv01
10.0.0.131 k8snode-lv01
10.0.0.132 k8snode-lv02
10.0.0.133 k8snode-lv03
10.0.0.140 lb.kubesphere.local
1.2 离线安装包准备
## kk create manifest --with-kubernetes v1.29.2
# kk create manifest # 最好在已有集群创建
这里提供一个可以直接使用的,因为系统安装包,我们自己处理,所以这里不用管系统的 iso 啥的地址。
manifest-sample.yaml
:
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Manifest
metadata:name: sample
spec:arches:- amd64operatingSystems:- arch: amd64type: linuxid: redversion: "Can't get the os version. Please edit it manually."osImage: Red Hat Enterprise Linux 8.10 (Ootpa)repository:iso:localPath: url:- arch: amd64type: linuxid: redversion: "Can't get the os version. Please edit it manually."osImage: Red Hat Enterprise Linux 8.9 (Ootpa)repository:iso:localPath: url:kubernetesDistributions:- type: kubernetesversion: v1.29.2components:helm: version: v3.14.3cni: version: v1.2.0etcd: version: v3.5.13containerRuntimes:- type: containerdversion: 1.7.13calicoctl:version: v3.27.3crictl: version: v1.29.0images:- docker.io/aledbf/kube-keepalived-vip:0.35- docker.io/bitnami/etcd:3.5.6-debian-11-r10- docker.io/bitnami/kubectl:1.29.2- docker.io/calico/cni:v3.27.3- docker.io/calico/node:v3.27.3- docker.io/coredns/coredns:1.9.3- docker.io/grafana/promtail:2.8.3- docker.io/kubesphere/examples-bookinfo-reviews-v1:1.16.2- docker.io/kubesphere/fluent-bit:v1.9.4- docker.io/kubesphere/k8s-dns-node-cache:1.22.20- docker.io/kubesphere/ks-apiserver:v3.4.1- docker.io/kubesphere/ks-installer:v3.4.1- docker.io/kubesphere/ks-installer:v3.4.1-patch.0- docker.io/kubesphere/ks-jenkins:v3.4.0-2.319.3-1- docker.io/kubesphere/kube-apiserver:v1.29.2- docker.io/kubesphere/kube-controller-manager:v1.29.2- docker.io/kubesphere/kube-proxy:v1.29.2- docker.io/kubesphere/kube-rbac-proxy:v0.11.0- docker.io/kubesphere/kube-scheduler:v1.29.2- docker.io/kubesphere/pause:3.9- docker.io/library/busybox:latest- docker.io/openebs/lvm-driver:1.5.0- docker.io/openebs/mayastor-agent-ha-node:v2.6.1- docker.io/openebs/mayastor-csi-node:v2.6.1- docker.io/openebs/mayastor-io-engine:v2.6.1- docker.io/openebs/zfs-driver:2.5.0- docker.io/opensearchproject/opensearch:2.6.0- docker.io/osixia/openldap:1.3.0- docker.io/prom/node-exporter:v1.3.1- docker.io/weaveworks/scope:1.13.0- quay.io/argoproj/argocd:v2.3.3- registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.0- registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.8.0registry:auths: {}
# 生成离线安装包
kk artifact export -m manifest-sample.yaml -o kubesphere.tar.gz
因为最近 docker hub 无法在大陆拉 image,可以使用我这个 Jenkinsfile 配合海外节点将 image 拉下来,传到私有 harbor 仓库。
mirror-images-to-harbor,当前直接在它上面提 issue 同步也可,只是一个 issue 只能同步一个 image。
当然,官方的这个 image 同步脚本 offline-installation-tool.sh 也可以,它是直接拉的 image,可能拉不动,你下面列表里的 image 得转成你拉得动的 image 地址:
以下为image列表,生成的 image 列表,并不完全,所以后面发现有漏的 image,随时使用 jenkins 把缺少的image同步下。
docker.io/aledbf/kube-keepalived-vip:0.35
docker.io/bitnami/etcd:3.5.6-debian-11-r10
docker.io/bitnami/kubectl:1.29.2
docker.io/calico/cni:v3.27.3
docker.io/calico/node:v3.27.3
docker.io/coredns/coredns:1.9.3
docker.io/grafana/promtail:2.8.3
docker.io/kubesphere/examples-bookinfo-reviews-v1:1.16.2
docker.io/kubesphere/fluent-bit:v1.9.4
docker.io/kubesphere/k8s-dns-node-cache:1.22.20
docker.io/kubesphere/ks-apiserver:v3.4.1
docker.io/kubesphere/ks-installer:v3.4.1
docker.io/kubesphere/ks-installer:v3.4.1-patch.0
docker.io/kubesphere/ks-jenkins:v3.4.0-2.319.3-1
docker.io/kubesphere/kube-apiserver:v1.29.2
docker.io/kubesphere/kube-controller-manager:v1.29.2
docker.io/kubesphere/kube-proxy:v1.29.2
docker.io/kubesphere/kube-rbac-proxy:v0.11.0
docker.io/kubesphere/kube-scheduler:v1.29.2
docker.io/kubesphere/pause:3.9
docker.io/library/busybox:latest
docker.io/openebs/lvm-driver:1.5.0
docker.io/openebs/mayastor-agent-ha-node:v2.6.1
docker.io/openebs/mayastor-csi-node:v2.6.1
docker.io/openebs/mayastor-io-engine:v2.6.1
docker.io/openebs/zfs-driver:2.5.0
docker.io/opensearchproject/opensearch:2.6.0
docker.io/osixia/openldap:1.3.0
docker.io/prom/node-exporter:v1.3.1
docker.io/weaveworks/scope:1.13.0
quay.io/argoproj/argocd:v2.3.3
registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.10.0
registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.8.0
1.3 安装依赖和配置
系统源即可安装的依赖包,所有节点都需要执行
Ubuntu 系:
apt-get install -y socat conntrack ebtables ipset chrony
RHEL 系:
yum install -y socat conntrack ebtables ipset chrony
因为使用私有 Harbor 仓库,所有节点配置 host:
10.25.23.102 harbor.ops.shenzhen.com
1.4 安装负载均衡 keepalived + haproxy
负载均衡节点安装 keepalived haproxy
apt-get -y install keepalived haproxy
# yum -y install keepalived haproxy
新建用户
useradd -r -u 139 -g 100 -s /sbin/nologin keepalived_script
配置 keepalived
/etc/keepalived/keepalived.conf
(注意配置中注释,不同节点权重不同)内容:
! /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {script_user keepalived_scriptenable_script_security router_id LVS_DEVELmax_auto_priority 99
}
vrrp_script check_apiserver {script "/etc/keepalived/check_apiserver.sh"interval 3weight -2fall 10rise 2
}vrrp_instance VI_1 {# 只配置一个 MASTER,其它的配置为 BACKUPstate MASTER# 注意网卡名interface ens192virtual_router_id 60# MASTER 权重最高,尽量全部设置为不同的权重priority 101authentication {auth_type PASSauth_pass k8s}virtual_ipaddress {10.0.0.140}track_script {check_apiserver}
}
/etc/keepalived/check_apiserver.sh
内容:
#!/bin/bash# if check error then repeat check for 12 times, else exit
err=0
for k in $(seq 1 12)
docheck_code=$(curl -k https://localhost:6443)if [[ $check_code == "" ]]; thenerr=$(expr $err + 1)sleep 5continueelseerr=0breakfi
doneif [[ $err != "0" ]]; then# if apiserver is down send SIG=1echo 'apiserver error!'exit 1
else# if apiserver is up send SIG=0echo 'apiserver normal!'exit 0
fi
chmod a+x /etc/keepalived/check_apiserver.sh
配置 haproxy
/etc/haproxy/haproxy.cfg
内容:
globallog 127.0.0.1 local0 errmaxconn 50000uid 138 gid 138#daemonpidfile haproxy.piddefaultsmode httplog 127.0.0.1 local0 errmaxconn 50000retries 3timeout connect 5stimeout client 30stimeout server 30stimeout check 2slisten admin_statsmode httpbind 0.0.0.0:1080log 127.0.0.1 local0 errstats refresh 30sstats uri /haproxy-statusstats realm Haproxy\ Statisticsstats auth admin:k8sstats hide-versionstats admin if TRUEfrontend k8s-httpsbind 0.0.0.0:8443mode tcp#maxconn 50000default_backend k8s-httpsbackend k8s-httpsmode tcpbalance roundrobinserver master1 10.0.0.130:6443 weight 1 maxconn 1000 check inter 2000 rise 2 fall 3
systemctl start haproxy
systemctl start keepalived
systemctl enable haproxy
systemctl enable keepalived
2. kubernetes 集群安装
2.1 kk 安装
kk 命令是二进制的,从安装好的机器,直接拷贝到安装集群的 master 机器即可。
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.1.1 sh -
mv kk /usr/local/sbin/
kk version --show-supported-k8s# 生成 ssh key
ssh-keygen -t ed25519 -C "master"
# 公钥添加到其它节点
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@其它节点IP
2.2 kk 配置
mkdir k8s
cd k8s
# kk create config --with-kubernetes v1.29.2
直接使用如下配置文件 config-sample.yaml
,然后修改下节点信息,如下:
内容:
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:name: sample
spec:hosts:- {name: k8smaster-lv01, address: 10.0.0.130, internalAddress: 10.0.0.130, user: root, privateKeyPath: "~/.ssh/id_ed25519"}- {name: k8snode-lv01, address: 10.0.0.131, internalAddress: 10.0.0.131, user: root, privateKeyPath: "~/.ssh/id_ed25519"}- {name: k8snode-lv02, address: 10.0.0.132, internalAddress: 10.0.0.132, user: root, privateKeyPath: "~/.ssh/id_ed25519"}- {name: k8snode-lv03, address: 10.0.0.133, internalAddress: 10.0.0.133 , user: root, privateKeyPath: "~/.ssh/id_ed25519"}roleGroups:etcd:- k8smaster-lv01- k8snode-lv01- k8snode-lv02control-plane: - k8smaster-lv01worker:- k8snode-lv01- k8snode-lv02- k8snode-lv03controlPlaneEndpoint:## Internal loadbalancer for apiservers # internalLoadbalancer: haproxydomain: lb.kubesphere.localaddress: "10.0.0.140"port: 8443kubernetes:version: v1.29.2clusterName: cluster.localautoRenewCerts: truecontainerManager: containerdetcd:type: kubekeynetwork:plugin: calicokubePodsCIDR: 10.233.64.0/18kubeServiceCIDR: 10.233.0.0/18## multus support. https://github.com/k8snetworkplumbingwg/multus-cnimultusCNI:enabled: falseregistry:privateRegistry: "harbor地址"namespaceOverride: ""registryMirrors: [""]# insecureRegistries: ["非httpsimage地址"] # 如果是 http,请取消注释#auths:# "harbor地址":# username: ''# password: ''# skipTLSVerify: true # Allow contacting registries over HTTPS with failed TLS verification.# plainHTTP: true # Allow contacting registries over HTTP.addons: []
2.3 kk 安装集群
检查时间,如果时间未同步,重启 chronyd 服务。
date
systemctl stop chronyd
systemctl start chronyd
chronyc tracking
# chronc -a makestep # 强制同步
集群安装:
kk create cluster -f config-sample.yaml -a kubesphere.tar.gz
如果使用的 harbor 是 http 的,kubekey 内部是使用的 https 的仓库,可能会中断安装。我们再次安装,前面二进制文件已经缓存至 kubekey 安装目录,然后不加 -a
参数,就是在线安装,只是使用内部仓库的在线安装方式。
再次集群安装:
kk create cluster -f config-sample.yaml
有可能需要处理的地方
/etc/containerd/config.toml
,里面改成私有仓库地址
sandbox_image = "harbor地址/library/kubesphere/pause:3.9"
- 如果你需要 coredns 添加 hosts,注意
/etc/resolv.conf
里面要设置 DNS,否则 coredns 可能无法启动。
kubectl edit cm coredns -n kube-system
:
data:Corefile: |.:53 {errorshealth {lameduck 5s}hosts /etc/coredns/hosts {IP 域名fallthrough}
kubectl edit cm nodelocaldns -n kube-system
:
}.:53 {errorscache 30reloadloopbind 169.254.25.10# forward . /etc/resolv.confforward . 10.233.0.3 {force_tcp}prometheus :9253}
2.4 kk 安装集群失败处理
在 master 节点执行,注意确认正确的节点和危险性!!!
kk delete cluster -f config-sample.yaml
3. kubesphere 安装
根据官方文档来即可。
curl -L -O https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/cluster-configuration.yaml
curl -L -O https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/kubesphere-installer.yaml
spec:persistence:storageClass: ""authentication:jwtSecret: ""local_registry: 你的harbor地址/library # 镜像都放在 library 下并保持原来目录结构
sed -i "s#^\s*image: kubesphere.*/ks-installer:.*# image: 你的harbor地址/library/kubesphere/ks-installer:v3.4.1#" kubesphere-installer.yaml
安装:
kubectl apply -f kubesphere-installer.yaml
kubectl apply -f cluster-configuration.yaml
最容易出问题的就是镜像拉取,随时查看并解决镜像问题。
kubectl get pod -A
kubectl describe pod <pod名> -n <namespace>
4. 暴露 kubesphere 控制台
4.1 安装 metallb
推荐 helm 方式安装,这里略,详情参考 metallb官方文档。
安装好后配置一个全局 IP 池。
4.2 打开全局网关
使用 http://某一节点IP:30880
登录 ks 后,在集群设置中,打开全局网关,注意使用 Loadbalancer
类型暴露,因为有全局 IP 池可用,按理说随便选一个负载均衡厂商即可,因为没有 metallb 选项。
4.3 ingress 暴露 ks 控制台
console-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:annotations:nginx.ingress.kubernetes.io/upstream-vhost: ks-console.kubesphere-system.svc.cluster.localname: ks-consolenamespace: kubesphere-system
spec:rules:- host: ks域名http:paths:- backend:service:name: ks-consoleport:number: 80path: /pathType: ImplementationSpecific
kubectl apply -f console-ingress.yaml
参考资料:
[1] https://www.kubesphere.io/zh/docs/v3.4/installing-on-linux/introduction/air-gapped-installation/
[2] https://www.kubesphere.io/zh/docs/v3.4/installing-on-kubernetes/on-prem-kubernetes/install-ks-on-linux-airgapped/
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
kubekey 离线安装高可用 kubernetes 集群
1. 准备环境 版本: kubernetes: v1.29.2 kubesphere: v3.4.1 kubekey: v3.1.1 说明: kubekey 只用于安装 kubernetes,因为 kubesphere 的配置在安装时经常需要变动,用 ks-installer 的 yaml 文件更好管理;ks-installe…...
![](https://www.ngui.cc/images/no-images.jpg)
大数据面试题之Hive(2)
目录 Hive的join操作原理,leftjoin、right join、inner join、outer join的异同? Hive如何优化join操作 Hive的mapjoin Hive语句的运行机制,例如包含where、having、group by、orderby,整个的执行过程? Hive使用的时候会将数据同步到HD…...
![](https://www.ngui.cc/images/no-images.jpg)
求推荐几款http可视化调试工具?
Postman 非常流行的API调试工具,适用于构建、测试和文档化APIs。它支持各种HTTP方法,有强大的集合和环境管理功能,以及代码生成能力。 BB-API 是一款旨在提升开发效率的工具,它专注于提供简约、完全免费且功能强大的HTTP模拟请…...
![](https://img-blog.csdnimg.cn/direct/61ae36719e16498b8672e63fe5213f45.png)
Python逻辑控制语句 之 判断语句--if else结构
1.if else 的介绍 if else :如果 ... 否则 .... 2.if else 的语法 if 判断条件: 判断条件成立,执行的代码 else: 判断条件不成立,执行的代码 (1)else 是关键字, 后⾯需要 冒号 (2)存在冒号…...
![](https://img-blog.csdnimg.cn/direct/ab5ad4841bcb41f992b3537bdf0b21c2.png)
word2016中新建页面显示出来的页面没有页眉页脚,只显示正文部分。解决办法
问题描述:word2016中新建页面显示出来的页面没有页眉页脚,只显示正文部分。设置了页边距也不管用。 如图1 图1 解决: 点击“视图”——“多页”——“单页”,即可。如图2操作 图2 结果展示:如图3 图3...
![](https://www.ngui.cc/images/no-images.jpg)
8.javaSE基础进阶_泛型generics(无解通配符?+上下界统配符superextends)
文章目录 泛型generics一.泛型简介二.泛型类1.泛型方法 三.泛型接口四.泛型进阶1.*<?>无解通配符*2.上界通配符 < ? extends E>3.下界通配符 < ? super E>4.泛型擦除 泛型generics 一.泛型简介 JDK5引入,一种安全机制,编译时检测不匹配类型 特点: 将数…...
![](https://img-blog.csdnimg.cn/img_convert/3ba779d5bee30da53d14325771d42855.png)
酒店客房管理系统(Java+MySQL)
技术栈 Java: 作为主要编程语言。Swing GUI: 用于开发图形用户界面。MySQL: 作为数据库管理系统。JDBC: 用于连接和操作MySQL数据库。 功能要点 管理登录认证 系统提供管理员登录认证功能。通过用户名和密码验证身份,确保只有授权的用户可以访问和管理酒店客房信…...
![](https://img-blog.csdnimg.cn/direct/fcabb46ab7ca489eabf83057bc6954f2.png)
S32K3 --- Wdg(内狗) Mcal配置
前言 看门狗的作用是用来检测程序是否跑飞,进入死循环。我们需要不停地喂狗,来确保程序是正常运行的,一旦停止喂狗,意味着程序跑飞,超时后就会reset复位程序。 一、Wdg 1.1 WdgGeneral Wdg Disable Allowed : 启用此参数后,允许在运行的时候禁用看门狗 Wdg Enable User…...
![](https://img-blog.csdnimg.cn/direct/379acf573de24d7b8af5526e22766739.png)
LeetCode 算法:二叉树的层序遍历 c++
原题链接🔗:二叉树的层序遍历 难度:中等⭐️⭐️ 题目 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:roo…...
![](https://img-blog.csdnimg.cn/direct/569e0e5db8fd4f33a9046898a878daed.jpeg)
博途TIA Portal「集成自动化软件」下载安装,TIA Portal 灵活多变的编程环境
在编程领域,博途TIA Portal以其卓越的编程工具和灵活多变的编程环境,为众多用户提供了前所未有的便利。这款软件不仅支持多种编程语言,如梯形图(Ladder Diagram)、功能块图(Function Block Diagram…...
![](https://img-blog.csdnimg.cn/direct/9fbd6924010346559e3a8a6ff0a0f1c7.gif)
火了10年的电脑监控软件有哪些?盘点8款热门的电脑监控软件
电脑监控软件领域经历了多年的发展,一些软件因为其稳定的功能、良好的用户体验和不断更新的技术支持,得以在市场上保持长期的热度和用户基础。以下是几款在过去十年里广受好评且持续流行的内网监控软件: 1.安企神:由河北安企神网络…...
![](https://img-blog.csdnimg.cn/img_convert/f298dc71451edcecf8b96a5d431747fd.jpeg)
入门Java爬虫:认识其基本概念和应用方法
Java爬虫初探:了解它的基本概念与用途,需要具体代码示例 随着互联网的快速发展,获取并处理大量的数据成为企业和个人不可或缺的一项任务。而爬虫(Web Scraping)作为一种自动化的数据获取方法,不仅能够快速…...
![](https://img-blog.csdnimg.cn/direct/fcfb3e4ba11f4bcda1cf5a75f7f4aaf1.png#pic_center)
Flask新手入门(一)
前言 Flask是一个用Python编写的轻量级Web应用框架。它最初由Armin Ronacher作为Werkzeug的一个子项目在2010年开发出来。Werkzeug是一个综合工具包,提供了各种用于Web应用开发的工具和函数。自发布以来,Flask因其简洁和灵活性而迅速受到开发者的欢迎。…...
![](https://img-blog.csdnimg.cn/img_convert/d547054f2f456ebbfdc8579c5b642993.png)
Grafana-11.0.0 在线部署教程
Grafana-11.0.0 在线部署教程 环境: 操作系统: ubuntugrafana版本: 11.0.0 (建议不要按照最新版)grafana要求的系统配置不高,建议直接部署在监控服务器上,比如zabbix服务器、prometheus服务器…...
![](https://img-blog.csdnimg.cn/direct/3a73ac64789948f095c161509bbef70a.png)
pytorch-01
加载mnist数据集 one-hot编码实现 import numpy as np import torch x_train np.load("../dataset/mnist/x_train.npy") # 从网站提前下载数据集,并解压缩 y_train_label np.load("../dataset/mnist/y_train_label.npy") x torch.tensor(y…...
![](https://img-blog.csdnimg.cn/direct/ae747510ea5f4327acbc16c0f3046f96.png)
梦想CAD二次开发
1.mxdraw简介 mxdraw是一个HTML5 Canvas JavaScript框架,它在THREE.js的基础上扩展开发,为用户提供了一套在前端绘图更为方便,快捷,高效率的解决方案,mxdraw的实质为一个前端二维绘图平台。你可以使用mxdraw在画布上绘…...
![](https://www.ngui.cc/images/no-images.jpg)
Eureka的介绍与使用
Eureka 是 Netflix 开源的一款服务注册与发现组件,在微服务架构中扮演着重要的角色。 一、Eureka 的介绍 工作原理 服务注册:各个微服务在启动时,会向 Eureka Server 发送注册请求,将自身的服务名、实例名、IP 地址、端口等信息注…...
![](https://img-blog.csdnimg.cn/direct/b34b4feafb1644d68c5ce60e1fc55615.png)
ChatGPT之母:AI自动化将取代人类,创意性工作或将消失
目录 01 AI取代创意性工作的担忧 1.1 CTO说了啥 02 AI已开始大范围取代人类 01 AI取代创意性工作的担忧 几天前的采访中,OpenAI的CTO直言,AI可能会扼杀一些本来不应该存在的创意性工作。 近来一篇报道更是印证了这一观点。国外科技媒体的老板Miller用…...
![](https://www.ngui.cc/images/no-images.jpg)
【深度学习驱动流体力学】湍流仿真到深度学习湍流预测
目录 一、湍流项目结构二、三个OpenFOAM湍流算例1. motorBike背景和目的文件结构和关键文件使用和应用湍流仿真深度学习湍流预测深度学习湍流预测的挑战和应用结合湍流仿真与深度学习2. pitzDaily背景和目的文件结构和关键文件使用和应用3. pitzDailyMapped背景和目的文件结构和…...
![](https://img-blog.csdnimg.cn/direct/95555f577f344143a92bef46fe890c05.png)
如何从0构建一款类似pytest的工具
Pytest主要模块 Pytest 是一个强大且灵活的测试框架,它通过一系列步骤来发现和运行测试。其核心工作原理包括以下几个方面:测试发现:Pytest 会遍历指定目录下的所有文件,找到以 test_ 开头或 _test.py 结尾的文件,并且…...
![](https://img-blog.csdnimg.cn/direct/cba96f95aeb84d2da6a3244c5ef49ff7.png)
6.27-6.29 旧c语言
#include<stdio.h> struct stu {int num;float score;struct stu *next; }; void main() {struct stu a,b,c,*head;//静态链表a.num 1;a.score 10;b.num 2;b.score 20;c.num 3;c.score 30;head &a;a.next &b;b.next &c;do{printf("%d,%5.1f\n&…...
![](https://img-blog.csdnimg.cn/direct/d15bcfbb49a640fcb65b85d5c27a00d3.png)
Unidbg调用-补环境V3-Hook
结合IDA和unidbg,可以在so的执行过程进行Hook,这样可以让我们了解并分析具体的执行步骤。 应用场景:基于unidbg调试执行步骤 或 还原算法(以Hookzz为例)。 1.大姨妈 1.1 0x1DA0 public void hook1() {...
![](https://img-blog.csdnimg.cn/img_convert/9be2f20439fd16e7b16a5bd40129ddb3.jpeg)
从AICore到TensorCore:华为910B与NVIDIA A100全面分析
华为NPU 910B与NVIDIA GPU A100性能对比,从AICore到TensorCore,展现各自计算核心优势。 AI 2.0浪潮汹涌而来,若仍将其与区块链等量齐观,视作炒作泡沫,则将错失新时代的巨大机遇。现在,就是把握AI时代的关键…...
![](https://img-blog.csdnimg.cn/direct/1a9da56b1da74fb39ece23b3172bdb5f.png)
Edge 浏览器退出后,后台占用问题
Edge 浏览器退出后,后台占用问题 环境 windows 11 Microsoft Edge版本 126.0.2592.68 (正式版本) (64 位)详情 在关闭Edge软件后,查看后台,还占用很多系统资源。实在不明白,关了浏览器还不能全关了,微软也学流氓了。…...
![](https://img-blog.csdnimg.cn/direct/e5718df8f3124c228a8c857d87073ec9.png)
实验八 T_SQL编程
题目 以电子商务系统数据库ecommerce为例 1、在ecommerce数据库,针对会员表member首先创建一个“呼和浩特地区”会员的视图view_hohhot,然后通过该视图查询来自“呼和浩特”地区的会员信息,用批处理命令语句将问题进行分割,并分…...
![](https://img-blog.csdnimg.cn/direct/dcacc0c8dfb54cf68163355c8e0b4aca.png#pic_center)
【爆肝34万字】从零开始学Python第2天: 判断语句【入门到放弃】
目录 前言判断语句True、False简单使用作用 比较运算符引入比较运算符的分类比较运算符的结果示例代码总结 逻辑运算符引入逻辑运算符的简单使用逻辑运算符与比较运算符一起使用特殊情况下的逻辑运算符 if 判断语句引入基本使用案例演示案例补充随堂练习 else 判断子句引入else…...
![](https://img-blog.csdnimg.cn/direct/28eff7d47d004efc9d17a1579d7b1f91.png)
React 19 新特性集合
前言:https://juejin.cn/post/7337207433868197915 新 React 版本信息 伴随 React v19 Beta 的发布,React v18.3 也一并发布。 React v18.3相比最后一个 React v18 的版本 v18.2 ,v18.3 添加了一些警告提示,便于尽早发现问题&a…...
![](https://img-blog.csdnimg.cn/direct/5c57713a7f7a4abd8d72deee184bb942.jpeg)
耐高温水位传感器有哪些
耐高温水位传感器在现代液位检测技术中扮演着重要角色,特别适用于需要高温环境下稳定工作的应用场合。这类传感器的设计和材质选择对其性能和可靠性至关重要。 一种典型的耐高温水位传感器是FS-IR2016D,它采用了PPSU作为主要材质。PPSU具有优良的耐高温…...
![](https://www.ngui.cc/images/no-images.jpg)
Symfony国际化与本地化:打造多语言应用的秘诀
标题:Symfony国际化与本地化:打造多语言应用的秘诀 摘要 Symfony是一个高度灵活的PHP框架,用于创建Web应用程序。它提供了强大的国际化(i18n)和本地化(l10n)功能,允许开发者轻松创…...
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=data%3Aimage%2Fgif%3Bbase64%2CR0lGODlhAQABAPABAP%2F%2F%2FwAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw%3D%3D&pos_id=ehgNxH8J)
ApolloClient GraphQL 与 ReactNative
要在 React Native 应用程序中设置使用 GraphQL 的简单示例,您需要遵循以下步骤: 设置一个 React Native 项目。安装 GraphQL 必要的依赖项。创建一个基本的 GraphQL 服务器(或使用公共 GraphQL 端点)。从 React Native 应用中的…...
![](https://img-blog.csdnimg.cn/f95ddae62a4e43a68295601c723f92fb.gif#pic_center)
【贡献法】2262. 字符串的总引力
本文涉及知识点 贡献法 LeetCode2262. 字符串的总引力 字符串的 引力 定义为:字符串中 不同 字符的数量。 例如,“abbca” 的引力为 3 ,因为其中有 3 个不同字符 ‘a’、‘b’ 和 ‘c’ 。 给你一个字符串 s ,返回 其所有子字符…...
![](https://img-blog.csdnimg.cn/direct/a018d813e92d4c8f8709432c464bd817.png)
C#基于SkiaSharp实现印章管理(3)
本系列第一篇文章中创建的基本框架限定了印章形状为矩形,但常用的印章有方形、圆形等多种形状,本文调整程序以支持定义并显示矩形、圆角矩形、圆形、椭圆等4种形式的印章背景形状。 定义印章背景形状枚举类型,矩形、圆形、椭圆相关的尺寸…...
![](https://www.ngui.cc/images/no-images.jpg)
如何理解泛型的编译期检查
既然说类型变量会在编译的时候擦除掉,那为什么我们往 ArrayList 创建的对象中添加整数会报错呢?不是说泛型变量String会在编译的时候变为Object类型吗?为什么不能存别的类型呢?既然类型擦除了,如何保证我们只能使用泛型…...
![](https://img-blog.csdnimg.cn/cfa9f7cc231e4561b4d2a970d2e7a249.jpg)
计算机组成原理:海明校验
在上图中,对绿色的7比特数据进行海明校验,需要添加紫色的4比特校验位,总共是蓝色的11比特。紫色的校验位pi分布于蓝色的hi的1, 2, 4, 8, 16, 32, 64位,是2i-1位。绿色的数据位bi分布于剩下的位。 在下图中,b1位于h3&a…...
![](https://img-blog.csdnimg.cn/img_convert/7c4e0055094ec5dc9390c661c1f054b6.png)
信息学奥赛初赛天天练-39-CSP-J2021基础题-哈夫曼树、哈夫曼编码、贪心算法、满二叉树、完全二叉树、前中后缀表达式转换
PDF文档公众号回复关键字:20240629 2022 CSP-J 选择题 单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项) 5.对于入栈顺序为a,b,c,d,e的序列,下列( )不合法的出栈序列 A. a,b&a…...
![](https://img-blog.csdnimg.cn/direct/b40b1e7f255b423486f891c40fa1df81.jpeg)
第11章 规划过程组(收集需求)
第11章 规划过程组(一)11.3收集需求,在第三版教材第377~378页; 文字图片音频方式 第一个知识点:主要输出 1、需求跟踪矩阵 内容 业务需要、机会、目的和目标 项目目标 项目范围和 WBS 可…...
![](https://www.ngui.cc/images/no-images.jpg)
探索WebKit的守护神:深入Web安全策略
探索WebKit的守护神:深入Web安全策略 在数字化时代,网络已成为我们生活的一部分,而网页浏览器作为我们探索网络世界的窗口,其安全性至关重要。WebKit作为众多流行浏览器的内核,例如Safari,其安全性策略是保…...
![](https://www.ngui.cc/images/no-images.jpg)
unity ScrollRect裁剪ParticleSystem粒子
搜了下大概有这几种方法 通过模板缓存通过shader裁剪区域:案例一,案例二,案例三,三个案例都是类似的方法,需要在c#传入数据到shader通过插件 某乎上的模板缓存方法link,(没有登录看不到全文&a…...
![](https://img-blog.csdnimg.cn/direct/4050bf42d10947b89d1c3711ab09df95.png)
凤仪亭 | 第7集 | 大丈夫生居天地之间,岂能郁郁久居人下 | 司徒一言,令我拨云见日,茅塞顿开 | 三国演义 | 逐鹿群雄
🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 📌这篇博客分享的是《三国演义》文学剧本第Ⅰ部分《群雄逐鹿》的第7️⃣集《凤仪亭》的经典语句和文学剧本全集台词 文章目录 1.经典语句2.文学剧本台词 …...
![](https://img-blog.csdnimg.cn/direct/0bbab5c630504083a19d0f0afe24937a.png)
React实战学习(一)_棋盘设计
需求: 左上侧:状态左下侧:棋盘,保证胜利就结束 和 下过来的不能在下右侧:“时光机”,保证可以回顾,索引 语法: 父子之间属性传递(props)子父组件传递(写法上&…...
![](https://www.ngui.cc/images/no-images.jpg)
【LeetCode】每日一题:三数之和
解题思路 最开始是打算沿着二数之和的思路做,即固定了最大的,然后小的开始遍历,因为这种遍历方式只需要遍历一轮就能完成,所以复杂度应该是O(n2),但是最后几个示例还是超时了,可能进…...
![](https://img-blog.csdnimg.cn/direct/b89a69ef5491432a94ac371d118aac52.jpeg)
逆风而行:提升逆商,让困难成为你前进的动力
一、引言 生活,总是充满了未知与变数。有时,我们会遇到阳光明媚的日子,享受着宁静与和谐;但更多时候,我们却不得不面对那些突如其来的坏事件,如工作的挫折、人际关系的困扰、健康的挑战等。这些事件如同突…...
![](https://img-blog.csdnimg.cn/img_convert/9e689a177bb9d520ce8744fb4057214d.png)
新能源汽车CAN总线故障定位与干扰排除的几个方法
CAN总线是目前最受欢迎的现场总线之一,在新能源车中有广泛应用。新能源车的CAN总线故障和隐患将影响驾驶体验甚至行车安全,如何进行CAN总线故障定位及干扰排除呢? 目前,国内机动车保有量已经突破三亿大关。由于大量的燃油车带来严峻的环境问题,因此全面禁售燃油车的日程在…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
【涵子来信】——社交宝典:克服你心中的内向,世界总有缺陷
内向,你是内向的吗?想必每个人不同,面对的情形也是不同的。 暑假是一个很好的机会,我是可以去多社交社交。但是,面对着CSDN上这么多技术人er,那么,我的宝典,对于大家,有…...
![](https://img-blog.csdnimg.cn/img_convert/29f38ab0d7c49737171943091733c867.png)
LabVIEW项目外协时选择公司与个人兼职的比较
在选择LabVIEW项目外协合作伙伴时,外协公司和个人兼职各有优劣。个人兼职成本较低且灵活,但在可靠性、技术覆盖面、资源和风险管理上存在不足。而外协公司拥有专业团队、丰富资源、完善的项目管理和风险控制,尽管成本较高,但能提…...
![](https://img-blog.csdnimg.cn/img_convert/c0b2a12745707fa63da511d46bf0791b.png)
汽车电子工程师入门系列——CAN 规范系列通读
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…...
![](https://i-blog.csdnimg.cn/direct/54ea2060a37141cc8d7d3bec8cc3782b.png)
泽众云真机-平台华为机型HarmonyOS NEXT系统已上线!
泽众云真机平台华为机型HarmonyOS NEXT系统已上线! 之前文章《泽众云真机-平台即将升级支持华为机型HarmonyOS NEXT系统泽众云真机-平台即将升级支持华为机型HarmonyOS NEXT系统》,为什么要升级HarmonyOS NEXT系统?我们之前有说过,…...
![](https://img-blog.csdnimg.cn/direct/b5ab35d945094b0c8a4d08bfa2efa77b.png)
AI基础:从线性回归到梯度下降
一个简单的问题: 如果此时你正站在迷路缭绕的山坡上,能见度不高,但是你又想去往最低的山谷的位置,怎么走? 很简单,哪里陡那就往那里走呗——而这就是梯度下降算法的思想。 古话说:“先发制于人…...
![](https://img-blog.csdnimg.cn/direct/59b4a9db64e44ea781bfdc2774f1c0ba.png)
AI产品经理面试
把优秀当习惯把优秀当习惯肯定不是口头说说,那有什么判断标准吗? 当我做完一件事儿的时候,我会看它有没有突破我的舒适圈、能不能惊艳到我自己。这就是我的判断标准。 在自我介绍和经历介绍时,面试者应该注重以下几个方面…...
![](https://img-blog.csdnimg.cn/direct/50b04377a7b7411aad953fd2a14d3a50.png)
二进制方式部署consul单机版
1.consul的下载 mkdir -p /root/consul/data && cd /root/consul wget https://releases.hashicorp.com/consul/1.18.0/consul_1.18.0_linux_amd64.zip unzip consul_1.18.0_linux_amd64.zip mv consul /usr/local/bin/ 2.配置文件 // 配置文件路径: /roo…...
![](https://www.ngui.cc/images/no-images.jpg)
驾驭Pip源之变:在Windows系统中轻松更换源的指南
驾驭Pip源之变:在Windows系统中轻松更换源的指南 Python作为一门流行的编程语言,拥有一个庞大的第三方库生态系统,而Pip作为Python的包管理工具,承担着安装和管理这些库的重任。然而,默认的Pip源有时可能因为网络问题…...
![](https://img-blog.csdnimg.cn/direct/67e0159b75044e459fe9936fc61366c4.jpeg#pic_center)
认识String类
文章目录 String类字符串的遍历字符串的比较字符串的替换字符串的转换字符串的切割字符串的切片字符串的查找 总结 String类 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提 供的字符串系列函数完…...
![](https://www.ngui.cc/images/no-images.jpg)
Java中MD5加密算法的原理与实现详解
Java中MD5加密算法的原理与实现详解 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! MD5(Message Digest Algorithm 5)是一种广泛使用的…...
![](https://i-blog.csdnimg.cn/direct/d579c38394bc447eb5a883714a569c5d.png#pic_center)
【语言模型】Xinference的部署过程
一、引言 Xinference,也称为Xorbits Inference,是一个性能强大且功能全面的分布式推理框架,专为各种模型的推理而设计。无论是研究者、开发者还是数据科学家,都可以通过Xinference轻松部署自己的模型或内置的前沿开源模型。Xinfe…...
![](https://img-blog.csdnimg.cn/direct/67453ab42f204a78ab84d190f347739c.png)
LDO芯片手册,实例应用分析
在进行电路设计时LDO是经常用到的,尤其在为芯片,晶振等敏感电路进行供电时应用更多,下面选取一款比较常用的LDO芯片,一起进行更深入的学习。 SGM2036特点简介 SGM2036,圣邦微一款比较常用的LDO芯片手册 可以先大致看…...
![](https://img-blog.csdnimg.cn/direct/e1a89286de604a23b58308bb577a2ace.png)
Reactor模型:网络线程模型演进
一,阻塞IO线程池模型(BIO) 这是传统的网络编程方案所采用的线程模型。 即有一个主循环,socket.accept阻塞等待,当建立连接后,创建新的线程/从线程池中取一个,把该socket连接交由新线程全权处理。…...
![](https://www.ngui.cc/images/no-images.jpg)
彻底乱了!5米长豪华车,原价近30万,现仅售20万出头,还要啥凯美瑞?
今天说的这款车就是凯迪拉克CT5。凯迪拉克CT5车长接近5米,全系标配2.0T+10AT动力系统,整体性价比超高,实力剑指宝马3系、奥迪A4L。作为一款新美式豪华格调轿车——凯迪拉克CT5在中国市场销量超20万辆,运动轿车价值新标杆诞生!作为一款美系豪华中级轿车,凯迪拉克CT5近年来…...
![](https://img-blog.csdnimg.cn/direct/804430925aa64d5f81128fca4a7c8e0a.png)
vscode:如何解决”检测到include错误,请更新includePath“
vscode:如何解决”检测到include错误,请更新includePath“ 前言解决办法1 获取includePath路径2 将includePath路径添加到指定文件3 保存 前言 配置vscode是出现如下错误: 解决办法 1 获取includePath路径 通过cmd打开终端,输入如下指令&a…...
![](https://img-blog.csdnimg.cn/img_convert/06d138e041456dbffdffd691ad7e7775.jpeg)
pelican,一个超强的 Python 库!
更多Python学习内容:ipengtao.com 大家好,今天为大家分享一个超强的 Python 库 - pelican。 Github地址:https://github.com/getpelican/pelican 在当今数字化时代,博客已经成为个人和企业分享信息、展示成果的重要途径。静态网站…...
![](https://img-blog.csdnimg.cn/img_convert/31199512aa8d0fd4274f0febc332c964.png)
ssm150旅游网站的设计与实现+jsp
旅游网站设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本旅游网站就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞…...
![](https://www.ngui.cc/images/no-images.jpg)
字节跳动(校招)算法原题
大模型"价格战"越演越烈 昨天的 文章 提到,自从 5 月 15 号,字节跳动发布了击穿行业底价的豆包大模型后,各大厂家纷纷跟进降价,而且都不是普通降价,要么降价 90% 以上,要么直接免费。 今天是豆包…...
![](https://www.ngui.cc/images/no-images.jpg)
工具-博客搭建
以下相关讲解均基于hexo github pages方案,请注意!!!博客搭建方案选择 参考文章1 搭建教程 参考文章1 hexo github pages搭建过程中遇到的问题 删除categories、tags 1、删除含有需要删除categories、tags的文章 2、hexo …...