多模块应用、发布使用第三方库(持续更新中)
目录:
1、多模块概述(HAP、HSP、HAR)
HAR与HSP两种共享包的主要区别体现在:
2、三类模块:
3、创建项目:项目名:meituan
(1)创建Ability类型的Module,编译后为HAP文件
① 创建编译后为HAP,entry类型的模块 waimai(外卖)
② 创建编译后为HAP,features类型的模块 qixing(qixing)
③ 创建编译后为HAP,features类型的模块 jiudian(jiiudian)扩展功能模块
(2)创建Library类型的Module
② 创建Static Library:静态共享库mylib02。编译后会生成一个以.har为后缀的文件,即静态共享包HAR(Harmony Archive)。
HAP
HSP
HAR
4-1 模块内跳转:
① 在同一个HAP中的多个Page间跳转:
② 在同一个HAP中的多个UIAbility间跳转:
4-2 跨HAP模块跳转
1、从一个HAP跳转到另一个HAP
(1)为HAP模块添加所需要的模块依赖
(2)从外卖模块跨HAP跳转到骑行模块
2、使用HSP
① HSP模块中可以创建公共页面,并导出,从而供多个HAP来使用:
② HSP模块中可以创建公共组件,并导出,从而供多个HAP来使用:
③ HSP模块中可以创建公共对象和方法,并导出,从而供多个HAP来使用:
3、使用HAR
① HAR不支持在配置文件中声明pages页面,但是可以包含pages页面,并通过命名路由的方式进行跳转:
② HAR模块中可以创建公共组件,并导出,从而供多个HAP来使用:
③ HAR模块中可以创建公共对象和方法,并导出,从而供多个HAP来使用
1、多模块概述(HAP、HSP、HAR)
模块分为两大类:Ability(分为Entry/Feature两大类) 和 Library (分为Shared/Static两大类)
严格来讲是分为四类。
不同类型模块编译打包后的类型不同:
① Ability(分为Entry/Feature两大类)-----》编译后后缀名为 .hap
② Library (分为Shared/Static两大类):
Shared ----> 编译后后缀名为 .hsp
Static ----> 编译后后缀名为 .har
注意:编译后没有src/main目录;
.ets --> .js ---> .abc
上架后是.app文件
-
Ability类型的Module: 用于实现应用的功能和特性。每一个Ability类型的Module编译后,会生成一个以.hap为后缀的文件,我们称其为HAP(Harmony Ability Package)包。HAP包可以独立安装和运行,是应用安装的基本单位,一个应用中可以包含一个或多个HAP包,具体包含如下两种类型。
- entry类型的Module:应用的主模块,包含应用的入口界面、入口图标和主功能特性,编译后生成entry类型的HAP。每一个应用分发到同一类型的设备上的应用程序包,只能包含唯一一个entry类型的HAP。
- feature类型的Module:应用的动态特性模块,编译后生成feature类型的HAP。一个应用中可以包含一个或多个feature类型的HAP,也可以不包含。
-
Library类型的Module: 用于实现代码和资源的共享。同一个Library类型的Module可以被其他的Module多次引用,合理地使用该类型的Module,能够降低开发和维护成本。Library类型的Module分为Static和Shared两种类型,编译后会生成共享包。
说明:
实际上,Shared Library编译后除了会生成一个.hsp文件,还会生成一个.har文件。这个.har文件中包含了HSP对外导出的接口,应用中的其他模块需要通过.har文件来引用HSP的功能。为了表述方便,我们通常认为Shared Library编译后生成HSP。
HAR与HSP两种共享包的主要区别体现在:
共享包类型 编译和运行方式 发布和引用方式 HAR HAR中的代码和资源跟随使用方编译,如果有多个使用方,它们的编译产物中会存在多份相同拷贝。
注意:编译HAR时,建议开启混淆能力,保护代码资产。
HAR除了支持应用内引用,还可以独立打包发布,供其他应用引用。 HSP HSP中的代码和资源可以独立编译,运行时在一个进程中代码也只会存在一份。 HSP一般随应用进行打包,当前支持应用内和集成态HSP。应用内HSP只支持应用内引用,集成态HSP支持发布到ohpm私仓和跨应用引用。 - Static Library:静态共享库。编译后会生成一个以.har为后缀的文件,即静态共享包HAR(Harmony Archive)。
- Shared Library:动态共享库。编译后会生成一个以.hsp为后缀的文件,即动态共享包HSP(Harmony Shared Package)。
面试题:静态库与共享库的区别?
静态库:写只写一份,其他Ability类型的module使用时,将其复制一份过去。其他使用的模块都会拷贝一份,会将项目的体积变大。
共享库:只保存一份,谁用,调用就行。可以节省应用的体积。
2、三类模块:
开发者可以根据实际场景所需的能力,选择相应类型的包进行开发。在后续的章节中还会针对如何使用HAP、HAR、HSP分别展开详细介绍。
规格 | HAP (Harmony Ability Package) | HAR (Harmony Archive) | HSP (Harmony Shared Package |
---|---|---|---|
功能使用及适合场合 | 分为entry和feature;应用的功能模块,可以独立安装和运行 | 静态共享包,编译态复用。 - 多包(HAP/HSP)引用相同的HAR时,会造成多包间代码和资源的重复拷贝,从而导致应用包膨大 | 动态共享包,运行时复用。 - 当多包(HAP/HSP)同时引用同一个共享包时,可以避免HAR造成的多包间代码和资源的重复拷贝,从而减小应用包大小 |
支持在配置文件中声明UIAbility组件与ExtensionAbility组件 | √(entry和feature都有界面) | × har供其他模块使用 | × |
支持在配置文件中声明pages页面 | √ | × har的module.json5中没有pages属性 | √ |
支持包含资源文件与.so文件(如NDK,用c++编写) | √ | √ | √ |
支持依赖其他HAR文件 | √ | √ | √ |
支持依赖其他HSP文件 | √ | √ | √ |
支持在设备上独立安装运行 | √ | × 支持应用内共享 或 发布后供其他应用使用 | × 当前仅支持应用内共享 |
注意:HAR 可以在当前项目内使用,也可以单独到处去供其他项目使用,可以发布出去,做成公共的第三方模块,供其他应用使用。而HSP仅支持当前应用使用。
例如:某跳动的某音可以使用头条的HAR
说明
- HAR虽然不支持在配置文件中声明pages页面,但是可以包含pages页面,并通过命名路由的方式进行跳转。
- 由于HSP仅支持应用内共享,如果HAR依赖了HSP,则该HAR文件仅支持应用内共享,不支持发布到二方仓或三方仓供其他应用使用,否则会导致编译失败。
- HAR和HSP均不支持循环依赖,也不支持依赖传递。
3、创建项目:项目名:meituan
(1)创建Ability类型的Module,编译后为HAP文件
① 创建编译后为HAP,entry类型的模块 waimai(外卖)
构建模块
修改外卖页面首页:
② 创建编译后为HAP,features类型的模块 qixing(qixing)
如果不导出,其他模块无法调用它!
全局构建编译后:
修改骑行页面首页:
运行外卖waimai首页:
运行骑行qixing首页
③ 创建编译后为HAP,features类型的模块 jiudian(jiiudian)扩展功能模块
打包,构建
修改酒店模块首页
总结:
以上三个模块都打包为 HAP ,都有独立的页面可以运行!
(2)创建Library类型的Module
① 创建Shared Library:动态共享库mylib01。编译后会生成一个以.hsp为后缀的文件,即动态共享包HSP(Harmony Shared Package)。
build构建整个APP
启动mylib01发现不能独立运行,只有HAP才能独立运行
创建一个(Static Library)静态共享库mylib02
② 创建Static Library:静态共享库mylib02。编译后会生成一个以.har为后缀的文件,即静态共享包HAR(Harmony Archive)。
可以供应用本身,也可以发布出去,作为第三方库,供其他所有的应用使用。
build全局构建编译
为了看起来方便,可以修改视图为Ohos视图模型
HAP
HAP(Harmony Ability Package)是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包;
只有HAP可以独立使用
主要分为两种类型:entry和feature:
① entry:应用的主模块,作为应用的入口,提供了应用的基础功能;
② feature:应用的动态特性模块,作为应用能力的扩展,可以根据用户的需求和设备类型进行选择性安装;
注意:应用程序包可以只包含一个基础的entry包,也可以包含一个基础的entry包和多个功能性的feature包
不支持导出HAP中的接口和ArkUI组件,供其他HAR/HSP模块使用!!!
在HAP中创建函数、组件、类只能在当前这个函数中使用,不能导出供HAR/HSP使用。
HAR/HSP可以导出供HAP使用。
HSP
HSP(Harmony Shared Package)是动态共享包,可以包含代码、C++库、资源和配置文件,通过HSP可以实现代码和资源的共享。HSP不支持独立发布,而是跟随其宿主应用的APP包一起发布,与宿主应用同进程,具有相同的包名和生命周期。
主要使用场景:
① 多HAP或者HSP共用的代码、资源可以使用HSP,提高代码的可重用性和可维护性;
② 按需加载,HSP包在运行时再按需加载;
③ 元服务分包及预加载;
HAR
HAR(Harmony Archive)是静态共享包,可以包含代码、C++库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。
使用场景:
① 导出公共ArkUI组件或ts类/方法供当前应用的其它HAP和HSP使用;
② 作为二方库,发布到OHPM私仓,供公司内部其他应用使用;
③ 作为三方库,发布到OHPM中心仓,供其他应用使用;
4-1 模块内跳转:
① 在同一个HAP中的多个Page间跳转:
多个页面公用同一个窗口
//模块内多个页面间跳转
router.pushUrl({url: 'pages/Details'
})
② 在同一个HAP中的多个UIAbility间跳转:
每个页面都有独立的窗口
//模块内多个UIAbility间跳转
let want: Want = {deviceId: '', //可选参数,传空表示本设备bundleName: 'cn.tedu.myapp', //必需参数,应用唯一标识moduleName: 'entry', //可选参数,模块名称abilityName: 'ChatAbility', //必须参数,UIAbility名称
}
let ctx = getContext(this) as common UIAbilityContext
ctx.startAbility(want)
4-2 跨HAP模块跳转
1、从一个HAP跳转到另一个HAP
每个HAP上架到应用商店都是可以根据客户端设备情况独立安装的,如果希望跳转到其它模块,必须在当前模块的编译配置中声明“多Hap同时部署(Deploy Multi Hap)”
(1)为HAP模块添加所需要的模块依赖
为外卖waimai模块添加所需依赖:
同理:对骑行qixing模块、酒店jiudian添加依赖
跨模块的多个页面也都有各自的运行时窗口
(2)从外卖模块跨HAP跳转到骑行模块
Button('1、跳转到另一个HAP模块(骑行)中的页面').onClick(_=>{// 不可能使用router跳转到另一个HAP中的界面,因为module.json5中的pages是独立的// 只能使用startAbility(),启动另一个HAP的窗口加载它的页面let ctx = getContext() as common.UIAbilityContextctx.startAbility({bundleName:'com.tedu.meituan',moduleName:'qixing', //想要跳转的模块名abilityName:'QixingAbility',// parameters: 启动哪一个页面,如果不写,默认页面})})
此时点击可以跳转到,骑行模块的默认加载页面。但是有两个窗口。
2、使用HSP
① HSP模块中可以创建公共页面,并导出,从而供多个HAP来使用:
HSP没有窗口,HAP有窗口,则可以使用URL
在HSP模块mylib01中创建AppCopyright.ets页面
分配路由地址(此处可以不写,但最好写上):
Button('2、跳转到另一个HSP模块(mylib01)中的页面').onClick(_=>{// 不能使用startAbility()跳转,因为HSP没有UIAbility// 只能是使用router跳转router.pushUrl({url:'@bundle:com.tedu.meituan/mylib01/ets/pages/AppCopyright'})})
成功跳转到HSP指定的页面,而且只有一个窗口
② HSP模块中可以创建公共组件,并导出,从而供多个HAP来使用:
1、HSP模块mylib01中创建components文件夹,创建TitleBar.ets页面,写组件
2、在HSP模块mylib01最外层导出组件
3、在HAP模块waimai中的最外层Index.ets中添加依赖
4、在HAP模块waimai中index.ets页面中使用来自HSP中的自定义组件
5、显示成功!
③ HSP模块中可以创建公共对象和方法,并导出,从而供多个HAP来使用:
1、在HSP模块mylib01中创建components文件夹,创建TitleBar.ets页面,写公共方法
2、在HSP模块mylib01最外层导出
3、在HAP模块waimai中的最外层Index.ets中添加依赖
4、在HAP模块waimai中index.ets页面中调用来自HSP中的
3、使用HAR
① HAR不支持在配置文件中声明pages页面,但是可以包含pages页面,并通过命名路由的方式进行跳转:
HAR里面没有pages,没有地址
为了看起来清晰修改目录结构
1、在HAR模块mylib02中声明页面
2、在HAR模块mylib02的最外层的Index.ets中导出上述页面(此处可导出也可不导出)
3、在HSP模块waimai的oh-package5中添加依赖
4、在HSP模块waimai中添加跳转按钮:
手动添加路由地址:
Button('4、调用另一个HAR模块(mylib02)中的也买你').onClick(_=>{router.pushNamedRoute({name:'login',params:{}})})
② HAR模块中可以创建公共组件,并导出,从而供多个HAP来使用:
与使用HSP的方式完全一样!
1、在HAR模块mylib02中创建组件
2、在HAR模块mylib02最外层中导出组件
3、在HSP模块中添加依赖
4、在HSP模块中调用HSP的组件
③ HAR模块中可以创建公共对象和方法,并导出,从而供多个HAP来使用
与使用HSP的方式完全一样!
创建方法
在HAP中最外层中导出
在HSP中添加HAR依赖
在HSP中的页面调用HAP的方法
注意:如果HAR导入的多个公共模块中有重名成员,可以用as取别名
第三方库
HAR----mylib02
目前,HSP包只能在应用内被其它模块引用; HAR共享包可以在当前项目中使用,或者打包后发布为二方库/三方库,供其它项目或其他开发者使用。
上架只需要上架HAP
相关文章:
多模块应用、发布使用第三方库(持续更新中)
目录: 1、多模块概述(HAP、HSP、HAR) HAR与HSP两种共享包的主要区别体现在: 2、三类模块: 3、创建项目:项目名:meituan (1)创建Ability类型的Module,编译后为HAP文件…...
MVP模式的理解和实践
MVP(Model-View-Presenter)模式是一种用于组织代码的架构模式,主要用于用户界面的开发。它通过将应用程序的三个主要组件分开,提高了应用的可维护性和可测试性。本文将详细介绍MVP模式的理解和实践,并通过Java语言提供…...
开启第二阶段---蓝桥杯
一、12.10--数据类型的范围及转化 今天是刚开始,一天一道题 对于这道题我想要记录的是Java中的整数默认是 int 类型,如果数值超出了 int 的范围,就会发生溢出错误。为了避免这个问题,可以将数字表示为 long 类型,方法…...
Linux 网络流量控制 - 实现概述
摘要 Linux 提供了一整套丰富的流量控制(traffic control)功能。本文档概述了相应的内核代码设计,描述了其结构,并通过描述一种新的排队策略来说明新元素的添加。 1 引言 最近的Linux内核提供了多种流量控制功能。Alexey Kuznetsov(kuznet…...
分布式 Raft算法 总结
前言 相关系列 《分布式 & 目录》《分布式 & Raft算法 & 总结》《分布式 & Raft算法 & 问题》 参考文献 《Raft一致性算法论文译文》《深入剖析共识性算法 Raft》 简介 Raft 木筏是一种基于日志复制实现的分布式容错&一致性算法。在Raft算法…...
【前端面试题】变量提升、闭包、promise
飞书面试 题目1: async function foo() {console.log(foo start);await bar();console.log(foo end); }async function bar() {console.log(bar start);return new Promise((resolve, reject) > {setTimeout(() > {console.log(bar promise);resolve();}, 1…...
UE5安装Fab插件
今天才知道原来Fab也有类似Quixel Bridge的插件,于是立马就安装上了,这里分享一下安装方法 在Epic客户端 - 库 - Fab Library 搜索 Fab 即可安装Fab插件 然后重启引擎,在插件面板勾选即可 然后在窗口这就有了 引擎左下角也会多出一个Fab图标…...
数据分析思维(一):业务指标(数据分析并非只是简单三板斧)
个人认为,数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python,更重要的是数据分析思维。没有数据分析思维和业务知识,就算拿到一堆数据,也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》&#x…...
linux下socket本地套接字通讯
使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。socket进程通信与网络通信使用的是统一套接口,只是地址结构与某些参数不同。 用途 进程间通信:本地套…...
vmcore和kdump
在Linux系统中,vmcore是指内核崩溃时生成的内存转储文件。这个文件包含了系统崩溃时的内存状态,可以用于分析和诊断内核崩溃的原因。分析vmcore文件通常需要使用专门的工具和方法。以下是关于vmcore的一些关键点: 生成vmcore Kdump…...
[线段树] 回转寿司
题目描述 酷爱日料的小 Z Z Z 经常光顾学校东门外的回转寿司店。在这里,一盘盘寿司通过传送带依次呈现在小Z眼前。 不同的寿司带给小Z的味觉感受是不一样的,我们定义小 Z Z Z 对每盘寿司都有一个满意度。 例如小 Z Z Z 酷爱三文鱼,他对…...
RobotFrameWork详解-RF框架脚本测试集成
Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。 之前讲过很多RF框架的内…...
【操作系统】实验八:添加/proc文件系统
实验八 添加/proc文件系统 8.1 实验目的 通过加载内核模块,为/proc文件系统创建以下内容: 一个名叫proc_test的子目录。 一个名叫current的文件,只读,读出的内容是读它的进程的情况。 一个名叫current_too的链接,…...
操作系统(8)死锁
一、概念 死锁是指在一个进程集合中的每个进程都在等待只能由该集合中的其他进程才能引起的事件,而无限期地僵持下去的局面。在多任务环境中,由于资源分配不当,导致两个或多个进程在等待对方释放资源时陷入无限等待的状态,这就是死…...
3D 生成重建039-Edify 3D:Nvidia的3D生成大模型
3D 生成重建039-Edify 3D:Nvidia的3D生成大模型 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 文档介绍了Edify 3D,一种为高质量的3D资产生成而设计的高级解决方案。首先在多个视点上合成了所描述对象的RGB和表面法线图像正在使用扩散模型。然后使用多视图…...
vue绕过rules自定义编写动态校验
今天犯了个低级错误,虽然走了很多弯路,但这个过程还是值得记录一下 例子如下,有两个输入框: 第一个是套餐选择下拉框,可以下拉选择三个内容 第二个要根据上面的套餐选择三个选项来决定怎么显示,使用v-if&…...
.NET中的JSON序列化库:Newtonsoft.Json与System.Text.Json对比与示例
在.NET生态系统中,存在多个用于JSON序列化的库,其中最为常用和知名的包括Newtonsoft.Json(也称为Json.NET)和System.Text.Json。以下是这两个库的区别: Newtonsoft.Json(Json.NET) 功能与灵活…...
Electron-Vite 项目搭建(Vue)
前提条件 Node.js: 确保已安装 Node.js 版本 18 或更高版本 (推荐使用最新稳定版)。Vite: 确保 Vite 版本为 4.0 或以上。包管理工具: 推荐使用 pnpm,但也可以使用 npm 或 yarn。 安装 Electron-Vite 首先,在项目中安装 electron-vite 作为开发依赖&a…...
Elasticsearch Java Api Client中DSL语句的查询方法汇总
说明:示例代码依赖的是co.elastic.clients:elasticsearch-java:8.16.1。 1、termQuery 方法 用途:用于精确匹配某个字段的完全相等的值。这在查询如文档的 ID、状态码等具有明确取值的字段时非常有用。参数说明: field:这是一个…...
Linux之远程登录
一、使用ssh命令登录 winR打开cmd输入命令 # root是命令,192.168.101.200是地址 ssh root192.168.101.200是否要保存密码,就是yes以后可以免密登录,这里就yes了 输入密码,就登录成功了 操作完成之后,输入命令退出 e…...
医学图像分割数据集腹部肝脏多器官图像分割数据集labelme格式860张10类别
数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):860 标注数量(json文件个数):860 标注类别数:10 标注类别名称:["liver","stomach","o…...
Xerces-C,一个成熟的 C++ XML 解析库!
嗨,大家好!我是一行。今天咱们来探索 Xerces-C,它可是 C里超棒的 XML 解析库哦!能帮咱轻松处理 XML 数据,在很多数据交互、配置文件读取场景都超实用,快来一起学习使用它的妙招吧。 一、Xerces-C 是什么&am…...
go语言中context的用法
0 概述 Context 是 Go 语言中非常重要的一个概念,它主要用于跨多个函数或 goroutine 传递 取消信号、超时控制、截止时间 和 请求范围数据。在并发编程中,Context 提供了更好的控制和管理,尤其是当你需要在多个 goroutine 之间传递状态或进行…...
UE5编辑器下将RenderTarget输出为UTexture并保存
在使用UE5开发项目时,RenderTarget是一种非常强大的工具,常用于生成实时纹理效果、后处理和调试。而将RenderTarget的内容转换为UTexture并储存,是许多编辑器内的需求都需要的功能。 1.材质球输出至Texture 首先创建一个Actor类,…...
探秘 AI Agent 之 Coze 智能体:从简介到搭建全攻略(4/30)
一、Coze 智能体概述 (一)Coze 智能体是什么 Coze 智能体是基于机器学习和自然语言处理技术的软件实体,它在人工智能领域扮演着重要的角色,能够像一个智能助手一样,通过与外界环境进行交互学习,进而执行各…...
解决navicat 导出excel数字为科学计数法问题
一、原因分析 用程序导出的csv文件,当字段中有比较长的数字字段存在时,在用excel软件查看csv文件时就会变成科学技术法的表现形式。 其实这个问题跟用什么语言导出csv文件没有关系。Excel显示数字时,如果数字大于12位,它会自动转化…...
蓝桥杯刷题——day4
蓝桥杯刷题——day4 题目一题干题目解析代码 题目二题干题目解析代码 题目一 题干 小蓝和朋友们在玩一个报数游戏。由于今年是2024 年,他们决定要从小到大轮流报出是20或24倍数的正整数。前10个被报出的数是:20,24,40,48,60,72,80,96,100,120。请问第2…...
【AI日记】24.12.13 kaggle 比赛 2-3 大扫除、断舍离、自己做饭
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加:kaggle 比赛 Regression with an Insurance Dataset参考:kaggle 回归类入门比赛 House Prices - Advanced Regression Techniques内容:构建自己的EDA(…...
http 和 https 的区别?
HTTP (HyperText Transfer Protocol) 和 HTTPS (HyperText Transfer Protocol Secure) 是两种用于在 Web 浏览器和网站服务器之间传输网页的协议,它们的主要区别在于安全性。以下是 HTTP 和 HTTPS 的一些关键区别: 安全性: HTTP:H…...
Mysql数据库中,什么情况下设置了索引但无法使用?
在MySQL数据库中,即使已经正确设置了索引,但在某些情况下索引可能无法被使用。 以下是一些常见的情况: 1. 数据分布不均匀 当某个列的数据分布非常不均匀时,索引可能无法有效地过滤掉大部分的数据,导致索引失效。 …...
[Unity] AppLovin Max接入Native 广告 Android篇
把下载下来的maxnativelibrary-release-文件放在Plugins/Android下 将这一行加入到mainTemplate.gradle文件中 implementation androidx.constraintlayout:constraintlayout:2.1.4添加下面的两个脚本 using System; using System.Collections; using System.Collections.Gener…...
青少年夏令营管理系统的设计与开发(社团)+开题报告(springboot+freemarker)
💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...
JSSIP的使用及问题(webRTC,WebSockets)
简介 项目中有一个需要拨打电话的功能,要求实时的进行音频接听,并且可以在电话接听或者挂断等情况下做出相应的操作。jssip作为一个强大的实现实时通信的javascript库,这不门当户对了嘛。 jssip(官网: JsSIP - the J…...
13.继承和多态的实例 C#
这是一个动物园的动物发出不同的声音,使用了继承和多态 using System; using System.Collections.Generic;namespace InheritanceAndPolymorphismExample {//一个动物类,包含属性:名称。包含方法:发出叫声public class Animal{pub…...
Vue3之入门介绍
Vue 3是一种用于构建用户界面的渐进式JavaScript框架。它主要用于创建单页应用(SPA),具备响应式数据绑定、组件化开发、虚拟DOM等核心特性,使得开发者能够高效地构建复杂的前端应用。Vue 3相比于之前的版本,进行了大量的性能优化和功能改进&a…...
Unity3D仿星露谷物语开发3之动画系统初探
1、目标 我们希望使用已有的资源建一个动画demo,以此熟悉基于已有Animator/Animation资源的使用方法。 以Tree的动画系统为例,资源位于: 2、创建流程 (1)创建tree空对象 上面两个都是空对象。 (2&#…...
【研发经验】工作流和规则引擎的应用与场景
工作流引擎和规则引擎是两种常见的软件技术,可以被应用于各种场景中, 例如: 业务流程自动化:工作流引擎可以用于自动化和管理各种业务流程,例如审批流程,订单处理流程,客户服务流程等。它可以定…...
UDP对比TCP的网络编程接口
目录 一、UDP网络编程接口 1.创建套接字(客户端、服务端) 2.套接字绑定地址(客户端、服务端) 3.发送数据(客户端、服务端) 4.接收数据(客户端、服务端) 二、TCP网络编程接口 1.创建套接字(客户端、服务端) 2.套接字绑定地址(客户端、服…...
C# 探险之旅:第二十七节 - 类型class(属性) —— 给你的类穿上“属性”的外衣
嘿,探险家们!欢迎再次踏上我们的C#奇幻之旅。今天,我们要聊聊一个超级有趣的话题——类的“属性”。想象一下,如果我们要给类穿上一件酷炫的外衣,那属性就是这件外衣上的各种口袋和装饰,让类变得既实用又拉…...
《饕餮记》精彩片段(一)
也是无意中看到鲛人脍单元集片段,才去看了这个剧 整体略架空和部分逻辑不是很连贯和完美 精彩点不在于整体和走向和故事线 也不在于大牌明星撑场,因为全场只有安悦溪一个脸熟明星撑场子 而在于每个单元间离奇小故事 和华胥引差不多,属于逻…...
esxi8 虚拟机使用ubuntu22模板后 没有ip配置文件,只有ipv6链接正常使用
esxi8 虚拟机使用模板后 没有ip配置文件,只有ipv6链接正常使用,/etc/NetworkManager/system-connections配置下没有配置文件 只有/etc/netplan/有文件 sudo ip addr add 192.168.1.9/24 dev ens35 # 临时设置ip, 接口名ens35 sudo vi /et…...
C++内存管理
1、代码区 代码区的特点: 1.只读:防止程序运行时修改其执行代码,有助于程序稳定和安全性。 2.共享:多个程序运行可共享同一份代码区,以节省内存。 3.固定大小:代码区的大小在程序编译连接时就已经确定&a…...
分类算法评估标准综述
目录 编辑 混淆矩阵(Confusion Matrix) 准确率(Accuracy) 精确率(Precision) 召回率(Recall) F1分数(F1 Score) ROC曲线和AUC值 P-R曲线 马修斯相…...
基于windows环境使用nvm安装多版本nodejs
目录 前言 一、卸载node 二、nvm是什么? 三、nvm安装 1.官网下载 nvm 包 2. 安装nvm-setup.exe 3. 配置路径和下载镜像 4. 检查安装是否完成 四、 使用nvm安装node 五、修改npm默认镜像源为淘宝镜像 六、环境变量配置 1. 新建目录 2. 设置环境变量 七…...
【人工智能-中级】神经网络的调优与正则化策略
文章目录 神经网络的调优与正则化策略1. 神经网络调优策略学习率调整批量大小(Batch Size)优化算法2. 正则化策略L1与L2正则化Dropout数据增强3. 超参数优化4. 小结神经网络的调优与正则化策略 在深度学习中,训练一个高效且准确的神经网络模型不仅依赖于选择合适的架构,还…...
VBA 连续打印多个内容成PDF
VBA 连续打印多个内容成PDF Dim wb As Workbook Dim sht1 As Worksheet Set sht1 ActiveSheet PT ThisWorkbook.PathApplication.ScreenUpdating FalseApplication.DisplayAlerts FalseApplication.Calculation xlCalculationManual For i [aa2] To [ab2][ad2] iSet wb …...
【Linux网络编程】第十弹---打造初级网络计算器:从协议设计到服务实现
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【Linux网络编程】 目录 1、Protocol.hpp 1.1、Request类 1.1.1、基本结构 1.1.2、构造析构函数 1.1.3、序列化函数 1.1.4、反…...
嵌入式 linux Git常用命令 抽补丁 打补丁
Git常用命令 为什么要学习git呢?我相信刚入门的小伙伴敲打肯定碰到过这种玄学问题,我明明刚刚还能用的代码,后面不知道咋的就不能用了,所以每次你调出一个功能点以后都会手动复制一份代码防止出问题,时间一长发现整个…...
windows C#-方法概述(上)
方法是包含一系列语句的代码块。 程序通过调用该方法并指定任何所需的方法参数使语句得以执行。 在 C# 中,每个执行的指令均在方法的上下文中执行。 Main 方法是每个 C# 应用程序的入口点,并在启动程序时由公共语言运行时 (CLR) 调用。 在使用顶级语句的…...
SpringCloud和Nacos的基础知识和使用
1.什么是SpringCloud 什么是微服务? 假如我们需要搭建一个网上购物系统,那么我们需要哪些功能呢?商品中心、订单中心和客户中心等。 当业务功能较少时,我们可以把这些功能塞到一个SpringBoot项目中来进行管理。但是随…...