当前位置: 首页 > news >正文

Android 蓝牙开发调试总结

Android 蓝牙开发调试总结

文章目录

  • Android 蓝牙开发调试总结
    • 一、前言
    • 二、蓝牙开发
      • 1、开关和连接控制
      • 2、相关日志
      • 3、相关广播
      • 4、demo示例
    • 三、其他
      • 1、Android 蓝牙开发调试小结
      • 2、Android14 蓝牙启动流程
      • 3、Android14 蓝牙 BluetoothService 启动和相关代码介绍
      • 4、Android13 蓝牙协议属性配置详解
      • 5、Android13 原生设置应用蓝牙配对代码分析研究
      • 6、Android 蓝牙相关广播介绍
      • 7、Android9 查看连接多个蓝牙耳机查看使用中的蓝牙耳机
      • 8、Android13 不能静态注册的几个广播

一、前言

如果开发蓝牙相关功能,必须先掌握基本api知识和相关广播的监听;

蓝牙用的功能基本都是系统签名权限的系统应用,比如Settings;

本简单介绍蓝牙开发基本知识,有兴趣的可以看看。

二、蓝牙开发

1、开关和连接控制

//BluetoothAdapter 的获取
BluetoothAdapter bluetoothAdapter= BluetoothAdapter.getDefaultAdapter();
//蓝牙状态:
boolean isBluetoothEnable = bluetoothAdapter.enable();
//开启蓝牙
bluetoothAdapter.enable();
//关闭蓝牙
bluetoothAdapter.disable();//已保存的蓝牙列表
Set<BluetoothDevice> bondedDevices = bluetoothAdapter.getBondedDevices();
// BluetoothDevice 是Android原生的蓝牙对象,但是实现方法比较少;
Settings 基本使用的是SettingsLib的 LocalBluetoothManager 进行蓝牙操作管理。SettingsLib 的蓝牙封装接口:
//获取蓝牙列表
LocalBluetoothManager mLocalManager = LocalBluetoothManager.getInstance(context, mOnInitCallback);;
mLocalManager.getCachedDeviceManager().clearNonBondedDevices();//清除扫描列表
Collection<CachedBluetoothDevice> cachedDevices = mLocalManager.getCachedDeviceManager().getCachedDevicesCopy();//获取扫描列表//蓝牙单个对象 CachedBluetoothDevice
protected final CachedBluetoothDevice mCachedDevice;
mCachedDevice.isConnected() //蓝牙是否连接//1、未连接的情况,配对+连接
boolean isParing = mCachedDevice.startPairing();
//2、已连接的情况,断开连接,进入保存状态
mCachedDevice.disconnect();
//3、断开连接,进入保存状态的情况,重新连接
mCachedDevice.connect();
//4、连接/保存状态,忘记设备
mCachedDevice.unpair(); 

2、相关日志

蓝牙关键字都是:bluetooth
上层关键字:BluetoothManagerService、BluetoothActive、BluetoothA2dp
底层相关日志:bt日志过滤示例:
logcat | grep -iE "bluetooth|bt"
logcat | grep -iE "BluetoothManagerService|BluetoothActive|BluetoothA2dp"
logcat | grep -iE "BluetoothManagerService|BluetoothActive|BluetoothA2dp|bluetooth|bt"

日志示例:

logcat | grep -iE "BluetoothManagerService、BluetoothActive、BluetoothA2dp"
04-26 16:21:49.423   821  1116 D BluetoothManagerService: enable(com.skg.settings):  mBluetooth =null mBinding = false mState = OFF //打开蓝牙,显示应用包名
04-26 16:21:49.424   821   993 D BluetoothManagerService: MESSAGE_ENABLE(0): mBluetooth = null
04-26 16:21:49.424   821   993 D BluetoothManagerService: Persisting Bluetooth Setting: 1
04-26 16:21:49.425   821  1116 D BluetoothManagerService: enable returning
04-26 16:21:49.427   821   993 D BluetoothManagerService: binding Bluetooth service
04-26 16:21:49.723  7615  7615 D BluetoothActiveDeviceManager: start()
04-26 16:21:49.748   821   993 D BluetoothManagerService: MESSAGE_BLUETOOTH_STATE_CHANGE: OFF > BLE_TURNING_ON
04-26 16:21:49.748   821   993 D BluetoothManagerService: Sending BLE State Change: OFF > BLE_TURNING_ON //正在打开
04-26 16:21:51.376   821   821 D BluetoothManagerService: Bluetooth Adapter address changed to 22:22:D6:E8:2E:D0
04-26 16:21:51.401   821   993 D BluetoothManagerService: Sending State Change: OFF > TURNING_ON
04-26 16:21:51.407  7615  7649 D BluetoothActiveDeviceManager: handleMessage(MESSAGE_ADAPTER_ACTION_STATE_CHANGED): newState=11
04-26 16:21:51.418  7615  7615 I BluetoothA2dpServiceJni: classInitNative: succeeds
04-26 16:21:51.621   821   993 D BluetoothManagerService: MESSAGE_BLUETOOTH_STATE_CHANGE: TURNING_ON > ON
04-26 16:21:51.648  1831  4939 D BluetoothA2dp: Binding service...
04-26 16:21:51.657   821   993 D BluetoothManagerService: Sending BLE State Change: TURNING_ON > ON
04-26 16:21:51.659   821   993 D BluetoothManagerService: Sending State Change: TURNING_ON > ON //打开完成

上面日志的主要相关过程都是 BluetoothManagerService 中进行打印,蓝牙打开完成大概需要2秒左右。

不同方案和不同硬件处理的时间可能是有差异的。

3、相关广播

BluetoothAdapter.ACTION_STATE_CHANGED //蓝牙开启、关闭
BluetoothAdapter.ACTION_SCAN_MODE_CHANGED //蓝牙扫描模式变化,是否可被搜索和连接
BluetoothDevice.ACTION_PAIRING_REQUEST //配对请求
BluetoothDevice.ACTION_PAIRING_CANCEL //配对取消
BluetoothDevice.ACTION_BOND_STATE_CHANGED //配对状态变化
BluetoothDevice.ACTION_ACL_CONNECTED //连接变化
BluetoothDevice.ACTION_ACL_DISCONNECTED //断开变化
BluetoothDevice.ACTION_FOUND //Intent 的BluetoothDevice 对象,包含设备的基本信息(名称、MAC 地址、RSSI 信号强度等)
BluetoothAdapter.ACTION_DISCOVERY_STARTED //开始扫描设备
BluetoothAdapter.ACTION_DISCOVERY_FINISHED //扫描设备结束
BluetoothAdapter.ACTION_DISCOVERY_STARTED //蓝牙可见性开始
BluetoothAdapter.ACTION_DISCOVERY_FINISHED //蓝牙可见性结束

蓝牙广播比较多,并不是所有广播都用到,根据实际情况使用就行;

需要注意的是,蓝牙的广播有一部分只能动态注册,静态注册无效。

4、demo示例

在这里插入图片描述

能简单扫描到蓝牙列表和进行连接忘记;查看基本状态;

点开“其他”,显示其他功能:

在这里插入图片描述

蓝牙demo说明:

1、demo逻辑处理比较简单,有一定的bug,后期可以根据需求优化;
2、蓝牙很多逻辑判断使用SettingsLib的一套逻辑会方便很多;上面demo使用的是原生的接口方法;
3、本来想做两个Activity的,一个原生的,一个调用SettingsLib实现基本功能;
4、原生部分开发了一些,SettingsLib调用的方式基本没做,有需求的自己试试,
原生Settings很多接口就是调用的SettingsLib的api;

三、其他

1、Android 蓝牙开发调试小结

(1)蓝牙开发如果使用原生接口,很多状态无法判断,比如列表中某个蓝牙是否在连接状态无法判断;
(2)蓝牙开发如果使用SettingsLib封装的接口,会方便很多,比如获取的列表可以判断是否保存、连接状态;

2、Android14 蓝牙启动流程

主要流程:

1、应用端 --> BluetoothAdapter.enable();
2、BluetoothAdapter.java --> mManagerService.enable(mAttributionSource);
3、BluetoothManagerService.java -->  doBind AdapterService
4、AdapterService.java --> enableNative();
5、com_android_bluetooth_btservice_AdapterService.cpp 执行对应的native方法

详细介绍:

https://blog.csdn.net/wenzhi20102321/article/details/142422355

3、Android14 蓝牙 BluetoothService 启动和相关代码介绍

蓝牙开关和使能开发主要用到:BluetoothService、BluetoothManagerService、BluetoothManager、BluetoothAdapter 这几个系统相关类。
某个蓝牙的配对、连接、断开 使用的是 BluetoothDevice 对象。

蓝牙开关状态不记忆或者打开异常就可以看看BluetoothManagerService的日志,
里面有打开关闭相关过程日志和时间点,这个对问题分析有一定的帮助。

详细介绍:

https://blog.csdn.net/wenzhi20102321/article/details/142264944

4、Android13 蓝牙协议属性配置详解

Android系统中蓝牙协议是否使能一般是通过一个属性值,如果这个属性值设置为false,

会导致这个协议的服务未启动,也就是说这个蓝牙功能会没有作用。

比如 Android 蓝牙传输文件协议是opp,如果opp未使能,那么整个系统是不支持蓝牙文件传输的;

还有a2dp是声音相关的协议。

在Android13之前的版本,我们可以通过 config.xml 中的 profile_supported_a2dp 属性控制蓝牙的某个协议是否使能;

Android13 以及更新的版本蓝牙协议使用prop属性使能属:

https://blog.csdn.net/wenzhi20102321/article/details/139703045

5、Android13 原生设置应用蓝牙配对代码分析研究

每个Android 版本的Settings对蓝牙处理的逻辑都有一些差异,可以对比看看谷歌进行了哪些优化。

有些中性的设置是从旧代码移植过来的,在新版本上会有些bug,可以参考原生设置解决。

Android13 原生Settings 中蓝牙连接的相关代码分析:

https://blog.csdn.net/wenzhi20102321/article/details/131648367

6、Android 蓝牙相关广播介绍

蓝牙app中的广播接收器onReceive 的蓝牙相关广播

蓝牙相关广播主要包括:蓝牙开关,蓝牙连接,蓝牙状态改变,蓝牙配对等等等等。

https://blog.csdn.net/wenzhi20102321/article/details/134956116

7、Android9 查看连接多个蓝牙耳机查看使用中的蓝牙耳机

Android 9.0之后,支持一台手机可以同时连接多个蓝牙设备。

但是判断那个蓝牙设备是使用中,需要经过一些复杂判断才知道:

https://blog.csdn.net/wenzhi20102321/article/details/133715403

8、Android13 不能静态注册的几个广播

介绍一些广播相关的知识,主要是静态广播注册无效的介绍 :

https://blog.csdn.net/wenzhi20102321/article/details/134956090

蓝牙有些广播只能动态注册才能监听到。

相关文章:

Android 蓝牙开发调试总结

Android 蓝牙开发调试总结 文章目录 Android 蓝牙开发调试总结一、前言二、蓝牙开发1、开关和连接控制2、相关日志3、相关广播4、demo示例 三、其他1、Android 蓝牙开发调试小结2、Android14 蓝牙启动流程3、Android14 蓝牙 BluetoothService 启动和相关代码介绍4、Android13 蓝…...

混淆矩阵(Confusion Matrix)

混淆矩阵&#xff08;Confusion Matrix&#xff09;是一个用于评估分类模型性能的工具&#xff0c;特别是在机器学习和统计学领域。它展示了模型预测结果与实际结果之间的关系。混淆矩阵通常用于二分类或多分类问题中&#xff0c;但也可以扩展到更多类别的情况。 一、混淆矩阵…...

C语言——操作符

一.操作符的分类 算术操作符&#xff1a; - * / %移位操作符&#xff1a;<< >>位操作符: & | ^赋值操作符: - * / % > & | ^单⽬操作符&#xff1a; &#xff01; -- & * - ~ sizeof …...

大数据处理利器:Hadoop 入门指南

一、Hadoop 是什么&#xff1f;—— 分布式计算的基石 在大数据时代&#xff0c;处理海量数据需要强大的技术支撑&#xff0c;Hadoop 应运而生。Apache Hadoop 是一个开源的分布式计算框架&#xff0c;致力于为大规模数据集提供可靠、可扩展的分布式处理能力。其核心设计理念是…...

追踪大型语言模型的思想(上)(来自针对Claude的分析)

概述 像 Claude 这样的语言模型并非由人类直接编程&#xff0c;而是通过大量数据进行训练。在训练过程中&#xff0c;它们会学习解决问题的策略。这些策略被编码在模型为每个单词执行的数十亿次计算中。对于我们这些模型开发者来说&#xff0c;这些策略是难以捉摸的。这意…...

系统 Python 与 Conda 环境的灵活切换

在现代 Python 开发中,经常需要在系统 Python 和 Conda 环境中的 Python 之间切换。无论是处理不同项目的依赖冲突,还是测试代码在不同 Python 版本下的兼容性,灵活切换 Python 环境都是开发者的必备技能。本文将详细介绍如何实现 Python 环境的灵活切换,并提供 Conda 命令…...

【HTTP】《HTTP 全原理解析:从请求到响应的奇妙之旅》

文章目录 一、HTTP 协议1.1、HTTP 是什么1.2、理解 "应用层协议"1.3、理解 HTTP 协议的工作过程1.4、HTTP协议格式1.5、协议格式总结 二、HTTP 请求1.1、认识 URL1.1.1、URL 基本格式1.1.2、关于 URL encode 1.2、认识 "方法"1.2.1 、GET 方法1.2.2、 POST…...

重生之我在2024学Fine-tuning

一、Fine-tuning&#xff08;微调&#xff09;概述 Fine-tuning&#xff08;微调&#xff09;是机器学习和深度学习中的一个重要概念&#xff0c;特别是在预训练模型的应用上。它指的是在模型已经通过大量数据训练得到一个通用的预训练模型后&#xff0c;再针对特定的任务或数据…...

若依前后端分离项目中可以删除哪些原若依有的?

在若依&#xff08;RuoYi&#xff09;前后端分离项目中完成二次开发后&#xff0c;可以删除以下未使用的模块和文件以简化项目结构。以下分模块和风险点说明&#xff1a; --- ### **一、后端&#xff08;Spring Boot&#xff09;可删除内容** #### 1. **未使用的功能模块** …...

element-plus中,vue3项目,el-input密码框禁止浏览器自动弹出浏览器历史密码提示框

原代码&#xff08;密码框是text框&#xff09;&#xff1a; <el-form-item label"用户名" :label-width"formLabelWidth" v-if"!localOrhuawei" prop"userName"><el-input v-model"formDialog.userName" />&l…...

二叉树的遍历与构造

唉&#xff0c;好想回家&#xff0c;我想回家跟馒头酱玩&#xff0c;想老爸老妈。如果上天再给我一次选择的机会&#xff0c;我会选择当一只小动物&#xff0c;或者当棵大树也好&#xff0c;或者我希望自己不要有那么多多余的情绪&#xff0c;不要太被别人影响&#xff0c;开心…...

「Mac畅玩AIGC与多模态23」开发篇19 - Markdown 富文本输出工作流示例

一、概述 本篇基于格式化文本整合的经验&#xff0c;进一步介绍如何通过 LLM 输出标准 Markdown 内容&#xff0c;并在前端正确渲染出标题、列表、加粗等富文本格式&#xff0c;提升展示效果与内容结构可读性。 二、环境准备 macOS 系统Dify 平台已部署并可访问 三、在 Dif…...

记录学习《手动学习深度学习》这本书的笔记(十)

因为最近在做《语音与语言理解综合处理》的实验&#xff0c;所以打算先看第14章&#xff1a;自然语言处理&#xff1a;预训练和第15章&#xff1a;自然语言处理&#xff1a;应用&#xff0c;之后再来看第13章&#xff1a;计算机视觉。 第十四章&#xff1a;自然语言处理&#…...

Flowable7.x学习笔记(二十一)查看我的发起

前言 “查看我的发起”功能&#xff0c;就是将当前用户作为流程发起人启动的所有流程实例集中展示&#xff0c;帮助用户随时跟踪自己提交的业务请求的状态与历史&#xff0c;提升透明度与可控性。 业务人员通常不知道流程引擎底层如何运转&#xff0c;只关心“我提交的报销/申请…...

【Bootstrap V4系列】学习入门教程之 组件-折叠(Collapse)

Bootstrap V4系列 学习入门教程之 组件-折叠&#xff08;Collapse&#xff09; 折叠&#xff08;Collapse&#xff09;How it works一、Example二、Horizontal 水平的三、Multiple targets 多个目标四、Accordion example 手风琴示例 折叠&#xff08;Collapse&#xff09; 通…...

ROS1和ROS2使用桥接工具通信

前提&#xff1a;主从机在同一局域网内&#xff0c;可以互相ping通 我的两个设备其中一个无法连接wifi,ubuntu老生常谈的问题.....&#xff0c;获得新的技能&#xff1a;手机蓝牙提供网络&#xff0c;两个设备连接手机蓝牙就可以连接网络并且处于同一个局域网内。 我的主机为…...

尤雨溪宣布:Vue 生态正式引入 AI

在前端开发领域,Vue 框架一直以其易用性和灵活性受到广大开发者的喜爱。 而如今,Vue 生态在人工智能(AI)领域的应用上又迈出了重要的一步。 尤雨溪近日宣布,Vue、Vite 和 Rolldown 的文档网站均已添加了llms.txt文件,这一举措旨在让大型语言模型(LLM)更方便地理解这些…...

分布式id的两大门派!时钟回拨问题的解决方案!

2.1 两大门派 目前业界的分布式ID实现路径归结起来有两派&#xff1a;一派以雪花算法为代表&#xff0c;不强依赖DB能力&#xff0c;只使用分布式节点自身信息&#xff08;时间戳节点ID序列号&#xff09;的编码生成唯一序列&#xff0c;好处是去中心化、无单点风险&#xff1…...

QMK键盘固件配置详解

QMK键盘固件配置详解 前言 大家好&#xff01;今天给大家带来QMK键盘固件配置的详细指南。如果你正在DIY机械键盘或者想要给自己的键盘刷固件&#xff0c;这篇文章绝对不容错过。QMK是目前最流行的开源键盘固件框架之一&#xff0c;它允许我们对键盘进行高度自定义。接下来&a…...

Jenkins 服务器上安装 Git

安装 Git # 更新包列表 sudo apt update# 安装 Git sudo apt install git 验证安装 # 检查 Git 版本 git --version 查看所有全局配置 git config --global --list 查看特定配置项 # 查看用户名配置 git config --global user.name# 查看邮箱配置 git config --global u…...

自由浮动时间和总浮动时间对比

一、自由浮动时间的定义 在项目进度管理中&#xff0c;自由浮动时间&#xff08;Free Float&#xff09;是指在不推迟项目后续任务最早开始时间的前提下&#xff0c;一个任务能够延迟的时间长度。它是针对单个任务而言的&#xff0c;主要考虑该任务与其紧后任务之间的关系。 …...

2025.05.07-华为机考第二题200分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 02. 社区智能安防系统设计 问题描述 随着智慧社区建设的发展,LYA小区需要设计一套高效的安防监控系统。该小区布局可以用一棵二叉树来表示,树的每个节点代表一户居民家庭。 为了…...

分布式架构详解

一、分布式架构的概念与设计目标 1. 基本概念 分布式架构&#xff08;Distributed Architecture&#xff09;是分布式计算技术的应用和工具,指将一个复杂系统拆分为多个独立的组件&#xff08;或服务&#xff09;&#xff0c;并将这些组件部署在不同物理节点&#xff08;服务…...

码蹄集——平方根X、整除幸运数

目录 MT1075 平方根X MT1078 整除幸运数 MT1075 平方根X 知识点&#xff1a; 上取整&#xff1a;ceil&#xff1b;下取整&#xff1a;floor&#xff1b;四舍五入&#xff1a;round 判断是否为完全平方数的方法&#xff1a;利用sqrt函数结果为double&#xff0c;将其结果相乘&a…...

【MATLAB源码-第277期】基于matlab的AF中继系统仿真,AF和直传误码率对比、不同中继位置误码率对比、信道容量、中继功率分配以及终端概率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 在AF&#xff08;放大转发&#xff09;中继通信系统中&#xff0c;信号的传输质量和效率受到多个因素的影响&#xff0c;理解这些因素对于系统的优化至关重要。AF中继通信的基本架构由发射端、中继节点和接收端组成。发射端负…...

ACE-Step - 20秒生成4分钟完整歌曲,音乐界的Stable Diffusion,支持50系显卡 本地一键整合包下载

ACE-Step 是由ACE Studio与StepFun联合开发的音乐生成模型&#xff0c;被誉为“音乐界的Stable Diffusion”。该模型以其惊人的生成速度和多样化功能引发行业热议&#xff0c;支持19种语言&#xff0c;可在短短20秒内生成一首长达4分钟的完整音乐作品&#xff0c;效率比主流模型…...

007 Linux 开发工具(上)—— vim、解放sudo、gc+

&#x1f984; 个人主页: 小米里的大麦-CSDN博客 &#x1f38f; 所属专栏: Linux_小米里的大麦的博客-CSDN博客 &#x1f381; GitHub主页: 小米里的大麦的 GitHub ⚙️ 操作环境: Visual Studio 2022 文章目录 Linux 开发工具&#xff08;上&#xff09;Linux 编辑器 —— vim…...

React学习路线图-Gemini版

前端开发学习路线图 (针对编程新手&#xff0c;主攻 React 框架) 总原则&#xff1a;先打好地基&#xff0c;再盖楼。 无论学习哪个框架&#xff0c;扎实的 HTML、CSS 和 JavaScript 基础是成功的关键。React 是基于 JavaScript 构建的&#xff0c;所以深入理解 JS 至关重要。…...

注意力(Attention)机制详解(附代码)

Attention机制是深度学习中的一种技术&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;和计算机视觉领域中得到了广泛的应用。它的核心思想是模仿人类的注意力机制&#xff0c;即人类在处理信息时会集中注意力在某些关键部分上&#xff0c;而忽略其他不那么重要的…...

国内外Agent产品进展汇总

MCP&#xff08;Model Context Protocol&#xff09;是一个开放标准协议&#xff0c;旨在标准化应用程序向大型语言模型提供上下文信息的方式。通过集成MCP扩展&#xff0c;Agent可以访问和利用各种外部工具和服务&#xff0c;丰富了Agent的功能范围&#xff0c;使其能够执行更…...

AI Workflow

AI Workflow&#xff08;人工智能工作流&#xff09;指的是在构建、部署和管理AI模型与应用时所涉及的一系列步骤和流程。它将数据处理、模型训练、评估、部署及监控等环节有机结合起来&#xff0c;以实现高效、可重复的AI解决方案开发过程。以下是对AI Workflow核心组成部分及…...

MySQL OCP 认证限时免费活动​ 7 月 31 日 前截止!!!

为庆祝 MySQL 数据库发布 30 周年&#xff0c;Oracle 官方推出限时福利&#xff1a;2025 年 4 月 20 日至 7 月 31 日期间&#xff0c;所有人均可免费报考 MySQL OCP&#xff08;Oracle Certified Professional&#xff09;认证考试。该认证验证持证者在 MySQL 数据库管理、优化…...

【无标题】MPC软件

MPC软件是一款先进的多变量预测控制解决方案 专为复杂工业过程优化设计 **核心功能** 实时动态建模 多变量协调控制 滚动时域优化 自适应调整策略 干扰抑制 鲁棒性强 适用于时变系统 **技术优势** 基于模型预测算法 提前计算最优控制序列 处理输入输出约束 保障系…...

【EasyPan】loadDataList方法及checkRootFilePid方法解析

【EasyPan】项目常见问题解答&#xff08;自用&持续更新中…&#xff09;汇总版 一、loadDataList方法概览 /*** 文件列表加载接口* param session HTTP会话对象* param shareId 必须参数&#xff0c;分享ID&#xff08;使用VerifyParam进行非空校验&#xff09;* param …...

Java程序题案例分析

目录 一、基础语法 1. 类与对象 2. 接口与抽象类 二、面向对象语法 1. 继承与多态 2. 四种访问修饰符 三、设计模式相关语法 一、策略模式&#xff08;接口回调实现&#xff09; 1. 完整实现与解析 二、工厂模式&#xff08;静态工厂方法实现&#xff09; 1. 完整实…...

【Lanqiao】数位翻转

题目&#xff1a; 思路&#xff1a; 写蓝桥不能不写dp&#xff0c;就像.... 题目数据给的不大&#xff0c;所以我们可以考虑一种 n*m 的做法&#xff0c;那么对于这种题目可以想到的是用dp来写&#xff0c;但是如何构造转移方程与状态是个难事 由于这题对于任意一个数我们有两…...

基于QT(C++)实现(图形界面)校园导览系统

校园导览系统 一、任务描述 大学校园充满着忙忙碌碌的学生和老师们&#xff0c;但是有时候用户宝贵的时间会被复杂的道路和愈来愈多的建筑物的阻碍而浪费&#xff0c;为了不让同学们在自己的目的地的寻路过程中花费更多的时间&#xff0c;我们着手开发这样一款校园导览系统。…...

【C/C++】虚函数

&#x1f4d8; C 虚函数详解&#xff08;Virtual Function&#xff09; &#x1f4cc; 什么是虚函数&#xff1f; 虚函数&#xff08;Virtual Function&#xff09; 是 C 中实现运行时多态&#xff08;Runtime Polymorphism&#xff09; 的核心机制。 它允许派生类 重写&…...

no main manifest attribute, in xxx.jar

1、问题&#xff1a; Spring Boot项目在idea中可以正常运行&#xff0c;但是运行Spring Boot生成的jar包&#xff0c;报错&#xff1a; 1、no main manifest attribute, in xxx.jar 2、xxx.jar中没有主清单属性 2、解决办法&#xff1a; 删除pom.xml中<configuration&g…...

使用 AI 如何高效解析视频内容?生成思维导图或分时段概括总结

一、前言 AI 发展的如此迅速&#xff0c;有人想通过 AI 提效对视频的解析&#xff0c;怎么做呢&#xff1f; 豆包里面有 AI 视频总结的功能&#xff0c;可以解析bilibili网站上部分视频&#xff0c;如下图所示&#xff1a; 但有的视频解析时提示&#xff1a; 所以呢&#x…...

比较入站和出站防火墙规则

组织需要仔细配置防火墙规则&#xff0c;监控网络的传入和传出流量&#xff0c;从而最大限度降低遭受攻击的风险。在有效管理入站和出站防火墙规则前&#xff0c;了解入站与出站流量的区别至关重要。 一、什么是入站流量&#xff1f; 入站流量指的是并非源自网络内部&#xf…...

开放式耳机什么品牌的好用?性价比高的开放式耳机品牌推荐一下

这几年蓝牙耳机发展得很快&#xff0c;从最早的入耳式&#xff0c;到现在流行的开放式&#xff0c;选择越来越多。我自己是比较偏向佩戴舒适的类型&#xff0c;用过开放式之后就回不去了。它不堵耳、不压迫&#xff0c;戴着轻松不累&#xff0c;对我这种耳朵容易不适的人来说太…...

WPF之高级绑定技术

文章目录 引言多重绑定&#xff08;MultiBinding&#xff09;基本概念实现自定义IMultiValueConverterMultiBinding在XAML中的应用示例使用StringFormat简化MultiBinding 优先级绑定&#xff08;PriorityBinding&#xff09;基本概念PriorityBinding示例实现PriorityBinding的后…...

k8s高可用集群,自动化更新证书脚本

#!/bin/bash # 切换到证书目录 cd /etc/kubernetes/pki || exit # 备份原有证书&#xff08;重要&#xff01;&#xff09; sudo cp -r apiserver.crt apiserver.key \ apiserver-etcd-client.crt apiserver-etcd-client.key \ apiserver-kubelet-client…...

【Python 函数】

Python 中的函数&#xff08;Function&#xff09;是可重复使用的代码块&#xff0c;用于封装特定功能并提高代码复用性。以下是函数的核心知识点&#xff1a; 一、基础语法 1. 定义函数 def greet(name):"""打印问候语""" # 文档字符串&…...

Filecoin矿工资金管理指南:使用lotus-shed actor withdraw工具

Filecoin矿工资金管理指南&#xff1a;使用lotus-shed actor withdraw工具 引言lotus-shed actor withdraw命令概述命令语法参数选项详解常见使用场景1. 提取全部可用余额2. 提取指定数量的FIL3. 通过受益人地址发送交易 最佳实践资金安全管理操作流程优化 常见问题与解决方案提…...

AI辅助DevOps与自动化测试:重构软件工程效率边界

随着AI技术渗透至软件开发生命周期&#xff0c;DevOps与自动化测试领域正经历颠覆性变革。本文系统性解析AI在需求分析、测试用例生成、部署决策、异常检测等环节的技术实现路径&#xff0c;结合微软Azure DevOps、Tesla自动驾驶测试等典型场景&#xff0c;探讨AI如何突破传统效…...

css内容省略——text-overflow: ellipsis

title: css内容省略 date: 2025-05-07 19:41:17 tags: css text-overflow: ellipsis text-overflow: ellipsis用于在文本溢出容器时显示省略号(…) 1.单行省略 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"&g…...

nginx性能优化与深度监控

一、性能调优方向 1. 系统层面优化 内核参数调整 TCP队列与连接管理&#xff1a; net.core.somaxconn&#xff08;最大连接队列长度&#xff0c;建议设为65535&#xff09;net.ipv4.tcp_max_syn_backlog&#xff08;SYN队列长度&#xff0c;建议65535&#xff09;net.ipv4.tc…...

leetcode 70.爬楼梯(c++详细最全解法+补充知识)

目录 题目 解答过程 补充哈希表知识 哈希表基本特性 常用成员函数 基本用法 实现代码 1.递归 2.循环遍历 3.哈希表 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#…...