- 博客(231)
- 资源 (27)
- 收藏
- 关注
原创 【Linux/Ubuntu】OpenCode +Oh My OpenAgent安装配置实践
OpenCode配置,Oh My OpenCode配置,Oh My OpenAgent配置指导
2026-03-29 13:22:39
4944
原创 【usb】windows usb驱动框架简介
本文介绍了Windows系统的USB主机端架构,重点解析了三个关键模块:1) USB通用类泛型父驱动程序(Usbccgp.sys),负责管理复合设备并为每个功能创建PDO;2) WinUSB(Winusb.sys),微软提供的通用USB驱动程序,支持内核模式和用户模式交互;3) USB客户端驱动程序,在复合和非复合设备中具有不同的堆栈位置。这些模块共同构成了Windows系统的USB驱动架构,支持设备管理和数据传输功能。
2025-09-26 20:51:22
570
原创 7【鸿蒙/OpenHarmony/NDK】N-API 中 napi_create_async_work 与 napi_call_threadsafe_function 的区别
本文对比了N-API两种异步处理方式:napi_create_async_work适用于一次性耗时的libuv线程池任务,采用"执行-完成"单向模式;而napi_call_threadsafe_function支持自定义线程多次安全调用JS函数,适合持续线程间通信。文章通过表格对比核心差异,详解各自工作流程,并给出选择建议:单次任务用前者,频繁通信选后者,二者也可结合使用。文末提供鸿蒙NDK开发系列教程链接,涵盖环境搭建到接口开发全流程。
2025-09-26 20:48:31
891
原创 6【鸿蒙/OpenHarmony/NDK】多线程调用 JS 总崩溃?用 napi_create_threadsafe_function 搞定线程安全交互
文章摘要: 鸿蒙NDK开发中,napi_create_threadsafe_function是解决非JS线程调用JS函数的关键方案。本文通过实战代码解析其核心用法:1)创建线程安全函数代理,避免线程竞争;2)在异步任务中安全触发JS回调;3)处理跨线程数据同步。典型场景包括后台计算回调、全局数据同步和多线程任务调度。提供完整代码示例,涵盖上下文管理、异步任务创建、线程安全调用及结果回传,帮助开发者规避内存错乱和线程阻塞问题。
2025-09-14 18:15:57
941
2
原创 5【鸿蒙/OpenHarmony/NDK】应用太卡?用 Node-API 异步任务解决:从卡顿根源到流畅方案
鸿蒙NDK异步处理开发指南 本文聚焦鸿蒙NDK开发中的异步处理技术,解析核心概念、应用场景与避坑要点。异步处理通过避免主线程阻塞,保障应用流畅性,适用于文件操作、网络请求等耗时场景。文章结合Node-API开发规范,强调四个关键避坑点: execute回调禁止使用JS环境变量; complete回调仅做结果转换,避免耗时操作; 动态内存需严格遵循申请-传递-释放流程; 异步任务删除须在complete回调后执行。 附官方文档与系列教程链接,帮助开发者系统掌握NDK异步编程。
2025-09-14 17:39:53
1176
原创 4【鸿蒙/OpenHarmony/NDK】如何在鸿蒙Navite C++样例代码中新增一个js接口?
摘要: 本文详细介绍了在鸿蒙应用中使用NDK实现字符串拼接功能的完整流程。首先在Index.d.ts声明JS接口ConcatenateString,通过Dev Eco自动生成C++模板后,重点解析了NAPI_Global_ConcatenateString的实现细节,包括参数校验、内存管理及字符串操作。最后在ETS页面验证接口功能,成功输出拼接结果。文章强调严格的类型检查和错误处理,并提供了Node.js N-API参考文档链接,帮助开发者深入理解底层机制。
2025-09-07 20:56:09
1102
原创 3【鸿蒙/OpenHarmony/NDK】如何在鸿蒙应用中使用NDK?
本文详细解析了鸿蒙NDK开发中如何实现JavaScript与C++的交互。首先介绍了在ETS代码中通过import testNapi from 'libentry.so'引入NDK模块,并通过配置文件使IDE能自动识别模块方法。重点剖析了C++侧的实现:1)使用napi_module_register注册模块;2)在Init函数中绑定JS方法与C++实现;3)通过napi_get_cb_info等NAPI接口处理参数传递和类型转换。文中以加法函数为例,完整演示了从JS调用到C++实现、参数解析和结果返回的全
2025-08-31 22:22:52
1311
原创 2【鸿蒙/OpenHarmony/NDK】什么是NDK? 为啥要用NDK?
什么是NDK,为什么要用NDK?适合使用NDK的场景:应用涉及如下场景时,适合采用NDK开发性能敏感的场景,如游戏、物理模拟等计算密集型场景。需要复用已有C或C++库的场景。需要针对CPU特性进行专项定制库的场景,如Neon加速。不建议使用NDK的场景:应用涉及如下场景时,不建议采用NDK开发纯C或C++的应用。希望在尽可能多的HarmonyOS设备上保持兼容的应用。
2025-08-10 21:57:52
469
原创 1【鸿蒙/OpenHarmony/NDK】C/C++开发教程之环境搭建
本文介绍了如何在鸿蒙系统上使用C/C++开发应用的实操指南。核心内容为:1)确认鸿蒙应用支持C/C++核心逻辑开发,但界面需用ArkTS;2)详细指导DevEco Studio安装及NDK工程创建,强调选择Native C++模板;3)提供真机运行和签名配置的关键操作截图;4)说明成功运行的验证标准(显示"Hello World"及日志输出)。文章采用"问题-解决"结构,配合图文指引开发者快速上手NDK开发,并鼓励读者在评论区交流优化建议。全文突出实操性,将官方文档要
2025-08-10 21:34:24
1944
原创 【Rust】字符串String类型学习
使用String::from方法创建字符串,.更新String使用push_str和push追加字符串方法不会改变字符串的所有权使用+操作符或者 format!宏连接字符串Rust不允许使用下标访问字符串里面的单个字符
2024-07-10 22:54:26
974
原创 【Rust】function和methed的区别
function和methed很多都是相通的。不同点在于,methed定义在结构体里面,并且它的第一个参数肯定是self,代表结构体实例。
2024-06-23 18:09:45
765
原创 【usb】linux内核USB键盘驱动解析--普通键值上报及转化
在kbd->old中保存了上次报上来的键值,kbd->new中是本次报上来的键值。如果上次报了某键值,但是本次没报,说明该按键被释放了,所以上报案件旧释放事件。如果上次没有报某按键而这次报了,说明该按键是这次被按下了,所以要上报按键按下事件。
2023-04-02 16:03:08
1313
原创 【usb】linux内核USB键盘驱动解析--LED灯的控制
通过事先准备好urb,然后在里面需要时,直接修改leds数据,然后将该urb发送即可。
2023-04-02 14:38:52
2096
2
原创 【usb】linux内核USB键盘驱动解析--特殊键值转化及上报
总结一下,117和118行的这个for循环,通过依次查看new[0]元素的各个位,确定该位对应的键是否被按下。并将该键值转化为输入子系统定义的键值,后上报给输入子系统。
2023-03-26 20:05:20
1556
原创 【USB】windows热插拔通知接口分析
window提供了方法,可以用来监听设备的热插拔事件。hRecipient,表示用来接收通知的窗口或者服务。NotificationFilter,过滤器,用来过滤设备通知。Flags,用来说明hRecipient是个窗口还是服务。通知必须绑定到窗口或者服务,也就是说在监听之前,你必须先创建一个窗口或者服务。其基本结构为,具体结构根据字段值的不同而不同,typedef struct _DEV_BROADCAST_HDR {
2023-02-26 11:31:47
1916
原创 【usb】winusb 接口设计分析
对应USB协议里面的标准接口描述符。通过该参数我们可以知道,接口有多少个端点。对于控制传输和等时传输,winusb分别提供了传输接口。。对于批量传输和中断传输,则统一使用一套接口。。上述接口都通过Overlapped机制来控制同步传输或者异步传输。可以通过修改管道策略,个性化的控制管道的行为。除了上述接口,winusb也提供了各种请求,可以灵活使用。比如可以获取接口的所有端点信息等。
2023-02-23 11:28:47
1438
原创 【USB】USB video class (UVC)相关概念学习
标准的视频控制接口描述符,和USB标准接口描述符一样,如下,UVC的配置描述符和标准USB设备的配置描述符是一致的。字段协议和示例有差异。
2023-01-31 17:10:45
2097
原创 【OpenHarmony】napi基本用法之promise实现
promise是javascript语言中的一个对象,其可以表示一个异步操作的成功或者失败。promise的优势是链式调用,在过去,要想做多重的异步操作,会导致经典的回调地狱。有了promise的链式调用,就可以把回调绑定到返回的 Promise 上,形成一个 Promise 链。console . log('初始化');throw new Error('有哪里不对了');console . log('执行「这个」”');console . log('执行「那个」');
2022-11-07 21:39:43
1962
原创 【OpenHarmony】napi基本用法----HelloWorld
【代码】【OpenHarmony】napi基本用法----HelloWorld。
2022-10-04 20:49:44
1518
原创 【OpenHarmony】napi基础知识学习
Node.js N-API 是为构建原生插件提供的稳定接口,与JavaScript运行时隔离,确保兼容性。其特点包括:通过状态码返回调用结果、使用出参传递返回值、将JS值抽象为napi_value等。开发时需C/C++工具链,推荐使用node-gyp或CMake.js构建。为方便分发,可使用node-pre-gyp等工具上传预编译二进制文件。N-API提供C语言接口,另有node-addon-api封装C++版本。该API设计确保底层JS引擎更新时无需重新编译插件。
2022-10-04 17:22:43
2031
原创 【OpenHarmony】系统应用权限管控与签名
底层由BundleMgr提供了判断是否是三方应用的能力。上层是否是系统应用取决于签名时的字段,如果是则为普通应用,是则为系统应用。
2022-09-15 21:51:14
3973
8
原创 【OpenHarmony】usb gadget 配置hdc功能cfg文件解读
OpenHarmony configfs 配置usb gadget的hdc功能。cfg文件解读
2022-06-19 22:42:54
2642
3
原创 【linux】windows terminal配置远程linux环境自动登录
一、实现ssh脚本自动登陆目的通过windows terminal实现自动登陆云端机器。做法需要windows安装了wslwsl安装了expect将如下内容,保存为"autossh.ssh",放在wsl的路径下/home/wuchw/private/autossh.sh注意里面的wuchengwen 192.168.1.1 及22改成自己的账户、IP及端口号给予可执行权限chmod +x autossh.sh#!/usr/bin/expect -fspawn ssh w
2022-05-17 10:35:16
2990
原创 【wsl2】常用命令及ext4硬盘扩展与压缩
首先扩展硬盘微软官方这篇文章写的很详细,我就不在赘述了:扩展 WSL 2 虚拟硬盘的大小压缩硬盘首先说一下使用场景。比如我想要下载一套aosp的代码,首先我从国内镜像站点,下载一个压缩包,包含了所有aosp代码。压缩包大小181G。完了我再把这个压缩包解压,解压的时候发现wsl2的磁盘太小了,解压失败,所以就扩展磁盘大小到512G.解压完成,删除压缩包,wsl剩余的空间很大,但是物理机剩余硬盘空间太少了。所以我要释放部分wsl硬盘。压缩操作如下:首先在wsl里面执行fstri..
2022-05-15 12:37:31
3368
2
原创 【usb】安卓usb网络共享(RNDIS)
一、RNDIS简介微软官方对RNDIS的介绍说白了,就是将安卓设备作为一个网卡,通过USB连接到电脑上,供电脑上网。二、使用指导首先为了验证电脑上网确实走的是usb。先把你电脑上的网卡及网线拔了,wifi关了。并且确保此时电脑无法上网。然后把手机通过USB线连接到电脑上,在手机的设置里面搜索USB,找到类似USB共享网络,并打开开关。然后电脑就可以正常上网啦,试下看看能否打开百度。三、补充说明我们在讨论RNDIS,但是上述使用指导里面好像没有看到RNDIS的字眼呀,这是咋回事?
2022-04-09 14:39:37
36356
7
原创 【usb】USB Core功能解析(一)-------linux那些事儿之我是usb
文章目录一、drivers/usb目录结构一、drivers/usb目录结构usb目录下包含如下目录和文件:atm cdns3 class core dwc3 gadget image Kconfig misc mtu3 phy roles storage usbipc67x00 chipidea common dwc2 early host isp1760 Makefile mon musb ren
2022-04-04 19:11:43
3502
原创 【OpenHarmony】make_shared和make_unique失败时总会抛异常,和是否禁用异常无关
一、背景在项目代码里面有很多这种判断:handler_ = std::make_shared<UsbServerEventHandler>(eventRunner_, pms);if (handler_ == nullptr) { USB_HILOGE(MODULE_USB_SERVICE, "Init failed due to create handler error"); return false;}对此不同人有不同看法:有些人认为应该判空,防止后面使
2022-03-29 20:01:34
5494
原创 【usb】usb协议历史发展介绍-------linux那些事儿之我是usb
一、简介USB来自于intel,同时IBM,微软,等企业也参与的标准的建设。在历史发展中,USB为什么能够存活到现在?相比于串口,并口等,其最大的特点是:速度快,扩展能力强,易用性高。USB2.0最快达到480MB/s,USB3.0最快达到4.8GB/s。USB的各个版本都是兼容的。linux在2.6.31版本的内核中对USB3.0进行了支持。USB支持多功能的设备,也就是说一个设备可以同时有多个功能。这是通过在一个设备中包含多个接口,每个借口支持一个功能,来实现的。USB可以支持多
2022-03-26 22:39:31
1436
原创 【OpenHarmony】ohos_shared_library默认关闭了异常机制no-exceptions
文章目录一、背景二、探索1、BUILD.gn2、usbmgr.gni3、ohos.gni4、cxx.gni5、BUILDCONFIG.gn三、总结一、背景发现usb_manager仓下,usb_service.cpp文件里面,有些地方使用了make_shared方法来创建堆内存。并在后面通过判断指针是否为空,来判断内存是否申请成功,如下:handler_ = std::make_shared<UsbServerEventHandler>(eventRunner_, pms);if (
2022-03-19 11:34:42
11135
1
最详细最牛逼cmake英文版教程,没有之一
2020-08-09
UML和模式应用(第3版)英文版
2019-02-24
软工原理与实践影印版第四版英文版课后答案-第4版-Shari Lawrence Pfleeger
2018-11-22
图像平移,缩放,旋转,偏移(vs2017+opecv)
2018-10-21
IEEE Standard for a Software Quality Metrics Methodology
2019-04-12
有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
2018-11-22
linux多线程程序实验,用不同线程完成一个矩阵乘法,以及子进程计算斐波那契数列,父进程输出结果
2018-05-07
直方图均衡
2018-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅