MySQL实战-解决方案
1. MySQL 主从集群同步延迟问题的解决方案
在主从复制架构中,主库执行写操作后,将更新事件写入 Binlog,从库通过 I/O 线程将 Binlog 数据同步到本地的 Relay Log,再由 SQL 线程解析并执行,从而保持数据一致性。然而,由于网络延迟、磁盘 IO 和从库自身处理能力等原因,主从之间可能存在延迟。
常见解决方案和优化思路:
-
优化架构:
- 一主多从: 采用一主多从架构分担查询压力,避免单个从库成为瓶颈
- 读写分离: 对于强一致性要求较高的场景,如果从库延迟较大,则尽量走主库查询数据,避免出现数据不一致问题
-
监控与延迟判断:
- 利用
SHOW SLAVE STATUS
命令查看Seconds_Behind_Master
字段,监控同步延迟情况 - 若业务允许,可以在从库查询前通过 sleep 延时一段时间,确保数据同步完成后再进行查询
- 利用
-
并行复制:
- MySQL 5.6 及以上版本支持基于数据库级别的并行复制,减少单线程复制带来的延迟。但需要注意,数据间的依赖关系可能限制并行度
-
网络和硬件优化:
- 检查网络带宽、延迟以及磁盘 IO 性能,必要时考虑升级硬件或调整 MySQL 配置(如调大缓存、增加线程池大小)
-
其他替代方案:
- 对于需要严格强一致性的场景,可能需要考虑分布式数据库、NewSQL 或其他支持全局事务一致性的技术方案
补充说明:
实际生产环境中,主从延迟往往是无法完全避免的,关键在于如何在系统设计中容忍延迟,并通过合理的业务逻辑降低延迟对用户体验的影响
2. Binlog 日志格式及其区别
MySQL 的二进制日志(binlog)是记录数据库写操作的重要日志,用于数据恢复、主从同步等场景。其日志格式主要有三种:
-
Statement 格式:
- 记录的是 SQL 语句的原文
- 优点:日志体积小、写入速度快;
- 缺点:受执行上下文影响较大,部分非确定性函数(如 NOW()、RAND())可能导致主从数据不一致
-
Row 格式:
- 记录的是数据行级别的变更(即记录哪一行发生了哪些变化)
- 优点:更精确,能避免因 SQL 上下文问题带来的数据不一致;
- 缺点:日志体积大,尤其是当一次 SQL 操作影响大量行时,产生的日志量较多
-
Mixed 格式:
- 结合了上述两种方式,根据实际情况自动选择使用 statement 或 row 格式
- 优点:在能够使用 statement 格式时优先选择,遇到复杂情况(比如触发器或非确定性函数)时切换到 row 格式,从而兼顾性能和准确性
补充说明:
了解 Binlog 的工作原理和格式有助于在主从同步、数据恢复以及数据库审计等场景下作出合理选择,同时也方便对日志进行调试和排查问题
3. 索引的优缺点及常见索引类型
索引作为数据库性能优化的重要手段,对加速查询起到关键作用。但同时,索引也有一定的代价。
索引的优点
- 提高查询效率:
- 通过索引可以快速定位数据,减少全表扫描,提高查询速度
- 数据完整性保证:
- 如唯一索引能够保证字段值的唯一性,从而维护数据一致性
索引的缺点
- 写操作开销:
- 数据的新增、修改、删除时需要同时更新索引,会带来额外的性能开销
- 额外存储空间:
- 索引需要占用磁盘空间,尤其是多个组合索引或覆盖索引可能占用较多资源
常见索引类型
-
主键索引(Primary Key):
- 数据列不允许重复且不能为 NULL,一个表只能有一个主键索引
- 在 InnoDB 存储引擎中,主键往往作为聚集索引,决定数据存储的物理顺序
-
唯一索引(Unique Index):
- 除了允许 NULL 外,不允许数据重复,可以创建多个唯一索引来保证数据唯一性
-
普通索引(Index):
- 无唯一性限制的基本索引,用于加速数据查询
-
全文索引(Full-text Index):
- 主要用于文本数据的搜索,可对大文本字段进行分词、匹配,适用于搜索引擎功能
-
覆盖索引(Covering Index):
- 指查询所涉及的所有列均包含在索引中,无需回表即可获取所有数据,从而提升查询效率
-
组合索引(Composite Index):
- 由多个列组合而成,用于多列联合查询。组合索引的顺序很重要,查询时需要遵循最左前缀原则
在实际设计索引时,需要根据查询频率、数据量以及写入操作情况综合考虑,避免过多或不合理的索引带来的负面影响。同时,借助执行计划(EXPLAIN)等工具对索引效果进行验证也是必不可少的步骤
4. MySQL 数据库 CPU 飙升问题的处理方法
MySQL 数据库 CPU 占用过高往往意味着存在性能瓶颈或者某些 SQL 语句执行效率低下。处理这类问题一般可以从以下几个步骤入手:
第一阶段:问题排查
-
定位进程:
- 使用
top
、htop
等系统监控工具,确认是否是mysqld
进程导致 CPU 占用飙升
- 使用
-
查看连接状态:
- 登录 MySQL 后,执行
SHOW PROCESSLIST
命令,查看当前活跃连接,重点关注是否有长时间运行或资源消耗较高的 SQL 语句
- 登录 MySQL 后,执行
-
分析慢查询:
- 通过慢查询日志或 MySQL 内置的性能诊断工具(如 Performance Schema),定位问题 SQL
第二阶段:处理方案
-
SQL 优化:
- 分析问题 SQL 的执行计划(EXPLAIN),对查询条件、索引使用、表结构设计等进行优化,必要时重构 SQL 语句
-
索引优化:
- 确保涉及查询的字段上有合适的索引,避免全表扫描
-
配置优化:
- 根据业务场景和硬件配置,适当调整 MySQL 参数,如缓冲区大小、线程池设置、连接数上限等,提升整体并发处理能力
第三阶段:其他考虑
-
业务流量控制:
- 分析 CPU 飙升时段的业务流量,判断是否为业务突增或恶意请求。如果是流量问题,考虑限流、缓存、分布式扩展等措施
-
硬件升级:
- 如果系统负载长期过高,考虑升级 CPU、增加内存或者采用更高效的存储介质
处理 CPU 飙升问题需要综合考虑 SQL 优化、数据库配置和业务架构等多方面因素,切勿局限于单一角度
5. 会员批量过期通知方案的实现
对于拥有百万级会员数据的大型系统,如何高效地批量检测会员过期,并提前发送续费提醒邮件是一个典型的业务场景。下面介绍几种可行的方案:
方案一:用户触发检测
-
原理:
- 当用户登录系统时,后台检查该会员的过期时间。如果过期时间临近(低于设定阈值),则在用户端弹窗或发送邮件提醒续费
-
优点:
- 避免了主动轮询,减少了系统后台的压力
-
缺点:
- 若用户长时间不登录,则无法触发提醒;同时不适合主动营销或运营策略
方案二:搜索引擎辅助查询
-
原理:
- 将会员 ID 与过期时间等信息同步到搜索引擎(如 Solr 或 Elasticsearch)中,通过搜索引擎的快速查询能力定时筛选即将过期的会员
-
优点:
- 搜索引擎适合处理大数据量的查询任务,响应速度快、扩展性好
-
缺点:
- 需要额外部署和维护搜索引擎系统,并保证数据同步的一致性
方案三:Redis 过期键提醒
-
原理:
- 用户开通会员后,将会员 ID 及过期时间信息存入 Redis,并设置 key 过期时间。通过配置
notify-keyspace-events "Ex"
,Redis 会在 key 过期时触发事件,应用程序捕获该事件后进行续费提醒处理
- 用户开通会员后,将会员 ID 及过期时间信息存入 Redis,并设置 key 过期时间。通过配置
-
优点:
- Redis 的内存操作速度极快,适合大量数据的定时提醒任务
-
缺点:
- 需要确保 Redis 数据与数据库数据的一致性,且 Redis 内存容量需要合理规划
方案四:MQ 延迟队列
-
原理:
- 用户开通会员时,根据会员到期时间计算延迟时间,发送一条延迟消息到消息队列(如 Kafka、RabbitMQ、RocketMQ 等)。当消息延迟到期后,消费者接收到消息,触发邮件通知或其他续费提醒操作
-
优点:
- 消息队列具有高可靠性和良好的扩展性,能平滑处理大批量消息
-
缺点:
- 需要对消息队列进行监控和管理,且延迟队列的实现需要考虑消息精度和消费时效
补充说明:
每种方案各有利弊,实际选型时应根据数据规模、实时性要求、系统架构和开发成本等多方面因素进行权衡。也可以采用组合方案,以充分利用各自优势
6. Binlog 与 Redo Log 的区别
在 MySQL 中,日志体系是确保数据安全和一致性的重要机制。常见的日志有 Binlog(Binary Log)和 Redo Log,它们各自承担不同的职责
主要区别:
-
使用场景不同:
- Binlog:
- 用于数据备份、数据恢复以及主从复制同步
- 记录数据库的逻辑操作,即记录 SQL 语句或数据行变化
- Redo Log:
- 用于 InnoDB 存储引擎的事务恢复,保证事务的 ACID 特性
- 记录物理数据页的变化,主要在事务提交时发挥作用
- Binlog:
-
记录的信息粒度不同:
- Binlog:
- 提供 statement、row 和 mixed 三种记录格式,侧重于记录数据变更的“动作”
- Redo Log:
- 记录的是数据页修改的具体信息,更偏向于物理层面的变化
- Binlog:
-
写入时机和线程不同:
- Binlog:
- 由主线程在执行 SQL 时同步写入,因此记录的是语句级别的操作
- Redo Log:
- 由后台刷盘线程写入,通常在事务提交或定期刷盘时将内存中的日志写入磁盘,保证数据持久化
- Binlog:
对于数据恢复、主从复制等业务场景,我们依赖 Binlog 来重放数据操作;而 Redo Log 则在数据库崩溃后,通过回滚未提交事务和恢复已提交事务,确保数据一致性
相关文章:
MySQL实战-解决方案
1. MySQL 主从集群同步延迟问题的解决方案 在主从复制架构中,主库执行写操作后,将更新事件写入 Binlog,从库通过 I/O 线程将 Binlog 数据同步到本地的 Relay Log,再由 SQL 线程解析并执行,从而保持数据一致性。然而&a…...
使用 CSS 实现透明效果
在 CSS 中,实现透明效果有几种方法,具体使用哪种方法取决于具体需求。以下是一些常见的方法: 使用 opacity 属性: opacity 属性可以设置整个元素的透明度,包括其所有的子元素。 .transparent { opacity: 0.5; /* 0 表…...
LabVIEW2025中文版软件安装包、工具包、安装教程下载
下载链接:LabVIEW及工具包大全-三易电子工作室http://blog.eeecontrol.com/labview6666 《LabVIEW2025安装图文教程》 1、解压后,双击install.exe安装 2、选中“我接受上述2条许可协议”,点击下一步 3、点击下一步,安装NI Packa…...
2025.2.5——五、[网鼎杯 2020 青龙组]AreUSerialz
题目来源:BUUCTF [网鼎杯 2020 青龙组]AreUSerialz 一、打开靶机,整理信息 直接得到一串php代码,根据题目可以看到还有序列化 二、解题思路 step 1:代码审计 <?phpinclude("flag.php");highlight_file(__FILE__…...
Oracle Life DBA的一天
/***************************************************************************************************************** Navicat Premium Data Transfer Source File : Oracle Life DBA的一天.sql Source Server Type : Oracle Source Server Version : 190…...
手写MVVM框架-实现简单v-bind
v-bind 有两种情况: 1.绑定的是一个简单的属性 <div :class"customClass">简单v-bind</div> 2.绑定的元素上面有表达式 <div :class"{customClass: a 1 > 2}">简单v-bind</div> 这一章我们先说第一种情况&…...
【力扣】240.搜索二维矩阵 II
题目 我的代码 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {for(int i0;i<matrix.size();i){for(int j0;j<matrix[0].size();j){if(targetmatrix[i][j]){return true;}else if(target<matrix[i][j]){brea…...
PlanLLM: 首个支持开放词汇与封闭集任务的跨模态视频程序规划框架
2025年1月7号,由杨德杰、赵子敬、刘洋联合提出PlanLLM,一种基于可微调大型语言模型(LLM)的跨模态联合学习框架,用于解决视频程序规划任务。通过引入LLM增强规划模块和互信息最大化模块,PlanLLM突破了现有方…...
使用服务器部署DeepSeek-R1模型【详细版】
文章目录 引言deepseek-r1IDE或者终端工具算力平台体验deepseek-r1模型总结 引言 在现代的机器学习和深度学习应用中,模型部署和服务化是每个开发者面临的重要任务。无论是用于智能推荐、自然语言处理还是图像识别,如何高效、稳定地将深度学习模型部署到…...
TCP三次握手、四次挥手过程及原理
TCP 协议简述 TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。 无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接…...
AWS App2Container
AWS App2Container 是一个由 Amazon Web Services (AWS) 提供的工具,它帮助用户将现有的传统应用程序(特别是运行在虚拟机或物理服务器上的应用)转化为容器化的应用,从而可以在 AWS 上更方便地部署、管理和扩展。具体来说…...
《一》深入了解软件测试工具 JMeter-自我介绍
深入了解软件测试工具 JMeter 在当今的数字化时代,软件已经渗透到我们生活的方方面面,从日常使用的手机应用到复杂的企业级系统,软件的质量和性能直接影响着用户体验和业务的成功。而软件测试作为保障软件质量的关键环节,其中的性…...
(算法竞赛)图论+DFS深搜——图的dfs遍历1
题目描述 给定一个无向图,包含 n 个顶点(编号为 1 到 n)和 e 条边。要求从顶点 1 开始进行深度优先搜索(DFS),并按照访问顺序输出遍历结果。注意:当存在多个邻接点时,优先访问编号较…...
二级C语言题解:十进制转其他进制、非素数求和、重复数统计
目录 一、程序填空📝 --- 十进制转其他进制 题目📃 分析🧐 二、程序修改🛠️ --- 非素数求和 题目📃 分析🧐 三、程序设计💻 --- 重复数统计 题目📃 分析🧐 前言…...
快速搭建GPU环境 | docker、k8s中使用gpu
目录 一、裸机部署安装 GPU Driver安装 CUDA Toolkit测试 二、Docker 环境安装 nvidia-container-toolkit配置使用该 runtime 三、 k8s 环境安装 device-plugin安装 GPU 监控 一、裸机部署 裸机中要使用上 GPU 需要安装以下组件: GPU DriverCUDA Toolkit 二者的关…...
基于docker搭建Kafka集群,使用KRaft方式搭建,摒弃Zookeeper
KAFKA基于docker使用KRaft进行集群搭建 环境:已成功搭建kafka服务 可点击链接跳转至安装kafka-3.8.0版本 并启用SASL认证 教程 使用基于Zookeeper方式搭建集群教程 kafka-3.8.0版本 并启用SASL认证 教程 搭建kafka-ui可视化工具 192.168.2.91 192.168.2.92 192…...
分库分表详解
分库分表确实有垂直切分和水平切分两种,针对给出的描述,以下是对这两种切分方式的详细分析和验证: 垂直切分 描述:将表按照功能模块、关系密切程度划分出来,部署到不同的库上。 分析:垂直切分主要是根据…...
【重生之学习C语言----水仙花篇】
目录 编辑 ----------------------------------------begin-------------------------------------- 一、什么是水仙花数? 二、问题分析 确定数字的位数:计算输入数字的位数 n。 分离每一位数字:例如将 153 分离为 1、5、3。 计算各…...
云端IDE如何重定义开发体验
豆包 MarsCode 是一个集成了AI功能的编程助手和云端IDE,旨在提高开发效率和质量。它支持多种编程语言和IDE,提供智能代码补全、代码解释、单元测试生成和问题修复等功能,同时具备AI对话视图和开发工具。 豆包 MarsCode 豆包 MarsCode 编程助…...
模拟实现string类
目录 一.构造与析构函数 二.基础小功能的实现 1.clear 2.c_str 3外部对私有的查看 三.实现string的迭代器 四.string的增删查改 1.push_back尾插 1.1reserve扩容 1.2尾插 3.运算符重载 4.insert在任意位置插入 5.erase删除 5.1npos的处理 5.2函数的实现 6.find查…...
使用一个大语言模型对另一个大语言模型进行“调教”
使用一个大语言模型对另一个大语言模型进行“调教”(通常称为微调或适配),是一种常见的技术手段,用于让目标模型更好地适应特定的任务、领域或风格。以下是基于搜索结果整理的详细步骤和方法: 1.准备工作 安装必要的…...
十二、Docker Compose 部署 SpringCloudAlibaba 微服务
一、部署基础服务 0、项目部署结构 项目目录结构如下: /home/zhzl_hebei/ ├── docker-compose.yml └── geochance-auth/└── Dockerfile└── geochance-auth.jar └── geochance-system/└── Dockerfile└── geochance-system.jar └── geochance-gateway/…...
深入浅出:旋转变位编码(RoPE)在现代大语言模型中的应用
在现代大语言模型(LLMs)中,位置编码是一个至关重要的组件。无论是 Meta 的 LLaMA 还是 Google 的 PaLM,这些模型都依赖于位置编码来捕捉序列中元素的顺序信息。而旋转变位编码(RoPE) 作为一种创新的位置编码…...
C# 使用ADO.NET访问数据全解析
.NET学习资料 .NET学习资料 .NET学习资料 在 C# 的应用开发中,数据访问是极为关键的部分。ADO.NET作为.NET 框架下用于数据访问的核心技术,能够帮助开发者便捷地与各类数据源进行交互。本文将深入剖析ADO.NET,带你掌握使用 C# 通过ADO.NET访…...
趣解单词,实现快速记忆
英文单词 love,是“爱”的意思: love v./n.爱;喜欢;热爱;爱情;心爱的人 那什么是爱呢?love,首字母为l,是一根绳子,ve-通f,love通life࿰…...
TEMU电池法规:CE-battery法规指令主要检测以下这三样,汞、镉、铅
TEMU电池法规:CE-battery法规的指令主要检测以下这三样,汞、镉、铅有害物质: CE-Battery认证是依据欧盟新电池法规EU 2023/1542指令进行的电池安全检测报告。该认证针对所有类别的电池,包括内置或添加到产品中的电池,…...
vscode 如何通过Continue引入AI 助手deepseek
第一步: 在deepseek 官网上注册账号,得到APIKeys(deepseek官网地址) 创建属于自己的APIKey,然后复制这个key,(注意保存自己的key)! 第二步: 打开vscode,在插件市场安装Continue插件, 点击设置,添加deepseek模型,默认…...
【大数据技术】搭建完全分布式高可用大数据集群(Scala+Spark)
搭建完全分布式高可用大数据集群(Scala+Spark) scala-2.13.16.tgzspark-3.5.4-bin-without-hadoop.tgz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群Spark的详细步骤。 注意: 统一约定将软件安装包存放于虚拟机的/softwa…...
【翻译+论文阅读】DeepSeek-R1评测:粉碎GPT-4和Claude 3.5的开源AI革命
目录 一、DeepSeek-R1 势不可挡二、DeepSeek-R1 卓越之处三、DeepSeek-R1 创新设计四、DeepSeek-R1 进化之路1. 强化学习RL代替监督微调学习SFL2. Aha Moment “啊哈”时刻3. 蒸馏版本仅采用SFT4. 未来研究计划 部分内容有拓展,部分内容有删除,与原文会有…...
前缀和练习——洛谷P8218:求区间和
题目: 这道题很简单,直接根据题目无脑套公式 代码: #include<bits/stdc.h> using namespace std; const int N 1e5 9; using ll long long; ll a[N], perfix[N]; int main() {ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);//取消同步输…...
uv 安装包
是的,你可以使用 uv 来安装 Python 包。uv 是一个高性能的 Python 包安装器和解析器,由 astral.sh 团队开发,旨在替代 pip 和 pip-tools,提供更快的包安装体验。 ### 如何使用 uv 安装包 1. **安装 uv**: 如果你还…...
【机器学习】训练(Training)、验证(Validation)和测试(Testing)
机器学习中训练(Training)、验证(Validation)和测试(Testing)这三个阶段的作用和关系。 1. 训练阶段 (Training) - 使用训练集数据来训练模型 - 模型通过学习训练数据的特征和模式来调整其内部参数 - 这个阶段模型会不断优化以减少预测误差 - 通常使用最大的数据集比例&…...
3. k8s二进制集群之负载均衡器高可用部署
Haproxy 和 Keepalived安装Haproxy配置文件准备Keepalived配置及健康检查启动Haproxy & Keepalived服务继续上一篇文章《K8S集群架构及主机准备》,下面介绍负载均衡器搭建过程 Haproxy 和 Keepalived安装 在负载均衡器两个主机上安装即可 apt install haproxy keepalived…...
C++游戏开发实战:从引擎架构到物理碰撞
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 C 是游戏开发中最受欢迎的编程语言之一,因其高性能、低延迟和强大的底层控制能力,被广泛用于游戏…...
MSPFN 代码复现
1、环境配置 conda create -n MSPFN python3.9 conda activate MSPFN pip install opencv-python pip install tensorflow pip install tqdm pip install matplotlib2、train 2.1 创建数据集 2.1.1 数据集格式 |--rainysamples |--file1: |--file2:|--fi…...
[c语言日寄]浮点数在内存中的储存
【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…...
PySpark学习笔记5-SparkSQL
sparkSql的数据抽象有两种。 一类是data set适用于java和Scala 一类是data frame适用于java,Scala,python 将r d d转换为data frame #方式一 df spark.createDataFrame(rdd,schema[name,age]) #方式二 schema Structtype(). add(id,integertype(),nu…...
支持 APQP (先期产品质量策划) 的软件系统-汽车电子行业专用研发管理信息化平台
支持 APQP (先期产品质量策划) 的软件系统 在制造业竞争白热化的当下,产品质量已然成为企业立足市场的核心竞争力。APQP(先期产品质量策划)作为保障产品质量的关键流程,贯穿于产品从概念萌生到最终交付的整个生命周期,…...
配置@别名路径,把@/ 解析为 src/
路径解析配置 webpack 安装 craco npm i -D craco/craco 项目根目录下创建文件 craco.config.js ,内容如下 const path require(path) module.exports {webpack: {// 配置别名alias: {// 约定: 使用 表示src文件所在路径: path.resolve(__dirname,src)…...
以为是响应式对象丢失导致数据没有回显
背景:之前ruoyi生成的vue2代码, <el-form ref“form”,后面我改成vue3的写法,没有实例化form, 在vue3中是需要定义const form ref(); 导致点击了修改后,页面弹框显示出来,数据没有回显。 一直…...
【汇编语言】直接定址表(二)—— 「代码‘导航员’:直接定址表的功能与应用」
文章目录 前言1. 直接定址表1.1 问题引入(一)—— 为算法清晰而查表1.2 分析与解决问题1.2.1 两个十六进制表示一个字节1.2.2 得到数值对应的数码字符1.2.2.1 最粗暴的方法——比较1.2.2.2 使用映射关系来解决1.2.2.3 存在的问题及解决 1.3 得到子程序1.…...
05vue3实战-----配置项目代码规范
05vue3实战-----配置项目代码规范 1.集成editorconfig配置2.使用prettier工具2.1安装prettier2.2配置.prettierrc文件:2.3创建.prettierignore忽略文件2.4VSCode需要安装prettier的插件2.5VSCod中的配置2.6测试prettier是否生效 3.使用ESLint检测3.1VSCode需要安装E…...
不含101的数
不含101的数 真题目录: 点击去查看 E 卷 200分题型 题目描述 小明在学习二进制时,发现了一类不含101的数: 将数字用二进制表示,不能出现 101 。 现在给定一个整数区间 [l,r] ,请问这个区间包含了多少个不含 101 的数ÿ…...
Linux/C高级(精讲)----shell结构语句、shell数组
shell脚本 功能性语句 test 可测试对象三种:字符串 整数 文件属性 每种测试对象都有若干测试操作符 1)字符串的测试: s1 s2 测试两个字符串的内容是否完全一样 s1 ! s2 测试两个字符串的内容是否有差异 -z s1 测试s1 字符串的长度是…...
基于微信小程序的消防隐患在线举报系统设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
java基础2(黑马)
一、变量里的数据在计算机中的存储原理 1.二进制 .二进制:只有0、1, 按照逢二进一的方式表示数据。 十进制数字11转换为:1011 方法:除二取余法 计算机中表示数据的最小单元,一个字节(Byte,简…...
计算机中数值表示:原码、反码、补码与移码
1 前言 计算机科学中,数字的表示方式至关重要,因为计算机内部只能识别处理二进制数据。为了在计算机中实现对整数的表示,提出了多种数值编码方式,其中最常用的是原码、反码、补码和移码。 2 原码 2.1 原码的定义 原码(Signed …...
1.8 组合模式(Composite Pattern)
定义 组合模式(Composite Pattern) 是一种结构型设计模式,它将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式让客户端可以以相同的方式对待单个对象和对象集合。组合模式使得客户可以统一处理树形结构中的单个对象和对象的集合…...
QFileDialog::getOpenFileName(this,“文件对话框“,“.“,“c++ files(*.cpp);;“); 文件对话框显示乱码
在使用 QFileDialog::getOpenFileName 时,如果文件对话框显示乱码,通常是因为编码问题。Qt 默认使用 UTF-8 编码,但如果你的系统或源代码文件的编码不一致,可能会导致乱码。 以下是几种可能的解决方法: 1. 确保源代码…...
【C语言系列】深入理解指针(5)
深入理解指针(5) 一、sizeof和strlen的对比1.1sizeof1.2strlen1.3sizeof和strlen的对比 二、数组和指针笔试题解析2.1 一维数组2.2 字符数组2.2.1代码1:2.2.2代码2:2.2.3代码3:2.2.4代码4:2.2.5代码5&#…...