【HarmonyOS NEXT+AI】问答05:ArkTS和仓颉编程语言怎么选?
在“HarmonyOS NEXT+AI大模型打造智能助手APP(仓颉版)”课程里面,有学员提到了这样一个问题:
鸿蒙的主推开发语言不是ArkTS吗,本课程为什么使用的是仓颉编程语言?
这里就这位同学的问题,统一做下回复,以方便其他同学参考。往期问答,可以在我主页查到。
鸿蒙编程语言的发展史
在正式介绍ArkTS和仓颉编程语言之前,咱们先来聊一聊鸿蒙编程语言的发展史。笔者从2019年起就开始关注鸿蒙了,因此对鸿蒙发展路线图比较了解。鸿蒙生态支持多种编程语言。以下是常用的鸿蒙编程语言介绍。
早期的HarmonyOS支持的开发语言包括JS(JavaScript)、C/C++。其中,JS主要用于应用开发,而C/C++主要用于设备开发。因为,早期的HarmonyOS只支持手表等智能穿戴设备,所以,用JS是能够胜任的。
从HarmonyOS 2开始,HarmonyOS开始兼容Android,引入了Java开发语言,能够支持手机、平板、智能穿戴、智慧屏、车机、PC、智能音箱、耳机、AR/VR眼镜等多种终端设备,提供全场景(移动办公、运动健康、社交通信、媒体娱乐等)业务能力。此时的HarmonyOS才算真正意义上的“鸿蒙操作系统”,因为已经具有“鸿蒙操作系统”的三大特征。
从HarmonyOS 3开始,引入了华为自研的ArkTS开发语言(前身是eTS)、方舟编译器等。ArkTS基于TypeScript(简称TS)语言扩展而来,是TS的超集。其最大的亮点是,ArkTS在TS基础上主要扩展了声明式UI能力(即ArkUI),让开发者以更简洁、更自然的方式开发高性能应用。
从HarmonyOS 5(HarmonyOS NEXT)开始,引入了华为自研的仓颉编程语言(英文名为Cangjie,简称“仓颉”或者“仓颉语言”),作为一款面向全场景应用开发的现代编程语言,通过现代语言特性的集成、全方位的编译优化和运行时实现、以及开箱即用的IDE工具链支持,为开发者打造友好开发体验和卓越程序性能。
因此,从上述语言的发展史可以推测,鸿蒙选择编程语言,一开始是从实用主义出发的,即一开始想的是如何快速开发应用,如何能快速吸引开发人员参与到鸿蒙的开发中来。早期选择JS,中期选择Java,后期研发ArkTS(语法兼容TS)都是如此,因为这些语言都是现成的,市面上有大量的会这类语言的开发人员。
后期,随着鸿蒙的发展,特别是进入到了HarmonyOS NEXT的新时代,鸿蒙对于性能的要求越来越高,同时,华为的自研水平也上到了一个新的台阶,顺势推出仓颉也就不难理解了。
仓颉编程语言特性
作为一门新进的编程语言,仓颉吸取了各大主流编程语言的优点,形成了自己具有特性。
- 高效编程:面向应用开发,编程语言应该能够易学易用,降低开发者入门门槛和开发过程中的心智负担,支持各种常见的开发范式和编程模式,让开发者简洁高效地表达各种业务逻辑。仓颉是一门多范式编程语言,支持函数式、命令式和面向对象等多种范式,包括值类型、类和接口、泛型、代数数据类型、模式匹配、以及高阶函数等特性。此外,仓颉还支持类型推断,能够减轻开发者类型标注的负担;通过一系列简明高效的语法,能够减少冗余书写、提升开发效率;语言内置的各种语法糖和宏(macro)的能力,支持开发者基于仓颉快速开发领域专用语言(DSL),构建领域抽象。
- 安全可靠:作为现代编程语言,仓颉追求编码即安全,通过静态类型系统和自动内存管理,确保程序的类型安全和null safety等内存安全;同时,仓颉还提供各种运行时检查,包括数组下标越界检查、类型转换检查、数值计算溢出检查、以及字符串编码合法性检查等,能够及时发现程序运行中的错误;此外,还通过代码扫描工具、混淆工具以及消毒器,进一步提供跨语言互操作安全和代码资产保护等支持。
- 轻松并发:并发和异步编程能够有效提高处理器利用率,并在交互式应用中确保程序的响应速度,是应用开发中必不可少的能力。仓颉语言实现了轻量化用户态线程和并发对象库,让高效并发变得轻松。仓颉语言采用用户态线程模型,每个仓颉线程都是极其轻量级的执行实体,拥有独立的执行上下文但共享内存。对开发者来说,用户态线程的使用和传统的系统线程的使用方式保持一致,没有带来额外负担;而从运行态视角看,线程的管理由运行时完成,不依赖操作系统的线程管理,因此线程的创建、调度和销毁等操作更加高效,且资源占用比系统线程更少。为了避免数据竞争,仓颉语言提供了并发对象库,并发对象的方法是线程安全的,因此在多线程中调用这些方法和串行编程没有区别,应用逻辑的开发者无需额外关心并发管理。对于一些核心库,仓颉还提供了无锁或者细粒度锁的算法实现,能够进一步减少线程的阻塞,提升并发度。
- 卓越性能:仓颉编译器及运行时从全栈对编译进行优化,包括编译器前端基于CHIR(Cangjie HighLevel IR)高层编译优化(比如语义感知的循环优化、语义感知的后端协同优化等),基于后端的编译优化(比如:SLP向量化、Intrinsic优化、InlineCache、过程间指针优化、Barrier优化等),基于运行时的优化(比如轻量锁、分布式标记、并发Tracing优化等),一系列的优化让仓颉充分发挥处理器能力,为应用提供卓越的性能支持。另外仓颉语言对运行时进行原生的轻量化设计,通过对运行时模块化分层设计,定义仓颉公共对象模型和运行时公共基础组件,基于公共对象模型,实现运行时的内存管理、回栈、异常处理、跨语言调用等基础能力,大幅减少多个能力间的冗余对象设计,精简运行时体积。同时通过包的按需加载技术,减少仓颉应用启动的冗余包内存开销,因此对于资源敏感设备,占用资源更少,支持更友好。
除此之外,仓颉还支持面向应用开发的一系列工具链,包括语言服务(高亮、联想)、调试(跨语言调试、线程级可视化调试)、静态检查、性能分析、包管理、文档生成、Mock工具、测试框架、覆盖率工具、Fuzz工具以及智能辅助编程工具,进一步提升软件开发体验以及效率。
仓颉编程语言是纯自研的吗?是完全自主可控的吗?
仓颉编程语言是一款由华为主导设计和实现的面向全场景智能的编程语言,从语言规范的制定,到实现以及未来的语言社区都将实现自主可控,该语言没有基于任何现有的编程语言演进。
华为为什么要开发一个新的编程语言?
生态范式的变革,将给未来的智能应用以及Agent开发带来新的诉求和挑战,比如:构建效率、空间计算应用的流畅交互体验、多Agent协同、系统性安全问题等。下一代编程语言应提供原生AI应用开发框架和设计特定DSL(即Agent DSL)来简化应用开发,使模型部署、智能决策等AI相关功能成为开发框架的一部分,给开发者带来高效的开发体验。针对以上挑战,华为设计并实现了一款新的编程语言仓颉。仓颉编程语言具备原生智能化、天生全场景、高性能、强安全等特点,内置定制的Agent DSL以及AI应用开发框架,可支持面向领域的声明式开发,提供模型部署、智能决策、Agent协同的框架能力。 当前在鸿蒙原生应用的开发中,支持声明式UI,一次开发、多端部署的ArkTS语言已经被广泛使用。仓颉语言作为面向未来的下一代编程语言当前已经完成设计与实现并启动了开发者预览,未来将与ArkTS共同发展,为鸿蒙原生应用开发者提供极致高效的开发体验。
仓颉的定位是什么,跟鸿蒙的ArkTS语言什么关系?
仓颉编程语言是一款面向全场景智能的下一代应用编程语言,主打原生智能化,天生全场景,高性能以及强安全,与鸿蒙系统结合,提供良好的编程体验。面向不同业务场景,鸿蒙生态向应用开发者提供仓颉和ArkTS等多语言混合开发能力。仓颉和ArkTS共同发展,在鸿蒙生态中形成优势互补。仓颉更适合有高性能高并发需求的业务场景,仓颉编程语言目标是打造鸿蒙应用在任务并行/数据并行/高频数据交互/高内存开销等典型场景下的性能竞争力。另外未来面向鸿蒙AI原生应用开发,仓颉提供了面向开发者全套的内嵌Agent DSL的编程框架,便于开发者高效的完成鸿蒙AI原生应用开发。
目前仓颉语言性能怎么样?在哪些领域或场景应用推荐使用仓颉编程语言?
关于仓颉的具体应用场景,鸿蒙应用中的任务并行/数据并行/高频数据交互/高内存开销等典型场景,可以获得很好的效果,另外未来关于AI原生应用的开发,可以采用仓颉全套解决方案实现。
仓颉发布后,已经开发的鸿蒙应用是否需要再重新开发一套仓颉版本?
已经开发的应用不需要重新开发仓颉版本。鸿蒙操作系统支持仓颉语言与ArkTS语言高性能互操作。未来开发者可以根据业务场景需要,对新增业务部分,根据具体场景选择使用仓颉编程语言或ArkTS进行增量开发。对应高吞吐量/高频读写的数据处理场景、高频交互高负载场景、对启动时延敏感等场景建议优先选择仓颉语言。
仓颉编程语言与HarmonyOS NEXT是什么关系,与OpenHarmony生态的关系是怎样的?
当前发起的仓颉语言预览版开发套件是基于HarmonyOS NEXT开发的,开发者需要有带HarmonyOS NEXT镜像的手机镜像开发和调试。同样,仓颉语言也会支持OpenHarmony。
除了终端应用开发以外,仓颉未来还会支持其他场景的软件开发吗?
仓颉语言除了终端鸿蒙原生应用场景之外,还可以支持云侧、服务端的软件开发,对标Java/Go的应用开发生态,仓颉希望能够联合更多的开发者共同构建一套企业级的应用开发生态,包括应用框架、中间件及三方库,目前已构建的企业级的应用开发生态在国内已经有多家厂商在用仓颉开发服务端应用了,比如工行、中移动、泛微、科蓝等单位,覆盖金融、电信、电子政务等多个行业。
鸿蒙编程语言的选择
在了解上述鸿蒙编程语言的区别之后,相信各位对于鸿蒙编程语言的选择有了自己的判断能力。读者在选择语言的时候,可以结合自身的情况,综合考虑以下几个方面。
1. 个人的偏好
开发者对于编程语言是有一定的偏好的,选ArkTS或是Java也是可以尊重个人的喜好。
如果你熟悉Java或者Android则可以选Java;如果你熟悉JS或者TS,就可以选ArkTS;如何你熟悉Rust,那么仓颉也是不错的选择。
2. 职业的需要
如果想要实现一个强大的完整的鸿蒙应用功能,且能最大限度适配现有市面上的Android设备,那么现阶段Java是个不错的选择。不过需要注意的是,鸿蒙从API 8之后,就不再支持Java了。有关Java开发鸿蒙应用的相关内容,可以参阅笔者所著的《鸿蒙HarmonyOS手机应用开发实战》《鸿蒙HarmonyOS应用开发从入门到精通战》以及视频教程“鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”。
ArkTS目前是处于鸿蒙生态主推的地位,新商业项目的创建建议基于ArkTS来构建。有关ArkTS开发鸿蒙应用的相关内容,可以参阅笔者所著的《鸿蒙HarmonyOS应用开发入门》《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》《鸿蒙之光HarmonyOS NEXT原生应用开发入门》以及视频教程“鸿蒙零基础快速实战-仿抖音App开发( ArkTS版 )”。
如果你是纯粹想学习一门新语言,想不断跟随语言的演进,那么仓颉也是不错的选择。从未来发展上看,仓颉有可能会替补ArkTS,作为主力开发语言。不过需要注意的是,仓颉目前还只是开发者预览版本,API处于一种不稳定的状态,功能也不太完善,不建议在商业场景使用。有关仓颉编程语言的相关内容,可以参阅笔者所著的《仓颉编程从入门到实践》以及视频教程“HarmonyOS NEXT+AI大模型打造智能助手APP(仓颉版)”。
参考资料
更多开源教程,详见:
- 《跟老卫学HarmonyOS开发》:https://github.com/waylau/harmonyos-tutorial
- 《跟老卫学仓颉编程语言开发》:https://github.com/waylau/cangjie-programming-language-tutorial
相关文章:
【HarmonyOS NEXT+AI】问答05:ArkTS和仓颉编程语言怎么选?
在“HarmonyOS NEXTAI大模型打造智能助手APP(仓颉版)”课程里面,有学员提到了这样一个问题: 鸿蒙的主推开发语言不是ArkTS吗,本课程为什么使用的是仓颉编程语言? 这里就这位同学的问题,统一做下回复,以方便…...
20250509 相对论中的\*\*“无空间”并非真实意义上的虚无,而是时空结构尚未形成\*\*的状态。 仔细解释下这个
相对论中的**“无空间”并非真实意义上的虚无,而是时空结构尚未形成**的状态。 仔细解释下这个 相对论中的“无空间”这一概念,严格来说并非绝对的虚无,而是指在物理学上时空结构尚未形成或无法定义的状态。这种状态通常出现在宇宙起源和黑洞…...
T-SQL在SQL Server中判断表、字段、索引、视图、触发器、Synonym等是否存在
SQL Server创建或者删除表、字段、索引、视图、触发器前判断是否存在。 目录 1. SQL Server创建表之前判断表是否存在 2. SQL Server新增字段之前判断是否存在 3. SQL Server删除字段之前判断是否存在 4. SQL Server新增索引之前判断是否存在 5. SQL Server判断视图是否存…...
C——数组和函数实践:扫雷
此篇博客介绍用C语言写一个扫雷小游戏,所需要用到的知识有:函数、数组、选择结构、循环结构语句等。 所使用的编译器为:VS2022。 一、扫雷游戏是什么样的,如何玩扫雷游戏? 如图,是一个标准的扫雷游戏初始阶段。由此…...
Java中的分布式缓存与Memcached集成实战
一、概述 分布式缓存是提升系统性能和扩展性的关键技术之一。Memcached作为一种高性能的分布式内存对象缓存系统,在许多场景下被广泛使用。本文将深入探讨如何在Java项目中集成Memcached,实现高效的分布式缓存。 二、Memcached简介 Memcached是一种高…...
OpenCV播放摄像头视频
OpenCV计算机视觉开发实践:基于Qt C - 商品搜索 - 京东 播放摄像头视频和播放视频文件类似,也是通过类VideoCapture来实现,只不过调用open的时候传入的是摄像头的索引号。如果计算机安装了一个摄像头,则open的第一个参数通常是0&…...
[计算机科学#13]:算法
【核知坊】:释放青春想象,码动全新视野。 我们希望使用精简的信息传达知识的骨架,启发创造者开启创造之路!!! 内容摘要: 算法是解决问题的系统化步骤,不同的问题…...
git相关
1.将 dev 变基到 origin/master git rebase 是一个本地操作,它只会修改你当前所在分支的提交历史,而不会直接影响远程仓库或任何其他分支。 保持提交历史的线性和整洁: 这是 git rebase 最主要的目的。 想象一下 dev 分支是从 master 分支分…...
Web端项目系统访问页面很慢,后台数据返回很快,网络也没问题,是什么导致的呢?
Web端访问缓慢问题诊断指南(测试工程师专项版) ——从浏览器渲染到网络层的全链路排查方案 一、问题定位黄金法则(前端性能四象限) 1. [网络层] 数据返回快 ≠ 资源加载快(检查Content Download时间) 2. [渲染层] DOM复杂度与浏览器重绘(查看FPS指标) 3. [执行层…...
计算机系统结构-第九章-互联网络 第十章
目录 恒等函数:I(没变) 交换函数:某一位取反 如下 角标为0,第0位取反 均匀洗牌函数、混洗函数Shuffle :σ 左移一位 (左移右边补0,右移左边补0) 蝶式互连函数but…...
H5 移动端适配最佳实践落地指南。
文章目录 前言一、为什么需要移动端适配?二、核心适配方案1. 视口(Viewport)设置2. 三种适配方案 (仅供参考)(1)rem 适配方案(2)vw/vh 适配方案(3)…...
从电动化到智能化,法雷奥“猛攻”中国汽车市场
当前,全球汽车产业正在经历前所未有的变革,外资Tier1巨头开始向中国智能电动汽车市场发起新一轮“猛攻”。 在4月23日-5月2日上海国际车展期间,博世、采埃孚、大陆集团、法雷奥等全球百强零部件厂商纷纷发布战略新品与转型计划。在这其中&am…...
智能网联汽车 “中央计算” 博弈:RTOS 与跨域融合的算力分配挑战
一、引言 随着智能驾驶技术的飞速发展,汽车逐渐从传统的交通工具演变为移动的智能终端。智能网联汽车的核心竞争力日益体现在其强大的计算能力和高效的算力管理上。汽车电子电气架构(EEA)正经历从分布式架构向 “中央计算 区域控制” 架构的…...
springboot 加载 tomcat 源码追踪
加载 TomcatServletWebServerFactory 从 SpringApplication.run()方法进入 进入到 refresh () 方法 选择实现类 ServletWebServerApplicationContext 进入到 AbstractApplicationContext onRefresh() 方法创建容器 找到加载bean 得到 webServer 实例 点击 get…...
AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月9日第72弹
从今天开始,咱们还是暂时基于旧的模型进行预测,好了,废话不多说,按照老办法,重点8-9码定位,配合三胆下1或下2,杀1-2个和尾,再杀6-8个和值,可以做到100-300注左右。 (1)定…...
企业高性能WEB服务器—Nginx
Nginx介绍 Nginx是一款轻量级的网页服务器、反向代理服务器以及电子邮件代理服务器。 具有高并发(特别是静态资源)、占用系统资源少的特性。它不仅是Web服务软件,还具有反向代理负载均衡功能和缓存服务功能 具备如下基本特性 可针对静态资…...
neo4j图数据库基本概念和向量使用
一.节点 1.新建节点 create (n:GroupProduct {name:都邦高保额团意险,description: "保险产品名称"} ) return n CREATE:Neo4j 的关键字,用于创建新节点或关系。 (n:GroupProduct): n 是节点的临时别名(变量名&#…...
安全核查基线-3.用户umask设置策略
在Linux中,umask(用户文件创建掩码)是一个重要的权限管理机制,用于控制新创建的文件和目录的默认权限。umask的值决定了文件或目录的初始权限中哪些权限位会被屏蔽(即不可用)。 1. umask 的作用 文件默认权…...
UE像素流是什么
UE像素流是什么 UE像素流送是一种云渲染技术,由虚幻引擎(UE)提出,用于在浏览器中运行高画质3D应用或游戏。其原理是在远程计算机(可以是云端服务器或本地高性能服务器)上运行UE开发的应用程序,…...
【C】初阶数据结构14 -- 归并排序
本篇文章主要是讲解经典的排序算法 -- 归并排序 目录 1 递归版本的归并排序 1) 算法思想 2) 代码 3) 时间复杂度与空间复杂度分析 (1) 时间复杂度 (2) 空间复杂度 2 迭代版本的归并…...
02_线性模型(回归线性模型)
描述 线性模型是在实践中广泛使用的一类模型,线性模型利用输入特征的线性函数(linear function)进行预测。 用于回归的线性模型 对于回归问题,线性模型预测的一般公式如下: $ \widehat y w[0]*x[0]w[1]*x[1]…w[p…...
当当网Top500书籍信息爬取与分析
爬取当当网的Top500书籍信息,并对书籍的评价数量进行排序,然后绘制前十名的条形图,然后对各个出版社出版的书籍数量进行排序,绘制百分比的饼图 # 导入所需的模块 import re # 正则表达式模块,用于提取文本中的特定模…...
Spring生态全景解析:Spring、Spring MVC、SpringBoot与Spring Cloud的关系
Spring生态全景解析:Spring、Spring MVC、SpringBoot与Spring Cloud的关系 1. Spring框架简介 Spring框架是一个轻量级的Java开发框架,由Rod Johnson于2003年创建。它主要解决了企业级Java开发中的复杂性,通过依赖注入(DI)和面向切面编程(A…...
STM32-TIM定时中断(6)
目录 一、TIM介绍 1、TIM简介 2、定时器类型 3、基本定时器 4、通用定时器 5、定时中断基本结构 6、时基单元的时序 (1)预分频器时序 (2)计数器时序 7、RCC时钟树 二、定时器输出比较功能(PWM) …...
Godot4.3类星露谷游戏开发之【昼夜循环】
千里之行,始于足下 文章目录 零、 笔记一、创造时间二、产生颜色三、搭建测试环境四、测试五、免费开源资产包 零、 笔记 为了让游戏可以拥有白天和黑夜,我们需要像上帝一样,在游戏中创造时间的规则,并在不同的时间点产生不同的颜…...
工业与协议融合篇:如何将多个协议集成进一个系统?
🏭 本文为《嵌入式通信协议全解析》第六篇,深入探讨如何在工业或物联网系统中同时集成 BLE、CAN、LoRa、MQTT、RS485 等多种通信协议,实现一个高效、可控、稳定运行的嵌入式通信架构。 🧭 一、为什么需要多协议融合? 在真实产品中,单一通信协议往往无法满足所有业务需…...
java-----------------多态
多态,当前的成指的是 java 所呈现出来的一个对象 多态 定义 多态是指同一个行为具有多个不同表现形式或形态的能力。在面向对象编程中,多态通过方法重载和方法重写来实现。 强弱类型语言 javascript 或者python 是弱类型语言 C 语言,或…...
vLLM部署Qwen2-7B模型推理
vllm简介 vLLM是一个高效的大语言模型推理和部署服务系统,专为大型语言模型的高效执行而设计。它不仅支持多种量化技术以减少模型大小和加速推理过程,还提供了与OpenAI API兼容的服务接口,使得现有的应用程序能够无缝对接。 一、前提环境 …...
SSL证书格式详解:PEM、CER、DER、JKS、PKCS12等
引言 在网络安全领域,SSL/TLS证书是保障互联网通信安全的核心工具。它们通过加密连接,确保服务器与客户端之间的数据隐私和完整性。然而,对于初学者来说,SSL证书的多种格式——PEM、CER、JKS、PKCS12、PFX等——常常令人困惑。每…...
idea spring boot 打包成可执行的 JAR包
idea 2023 spring boot 2.6.13 打包成可执行的 JAR包 创建一个 简单的 spring boot 程序 idea File — New — Project 11 22 11 package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.b…...
设计模式-迭代器模式
写在前面 Hello,我是易元,这篇文章是我学习设计模式时的笔记和心得体会。如果其中有错误,欢迎大家留言指正! 案例 假设有一个Book类和一个管理书籍的BookCollection类,我们需要遍历BookCollection类中所有书籍信息。 一…...
Java 匿名内部类的作用
简化代码:无需专门定义一个具名类来实现接口或继承类,减少类文件数量,在只需简单实现特定功能时,让代码更简洁紧凑 。比如创建线程时,使用匿名内部类实现 Runnable 接口,直接在代码块中编写线程执行逻辑&am…...
MySQL数据库故障排查与解决方案
一、故障排查流程图 #mermaid-svg-hF8hhP2lrqWDbNhV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hF8hhP2lrqWDbNhV .error-icon{fill:#552222;}#mermaid-svg-hF8hhP2lrqWDbNhV .error-text{fill:#552222;stroke:…...
C#学习——继承、封装、多态
一、继承 1)什么是继承? 官方话:允许一个类继承另一个类的字段和方法 个人理解:子类可以使用父类已经授权的所有字段和方法,子承父业 2)使用方式 方式:子类:父类 class…...
数据库基础:概念、原理与实战示例
在当今信息时代,数据已经成为企业和个人的核心资产。无论是社交媒体、电子商务、金融交易,还是物联网设备,几乎所有的现代应用都依赖于高效的数据存储和管理。数据库(Database)作为数据管理的核心技术,帮助…...
AI与计算机视觉(CV):目标检测与图像分割的最新进展
AI与计算机视觉(CV):目标检测与图像分割的最新进展 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 AI与计算机视觉(CV):目标检测与图像分割的…...
嵌入式开发学习日志Day17
第十一章 结构体与共用体 一、结构体 1、结构体 一般形式 【struct 标识符】 结构体中的标识符一般首字母大写; 【.】结构体成员运算符; 优先级 1 级 结合方向:从左至右; 【->】:指向结构体成员运算符&#x…...
awesome-digital-human本地部署及配置:打造高情绪价值互动指南
在数字化交互的浪潮中,awesome-digital-human-live2d项目为我们打开了本地数字人互动的大门。结合 dify 聊天 api,并借鉴 coze 夸夸机器人的设计思路,能为用户带来充满情绪价值的交互体验。本文将详细介绍其本地部署步骤、dify 配置方法及情绪…...
ClickHouse多表join的性能优化:原理与源码详解
本文将从底层原理和源代码的角度详细解释 ClickHouse 多表 JOIN 的处理过程,尽量用通俗移动的语言,让初学者也能理解。本文会分步骤推导,涵盖 JOIN 的原理、实现方式、关键代码逻辑以及优化机制,同时确保逻辑清晰、内容全面。最后…...
国产Excel处理控件Spire.XLS系列教程:C# 将Excel文件转换为Markdown格式
Microsoft Excel 是一款强大的数据管理工具,广泛用于数据处理和分析。然而,其专有格式(如 XLS 和 XLSX)在不同平台之间共享时,常常面临兼容性问题。相比之下,Markdown 是一种轻量级的标记语言,因…...
C++线程库
1. 基本概念 1.1 线程(Thread) 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程可以并发多个线程,每条线程并行执行不同的任务。 1.2 并发与并行 并发(Concurren…...
Missashe计网复习笔记(随时更新)
Missashe计算机网络复习笔记 前言:这篇笔记用于博主对计网这门课所学进行记录和总结,也包括一些个人的理解。正在更新当中…… 第一章 计算机网络体系结构 考纲内容 (一) 计算机网络概述 计算机网络的概念、组成与功能;计算机网络的分类; 计算机网络…...
解决osx-arm64平台上conda默认源没有提供 python=3.7 的官方编译版本的问题
CONDA_SUBDIRosx-64 conda create -n py37_env python3.7 是一个用于创建特定架构环境的命令,主要针对 macOS 系统。下面为你详细解析它的功能和作用: 命令功能解析 这个命令的主要功能是创建一个名为 py37_env 的 Conda 环境,并且指定该环…...
Cjson格式解析与接入AI大模型
JSON格式的解析与构造 基本概念 JSON是JavaScript Object Notation的简称,中文含义为“JavaScript 对象表示法”,它是一种数据交换的文本格式,而不是一种编程语言。 JSON 是一种轻量级的数据交换格式,采用完全独立于编程语言的…...
RocketMQ 深度解析:架构设计与最佳实践
在分布式系统架构日益复杂的今天,消息中间件作为系统间通信的桥梁,扮演着至关重要的角色。RocketMQ 作为阿里开源的高性能分布式消息中间件,凭借其卓越的性能、丰富的功能以及高可用性,在电商、金融、互联网等众多领域得到广泛应用…...
【Light】帕多瓦大学超表面技术:开启矢量光束相位偏振定制新时代
01 前言 近年来,完美涡旋光束(Perfect Vortex Beams)因其独特的环形强度分布和与拓扑电荷无关的特性,成为研究热点。然而,传统方法在生成此类光束时面临相位和偏振控制的挑战,通常需要复杂的光学系统或多重…...
2021-11-15 C++下一个生日天数
缘由c今日日期到生日天数-编程语言-CSDN问答 int isLeap(int year)//判断闰年 {//缘由https://ask.csdn.net/questions/7567048?spm1005.2025.3001.5141return ((!(year % 4) && year % 100) || !(year % 400)); } int daysInMonth(int year, int month)//返回月天数…...
基于nodejs + Koa +Nuxt3的订单系统项目实战
以下是一个基于 Node.js Koa Nuxt3 的订单系统项目实战指南,包含关键实现步骤和代码示例: 一、项目架构设计 project/ ├── backend/ # Koa 后端 │ ├── config/ # 配置文件 │ ├── controllers/ # 控制器 │ ├──…...
# YOLOv2:目标检测的升级之作
YOLOv2:目标检测的升级之作 在目标检测领域,YOLO(You Only Look Once)系列算法以其高效的速度和创新的检测方式受到了广泛关注。今天,我们就来深入探讨一下 YOLOv2,看看它是如何在继承 YOLOv1 的基础上进行…...
国债收益率、需求与抛售行为的逻辑解析
国债收益率、需求与抛售行为的逻辑解析 1. 国债收益率的定义 国债收益率是衡量国债投资回报的核心指标,分为两种常见计算方式: 当前收益率(Current Yield):年利息收入 债券当前市场价格 例如:面值100元、…...