- 博客(133)
- 收藏
- 关注
原创 揭秘模糊测试:如何用随机数据发现致命漏洞-deepseek
摘要:模糊测试是一种自动化软件测试技术,通过向目标程序输入随机或畸形数据来检测漏洞和缺陷。其核心特点是自动化、随机性,以及能发现内存安全等问题。主要流程包括生成输入、执行程序、监控异常和记录反馈。常见类型有基于生成、变异和覆盖引导的模糊测试,应用于文件解析器、网络协议等领域。主流工具包括AFL、libFuzzer等。优势在于自动化程度高,能发现深层缺陷,但难以触发特定逻辑条件。该技术已成为提升软件安全性的关键方法。
2025-12-22 10:12:07
261
原创 原子变量:并发编程的无锁利器-deepseek
摘要:原子变量是并发编程中实现线程安全的无锁操作机制,通过CAS(比较并交换)指令保证操作的原子性,避免数据竞争。相比传统锁机制,原子变量具有非阻塞、细粒度和高性能优势,适用于计数器、状态标志等场景,但存在ABA问题。主要实现包括Java的AtomicInteger、C++的std::atomic等,是高并发系统的关键组件。
2025-12-10 11:08:44
369
原创 bluez缺失问题
文章摘要:关于bluez缺失问题的分析表明,缺失情况可分为三类:1)与蓝牙无关的代码;2)仅调用蓝牙接口获取返回值的简单代码;3)涉及蓝牙协议栈交互的核心代码。这反映了代码架构中不同层级的职责划分,类似网络协议栈的分层设计理念。类似TCP/IP协议栈中各层独立运作又协同工作,代码中不同模块也应遵循"高内聚低耦合"原则,通过明确定义的接口进行交互,使得模块可以独立开发维护,同时保证系统整体的可靠性和可扩展性。这种分层架构是处理复杂系统设计的有效方法。
2025-12-06 16:53:32
446
原创 蓝牙连接问题记录-deepseek
本文介绍了Socket编程中的常见错误及解决方案,重点分析了EINPROGRESS(115)和ECONNREFUSED(111)两种错误状态。对于EINPROGRESS,文章详细说明了非阻塞socket连接的正常处理流程,包括使用select/poll监控连接状态和设置超时机制。对于ECONNREFUSED,提供了全面的诊断方法,包括服务检查、PSM值验证和设备配对状态确认。文中还包含了L2CAP蓝牙协议的特殊处理方式,解释了PSM值的选择规则,并给出了完整的代码示例。最后,文章总结了系统级的检查和修复方法
2025-12-02 10:26:14
616
原创 手写服务器与手写客户端相连接-qwen
本文介绍了使用C语言和POSIX Sockets API实现TCP服务器与客户端连接的方法。服务器端通过创建监听套接字、绑定地址、监听端口并接受连接请求来建立通信;客户端则创建套接字并连接到服务器地址。双方通过send/recv函数交换数据后关闭连接。示例代码展示了本地测试的基本流程,包括错误处理、消息收发等关键步骤。该实现适用于单客户端场景,如需处理多客户端需引入线程或进程机制。编译运行后,服务器和客户端可在不同终端窗口完成消息交互。
2025-12-01 14:18:14
982
原创 蓝牙L2CAP套接字创建详解
Socket套接字是网络编程的基础单元,用于进程间通信。主要类型包括TCP流套接字(SOCK_STREAM)、UDP数据报套接字(SOCK_DGRAM)和原始套接字(SOCK_RAW)。创建方法因语言而异:Python使用socket.socket(),C语言调用socket()系统调用,参数包括协议族(AF_INET/IPv4)、套接字类型和协议。特殊场景如蓝牙通信使用AF_BLUETOOTH地址族和L2CAP协议。创建套接字后需进行绑定、连接等操作才能实现网络通信功能。
2025-11-25 16:08:03
425
原创 蓝牙编程必知:htobs宏详解-deepseek
htobs是蓝牙开发中用于主机字节序转换的关键宏,功能是将16位短整型从主机字节序转为蓝牙小端字节序(LittleEndian)。该宏确保不同CPU架构的主机系统都能正确转换数据格式,常用于GATT服务发现和特征值读写等操作。类似转换宏还包括htobl(32位)、btohs(反向16位)和btohl(反向32位)。典型应用场景如设置蓝牙句柄值:htobs(0x0001)将0x0001转为蓝牙协议要求的字节序格式。
2025-11-25 09:42:41
393
原创 透传是什么-deepseek
透传(透明传输)是一种不修改、不处理数据,仅原样传递的机制。文章通过管道、传话筒等比喻形象说明其概念,并以Python函数调用为例,对比了非透传方式的繁琐与透传方式的灵活性。使用**kwargs实现参数透传,使中间函数无需了解底层细节,提升了代码解耦性和可维护性。常见应用场景包括装饰器、中间件和继承等,其核心原则是"收到什么就传递什么",这种模式在函数式编程和框架设计中具有重要意义。
2025-11-22 09:16:41
807
原创 bluez接口-之前
摘要:本文分析了BlueZ蓝牙协议栈中服务搜索功能的实现机制。通过bt_search_service()函数发起搜索请求,该函数创建包含源/目标地址、UUID、回调函数等信息的搜索上下文。实现中采用了缓存机制优化SDP会话获取,并通过适配器模式处理本地/远程连接差异。关键点包括:1)使用回调函数处理异步搜索结果;2)通过GLib I/O监视器管理连接状态;3)区分本地(UNIX域套接字)和远程(L2CAP协议)两种连接方式;4)支持非阻塞模式和连接重试机制。整个流程体现了典型的异步I/O编程模式,通过上下文
2025-11-21 14:34:30
523
原创 g_btGattClientCallbacks.writeDescriptorCb = GattcWriteDescriptorCallback;回调追踪总线仓,蓝牙仓,蓝牙栈
define HAL_OP_GATT_CLIENT_WRITE_DESCRIPTOR 0x0f 定义了一个操作码常量,表示GATT客户端写入描述符操作。WRITE_CHARACTERISTIC_DESCRIPTOR-事件,写描述符。
2025-11-21 09:36:50
726
原创 GATT客户端回调函数全解析
本文介绍了GATT客户端回调函数的结构体定义及其各个成员函数的功能。这些回调函数用于处理GATT客户端在蓝牙通信中的各种事件,包括连接状态改变、参数更新、服务发现完成、特征值读写、描述符操作、MTU大小配置和通知处理等。每个回调函数都接收客户端ID和状态参数,部分还包含特定的事件数据。这些回调机制为开发者提供了完整的GATT客户端事件处理框架,支持蓝牙设备间的可靠通信。
2025-11-19 14:00:54
374
原创 static函数作用域解析
静态函数是C/C++中通过static关键字修饰的函数,具有内部链接属性,只能在定义它的文件内部调用。这种特性可以有效限制函数作用域,避免命名冲突,并实现信息隐藏。合理使用静态函数能提升代码的模块化、安全性和可维护性。与外部链接函数相比,静态函数不能被其他文件引用,因此适合用于文件内部的辅助函数或工具函数,同时减少全局命名空间的污染。
2025-11-19 09:15:18
775
原创 掌握蓝牙调试:hcitool与gatttool全解析-deepseek
摘要:hcitool和gatttool是Linux下常用的蓝牙调试工具。hcitool(v5.64)提供底层HCI控制,支持设备发现(inq/scan/lescan)、连接管理(cc/dc/lecc)和信号监控(rssi/lq)。gatttool专注于GATT层操作,用于BLE服务发现(primary)、特征值读写(char-read-write)和通知处理,支持交互模式(-I)。注意gatttool已过时,建议改用bluetoothctl。使用需注意:操作需root权限,现代BLE设备多使用随机地址(-t
2025-11-18 15:41:21
718
原创 蓝牙远程代理模板函数解析-deepseek
摘要:GetRemoteProxy是一个模板函数,用于获取蓝牙Profile远程代理对象。该函数通过BluetoothProfileManager单例获取指定名称的远程对象,并使用iface_cast转换为目标接口类型。采用智能指针sptr管理对象生命周期,确保类型安全和资源管理。设计优势包括类型检查、代码复用和自动内存管理,但需改进错误处理、性能优化和线程安全性。该函数在OHOS蓝牙架构中充当应用层与远程服务之间的桥梁,封装了跨进程通信细节,统一了不同Profile的访问方式。
2025-11-17 19:40:23
470
原创 交叉编译-deepseek
摘要:交叉编译指在一个平台(宿主机)上编译生成能在另一个不同平台(目标机)上运行的代码的过程。主要应用于嵌入式系统等性能受限设备开发,优势包括提高编译效率、解决目标机资源不足问题。关键是需要针对目标平台的CPU架构、操作系统等配置专门的交叉编译工具链。典型场景如用x86电脑为ARM架构的树莓派开发程序。相比本地编译,交叉编译虽然配置复杂,但能显著提升开发效率,是嵌入式开发和跨平台应用的重要技术基础。(149字)
2025-11-17 19:37:30
1378
原创 #define 的用法-deepseek
本文详细解析了C/C++中#define宏定义在参数检查与错误处理中的应用。通过多层宏定义实现了一套简洁高效的参数验证机制:1. 外层CONN_CHECK_AND_RETURN_RET_LOGE宏封装了蓝牙连接模块的专用检查逻辑;2. 内层CHECK_AND_RETURN_RET_LOG_INNER宏提供通用的条件检查、日志记录和错误返回功能。这种设计具有参数校验统一、错误信息详细、代码复用性强等特点,特别适用于系统API的参数验证场景。代码采用do...while(0)结构保证宏安全性,并通过##__VA
2025-11-15 10:18:17
893
原创 声明函数与定义函数的区别,详解-deepseek
C++中函数声明与定义的区别 函数声明仅提供函数签名(返回类型、函数名和参数列表),不包含实现代码,可多次出现。函数定义则包含完整的函数体实现,只能定义一次。声明让编译器知晓函数存在以进行调用检查,定义则提供具体功能实现。通过函数声明可以实现模块化编程和解决循环依赖问题,通常将声明放在头文件中,定义放在源文件中。正确的声明与定义关系是构建良好C++程序结构的基础。
2025-11-15 10:01:16
850
原创 解决蓝牙demo文件编译错误
摘要:在构建ShareKit项目时遇到两个主要问题:1) libtoolize因文件冲突拒绝覆盖错误,解决方法是在构建脚本中为autogen.sh添加--force选项或跳过已生成configure的步骤;2) 链接时出现蓝牙相关函数未定义错误,需在Makefile的链接命令中添加-lbluetooth选项。建议修改build_thirdparty.sh脚本和Makefile文件,前者跳过不必要的autogen.sh执行或添加强制覆盖选项,后者确保正确链接蓝牙库。同时需处理Makefile中重复规则的问题,
2025-11-12 16:46:38
765
原创 Edge浏览器历史记录不显示?一招解决
摘要:解决Edge浏览器不显示历史记录问题的方法:1)修改保存时间范围:设置-Internet选项-常规-历史记录;2)彻底重置:删除%localappdata%\Microsoft\Edge下的UserData文件夹,需先通过任务管理器关闭所有Edge进程;3)若遇进程卡死可重启电脑。操作前建议备份收藏夹重要数据。(98字)
2025-11-12 09:54:49
646
原创 autoreconf -fiv一键搞定GNU构建系统配置
摘要:autoreconf -fiv是GNU Autotools系统中用于重建配置文件的常用命令,包含三个主要参数:-f强制重新生成所有文件,-i安装缺失的辅助文件,-v显示详细输出。该命令通常用于处理包含configure.ac或Makefile.am的项目,执行后会生成configure脚本和Makefile.in文件。使用前需确保已安装autoconf、automake等工具,后续还需执行./configure和make等标准构建步骤。
2025-11-12 09:37:41
351
原创 c++基础结构体学习-deepseek
本文详细介绍了C++中结构体的两种初始化方式:顺序初始化和指定初始化。顺序初始化按成员声明顺序赋值,而C++20引入的指定初始化允许通过成员名显式赋值,提高代码可读性。文章通过示例展示了两种方式的语法差异,比较了它们的灵活性、可读性等特性,并指出指定初始化在复杂结构体和配置参数场景中的优势。同时强调C++20中指定初始化必须遵循声明顺序,不能与非指定初始化混合使用。文章建议在大型项目中优先使用指定初始化以提升代码可维护性。
2025-11-11 16:09:30
803
原创 软总线客户端初始化详解-第一个
摘要: InitSoftbusAdapterClient函数用于初始化软总线适配器客户端,主要完成三项工作:1)创建两个链表(g_softBusGattcManager和g_btAddrs)管理GATT客户端和蓝牙地址;2)初始化线程同步机制,包括互斥锁(g_clientSendSignal.sendCondLock)和条件变量(g_clientSendSignal.sendCond)来确保多线程安全;3)注册9个GATT客户端事件回调函数。采用严格的错误处理机制,任一环节失败都会按创建相反顺序释放已分配资
2025-11-10 15:59:50
634
原创 高并发-deepseek
摘要:高并发系统优化遵循"分、缓、异、削、护"原则,通过分布式架构、缓存技术、异步处理等方式应对挑战。核心解决方案包括:1)架构层面采用集群负载均衡和微服务拆分;2)数据层运用Redis缓存、读写分离和分库分表;3)处理流程引入消息队列实现异步削峰;4)系统保护机制使用限流降级策略。以电商大促为例,通过微服务拆分、缓存预热、RocketMQ削峰和数据库分片,成功支撑10万QPS的订单处理。优化需遵循业务导向、重点突破瓶颈、保证用户体验(99分位响应时间<200ms)等原则。
2025-11-10 09:46:48
315
原创 套接字-deepseek
摘要:套接字(Socket)是网络通信的核心概念,作为通信端点实现程序间的数据交换。主要分为网络套接字(跨机器)和本地套接字(进程间通信),按协议分为TCP(可靠)和UDP(快速)两种。工作流程包括创建、绑定/连接、数据传输和关闭。套接字使用文件描述符操作,支持阻塞/非阻塞模式,是网络编程的基础抽象和现代分布式系统的基石。在蓝牙等系统服务中常使用UNIX域套接字实现本地进程通信。
2025-11-08 10:30:03
350
原创 SDP会话-deepseek
摘要:SDP会话是蓝牙服务发现协议(SDP)的核心机制,用于设备间的服务交互。通过建立sdp_session_t连接,可实现服务浏览、属性查询和UUID搜索功能。典型应用包括创建会话、发送搜索请求和处理响应,支持发现A2DP、HFP等服务。由于连接开销较大,代码中通常缓存SDP会话以提高性能。该协议使蓝牙设备能动态发现并利用对等设备提供的各类服务功能。(148字)
2025-11-08 09:58:10
305
原创 API源码分析实战指南
本文分析了OpenHarmony中蓝牙GATT客户端API的实现路径。从软总线层的SoftbusGattcConnect开始,通过调用链依次追踪到蓝牙框架层的BleGattcConnect和服务层的GattClientService实现。其中涉及跨进程通信(Binder调用)和核心连接逻辑在服务进程中完成。文章详细展示了回调函数的注册流程,包括状态变更、服务发现、特征值读写等11种回调类型。同时指出部分API(如BleGattcRegister)仅做本地记录而不涉及协议栈调用,而像SoftbusGattcR
2025-11-05 20:53:16
851
原创 解决OpenHarmony6.0的Python环境问题
摘要:在配置OpenHarmony-v6.0-Release时遇到"python: No such file or directory"错误,系统实际安装的是python3。解决方案包括创建python符号链接(ln -s python3 python)、修改repo脚本的Python解释器路径为python3,或检查Python版本是否满足3.7+要求。这些方法可解决repo工具与Python版本不匹配的问题。(149字)
2025-11-04 14:48:56
629
原创 Ubuntu安装pip3的三种方法
本文介绍了在Ubuntu系统中安装pip的三种方法:1)直接安装python3-pip;2)检查Python版本后安装对应pip;3)使用get-pip.py脚本安装。安装后可通过pip3 --version验证,若找不到pip命令可创建符号链接。注意事项包括:通常使用pip3而非pip、确保系统已更新、特定Python版本需安装对应pip。三种方法均可有效安装pip,其中第一种方法最为推荐。
2025-11-04 14:25:47
321
原创 UBUNTU之中ifconfig没有出来ip
摘要:用户通过ifconfig命令发现虚拟机网络接口ens33未分配IP地址。在执行"sudo ip link set ens33 up"启用网卡和"sudo dhclient ens33"获取DHCP地址后成功配置IP 192.168.214.133。虽然出现"Address already assigned"错误提示,但经检查确认该IP已正确分配,属于非致命警告,通常可忽略。建议进一步测试网络连通性,并指出手动使用dhclient在某些情况下可
2025-11-03 15:52:45
994
原创 安装ninja-deepseek
本文介绍了Ninja构建工具的安装与基本使用方式。针对不同操作系统提供了详细的安装指南,包括Linux(Ubuntu/Debian/Fedora)、macOS(Homebrew)和Windows(包管理器/二进制文件)的安装方法。同时介绍了通用源码编译安装流程。安装验证部分说明了如何检查版本号确认安装成功。文章还介绍了Ninja的基本工作流程,包括如何与CMake等构建系统配合使用,以及并行构建、清理构建产物等实用命令技巧。最后提到了Ninja的依赖关系可视化功能。
2025-11-03 14:55:08
483
原创 安装llvm-deepseek
LLVM是一个模块化开源编译器工具链。安装方法:Ubuntu/Debian使用sudo apt install llvm clang,RHEL使用sudo yum/dnf install llvm-toolset,macOS可下载预编译包或通过Homebrew安装,Windows(MSYS2)可用pacman -S mingw-w64-x86_64-llvm。也可从源码编译:克隆仓库后使用CMake配置编译。安装后可通过llvm-config --version验证,使用Clang编译程序测试功能。注意安装
2025-11-03 14:54:06
871
原创 APT升级命令全攻略
摘要:本文介绍了Linux系统中使用apt工具升级软件包的标准流程。主要包括两个基本步骤:sudo apt update(更新软件包列表)和sudo apt upgrade(升级所有可用的软件包)。文章还介绍了进阶操作如full-upgrade智能处理依赖关系、查看可升级项目、升级特定软件包等技巧。重点区分了apt upgrade(仅更新软件包,不改变系统版本)和do-release-upgrade(用于系统大版本升级)的区别,强调apt upgrade是安全的日常维护操作,推荐定期执行以保持系统安全和稳定
2025-11-03 14:45:55
1042
原创 Samgr启动
摘要:OpenHarmony的samgr(系统服务管理器)启动过程分为三个阶段:1)服务注册阶段,通过SYS_INIT宏注册系统核心服务;2)功能注册阶段,为每个服务添加功能特性;3)初始化与运行阶段,通过SAMGR_Bootstrap()启动所有服务。samgr作为服务注册中心管理服务生命周期,其启动模式因系统类型(轻量/标准)而异。了解启动流程和关键词(如SAMGR_Bootstrap、CheckSystemAbility等)有助于系统调试和服务开发。
2025-11-03 10:30:27
1200
原创 build.gn规则-deepseek
GN(Generate Ninja)构建系统是Chromium等项目使用的现代构建工具,通过声明式的build.gn文件定义构建目标、依赖关系和编译选项。主要特性包括:支持多种目标类型(可执行文件、静态/动态库等)、模块化配置管理、跨平台条件编译以及自定义构建规则。GN采用类Python语法,通过targets、deps、configs等核心概念实现高效的项目构建,最终生成Ninja构建文件。其优势在于清晰的模块化设计、自动依赖管理和高效的并行构建能力。
2025-10-31 17:27:53
917
原创 编译问题,Swap没有足够的空余空间
内存不足 + Swap 耗尽➕ 增加 Swap(至少 8GB)并行编译太多🔽 限制-j1或-j2环境配置不足🖥️ 长期建议升级到 32GB 内存请先执行增加 Swap + 使用-j1,这能解决 95% 的-9编译失败问题。
2025-10-30 09:55:34
648
原创 打补丁记录-deepseek
摘要:本文详细介绍了在Linux系统中使用patch工具应用补丁的方法。关键步骤包括:1) 使用-p参数正确剥离路径前缀,建议先尝试-p1或-p4;2) 提供标准补丁操作流程(生成/应用/撤销);3) 针对具体示例给出两种应用方式(-p0在根目录或-p1进入子目录);4) 强调最佳实践如先用--dry-run测试、注意路径层级匹配等。特别说明了如何根据补丁文件头信息选择合适-p参数,并提供了撤销补丁和错误排查的方法。
2025-10-29 17:10:35
551
原创 打补丁过程的失败,修改了脚本,让补丁得以打进去
摘要:该OpenHarmony补丁管理脚本实现了产品构建过程中的补丁应用功能。脚本通过Patch类管理补丁流程,包含三个核心方法:1) patch_make作为入口函数,支持正向/反向补丁操作;2) patch_apply实际执行补丁命令,自动处理路径转换和错误检测;3) patch_cache_update管理补丁缓存和回滚。脚本采用YAML配置格式,支持分层补丁管理(产品补丁和公共补丁),并包含严格的安全验证机制。代码分析发现补丁回滚逻辑存在缺陷(缺少-R参数),建议修正为patch -R -p1。典型
2025-10-29 15:28:16
636
原创 问题记录-10.27
编译报错分析及解决方案 摘要:本文记录了OpenHarmony编译过程中出现的报错解决过程。主要问题是ninja编译系统报错,提示缺少vsscanf_s.c文件(预期路径:../../device/soc/hisilicon/honghu/sdk_linux/vendor/platform/secure_c/source/vsscanf_s.c)。经查发现该文件实际存在于三个不同位置。尝试了三种解决方案: 创建符号链接(推荐方案) 直接复制文件 检查编译配置 最终采用复制文件方式,但编译仍失败。后续通过回退
2025-10-29 14:55:49
544
原创 软件出错?回滚补丁来救场
回滚补丁是用于撤销问题更新的紧急补救措施,可将系统恢复到更新前的稳定状态。其核心价值在于快速恢复业务、减少损失并保障用户体验,尤其适用于关键系统或服务中断场景。技术实现包括文件替换、事务回滚或系统快照还原等方式。不同于常规补丁或系统还原,回滚补丁专门针对特定更新进行精准回退,常见于操作系统、手机固件和游戏更新等场景,体现了现代软件工程的风险管控能力。
2025-10-29 09:35:26
792
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅