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

【HarmonyOS 5】鸿蒙mPaaS详解

【HarmonyOS 5】鸿蒙mPaaS详解

在这里插入图片描述

一、mPaaS是什么?

mPaaS 是 Mobile Platform as a Service 的缩写,即移动开发平台

蚂蚁移动开发平台mPaaS ,融合了支付宝科技能力,可以为移动应用开发、测试、运营及运维提供云到端的一站式解决方案。经过了十多年的技术沉淀和迭代,具备成熟高效的能力。

能够有效提升APP的交互体验和保障APP合规及安全,同时配套精细化运营、营销场景能力协助企业实现业务增长。

类似mPaaS的移动开发平台,还有京东mPaaS等等。说白了,这都是当年大厂的中台部门,创造增收赢利点的业务。中台作为大厂业务的基座部门,几乎所有同体系内的APP的底层框架,都由中台部门进行研发。基于这种背景,将通用解决方案对外提供商用,也是水到渠成的事儿。

本文将结合官方文档,详细解析 mPaaS 在鸿蒙开发中的接入、工具使用及初始化流程。
在这里插入图片描述

二、mPaaS是主要作用与优势

容器化技术、插件化架构、热修复能力、动态化部署

1、容器化技术:统一应用运行环境

mPaaS 通过容器化技术将原生应用(iOS/Android)的运行环境抽象为统一的容器,实现以下能力:

  • 跨平台兼容
    容器层屏蔽了iOS和Android、HarmonyOS系统的底层差异,允许业务代码(如H5、小程序、Flutter等)在统一环境中运行,减少跨平台开发成本。
  • 动态加载机制
    容器支持动态加载插件、页面、资源等,无需重新发布应用即可更新功能,例如:
    • 加载新的H5页面或小程序模块;
    • 动态替换图片、字体等静态资源。
  • 沙箱隔离
    为每个业务模块提供独立的运行沙箱,确保模块间数据隔离、资源互不干扰,提升应用稳定性和安全性。

鸿蒙 mPaaS 的容器化技术与 Android/iOS 平台的差异:

特性鸿蒙 mPaaS传统 Android/iOS mPaaS
底层容器技术基于 ArkTS 组件化 + Stage 模型基于 WebView(Android/iOS)或原生容器(如 React Native)
动态加载粒度以 HAP/Ability 为单位以插件(如 JS Bundle、Native 模块)为单位
隔离机制基于鸿蒙系统的进程/线程隔离基于 WebView 沙箱或自定义 Native 容器
热更新方式通过 HAP 包动态更新(需系统权限)通过 JS 脚本注入或 Native 代码替换(如 Android Dex 加载)
性能开销更低(ArkTS 编译为 Native 代码)较高(WebView 或跨语言桥接)

2、插件化架构:模块化开发与热部署

mPaaS采用插件化架构,将应用拆分为宿主容器独立插件(如功能模块、业务组件),核心机制包括:

  • 插件动态加载
    宿主容器在运行时动态加载插件,无需重启应用即可启用新功能。例如:
    • 电商App可动态加载“直播”插件,无需发版;
    • 金融App可动态更新“支付”模块的逻辑。
  • 插件生命周期管理
    容器管理插件的加载、初始化、激活、销毁等生命周期,确保资源合理释放,避免内存泄漏。
  • 插件间通信机制
    提供统一的消息总线(如EventBus),支持插件间安全、高效的通信,解耦模块依赖。

鸿蒙 mPaaS 的容器化技术核心是 ArkTS 语言提供的组件化和隔离能力,主要体现在,鸿蒙将应用功能拆分为独立的 Ability(类似于 Android 的 Activity/Fragment),每个 Ability 运行在独立的沙箱环境中:

  • 资源隔离:Ability 间的 UI 渲染、内存占用、数据存储相互隔离,避免因单个组件崩溃导致整个应用异常。
  • 动态加载:Ability 支持按需加载,无需启动整个应用即可激活特定功能模块,例如:
    // 动态加载并启动指定 Ability
    import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
    const aac = abilityAccessCtrl.createAbilityAccessCtrl();
    aac.startAbility(request).then(() => console.log('Ability started successfully')).catch((err) => console.error(`Failed to start ability: ${err}`));
    

鸿蒙的 Stage 模型 将应用拆分为 HAP(HarmonyOS Ability Package),每个 HAP 可包含多个 Ability:

  • 独立部署:HAP 支持动态下载和安装,实现功能的热更新,例如:
    // config.json 中配置 HAP 模块
    {"module": {"name": "entry","deviceTypes": ["phone"],"reqPermissions": [],"abilities": [...]},"subModules": [{"name": "feature-module","description": "Dynamic feature module","deliveryWithInstall": false, // 支持按需下载"installationFree": true}]
    }
    

3、热修复与动态化:快速修复线上问题

mPaaS通过热修复(Hotfix)动态化技术实现线上问题的快速修复和功能迭代,底层机制包括:

  • 代码热修复
    • iOS:利用Objective-C的动态特性(如Method Swizzling)或Fishhook技术,在运行时替换错误的函数实现;
    • Android:通过类加载(Dexposed)或Native层替换(如AndFix),动态修复Java/Kotlin代码中的Bug。
      修复包可通过云端下发,用户无需重新安装App即可生效。
  • 资源动态更新
    支持动态更新图片、布局文件(如XML/JSON)、字体等资源,例如:
    • 修复UI显示异常(如按钮颜色错误);
    • 调整页面布局适配新机型。
  • 脚本化动态逻辑
    支持嵌入JavaScript、Lua等脚本语言,实现业务逻辑的动态调整。例如:
    • 通过JS脚本动态修改H5页面的交互逻辑;
    • 在原生页面中注入脚本代码,实时调整业务流程。

4、云端一体化:数据驱动与远程配置

mPaaS底层与阿里云云端服务深度整合,实现客户端与云端的实时联动,核心机制包括:

  • 远程配置(Remote Config)
    通过云端配置中心动态下发业务参数,例如:
    • 调整功能开关(如临时关闭高风险模块);
    • 修改运营策略(如调整活动规则、界面文案)。
      配置变更无需发版,客户端实时生效。
  • A/B测试与灰度发布
    基于云端分流策略,将用户分为不同分组,测试不同功能版本(如界面样式、业务逻辑),通过数据监控(如点击率、崩溃率)优化用户体验。
  • 日志与监控
    客户端实时采集运行日志(如崩溃堆栈、性能指标),上报至云端监控平台,支持线上问题的快速定位和分析。

5、性能优化与稳定性保障

mPaaS底层集成了一系列性能优化和稳定性增强技术

  • 内存管理
    通过插件化架构和沙箱机制,隔离不同模块的内存占用,结合自动垃圾回收(GC)优化,减少内存泄漏和OOM(Out of Memory)问题。
  • 网络优化
    提供统一的网络请求框架,支持连接池复用、HTTP/2协议、动态DNS解析等,提升网络请求效率和稳定性。
  • 离线包机制
    将常用的H5页面、小程序代码提前下载至本地,减少对网络的依赖,提升页面加载速度,尤其适用于弱网环境。
  • Crash防护
    内置Crash捕获和恢复机制,实时监控应用崩溃,并通过热修复技术快速恢复正常运行。

6、安全机制:数据与通信保护

mPaaS底层高度重视安全性,核心机制包括:

  • 数据加密
    对本地存储数据(如用户隐私、配置信息)进行加密处理,支持AES、RSA等加密算法。
  • 通信安全
    采用HTTPS双向认证(SSL Pinning)、防抓包技术,确保客户端与云端通信的数据不被篡改或窃取。
  • 应用加固
    集成代码混淆、防逆向工程(Anti-Decompile)、防调试(Anti-Debug)等技术,提升应用的安全性,抵御恶意攻击。

三、mPaaS的架构原理解析

鸿蒙中的 mPaaS 确实采用了容器化技术,但其实现方式与传统 Android/iOS 平台有所不同,主要基于鸿蒙系统的 ArkTS 语言特性Stage 模型Ability 组件化框架。以下是具体分析:

四、鸿蒙中如何接入mPaas?

点击进入HarmonyOS NEXT接入官方文档

1、 前置条件准备

  1. 开发环境:安装HarmonyOS NEXT最新版开发环境,要求支持API 12以上版本。
  2. 设备要求:准备鸿蒙3.0.0.22以上版本的真机或模拟器(模拟器使用需参考官方文档)。
  3. 配置文件:在mPaaS控制台创建应用,下载HarmonyOS NEXT版本的.config配置文件,后续需重命名为mpaas.config并放置到项目指定目录。

2 、关键操作流程

  1. 配置文件处理
    将下载的.config文件重命名为mpaas.config,拷贝至项目主工程的entry/resource/rawfile目录下,用于存储应用的关键配置信息。

  2. 安装mppm工具
    mppm是mPaaS提供的SDK管理工具,支持依赖安装、缓存清理、基线管理等功能。安装步骤如下:

    # 全局安装mppm  
    npm install @alipay-inc/oh-mpaas-cli -g  
    # 检查版本(当前版本为v2.0.0)  
    mppm -v  
    

    Windows用户注意:需配置npm-globalnpm-global/bin环境变量,可通过npm config get prefix查看默认路径。

  3. 初始化工程
    在DevEco Studio终端执行mppm init命令,按提示选择基线版本(如10.2.3)和需要安装的组件。初始化完成后,工程根目录会生成.mprc文件,记录基线信息(如"baseline":"10.2.3")。

  4. 获取安全图片
    通过mppm工具生成安全图片,需提供应用签名指纹(fingerprint)和appsecret:

    mppm fetch-image --finger <指纹值> --secret <appsecret>  
    

    指纹获取方法

    • 证书提取:通过keytool工具解析.cer证书文件获取SHA-256值。
    • 代码获取:调用鸿蒙APIbundleManager.getBundleInfo获取签名信息。
    • bm命令:通过hdc shell bm dump -n <包名> | grep fing在真机查询。

五、mppm工具核心功能与命令

1、 工具定位与功能列表

mppm作为SDK管理工具,主要用于简化鸿蒙项目中mPaaS组件的依赖管理,核心功能包括:

  • 依赖安装:自动执行ohpm install,为每个模块安装所需依赖。
  • 缓存清理:清除hvigoroh_modules缓存(命令:mppm clean,执行后需重新同步依赖)。
  • 基线管理:支持基线升级(mppm upgrade)、定制基线安装(mppm sdk --custom <基线名>)和手动同步(mppm sync,修改.mprc后生效)。

2、 常用命令示例

操作场景命令说明
安装定制基线mppm sdk --custom 10.2.3.isec安装指定版本的定制基线
同步基线版本mppm sync根据.mprc文件更新工程依赖至目标基线版本
清理并重新安装依赖mppm clean && ohpm install解决依赖安装报错(如ENOENT),需配合ohpm命令使用

六、mPaaS初始化与框架集成

1、 依赖引入与配置

  1. 仓库配置:在项目.ohpmrc中添加mPaaS仓库地址:
    @mpaas:registry=https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/meta  
    
  2. 核心依赖:在oh-package.json5中添加框架和C++共享库依赖:
    {  "dependencies": {  "@mpaas/framework": "0.0.2",   // 框架核心依赖  "@mpaas/cpp-shared": "1.0.0"   // C++共享库(非重复安装)  }  
    }  
    

2、 框架初始化代码实现

  1. 创建AbilityStage组件:新建ArkTs文件EntryAbilityStage.ets,作为应用的组件容器。
  2. 初始化逻辑:在AbilityStageonCreate回调中调用MPFramework.create(app)初始化框架:
    import { MPFramework } from '@mpaas/framework';  
    export default class EntryAbilityStage extends AbilityStage {  async onCreate() {  const app = this.context;  MPFramework.create(app); // 初始化mPaaS框架  const instance = MPFramework.instance;  // 后续可调用API获取udid、设置用户ID等  }  
    }  
    
  3. 组件注册:在module.json5中配置srcEntry指向初始化组件路径:
    {  "module": {  "name": "entry",  "srcEntry": "./ets/EntryAbilityStage.ets"  }  
    }  
    

3、 核心API使用

  • 获取设备UDIDMPFramework.instance.udid(异步接口,需添加await)。
  • 用户标识管理:通过MPFramework.instance.userId设置或获取用户ID。
  • 安全信息配置:通过MPFramework.instance.appSecret管理敏感的appSecret信息。

相关文章:

【HarmonyOS 5】鸿蒙mPaaS详解

【HarmonyOS 5】鸿蒙mPaaS详解 一、mPaaS是什么&#xff1f; mPaaS 是 Mobile Platform as a Service 的缩写&#xff0c;即移动开发平台。 蚂蚁移动开发平台mPaaS &#xff0c;融合了支付宝科技能力&#xff0c;可以为移动应用开发、测试、运营及运维提供云到端的一站式解决…...

PyTorch中.item()函数:提取单元素张量值

PyTorch中,.item()函数是什么 在PyTorch代码中,.item() 主要用于从一个只包含单个元素的张量(Tensor)中提取出对应的Python标量值 ,具体作用和使用场景如下: 作用 获取数值:当通过计算得到一个张量,且该张量仅包含一个元素时,使用 .item() 方法可以方便地将这个元素…...

PyTorch LSTM练习案例:股票成交量趋势预测

文章目录 案例介绍源码地址代码实现导入相关库数据获取和处理搭建LSTM模型训练模型测试模型绘制折线图主函数 绘制结果 案例介绍 本例使用长短期记忆网络模型对上海证券交易所工商银行的股票成交量做一个趋势预测&#xff0c;这样可以更好地掌握股票买卖点&#xff0c;从而提高…...

ARM A64 LDR指令

ARM A64 LDR指令 1 LDR (immediate)1.1 Post-index1.2 Pre-index1.3 Unsigned offset 2 LDR (literal)3 LDR (register)4 其他LDR指令变体4.1 LDRB (immediate)4.1.1 Post-index4.1.2 Pre-index4.1.3 Unsigned offset 4.2 LDRB (register)4.3 LDRH (immediate)4.3.1 Post-index…...

一些问题杂记

1. 在 SSH 会话/bash中仅使用cat命令查看文件后使用umount命令提示挂载点繁忙&#xff0c;lsof命令查看是bash有占用&#xff0c;但是并没有打开文件之类的情况 原因&#xff1a;当前工作目录仍在挂载点内&#xff0c;使用cat查看文件时&#xff0c;可能当前工作目录&#xff…...

【OpenGL学习】(一)创建窗口

文章目录 【OpenGL】&#xff08;一&#xff09;创建窗口 【OpenGL】&#xff08;一&#xff09;创建窗口 GLFW OpenGL 本身只是一套图形渲染 API&#xff0c;不提供窗口创建、上下文管理或输入处理的功能。 GLFW 是一个支持创建窗口、处理键盘鼠标输入和管理 OpenGL 上下文的…...

RTSP 播放器技术探究:架构、挑战与落地实践

RTSP 播放器为什么至今无法被淘汰&#xff1f; 在实时视频传输领域&#xff0c;RTSP&#xff08;Real-Time Streaming Protocol&#xff09;作为最基础、最常见的协议之一&#xff0c;至今依然被广泛用于监控设备、IP Camera、视频服务器等设备中。然而&#xff0c;要构建一个稳…...

【问题记录】08 MAC电脑,安装HP打印机驱动,提示:此更新需要macOS版本15.0或更低版本

问题描述&#xff1a; MAC电脑&#xff0c;升级了新系统之后&#xff08;v15.4.1&#xff09;。 这时&#xff0c;安装惠普&#xff08;HP&#xff09;打印机驱动&#xff0c;提示&#xff1a;This update requires macOS version 15.0 or earlier&#xff08;此更新需要macOS…...

场景新零售:基于开源AI大模型AI智能名片S2B2C商城小程序源码的商业本质回归与创新

摘要&#xff1a;本文聚焦场景新零售&#xff0c;探讨在新生代消费群体推动下传统零售模式的创新升级。通过分析新生代消费群体的特点以及场景新零售的发展趋势&#xff0c;阐述开源AI大模型AI智能名片S2B2C商城小程序源码在场景新零售中的应用优势&#xff0c;包括精准营销、供…...

16.2 VDMA视频转发实验之模拟源

文章目录 1 实验任务2 系统框图3 硬件设计3.1 IP核配置3.2 注意事项3.3 自定义IP核源码 1 实验任务 基于14.1&#xff0c;相较于16.1&#xff0c;使用自定义IP核vid_gen_motion替换Xilinx TPG IP核。 2 系统框图 基于14.1&#xff0c;添加自定义IP核vid_gen_motion作为视频源…...

PADS 9.5安装教程

1.安装包 https://pan.baidu.com/s/1bt6vE3y8VEmlFwJfoV32nA?pwdj2cg 2.PADS 9.5安装教程 PADS 9.5安装教程&#xff08;Windows11、超详细版&#xff09;_pads9.5-CSDN博客 3.出现的问题 1.打开无法使用鼠标滚轮 Win10 pads卡死问题解决&#xff0c;输入法的兼容性问…...

趣味编程:钟表

目录 1. 效果展示 2. 源码展示 3. 逻辑概述 3.1 表针绘制函数&#xff08;DrawHand&#xff09; 3.2 表盘绘制函数 3.3 主程序逻辑 4. 小结 概述&#xff1a;本篇博客主要介绍简易钟表的绘制。 1. 效果展示 该钟表会随着系统的时间变化而变化&#xff0c;动态的效…...

.NET 通过命令行解密web.config配置

在.NET应用系统中,保护数据库连接字符串的安全性至关重要。.NET 提供了一种通过 DataProtectionConfigurationProvider 加密连接字符串的方法,以防止敏感数据泄露。然而,在内网信息收集阶段,攻击者只需在目标主机上运行aspnet_regiis.exe这个命令行工具即可完成解密,获取数…...

【MySQL】多表连接查询

个人主页&#xff1a;Guiat 归属专栏&#xff1a;MySQL 文章目录 1. 多表连接查询概述1.1 连接查询的作用1.2 MySQL支持的连接类型 2. 内连接 (INNER JOIN)2.1 内连接的特点2.2 内连接语法2.3 内连接实例2.4 多表内连接 3. 左外连接 (LEFT JOIN)3.1 左外连接的特点3.2 左外连接…...

【AI论文】用于评估和改进大型语言模型中指令跟踪的多维约束框架

摘要&#xff1a;接下来的指令评估了大型语言模型&#xff08;LLMs&#xff09;生成符合用户定义约束的输出的能力。 然而&#xff0c;现有的基准测试通常依赖于模板化的约束提示&#xff0c;缺乏现实使用的多样性&#xff0c;并限制了细粒度的性能评估。 为了填补这一空白&…...

应用BERT-GCN跨模态情绪分析:贸易缓和与金价波动的AI归因

本文运用AI量化分析框架&#xff0c;结合市场情绪因子、宏观经济指标及技术面信号&#xff0c;对黄金与美元指数的联动关系进行解析&#xff0c;揭示本轮贵金属回调的深层驱动因素。 周三&#xff0c;现货黄金价格单日跌幅达2.1%&#xff0c;盘中触及3167.94美元/盎司关键价位&…...

低成本高效图像生成:GPUGeek和ComfyUI的强强联合

一、时代背景 在如今的数字化时代&#xff0c;图像生成技术正不断发展和演变&#xff0c;尤其是在人工智能领域。无论是游戏开发、虚拟现实&#xff0c;还是设计创意&#xff0c;图像生成已成为许多应用的核心技术之一。然而&#xff0c;随着图像质量需求的提升&#xff0c;生成…...

React 第四十二节 Router 中useLoaderData的用途详解

一、前言 useLoaderData&#xff0c;用于在组件中获取路由预加载的数据。它通常与路由配置中的 loader 函数配合使用&#xff0c;用于在页面渲染前异步获取数据&#xff08;如 API 请求&#xff09;&#xff0c;并将数据直接注入组件&#xff0c;从而简化数据流管理。 二、us…...

【NLP 74、最强提示词工程 Prompt Engineering 从理论到实战案例】

一定要拼尽全力&#xff0c;才能看起来毫不费劲 —— 25.5.15 一、提示词工程 1.提示词工程介绍 Ⅰ、什么是提示词 所谓的提示词其实就是一个提供给模型的文本片段&#xff0c;用于指导模型生成特定的输出或回答。提示词的目的是为模型提供一个任务的上下文&#xff0c;以便模…...

GPUGeek云平台实战:DeepSeek-R1-70B大语言模型一站式部署

随着人工智能技术的迅猛发展&#xff0c;特别是在自然语言处理领域&#xff0c;大型语言模型如DeepSeek-R1-70B的出现&#xff0c;推动了各行各业的变革。为了应对这些庞大模型的计算需求&#xff0c;云计算平台的普及成为了关键&#xff0c;特别是基于GPU加速的云平台&#xf…...

【抽丝剥茧知识讲解】引入mybtis-plus后,mapper实现方式

目录 前言一、传统 Mapper 接口方式二、继承 BaseMapper 的方式三、自定义通用 Mapper 的方式四、使用 MyBatis-Plus 的 ActiveRecord 模式五、使用 MyBatis-Plus 的 IService 接口六、使用建议 前言 mapper文件&#xff0c;作为Mybatis框架中定义SQL语句和映射关系的配置文件&…...

AI浪潮:开启科技新纪元

AI 的多面应用​ AI 的影响力早已突破实验室的围墙&#xff0c;在众多领域落地生根&#xff0c;成为推动行业变革的重要力量。 在医疗领域&#xff0c;AI 宛如一位不知疲倦的助手&#xff0c;助力医生提升诊疗效率与准确性。通过对海量医学影像的深度学习&#xff0c;AI 能够快…...

制造业工厂的三大核心系统:ERP+PLM+MES

对于一家制造业工厂来说,要实现数字化转型,哪几个系统最重要?答案是:ERP,PLM和MES这三个核心系统最为重要!本文就为你快速地概览地介绍一下这三个系统 以及 它们之间的关联关系。 ERP:企业资源计划 ERP的全称是Enterprise Resource Planning,即企业资源计划系统。 它…...

驱动-定时-秒-字符设备

文章目录 目的相关资料参考实验驱动程序-timer_dev.c编译文件-Makefile测试程序-timer.c分析 加载驱动-运行测试程序总结 目的 通过定时器timer_list、字符设备、规避竞争关系-原子操作&#xff0c;综合运用 实现一个程序&#xff0c;加深之前知识的理解。 实现字符设备驱动框…...

(面试)Handler消息处理机制原理

Handler是用于实现线程间通信和任务调度的一种机&#xff08;Handler、 Looper、MessageQueue、 Message&#xff09;。Handler 允许线程间发送Message或Runnable对象进行通信。在Android中UI修改只能通过UI Thread&#xff0c;子线程不能更新UI。如果子线程想更新UI&#xff0…...

WebRTC 通话原理:从协商到通信

在实时音视频通信领域&#xff0c;WebRTC&#xff08;Web Real-Time Communication&#xff09;凭借其开源、无需插件且能在浏览器中直接实现高质量通信的特性&#xff0c;成为开发者的热门选择。本文将深入解析 WebRTC 通话原理&#xff0c;涵盖媒体协商、网络协商、网络穿越&…...

InforSuite AS 可以发布django和vue项目是否可行

InforSuite AS 是浪潮推出的企业级中间件平台&#xff0c;主要用于应用集成、流程管理、数据交换等场景&#xff0c;其核心功能更偏向于 Java EE 应用的部署和管理&#xff08;如支持 WAR/EAR 包&#xff09;。关于能否直接发布 Django&#xff08;Python 框架&#xff09;和 V…...

【中级软件设计师】网络攻击(附软考真题)

【中级软件设计师】网络攻击&#xff08;附软考真题&#xff09; 目录 【中级软件设计师】网络攻击&#xff08;附软考真题&#xff09;一、历年真题二、考点&#xff1a;网络攻击1、拒绝服务攻击&#xff08;DoS攻击&#xff09;2、重放攻击3、特洛伊木马4、网络监听5、SQL注入…...

CSS图片垂直居中问题解决方案

在 CSS 中&#xff0c;使用 vertical-align: middle 导致图片略微向下偏移的现象&#xff0c;本质上是由于 行内元素的基线对齐规则 和 父容器上下文环境 共同作用的结果。以下是具体原因和解决方案&#xff1a; 原因详解 1. vertical-align: middle 的真实含义 该属性 不会让…...

P1601 A+B Problem(高精)

题目描述 高精度加法&#xff0c;相当于 ab problem&#xff0c;不用考虑负数。 输入格式 分两行输入。a,b≤10500。 输出格式 输出只有一行&#xff0c;代表 ab 的值。 输入输出样例 输入 1 1 输出 2 输入 1001 9099 输出 10100 说明/提示 20% 的测试数据…...

鸿蒙OSUniApp实现个性化的搜索框与搜索历史记录#三方框架 #Uniapp

使用UniApp实现个性化的搜索框与搜索历史记录 在移动端应用开发中&#xff0c;搜索功能几乎是标配&#xff0c;而一个好的搜索体验不仅仅是功能的实现&#xff0c;更是用户留存的关键。本文将分享如何在UniApp框架下打造一个既美观又实用的搜索框&#xff0c;并实现搜索历史记录…...

鸿蒙OSUniApp 制作自定义弹窗与模态框组件#三方框架 #Uniapp

UniApp 制作自定义弹窗与模态框组件 前言 在移动应用开发中&#xff0c;弹窗和模态框是用户交互的重要组成部分&#xff0c;它们用于显示提示信息、收集用户输入或确认用户操作。尽管 UniApp 提供了基础的交互组件如 uni.showModal() 和 uni.showToast()&#xff0c;但这些原…...

web第一次课后作业--运行一个java web项目

一、创建java web项目 1.新建java EE --> 模版&#xff1a;Web应用程序 2.选择版本&#xff1a;Java EE 8 3. 配置tomcat 二、页面效果 默认页面 跳转页面 三、代码 3.1 默认页面 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8…...

工业互联网

工业互联网全景解析 工业互联网是工业数字化、网络化、智能化转型升级的重要抓手&#xff0c;是实现中国制造 2025 战略目标的重要路径&#xff0c;对于推动我国实体经济高质量、可持续发展&#xff0c;建设制造强国、网络强国&#xff0c;意义重大。2017 年&#xff0c;我国提…...

论QT6多线程技术

前言 以前我多线程使用传统的继承qthread重写run()或者继承qrunable类把对象丢到线程池解决。经过昨天的面试让我了解到新的技术&#xff0c;我之前看到过只不过没有详细的去了解movetotread技术&#xff0c;这个技术是qt5推出的&#xff0c;qt6还在延续使用 代码结构 以下是…...

TensorFlow深度学习实战(16)——注意力机制详解

TensorFlow深度学习实战&#xff08;16&#xff09;——注意力机制详解 0. 前言1. 引入注意力机制2. 注意力机制2.1 注意力机制原理2.2 注意力机制分类 3. 添加注意机制的 Seq2Seq 模型3.1 数据处理3.2 模型构建与训练3.3 模型性能评估 小结系列链接 0. 前言 在传统的神经网络…...

架空防静电地板材质全解析:选对材质,守护精密空间的“安全卫士”

在现代科技驱动的社会中&#xff0c;无论是数据中心、实验室、手术室&#xff0c;还是高端电子厂房&#xff0c;静电都是精密设备的“隐形杀手”。而架空防静电地板作为这些场所的“安全卫士”&#xff0c;其材质选择直接决定了防静电性能、承重能力及使用寿命。今天&#xff0…...

Linux系统中部署java服务(docker)

1、不使用docker ✅ 1. 检查并安装 Java 环境 检查 Java 是否已安装&#xff1a; java -version✅ 2. 上传 Java 项目 JAR 文件 可以创建一个server文件夹&#xff0c;然后上传目录 查看当前目录 然后创建目录上传jar包 ✅ 3. 启动 Java 服务 java -jar hywl-server.jar…...

PyGame游戏开发(入门知识+组件拆分+历史存档/回放+人机策略)

前言&#xff1a; 本章实现游戏组件的复用解耦&#xff0c;以及使用配置文件替代原有硬编码形式&#xff0c;进而只需要改动配置文件即可实现整个游戏的难度和地图变化&#xff0c;同时增加历史记录功能&#xff0c;在配置文件开启后即可保存每一局的记录为json形式作为后续强化…...

【上位机——WPF】Window标签常用属性

常用属性 常用属性程序退出 常用属性都是写在Window标签中的 <Window x:Class"WpfDemo1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"…...

K8S Gateway AB测试、蓝绿发布、金丝雀(灰度)发布

假设有如下三个节点的 K8S 集群&#xff1a; ​ k8s31master 是控制节点 k8s31node1、k8s31node2 是工作节点 容器运行时是 containerd 一、场景分析 阅读本文&#xff0c;默认您已经安装了 K8S Gateway。 关于 AB 测试、金丝雀发布&#xff0c;可以看这篇文章。 二、实验准…...

人大金仓数据库 与django结合

要在Django项目中连接人大金仓数据库&#xff08;Kingbase&#xff09;&#xff0c;你需要使用一个适合的数据库适配器。人大金仓数据库是基于PostgreSQL的&#xff0c;因此你可以使用psycopg2库来与Django连接。但是&#xff0c;由于人大金仓数据库有其特定的功能和配置&#…...

RK3588 桌面系统配置WiFi和蓝牙配置

桌面右上角点击&#xff0c;打开选项&#xff0c;找到WiFi的选择网络或者WiFi设置 在弹出的窗口中选择需要连接的WiFi&#xff0c;然后右下角选择连接&#xff0c;然后输入WiFi密码即可连接。 25.4. 命令行连接wifi路由器 命令行配置wifi的方法有很多&#xff0c;下面介绍几种…...

TLV格式

‌TLV格式&#xff08;Tag-Length-Value&#xff09;是一种常用的数据序列化格式&#xff0c;主要用于数据包或消息的有效载荷编码。‌TLV格式将数据划分为三个主要部分&#xff1a;Tag&#xff08;标签&#xff09;、Length&#xff08;长度&#xff09;和Value&#xff08;值…...

2024年9月电子学会等级考试五级第三题——整数分解

题目 3、整数分解 正整数 N 的 K-P 分解是指将 N 写成 K 个正整数的 P 次方的和。本题就请你对任意给定的正整数 N、K、P&#xff0c;写出 N 的 K-P 分解。 时间限制&#xff1a;8000 内存限制&#xff1a;262144 输入 输入在一行给出 3 个正整数 N (≤ 400)、K (≤ N)、P (1 …...

软考 系统架构设计师系列知识点之杂项集萃(60)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;59&#xff09; 第97题 在面向对象设计中&#xff0c;&#xff08;&#xff09;可以实现界面控制、外部接口和环境隔离。&#xff08;&#xff09;作为完成用例业务的责任承担者&#xff0c;协调…...

使用Python开发经典俄罗斯方块游戏

使用Python开发经典俄罗斯方块游戏 在这篇教程中&#xff0c;我们将学习如何使用Python和Pygame库开发一个经典的俄罗斯方块游戏。这个项目将帮助你理解游戏开发的基本概念&#xff0c;包括图形界面、用户输入处理、碰撞检测等重要内容。 项目概述 我们将实现以下功能&…...

C++:字符数组与字符串指针变量的大小

#include<iostream> #include<cstring> int main(int argc, char const *argv[]) {// 字符数组char str[128] "hello world";std::cout<<sizeof(str)<<std::endl;std::cout<<strlen(str)<<std::endl;// 字符串指针变量char *st…...

stm32使用freertos时延时时间间隔不对,可能是晶振频率没设置

freertos 获取频率的接口 在 FreeRTOSConfig.h 文件中声明一个函数作为freertos的接口 /// /// brief 获取 SysTick 的频率 /// /// note arm cortex-m 系列 CPU 有一个 systick &#xff0c;里面有一个 CTRL 寄存器&#xff0c;其中的 bit2 /// 可以用来控制 systick 的时钟…...

51c~C语言~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/13913911 一、大厂C语言编程10大规范 1 代码总体原则 1、清晰第一 清晰性是易于维护、易于重构的程序必需具备的特征。代码首先是给人读的&#xff0c;好的代码应当可以像文章一样发声朗诵出来。 目前软件维护期成本…...