网页设计与网站建设第05/产品代理推广方案
一、实验
1.环境
(1)主机
表1 主机
主机 | 架构 | 版本 | IP | 备注 |
master | K8S master节点 | 1.29.0 | 192.168.204.8 | |
node1 | K8S node节点 | 1.29.0 | 192.168.204.9 | |
node2 | K8S node节点 | 1.29.0 | 192.168.204.10 | 已部署Kuboard |
(2)master节点查看集群
1)查看node
kubectl get node2)查看node详细信息
kubectl get node -o wide
(3)查看pod
[root@master ~]# kubectl get pod -A
(4) 访问Kuboard
http://192.168.204.10:30080/kuboard/cluster
查看节点
2.K8S 1.29版本 部署HELM
(1)查阅
https://github.com/helm/helm/releases/tag/v3.14.4
目前最新版为v3.14.4
(2) 部署HELM
1)安装 helm
//下载二进制 Helm client 安装包
helm-v3.14.4-linux-amd64.tar.gztar -zxvf helm-v3.14.4-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
helm version//命令补全
source <(helm completion bash)
安装
(3)使用 helm 安装 Chart
1)查阅
https://github.com/SonarSource/helm-chart-sonarqube2)使用 helm 安装 Chart
//添加指定的 chart 仓库,
helm repo add sonarqube https://SonarSource.github.io/helm-chart-sonarqube3) 下载指定版本
helm pull sonarqube/sonarqube --version 10.5.0+2748
查阅最新版本
安装
下载
(4)移动
cd ~ && mkdir sonarqubemv sonarqube-10.5.0+2748.tgz sonarqube/cd sonarqube/;ls
3.搭建NFS
(1)检查并安装rpcbind和nfs-utils软件包
[root@master ~]# rpm -q rpcbind nfs-utils
(2)创建目录并授权
[root@master ~]# mkdir -p /opt/sonarqube
[root@master opt]# chmod 777 sonarqube/
(3)打开nfs的配置文件
[root@master opt]# vim /etc/exports
(4)配置文件
给所有网段用户赋予读写权限、同步内容、不压缩共享对象root用户权限
……
/opt/sonarqube *(rw,sync,no_root_squash)
(5) 使NFS配置生效
[root@master opt]# exportfs -r
(6)监听端口
[root@master opt]# ss -antp | grep rpcbind
(7)查看共享
[root@master opt]# showmount -e
其他节点查看
[root@node1 ~]# showmount -e master
4.K8S 1.29版本安装nfs-provisioner
(1) 查阅
https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner/releases
(2)创建目录
[root@master ~]# cd ~ && mkdir nfs-subdir-external-provisioner
[root@master ~]# cd nfs-subdir-external-provisioner/
(3)第一种方式下载
helm添加repo
[root@master nfs-subdir-external-provisioner]# helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner
下载
[root@master ~]# helm pull nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
(5)第二种方式下载
查阅
https://artifacthub.io/packages/helm/nfs-subdir-external-provisioner/nfs-subdir-external-provisioner
点击右边的install
弹出页面
点击右下角"this link"
(6)移动并解压(选择上面的第二种方式)
[root@master ~]# mv nfs-subdir-external-provisioner-4.0.18.tgz nfs-subdir-external-provisioner[root@master nfs-subdir-external-provisioner]# tar -xvf nfs-subdir-external-provisioner-4.0.18.tgz
(7)node节点导入镜像
导入本地
[root@node1 ~]# docker load --input nfs-subdir-external-provisioner.tar
重新打标签
[root@node1 ~]# docker tag k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2 registry.k8s.io/sig-storage/n
(8)master节点安装
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/ --set nfs.server=192.168.204.8 --set nfs.path=/opt/sonarqube --set storageClass.name=nfs-client --set storageClass.defaultClass=true -n nfs-provisioner --create-namespace
(9)查看pod
详细查看
[root@master ~]# kubectl describe pod nfs-subdir-external-provisioner-567b586d45-xz8r6 -n nfs-provisioner
Name: nfs-subdir-external-provisioner-567b586d45-xz8r6
Namespace: nfs-provisioner
Priority: 0
Service Account: nfs-subdir-external-provisioner
Node: node1/192.168.204.9
Start Time: Sat, 27 Apr 2024 19:38:39 +0800
Labels: app=nfs-subdir-external-provisionerpod-template-hash=567b586d45release=nfs-subdir-external-provisioner
Annotations: cni.projectcalico.org/containerID: 8f4479951e36de27cc21dcce8b7bf11a34eb838107d4457c6ca352acbf69399ecni.projectcalico.org/podIP: 10.244.166.167/32cni.projectcalico.org/podIPs: 10.244.166.167/32
Status: Running
IP: 10.244.166.167
IPs:IP: 10.244.166.167
Controlled By: ReplicaSet/nfs-subdir-external-provisioner-567b586d45
Containers:nfs-subdir-external-provisioner:Container ID: docker://9c18e809cc7179a55d66a1886b6addbd034841a6010fd07c4b4049449ab79814Image: registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2Image ID: docker://sha256:932b0bface75b80e713245d7c2ce8c44b7e127c075bd2d27281a16677c8efef3Port: <none>Host Port: <none>State: RunningStarted: Sat, 27 Apr 2024 19:38:41 +0800Ready: TrueRestart Count: 0Environment:PROVISIONER_NAME: cluster.local/nfs-subdir-external-provisionerNFS_SERVER: 192.168.204.8NFS_PATH: /opt/sonarqubeMounts:/persistentvolumes from nfs-subdir-external-provisioner-root (rw)/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-t248d (ro)
Conditions:Type StatusPodReadyToStartContainers True Initialized True Ready True ContainersReady True PodScheduled True
Volumes:nfs-subdir-external-provisioner-root:Type: NFS (an NFS mount that lasts the lifetime of a pod)Server: 192.168.204.8Path: /opt/sonarqubeReadOnly: falsekube-api-access-t248d:Type: Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds: 3607ConfigMapName: kube-root-ca.crtConfigMapOptional: <nil>DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Pulled 88s kubelet Container image "registry.k8s.io/sig-storage/nfs-subdir-external-provisioner:v4.0.2" already present on machineNormal Created 88s kubelet Created container nfs-subdir-external-provisionerNormal Started 87s kubelet Started container nfs-subdir-external-provisionerNormal Scheduled 81s default-scheduler Successfully assigned nfs-provisioner/nfs-subdir-external-provisioner-567b586d45-xz8r6 to node1
(10)Kuboard查看
工作负载
容器组
详细信息
5.K8S 1.29版本 部署Sonarqube(第一种方式)
(1)解压
[root@master ~]# cd sonarqube/
[root@master sonarqube]# ls
[root@master sonarqube]# tar -xvf sonarqube-10.5.0+2748.tgz
(2)修改values.yaml文件
[root@master sonarqube]# cd sonarqube/
[root@master sonarqube]# vim values.yaml
……
# 全局搜索"service"关键字
service:type: NodePort # 类型修改为NodePortexternalPort: 9000internalPort: 9000nodePort: 30090 # NodePort对外暴露的端口
……
persistence:enabled: true #设置为true
……storageClass: nfs-client #设置为当前集群默认的StorageClass
修改前:
修改后:
(3)创建一个安装Sonarqube用的名字空间
[root@master sonarqube]# kubectl create ns sonarqube
(4)chart安装Sonarqube
[root@master sonarqube]# helm install sonarqube ./sonarqube -n sonarqube
NAME: sonarqube
LAST DEPLOYED: Sat Apr 27 20:12:09 2024
NAMESPACE: sonarqube
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:export NODE_PORT=$(kubectl get --namespace sonarqube -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube)export NODE_IP=$(kubectl get nodes --namespace sonarqube -o jsonpath="{.items[0].status.addresses[0].address}")echo http://$NODE_IP:$NODE_PORT
WARNING: Please note that the SonarQube image runs with a non-root user (uid=1000) belonging to the root group (guid=0). In this way, the chart can support arbitrary user ids as recommended in OpenShift.Please visit https://docs.openshift.com/container-platform/4.14/openshift_images/create-images.html#use-uid_create-images for more information.WARNING: The embedded PostgreSQL is intended for evaluation only, it is DEPRECATED, and it will be REMOVED in a future release.Please visit https://artifacthub.io/packages/helm/sonarqube/sonarqube#production-use-case for more information.
(5)输入命令
[root@master sonarqube]# export NODE_PORT=$(kubectl get --namespace sonarqube -o jsonpath="{.spec.ports[0].nodePort}" services sonarqube-sonarqube)
[root@master sonarqube]# export NODE_IP=$(kubectl get nodes --namespace sonarqube -o jsonpath="{.items[0].status.addresses[0].address}")
[root@master sonarqube]# echo http://$NODE_IP:$NODE_PORT
http://192.168.204.8:30090
(6)node节点拉取postgresql镜像
[root@node2 ~]# docker pull docker.io/bitnami/postgresql:11.14.0-debian-10-r22#也可以使用替代愿镜像:m.daocloud.io/docker.io/bitnami/postgresql:11.14.0-debian-10-r22
Kuboard容器组查看
(7) node节点拉取sonarqube镜像
node2拉取镜像
[root@node2 ~]# docker pull sonarqube:10.5.0-community
node2节点导出镜像
[root@node2 ~]# docker save -o sonarqube.tar sonarqube:10.5.0-community
复制Docker镜像到node1节点
[root@node2 ~]# scp sonarqube.tar root@node1:~
node1节点导入Docker镜像
[root@node1 ~]# docker load -i sonarqube.tar
(8) 查看服务
(9)查看卷
[root@master sonarqube]# cd /opt/sonarqube/
[root@master sonarqube]# ls
Kuboard查看
(10)HELM更新配置文件
[root@master sonarqube]# helm upgrade -f sonarqube/values.yaml sonarqube ./sonarqube -n sonarqube
(11)删除项目
[root@master sonarqube]# helm uninstall sonarqube -n sonarqube
5.K8S 1.29版本 部署Sonarqube(第二种方式)
(1)创建NFS
postgresql
[root@master opt]# cd ~
[root@master ~]# mkdir -p /opt/postgre
[root@master ~]# cd /opt
[root@master opt]# chmod 777 postgre/
[root@master opt]# vim /etc/exports
[root@master opt]# exportfs -r
[root@master opt]# showmount -e
Export list for master:
/opt/postgre *
/opt/sonar *
/opt/sonarqube *
/opt/nexus *
/opt/k8s *
sonarqube
[root@master sonarqube]# cd ~
[root@master ~]# mkdir -p /opt/sonar
[root@master ~]#
[root@master ~]# cd /opt
[root@master opt]# chmod 777 sonar/
[root@master opt]# vim /etc/exports
[root@master opt]# exportfs -r
[root@master opt]# showmount -e
Export list for master:
/opt/sonar *
/opt/sonarqube *
/opt/nexus *
/opt/k8s *
(2)创建postgresql的pv
[root@master ~]# vim pv-postgre.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: pv-postgre
spec:capacity:storage: 5Gi #配置容量大小volumeMode: FilesystemaccessModes:- ReadWriteOnce #配置访问策略为只允许一个节点读写persistentVolumeReclaimPolicy: Retain #配置回收策略,Retain为手动回收storageClassName: "pv-postgre" #配置为nfsnfs:path: /opt/postgre #配置nfs服务端的共享路径server: 192.168.204.8 #配置nfs服务器地址
(3)生成资源
[root@master ~]# kubectl apply -f pv-postgre.yaml
(4)查看pv
[root@master ~]# kubectl get pv
(5)拉取镜像
node2
[root@node2 ~]# docker pull postgres:11.4
(6) 导出镜像
[root@node2 ~]# docker save -o postgres.tar postgres:11.4
(7)复制Docker镜像到node1节点
[root@node2 ~]# scp postgres.tar root@node1:~
(8)node1节点导入Docker镜像
[root@node1 ~]# docker load -i postgres.tar
(9)部署postgresql
[root@master ~]# vim postgre.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: postgre-pvcnamespace: sonarqube
spec:accessModes:- ReadWriteOncestorageClassName: "pv-postgre"resources:requests:storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:name: postgres-sonarlabels:app: postgres-sonarnamespace: sonarqube
spec:replicas: 1selector:matchLabels:app: postgres-sonartemplate:metadata:labels:app: postgres-sonarspec:containers:- name: postgres-sonarimage: postgres:11.4imagePullPolicy: IfNotPresentports:- containerPort: 5432env:- name: POSTGRES_DBvalue: "sonarDB"- name: POSTGRES_USERvalue: "sonarUser"- name: POSTGRES_PASSWORDvalue: "123456"resources:limits:cpu: 1000mmemory: 2048Mirequests:cpu: 500mmemory: 1024MivolumeMounts:- name: datamountPath: /var/lib/postgresql/datavolumes:- name: datapersistentVolumeClaim:claimName: postgre-pvc
---
apiVersion: v1
kind: Service
metadata:name: postgres-sonarnamespace: sonarqubelabels:app: postgres-sonar
spec:ports:- port: 5432protocol: TCPtargetPort: 5432selector:app: postgres-sonar
(10) 生成资源
[root@master ~]# kubectl apply -f postgre.yaml
(11) 查看pv,pvc
[root@master ~]# kubectl get pv[root@master ~]# kubectl get pvc -n sonarqube
(12) 查看pod,svc
[root@master ~]# kubectl get pod.svc -n sonarqube
(13)Kuboard查看
工作负载
容器组
服务
(14)创建sonarqube的pv
[root@master ~]# vim pv-sonar.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: pv-sonar
spec:capacity:storage: 10Gi #配置容量大小volumeMode: FilesystemaccessModes:- ReadWriteOnce #配置访问策略为只允许一个节点读写persistentVolumeReclaimPolicy: Retain #配置回收策略,Retain为手动回收storageClassName: "pv-sonar" #配置为nfsnfs:path: /opt/sonar #配置nfs服务端的共享路径server: 192.168.204.8 #配置nfs服务器地址
(15)生成资源
[root@master ~]# kubectl apply -f pv-sonar.yaml
(16)查看pv
[root@master ~]# kubectl get pv
(17)拉取镜像
node1
[root@node1 ~]# docker pull sonarqube:lts
(18) 导出镜像
[root@node1 ~]# docker save -o sonar.tar sonarqube:lts
(19)复制Docker镜像到node1节点
[root@node1 ~]# scp sonar.tar root@node2:~
(20)node1节点导入Docker镜像
[root@node2 ~]# docker load -i sonar.tar
(21) 部署sonarqube
[root@master ~]# vim sonar.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: sonarqube-pvcnamespace: sonarqube
spec:accessModes:- ReadWriteOncestorageClassName: "pv-sonar"resources:requests:storage: 5Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:name: sonarqubelabels:app: sonarqubenamespace: sonarqube
spec:replicas: 1selector:matchLabels:app: sonarqubetemplate:metadata:labels:app: sonarqubespec:initContainers:- name: init-sysctlimage: busyboximagePullPolicy: IfNotPresentcommand: ["sysctl", "-w", "vm.max_map_count=262144"]securityContext:privileged: truecontainers:- name: sonarqubeimage: sonarqube:ltsports:- containerPort: 9000env:- name: SONARQUBE_JDBC_USERNAMEvalue: "sonarUser"- name: SONARQUBE_JDBC_PASSWORDvalue: "123456"- name: SONARQUBE_JDBC_URLvalue: "jdbc:postgresql://postgres-sonar:5432/sonarDB" #postgres-sonar改成集群IPlivenessProbe:httpGet:path: /sessions/newport: 9000initialDelaySeconds: 60periodSeconds: 30readinessProbe:httpGet:path: /sessions/newport: 9000initialDelaySeconds: 60periodSeconds: 30failureThreshold: 6resources:limits:cpu: 2000mmemory: 2048Mirequests:cpu: 1000mmemory: 1024MivolumeMounts:- mountPath: /opt/sonarqube/confname: datasubPath: conf- mountPath: /opt/sonarqube/dataname: datasubPath: data- mountPath: /opt/sonarqube/extensionsname: datasubPath: extensionsvolumes:- name: datapersistentVolumeClaim:claimName: sonarqube-pvc
---
apiVersion: v1
kind: Service
metadata:name: sonarqubenamespace: sonarqubelabels:app: sonarqube
spec:type: NodePortports:- name: sonarqubeport: 9000targetPort: 9000nodePort: 30090protocol: TCPselector:app: sonarqube
(22) 生成资源
[root@master ~]# kubectl apply -f sonar.yaml
(23) 查看pv,pvc
[root@master ~]# kubectl get pv[root@master ~]# kubectl get pvc -n sonarqube
(24)查看pod,svc
[root@master ~]# kubectl get pod,svc -n sonarqube
(25)部署ingress
[root@master ~]# vim ingress-sonar.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-sonarnamespace: sonarqube
spec:ingressClassName: "nginx"rules:- host: sonarqube.sitehttp:paths:- path: /pathType: Prefixbackend:service:name: sonarqubeport:number: 9000
(26)生成资源
[root@master ~]# kubectl apply -f ingress-sonar.yaml
(27)查看ingress
[root@master ~]# kubectl get ingress -n sonarqube
(28)详细查看
[root@master ~]# kubectl describe ingress ingress-sonar -n sonarqube
Name: ingress-sonar
Labels: <none>
Namespace: sonarqube
Address: 10.101.23.182
Ingress Class: nginx
Default backend: <default>
Rules:Host Path Backends---- ---- --------sonarqube.site / sonarqube:9000 (10.244.166.129:9000)
Annotations: <none>
Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Sync 72s (x2 over 86s) nginx-ingress-controller Scheduled for syncNormal Sync 72s (x2 over 86s) nginx-ingress-controller Scheduled for sync
(29)Kuboard查看
应用路由
详细信息
(30)master节点修改hosts
[root@master ~]# vim /etc/hosts
(31)查看
ingress-nginx-controller对外暴露端口为31820
(32)curl测试
[root@master ~]# curl sonarqube.site:31820
(33)物理机修改hosts
(34)访问系统
http://sonarqube.site:31820
(35)输入用户名和密码
账号:admin密码:admin
(36) 设置新密码
弹出
修改
(37)进入系统
(38)其他方式的Sonarqube部署
可以参考本人博客:
持续集成交付CICD:CentOS 7 安装 Sonarqube9.6-CSDN博客
二、问题
1.chart安装Sonarqube报错
(1)报错
Error: INSTALLATION FAILED: cannot load values.yaml: error converting YAML to JSON: yaml: line 67: mapping values are not allowed in this context
(2)原因
格式错误。
(3)解决方法
修改配置文件。
修改前:
修改后:
2.K8S 部署sonarqube报错
(1)报错
查看pod,svc
查看deploy
(2) 原因分析
JDBC连接postgresql失败,value: "jdbc:postgresql://postgres-sonar:5432/sonarDB"中的postgres-sonar需要写入集群IP。
(3)解决方法
修改配置文件:
[root@master ~]# kubectl edit deploy sonarqube -n sonarqube
修改后:
成功:
[root@master ~]# kubectl get pod,svc -n sonarqube
相关文章:

云原生Kubernetes: K8S 1.29版本 部署Sonarqube
一、实验 1.环境 (1)主机 表1 主机 主机架构版本IP备注masterK8S master节点1.29.0192.168.204.8 node1K8S node节点1.29.0192.168.204.9node2K8S node节点1.29.0192.168.204.10已部署Kuboard (2)master节点查看集群 1&…...

读天才与算法:人脑与AI的数学思维笔记19_深度数学
1. 深度数学 1.1. 组合与选择,是发明新事物的两个不可或缺的条件 1.1.1. 保尔瓦雷里(Paul Valry) 1.2. 利用以往的数学定理证明过程训练算法,以发现新的定理 1.3. 谷歌设在伦敦的总部整体有一种现代牛津大学的感觉,…...

Springboot+Vue项目-基于Java+MySQL的旅游网站系统(附源码+演示视频+LW)
大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…...

Element UI 简介
Element UI是一个基于Vue.js的组件库,提供了一套丰富的可复用的组件,包括按钮、表单、弹框、表格、菜单等等。它的设计风格简洁大方,易于使用,能够帮助开发者快速构建现代化的Web应用。 在Element UI中,有许多常用的组…...

mysql 删除重复的数据保留id最大的一条
在 MySQL 中,可以使用以下查询删除重复数据,只保留 ID 最大的那条记录: SQL DELETE t FROM table_name t LEFT JOIN ( SELECT column_name, MAX(id) AS max_id FROM table_name GROUP BY column_name ) t2 ON t.column_name t2…...

UE4 Widget制作搜索框
效果: 一、控件层级结构 1.父控件层级结构 2.子控件层级结构 二、蓝图 1.先清除掉创建子项(注意:这里使用的是reverse循环!) 2.判断是否含有关键字,创建子控件...

JavaScript js写九九乘法表(两种方法)
方法一: 观察规律: 第一个数每行都是自增1。 我们发下第二个数都是从1开始,依次递增1,永远不大于前面的数。 前面数字每自增一次,后面数字自增一轮。 我们可以用双重for循环,外层初始值设为i࿰…...

算法--贪心算法
贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。贪心算法在有最优子结构的问题中尤其有效,这意味着局部最优解能决定全局最优解。简单来说,贪心…...

Redis基本數據結構 ― String
Redis基本數據結構 ― String 介紹常用命令範例1. 為字串鍵設值/取得字串鍵的值2. 查看字串鍵的過期時間3. 如何為key設置時間?4. 如何刪除指定key?5. 如何增加value的值?6. 獲取value值的長度 介紹 字串鍵是Redis中最基本的鍵值對類型,這種類型的鍵值對會在數據…...

php7.4在foreach中对使用数据使用无法??[]判读,无法使用引用传递
代码如下图:这样子在foreach中是无法修改class_history的。正确的应该是去掉??[]判断。 public function actionY(){$array [name>aaa,class_history>[[class_name>一班,class_num>1],[class_name>二班,class_num>2]]];foreach ($array[class_…...

传输层协议 TCP UDP协议 解析(二)
文章目录 UDP:用户数据报协议UDP报文格式TCP与UDP的区别 UDP:用户数据报协议 UDP是一种面向无连接的传输层协议(数据一直发送,没有ack,所以不需要考虑ack),传输可靠性没有保证。 UDP不提供重传…...

java+jsp+Oracle+Tomcat 记账管理系统论文(一)
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️ ➡️点击免费下载全套资料:源码、数据库、部署教程、论文、答辩ppt一条龙服务 ➡️有部署问题可私信联系 ⬆️⬆️⬆️⬆️…...

echarts双Y轴,并实现图例等
一个Y轴时yAxis为对象 yAxis: {type: value,name: 占比(%) },两个Y轴时yAxis为数组 yAxis: [{ // 左侧的type: value,name: 占比(%),nameTextStyle: {padding: [0, 0, 10, -50]},min: 0,max: 100,splitNumber: this.splitNumber, // 设置坐标轴的分割段数interval: 20, // 标轴…...

STM32 工程移植 LVGL:一步一步完成
STM32 工程移植 LVGL:一步一步完成 LVGL,作为一款强大且灵活的开源图形库,专为嵌入式系统GUI设计而生,极大地简化了开发者在创建美观用户界面时的工作。作为一名初学者,小编正逐步深入探索LVGL的奥秘,并决…...

Linux中分析日志及问题排查
可以参考:Linux命令 Linux系统日志是系统管理和故障排查的关键工具。通过分析系统日志,我们能够深入了解系统的运行状况,迅速发现并解决潜在的问题。 1. 日志文件位置 系统日志通常存储在/var/log/目录下,不同的日志有不同的文件,如下: /var/log/syslog:系统日志,包含…...

复杂环境下实时鲁棒3D激光雷达定位
复杂环境下实时鲁棒3D激光雷达定位 一、摘要 定位是机器人领域的重要研究方向。本篇文章里,我们提出了一种基于3D激光雷达的复杂环境下的定位方案。我们首先使用GPS和雷达建立一张点云地图,然后在匹配定位的时候从大地图中分割出一个小地图,…...

9.3.k8s的控制器资源(deployment部署控制器)
目录 一、deployment部署控制器概念 二、deployment资源的清单编写 三、小结 功能 使用场景 原理 四、deployment实现升级和回滚 1.编辑deployment资源清单(v1版本) 2.创建service资源用于访问 编辑 3.修改deploy清单中pod镜像版本为V2 4…...

通过符号程序搜索提升prompt工程
原文地址:supercharging-prompt-engineering-via-symbolic-program-search 通过自动探索大量提示变体来找到更好的提示 2024 年 4 月 22 日 众所周知,LLMs的成功在很大程度上仍然取决于我们用正确的指导和例子来提示他们的能力。随着新一代LLMs变得越…...

js开启子线程及其使用
众所周知,js是单线程,但是可以开启子线程来帮忙处理一些数据,但是这个子线程是有限制的 1.必须是同源 2.完全受主线程控制 3.不能在子线程中操作dom节点 4.子线程没有window,可以使用self 5.等等 具体的查看官网 进程切换是要耗时…...

excel办公系列-图表元素及其作用
Excel图表元素及其作用 Excel图表由各种元素组成,每个元素都有其特定的作用,可以帮助我们更清晰地传达数据信息。下面将介绍Excel图表中常见的一些元素及其作用,并附上相关截图。 原始数据 月份 网站访问量 (万次) 销售额 (万…...

rocketmq dashboard控制台中topic状态无法展示
现象 在使用rocketmq控制台查看topic状态和订阅状态时,出现错误和没有信息的情况。 原因 rocketmq控制台版本问题,最新版本为1.0.1,支持rocketmq5版本,如果使用rocketmq4版本的服务无法兼容对应的数据。同理1.0.0版本也无法兼容ro…...

GPT每日面试题-Typescript中type和interface的区别
充分利用ChatGPT的优势,帮助我们快速准备前端面试。今日问题:typescript中type和interface的区别? Q:如果在前端面试中,被问到typescript的type和interface的区别是什么,怎么回答最好? A:当谈…...

python数据分析——大数据伦理风险分析
大数据伦理风险分析 前言一、大数据伦理二、大数据技术伦理风险2.1算法安全性、可信赖性及稳定性风险及其应对2.2算法的可解释性风险及其应对2.3算法的决策不可预见性风险及其应对2.4数据收集与储存中的泄漏风险及其应对2.5案例:某大型电商平台内部员工涉嫌窃取50亿…...

配置 Trunk,实现相同VLAN的跨交换机通信
1.实验环境 公司的员工人数已达到 100 人,其网络设备如图所示。现在的网络环境导致广播较多网速慢,并且也不安全。公司希望按照部门划分网络,并且能够保证一定的网络安全性。 其网络规划如下。 PC1和 PC3为财务部,属于VLAN 2&…...

Python 植物大战僵尸
文章目录 效果图项目结构实现思路源代码 效果图 项目结构 实现思路 下面是代码的实现思路: 导入必要的库和模块:首先,我们导入了Python的os、time库以及pygame库,还有植物大战僵尸游戏中用到的各个植物和僵尸的类。 初始化游戏和…...

SpringBoot:实战项目TLIAS智能学习辅助系统1.1
SpringBootWeb项目 TILAS智能学习辅助系统 需求 部门管理 查询部门列表 删除部门 新增部门 修改部门 员工管理 查询员工列表(分页) 删除员工 新增员工 修改员工 准备工作 导入依赖 web(2.7.6) mybatis mysql驱动 lombok 准备好包结构 Controller->Servi…...

ubuntu-meta-22.04桌面版+ros2-humble 镜像
ubuntu-meta-22.04桌面版ros2-humble 镜像 下载地址: 链接:https://pan.baidu.com/s/1PSBe4EqWch44OQUlkCCEig?pwdknty 提取码:knty 镜像文件较大,分成了两个压缩包,下载后直接解压ubuntu22.04-desk-meta-ros2-arm (…...

『大模型笔记』Code Example: Function Calling with ChatGPT
Code Example: Function Calling with ChatGPT 文章目录 一. Code Example: Function Calling with ChatGPT二. 参考文献一. Code Example: Function Calling with ChatGPT from openai import OpenAI from dotenv import load_dotenv import json# --------------------------…...

【智能算法应用】混合粒子群算法求解CVRP问题
目录 1.算法原理2.数学模型3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】粒子群算法(PSO)原理及实现 经典PSO算法用于连续空间优化问题,VRP问题为离散组合优化问题,涉及如何有效地分配一组车辆去访问多个客户点&…...

Python项目开发实战:飞机大战游戏(案例教程)
一、引言 飞机大战游戏是一款经典的射击类游戏,玩家需要驾驶飞机在空中与敌人进行战斗,躲避敌人的攻击,同时发射子弹消灭敌人。本文将详细介绍如何使用Python及其相关库来开发一款简单的飞机大战游戏,包括游戏的设计思路、开发过…...