• [应用推荐] API实名认证接口服务之身份证系列
    最新消息,身份实名认证系列即将全行业大涨价,建议客户提前囤货购买;1、实名认证,身份证二要素,身份证二要素验证是基于官方授权的官方数据接口,通过“姓名”和“身份证号码”信息比对,实现不同应用场景下实时准确的用户身份是否一致。各行业领域均可适用。2、运营商三要素-全国三网手机号码实名认证,输入姓名、身份证号码、手机号码验证三要素信息是否一致,返回验证结果。支持三网,运营商实名认证证接口,零缓存,可靠校验验证。适用于多种行业领域。3、身份人脸三要素-人脸身份证三要素核验,经用户授权后输入姓名、身份证号码和用户人脸图片,核验姓名和身份证号码,人脸图片与 数据源身份证头像进行比对,核验信息是否一致;更多产品欢迎查看~深圳隆飞洋科技有限公司
  • [其他] 【术语科普】关于集成工作台那些难懂的词儿,看这篇秒懂!
    关于华为云开天集成工作台,有很多疑问?什么是流?什么是工作流、业务流、集成流?什么是流处理、流编排……这么多问号,头都要大了?!别急,往下看,关于流程模式那些难懂的词儿,在这儿全搞懂!流程(Process)流程图(Flowchart)1.流程(基本流程)图,又称程序框图,是算法、工作流或流程的一种框图表示,它以不同类型的框代表不同种类的步骤,每两个步骤之间则以箭头连接。2.流程图大都有2种符号:①步骤,通常称作“活动”,常以长方形来表示;②决定,常以钻石形来表示。控制流程(Control Flow)1.控制流程(也称为流程控制)是电脑运算领域的用语,意指在程序执行时,个别的指令(或是陈述、子程序)执行或求值的顺序。2.编程语言所提供的流程控制指令一般可以分为以下几种:继续执行位在不同位置的一段指令(无条件分支指令)。若特定条件成立时,执行一段指令,例如C语言的switch指令,是一种有条件分支指令。执行一段指令若干次,直到特定条件成立为止,例如C语言的for指令,仍然可视为一种有条件分支指令。执行位在不同位置的一段指令,但完成后会继续执行原来要执行的指令,包括子程序、协程(coroutine)及计算续体(continuation)。停止程序,不执行任何指令(无条件的终止)。控制流图(Control Flow Chart)利用数学中图的表示方式,标示计算机程序执行过程中所经过的所有路径。控制流图中的每个顶点都对应一个程式基本块,也就是一段没有分支指令、也没有分支目的的程式码,基本块的开始是分支目的,而基本块会以分支为结束。控制流程中会用有向边来表示分支。 工作流(Workflow)工作流是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。工作流建模,即将工作流程中的工作如何前后组织在一起的逻辑和规则,在计算机中以恰当的模型表达并对其实施计算。工作流要解决的主要问题是:为实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。A workflow consists of an orchestrated and repeatable pattern of activity, enabled by the systematic organization of resources into processes that transform materials, provide services, or process information. It can be depicted as a sequence of operations, the work of a person or group, the work of an organization of staff, or one or more simple or complex mechanisms.业务流程(Business Process)“一系列结构化的、可度量的活动,设计它的目标是为特定客户或市场产生规定的输出。”“一种活动的集合,具有一种或多种输入和确定的输出,这些输出对客户产生价值。”“业务过程是为产生产品或服务而设计的一系列步骤。多数的过程(……)跨越职能,贯穿组织机构图上矩形之间的空白。一些过程的结果是由组织外的客户所接受的产品或服务,称为主要过程;另一些过程的产出不为外部客户所见,但是有效管理所必须的,称为支持过程。”“互相连接的活动集合,它们将输入转换为输出。理想情况下,在过程中发生的转换将为输入增加价值,并形成对接受者更有效用的输出,无论接受者处于上游还下游。”可界定性:必须清晰地定义其边界、输入和输出。顺序:构成过程的活动,必须在时间和空间里具有确定的顺序。客户:过程的结果必须有接收者——客户。增值:在过程中发生的转换必须为接收者增加价值,无论接收者是在过程的上游还是下游。嵌入性:过程不能自己单独存在,它必定嵌入在组织结构中。跨越职能:过程通常但非必须跨越多个职能。“业务过程”的意义更一般化,学术讨论中使用较多;“业务流程”的意义更具体,更倾向于指称具体的活动与任务的流,使用上更大众化。业务流程模型和标记法(BPMN, Business Process Model and Notation)最初由业务流程管理倡议组织(BPMI, Business Process Management Initiative)开发,名称为"Business Process Modeling Notation",即“业务流程建模标记法”。BPMI于2005年与对象管理组织(OMG, Object Management Group)合并。2011年1月OMG发布2.0版本,同时改为现在的名称。BPMN的目标是,通过提供一套既符合业务人员直观又能表现复杂流程语义的标记法,同时为技术人员和业务人员从事业务流程管理提供支持。四种基本要素:流对象(Flow Object): 事件(Events),活动(Activities),网关(Gateways)连接对象(Connecting Objects): 顺序流(Sequence Flow),消息流(Message Flow),关联(Association)泳道(Swimlanes): 池(Pool),道(Lane)器物(Artifacts/Artefacts): 数据对象(Data Object),组(Group),注释(Annotation)数据流、数据流程图(Data Flow Diagram)1.      数据流或数据流程是一种软件范式,该范式的主要思想是把处理过程划分为可并行执行的子阶段(流水线),数据流又可以称为流处理(Stream Process)或反应式编程(Reactive Programming)。2.      数据流图或数据流程图。数据流图是描述系统中数据流程的一种图形工具,它标志了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。3.      数据流图不是传统的流程图,数据流也不是控制流。数据流图是从数据的角度来描述一个系统。数据流程编程(Dataflow Programming)数据流程编程是一种编程范式,它将程序建模为数据在运算(Operation)之间流动的有向图,从而实现了数据流程原理和架构。数据流程编程语言,共享了纯函数式语言的某些特征,比如单赋值,并且开发它们的动因,通常是为了向更适合数值处理的语言,增加函数式编程概念。传统上,程序被建模为,按照特定次序发生的一系列运算;这称为指令式编程,这种编程方式也叫做顺序式、过程式、控制流程(意指程序选择某个特定路径)。程序聚焦于命令,符合于冯·诺伊曼的顺序式编程愿景,而数据通常是“静止的”(在上下文)。与之相对,数据流程编程强调了数据的流动(输入输出),并将程序建模为一系列的连接。显式的定义输入和输出的连接运算,它的功能类似于黑箱。一个运算在它的所有输入成为有效时立即运行。因此,数据流程语言是天然并行的,并可在大型的、去中心化的系统上运作。流处理(Stream Processing)流处理(Stream Processing)是一种计算机编程范型,相当于数据流程编程,事件流处理,和反应式编程,其允许一些应用更容易地利用了有限形式的并发处理。这些应用程序可以使用多个计算单元,而无需明确管理这些单元之间的分配,同步或通信。流处理通过限制可执行的并发计算来简化并发软件和硬件。给定一个数据序列(流处理),一系列操作(内核函数)被应用到流中的每个元素。基于流程编程(Flow Based Programming)基于流程(flow-based)的编程,缩写为FBP,是一种编程范型,它将应用定义为黑箱进程的网络,它们经过预先定义的连接,通过消息传递来交换数据,而这里的连接是在“外部”指定给进程的。这些黑箱进程不需要更改内部,就可以无尽的重新连接而形成不同的应用。FBP因而是天然基于构件的。FBP是一种特殊形式的数据流程编程,它基于了有界缓冲区,带有确定生存时间的信息包,命名端口,和独立的连接的定义。端口向FBP提供了构件重用功能,使得FBP成为基于构件的架构。集成流(Integration Flow)数据流的一种,用于企业集成的场景,聚焦于企业应用间集成。企业集成架构模式定义了一组可复用组件,支持灵活连接组装为目标企业应用集成流程。集成流强调从源应用(EndPoint)触发(Construct),经过中间处理(Channel、Routing、Transformation),送达目的应用(Endpoint),是在企业集成领域总结出的架构范式。资料来源:[1]https://baike.baidu.com/item/%E6%B5%81%E7%A8%8B/31013?fr=aladdin[2]https://zh.wikipedia.org/wiki/%E6%B5%81%E7%A8%8B%E5%9B%BE[3]https://zh.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E6%B5%81%E7%A8%8B[4]https://zh.wikipedia.org/wiki/%E6%8E%A7%E5%88%B6%E6%B5%81%E7%A8%8B[5]https://zh.wikipedia.org/wiki/%E5%B7%A5%E4%BD%9C%E6%B5%81%E6%8A%80%E6%9C%AF[6]https://en.wikipedia.org/wiki/Workflow[7]https://zh.wikipedia.org/wiki/%E4%B8%9A%E5%8A%A1%E8%BF%87%E7%A8%8B[8]https://zh.wikipedia.org/wiki/%E4%B8%9A%E5%8A%A1%E6%B5%81%E7%A8%8B%E6%A8%A1%E5%9E%8B%E5%92%8C%E6%A0%87%E8%AE%B0%E6%B3%95[9]https://zh.wikipedia.org/wiki/%E8%B3%87%E6%96%99%E6%B5%81%E7%A8%8B%E5%9C%96[10]https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E6%B5%81%E7%A8%8B%E7%BC%96%E7%A8%8B[11]https://zh.wikipedia.org/wiki/%E4%B8%B2%E6%B5%81%E8%99%95%E7%90%86[12]https://zh.wikipedia.org/wiki/%E5%9F%BA%E4%BA%8E%E6%B5%81%E7%A8%8B%E7%BC%96%E7%A8%8B[13]https://www.enterpriseintegrationpatterns.com/patterns/messaging/
  • [交流吐槽] 第四次笔记 CMSIS-RTOS2 接口
    ## HarmonyOS 编译框架介绍 - ninja编译工具 - 简介:在 Unix/Linux 下通常使用 Makefile 来控制代码的编译,但是 Makefile 对于比较大的项目有时候会比较慢,代码在编译都变成了程序员放松的借口了。所以这个 Google 的程序员在开发 Chrome 的时候因为忍受不了Makefile 的速度,自己重新开发出来一套新的控制编译的工具叫作 Ninja,Ninja 相对于 Makefile 这套工具更注重于编译速度。除了 Chrome 现在还有一些其他的比较大的项目也在开始使用Ninja。 - 如何编译模块 - ssh 命令报错 - ![e3e298d80e38ab1d0385f12eb3598e13.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/27/1658928098638633693.png) - 解决方法:多试了几次 - 运行成功:![2c51007670fc37bf6a14acbbfc8ae9bb.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/27/1658928187924853834.png) - gn文件 - 一些对应:![11c0427013c21e523d86b40f01b17c5e.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/27/1658928217894998770.png) - Json 文件 - 编译时使用到:描述编译模块的一些路径 - build\lite\product\BearPi-HM_Nano.json - 代码运行逻辑 - 编译是一步一步指向的,例子:从 BearPi-HM_Nano.json 第一个 application 指向 BUILD.gn 的 app,app 指向其中的 my_led 模块,首先链接 my_led.a 文件,然后编译成 .bin 的二进制文件 - 入口函数: vendor\hisi\hi3861\hi3861\app\wifiiot_app\src\app_main.c ## CMSIS-RTOS2 接口 - 什么是 CMSIS-RTOS2 接口 - CMSIS 是 Cortex**微控制器软件接口标准**,是 ARM 和一些编译器厂家以及半导体厂家共同遵循的一套标准,是由 ARM 专门针对 Cortex-M 系列提出的标准。在该标准的约定下,ARM 和芯片厂商会提供一些通用的 API 接口来访问 Cortex 内核以及一些专用外设,以减少更换芯片以及开发工具等移植工作所带来的金钱以及时间上的消耗。 - CMSIS-RTOS2 (CMSIS-RTOS API Version 2) 是Arm Cortex -M处理器的通用的RTOS接口。为需要RTOS功能的软件组件提供了标准化的API。// 这个 API 与底层 RTOS 内核是无关的,能**屏蔽底层差异**,即若更换底层 RTOS 内核,**上层应用层可以不变** - CMSIS-RTOS2是一个通用的API,它与底层的RTOS内核无关,写应用程序的程序员在用户代码中调用CMSIS-RTOS2API函数,可以更方便地将应用程序从一个RTOS到另一个RTOS,使用CMSIS-RTOS2 API的中间件也可以避免很多不必要的移植工作。 - 鸿蒙是如何封装 CMSIS-RTOS2 接口 - 鸿蒙与 CMSIS-RTOS2 接口联系 - 鸿蒙在CMSIS-RTOS2接口中封装了LiteOS-m的内核代码 - CMSIS-RTOS2实现 : //kernel/liteos_m/kal/cmsis/cmsis_liteos2.c- ![665a70a374670bbe3acabd900c5f9159.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/27/1658928300227833368.png) - 通过调用CMSIS-RTOS API 2.0 接口,实现对内核功能调用 - 注意![4c1e50bb1623702061960df462158b78.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/27/1658928650703873378.png)文件 gitee 路径与文件夹里面不一样 - gitee:![3b76abe4d0b96b762c8472d1f54c90fd.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/27/1658928684072998527.png) - 文件夹里面:![88f7d936ebecab32175b5db492429843.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/27/1658928411871669825.png) - 该文件里面做了上面步骤图的配置工作,调用了很多 LOS 为首的函数 ![038cfd1a181ac9d18796f5da6a201f54.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/27/1658928732229764713.png) - 如何使用 CMSIS-RTOS2 接口 1. 在业务代码中包含“ cmsis_os2.h ” // 所有接口都在这个.h 的文件里面 2. 通过调用“cmsis_os2.h”中的API函数使用系统相关功能 3. 更多API介绍请参考: https://arm-software.github.io/CMSIS_5/RTOS2/html/index.html ![8ce5ca94efc6c1bee6704eefe2ff0a0e.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/27/1658928943967893904.png)
  • [技术干货] VDC Server API 的问题的回复
    1,看以下 header 里面是不是没有加token。先用会议管理员账户,取token登录,这里示例用fn333-2的会议管理员账户2,取token成功后,再取ticket取ticket要注意,url参数里面带上username,就是第一步里面的登录账号header里面Token参数要填第一步取到的token值2、有没有直接调视频会议的接口,相当于 Could Link 中开视频会议,请详列接口参数。4.3.1.1 预约会议。这个接口可以直接调视频会议,参数设置即时会议即可3、预约会议中最小请求参数应该是哪些。见附件《简单预约会议body.txt》0%简单预约会议body.txt (418 B)这个预约会议参数,我写了一个简单的预约会议,只有一个测试sip会场。先调通简单会议,再根据需要增加其他接口参数。4、为何主流,为何辅流主流就是终端入会以后,收发会议中的视频音频码流,这是主流。除此以外,部分会议可能会开启辅流,也就是说除了发送主流以外还会发一路其他视频码流作为辅流,一般辅流发送的内容比如胶片等共享材料5、什么叫多点会议请求?点对点会议一般指只有两方接入会议,其实就是点对点通话或视频。多点就是3方或3方以上的音视频通话。或者理解预约会议的请求参数中如果会场数量大于等于3个,就是多点会议请求6、StreamServiceReq 的作用?开会参数中指定会议一些设置,像这种StreamServiceReq 类型不清楚定义的,可以在接口文档中直接搜索,一般类型定义都在前面这里面就能看到 StreamServiceReq 实际上就是设置会议是否支持直播、录播。自动录播、语音录播,直播地址等这些参数非必填参数,如果这个参数不填,系统有默认设置
  • [问题求助] VDC Server API 的问题
    1、会议控制,需要获取 Ticket, 依据 获取 Ticket的接口,用会议管理员的账号进行 测试,显示 没有权限,请详见下面第三张图。获取Ticket 的接口如下: 测试如下: 2、有没有直接调视频会议的接口,相当于 Could Link 中开视频会议,请详列接口参数。 3、预约会议中最小请求参数应该是哪些?为何文档中 选填的字段,不填却通不过? 4、为何主流,为何辅流, 5、什么叫多点会议请求? 6、StreamServiceReq 的作用?
  • [交流吐槽] 鸿蒙14天-驱动子系统开发笔记
    PWM   相关API接口介绍 LED灯对应GPIO引脚输入PWM改变LED亮度ADC采样API接口介绍ADC对应GPIO引脚ADC读取GPIO电压值I2CAPI介绍NFC的I2C对应的GPIO引脚I2C读取NFC芯片UARTAPI介绍UART1对应GPIO引脚UART进行数据读取的代码
  • [交流吐槽] 第六次笔记
    # WIFI AP热点 **无线AP(Access Point)**:即无线接入点,它用于无线网络的无线交换机,也是无线网络的核心。无线AP是移动计算机用户进入有线网络的接入点 ## API介绍 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/24/1658643677260451644.png) ## AP热点创建 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/24/1658643809327373692.png) # WIFI STA联网 **站点(STA,Station)**,在无线局域网(WLAN,WirelessLocalAreaNetworks)中一般为客户端,可以是装有无线网卡的计算机,也可以是有WiFi模块的智能手机,可以是移动的,也可以是固定的 ## API介绍 ![](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/24/1658644085507682571.png)
  • [技术干货] cmsis-rtos2
    CMSIS-RTOS v2 (CMSIS-RTOS2) 为基于 Arm® Cortex® 处理器的设备提供通用 RTOS 接口。它为需要RTOS功能的软件组件提供了标准化的API,因此为用户和软件行业带来了巨大的好处:CMSIS-RTOS2 提供了许多应用程序所需的基本功能。CMSIS-RTOS2 的统一功能集减少了学习工作,并简化了软件组件的共享。使用CMSIS-RTOS2的中间件组件与实时操作系统无关,并且更容易适应。CMSIS-RTOS2 的标准项目模板可能与免费提供的 CMSIS-RTOS2 实现一起提供。CMSIS-RTOS2 提供以下 API 接口:CMSIS-RTOS C API v2是支持动态对象创建和Armv8-M(Arm Cortex-M23,Cortex-M33和Cortex-M35P)的C函数接口。CMSIS-RTOS C API v1 是一个 C 函数 API,向后兼容 CMSIS-RTOS v1。CMSIS-RTOS C++ API 是一个C++类函数 API(未来扩展)。可以在同一应用程序中混合不同的API变体,甚至可以在同一C / C++源模块中混合。但是,CMSIS-RTOS C API v1 的功能可能会在 CMSIS-RTOS 的未来版本中弃用。CMSIS-RTOS2 还定义了一个通用系统计时器接口,该接口可在受支持的 Arm Cortex 处理器上运行:OS Tick API 是内核系统计时器的接口。
  • [API使用] 【Mindspore】【detach】Pytorch detach 功能有对应API吗?
    【功能模块】Pytorch detach API , Mindspore找不到对应【操作步骤&问题现象】【截图信息】
  • [技术干货] 第四章笔记总结
    # 驱动子系统开发 ## 1.驱动GPIO (1)具体内容 ・GPIO相关API ・如何操作GPIO点亮LED灯 ・如何读取GPIO电平状态 (2)GPIO API介绍 wifiot_gpio.h接口简介: 注意: 这个.h中包含声明GPIO接口函数,这些功能用于初始化GPIO。 常用接口及其常用功能 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/21/1658399591179340484.png) (3)与LED对应的GPIO引脚 LED对应的GPIO引脚是GPIO2通过控制GPIO2输出的的电平信号来实现LED灯的闪烁。 ·高电平时点亮LED灯。 ·低电平时熄灭LED灯。 (4)操作GPIO点亮LED 相关代码:![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/21/1658399875307339272.png) (5)本节收获: 学习了GPIO的主要引脚 学习了操作GPIO来点亮LED灯 ## 2.GPIO的中断 (1)主要内容 ·GPIO中断相关API ·如何使用GPIO中断相关API ·如何通过GPIO中断判断按键状态 (2)GPIO中断API介绍 其实就是wifiot_gpio.h中包含声明GPIO中断相关函数。 主要接口及其功能描述: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/21/1658400329778899183.png) (3)如何查看按键对应的GPIO引脚 F1和F2按键对应的GPIO引脚是分别是GPIO11和GPIO12,通过检测GPIO的电平信号来判断按键的状态。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/20227/21/1658400428313648516.png)
  • [问题求助] 【SMC3.0】【api添加会议室】一添加会议室接口调用后添加到了外部会议室T /meetingrooms/create
    【功能模块】会议室添加 smc 3.0T/meetingrooms/create 【操作步骤&问题现象】1、调用这个api后添加会议室在smc中显示在外部会场,要怎么用或者是哪个字段那区分添加到外部会议或者内部会议室【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] HarmonyOS上实现“手机充电”动画
    在项目开发中遇到给设备充电时,电池图标显示一个充电动画效果,下面基于 HarmonyOS 的 JSAPI 实现一个电池充电的动画效果。效果展示:实现原理电池充电的动画就是一个宽度从 0% 加载到 100% 的过程,所以在充电状态只需要动态改变显示的宽度就可以实现一个充电的效果,而电池的轮廓和充电状态采用加载本地图片的方式实现。实现步骤①实现电池图标首先加载空电量的电池轮廓的图片,在电池轮廓的上面覆盖一个显示电池电量的进度条,在电池电量进度条的上面覆盖一个闪电图标,显示充电状态。battery.hml:<div class="container">    <image show="true" src="{{ batteryIcon }}"></image>    <div class="progress" style="width : {{ getBatteryNum() }} px;"></div>    <image show="{{ chargeState }}" class="charging" src="/common/img/ic_charging.png"></image></div>css 样式:.container {    height: 48px;    width: 48px;    justify-content: center;    align-items: center;}.progress {    height: 16px;    background-color: black;    position: absolute;    margin-left: 12%;    top: 50%;    transform: translate(0, -50%);}.charging {    height: 48px;    width: 48px;    position: absolute;    left:50%;    top: 50%;    transform: translate(-50%, -50%);}②获取手机电池信息通过系统接口提供的接口获取手机电池信息,导入 batteryInfo 模块,接口从 API version 6 开始支持。import batteryInfo from '@ohos.batteryInfo';batteryInfo 详细属性:index.js 中获取电池电量和充电状态://获取设备电池电量百分比this.batterySoc = batteryInfo.batterySOC//设备电池是否在充电状态this.chargingStatus = batteryInfo.chargingStatus == batteryInfo.BatteryChargeState.ENABLE③实现动态改变进度条宽度进度条必须显示在电池图标轮廓里,所以进度条的宽度不能超过电池图标,根据获取到的电量百分比,动态改变宽度但不能超过满电时的最大宽度,满电时的最大宽度可根据实现效果调整。如下代码:getBatteryNum() {        let width = (this.percent / 100) * this.maxWidth        if (this.percent >= 100) {            return this.maxWidth        }        console.log(" getBatteryNum " + Math.round(width))        return Math.round(width);},④实现充电动画效果使用系统提供的动画接口,导入 animator 模块,接口从 API version 6 开始支持。import animator from '@ohos.animator';animator 有以下方法:AnimatorOptions 属性:在触发充电状态时,重复播放 Animator 动画,在 onframe() 回调中动态改变电池电量百分比,从而改变进度条宽度,详细代码如下。battery.js 完整代码:import animator from '@ohos.animator';import batteryInfo from '@ohos.batteryInfo';export default {    props: ['quantity', 'charge'],    data() {        return {            percent: this.quantity,            chargeState: this.charge,            batteryIcon: "/common/img/ic_battery.png",            animator: null,            maxWidth: 30        };    },    onInit() {        console.log("battery onInit")        this.setBatteryIcon()        this.$watch('quantity', 'onQuantityChange')        this.$watch('charge', 'onChargeChange')        var options = {            duration: 2000,            easing: 'friction',            fill: 'forwards',            direction: 'reverse',            iterations: -1,            begin: 0,            end: this.maxWidth        };        this.animator = animator.createAnimator(options);        var _this = this;        this.animator.onframe = function (value) {            _this.percent = (parseInt(value) / _this.maxWidth) * 100        };    },    onPageShow() {        console.log("battery onPageShow percent = " + this.percent + " chargeState = " + this.chargeState)    },    // 监听是否变化电量    onQuantityChange(newV, oldV) {        console.log('======proQuantity============ newV=' + newV + " oldV = " + oldV)        this.percent = newV    },    // 监听是否充电    onChargeChange(newV, oldV) {        console.log('======proIsCharge============newV =' + newV + " oldV = " + oldV)        this.chargeState = newV        if (this.chargeState) {            this.animator.play();        } else {            this.percent = batteryInfo.batterySOC            this.animator.cancel();        }    },    getBatteryNum() {        let width = (this.percent / 100) * this.maxWidth        if (this.percent >= 100) {            return this.maxWidth        }        console.log(" getBatteryNum " + Math.round(width))        return Math.round(width);    },    onDestroy(){        this.animator.cancel();    }}总结以上只是简单实现了一个平移动画的效果,结合系统的 Animator 可以实现各种各样炫酷的动画效果,可以提高应用的视觉和用户的体验。掌握 HarmonyOS 动画的使用,可以让我们更好的了解和参与 HarmonyOS 的开发。作者:陈忠蔚转载于OST开源开发者微信公众号
  • [交流吐槽] 第二章笔记
    1. 添加源码文件打开源码,在applications/BeraPi/BearPi-HM_Nano/sample下,新建文件夹my_app,在此文件夹下新建一个hello_world.c文件,再新建一个BUILD.gn文件2. 编写hello_word代码在新建的hello_word.c文件夹中编写代码在myapp路径下的BUILD.gn文件下添加代码static_library中指定业务模块的编译结果,将hello_word.c文件编译成libmyapp.a文件在sample路径下的BUILD.gn文件下添加代码,放在最下边3. 编译打开MobaXterm,打开源码,登录,在code/code_3路径下进行编译hpm dist,编译成功之后,打开HiBurn工具,需要查看开发板与电脑的连接情况,设置波特率为115200,选择烧录文件,点击connect进行下载,成功之后通过MobaXterm查看4. 点亮LED添加源码文件在sample路径下新建my_led文件夹,在my_led路径下新建led_example.c文件和BUILD.gn文件(与hello_world一样)。添加源码在led_example.c文件下添加代码在my_led路径下的BUILD.gn文件中添加代码在sample路径下的DUILD.gn文件中添加代码烧录代码与上述相同烧录完成之后根据上述的步骤可以查看LED灯被点亮Ninja编译工具在Unix/Linus下通常使用Makefile来控制代码的编译,但对于比较大的项目有时候会比较慢。故重新开发出来新的编译工具Ninja,编译速度更快。如何执行代码CMSIS-RT0S2接口CMSIS-RT0S2是一个通用的API,与底层的ROTS内核无关,程序员在用户代码中调用CMSIS-ROTS2 API函数时,可以方便的将应用程序从一个ROTS移到另一个ROTS。OpenHarmony与CMSIS-RT0S2接口联系OpenHarmony在CMSIS-RT0S2接口中封装了LiteOS-m的内核代码结构关系
  • [云动向] 华为云发布桌面IDE-CodeArts,让连接更简单、编码更智能
    【中国,2022年6月15日】主题为“因聚而生,为你所能”的华为伙伴暨开发者大会2022隆重开幕,华为云CEO张平安发表“共创新价值,一切皆服务”的主题演讲,重磅发布了华为云桌面IDE-CodeArts,并邀请华为云开发工具和效率首席专家王亚伟向大家介绍了这款智能化桌面集成开发环境的主要特点。全新发布的华为云桌面IDE-CodeArts为了给广大的开发者提供更高效、更智能的桌面开发体验,具备“连接华为云服务、智能开发、开发者生态”三大特性,支持便捷连接220+华为云服务、引用4500+华为云服务API,汇聚300万+华为云开发者,助力编码效率提升50%。华为云桌面IDE-CodeArts发布,助力开发更高效华为云软件开发生产线(DevCloud)是一站式、全流程、安全可信的云原生DevSecOps平台,开箱即用,预置最佳实践。去年DevCloud发布了内置智能化代码补全的CloudIDE服务,为开发者提供了随时随地的云上在线编程体验。为了帮助开发者获得更好的用云体验和开发效率,华为云推出了桌面集成开发环境(IDE)- CodeArts。据王亚伟介绍,CodeArts定位为华为云开发者桌面,是一款智能化桌面集成开发环境,目标是让开发者更简单的使用华为云,以及更高效的基于华为云来构建应用。内置华为云开发套件,用云更便捷作为华为云的开发者桌面,CodeArts提供的华为云API开发套件可以快速连接220+华为云服务,和集成超过4500+华为云服务API。开发者在CodeArts中可以搜索、调测和集成已发布的华为云服务API,利用详尽的参数说明和示例代码,实现在代码中调用华为云服务。此举大幅降低开发者在应用中集成华为云能力的门槛,让用云更便捷。智能化开发,编码效率大幅提升作为桌面集成开发环境(IDE),CodeArts将智能化融入到开发的各个环节,提升开发者效率。基于深度学习的Java语言服务,通过代码所在光标位置代码上下文的语义理解,可以准确为用户推荐和生成代码。代码搜索服务可以对用户历史代码活动的特征进行分析,根据用户输入的关键词快速定位到相关搜索结果。通过智能化的语言服务和搜索服务,CodeArts能够帮助开发者提升50%的综合编码效率。开放插件扩展和市场,共同繁荣生态作为华为云开发者的生态入口,CodeArts支持基于插件的服务扩展,并利用不断增加的开发套件(插件)支持更多研发场景,从传统应用到现代化(Serverless)应用,从本地开发到云上远程开发,从单人开发到团队DevOps协作。通过开放的插件标准和市场,CodeArts支持合作伙伴和开发者一起加入进来,共同打造华为云的开发者生态。依托三大特性,CodeArts能让各类场景的开发事半功倍。以往,开发者需要在华为云4500+的API中找到最合适的那个并集成于自身业务,需要颇费一番周折。现在,企业通过CodeArts开发云上应用时集成华为云服务将成为自然选择,在IDE中一边编写业务代码即可一边通过关键字搜索需要的云服务。比如,在开发“图像识别文字”业务的场景中。仅输入关键字“文字识别”,即可查找到华为云文字识别(OCR)服务的多种类型接口,每个接口都有详细的说明、参数定义,以及请求和返回示例。更简便的,开发者可直接打开“SDK示例代码”,按照接口调用格式预置参数,然后把自动配置好参数的示例代码直接复制、粘贴,再启动运行、调试,分钟级即可实现业务代码调用华为云服务接口。通过CodeArts连接华为云,编程变得高效简单。图示:通过华为云API开发套件获取接口示例代码华为云CodeArts,将服务于华为云数百万不断增长的开发者,支持合作伙伴共建共享生态,使能开发者更高效的基于华为云构建应用,让连接更简单、编码更智能,助力企业更快实现数字化转型。*来源IT168
  • [技术干货] 第五讲:鲲鹏编译调试及原生开发工具基础知识
    课程链接:https://www.hikunpeng.com/zh/developer/live/detail/1537729153943310338鲲鹏编译调试及原生开发工具基础知识分为两个板块进行讲解。第一个版块是开发框架插件的内容介绍。第二个板块是开发框架功能特性与案例演示。在介绍鲲鹏开发框架插件之前,先让我们了解一下什么是原生开发。因为鲲鹏开发框架插件的提供的功能是帮助用户快速上手。原生开发的定义是什么呢?让我们来看一下。即开发者基于任意环境快速开发新软件应用,可在鲲鹏服务器或鲲鹏架构下高效运行。开发过程体验好、粘性强,此过程称为鲲鹏原生开发。它主要具备以下四个特点,首先,开发体验好。开发体验好主要体现在易用和好用两个方面。易用,即不改变开发者原本的开发习惯,降低开发者的学习成本。好用在于开发者开发鲲鹏应用可以敏捷开发,提升开发效率,让开发者可以高效地进行创新。鲲鹏原生开发的第二个特点是架构自亲和,即开发过程屏蔽硬件复杂性鲲鹏架构自亲和。鲲鹏原生开发的第三个特点,应用高性能,即在用户开发应用时发挥鲲鹏架构优势,释放鲲鹏算力,构建极致性能。鲲鹏原生开发的最后一个特点是多算力兼容,多样算力兼容,一次开发多次复用,性能可移植。待介绍完原生开发的概念之后,接下来让我们看一下鲲鹏开发框架插件是什么。很多开发者在刚开始接触鲲鹏原生开发时都会遇到这样的问题,对鲲鹏加速库的 API 不熟悉,不知道有哪些 API 也不知道如何去使用。同时对如何将自己的程序针对鲲鹏处理器进行加速优化的方法也一无所知。针对这些开发者遇到的这些常见问题,鲲鹏推出了鲲鹏开发框架插件,帮助开发者更便捷的开发鲲鹏应用,使能开发者高效创新。鲲鹏开发框架插件可以在 ID 的插件市场中免费获取,在插件市场中搜索鲲鹏关键字就可以看到了。鲲鹏开发框架插件充分利用了鲲鹏平台的各类型算力,即性能更优的第三方组件,提供了三大特性,分别是鲲鹏工程向导洗发、日编程代码亲和检查等能力。一键引入了鲲鹏加速库,快速构建鲲鹏应用软件框架,引导用户快速上手。原生开发。接下来我们整体的看一下鲲鹏开发框架插件给我们提供了哪些功能。从图中我们可以看出,鲲鹏开发框架插件着眼于开发全流程,在开发前、开发中、开发后都提供了重要的特性,帮助开发者提升开发效率,提高应用性能。在开发前,开发者可以使用开发向导功能,通过输入一些简单的工程配置项,就可以一键创建鲲鹏工程,从而快速上手鲲鹏原生开发。鲲鹏工程中包含了基础的 demo 文件以及相关加速库的 demo 和源码文件。开发者通过鲲鹏工程不仅可以了解奔鹏加速库的 API 是如何调用的,还可以在远程服务器上实地的进行运行,查看鲲鹏加速库带来的极致性能提升。在开发过程中,鲲鹏开发框架插件提供了启发式编程功能,用户只需要输入相关函数的关键字,鲲鹏开发框架产插件便会根据这些关键字进行智能联想,并提示该函数的一些相关内容。这些内容中包含功能名称、优化内容、对应的汇编指令等丰富的信息,帮助用户了解鲲鹏加速库的 API 在用户开发之后可以使用代码亲和检查功能。代码亲和检查是鲲鹏原生开发的一大特性之一,功能分布在鲲鹏开发框架插件和迁移插件中。在鲲鹏开发框架插件里,主要的实现形式是鲲鹏加速分析,它会扫描用户工程中可以用鲲鹏加速库 API 替换的代码,并生成详细的可视化报告,帮助用户更好地进行替换。好待对开发框架插件进行了一个整体的介绍过后,接下来让我们详细的展示一下鲲鹏开发框架插件的功能特性。第一个要介绍的开发框架插件的功能特性是鲲鹏工程向导。鲲鹏工程向导的实现效果如图中所示,在输入一些简单的工程配置项之后,选择相关的加速库信息之后,可以自动构建鲲鹏工程,推动用户深入地进行鲲鹏原生开发。接下来让我们仔细看一下鲲鹏工程要怎样进行创建。首先在创建鲲鹏工程的页面中输入相关的工程配置项,诸如工程名称、工程位置语言选择语言必标准工程类型等。用户只需要输入和选择一些关键项目信息,开发框架插件就会根据用户的选择自动创建鲲鹏工程用户点击下一步之后就到了加速库选择页面。鲲鹏工程目前支持 jstd 激励吧 C Hyper scan 等 7 款加速库,涵盖系统、压缩、存储三大主要类别。这些加速库基于鲲鹏 920 处理器微架构特点进行了大量优化,可以使鲲鹏服务器的性能得到更充分的释放。除了这些棚加速库,我们还提供了加解密媒体、数学库、网络库等四大加速库的主要类别的下载链接,用户可以点击获取资源按钮下载并使用这些家族库。接下来我们介绍一下开发框架插件的第二大特性,启发式编程。启发式编程针对所有进行鲲鹏原生开发的开发者,提供了总量几千条的函数编码,实时智能补全仪式内容信息全覆盖广,包含鲲鹏加速库函数以及 new interest 函数。股权内容包含功能描述、优化点描述、对应汇编指令等多种提示信息。我们从页面的图中可以看到,当用户输入相关函数的关键字之后,开发框架插件就会进行编码。智能实时补全的提示,提示相关用户可能想输入的函数,并展示了丰富的补全信息,帮助用户提高开发效率,提升用户的使用体验。启发式编程提供的函数智能提示功能会在用户编写 C 或 C 加文件时触发。它主要针对这么两种函数进行智能联想与补全,分别是鲲鹏加速库函数以及 NEO interest 函数。鲲鹏加速库函数的智能补全包含了 ZSTD chaekml 等 14 款加速库,覆盖系统压缩加解密、数学四大基础加速场景,为大数据加解密、分布式存储压缩应用场景提供高性能加速。利用 interesting 函数的智能联想包含了 arm 提供的所有 new inch 这个函数。 new 函数相比于传统的使用纯汇编语言对 NEO 寄存器进行操作,具有可读性强、开发速度快等优势。最后让我们来看一下代码亲和检查特性的功能。代码亲和检查特性在开发框架上的实现主要是鲲鹏加速分析。鲲鹏加速分析针对压缩系统加解密、媒体数学五大基础加速场景进行分析优化,它会扫描开发者工程中可以使用鲲鹏加速库函数进行优化的代码,并整理出详细的可视化报告。用户将这些函数替换成鲲鹏加速库函数之后,就可以提高用户工程在鲲鹏服务器上的运行性能。接下来让我们看一下可视化报告中给我们提供了哪些信息。我们可以看到报告中提供的信息有函数名、所在路径、函数简介、加速方法等比较关键的信息。同时还提供了下载链接,开发者可以点击下载链接下载相关的鲲鹏加速库函数并进行替换使用。鲲鹏开发框架插件的功能特性暂时讲解到这里。接下来让我们使用 VSCode 这个非常主流的 IDE 去实战一下。我们在 vs code 上搜索鲲鹏开发框架插件并进行下载使用实地体验一下鲲鹏开发框架插件给我们提供的强大功能。大家在设计开发场景中,经常会是在本地 Windows 环境中使用 IDE 编码,比如使用 VSCode 然后再手动将代码上传到远端服务器,之后在服务器上进行编译调式运行等一系列操作。如果遇到编译错误,又得回到本地继续修改,修改完成之后再上传编译。如果遇到运行错误,这个时候我们就需要在服务器上进行调试定位问题,然后再到本地修改代码,然后再上传编译运行重复前面的一些动作。我们推出鲲鹏编译调试插件,就是为了解决这一系列因为开发调试环境分离而造成的开发效率低下的问题。鲲鹏调鲲鹏编译调试插件能够在本地 IDE 中实现一站式部署开发。远程区编译调试功能可以简化大家在 Linux 服务器开发流程和提高大家的开发效率。下面给大家介绍一下编译条插件的基本功能。在编译之前可以使用编译调试插件提供的一键式部署编译器的功能,将选择的编译器一键部署到目标服务器上。可以选择的编译器类型有 GCC for open 欧拉和避声编译器以及避声 gdk 在配置目标服务器之后,我们可以创建编译任务。在编译之前,我们可以通过手动同步,就是通过按钮操作,一次性将项目的文件同步到远端服务器,或者通过自动同步,通过监听代码变更,自动将变更的文件同步到远端服务器。这两种方式将本地代码上传到远端服务器。代码同步完成之后,执行编译操作,编译的过程以及结果可以通过本地终端查看。在编译成功之后,也可以通过测试用例功能,就是添加测试用例,然后执行测试用例,通过执测试用例的代码执行整个过程。也可以整个过程无需本地与远端服务器之间的频繁切换,实现的本地 IDE 中一站式部署开发远程调试和编译。下面给大家介绍一下编译调试插件的部分案例演示。编译调试插件以插件的形式集成到 IDE 中,给鲲鹏生态用户安装使用。当前工具支持部署编译器、远程编译和远程运行调试三大功能,目的是解决开发者因开发和调试环境分离造成的开发效率低下的问题,实现本地 IDE 开发调试一体化。部署编译器的功能。支持部署 GCC for open 欧拉、避声编译器和避声 gdk 单款编译器整个部署的过程不需要手动登录到远端服务器,仅在本地 ID 端即可完成部署。 GCC for open 欧拉是一款基于 GCC 开发,主要是因为当前很多服务器软件都是基于开源 GCC 开发。为了减少客户切换的成本,我们在 GCC 上也做了优化和改进,比如提供高性能编译算法,提供加速指令集、高性能数学库等。 SPC 2006 和 SPC 2017 性能比开源的 GCC 九点三高 10% 以上。B 升编译器是基于开源的 LVM 开发,是一种 Linux 下针对鲲鹏九十零的高性能编译器。主要支持 C 语言、 C 加语言、 fountrie 语言。这三种语言是在 HPC 高性能计算场景下使用最多的语言。毕生编译器针对鲲鹏的芯片指定集、流水线也做了增强和优化,比如高性能的编译算法,提升指令和数据吞吐量。另外还提供一些加速指令集和 AI 迭代调优,充分发挥鲲鹏架构的最佳性能。毕森 gdk 是基于 openjdk 定制开发的开源版本,是一款高性能可用于生产环境的 openjdk 发行版。毕生 gdk 是 open gdk 的下游,我们在华为内部 500 多个产品上广泛使用,积累了大量使用场景和 Java 开发者反馈的问题和需求,解决了很多业务运行中的实际问题,并且针对这些问题也做了相应的修复。在 arm 架构上也进行了优化和稳定性增强,使得在 arm 架构下更加稳定,在大数据场景下也获得了更好的性能。远程编译,你们插件也是提供的可视化界面执行,无需重复手动输入编译命令,同时再配合其他调试插件支持调配,在配合其他调试插件下,支持远程执行和调试的功能。当然在使用编译调试插件与远程编译和运行之前,需要完成配置远程服务器。这边一键是部署的编译器的一个部分界面。一键是部署编译器的目标服务器,就是需要处于联网状态。在输入目标服务器的相关参数,比如 IP 地址 polar 端口以及用户名和密码。配置好之后,插件会根据选择的编译器类型,从官方镜像网站下载对应的编译器自动完成安装。这也是为什么要保证目标服务器也是处于联网状态。因为这个要从官方网站下载对应的编译器。在下载和安装的过程中,也可以通过 ID 的终端去查看具体的下载和安装的进度。在安装完成之后,也会给出工具部署成功的提示,整个过程都不需要去登录远程服务器。在编译器安装完成之后,下一步就是进行远程编译。首先创建一个编译任务,可以给编译任务进行不同的命名,而且指定编译命令。这样创建好一个编译任务。下面就是将本地代码同步到远端服务器进行编译,同时可以在终端查看整个的编译结果。当然在设置同步设置远程同步代码的时候,也可以在设置中启动自动同步功能。如果本地代码发生变化,会自动同步到服务器。代码自动同步到服务器之后,可以直接通过编译生成新的可执行文件。在编译完成情况下,可以通过添加测试用例来进行远程运行和调试。这是一个调试二进制的一个页面。大家可以看到这是归因有一些调试按钮和正在运行的一个行。这边高亮行就是正在运行的那一行。下面是运行的结果,下面大家看一下部分的案例演示。这边是一个编译器部署的页面,这上面是可以选择编译器的类型,就是那三款编译器以及右边是服务器 IP 地址、端口号,还有用户名以及用户的密码。这边选择通过密钥认证这些信息填完填完之后可以通过检测连接,如果能够连,如果连接没有问题就可以直接部署。这是编辑部署这个功能。远程编译的话是先创建一个编译任务指定一下编译名称和编译命令。然后会在编译任务下面会有一个列表展示,列表展示上面去这个按钮可以点击去执行整个编译任务。编译任务执行的时候,会通过选择对应的目标服务器的话,会会去执行编译编译的过程中是能够在终端查看整个编译过程程执行编译执行的过程这边是添加测试用例,然后远程运行和调试。测试用例这边也是有一个测试用例的任务名称以及可执行的程序和程序所在的路径,最后面也可以加一些参数。然后运行完之后那个也可以点击调试按钮,调试按钮的话就会进入到这个调试的界面。这个调试的界面就跟本地调试是一样的,有一些继续什么步入步出,还有一些下一步还有一些重启会暂停一些功能。下面用一个 demo 给大家演示一下。下面这个例子比较简单,就是一个简单的 hard word 输出。首先在不介入我们调试插件的情况下,如果想调试运行这个程序,咱们需要将这个上面本地的代码传到人的服务器上,先打一个压缩包,然后通过本地的 sap 命令转到人端服务器上。我这个服务器也是通过远程实验室申请的。 Workspace.输入密码。已经传到了免单服务器 in the workspace 目录,然后进行解压,然后再进到 demo 的 demo 目录。这个时候就需要去在远端服务器执行它的编译命令,可以看到生成的一个 hello 的二进制文件,这个时候就执行 hello 然后就打印了这个 hello world 这是不借助我们工具。而且如果要是通过修改代码的话,比如说我又在代码里面修改的一个,再打印一个 hi word 然后这个时候又需要进到项目中。但是这个时候可以对单独的文件进行上传,不需要再去打压缩包了。然后在这个要上传到它的文件目录 demo 下面再输入一遍密码。这时候传上来之后,要重新对这个文件进行编译,它能生成到一个新的二进制文件。接下来我们使用用一下鲲鹏开发框架插件提供的加速分析功能。加速分析可以分析用户选中的对应工程或文件中的内容,扫描出其中可以使用鲲鹏加速库函数进行替换的内容,并提供一份详细的可视化报告供用户进行查看。我们以 gzip demo 中的 demo gzip.cbp 文件为例进行一次扫描,右键这个文件,点击加速分析按钮。此时我们可以看到开发框架插件会先让用户选择对应的加速分析类型。如果用户只想针对自己的工程或文件进行压缩方面的扫描,就可以直接选择压缩库。这一次我为了给大家更好的展示扫描结果,我针对这个文件进行所有相关加速库的加速分析。点击确认分析按钮之后,右下角会有对应的进度提示。同时下面的问题弹窗中会展示相关可以优化的函数,即对应的详细信息,比如名称、描述、优化点等。扫描结束之后,会议在当前页面中展示详细的可视化报告。从这个报告中我们可以看出有以下几点重要内容,比如对应的函数名、所在地址、加速方法等,同时提供了查看和下载按钮,用户点击下载会自动跳转到对应的加速库的下载地址,用户可以下载之后进行对应的函数替换。同时用户可以点击查看按钮,跳转到对应的函数地址,方便用户进行下一步的替换。此时鲲鹏开发框架插件给我们提供的三大功能已经全部演示完毕。接下来让我们回到 PPT 看一下鲲鹏开发框架插件的相关关沙箱实验内容。目前鲲鹏社区推出了鲲鹏开发框架的在线实验,用户可以登陆鲲鹏社区搜索基于鲲鹏亲和开发框架进行原生开发这么个实验。这个实验会指导用户创建并运行坤鹏工程,帮助用户快速熟悉原生开发的过程和优势。今天在这里我带大家大概看一下这个实验的一些具体的内容。好,这个实验它的目的是指导用户通过鲲鹏开发框架插件从 0 到 1 完成原生开发的基本开发过程,让用户熟悉原生开发的基本操作过程,体验原生开发带来的极简操作和性能提升。我们看一下实验手册。实验手册中主要分为以下四步,非常简单,安装插件、创建工程并查看工程,最后编译并执行这个鲲鹏工程安装和创建鲲鹏工程。这么两步刚刚已经给大家进行了个展示,查看工棚工程的话,我们来看一下这昆仑工程到底有什么。点击查看工程按钮之后会展示对应的工程内容。我们可以看到在这个实验中创建的是 gzip 相关的一个加速库的 demo 那么这个 demo 里面一共有两个子文件夹,分别是 G zip demo 还有 G zip demo 的源码。那么 G zip 这个源码是已经下载并解压好的 gzip 鲲鹏库。这个加速库针对鲲鹏处理器的架构特点,对 gzip 原生库进行了加速优化。接下来的这个实验就是利用这个 demo 来对比加速库和原生库在解压两个 G 大小文件时的解压效率。
总条数:1108 到第
上滑加载中