MySQL8.4 NDB Cluster 集群配置安装
文章目录
- 前置条件
- 安装步骤
- 环境准备
- 下载 安装 RPM 包
- 安装 NDB 组件与常见错误
- 配置节点
- 启用节点配置
- 启动 MySQL 集群
- 验证集群状态
- 关于 ndb_mgm
- 集群管理
- 备份与恢复
- 集群配置管理
- 日志相关
MySQL NDB Cluster 是一个分布式数据库解决方案,提供高可用性、数据分片和自动故障恢复能力
(官方直译)
- 自动化管理
MySQL NDB Cluster Manager 能够将整个集群作为一个实体进行控制,同时还支持对集群内部各个进程进行非常精细的控制。管理员能够创建和删除整个集群;备份和恢复所有数据;升级 MySQL NDB Cluster 软件;推出配置更改;自动调整集群以适应硬件、写入模式和使用类型;以及使用单个命令启动、停止和重新启动集群。
- 自动监控
MySQL NDB 集群管理器 (MCM) 能够通过自动轮询集群中的每个节点,在操作系统和每个进程级别监控集群的运行状况。它可以检测进程或服务器主机是否处于活动状态、停止状态或挂起状态,从而实现即时和自动的问题检测、解决和恢复。
- 自我修复
为了实现 99.999% 的可用性,MySQL NDB Cluster 能够通过自动重启故障数据节点实现故障自愈,无需人工干预。MySQL NDB Cluster Manager 还通过监控和自动恢复 SQL 和管理节点来扩展此功能。这支持更无缝、更完整的集群自愈,自动恢复应用程序的冗余和全部容量
- 高可用性
MySQL NDB Cluster 的设计目标是提供 99.999% 的可用性。因此,MySQL NDB Cluster Manager 绝不会影响底层集群的可用性,这一点至关重要。为了确保高可用性操作,MySQL NDB Cluster Manager 与实际数据库进程分离,因此如果管理代理停止或升级,它不会以任何方式影响正在运行的数据库。
前置条件
集群环境:
主机名 | IP 地址 | 角色 |
---|---|---|
fishpie-node1 | 192.168.159.129 | 管理节点(ndb_mgmd)+ SQL 节点(mysqld) |
fishpie-node2 | 192.168.159.130 | 数据节点(ndbd)+ SQL 节点(mysqld) |
fishpie-node3 | 192.168.159.131 | 数据节点(ndbd) + SQL 节点(mysqld) |
MySQL版本:MySQL8.4-lts-community
推荐文章:
Linux CentOS9安装配置-CSDN博客
MySQL8.4 安装配置与卸载_mysql8.4安装-CSDN博客
推荐最好是三台未安装 mysql 服务的节点
安装步骤
首先,确保需要需要 MySQL NDB Cluster 部署的节点全部安装 MySQL 服务
环境准备
- (所有节点)关闭防火墙与 SELinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
- (所有节点)同步时间
yum install -y ntp
systemctl start ntpd
systemctl enable ntpd
ntpdate pool.ntp.org
- (所有节点)停止MySQL服务
systemctl stop mysql
- (所有节点)系统依赖
yum install -y perl-Data-Dumper libaio ncurses-compat-libs
下载 安装 RPM 包
下载地址:https://dev.mysql.com/get/Downloads/MySQL-Cluster-8.4/mysql-cluster-community-nodejs-8.4.4-1.el9.x86_64.rpm
注意 MySQL 版本
yum install -y mysql-cluster-community-nodejs-8.4.4-1.el9.x86_64.rpm
安装 NDB 组件与常见错误
- (所有节点)安装 NDB 组件
yum install -y mysql-cluster-community-server mysql-cluster-community-data-node mysql-cluster-community-management-server
如果出现问题
是因为
mysql-cluster-community-client-plugins
和mysql-community-client-plugins
两个包的文件冲突,因为它们包含了相同路径的插件文件解决方案:
# 移除原有的 mysql-community-client-plugins,替换为 NDB 集群版本 yum remove -y mysql-community-client-plugins# 重新安装 NDB 集群组件 yum install -y mysql-cluster-community-server mysql-cluster-community-data-node mysql-cluster-community-management-server
- 验证安装结果
rpm -qa | grep mysql-cluster-community
配置节点
- (fishpie-node1节点)创建配置文件
/etc/mysql-cluster-management/config.ini
# 管理节点配置
[ndb_mgmd]
hostname=192.168.159.129
NodeId=1
datadir=/var/lib/mysql-cluster# 数据节点全局默认配置
[ndbd default]
NoOfReplicas=2
DataMemory=500M
IndexMemory=300M
datadir=/var/lib/mysql-cluster # 数据节点数据目录(确保所有数据节点目录已创建)# 数据节点1
[ndbd]
hostname=192.168.159.130
NodeId=2# 数据节点2
[ndbd]
hostname=192.168.159.131
NodeId=3# SQL节点(MySQL服务器)
[mysqld]
hostname=192.168.159.129
NodeId=4[mysqld]
hostname=192.168.159.130
NodeId=5[mysqld]
hostname=192.168.159.131
NodeId=6
- (所有节点)创建数据目录
mkdir -p /var/lib/mysql-cluster
- (fishpie-node2 和 fishpie-node3 节点)数据节点创建配置文件
/etc/my.cnf
[mysql_cluster]
ndb-connectstring=192.168.159.129 # 管理节点 IP
- (所有节点)SQL节点配置文件信息
编辑 /etc/my.cnf
,在 [mysqld]
部分添加:
# [mysqld]
ndbcluster
ndb-connectstring=192.168.159.129 # 管理节点 IP
启用节点配置
启动管理节点 -> 启动数据节点 -> 启动SQL节点
- (fishpie-node1节点)启动管理节点
ndb_mgmd -f /etc/mysql-cluster-management/config.ini --initial
1186 端口工作就说明 管理节点启动成功
- (fishpie-node2 与 fishpie-node3 节点)启动数据节点
ndbd
启动 MySQL 集群
- (所有 SQL 节点)启动 MySQL 服务
systemctl start mysqld
systemctl enable mysqld
如果MySQL启动不成功,可以尝试:
# 清理可能残留的临时文件 rm -f /var/lib/mysql/mysql.sock rm -f /var/lib/mysql/ib_logfile* rm -rf /var/lib/mysql-cluster/*# 看MySQL启动日志 tail -n 50 /var/log/mysqld.log | grep ERROR# 备份旧数据(谨慎操作!) mv /var/lib/mysql /var/lib/mysql.bak# 重新初始化并生成临时密码 mysqld --initialize --user=mysql --console chown -R mysql:mysql /var/lib/mysql# 查看临时密码 grep 'temporary password' /var/log/mysqld.log# 登录 mysql mysql -uroot -p# 检查引擎是否加载 SHOW ENGINES;# 手动加载 NDB 插件(如果未自动加载) INSTALL PLUGIN ndbcluster SONAME 'ndbcluster.so';
如果还是无法启动 mysql 服务,可以在备份好数据表的情况下重装
# 卸载 MySQL 包 sudo yum remove mysql mysql-server # 删除 MySQL 的数据目录 sudo rm -rf /var/lib/mysql sudo rm -rf /etc/my.cnf sudo rm -rf /etc/my.cnf.d sudo rm -rf /var/log/mysql sudo rm -rf /var/log/mysqld.log # 更新 Yum 包缓存 sudo yum clean all
验证集群状态
所有节点的 MySQL 和 NDB 版本必须一致
节点间通信依赖网络,确保防火墙开放
1186
(管理端口)和2202
(数据端口)
- (fishpie-node1节点)查看管理节点状态
ndb_mgm
> SHOW
- (fishpie-node1节点)验证 SQL 节点
SHOW ENGINE NDB STATUS;
CREATE DATABASE ndb_test;
USE ndb_test;
CREATE TABLE test (id INT) ENGINE=NDBCLUSTER;
INSERT INTO test VALUES (1);
-- 在其他节点查询数据是否同步
可以看到三个节点均存在 数据库 ndb_test
与 表test
关于 ndb_mgm
集群管理
# 查看集群状态
ndb_mgm> SHOW# 启动指定节点
ndb_mgm> <node_id> START# 停止指定节点(软停止,允许事务完成)
ndb_mgm> <node_id> STOP# 强制停止节点(立即终止)
ndb_mgm> <node_id> STOP FORCE# 重启数据节点(保留数据)
ndb_mgm> <node_id> RESTART# 重启数据节点并清空数据(危险操作)
ndb_mgm> <node_id> RESTART --initial# 强制集群全重启
ndb_mgm> ALL RESTART# 清除事务检查点
ndb_mgm> PURGE STALE SESSIONS# 查看节点组状态
ndb_mgm> ALL STATUS# 动态加载 config.ini 新配置
ndb_mgm> RELOAD CONFIG
备份与恢复
# 在线备份集群
ndb_mgm> START BACKUP
- 备份完成后会生成备份 ID(如
Backup 3 started
)。- 备份文件默认保存在数据节点的
/var/lib/mysql-cluster/BACKUP/BACKUP-<ID>
。
# 中断备份
ndb_mgm> ABORT BACKUP <backup_id>
# 恢复备份
ndb_restore -c <管理节点IP> -n <节点ID> -b <备份ID> -m --backup_path=/path/to/backup
ndb_restore -c 192.168.159.129 -n 2 -b 1 -m --backup_path=/var/lib/mysql-cluster/BACKUP/BACKUP-1
集群配置管理
# 动态调整配置参数
ndb_mgm> <node_id> SET <parameter>=<value>
ndb_mgm> 2 SET DataMemory=600M# 查看当前配置
ndb_mgm> <node_id> REPORT <config_variable>
ndb_mgm> 2 REPORT DataMemory
日志相关
# 调整日志级别
ndb_mgm> <node_id> LOGLEVEL <category>=<level>
ndb_mgm> 1 LOGLEVEL debug=15# 查看事件日志
ndb_mgm> CLUSTERLOG INFO
ndb_mgm> CLUSTERLOG WARNING
ndb_mgm> CLUSTERLOG ERROR
官方文档:https://www.mysql.com/products/cluster/mcm/
相关文章:
MySQL8.4 NDB Cluster 集群配置安装
文章目录 前置条件安装步骤环境准备下载 安装 RPM 包安装 NDB 组件与常见错误配置节点启用节点配置启动 MySQL 集群验证集群状态 关于 ndb_mgm集群管理备份与恢复集群配置管理日志相关 MySQL NDB Cluster 是一个分布式数据库解决方案,提供高可用性、数据分片和自动故…...
多线程开发中List的使用
由于ArrayList在多线程高并发情况下是不安全的,因此要慎用,那么此时如果涉及到集合操作,应该怎么选: 方案一:Vector: 特点:通过给所有方法都用 synchronized 修饰从而保证线程安全, 缺点&…...
Html 页面图标的展示列表
Html 页面中经常需要使用网页图标,这些图标的样式和名称都不容易记住。常用的网页图标展示页面链接记录如下: Material Design Icons 图标库 - FontAwesome 字体图标中文Icon...
Vue实现动态路由的后端控制
在传统开发后台管理系统时,都会涉及权限控制这一功能需求 即:根据不同登录的角色账号来使用该账号拥有的功能,也就是说系统左边的菜单栏不是固定不变的。 首先是基础路由配置带有component的。 const allRoutes [// 基础路由{path: /,name…...
AI训练中的专有名词大白话版
AI训练中的专有名词大白话版 1. 数据集(Dataset) 👉 人话:AI的“练习题题库”,包含一堆带答案的题目(比如猫狗照片标签)。 🔹 例子: 训练集(练习…...
kafka 与 RocketMQ对比
问题 1: 为什么使用消息队列?服务搭建KafkaRocketMQ编写 docker-compose.yml运行docker compose修改配置文件(解决网络问题)创建一个 topic运行skd尝试发送与接收功能 压力测试:Kafkabatch-size(批量大小)分区数:发送数据(MB/s)消费-线程数(15 分区) RocketMQ生产生产者数量批…...
instnatid模型加载器放在哪里
一般根据节点名称来放,如果没有就新建 ComfyUI\models\instantid...
Spring Boot自动配置原理解析
文章目录 前言一、SpringBootConfiguration二、EnableAutoConfiguration2.1、AutoConfigurationPackage2.2、Import(AutoConfigurationImportSelector.class) 三、ComponentScan四、自动配置源码4.1、获取所有候选的自动配置类4.2、过滤不满足条件的自动配置 总结 前言 在常规的…...
LlamaIndex实现(基于PDF|CSV文件)RAG检索增强生成:NaiveRAG
什么是 RAG? RAG(Retrieval-Augmented Generation,检索增强生成) 是一种结合 信息检索(Retrieval) 和 文本生成(Generation) 的AI技术,用于提升大语言模型(L…...
分布式系统面试总结:3、分布式锁(和本地锁的区别、特点、常见实现方案)
仅供自学回顾使用,请支持javaGuide原版书籍。 本篇文章涉及到的分布式锁,在本人其他文章中也有涉及。 《JUC:三、两阶段终止模式、死锁的jconsole检测、乐观锁(版本号机制CAS实现)悲观锁》:https://blog.…...
vue3搭建实战项目笔记三
vue3搭建实战项目笔记三 3.1.行高偏移问题3.2.谷歌浏览器上不能定位3.2.2 移动端css隐藏滚动条 3.3.获取列表的数据3.3.1 服务器返回十万条数据3.3.2 分页展示数据3.3.2 防止展示数据为空报错 3.4.上拉加载数据3.4.1 加载更多数据3.4.2 监听页面滚动到底部3.4.3 监听滚动的时机…...
【商城实战(101)】电商未来已来:新技术引领商城发展新航向
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配,乃至运营推广策略,102 章内容层层递进。无论是想…...
深入解析最大公约数(GCD)与最小公倍数(LCM)的C++实现
深入解析最大公约数(GCD)与最小公倍数(LCM)的C实现 一、GCD与LCM的数学定义 1. 最大公约数(GCD) 两个或多个整数共有约数中最大的一个。 例如: GCD(12, 18) 6GCD(21, 14) 7 2. 最小公倍数…...
低功耗LPWAN模块开发指南:远距离无线通信与边缘计算融合实战
在远程资产追踪、野外环境监测等场景中,稳定可靠的长距离通信与超低功耗是系统设计的核心挑战。eFish-SBC-RK3576通过 原生双UART接口 USB OTG扩展能力 ,可无缝集成主流LPWAN模组(LoRa/NB-IoT),实现“数据采集-边…...
【质量管理】纠正、纠正措施和预防的区别与解决问题的四重境界
“质量的定义就是符合要求”,我们在文章【质量管理】人们对于质量的五个错误观念-CSDN博客中提到过,这也是质量大师克劳士比所说的。“质量的系统就是预防”,防止出现产品不良而造成的质量损失。 质量问题的解决可以从微观和宏观两个方面来考…...
STM32F103_LL库+寄存器学习笔记12 - 提高串口通讯程序的健壮性:异常监控 + 超时保护机制
导言 首先,进行USART和DMA状态监测、记录异常状态并主动处理,是高健壮性嵌入式系统开发的核心思想之一。 这种机制看似复杂,实则能有效保障系统长期、稳定地运行: 提升通讯可靠性。降低维护成本。增强系统自恢复能力。 因此&…...
搜索-BFS
马上蓝桥杯了,最近刷了广搜,感觉挺有意思的,广搜题类型都差不多,模板也一样,大家写的时候可以直接套模板 这里给大家讲一个比较经典的广搜题-迷宫 题目问问能否走到 (n,m) 位置,假设最后一个点是我们的&…...
Keil调试(RTT Debug 断点)
调试 打印操作 方式接口优缺点串口打印TXRX简单,但是占用串口,速度慢,重定向fputc简单RTT打印SWDIOSWCLK速度快,不占额外接口,直接移植RTT库断点打印SWDIOSWCLKDebug的时候断点操作SWOSWDIOSWCLKSWO需要连接SWO引脚,重定向fputc简单 这里我只介绍RTT打印和断点打印; 一. RT…...
【jQuery】插件
目录 一、 jQuery插件 1. 瀑布流插件: jQuery 之家 http://www.htmleaf.com/ 2. 图片懒加载: jQuery 插件库 http://www.jq22.com/ 3. 全屏滚动 总结不易~ 本章节对我有很大收获,希望对你也是~~~ 一、 jQuery插件 jQuery 功能…...
leetcode 28 Find the Index of the First Occurrence in a String
直接用kmp算法 class Solution { public:int strStr(string haystack, string needle) {return kmp(haystack,needle);}int kmp(std::string &text,std::string &pattern){int n text.size();int m pattern.size();if(m 0)return 0;std::vector<int> next;ne…...
nginx 动静分离
一.动静分离 1.动静分离的好处 Apache Tocmat 严格来说是一款java EE服务器,主要是用来处理 servlet请求。处理css、js、图片这些静态文件的IO性能不够好,因此,将静态文件交给nginx处理,可以提高系统的访问速度,减少…...
1.2 斐波那契数列模型:LeetCode 面试题 08.01. 三步问题
动态规划解三步问题:LeetCode 面试题 08.01. 三步问题 1. 题目链接 LeetCode 面试题 08.01. 三步问题 题目要求:小孩上楼梯,每次可以走1、2或3步,计算到达第 n 阶台阶的不同方式数,结果需对 1e9 7 取模。 2. 题目描述…...
关于AutoMapper
AutoMapper 概述 AutoMapper 是一个基于约定的对象 - 对象映射库,主要用于在不同对象类型之间自动映射属性值。它能根据配置的映射规则,将源对象的属性值填充到目标对象中,避免了手动编写大量繁琐的对象映射代码。 作用 提升开发效率&…...
是否每一层之间都要线性变换和激活函数?
1. 神经网络层的基本组成 一个典型的神经网络层通常包含两个步骤: 线性变换(加权求和): z Wx} b 其中W 是权重矩阵,b是偏置向量,是输入,z 是线性输出。激活函数: 其中,…...
golang 的reflect包的常用方法
目录 reflect 包方法总结 类型 (Type) 方法 值 (Value) 方法 代码示例: reflect 包方法总结 p : Person{Name: "小明", Age: 22}t : reflect.TypeOf(&p)v : reflect.ValueOf(p) 类型 (Type) 方法 方法名描述示例 Na…...
CentOS 7 安装 EMQX (MQTT)
CentOS 7 安装 EMQX 通过 Yum 源安装 EMQX 支持通过 Yum 源安装,您可通过以下 Yum 命令从中自动下载和安装 EMQX。 通过以下命令配置 EMQX Yum 源: curl -s https://assets.emqx.com/scripts/install-emqx-rpm.sh | sudo bash安装以下依赖项ÿ…...
Flask项目部署:Flask + uWSGI + Nginx
目录 1,网络架构 2,环境安装 2.1,安装yum:Shell软件包管理器 2.2 安装python 2.3 安装uWSGI 2.4 安装Flask 3,上传工程包到服务器,打包Flask项目 4,创建和配置 uwsgi 配置文件 uwsgi.ini 4.1配置文件 4.2配置文件注释详解 5,启动服务 6,安装nginx 7,nginx配置 8,…...
软件工程面试题(十五)
1、servlet 创建过程以及ruquest,response,session的生命周期? Servlet的创建过程: 第一步 public class AAA extends HttpServlet{ 实现对应的doxxx方法 } 第二步: 在web.xml中配置 <servlet> <servlet-name></servlet-name> <servlet-c…...
当Kafka化身抽水马桶:论组件并发提升与系统可用性的量子纠缠关系
《当Kafka化身抽水马桶:论组件并发提升与系统可用性的量子纠缠关系》 引言:一场OOM引发的血案 某个月黑风高的夜晚,监控系统突然发出刺耳的警报——我们的数据发现流水线集体扑街。事后复盘发现:Kafka集群、Gateway、Discovery服…...
python和Java的区别
Python和Java是两种流行的编程语言,它们之间有一些重要的区别: 语法:Python是一种动态类型的脚本语言,语法简洁明了,通常使用缩进来表示代码块。Java是一种静态类型的编程语言,语法更为严格,需要…...
QFlightInstruments飞行仪表控件库
QFlightInstruments 是一个开源的飞行仪表控件库,专为基于 Qt 的应用程序设计。它提供了一系列仿真实飞机仪表的组件,适用于飞行模拟软件、航空电子系统或任何需要高仿真飞行仪表显示的项目。 主要功能 高仿真飞行仪表:包括空速表、高度表、…...
可发1区的超级创新思路(python\matlab实现):MPTS+Lconv+注意力集成机制的Transformer时间序列模型
首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 应用场景 该模型主要用于时间序列数据预测问题,包含功率预测、电池寿命预测、电机故障检测等等。 一、模型整体架构(本文以光伏功率预测为例) 本模型由多尺度特征提取模块(MPTS)…...
Nginx — Nginx版本升级
例如:将10.224.11.220、10.224.11.221、10.208.11.220 三台服务器上的Nginx从1.21.1版本升级到1.23.3版本。 一、Nginx升级步骤 步骤一:备份老版本的Nginx(10.224.11.220、10.224.11.221、10.208.11.220) #关闭Nginx cd /usr/l…...
CSS学习笔记6——网页布局
目录 一、元素的浮动属性、清除浮动 清除浮动的其他方法 1、使用空标签清除浮动影响 2、使用overflow属性清除浮动 3、使用伪元素清除浮动影响 原理 overflow属性 二、元素的定位 1、相对定位 2、绝对定位 编辑 3、固定定位 z-index层叠等级属性 一、元素的浮动…...
C语言【指针二】
引言 介绍:const修饰指针,野指针 应用:指针的使用(strlen的模拟实现),传值调用和传指调用 一、const修饰指针 1.const修饰变量 简单回顾一下前面学过的const修饰变量:在变量前面加上const&…...
第十六届蓝桥杯模拟二(串口通信)
由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.…...
Java List 集合取交集、并集、差集、补集
在Java中,集合操作是编程中非常常见的需求,尤其是在处理数据集合时,如List、Set等。本文将详细介绍如何在Java中实现List集合的交集、并集、差集和补集操作,并提供代码示例和实现方法。 1. 交集操作 交集是指两个集合中都存在的元…...
SkyWalking+Springboot实战
1、下载SkyWalking APM 1.手动下载 Downloads | Apache SkyWalkinghttps://skywalking.apache.org/downloads/ 2.链接下载 https://dlcdn.apache.org/skywalking/10.2.0/apache-skywalking-apm-10.2.0.tar.gzhttps://dlcdn.apache.org/skywalking/10.2.0/apache-skywalking-…...
【小兔鲜】day01 项目、Vue3介绍、组合式API、小案例
【小兔鲜】day01 项目、Vue3介绍、组合式API、小案例 0. 市场上Vue前端工程师用到的技术1. Vue3小兔鲜先导课1.1 技术栈1.2 项目规模1.3 项目亮点1.4 课程安排 2. 认识Vue32.1 Vue3组合式API体验 3. create-vue创建Vue3项目3.1 新建项目结构3.2 小节3.3 补充说明npm init vuela…...
【Pandas DataFrame】
以下是 Pandas DataFrame 的核心知识点总结,用结构化分类帮你高效记忆关键操作和概念: 1. 基础操作 创建DataFrame 方法代码示例说明从字典创建df pd.DataFrame({A: [1,2], B: [3,4]})字典键为列名,值为数据从列表创建df pd.DataFrame([[…...
华为OD机试2025A卷 - 生成回文素数(Java Python JS C++ C )
最新华为OD机试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 题目描述 求出大于或等于 N 的最小回文素数。 如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是素数。 例如,2,3,5,7,11 以及 13 是素数。 如果一个数从左往右读与从右往左读是一…...
Jenkins教程(自动化部署)
Jenkins教程(自动化部署) 1. Jenkins是什么? Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行&…...
C#里使用libxl的对齐/边框/颜色
一份好的EXCEL文件,通道会有不同的颜色和边框来表示。 以便表示一些重要的信息,这样才能让人们一眼就看到需要关注的信息。 如下面所示: 要显示上面的内容,需要使用下面的例子: private void button12_Click(object sender, EventArgs e){var book = new ExcelBook();if…...
虚拟pinctrl驱动
之前呢,我们讲解了在内核中pinctrl子系统是怎么实现的,今天我们来尝试一下自己去写一个pinctrl子系统: 首先呢,我们来看看一个pinctrl子系统需要做的事情: 上面的话,我们看了一个pinctrl子系统需要的三大功能以及在驱…...
pycharm虚拟环境项目转移后配置解释器
添加解析器提示:无效的 Python SDK 解决方法 在到电脑安装python解析器,复制:python.exe和pythonw.exe 项目虚拟环境venv/Scripts Python解释器添加 项目现有虚拟环境,就可以正常使用...
蓝桥杯嵌入式学习笔记
用博客来记录一下参加蓝桥杯嵌入式第十六届省赛的学习经历 工具环境准备cubemx配置外部高速时钟使能设置串口时钟配置项目配置 keil配置烧录方式注意代码规范头文件配置 模块ledcubemx配置keil代码实现点亮一只灯实现具体操作的灯,以及点亮还是熄灭 按键cubemx配置k…...
0201-jsx语法基础-jsx-仿低代码平台项目
文章目录 1.jsx标签2.jsx属性3.jsx 事件3.1 声明事件3.2 使用事件(对象) 4. typescript类型基础4.1 类型声明4.2 事件函数传递自定义参数 5.插入js变量6. 条件判断7. 循环结语 1.jsx标签 jsx标签与html标签区别: 首字母大小写 大写是自定义组…...
在MCU工程中优化CPU工作效率的几种方法
在嵌入式系统开发中,优化 CPU 工作效率对于提升系统性能、降低功耗、提高实时性至关重要。Keil 作为主流的嵌入式开发工具,提供了多种优化策略,包括 关键字使用、内存管理、字节对齐、算法优化 等。本文将从多个方面介绍如何在 Keil 工程中优…...
Elasticsearch 的搜索功能
Elasticsearch 的搜索功能 建议阅读顺序: Elasticsearch 入门Elasticsearch 搜索(本文)Elasticsearch 搜索高级Elasticsearch 高级 1. 介绍 使用 Elasticsearch 最终目的是为了实现搜索功能,现在先将文档添加到索引中,…...
【鸿蒙5.0】向用户申请麦克风授权
#效果图 步骤 在 config.json 里声明权限:在项目的 config.json 文件中添加麦克风权限的声明,告知系统应用需要使用该权限。检查权限状态:在代码里检查应用是否已经获得了麦克风权限。请求权限:若应用未获得麦克风权限࿰…...