K8s安装乐维5.0应用部署文档

news2024/9/19 10:51:40

乐维产品包具体打包为4个镜像包,分别为:mysql5.7.36.tar、zabbix_server.tar、itops_v1_4_x86_64.tar、bpm0.1.tar,对应的配置文件分别为:data.tar、conf.tar、nginx-v1.3.tar.gz、bpm12.zip。

K8s yaml文件具体打包为strogeclass、pv、pvc、deployment、service,执行时也请按照这个顺序进行执行。

具体安装如下所示。

前期准备工作

  1.  上传文件

上传yaml-pvc.tar至master节点根目录下并解压

  1.  创建namespace(测试环境的namespace名称为lw-server)

kubectl create namespace lw-server

    ps:如客户现场给的namespace为其他名称,所有yaml文件的namespace都需要进行修改

MySQL安装

1、上传文件

上传mysql5.7.36.tar到k8s镜像仓库,上传data.tar文件到存储节点(测试环境存储节点为ceph03)

2、解压配置文件(在ceph03节点执行)

mkdir -p /itops/
tar -xf data.tar -C /itops/
chown mysql.mysql /itops/mysql -R

3、执行yaml文件创建storageclass(在master节点执行)

kubectl apply -f yaml-pvc/mysql-pvc/storage_mysql.yaml
kubectl apply -f yaml-pvc/mysql-pvc/storage_mysql-data.yaml

可通过 :kubectl get storageclass查看是否创建成功

 

4、执行yaml文件创建pv(在master节点执行)

kubectl apply -f yaml-pvc/mysql-pvc/pv-mysql.yaml
kubectl apply -f yaml-pvc/mysql-pvc/pv-mysql-data.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server pv

 

5、执行yaml文件创建pvc(在master节点执行)

kubectl apply -f yaml-pvc/mysql-pvc/pvc-mysql.yaml
kubectl apply -f yaml-pvc/mysql-pvc/pvc-mysql.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server pvc

 

6、执行yaml文件创建deployment(在master节点执行)

kubectl apply -f yaml-pvc/lw-mysql.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server deployment

 

7、执行yaml文件创建service(在master节点执行)

kubectl apply -f yaml-pvc/lw-mysql-service.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server svc

 

账号:root

密码:ITIM_p@ssw0rd

账号:zabbix

密码:zabbix

Zabbix server安装

1、上传文件

上传zabbix_server.tar到k8s镜像仓库,上传conf.tar文件到存储节点(测试环境存储节点为ceph03)

2、解压配置文件(在ceph03节点执行)

mkdir -p /itops/zabbix_server
tar -xf conf.tar -C /itops/zabbix_server

3、修改配置文件(在ceph03节点执行)

sed -i 's/DBHost=192.168.229.17/DBHost=mysql-proxy/g' /itops/zabbix_server/etc/zabbix_server.conf
sed -i 's/JavaGateway=192.168.229.17/JavaGateway=zabbix-proxy/g' /itops/zabbix_server/etc/zabbix_server.conf

4、执行yaml文件创建storageclass(在master节点执行)

kubectl apply -f yaml-pvc/zabbix-pvc/storage_zabbix.yaml

可通过 :kubectl get storageclass查看是否创建成功

 

5、执行yaml文件创建pv(在master节点执行)

kubectl apply -f yaml-pvc/zabbix-pvc/pv-zabbix.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server pv

 

6、执行yaml文件创建pvc(在master节点执行)

kubectl apply -f yaml-pvc/zabbix-pvc/pvc-zabbix.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server pvc

 

7、执行yaml文件创建deployment(在master节点执行)

kubectl apply -f yaml-pvc/lw-zabbix.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server deployment

 

8、执行yaml文件创建service(在master节点执行)

kubectl apply -f yaml-pvc/lw-zabbix-service.yam

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server svc

 

Nginx安装

1、上传文件

上传itops_v1_4_x86_64.tar到k8s镜像仓库,上传nginx-v1.3.tar.gz文件到存储节点(测试环境存储节点为ceph03)

2、解压配置文件(在ceph03节点执行)

mkdir -p /itops/
tar -xf nginx-v1.3.tar.gz -C /itops/

3、修改配置文件(在ceph03节点执行)

vi /itops/nginx/html/zabbix/conf/zabbix.conf.php、

 

 

vi /itops/nginx/html/lwjk_v3/web/z/conf/zabbix.conf.php

 

 

vi /itops/nginx/html/lwjk_v3/config/db.php

 

4、执行yaml文件创建storageclass(在master节点执行)

kubectl apply -f yaml-pvc/nginx-pvc/storage_nginx.yaml
kubectl apply -f yaml-pvc/nginx-pvc/storage_nginx-data.yaml

可通过 :kubectl get storageclass查看是否创建成功

 

5、执行yaml文件创建pv(在master节点执行)

kubectl apply -f yaml-pvc/nginx-pvc/pv-nginx.yaml
kubectl apply -f yaml-pvc/nginx-pvc/pv-nginx-data.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server pv

 

6、执行yaml文件创建pvc(在master节点执行)

kubectl apply -f yaml-pvc/nginx-pvc/pvc-nginx.yaml
kubectl apply -f yaml-pvc/nginx-pvc/pvc-nginx-data.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server pvc

 

7、执行yaml文件创建deployment(在master节点执行)

kubectl apply -f yaml-pvc/lw-nginx.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server deployment

 

8、执行yaml文件创建service(在master节点执行)

kubectl apply -f yaml-pvc/lw-nginx-service.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server svc

 

9、定时任务设置(在宿主机配置)

方法一:适用于存储挂在宿主机本机

此方法php在宿主机执行任务

crontab -e
50 23 * * * mysql -h mysql-proxy -uzabbix -pzabbix 'zabbix' -e "CALL partition_maintenance_all('zabbix')" >/dev/null
0 1 * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run report/daily-report &
0 8 * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run report/send-daily-mail &
0 3 * * 1 echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run report/weekly-report &
0 8 * * 1 echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run report/send-weekly-mail &
50 1 1 * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run report/monthly-report &
0 8 1 * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |    php /itops/nginx/html/lwjk_v3/run report/send-monthly-mail &
*/1 * * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run bsmlist &
*/30 * * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run kitty/create-reportdata-queue &
*/20 * * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run kitty/create-subscribe-queue &
0 */1 * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run flowreport-trends-data/index &
*/5 * * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run hosts/profile-renew &
*/1 * * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run queue/run &
*/1 * * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/runalert/history &
*/1 * * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/runalert/r-history &
0 2 * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run logger/flush &
*/1 * * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run hosts &
*/5 * * * * echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run threshold-task/index &

清除定时任务:

0 0 * * 0 /usr/bin/rm /itops/zabbix_server/logs/zabbix_traps.tmp >/dev/null

方法二:适用于存储不挂在宿主机本机

此方法php脚本在pod内部执行

crontab -e
50 23 * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- mysql -h mysql-proxy -uzabbix -pzabbix 'zabbix' -e "CALL partition_maintenance_all('zabbix')"
0 1 * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server --   php /itops/nginx/html/lwjk_v3/run report/daily-report &
0 8 * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run report/send-daily-mail &
0 3 * * 1 kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run report/weekly-report &
0 8 * * 1 kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run report/send-weekly-mail &
50 1 1 * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run report/monthly-report &
0 8 1 * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |    php /itops/nginx/html/lwjk_v3/run report/send-monthly-mail &
*/1 * * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run bsmlist &
*/30 * * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run kitty/create-reportdata-queue &
*/20 * * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run kitty/create-subscribe-queue &
0 */1 * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run flowreport-trends-data/index &
*/5 * * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run hosts/profile-renew &
*/1 * * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run queue/run &
*/1 * * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/runalert/history &
*/1 * * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run  alert/r-history &
0 2 * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run logger/flush &
*/1 * * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run hosts &
*/5 * * * * kubectl exec -it $(kubectl get pods -n lw-server | grep nginx | awk '{print $1}') -n lw-server -- echo 'LW_ID_PUBLIC_DEFAULT_TASK' |   php /itops/nginx/html/lwjk_v3/run threshold-task/index &

清除定时任务配置在文件服务器上:

0 0 * * 0 /usr/bin/rm /itops/zabbix_server/logs/zabbix_traps.tmp >/dev/null

Bpm安装

上传文件

上传bpm0.1.tar到k8s镜像仓库,上传bpm12.zip文件到存储节点(测试环境存储节点为ceph03)

1、数据库准备工作:

1.1、调整MySql配置(Window下可忽略)(在ceph03节点执行)

vi /itops/mysql/etc/my.cnf

[mysqld]下追加一行: lower_case_table_names = 1

 

1.2、远程连接数据库并按顺序执行一下SQL语句

//创建bpm数据库
CREATE DATABASE bpm DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

//创建bpm用户
CREATE USER 'bpm'@'%' IDENTIFIED BY '123456';

//授权
grant all privileges on bpm.* to 'bpm'@'%';

//刷新权限
flush privileges;

//切换数据库
use bpm;

//导入数据库
source /root/bpm12.sql;

// bpm跳转地址更新,把IP修改为bpm IP

update  bpm_devdefaultcode set DefaultCode='<script>location.href = \'http://node地址:30080\';</script>' whereWF_OrUnid='41B5701B0EE2904D0E0835D0D27ACB8B9D49';

1.3、重启MySQL服务(在master节点执行)

kubectl delete -f yaml-pvc/lw-mysql.yaml
kubectl apply -f yaml-pvc/lw-mysql.yaml

2、TOMCAT部署(在ceph03节点执行)

tar -xvf bpm12.tar -C /itops
vi /itops/bpm/bpm12/apache-tomcat-8.5.58/conf/Catalina/localhost

 

3、监控平台调整

3.1、上传文件在ceph03节点执行

上传params.php文件至/itops/nginx/html/lwjk_v3/local/

3.2、修改配置文件在ceph03节点执行

vi /itops/nginx/html/lwjk_v3/local/params.php

IP修改为实际node IP

 

3.3、安装bpm模块(在nginx pod内执行)

cd /itops/nginx/html/lwjk_v3/
php run mm/i  bpm

3.4、安装ext在ceph03节点执行

unzip ext.zip -d /itops/nginx/html/lwjk_v3/

容器安装

1、执行yaml文件创建storageclass(在master节点执行)

kubectl apply -f yaml-pvc/bpm-pvc/storage_bpm.yaml

可通过 :kubectl get storageclass查看是否创建成功

 

执行yaml文件创建pv(在master节点执行)

kubectl apply -f yaml-pvc/bpm-pvc/pv-bpm.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server pv

 

执行yaml文件创建pvc(在master节点执行)

kubectl apply -f yaml-pvc/bpm-pvc/pvc-bpm.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server pvc

 

执行yaml文件创建deployment(在master节点执行)

kubectl apply -f yaml-pvc/lw-bpm.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server deployment

 

执行yaml文件创建service(在master节点执行)

kubectl apply -f yaml-pvc/lw-bpm-service.yaml

可通过(这是挂载成功的情况,仅供参考):kubectl get -n lw-server svc

 

9、增加菜单

访问http://nodeip:30800/dev

 

 

 

 

自动化运维安装

1、上传文件

上传ansiblemodule.tar文件到存储节点(测试环境存储节点为ceph03)

mv ansiblemodule.tar /itops/nginx/html/
tar -xvf /itops/nginx/html/ansiblemodule.tar

2、进入nginx pod内部执行安装脚本

cd /itops/nginx/html/ansiblemodule
sh ansiblemodule_install.sh web

执行结束就可以在web看到自动化运维界面

以上就是今天要跟大家分享的内容,我是乐维IT君,专注运维技术分享,更多乐维技术及其他运维技术内容还可查看往期内容,zabbix服务,zabbix配置,zabbix部署等zabbix服务解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Python计算机毕业设计django学生学习评价与分析系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

数字逻辑·时序线路分析【触发器和时序线路分析方法】

课程目标 掌握触发器的特征表达式掌握触发器的激励表掌握触发器的状态表掌握时序线路分析方法 课程内容 D触发器 逻辑符号可以不画RD&#xff0c;SD&#xff0c;CP 上方&#xff1a;特征表达式&#xff1b;左下&#xff1a;激励表&#xff1b;右下&#xff1a;状态图 状态图…

list容器(20221117)

一、list容器 1、基本概念 功能&#xff1a;将数据进行链式存储 链表是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过指针实现的 链表由一系列的节点组成&#xff1b; 节点的组成&#xff1a;一个是存储数据元素的数据域&#xff0c;另一个是存…

初探softmax

什么是softmax Softmax,又称作归一化指数函数。主要用于分类任务&#xff0c;降多分类的结果以概率的形式展现 下图展示softmax计算方法 softmax本质上是归一化网络&#xff0c;目的是将多个标量映射为一个概率分布,其输出的每一个值范围在&#xff08;0&#xff0c;1&#x…

使用 Next.js、 Prisma 和 PostgreSQL 全栈开发视频网站

通过上一篇文章&#xff0c;我们对乔巴乐高海报平台的整体架构有了初步的了解。今天我们深入到编辑器部分&#xff0c;对其中的难点和实现细节进行分析。 这是目前生产的编辑器页面&#xff1a; 不难看出和市面上大部分低代码平台一样&#xff0c;由三部分组成&#xff1a;左侧…

10名IB学生获得满分,新加坡环球印度国际学校成为一匹黑马

近年来留学人数大幅度上升&#xff0c;其中新加坡因多元的文化环境、健全的教育制度&#xff0c;深受学生、家长青睐喜爱&#xff0c;新加坡国际学校也因此成为了香饽饽。 在每年的IB成绩放榜中&#xff0c;新加坡国际学校IB表现都非常亮眼。 除了我们熟悉的华中、德威、UWC等一…

宏记录器 Macro Recorder 2.0 注册版

记录鼠标和键盘操作以无限重播...... 不再执行相同的任务两次&#xff01; Macro Recorder 像录音机一样捕捉鼠标事件和击键&#xff0c;让您在计算机上自动执行繁琐的程序。 按记录。执行操作。 Macro Recorder 记录您的鼠标移动、鼠标点击和键盘输入。就像电脑的录音机一样。…

RabbitMQ第四个实操小案例——DirectExchange

文章目录RabbitMQ第四个实操小案例——DirectExchangeRabbitMQ第四个实操小案例——DirectExchange DirectExchange&#xff1a;这种交换机的模式跟前面的Fouout&#xff08;广播&#xff09;不太一样&#xff0c;DirectExchange 会将接收到的消息根据规则路由到指定的Queue&a…

(免费分享)基于springboot,vue毕业设计管理系统

源码获取&#xff1a;关注文末gongzhonghao&#xff0c;输入011领取下载链接 开发工具IDEA ,数据库mysql5.7 &#xff0c;前后端分离 系统分学生、教师、管理员三个角色 1.学生截图 2.教师截图&#xff1a; 3.管理员截图&#xff1a; package com.cx.controller;import cn.…

C++实现哈希表。

目录 一. unordered_map unordered_set 和 map set的区别 二. 哈希 1. 哈希&#xff0c;哈希表&#xff0c;哈希函数。 2. 哈希冲突。 3. 哈希函数补充 3. 解决哈希冲突的两大方法&#xff1a;闭散列&#xff0c;开散列 闭散列 闭散列实现代码&#xff1a; 闭散列的删除…

MDF和DHF、DMR、DHR三者差异?注册与备案文件?

医疗器械研发、工艺、注册、质量人员时常会接触到DHF, DMR, DHR。这几个单词缩写不光是拼写非常相似&#xff0c;其含义也有许多相同之处&#xff0c;所以十分容易混淆。本文就来聊一聊这三者的区别和联系。 ISO13485:2016 证明符合法规要求 MDF-Medical Device File&#xf…

计算机毕业设计——税务缴纳信息管理

一.项目介绍 本项目包含管理员、普通用户两种角色 普通用户 可以浏览 首页、新闻信息、法律法规、税务政策、通知公告、留言板、个人中心、后台管理、在线咨询 普通用户进入后台管理可以修改密码、个人信息以及税务申报、填写留言 管理员用户登录可以操作 个人中心、用…

服务器证书是网络信息安全的基础

我们都清楚&#xff0c;互联网安全存在两大基本隐患&#xff0c;一是因为身份认证机制的缺位&#xff0c;使网络成为各种“钓鱼”诈骗行为的温床&#xff0c;导致互联网空间缺乏信任。互联网每时每刻都在传输数以亿万的信息&#xff0c;这些信息如果未经加密&#xff0c;就有可…

自动化测试如何区分用例集合及编写规范

目录 前言 业务量和复杂度增长现状是什么&#xff1f; 如何区分自动化测试的用例集合&#xff1f; 区分用例集合的过程要注意什么&#xff1f; 自动化测试用例选择 自动化测试用例编写 用例编写规范 结语 前言 前面的文章介绍过如何设计自动化测试case&#xff0c;有同…

一、翻越前端的三座大山——继承/原型链

文章目录原型专题前言什么是原型&#xff1f;实例和原型的关系什么是原型链&#xff1f;Object 和 Function 的继承关系原型运用例子&#xff1a;手写instanceof手写call&#xff0c;apply手写new六大继承方式原型链继承构造函数继承原型链 构造函数优化&#xff08;原型链 构…

mysql 中的锁

文章目录锁的分类锁粒度InnoDB 中的表锁InnoDB 中的行锁锁的分类 共享锁&#xff08;Shared Locks&#xff09; // 行共享锁 // 获取到当前记录的S锁&#xff08;共享锁&#xff09;&#xff0c;兼容其他事务的S锁&#xff0c;不兼容X锁&#xff08;排他锁&#xff09; select…

服务注册中心

什么是注册中心&#xff1f; 注册中心主要有三种角色&#xff1a; ● 服务提供者&#xff08;Provider&#xff09;&#xff1a;在启动时&#xff0c;向 Registry 注册自身服务&#xff0c;并向 Registry 定期发送心跳汇报存活状态。 ● 服务消费者&#xff08;Consumer&#…

HCSC: Hierarchical Contrastive Selective Coding

原型对比学习&#xff1a;图像表征与聚类中心之间的交互&#xff0c;可以简单总结为在表征空间中最大化图像特征与其所属的聚类中心的相似度。分层语义结构 自然存在于图像数据集中&#xff0c;其中几个语义相关的图像簇可以进一步集成到一个更大的簇中&#xff0c;具有更粗粒度…

Tomcat多实例部署

文章目录一、Tomcat多实例的操作步骤1、关闭防火墙&#xff0c;将安装 Tomcat 所需软件包传到/opt目录下2、安装JDK3、安装 tomcat4、配置 tomcat 环境变量5、修改 tomcat2 中的 server.xml 文件&#xff0c;要求各 tomcat 实例配置不能有重复的端口号6、修改各 tomcat 实例中的…

openpnp软件的使用 - 配置自动电动飞达

文章目录openpnp软件的使用 - 配置自动电动飞达概述笔记新建执行器(电动飞达类型)新建电动飞达的料站配置飞达的x,y位置配置飞达移动到料表面时的高度测试这个Z高度, 是否能让吸嘴取得元件?设置元件料封装使用的吸嘴.试试开始贴片贴片后的元件位置目测备注ENDopenpnp软件的使用…