当前位置: 首页 > news >正文

HarmonyOS Next 编译之如何使用多目标产物不同包名应用

引言

在日常的开发中涉及到多签名和多产物构建输出时手动切换签名文件和包名在开发中是容易出错且费时的一个操作,鸿蒙提供了自定义hvigor插件和多目标产物构建,那我们可以通过hvigor插件来动态修改不同项目配置所需要的代码,保证一套代码在不同的包名上切换且项目本身的功能是不变的,通过多目标产物构建输出自己想要的目标产物,实现定制化构建项目。

一、了解多目标产物构建是什么

1.什么是多目标产物构建

简单来说多目标产物就是输出自己高度定制化的模块,根据开发者自身的需求构建输出输出不同的HAP,HAR,HSP,APP等,通过不同构建配置来实现不同产物之间的差异化,多目标产物定制项介绍:https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-target#section19846433183815

2.构建原理图

img

二、如何在项目里面实现多目标产物构建

(源码参考仓库分支:feature/multiTargetProduct)

1.在项目中实现多目标产物构建

构建多目标产物需要通过修改build-profile.json5、module.json5等配置文件,定义出不同的product和target。在这些配置文件中,开发者不仅可以为每个target指定不同的设备类型、源码集、资源等,并且还可以根据业务需要为不同的product分配不同的target。然后在构建过程中,构建工具会根据这些配置生成不同的target,然后通过不同的target搭配构建出不同的product产物。

为不同的项目配置不同的签名配置:default,demo_debug和demo_release,在开发项目中在这里可以配置为demo_debug携带调试证书用于调试使用,配置demo_release携带上架证书用于上架构建APP包使用。

    "signingConfigs": [{"name": "default",//默认证书"type": "HarmonyOS","material": {"certpath": "C:\\Users\\admin\\.ohos\\config\\default_MultiBuildDemo_EoXj8aTamg_oidMu17Hf43iI41kuxPBK1f-SmO_d7e4=.cer","keyAlias": "debugKey","keyPassword": "0000001B881F7F910A6E276D***********************26C67BE265BF02384E2E97E","profile": "C:\\Users\\admin\\.ohos\\config\\default_MultiBuildDemo_EoXj8aTamg_oidMu17Hf43iI41kuxPBK1f-SmO_d7e4=.p7b","signAlg": "SHA256withECDSA","storeFile": "C:\\Users\\admin\\.ohos\\config\\default_MultiBuildDemo_EoXj8aTamg_oidMu17Hf43iI41kuxPBK1f-SmO_d7e4=.p12","storePassword": "0000001B81AD92525EE***********************EDCCEEAF350252ABD455127B2E21C4E174"}},{"name": "demo_debug",//用于调试使用的证书"type": "HarmonyOS","material": {"storePassword": "000000193229BAE72AE854D*****************4B8124A2C67E90C36612B29AE","certpath": "./key/testDemo.cer","keyAlias": "testDemo","keyPassword": "000000197CB78D747AC**************A0B0A90DF10C7294EEBDF62C0BCE25969CD","profile": "./key/testDemoDebug.p7b","signAlg": "SHA256withECDSA","storeFile": "./key/testDemo.p12"}},{"name": "demo_release",//用于上架使用的证书"type": "HarmonyOS","material": {"storePassword": "000000193229BAE72A*******************F1D92B4B8124A2C67E90C36612B29AE","certpath": "./key/testDemo.cer","keyAlias": "testDemo","keyPassword": "000000197CB78D747A****************294EEBDF62C0BCE25969CD","profile": "./key/testDemoDebug.p7b","signAlg": "SHA256withECDSA","storeFile": "./key/testDemo.p12"}}],

在products中配置不同的产物,每个产物构建不同的签名来实现构建不同的产物时使用签名的差异性

 "products": [{"name": "default","signingConfig": "default",//默认产物对应默认证书"compatibleSdkVersion": "5.0.1(13)","runtimeOS": "HarmonyOS","buildOption": {"strictMode": {"caseSensitiveCheck": true,"useNormalizedOHMUrl": false}}},{"name": "products_debug","signingConfig": "demo_debug",//调试产物对应调试证书"compatibleSdkVersion": "5.0.1(13)","runtimeOS": "HarmonyOS","buildOption": {"strictMode": {"caseSensitiveCheck": true,"useNormalizedOHMUrl": false}}},{"name": "products_release","signingConfig": "demo_release",//正式产物对应正式签名"compatibleSdkVersion": "5.0.1(13)","runtimeOS": "HarmonyOS","buildOption": {"strictMode": {"caseSensitiveCheck": true,"useNormalizedOHMUrl": false}}}],

构建出不同的产物过后还需要依赖在hap包下面(存在hsp也需要配置)的targets中

"modules": [{"name": "entry","srcPath": "./entry","targets": [{"name": "default","applyToProducts": [//建构建的产物都依赖在hap包,同样的如果出现hsp也需要进行依赖,hsp需要和主包一样有相同的配置"default","products_debug","products_release"]}]}
]

2.如何切换不同的产物配置,以及输出的包

在这里插入图片描述

手动切换不同的产物信息:
在这里插入图片描述

三、如何在多目标产物的基础上构建不同包名和包的配置信息

(源码参考仓库分支:feature/differentPackageConfigurations)

1.增加第二个应用的签名信息和products配置信息、自定义常量

增加签名

"signingConfigs": [
//...之前的签名信息不变{"name": "demo_debug_test2",//另外一个应用对应的签名信息"type": "HarmonyOS","material": {"storePassword": "000000193229BAE72AE854DF***********************2B4B8124A2C67E90C36612B29AE","certpath": "./key/testDemo2/testDemo2.cer","keyAlias": "testDemo","keyPassword": "000000197CB78D747A***********************10C7294EEBDF62C0BCE25969CD","profile": "./key/testDemo2/TestDemo2Debug.p7b","signAlg": "SHA256withECDSA","storeFile": "./key/testDemo.p12"}}
]

增加产物配置信息,在新增产物中实现产物差异性需要配置labeliconbundleNameoutput等不同应用的标识,如果还需要再项目里面获取不同的参数可以在buildOption中的buildProfileFields里面配置自定义的信息

"products": [//...之前的产物配置信息{"name": "products_debug_test2","signingConfig": "demo_debug_test2",//第二个应用对应签名"compatibleSdkVersion": "5.0.1(13)","runtimeOS": "HarmonyOS","label": "$string:app_name_test2",//对应的第二个项目的名字,"icon": "$media:app_icon_test2","bundleName": "com.atomicservice.6917571239128090930",//对应的第二个项目的包名"buildOption": {"strictMode": {"caseSensitiveCheck": true,"useNormalizedOHMUrl": false}},"output": {"artifactName": 'products_debug_test2'//配置用于区分不同产物的输出目录}}
]

2.配置后的实现效果

切换不同的产物运行后的效果不同,同时也会根据不同配置信息生成不同的不同的产物包信息,配置生效之前要删除module.json5中原有的iconlabel,不然不生效

在这里插入图片描述

输出产物信息

在这里插入图片描述

运行后配置生效,桌面图标和应用名生效

在这里插入图片描述

3.查询并使用自定义常量

在项目中不同的包名配置使用的域名或者代码里面存在差异,仅依靠配置当前的配置信息是不够的,可以使用buildProfileFields来自定义不同产物下面的参数信息

配置自定义常量:
"products": [{"name": "default","signingConfig": "default",//默认产物对应默认证书"compatibleSdkVersion": "5.0.1(13)","runtimeOS": "HarmonyOS","buildOption": {"strictMode": {"caseSensitiveCheck": true,"useNormalizedOHMUrl": false},"arkOptions": {"buildProfileFields": {//配置的参数可以在项目中引用这部分常量,"isStartNet": false,"isDebug": true,"buildTime": "","buildMode": "cheng_tu_test;cheng_tu_debug;api-pre","apiUrl": "","trackApiUrl": "","productsName": 'default'}}}},{"name": "products_debug","signingConfig": "demo_debug",//调试产物对应调试证书"compatibleSdkVersion": "5.0.1(13)","runtimeOS": "HarmonyOS","buildOption": {"strictMode": {"caseSensitiveCheck": true,"useNormalizedOHMUrl": false},"arkOptions": {"buildProfileFields": {//配置的参数可以在项目中引用这部分常量,"isStartNet": false,"isDebug": true,"buildTime": "","buildMode": "cheng_tu_test;cheng_tu_debug;api-pre","apiUrl": "","trackApiUrl": "","productsName": 'products_debug'}}},"output": {"artifactName": 'products_debug'//配置用于区分不同产物的输出目录}},{"name": "products_release","signingConfig": "demo_release",//正式产物对应正式签名"compatibleSdkVersion": "5.0.1(13)","runtimeOS": "HarmonyOS","buildOption": {"strictMode": {"caseSensitiveCheck": true,"useNormalizedOHMUrl": false},"arkOptions": {"buildProfileFields": {//配置的参数可以在项目中引用这部分常量,"isStartNet": false,"isDebug": true,"buildTime": "","buildMode": "cheng_tu_test;cheng_tu_debug;api-pre","apiUrl": "","trackApiUrl": "","productsName": 'products_release'}}},"output": {"artifactName": 'products_release'//配置用于区分不同产物的输出目录}},{"name": "products_debug_test2","signingConfig": "demo_debug_test2",//第二个应用对应签名"compatibleSdkVersion": "5.0.1(13)","runtimeOS": "HarmonyOS","label": "$string:app_name_test2",//对应的第二个项目的名字,"icon": "$media:app_icon_test2","bundleName": "com.atomicservice.6917571239128090930",//对应的第二个项目的包名"buildOption": {"strictMode": {"caseSensitiveCheck": true,"useNormalizedOHMUrl": false},"arkOptions": {"buildProfileFields": {//配置的参数可以在项目中引用这部分常量,"isStartNet": false,"isDebug": true,"buildTime": "","buildMode": "cheng_tu_test;cheng_tu_debug;api-pre","apiUrl": "","trackApiUrl": "","productsName": 'products_debug_test2'}}},"output": {"artifactName": 'products_debug_test2'//配置用于区分不同产物的输出目录},}
],
查询自定义配置信息

在目录build/products_debug/generated/profile/default/BuildProfile.ets中可以查看响应的构建信息

在这里插入图片描述

使用自定义配置信息
import BuildProfile from 'BuildProfile';//无法导入时尝试重新构建Column() {Text(`isStartNet:${BuildProfile.isStartNet}`)Text(`isDebug:${BuildProfile.isDebug}`)Text(`buildTime:${BuildProfile.buildTime}`)Text(`buildMode:${BuildProfile.buildMode}`)Text(`apiUrl:${BuildProfile.apiUrl}`)Text(`trackApiUrl:${BuildProfile.trackApiUrl}`)Text(`productsName:${BuildProfile.productsName}`)
}
.height('100%')
.width('100%')
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Start)
.padding({left:20})
UI界面实现效果

四、总结

针对不同的构建模式来输出不同的产物可以在开发中快速切换项目,也可以实现不同主体之间的上架主题切换问题,目前的AG上架分为国外主体国内主体、这两个主体的上架流程会影响到代码的切换使用问题,例如国外主体不支持邀请测试需要国内主体来使用邀请测试来验证线上问题,此时切换包名信息就格外的重要,当然仅仅使用多目标多产物构建是远远不够的,想要高度自定义定制项目还需要配合hvigor插件来使用,比如client_idapp_id这种在module.json5中的硬配置目前不支持自动切换和配置,需要使用自定义的hvigor插件在构建的时候进行修改,项目的构建时间buildTime等需要实时更新的信息也是需要在脚本中去实现的。这篇文章为大家介绍多产物项目如何构建以及使用,在后续的文章中将配合自定义脚本来实现更改项目中module.json5中无法自动配置修改的信息。

六、源码仓库

仓库地址:https://gitee.com/qq1963861722/MultiBuildDemo.git

七、文章参考

多目标产物构建开发实践-编译构建 - 华为HarmonyOS开发者

HarmonyOS多环境+多渠道+自定义路径输出+自定义名称一键打app和hap包前言 做移动端开发时,不可避免的会遇到 - 掘金

相关文章:

HarmonyOS Next 编译之如何使用多目标产物不同包名应用

引言 在日常的开发中涉及到多签名和多产物构建输出时手动切换签名文件和包名在开发中是容易出错且费时的一个操作,鸿蒙提供了自定义hvigor插件和多目标产物构建,那我们可以通过hvigor插件来动态修改不同项目配置所需要的代码,保证一套代码在…...

Oracle Database Resident Connection Pooling (DRCP) 白皮书阅读笔记

本文为“Extreme Oracle Database Connection Scalability with Database Resident Connection Pooling (DRCP)”的中文翻译加阅读笔记。觉得是重点的就用粗体表示了。 白皮书版本为March 2025, Version 3.3,副标题为:Optimizing Oracle Database resou…...

Sharding-JDBC 系列专题 - 第七篇:Spring Boot 集成与 Sharding-Proxy 简介

Sharding-JDBC 系列专题 - 第七篇:Spring Boot 集成与 Sharding-Proxy 简介 本系列专题旨在帮助开发者全面掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第七篇文章,将重点探讨 Sharding-JDBC 与 Spring Boot 的集成,以及 Sharding-Proxy 的基本概念…...

day30 学习笔记

文章目录 前言一、凸包特征检测1.穷举法2.QuickHull法 二、图像轮廓特征查找1.外接矩形2.最小外接矩形3.最小外接圆 前言 通过今天的学习,我掌握了OpenCV中有关凸包特征检测,图像轮廓特征查找的相关原理和操作 一、凸包特征检测 通俗的讲,凸…...

变更管理 Change Management

以下是关于项目管理中 变更管理 的深度解析,结合高项(如软考高级信息系统项目管理师)教材内容,系统阐述变更管理的理论框架、流程方法及实战应用: 一、变更管理的基本概念 1. 定义 变更管理是对项目范围、进度、成本、质量等基准的修改进行系统性控制的过程,旨在确保变…...

PaddlePaddle线性回归详解:从模型定义到加载,掌握深度学习基础

目录 前言一、paddlepaddle框架的线性回归1.1 paddlepaddle模型的定义方式1.1.1 使用序列的方式 nn.Sequential 组网1.1.2 使用类的方式 class nn.Layer组网1.2 数据加载 1.3 paddlepaddle模型的保存1.3.1 基础API保存1.3.2 高级API模型的保存1.3.2.1 训练fit进行保存1.3.2.2 …...

几种Word转换PDF的常用方法

使用 Word 内置功能 步骤:打开需要转换的 Word 文档,点击左上角的 “文件” 菜单,选择 “另存为”,选择保存位置,在 “保存类型” 下拉菜单中选择 “PDF”,点击 “保存” 按钮即可。适用场景:适…...

【美化vim】

美化vim 涉及文件一个例子 涉及文件 ~/.vimrc修改这个文件即可 一个例子 let mapleader ,set number " 显示行号"set relativenumber " 显示相对行号set incsearch " 实时开启搜索高亮set hlsearch " 搜索结果高亮set autoinden…...

【git】subtree拆分大的git库到多个独立git库

【git】subtree拆分大的git库到多个独立git库 一、拆分一个子目录为独立仓库 # 这就是那个大仓库 big-project git clone gitgithub.com:tom/big-project.git cd big-project# 把所有 eiyo 目录下的相关提交整理为一个新的分支 eiyo_code git subtree split -P eiyo -b eiyo_…...

Elasticsearch 使用reindex进行数据同步或索引重构

1、批量复制优化 POST _reindex {"source": {"index": "source","size": 5000},"dest": {"index": "dest"} }2、提高scroll的并行度优化 POST _reindex?slices5&refresh {"source": {…...

JDBC对数据的增删改查操作:从Statement到PrepareStatement

目录 一 . Statement简介 二. 通过Statement添加数据 1. 创建表 2. 通过Statement添加数据 a. 获取连接 b. 获取Statement对象 c. 定义SQL语句 d. 执行SQL语句 e. 关闭资源 3. 通过Statement修改数据 4. 通过Statement删除数据 三. PreparedStatement的使用(重点) …...

智体OS上线智体管家:对话式智体应用商店访问

DTNS.OS 更新公告 - 智体管家功能发布 🌟 2024年4月22日重要更新:智体管家正式上线 智体管家是智体OS推出的全新功能,旨在让用户通过自然对话轻松发现和使用智体节点上的所有智体应用,相当于为智体网络打造了一个智能化的应用商…...

vscode flutter 插件, vscode运行安卓项目,.gradle 路径配置

Flutter Flutter Widget Snippets Awesome Flutter Snippets i dart-import Dart Data Class Generator Json to Dart Model Dart Getters And Setter GetX Snippets GetX Generator GetX Generator for Flutter flutter-img-syncvscode运行安卓项目,.gradle 路径配…...

dolphinscheduler实现(oracle-hdfs-doris)数据ETL

dolphinscheduler执行 完整脚本(自行替换相关变量)配置文件conf配置文件解析脚本转base64脚本 完整脚本(自行替换相关变量) user_olsh conf/getInfo.sh Oracle user conf/databases.conf password_olsh conf/getInfo.sh Oracle password conf/databases.conf dblink_olsh conf…...

ViewBS 的工作流程

ViewBS ViewBS 的工作流程 ViewBS 提供多个顶级命令,用于确定所需和最优参数。这些命令可分为两部分:甲基化报告和功能区域的数据可视化。 在甲基化报告部分中,提供多个顶级命令,可以生成关于读取覆盖度、甲基化水平分布、全局甲基化水平等报告。 在功能区域可视化部分…...

qt调用deepseek的API开发(附带源码)

今天讲的是使用qt做一个界面(负责接受deepseek返回的数据和客户发送数据的端口)会用流的方式接受数据提高用户体验 测试效果源码流程配置deepseek调用思路deepseek与qt联合开发界面思路 上一篇文章用的不是流开发,会让客户等待很久&#xff0…...

java中值传递的含义

Java 中的值传递(Pass by Value)详解 在 Java 中,所有参数的传递都是值传递(Pass by Value),但根据传递的数据类型不同(基本类型 vs 引用类型),表现行为会有所不同。 1.…...

【自然语言处理与大模型】如何知道自己部署的模型的最大并行访问数呢?

当你自己在服务器上部署好一个模型后,使用场景会有两种。第一种就是你自己去玩,结合自有的数据做RAG等等,这种情况下一般是不会考虑并发的问题。第二种是将部署好的服务给到别人来使用,这时候就必须知道我的服务到底支持多大的访问…...

基于PHP+MySQL实现(Web)单词助手网站

WordHelper 这是一个学习 PHP 的时候依照课程设计的要求,做的一个简单的单词助手。 系统通过 CDN 引入 Vue.js 和 ElementUI,并用 PHP 搭建了一个十分十分简易的后台。 一、设计要求 1、词汇录入与编辑。提供接口让用户录入英文单词、词义、发音、词…...

Java面试实战:谢飞机的求职记 - Spring Boot、Redis与微服务技术问答解析

场景描述 谢飞机,一位自称为“Java全栈大师”的程序员,参加了某互联网大厂的Java开发岗位面试。面试官严肃而专业,针对Spring Boot、Redis缓存以及微服务架构等核心技术展开提问。以下是谢飞机在面试中的表现。 第一轮提问(基础篇…...

【数字图像处理】立体视觉信息提取

双目立体视觉原理 设一个为参考平面,一个为目标平面。增加了一个摄像头后,P与Q在目标面T上有分别的成像点 双目立体视觉:从两个不同的位置观察同一物体,用三角测量原理计算摄像机到该物体的距离的 方法 原理:三角测量…...

解析芯片低功耗设计的底层逻辑与实现方法

芯片低功耗设计的必要性可以从实际需求和技术优化两方面来探讨: 从需求角度看,工艺进步和应用场景共同驱动低功耗设计。 随着CMOS制程持续微缩,晶体管密度和时钟频率提升导致静态功耗显著增加,漏电流问题在先进工艺中尤为明显。…...

uniapp开发2--uniapp中的条件编译总结

以下是对 uni-app 中条件编译的总结: 概念: 条件编译是一种技术,允许你根据不同的平台或环境,编译不同的代码。 在 uni-app 中,这意味着你可以编写一套代码,然后根据要编译到的平台(例如微信小…...

Netty 异步机制深度解析:Future 与 Promise 的前世今生

引言:异步编程的「糖」与「痛」 在高性能网络编程中,「异步」几乎是必备的设计模式,异步的好处就是可以提升系统吞吐量,提升效率。但很多开发者初入 Netty 时,对它的异步机制总有点模糊: 为什么 ChannelF…...

如何查看MySql主从同步的偏移量

1.Mysql的主从同步方案 mysql为了在实现读写分离,主库写,从库读 mysql的同步方案主要是通过从库读取主库的binlog日志的方式。 binlog就是一个记录mysql的操作的日志记录,从库通过拿到主库的binlog知道主库进行了哪些操作,然后在从…...

短信验证码安全实战:三网API+多语言适配开发指南

在短信服务中,创建自定义签名是发送通知、验证信息和其他类型消息的重要步骤。万维易源提供的“三网短信验证码”API为开发者和企业提供了高效、便捷的自定义签名创建服务,可以通过简单的接口调用提交签名给运营商审核。本文将详细介绍如何使用该API&…...

护眼-科学使用显示器

一 显示色温对眼睛的影响 显示器的色温设置对护眼效果至关重要,合适的色温可减少蓝光伤害并缓解视疲劳。最护眼的色温并非固定值,需根据环境光、使用时间和场景动态调整。白天推荐6500K左右,夜晚降至3000K-4000K,并借助自动调节工…...

HarmonyOS:1.7

判断题 1.订阅网络状态变化事件时,通过NetConnection类型的对象调用on方法,传入具体事件类型即可: 错误(False) 2.若使用HTTP发起一个GET请求,直接调用get方法,传入请求资源的URL,即可发起请求&#xff…...

物联网赋能玻璃制造业:实现设备智能管理与生产协同

在当今数字化时代,物联网技术正深刻改变着传统制造业的发展模式,玻璃制造业也不例外。物联网的赋能,为玻璃制造业带来了设备智能管理与生产协同的新机遇,推动其向智能化、高效化迈进。 在设备智能管理方面,物联网通过…...

【我的创作纪念日】 --- 与CSDN走过的第365天

个人主页:夜晚中的人海 不积跬步,无以至千里;不积小流,无以成江海。-《荀子》 文章目录 🎉一、机缘🚀二、收获🎡三、 日常⭐四、成就🏠五、憧憬 🎉一、机缘 光阴似箭&am…...

路由器转发规则设置方法步骤,内网服务器端口怎么让异地连接访问的实现

在路由器上设置端口转发(Port Forwarding)可以将外部网络流量引导到特定的局域网设备,这对于需要远程访问服务器、摄像头、游戏主机等设备非常有用。 登录路由器管理界面,添加端口转发规则让外网访问内网的实现教程分享。以下是设…...

Kotlin 的 suspend 关键字

更多相关知识 Kotlin 的 suspend 关键字是 Kotlin 协程的核心组成部分,它用于标记一个函数可以被挂起(暂停执行)并在稍后恢复执行,而不会阻塞线程。 理解 suspend 的作用需要从以下几个方面入手: 1. 允许非阻塞的异步…...

Java面试实战:从Spring Boot到微服务的深入探讨

Java面试实战:从Spring Boot到微服务的深入探讨 场景:电商场景的面试之旅 在某互联网大厂的面试间,面试官李老师正襟危坐,而对面坐着的是传说中的“水货程序员”赵大宝。 第一轮:核心Java与构建工具 面试官&#x…...

文件操作和IO(上)

绝对路径和相对路径 文件按照层级结构进行组织(类似于数据结构中的树型结构),将专门用来存放管理信息的特殊文件称为文件夹或目录。对于文件系统中文件的定位有两种方式,一种是绝对路径,另一种是相对路径。 绝对路径…...

【Dify(v1.2) 核心源码深入解析】Apps 模块

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容&#xff…...

小测验——根据调整好的参数进行批量输出

文章目录 一、前言与目的二、思考坐标系怎么生成2.1 补2.2 对于自己投影代码中对数据集参数的情况(取负)总结三、代码2.1 用这套代码可视化 pytorch3d能跑通的例子2.2 gshell的例子2.3 直接手写投影的例子四、思路4.1 确定牛和衣服方向4.2 推测牛的视角4.3 教程学习4.3.1 fov…...

蓝耘平台介绍:算力赋能AI创新的智算云平台

一、蓝耘平台是什么 蓝耘智算云(LY Cloud)是蓝耘科技打造的现代化GPU算力云服务平台,深度整合自研DS满血版大模型技术与分布式算力调度能力,形成"模型算力"双轮驱动的技术生态。平台核心优势如下: 平台定位…...

23种设计模式-结构型模式之桥接模式(Java版本)

Java 桥接模式(Bridge Pattern)详解 🌉 什么是桥接模式? 桥接模式用于将抽象部分与实现部分分离,使它们可以独立变化。 通过在两个独立变化的维度之间建立“桥”,避免因多维度扩展导致的类爆炸。 &#x…...

Python常用的第三方模块之数据分析【pdfplumber库、Numpy库、Pandas库、Matplotlib库】

【pdfplumber库】从PDF文件中读取内容 import pdfplumber #打开PDF文件 with pdfplumber.open(DeepSeek从入门到精通(20250204).pdf) as pdf:for i in pdf.pages: #遍历页print(i.extract_text()) #extract_text()方法提取内容print(f----------------第{i.page_number}页结束…...

PerfettoSQL

​​​​# Device State: Top App # select id, ts, dur, name from (__query_slice_track__long_battery_tracing_Device_State_Top_app) --> 简便方法 """ INCLUDE PERFETTO MODULE android.battery_stats; select * from android_battery_stats_event_s…...

【Python笔记 03 】运算符

一、算数运算符 1、加减乘除 #加法 print (11) #减法 print (1-1) #乘法 print (1*1) #除法,注:商一定是float浮点数,不管是否能整数,且除数不能为0,如下图: print (1/1) 如果除数为0即报错提示。 …...

组网技术-BGP技术,IS-IS协议,VRRP技术

1.BGP在不同自治系统AS进行路由转发 EBGP外部边界网关协议 IBGP内部边界网关协议 2.AS指的是同一个组织管理下,使用统一选路策略的设备集合 3.AS直接需要直连链路,或者通过VPN协议构造逻辑直连进行邻居建立 4.使用IGP可能存在暴露AS内部的网络信息的…...

Word处理控件Spire.Doc系列教程:C# 为 Word 文档设置背景颜色或背景图片

在 Word 文档中,白色是默认的背景设置。一般情况下,简洁的白色背景足以满足绝大多数场景的使用需求。但是,如果您需要创建简历、宣传册或其他创意文档,设置独特的背景颜色或图片能够极大地增强文档的视觉冲击力。本文将演示如何使…...

极狐GitLab 中如何自定义角色?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 自定义角色 (ULTIMATE ALL) 引入于极狐GitLab 15.7,功能标志为 customizable_roles。默认启用于极狐GitLab 15.9…...

JAVA:Web安全防御

目录 一、Web安全基础与常见威胁 OWASP Top 10核心漏洞解析 • SQL注入(SQLi)、跨站脚本(XSS)、跨站请求伪造(CSRF) • 不安全的反序列化、敏感数据泄露 Java后端常见攻击场景 • 通过HttpServletRequest…...

Nginx:支持 HTTPS

文章目录 Nginx 开启 ssl 以支持 HTTPS1 生成本地证书2 开启 ssl 以支持 HTTPS3 将 https 的请求转发给 http 最终的 nginx.conf 如下 Nginx 开启 ssl 以支持 HTTPS [!IMPORTANT] 在下文中,将采用如下定义。 HTTP端口: 80 HTTPS端口: 443 服务…...

数据库性能优化(sql优化)_分布式优化思路02_yxy

数据库性能优化_分布式优化思路02 1 核心优化策略(二)_分区智能连接优化2 核心优化策略(三)_数据本地化3 核心优化策略(四)_选择正确的数据分发方式1 核心优化策略(二)_分区智能连接优化 分区智能连接出现在多个表进行连接时的优化策略,优化效率非常明显 分区智能连接是指:…...

【网络】代理服务器收尾及高级IO

全是通俗易懂的讲解,如果你本节之前的知识都掌握清楚,那就速速来看我的笔记吧~ 自己写自己的八股!让未来的自己看懂! (全文手敲,受益良多) 本文主要带你了解什么是高级IO,以及常…...

基于大疆行业无人机的特色解决方案-无线通信篇:基于蜂窝以及自组网MESH的无线通信C2链路

基于大疆行业无人机的特色解决方案-无线通信篇:基于蜂窝以及自组网MESH的无线通信C2链路 大疆无人机目前是业内性价比最有优势的无人机产品,尤其是机场3的推出,持续产品升级迭代,包括司空2、大疆智图以及大疆智运等专业软件、各种…...

js实现2D图片堆叠在一起呈现为3D效果,类似大楼楼层的效果,点击每个楼层不会被其他楼层遮挡

js实现2D图片堆叠在一起呈现为3D效果,类似大楼楼层的效果,点击每个楼层不会被其他楼层遮挡。实现过程使用元素的绝对定位,通过伪元素设置背景图片和文字,效果如下: index.jsx: import React, { useEffect,…...