MeterSphere v2.10.X-lts 双节点HA部署方案
一、MeterSphere高可用部署架构及服务器配置
1.1 服务器信息
序号 | 应用名称 | 操作系统要求 | 配置要求 | 描述 |
---|---|---|---|---|
1 | 负载均衡器 | CentOS 7.X /RedHat 7.X | 2C,4G,200GB | 部署Nginx,实现负载路由。 部署NFS服务器。 |
2 | MeterSphere应用节点1 | CentOS 7.X /RedHat 7.X | 8C,16GB,200GB | 部署MeterSphere应用 |
3 | MeterSphere应用节点2 | CentOS 7.X /RedHat 7.X | 8C,16GB,200GB | 部署MeterSphere应用 |
4 | MySQL Master节点 | CentOS 7.X /RedHat 7.X | 8C,16GB,200GB | 部署MySQL Master |
5 | MySQL Slave节点 | CentOS 7.X /RedHat 7.X | 8C,16GB,200GB | 部署MySQL Slave |
1.2 部署架构图
二、Mysql8数据库主从搭建
2.1 下载安装包
下载地址:https://downloads.mysql.com/archives/community/
2.2 解压安装
- 下载好之后,上传服务器进行解压。
tar xvf mysql-8.0.32-1.el7.x86_64.rpm-bundle.tar
- 顺序安装rpm
rpm -ivh mysql-community-common-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.32-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.32-1.el7.x86_64.rpm
注意:如果在安装 mysql-community-libs-8.0.32-1.el7.x86_64.rpm 的时候出现下面错误,说明已经安装了mariadb相关依赖,需要卸载。可以执行:yum remove mysql-libs ,清除之前的依赖即可。然后重新执行 rpm -ivh mysql-community-libs-8.0.32-1.el7.x86_64.rpm 即可。
- 初始化my.cnf
特别注意: 先配置my.cnf,再启动。 如果已经启动了,没办法初始化大小写的问题了,这个时候可以删除重新初始化,操作如下:(正常配置可以忽略)
如果你不在意数据的话直接删除数据
停止MySQL
systemctl stop mysqld
删除 MySQL的数据(恢复到初始化之前)
rm -rf /var/lib/mysql
[mysqld]
datadir=/var/lib/mysqldefault-storage-engine=INNODB
character_set_server=utf8mb4
lower_case_table_names=1 # 不区分大小写
performance_schema=off
table_open_cache=128
transaction_isolation=READ-COMMITTED
max_connections=1000
max_connect_errors=6000
max_allowed_packet=64M
innodb_file_per_table=1
innodb_buffer_pool_size=512M
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout=1800character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET default_collation_for_utf8mb4=utf8mb4_general_ci'sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONskip-name-resolve[mysql]
default-character-set=utf8mb4[mysql.server]
default-character-set=utf8mb
- 启动
# 启动
systemctl start mysqld
# 停止
systemctl stop mysqld
# 状态
systemctl status mysqld
# 重启
systemctl restart msyqld
- 修改密码
# 查看密码
sudo grep 'temporary password' /var/log/mysqld.log
# 如果上面查不到密码,可以执行下面的查看
sudo grep 'temporary password' /var/log/messages
# 登录
mysql -uroot -p 密码
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password123@mysql';
# 修改root作用域
update mysql.user set host = '%' where user = 'root';
# 刷新
flush privileges;
# 重启mysql
systemctl restart mysqld
2.3 主从配置
2.3.1 主库配置
- 修改 /etc/my.cnf
[mysqld]
datadir=/var/lib/mysqldefault-storage-engine=INNODB
character_set_server=utf8mb4
lower_case_table_names=1 # 不区分大小写
performance_schema=off
table_open_cache=128
transaction_isolation=READ-COMMITTED
max_connections=1000
max_connect_errors=6000
max_allowed_packet=64M
innodb_file_per_table=1
innodb_buffer_pool_size=512M
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout=1800character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET default_collation_for_utf8mb4=utf8mb4_general_ci'sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONskip-name-resolve# 主从复制-主机配置
# 主服务器唯一ID
server-id=1
# 启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=sys
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
# 设置需要复制的数据库(可设置多个)
binlog-do-db=metersphere
# 为每个session分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
# 主从复制的格式(mixed,statement,row,默认格式是statement。建议是设置为row,主从复制时数据更加能够统一)
binlog_format=row
# 配置二进制日志自动删除/过期时间,单位秒,默认值为2592000,即30天;8.0.3版本之前使用expire_logs_days,单位天数,默认值为0,表示不自动
删除。
binlog_expire_logs_seconds=2592000[mysql]
default-character-set=utf8mb4[mysql.server]
default-character-set=utf8mb
- 重启MySQL
# 启动
systemctl start mysqld
# 停止
systemctl stop mysqld
# 状态
systemctl status mysqld
# 重启
systemctl restart msyqld
- 创建主从复制用户
#创建主从复制用户
CREATE USER 'clusteruser'@'%' IDENTIFIED WITH mysql_native_password BY 'Calong@2015';
# 授权
GRANT REPLICATION SLAVE ON *.* TO 'clusteruser'@'%';
# 刷新
FLUSH PRIVILEGES;
2.3.2 从库配置
- 配置my.cnf
[mysqld]
datadir=/var/lib/mysqldefault-storage-engine=INNODB
character_set_server=utf8mb4
lower_case_table_names=1
performance_schema=off
table_open_cache=128
transaction_isolation=READ-COMMITTED
max_connections=1000
max_connect_errors=6000
max_allowed_packet=64M
innodb_file_per_table=1
innodb_buffer_pool_size=512M
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout=1800character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET default_collation_for_utf8mb4=utf8mb4_general_ci'sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIONskip-name-resolve# 主从复制-主机配置
# 从服务器唯一ID
server-id=2
# 需要主从复制的数据库 ,如多个则重复配置
replicate-do-db=metersphere
# 复制过滤:也就是指定哪个数据库不用同步(mysql库一般不同步) ,如多个则重复配置
binlog-ignore-db=mysql
# 为每个session分配的内存,在事务过程中用来存储二进制日志的缓存
binlog_cache_size=1M
# 主从复制的格式(mixed,statement,row,默认格式是statement。建议是设置为row,主从复制时数据更加能够统一)
binlog_format=row
# relay_log配置中继日志,默认采用 主机名-relay-bin 的方式保存日志文件
relay_log=replicas-mysql-relay-bin
# log_replica_updates表示slave是否将复制事件写进自己的二进制日志,默认值ON开启;8.0.26版本之前使用log_slave_updates
log_replica_updates=ON
# 防止改变数据(只读操作,除了特殊的线程)
read_only=ON[mysql]
default-character-set=utf8mb4[mysql.server]
default-character-set=utf8mb
- 执行命令
CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.1.12.13',SOURCE_PORT=3306,SOURCE_USER='clusteruser',SOURCE_PASSWORD='Calong@2015',SOURCE_LOG_FILE='mysql-bin.000003',SOURCE_LOG_POS=863;MASTER_HOST/SOURCE_HOST:主数据库的主机ip
MASTER_PORT/SOURCE_PORT:主数据库的端口,不设置则默认是3306
MASTER_USER/SOURCE_USER:主数据库被授予同步复制权限的用户名
MASTER_PASSWORD/SOURCE_PASSWORD:对应的用户密码
MASTER_LOG_FILE/SOURCE_LOG_FILE:在主数据库执行命令show master status 查询到的二进制日志文件名称
MASTER_LOG_POS/SOURCE_LOG_POS:在主数据库执行命令show master status 查询到的位置 Position的值
- 开启从节点
# 查看从节点状态
show slave status \G;
# 启动
start slvae;
# 停止
stop slave;
# 重置
reset slave;
- 查看状态
2.4 验证
- 主库添加一条数据,查看从库中是否同步,如果有,说明成功,否则失败。
- 主库执行sql语句
# 主从库执行前查看数量
select count(*) from workspace;# 主库执行
INSERT INTO workspace ( `id`, `name`, `description`, `create_time`, `update_time`, `create_user` ) values ( "1", "test", "test", unix_timestamp(now())*1000, unix_timestamp(now())*1000, NULL );# 主从库查看
select id,name from workspace where id='1';
主库/从库执行前:
主库执行后:
以上验证成功,即为搭建没问题。
三、Nginx 搭建
3.1 下载nginx安装包
下载地址:https://nginx.org/en/download.html
3.2 解压Nginx并安装
- 安装nginx
1. 解压nginx安装包
tar -zxvf nginx-1.24.0.tar.gz2. 创建文件夹
mkdir /usr/local/nginx3. 安装依赖
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel4.解压
cd nginx-1.24.0/
./configure --prefix=/usr/local/nginx5. 安装
make && make install6. 启动
cd /usr/local/nginx/sbin
./nginx 7.检查语法错误
./nginx -t 8.重启
./nginx -s reload 9.停止
./nginx -s stop 10. 验证,默认是80端口,直接访问ip,出现nginx的html页面,说明部署成功
- 修改配置信息
1. 修改配置信息,可以直接覆盖原来的。目录:/usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;#log_format main '$remote_addr - $remote_user [$time_local] "$request" '# '$status $body_bytes_sent "$http_referer" '# '"$http_user_agent" "$http_x_forwarded_for"';#access_log logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;include /usr/local/nginx/conf/conf.d/*.conf;#gzip on;}2. 创建配置目录
mkdir /usr/local/nginx/conf/conf.d3. 创建default.conf并编辑以下内容>>
upstream servers.com {ip_hash;server 10.1.12.13:8081 weight=1 fail_timeout=10s max_fails=1; # 主节点1server 10.1.14.202:8081 weight=1 fail_timeout=10s max_fails=1; # 主节点2
}server {listen 80;server_name localhost;location / {proxy_pass http://servers.com;proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
<<
- 效果
四、安装MeterSphere服务
官网地址:https://metersphere.io/docs/v2.x/installation/offline_installation/
- 安装包地址:https://community.fit2cloud.com/#/products/metersphere/downloads
- 解压安装, 默认安装/opt 目录
tar -zxvf metersphere-offline-installer-v2.10.2-lts.tar.gz
- 修改配置信息
cd metersphere-offline-installer-v2.10.2-lts
vi install.conf
- 配置好之前搭建好MySQL的主节点信息,然后执行脚本安装
bash install.sh
- 查看服务状态
msctl status
- 另外一个节点同样的操作,参考上面安装即可。
五、NFS 搭建
搭建NFS是为了文件共享,使两个MeterSphere节点,文件同步。
5.1 服务端搭建
1. 在nginx节点安装NFS服务器
yum -y install nfs-utils2. 安装nfs+rpc
yum -y install nfs-utils rpcbind3. 验证nfs安装
rpm -qa nfs-utils
4. 服务端创建共享文件目录(目录可以自定义)
mkdir -p /data/
chmod 666 /data/因为我们要共享的是/opt/metersphere/data目录,所以需要把其文件夹给复制过来。
1. 直接去到部署metersphere的服务器,把/opt/meterspere/data 给打包
tar -czvf data.tar.gz /opt/metersphere/data2.然后传到部署nfs服务端/data目录下
最终效果如下:[root@ms002 data]# pwd
/data
[root@ms002 data]# ls
api-folder body jar jmeter kafka minio mysql node prometheus redis
[root@ms002 data]#5.修改nfs的配置 /etc/exports/data/ xx.xx.xx.xx(rw,sync,insecure,no_subtree_check,no_root_squash) xx.xx.xx.xx(rw,sync,insecure,no_subtree_check,no_root_squash)# xx.xx.xx.xx 为客户端ip
#
#权限说明:
#rw read-write,可读写;
#sync:文件同时写入硬盘和内存;
#async:文件暂存于内存,而不是直接写入内存;
#no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
#root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
#all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
#anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
#anongid:匿名用户的GID值。
#insecure:当mount监听端口大于1024时需要使用此参数
6. 重载配置数据
exportfs -rv7. 启动rpc
systemctl start rpcbind8.设置rpc开机启动
systemctl enable rpcbind9.检查RPC
rpcinfo -p localhost
10.启动 NFS 服务
systemctl start nfs
systemctl enable nfs
5.2 客户端搭建(也就是安装MeterSphere节点的服务器)
1. 下载客户端
yum -y install nfs-utils2. 校验服务端共享目录(判断网络是否通)
showmount -e xx.xx.xx.xx # xx.xx.xx.xx为服务端IP,有返回信息说明成功3. 挂载共享目录mount xx.xx.xx.xx:/data /opt/metersphere/data #xx.xx.xx.xx 服务端ip.4. 至此直接在客户端或者服务端创建文件,看是否有同步即可。
注意:两个部署MeterSphere的节点都需要搭建。
六、验证
- 访问nginx节点,可以正常显示
- 因为使用nginx负载均衡,所以停掉一个服务,再进行访问。
七、注意事项
- 在安装MySQL的时候,有特别注意的地方需要仔细看下。
- 搭建双节点的MeterSphere应用所连接的中间件(kafka,redis,minio等)都需要连接同一个。
- v1和v2.3以前的版本需要NFS,v2.3开始使用MinIO对象存储,已经不再需要NFS了,但从v2.3以前版本升级上来的因为历史数据的原因还需要NFS。
- 如果需要保证相关中间件的可用性,可以自行独立部署。
- 以上就是完整的MeterSphere双活架构的部署流程,如有问题,欢迎留言。
相关文章:

MeterSphere v2.10.X-lts 双节点HA部署方案
一、MeterSphere高可用部署架构及服务器配置 1.1 服务器信息 序号应用名称操作系统要求配置要求描述1负载均衡器CentOS 7.X /RedHat 7.X2C,4G,200GB部署Nginx,实现负载路由。 部署NFS服务器。2MeterSphere应用节点1CentOS 7.X /RedHat 7.X8C,16GB,200G…...

Java进阶篇--网络编程
目录 计算机网络体系结构 什么是网络协议? 为什么要对网络协议分层? 网络通信协议 TCP/IP 协议族 应用层 运输层 网络层 数据链路层 物理层 TCP/IP 协议族 TCP的三次握手四次挥手 TCP报文的头部结构 三次握手 四次挥手 …...
PyTorch入门之【CNN】
参考:https://www.bilibili.com/video/BV1114y1d79e/?spm_id_from333.999.0.0&vd_source98d31d5c9db8c0021988f2c2c25a9620 书接上回的MLP故本章就不详细解释了 目录 traintest train import torch from torchvision.transforms import ToTensor from torchvi…...
马斯洛需求层次模型之安全需求之云安全浅谈
在互联网云服务领域,安全需求是用户首要考虑的因素之一。用户希望在将数据和信息托付给云服务提供商时,这些数据和信息能够得到充分的保护,避免遭受未经授权的访问、泄露或破坏。这种安全需求的满足,对于用户来说是至关重要的&…...

Pikachu靶场——远程命令执行漏洞(RCE)
文章目录 1. RCE1.1 exec "ping"1.1.1 源代码分析1.1.2 漏洞防御 1.2 exec "eval"1.2.1 源代码分析1.2.2 漏洞防御 1.3 RCE 漏洞防御 1. RCE RCE(remote command/code execute)概述: RCE漏洞,可以让攻击者直接向后台服务器远程注入…...

【WSN】无线传感器网络 X-Y 坐标到图形视图和位字符串前缀嵌入方法研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Linux定时任务
文章目录 前言设置定时任务流程定时规则例子 终止定时任务列出当前的定时任务重启任务调度 前言 在Linux系统中有时侯需要周期性的自动执行一些命令,这时候Linux定时任务就派上用场了 设置定时任务流程 进入定时任务的编辑模式 crontab -e编辑定时任务ÿ…...

【Overload游戏引擎分析】画场景网格的Shader
Overload引擎地址: GitHub - adriengivry/Overload: 3D Game engine with editor 一、栅格绘制基本原理 Overload Editor启动之后,场景视图中有栅格线,这个在很多软件中都有。刚开始我猜测它应该是通过绘制线实现的。阅读代码发现࿰…...

【JavaEE】多线程进阶(一)饿汉模式和懒汉模式
多线程进阶(一) 文章目录 多线程进阶(一)单例模式饿汉模式懒汉模式 本篇主要引入多线程进阶的单例模式,为后面的大冰山做铺垫 代码案例介绍 单例模式 非常经典的设计模式 啥是设计模式 设计模式好比象棋中的 “棋谱”…...

C++树详解
树 树的定义 树(Tree)是n(n≥0)个结点的有限集。n0时称为空树。在任意一颗非空树中:①有且仅有一个特定的称为根(Root)的结点;②当n>1时,其余结点可分为m(…...

支付环境安全漏洞介绍
1、平台支付逻辑全流程分析 2、平台支付漏洞如何利用?买东西还送钱? 3、BURP抓包分析修改支付金额,伪造交易状态? 4、修改购物车参数实现底价购买商品 5、SRC、CTF、HW项目月入10W副业之路 6、如何构建最适合自己的网安学习路线 1…...

抄写Linux源码(Day16:内存管理)
回忆我们需要做的事情: 为了支持 shell 程序的执行,我们需要提供: 1.缺页中断(不理解为什么要这个东西,只是闪客说需要,后边再说) 2.硬盘驱动、文件系统 (shell程序一开始是存放在磁盘里的,所以需要这两个东…...

Cookie和Session详解以及结合生成登录效果
目录 引言 1.Cookie中的数据从哪来数据长啥样? 2.Cookie有什么作用? 3.cookie与session的工作关联? 4.Cookie到哪去? 5.Cookie如何存? 6.Session 7.Cookie与Session的关联与区别 8.通过代码理解 8.1 相关代码 8.2…...

Spring基础以及核心概念(IoC和DIQ)
1.Spring是什么 Spring是包含了众多工具方法的IoC容器 2.loC(Inversion of Control )是什么 IoC:控制反转,Spring是一个控制反转容器(控制反转对象的生命周期) Spring是一个loC容器,我们之前学过的List/Map就是数据存储的容器,to…...
《C和指针》笔记32:多维数组初始化
文章目录 使用括号进行初始化初始化省略维度 使用括号进行初始化 我们可以给数组赋值一个长长的列表: int matrix[2][3] { 100, 101, 102, 110, 111, 112 };它等价于 matrix[0][0]100; matrix[0][1]101; matrix[0][2]102; matrix[1][0]110; matrix[1][1]111; ma…...

零食食品经营小程序商城的作用是什么
零食几乎可以涵盖每个年龄阶段,同时又是市场中常见的零售批发商品,在多个场景中都有销售/购买属性,对消费者来说,购买零食的渠道多种多样,无论线下还是线上,都可随心而购。 庞大市场升级促进下,…...
Java泛型--什么是泛型?
https://www.bilibili.com/video/BV1xJ411n77R?p5&vd_sourcebb1fced25254581cf052adea5e87a1ff 1.泛型类、接口 1.1.泛型类 泛型类的定义 class 类名称 <泛型标识, 泛型标识, ...> {private 泛型标识 变量名;...... }常用的泛型标识:T、E、K、V jav…...

LabVIEW工业虚拟仪器的标准化实施
LabVIEW工业虚拟仪器的标准化实施 创建计算机化的测试和测量系统,从计算机桌面控制外部测量硬件设备,以及在计算机屏幕上显示的类似仪器的面板上查看来自外部设备的测试或测量数据,所有这些都需要虚拟仪器系统软件。该软件允许用户执行所有这…...

JavaScript系列从入门到精通系列第十七篇:JavaScript中的全局作用域
文章目录 前言 1:什么叫作用域 一:全局作用域 1:全局变量的声明 2:变量声明和使用的顺序 3:方法声明和使用的顺序 前言 1:什么叫作用域 可以起作用的范围 function fun(){var a 1; } fun();consol…...

汇编指令集合
...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
webpack面试题
面试题:webpack介绍和简单使用 一、webpack(模块化打包工具)1. webpack是把项目当作一个整体,通过给定的一个主文件,webpack将从这个主文件开始找到你项目当中的所有依赖文件,使用loaders来处理它们&#x…...
Android屏幕刷新率与FPS(Frames Per Second) 120hz
Android屏幕刷新率与FPS(Frames Per Second) 120hz 屏幕刷新率是屏幕每秒钟刷新显示内容的次数,单位是赫兹(Hz)。 60Hz 屏幕:每秒刷新 60 次,每次刷新间隔约 16.67ms 90Hz 屏幕:每秒刷新 90 次,…...

python基础语法Ⅰ
python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...

Springboot 高校报修与互助平台小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,高校报修与互助平台小程序被用户普遍使用,为…...