【android bluetooth 协议分析 01】【HCI 层介绍 4】【LeSetEventMask命令介绍】
在蓝牙协议栈中,HCI_LE_Set_Event_Mask
是一个主机控制接口(HCI)层的命令,属于 LE(Low Energy)控制指令集。该命令用于 配置控制器向主机报告哪些 LE 事件,以便主机能够根据需求控制被中断的事件种类。
1. 命令简介
-
名称:
HCI_LE_Set_Event_Mask
-
Opcode:
0x2001
(OGF=0x08, OCF=0x0001) -
参数:
- LE_Event_Mask(8 字节):每一位代表一个特定的 LE 事件,设置为
1
表示启用,设置为0
表示禁用。
- LE_Event_Mask(8 字节):每一位代表一个特定的 LE 事件,设置为
-
目的:告知控制器哪些 LE Meta Events 的子事件 需要上报给主机。
3 2025-04-24 15:55:53.349645 host controller HCI_CMD 12 Sent LE Set Event MaskBluetooth HCI Command - LE Set Event MaskCommand Opcode: LE Set Event Mask (0x2001)0010 00.. .... .... = Opcode Group Field: LE Controller Commands (0x08).... ..00 0000 0001 = Opcode Command Field: LE Set Event Mask (0x001)Parameter Total Length: 8LE Event Mask: 0x000000004d02fe7f, LE Request Peer SCA Complete, LE Terminate BIG Complete, LE Create BIG Complete, LE CIS Established, LE Extended Advertising Set Terminated, LE Periodic Advertising Sync Lost, LE Periodic Advertising Repo0000 0000 0000 0000 0000 0000 0000 0... .... .... .... .... .... .... .... .... = Reserved: 0x00000000.... .... .... .... .... .... .... .0.. .... .... .... .... .... .... .... .... = LE Subrate Changed: False.... .... .... .... .... .... .... ..0. .... .... .... .... .... .... .... .... = LE BIGInfo Advertising Report: False.... .... .... .... .... .... .... ...0 .... .... .... .... .... .... .... .... = LE Transmit Power Reporting: False.... .... .... .... .... .... .... .... 0... .... .... .... .... .... .... .... = LE Path Loss Threshold: False.... .... .... .... .... .... .... .... .1.. .... .... .... .... .... .... .... = LE Request Peer SCA Complete: True.... .... .... .... .... .... .... .... ..0. .... .... .... .... .... .... .... = LE BIG Sync Lost: False.... .... .... .... .... .... .... .... ...0 .... .... .... .... .... .... .... = LE BIG Sync Established: False.... .... .... .... .... .... .... .... .... 1... .... .... .... .... .... .... = LE Terminate BIG Complete: True.... .... .... .... .... .... .... .... .... .1.. .... .... .... .... .... .... = LE Create BIG Complete: True.... .... .... .... .... .... .... .... .... ..0. .... .... .... .... .... .... = LE CIS Request: False.... .... .... .... .... .... .... .... .... ...1 .... .... .... .... .... .... = LE CIS Established: True.... .... .... .... .... .... .... .... .... .... 0... .... .... .... .... .... = LE Periodic Advertising Sync Transfer Received: False.... .... .... .... .... .... .... .... .... .... .0.. .... .... .... .... .... = LE CTE Request Failed: False.... .... .... .... .... .... .... .... .... .... ..0. .... .... .... .... .... = LE Connection IQ Report: False.... .... .... .... .... .... .... .... .... .... ...0 .... .... .... .... .... = LE Connectionless IQ Report: False.... .... .... .... .... .... .... .... .... .... .... 0... .... .... .... .... = LE Channel Selection Algorithm: False.... .... .... .... .... .... .... .... .... .... .... .0.. .... .... .... .... = LE Scan Request Received: False.... .... .... .... .... .... .... .... .... .... .... ..1. .... .... .... .... = LE Extended Advertising Set Terminated: True.... .... .... .... .... .... .... .... .... .... .... ...0 .... .... .... .... = LE Extended Scan Timeout: False.... .... .... .... .... .... .... .... .... .... .... .... 1... .... .... .... = LE Periodic Advertising Sync Lost: True.... .... .... .... .... .... .... .... .... .... .... .... .1.. .... .... .... = LE Periodic Advertising Report: True.... .... .... .... .... .... .... .... .... .... .... .... ..1. .... .... .... = LE Periodic Advertising Sync Established: True.... .... .... .... .... .... .... .... .... .... .... .... ...1 .... .... .... = LE Extended Advertising Report: True.... .... .... .... .... .... .... .... .... .... .... .... .... 1... .... .... = LE PHY Update Complete: True.... .... .... .... .... .... .... .... .... .... .... .... .... .1.. .... .... = LE Direct Advertising Report: True.... .... .... .... .... .... .... .... .... .... .... .... .... ..1. .... .... = LE Enhanced Connection Complete: True.... .... .... .... .... .... .... .... .... .... .... .... .... ...0 .... .... = LE Generate DHKey Complete: False.... .... .... .... .... .... .... .... .... .... .... .... .... .... 0... .... = LE Read Local P-256 Public Key Complete: False.... .... .... .... .... .... .... .... .... .... .... .... .... .... .1.. .... = LE Data Length Change: True.... .... .... .... .... .... .... .... .... .... .... .... .... .... ..1. .... = LE Remote Connection Parameter Request: True.... .... .... .... .... .... .... .... .... .... .... .... .... .... ...1 .... = LE Long Term Key Request: True.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 1... = LE Read Remote Features Complete: True.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .1.. = LE Connection Update Complete: True.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ..1. = LE Advertising Report: True.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ...1 = LE Connection Complete: True[Response in frame: 4][Command-Response Delta: 0.601ms]
2. 事件屏蔽机制的意义
蓝牙控制器可能产生大量不同类型的事件,而主机并不一定需要全部处理。为了节省功耗和提高效率,主机通过设置 Event Mask 告诉控制器只报告感兴趣的事件
- 如果事件掩码中某个事件的对应 bit 为
1
,则该事件将被允许生成; - 如果为
0
,则即使发生了该事件,控制器也不会通知主机。
3. LE Event Mask 和 Event Mask 的关系
为了使 LE 事件能被真正上报,必须满足两个条件:
LE Meta Event
的 主事件掩码 在HCI_Set_Event_Mask
中被启用(即第 61 位,bit 61 = 1);- 具体的
LE_Event_Mask
对应事件的位也必须为 1。
✅ 两层控制机制,双重确认:
一层是普通事件掩码
Event_Mask
,控制是否允许 LE Meta Event 事件类型;一层是
LE_Event_Mask
,控制具体哪一类 LE 事件被允许。
4. LE_Event_Mask 各位含义(以 Bluetooth 5.3 为例)
下面是关于 HCI_LE_Set_Event_Mask
命令中 LE_Event_Mask(8字节,共64位) 每一位的详细说明表格。每一位对应一个具体的 LE Subevent(子事件) 类型,用于控制是否启用该事件的上报。此表基于 Bluetooth Core Specification v5.3,并结合其功能和典型应用场景进行了扩展说明。
1. LE_Event_Mask
每一位说明(Bit 0 ~ 34)
Bit | LE Subevent Type | 功能描述 | 应用场景示例 |
---|---|---|---|
0 | LE Connection Complete | 当 LE 连接成功建立时上报 | 建立连接时获取连接句柄和角色等信息 |
1 | LE Advertising Report | 接收到广告包时上报 | 主动扫描周边设备广告,如蓝牙广播扫描器 |
2 | LE Connection Update Complete | LE连接参数更新完成时触发 | 动态调整连接参数以优化功耗/延迟 |
3 | LE Read Remote Features Complete | 读取远程设备的 LE 支持特性完成 | 检测远程是否支持特定功能(如延迟、2M PHY) |
4 | LE Long Term Key Request | 请求主机提供 LTK(用于加密连接) | 加密连接建立过程中,配对时使用 |
5 | LE Remote Connection Parameter Request | 远程设备请求更新连接参数 | 远程要求降低功耗,主机需回应 |
6 | LE Data Length Change | 数据长度更新完成时通知主机 | 动态调整数据包最大长度和时间(DLE) |
7 | LE Read Local P-256 Public Key Complete | 生成本地 P-256 公钥完成 | 用于 LE Secure Connections(安全连接) |
8 | LE Generate DHKey Complete | DH 密钥生成完成(Diffie-Hellman) | 安全连接中生成共享密钥 |
9 | LE Enhanced Connection Complete | 扩展连接建立完成(带扩展广告) | 使用扩展广告进行连接(如蓝牙5+) |
10 | LE Directed Advertising Report | 接收定向广告包时触发 | 精准设备识别,定向唤醒/广播 |
11 | LE PHY Update Complete | PHY层速率(1M/2M/Coded)更新完成时触发 | 动态调整连接速率以提高速率或稳定性 |
12 | LE Extended Advertising Report | 接收到扩展广告包时触发 | 支持更大广告内容、低占空比广播 |
13 | LE Periodic Advertising Sync Established | 周期广播同步建立完成 | 接收周期广播(如蓝牙 AoA 或同步数据传输) |
14 | LE Periodic Advertising Report | 接收周期广播内容时触发 | 设备周期性发送状态、传感器数据等 |
15 | LE Periodic Advertising Sync Lost | 周期广播同步丢失时触发 | 蓝牙广播信号丢失告警等 |
16 | LE Scan Timeout | 扫描超时时触发 | 用于控制扫描持续时间 |
17 | LE Advertising Set Terminated | 广播任务完成或被中止时触发 | 广播任务结束反馈,如定时广播场景 |
18 | LE Scan Request Received | 被动广告设备收到扫描请求时触发 | 主动响应扫描请求的设备,如身份认证 |
19 | LE Channel Selection Algorithm | 当前连接使用的信道选择算法通知 | 用于调试或优化蓝牙干扰问题 |
20 | LE Connectionless IQ Report | AoA/AoD 中 IQ 采样报告(无连接) | 蓝牙方向定位系统(RTLS) |
21 | LE Connection IQ Report | 在连接中收集 IQ 数据 | 精准位置定位、轨迹追踪 |
22 | LE CTE Request Failed | 方向信息请求失败时触发 | AoA/AoD 请求失败时诊断用 |
23 | LE Periodic Advertising Sync Transfer Received | 周期广播同步信息被成功接收 | 广播同步共享场景,如蓝牙中继转发 |
24 | LE CIS Established | LE 音频连接(CIS)建立完成 | 用于 BLE Audio 音频流传输 |
25 | LE CIS Request | 请求建立 CIS 时触发 | BLE Audio 的 stream 建立请求 |
26 | LE Create BIG Complete | 建立 Broadcast Isochronous Group 完成 | 广播音频流同步完成 |
27 | LE Terminate BIG Complete | BIG 广播组终止时触发 | 结束广播音频任务 |
28 | LE BIG Sync Established | BIG 同步完成 | 同步接收 BLE 音频广播 |
29 | LE BIG Sync Lost | BIG 同步丢失 | BLE 广播音频信号中断 |
30 | LE Request Peer SCA Complete | 获取远端 SCA(时钟精度)完成 | 用于判断远端时钟精度,影响同步通信 |
31 | LE Path Loss Threshold | 接收信号路径损耗越过阈值时触发 | 用于测距、离线检测等 |
32 | LE Transmit Power Reporting | 上报当前发射功率 | 动态功率控制场景 |
33 | LE BIGInfo Advertising Report | 接收 BIG 广播信息包 | BIG 广播预览识别 |
34 | LE Subrate Change | Subrate(低占空比)更新完成 | 提升 BLE Audio 低功耗传输性能 |
2. Bit 60~63:保留位
Bit | 类型 | 描述 |
---|---|---|
60~63 | Reserved | 为将来版本保留使用。设置为 1 时控制器应视为 0。 |
5. aosp中使用流程示意
static constexpr uint64_t kDefaultEventMask = 0x3dbfffffffffffff;static constexpr uint64_t kDefaultLeEventMask = 0x000000004d02fe7f;// system/gd/hci/controller.ccstruct Controller::impl {void Start(hci::HciLayer* hci) {
...le_set_event_mask(kDefaultLeEventMask);set_event_mask(kDefaultEventMask);write_le_host_support(Enable::ENABLED, Enable::DISABLED);...
}void le_set_event_mask(uint64_t le_event_mask) {std::unique_ptr<LeSetEventMaskBuilder> packet = LeSetEventMaskBuilder::Create(le_event_mask);hci_->EnqueueCommand(std::move(packet), module_.GetHandler()->BindOnceOn(this, &Controller::impl::check_status<LeSetEventMaskCompleteView>));}
- 在初始化 Controller 模块时, 在 Controller::impl::Start 函数中就会调用 le_set_event_mask 函数去设置
6. 实际应用场景
在典型的 BLE 应用中:
- 如果设备只关心 接收广告包,可以仅启用
LE Advertising Report Event
; - 如果设备需要建立连接并更新参数,可启用
Connection Complete
和Connection Update Complete
; - 若配对需要安全密钥协商,则还需启用密钥生成相关事件。
这样主机只处理需要的事件,减少功耗和不必要的中断。
7. 注意事项
- 控制器会忽略不支持的事件位,即使主机设置为 1。
- LE_Event_Mask 设置不生效的常见原因是
Event_Mask
中未启用LE Meta Event
位。 - 部分位在较早版本的蓝牙控制器中可能不支持。
相关文章:
【android bluetooth 协议分析 01】【HCI 层介绍 4】【LeSetEventMask命令介绍】
在蓝牙协议栈中,HCI_LE_Set_Event_Mask 是一个主机控制接口(HCI)层的命令,属于 LE(Low Energy)控制指令集。该命令用于 配置控制器向主机报告哪些 LE 事件,以便主机能够根据需求控制被中断的事件…...
关于文件分片的介绍和应用
文件分片,顾名思义,就是将一个大文件分割成多个小的文件块(chunk)。每个文件块都是原始文件的一部分,并可以通过特定的方式将这些小文件块重新组装成原始文件。 1. 基本原理: 文件分片从底层来看,主要是对…...
tauri2项目动态添加 Sidecar可行性方案(运行时配置)
tauri2官方文档:Embedding External Binaries | Tauri Tauri 的 Sidecar 功能允许你将外部二进制文件(External Binaries)与你的 Tauri 应用程序捆绑在一起,并在运行时调用它们。根据你提供的链接和 Tauri 的文档,以下…...
20倍云台球机是一种高性能的监控设备
20倍云台球机是一种高性能的监控设备,其主要特点包括20倍光学变焦能力和云台旋转功能。以下是对20倍云台球机的详细分析: 一、主要特点 20倍光学变焦 : 摄像机镜头能够在保持图像清晰度的前提下,将监控目标放大20倍。 这一功能…...
利用html制作简历网页和求职信息网页
前言 大家好,我是maybe。今天下午初步学习了html的基础知识。做了两个小网页,一个网页是简历网页,一个网页是求职信息填写网页。跟大家分享一波~ 说明:我不打算上传图片。所以如果有朋友按照我的代码运行网页,会出现一个没有图片…...
三:操作系统线程管理之线程概念
揭秘幕后英雄:理解线程的奥秘与优势 在当今软件应用的世界里,流畅的用户体验、高效的后台处理以及强大的并发能力已经成为必备的要求。你有没有想过,一个看似简单的程序是如何在同一时间处理多个任务的?或者为什么一个复杂的应用…...
学习黑客Active Directory 入门指南(一)
Active Directory 入门指南(一):初识AD与核心概念 🔑 大家好!欢迎来到 “Active Directory 入门指南” 系列的第一篇。在本系列中,我们将逐步深入探索 Windows Active Directory (AD)——微软推出的目录服…...
单列集合——ArrayList,LinkedList,迭代器的底层原理和源码
ArrayList 底层原理 空参构造创建集合时候,创建长度为零的数组名叫elementData,还有个成员变量size用来记录元素的个数,第一次空参,size长度是0。 添加第一个元素时,底层创建新的长度尾10的数组,数组中默认…...
C++模板进阶使用技巧
非类型模板参数缺省模板参数类模板特化全特化偏特化 模板的分离编译 我们在前面已经初识了 模板并且在各种数据结构的实现中,熟练掌握了模板的一些基础功能。 至于为什么是基础功能,因为模板还有一些进阶的功能,像非类型模板参数,…...
jqGrid冻结列错行问题,将冻结表格(悬浮表格)与 正常表格进行高度同步
在使用jqGrid时,如果你遇到了冻结列(也称为冻结表格或悬浮表格)与正常表格高度不同步的问题,这通常是由于CSS样式或者布局管理不当所导致的。下面是一些解决此问题的步骤和建议: 1. 确保CSS样式正确 首先,确…...
Milvus(25):搜索迭代器、使用分区密钥
1 搜索迭代器 ANN Search 对单次查询可调用的实体数量有最大限制,因此仅使用基本 ANN Search 可能无法满足大规模检索的需求。对于 topK 超过 16,384 的 ANN Search 请求,建议考虑使用 SearchIterator。 1.1 概述 Search 请求返回搜索结果,而…...
深入探索PointNet:点云处理的革命性算法
深入探索PointNet:点云处理的革命性算法 在计算机视觉和三维图形处理领域,点云数据的处理一直是一个极具挑战性的任务。点云数据由一系列三维坐标点组成,这些点通常来源于激光雷达(LiDAR)、三维扫描仪等设备。与图像数…...
四品种交易策略
策略概述 策略思路: 交易品种:同时交易四个品种,每个品种使用总资金的10%。 合约选择:使用连续合约(data0)发出交易信号,实际交易 主力合约(data1)和下一个主力合约(data2)。 资金管理:总资金用A_CurrentEquity表示,交易手数据此计算。 止损执行:盘中达到止损…...
NC61 两数之和【牛客网】
文章目录 零、原题链接一、题目描述二、测试用例三、解题思路3.1 排序双指针3.1 散列 四、参考代码4.1 排序双指针4.2 散列 零、原题链接 NC61 两数之和 一、题目描述 二、测试用例 三、解题思路 3.1 排序双指针 基本思路: 先对序列进行排序,然后…...
电子电路:什么是电流离散性特征?
关于电荷的量子化,即电荷的最小单位是电子的电荷量e。在宏观电路中,由于电子数量极大,电流看起来是连续的。但在微观层面,比如纳米器件或单电子晶体管中,单个电子的移动就会引起可观测的离散电流。 还要提到散粒噪声,这是电流离散性的表现之一。当电流非常小时,例如在二…...
如何完美安装GPU版本的torch、torchvision----解决torch安装慢 无法安装 需要翻墙安装 安装的是GPU版本但无法使用的GPU的错误
声明: 本视频灵感来自b站 如何解决所述问题 如何安装对应版本的torch、torchvison 进入pytorch官网 进入历史版本 这里以cuda11.8 torch 2.1.0为例演示 根据文档找到要安装的torch、torchvison版本 但不是使用命令行直接安装 命令行直接安装可能面临着 安装慢…...
Fine-Tuning Llama2 with LoRA
Fine-Tuning Llama2 with LoRA 1. What is LoRA?2. How does LoRA work?3. Applying LoRA to Llama2 models4. LoRA finetuning recipe in torchtune5. Trading off memory and model performance with LoRAModel ArgumentsReferences https://docs.pytorch.org/torchtune/ma…...
Compose笔记(二十五)--Brush
这一节主要了解一下Compose中Brush,在Jetpack Compose里,Brush是一个重要的 API,它用于定义填充图形的颜色渐变或图案,能够为界面元素添加丰富的视觉效果。简单总结如下: 1 常见场景 填充形状(圆形、矩形等) 创建渐变…...
访问共享打印机提示错误0x00000709多种解决方法(支持win10和win11)
在日常办公和生活中,打印机是不可或缺的重要设备。然而,有时在连接打印机的过程中,我们可能会遇到错误代码0x00000709的提示。有更新补丁导致的、有访问共享打印机服务异常、有访问共享打印机驱动异常等问题导致的,针对访问共享打…...
【Mini 型 http 服务器】—— int get_line(int sock, char *buf, int size);
作用: 逐行读取并返回读取的内容长度,取出读取的内容保存在 buf 数组中 输入: int sock:需要读取的 sock 套接字 char *buf:用于记录保存读取的内容 int size:buf 的大小 返回值: -1 表示 读取…...
Window远程连接Linux桌面版
Window远程连接Linux桌面版 卸载RealVNC Server 一、确认是否安装了 VNC Server 先检查是否已安装: which vncserver # 或 dpkg -l | grep vnc # 或 rpm -qa | grep vnc二、在 Debian / Ubuntu 上卸载(.deb 安装) 1. 卸载 RealVNC Serve…...
计算机系统---TPU(张量处理单元)
一、定义与定位 TPU(Tensor Processing Unit) 是由Google开发的专用AI加速芯片,专为深度学习中的张量运算(如矩阵乘法、卷积)设计,属于ASIC(专用集成电路)范畴。其核心目标是在算力…...
5.18 day24
知识点回顾: 元组可迭代对象os模块 作业:对自己电脑的不同文件夹利用今天学到的知识操作下,理解下os路径。 元组 元组的特点: 有序,可以重复,这一点和列表一样 元组中的元素不能修改,这一点…...
Filament引擎(一) ——渲染框架设计
filament是谷歌开源的一个基于物理渲染(PBR)的轻量级、高性能的实时渲染框架,其框架架构设计并不复杂,后端RHI的设计也比较简单。重点其实在于项目中材质、光照模型背后的方程式和理论,以及对它们的实现。相关的信息,可以参考官方…...
区间带边权并查集,XY4060泄露的测试点
目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 码蹄集 二、解题报告 1、思路分析 关于带边权并查集:并查集&…...
虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系
虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之Pawn与胶囊体的关系1. 什么是Pawn?2. 什么是胶囊体(Capsule Component)?3. Pawn与胶囊体的具体关系(1&#x…...
USB学习【11】STM32 USB初始化过程详解
1.USB HAL库里面的结构体 为了管理USB,HAL首先构建了一下几个结构体 1.1 USBD设备结构体 USB用到的全局变量,保存了USB生命周期的全部信息。 1.2 USBD PCD底层硬件操作相关结构体 1.3 USB 配置结构体 USB速度、PHY接口类型、端点0参数等 1.4 端点配置…...
Estimation(估算):业务分析师的“不确定性对抗术”
在变化中给出最靠谱的预判。 当面对项目排期模糊、资源计划混乱、老板催问“多久能搞定”的时候, 我总会说:“别着急,我们先做个 Estimation。” 因为,没有靠谱的估算,承诺和资源分配就是空中楼阁。 什么是 Estimati…...
【MyBatis-11】MyBatis批处理:提升数据操作性能的利器
1. 批处理概述 在数据密集型应用中,频繁的单条数据操作会导致严重的性能问题。MyBatis批处理技术通过将多个SQL语句组合成一个批处理单元,显著减少与数据库的交互次数,从而大幅提升数据操作效率。 1.1 为什么需要批处理? 减少网…...
MyBatis 核心技术详解:从连接池到多表查询
一、MyBatis 连接池:提升数据库访问效率 1. 连接池的本质与作用 本质:连接池是存储数据库连接的 “容器”,负责创建、管理连接,避免频繁创建 / 销毁连接带来的性能损耗。核心问题:若无连接池,每次执行 SQ…...
2025.05.17得物机考笔试真题第一题
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 魔法浮石逃生记 问题描述 LYA 不慎闯入了一片禁忌湖泊,现在她需要踩着湖中的魔法浮石迅速逃离。湖中有 n n n...
时序数据库、实时数据库与实时数仓:如何为实时数据场景选择最佳解决方案?
随着物联网、金融交易、在线游戏等场景对实时数据处理需求的增长,市场上涌现出多种专门针对实时数据处理的数据库解决方案。然而,面对时序数据库、实时数据库和实时数据仓库这三种看似相似的技术,许多技术决策者常常感到困惑:它们…...
构建一个“湖仓一体”(Data Lakehouse)系统
构建一个“湖仓一体”(Data Lakehouse)系统,关键是融合数据湖(Data Lake)的灵活性与数据仓库(Data Warehouse)的高性能分析能力。下面是构建流程的核心步骤: 一、总体架构设计 分层架…...
【C++】尾置返回类型(Trailing Return Type)总结
尾置返回类型(Trailing Return Type)是 C11 引入的一种函数返回类型声明方式,允许将返回类型放在函数参数列表之后,使用 -> 符号指定。这种语法在模板编程、Lambda 表达式和复杂类型推导时特别有用。 1. 基本语法 auto func(参…...
[人月神话_6] 另外一面 | 一页流程图 | 没有银弹
另外一面(The other face) 计算机程序是人类向机器传递信息的一种方式,为了确保意图能够被无言的机器准确理解,程序采用了严格的语法和精确的定义。(这就需要 我们有严密的逻辑思维) 然而,除了…...
GO学习指南
GO学习指南 主题一 go语言基础知识讲解 go语言面向对象编程 go语言接口详解 go语言协程 后续内容请大家持续关注,每月一主题,让各位读者能零基础、零成本学习go语言...
【机器学习】逻辑回归
文章目录 一、逻辑回归概述1.定义2.原理 二、Sigmoid函数三、梯度上升算法四、实验1.代码2.运行结果3.实验小结 一、逻辑回归概述 1.定义 Logistic回归是一种广义线性回归(generalized linear model),因此与多重线性回归分析有很多相同之处…...
Nginx配置与命令
Nginx 配置文件基础 全局块(Main Context):配置影响全局的参数,如用户、进程数、日志路径等。 user nginx; # 运行Nginx的用户和组 worker_processes auto; # 工作进程数(通常设为CPU核心数&…...
测试--测试分类 (白盒 黑盒 单元 集成)
一、按照测试目标分类(测试目的是什么) 主类别细分说明1. 界面测试UI内容完整性、一致性、准确性、友好性,布局排版合理性,控件可用性等2. 功能测试检查软件功能是否符合需求说明书,常用黑盒方法:边界值、…...
工作流介绍
了解工作流对大模型进行高质量工作的辅助意义学会复现吴恩达博士的翻译工作流开源项目了解构成大模型工作流系统的关键元素学会搭建一个更复杂的业务场景工作流 一、为什么我们需要工作流? ❓ 什么样的职场打工人是合格的打工人? 反应快,理…...
学习黑客Active Directory 入门指南(五)
Active Directory 入门指南(五):管理工具、安全基础与学习路径 🛠️🛡️📚 大家好!欢迎来到 “Active Directory 入门指南” 系列的最后一篇。在前四篇中,我们已经全面探讨了Active…...
【第三篇】 SpringBoot项目中的属性配置
简介 SpringBoot支持多种配置文件格式,包括application.properties、yml和yaml等。本文章将详细介绍这三种配置文件的内容格式和详细用法,以及在程序中如何对配置文件中的属性进行读取。文章内容若存在错误或需改进的地方,欢迎大家指正&#…...
处理金融数据,特别是股票指数数据,以计算和分析RSRS(相对强度指数)
Python脚本,用于处理金融数据,特别是股票指数数据,以计算和分析RSRS(相对强度指数)指标。以下是代码的逐部分解释: 1. **导入库**: - `pandas`:用于数据处理和CSV文件操作。 - `numpy`:用于数值计算。 - `ElasticNet`:来自`sklearn.linear_model`,用于线性…...
C++面试2——C与C++的关系
C与C++的关系及核心区别的解析 一、哲学与编程范式:代码组织的革命 过程式 vs 多范式混合 C语言是过程式编程的典范,以算法流程为中心,强调“怎么做”(How)。例如,实现链表操作需手动管理节点指针和内存。 C++则是多范式语言,支持面向对象(OOP)、泛型编程(模板)、函…...
Linux云计算训练营笔记day10(MySQL数据库)
Linux云计算训练营笔记day10(MySQL数据库) 目录 Linux云计算训练营笔记day10(MySQL数据库)ifnull别名聚合函数group byHAVING 子查询关联查询 ifnull 在DQL语句中可以使用函数或表达式 函数 IFNULL(arg1,arg2) 如果arg1为NULL,函…...
深度解析:AWS NLB 与 ALB 在 EKS 集群中的最佳选择
前言 AWS 提供多种弹性负载均衡器,包括应用程序负载均衡器 (ALB)、网络负载均衡器 (NLB)、网关负载均衡器 (GWLB) 和经典负载均衡器 (CLB)。本文重点介绍 ALB 和 NLB,因为它们是 EKS 集群最相关的选项。 在确定合适的负载均衡器类型时,需要…...
nginx模块使用、过滤器模块以及handler模块
一、如何使用nginx的模块 1.ngx_code.c: #include "ngx_config.h" #include "ngx_conf_file.h" #include "nginx.h" #include "ngx_core.h" #include "ngx_string.h" #include "ngx_palloc.h" #include "n…...
基于PageHelper的分页查询
基于PageHelper的分页查询 ‘PageHelper是基于java的一个开源框架,用于在MyBatis等持久层框架中方便地进行分页查询操作。它提供了一组简单易用的API和拦截器机制,可以帮助开发者快速集成和使用分页功能。 PageHelper的主要功能包括: 分页…...
Linux518 YUM源仓库回顾(需查)ssh 服务配置回顾 特定任务配置回顾
计划配仓库YUM源 为什么我在/soft文件夹下 使用yum install --downloadonly --downloaddir /soft samba 为什么文件夹下看不到samba文件 exiting because “Download Only” specified 计划过 计划配SSH 参考 ok了 计划配置特定任务解决方案 code: 两端先配好网络 测试好s…...
AI 制作游戏美术素材流程分享(程序员方向粗糙版)
AI 制作游戏美术素材分享(程序员方向粗糙版) 视频讲解: 抖音:https://www.douyin.com/user/self?from_tab_namemain&modal_id7505691614690561295&showTabpost Bilibili: https://www.bilibili.com/video/BV1ojJGzZEve/ 写在最前面: 本方法比较粗糙,只对对美术风…...