「九」HarmonyOS 5 端云一体化实战项目——「M.U.」应用云侧开发云数据库
1 立意背景
M. 代表 “我”,U. 代表 “你”,这是一款用于记录情侣从相识、相知、相恋、见家长、订婚直至结婚等各个阶段美好记忆留存的应用程序。它旨在为情侣们提供一个专属的空间,让他们能够将一路走来的点点滴滴,如初次相遇时的心动瞬间、逐渐了解彼此过程中的深入交流、甜蜜恋爱时期的浪漫时刻、面对家长时的紧张与期待、订婚时的喜悦以及结婚时的神圣幸福等,都以一种独特而有意义的方式记录下来。这款应用程序就像是一个装满珍贵回忆的宝库,随着时间的推移,见证着情侣们爱情旅程的每一个重要阶段,成为他们美好爱情的永恒见证者和守护者。
2 HarmonyOS特性能力接入场景
- 华为账号服务
- 云开发服务
- 预加载
我们团队开发的MU作品是一款用于记录,情侣之间相处时各个阶段照片的归集。提供欢迎页、用户无感知匿名登录,相册管理,用户信息查看等功能。
-
欢迎页快速响应:通过预加载服务,实现可更换欢迎页快速响应功能。
-
用户无感知匿名登录:我们使用首次启动应用程序生成的UUID作为主键,关联用户的unionId和openId,达到用户无论是卸载重装还是冷启动,都能够快速响应用户数据信息。用户基本信息通过云数据库接口存储云端,用户头像通过云存储接口存入云端并更新对应的云数据库数据条目。
-
相册管理:使用云数据库和云存储服务实现相册的封面、标题、描述、内容信息的留存。
3 作品资源
3.1 欢迎页
3.2 时光轴
1)创建相册
2)上传照片
3.3 我的
4 一些理论性的知识要点
4.1 云数据库概述
云数据库是一款端云协同的数据库产品,是AGC云开发(AGC Serverless)关键服务之一,为AGC构建了MBaas(Mobile Backend as a Service,移动后端即服务)能力。云数据库提供了端云数据的协同管理、统一的数据模型和丰富的数据管理API接口等能力,端侧可以编写少量的代码实现AGC云端云数据库的交互。
云数据库采用基于对象模型的数据存储结构,与常见的关系数据库(MySQL,Oracle等)类似,包含数据表、表字段、表字段值、主键,以及表操作权限。唯一不同在于存储区,数据以对象的形式存储在不同的存储区中,每一个对象,都是一条完整的数据记录。存储区是一个独立的数据存储区域,每个存储区拥有完全相同的对象类型定义(也就是数据表),可以根据业务能力为不同用户划分不同的存储区。
云数据库对象类型、存储区以及数据,可以通过AGC控制台定义、创建和管理,也可以通过一站式集成开发工具DevEco Studio定义、创建和管理。云数据库支持多种数据类型,包括字符串、数值、文本、日期等。
云数据库还提供了多重数据安全策略,基于隐私或者敏感数据的全程加密管理能力,加密字段的数据在端侧会被加密,然后再以密文形式发送并存储到云数据库中。同时,提供基于角色的权限管理模型,预置4种角色和3种权限,来保证数据的安全,同时简化了权限管理操作。
4.2 数据库模型概述
云数据库是一款基于对象模型的数据库,采用存储区、对象类型和对象三级结构。每个应用在开通云数据库服务后,都会实例化一个云数据库实例,该实例中可以创建多个对象类型(数据表)、多个存储区。一个对象类型的数据可以对应一个存储区,也可以对应多个存储区。
- 对象类型(ObjectType):用于定义存储对象的集合,不同的对象类型对应的不同数据结构。每创建一个对象类型,云数据库会在每个存储区实例化一个与之结构相应的对象类型,用于存储对应的数据。
- 存储区(CloudDBZone):是一个独立的数据存储区域,多个数据存储区相互独立。每个存储区拥有完全相同的对象类型定义,开发者可以根据业务需要自定义存储区中存储的对象。
- 对象(CloudDBZoneObject):是云数据库基本操作单元,每个对象,都是一条完整的数据记录。
4.2.1 数据类型
云数据库支持多种数据类型,如下表所示:
数据类型 | 描述 | 取值范围 | 说明 |
---|---|---|---|
String | 字符串类型 | 最大长度200 | 字符串长度超过200,请使用Text类型。 |
Boolean | 布尔类型 | true:真;false:假。 | - |
Byte | 单字节整型 | -128 ~ +128 | - |
Short | 双字节整型 | -32,768 ~ +32,767 | - |
Integer | 四字节整型 | -2,147,483,648 ~ +2,147,483,647 | - |
Long | 八字节整型 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | - |
Float | 单精度浮点数 | -3.40E+38 ~ +3.40E+38,6位十进制有效数字。 | - |
Double | 双精度浮点数 | -1.79E+308 ~ +1.79E+308,15位十进制有效数字。 | - |
ByteArray | 字节数组 | - | 一般用于文件类型的数据存储,如图片、文档和视频等。 |
Text | 文本类型 | - | - |
Date | 日期类型 | - | - |
IntAutoIncrement | 自增类型,从1开始自增,Integet类型。 | 1 ~ 2,147,483,647 | - |
LongAutIncrement | 自增类型,从1开始自增,Long类型。 | 1 ~ 9,223,372,036,854,775,807 | - |
4.2.2 权限管理
云数据库支持对所有用户的访问进行鉴权,保障应用数据的安全。云侧访问云数据库的用户角色默认位管理员角色,即从AGC控制台、云函数和Server端访问云数据库角色,该角色默认拥有所有权限。端侧为应用程序运行端,端侧的数据操作有严格的安全规则限制,其数据的读写权限根据云侧权限配置表进行控制。
云数据库预置4种角色和3种权限,如下表所示:
角色 | query | upsert | delete | 说明 |
---|---|---|---|---|
所有人 | ✅ | ✅ | ✅ | 代表所有用户,包含认证和非认证用户。该角色默认拥有query权限,可自定义配置upsert和delete权限,但不建议将upsert和delete权限配置给所有人角色。当对象类型中设置了加密字段之后,表示开启全程加密功能,此时所有人角色将不会拥有query、upsert和delete权限,且不允许修改。 |
认证用户 | ✅ | ✅ | ✅ | 经过AGC登录认证的用户。该角色默认拥有query权限,可自定义配置upsert和delete权限。当对象类型中设置了加密字段之后,表示开启全程加密功能,此时认证用户角色将不会拥有query、upsert和delete权限,且不允许修改。 |
数据创建者 | ✅ | ✅ | ✅ | 经过认证的数据创建用户。该角色默认拥有所有权限,且可自定义配置所有权限。每条数据都有其对应的数据创建人(即应用用户),每个数据创建者仅可以upsert或者delete自己创建的数据,不能upsert或者delete他人创建的数据。数据创建者的信息保存在数据记录的系统表中。 |
管理员 | ✅ | ✅ | ✅ | 应用开发者,主要是指通过AGC控制台或FaaS(Function as a Service,函数即服务)侧访问云数据库的角色。该角色默认拥有所有权限,且可自定义配置所有权限。管理员可以管理并配置其他角色的权限。 |
5 创建一个存储「欢迎页信息」的对象类型
5.1 开发流程
使用端云一体化云侧工程开发云数据库流程为以下四步:
- 确保云数据库服务开通。
- 通过DevEco Studio工具在云侧工程创建一个用于存储数据条目的对象类型。
- 通过DevEco Studio工具在云侧工程为创建的对象类型添加数据,并配置数据所在存储区。
- 数据成功添加后,通过DevEco Studio工具提供的一键部署能力,将对象类型和数据条目部署到AGC云端。
5.2 确保云数据库服务开通
使用DevEco Studio预置的通用云开发模板创建的端云一体化工程,在工程初始化时,会自动开通云开发(Serverless)服务,若在开发工具主界面通知栏(Notifications)中显示服务开通失败,需按照以下步骤进行开通个。
- 登录AGC控制台,点击“我的项目”。
- 在项目列表中点击需要开通云数据库的项目。
-
在打开的目标项目左侧导航栏选择“云开发(Serverless) > 云数据库”,进入云数据库页面,点击“立即开通”。
-
在开通云数据库时,若尚未设置默认数据处理位置,在弹出的”数据处理位置“窗口进行设置,仔细阅读弹出提示框的文字说明后,在“启用”栏为您的项目勾选一个或多个数据处理位置,并在“设为默认”栏将其中一个设置为默认数据处理位置。
5.3 云侧创建对象类型
- 展开云侧工程目录,右击“clouddb/objecttype”目录,选择“New > Cloud DB Object Type”。
- 在弹出的新建对象类型窗口中输入对象类型名称(下文以“Welcome”为例)后,点击OK按钮完成创建。对象类型命名必须符合以下规范:
- 只能包含大小写字母,数字,下划线,并且至少包含字母类型。
- 必须以字母开头,以字母或者数字结尾,不允许以“sqlite_”开头,不允许以下划线结尾。
- 不允许使用如下系统保留名称:naturalbase_metadata、objecttypeinfohelper、t_data_upgrade_info、t_index_schema、t_nstore_config、t_schema_negotiate_info、t_metadata_schema、t_nstore_permission、t_system_config。
- DevEco Studio工具会根据通用云开发模板内置的对象类型模板新建对象类型JSON文件”Welcome.json“,并会在编码区自动打开该文件。文件结构属性包括对象类型名称(objectTypeName)、对象类型配置字段信息(fields)、对象类型索引信息(indexes)、对象类型角色权限(permissions)。
- 根据业务需要在“fields”中配置对象类型字段信息,字段属性(需要满足的规范参见在“fileds”中为该对象类型配置字段信息)如下表所示。
参数 | 必选(M)/可选(O) | 说明 |
---|---|---|
fieldName | M | 字段名称。 |
filedType | M | 字段的数据类型。 |
belongPrimaryKey | O | 设置该字段是否为对象类型的主键,默认值为false。 |
notNull | O | 设置字段值是否为非空,默认为false。 |
isNeedEncrypt | O | 设置字段是否需要加密,开启全程加密数据管理功能,默认值为false。 |
isSensitive | O | 设置字段是否为敏感字段,默认值为false。 |
defaultValue | O | 字段为非空时,必须设置默认值。 |
例如:为“Welcom”对象类型配置如下字段:
filedName | fieldType | belongPrimaryKey | notNull | isNeedEncrypt | defaultValue |
---|---|---|---|---|---|
id | Integer | true | true | ||
img | String | ||||
status | Byte | 0 | |||
createTime | Date |
"fields": [{"fieldName": "id", "fieldType": "Integer", "notNull": true, "belongPrimaryKey": true},{"fieldName": "img", "fieldType": "String"},{"fieldName": "status", "fieldType": "Short", "defaultValue": 0},{"fieldName": "createTime", "fieldType": "Date"}
]
- 根据业务需要在“indexes”中为该对象类型配置索引、索引包含的字段、以及索引包含的字段的排序方式。索引属性(需要满足的规范参见在“indexes”中为该对象类型配置索引)如下表所示。
参数 | 必选(M)/可选(O) | 说明 |
---|---|---|
indexName | M | 索引名称。 |
indexList > fieldName | M | 索引包含的字段。 |
indexList > sortType | M | 索引包含的字段的排序方式,支持升序或降序。 |
例如:为“Welcom”对象类型配置如下索引:
indexName | fieldName | sortType |
---|---|---|
IND_202412101709 | id | ASC |
createTime | DESC |
"indexes": [{"indexName": "IND_202412101709","indexList": [{"fieldName": "id","sortType": "ASC"},{"fieldName": "createTime","sortType": "DESC"}]}]
- 根据实际业务在“permissions”中设置各角色是否具有该对象类型的Read、Upsert(包含新增和修改)和Delete权限。角色权限属性(需要满足的规范参见在“permissions”中设置各角色对象类型权限)如下表所示。
参数 | 必选(M)/可选(O) | 说明 |
---|---|---|
role | M | 用户角色。 |
rights | M | 授予角色的权限,包括Read、Upsert(包括新增和修改)和Delete权限。 |
例如:为“Welcom”对象类型各角色配置权限:
角色 | Read | Upsert | Delete |
---|---|---|---|
World | ✅ | ❌ | ❌ |
Authenticated | ✅ | ✅ | ❌ |
Creator | ✅ | ✅ | ✅ |
Administrator | ✅ | ✅ | ✅ |
"permissions": [{"role": "World","rights": ["Read"]},{"role": "Authenticated","rights": ["Read","Upsert"]},{"role": "Creator","rights": ["Read","Upsert","Delete"]},{"role": "Administrator","rights": ["Read","Upsert","Delete"]}]
5.4 添加数据条目
如果在创建对象类型后,直接一键部署对象类型,会出现以下异常信息。发生这种异常信息是因为未在对象类型内添加数据条目。
- 为对象类型添加数据条目,并配置数据所在的存储区,当前支持手动创建和自动生成数据条目文件,建议使用DevEco Studio工具提供的自动生成数据条目文件。右击对象类型JSON文件,选择“Generate Data Entry”,依旧以对象类型“Welcome”为例,包含“id”、“img”、“status”、“createTime”六个字段。
- 在弹出的“New Cloud DB Data Entry”窗口内,为即将生成的数据条目文件定义名称。此处取默认值“d_Welcome”为例。
- 会根据DevEco Studio工具预置通用云开发模板提供的数据条目模板自动在“clouddb/dataentry”目录下为对象类型“Welcome”生成数据条目文件“d_Welcome”,该文件中已为开发者预置了默认的存储区,所属对象类型名称(“Welcome”),以及对象类型的字段名(“id”、“img”、“status”、“createTime”)。
- cloudDBZoneName:配置存储区名称,支持自定义,需要开发者记住存储区名称,在使用API访问云数据库时需要使用该值获取对象类型数据。
- objectTypeName:对象类型名称。
- objects:配置当前对象类型中所有字段的值,即写入数据。一个对象即为一条数据,可以通过新建一个对象来为字段赋新值,也可以修改某个对象下字段的值。需要注意的是,主键或加密字段的值不支持修改。
{"cloudDBZoneName": "default","objectTypeName": "Welcome","objects": [{"id": 1,"img": "string1","status": 0,"createTime": 1733835123302}]
}
5.5 部署云数据库
完成对象类型创建以及对象类型数据条目创建后,开发者可以通过右击对象类型或者数据条目直接将对象类型和数据条目部署到AGC云端。DevEco Studio工具支持单个对象类型和数据条目部署,也支持批量部署。
- 单个对象类型部署,右击对象类型名称。若批量部署,需要右击“clouddb”目录,选择“Deploy Cloud DB”。
- 可以在开发工具主界面底部状态栏右侧查看云数据库打包与部署进度。
- 等待部署云数据库,直至出现“Deploy successfully”消息,表示云数据库已成功部署。
- 云数据库部署成功后,DevEco Studio工具会自动从AGC云端下载云数据库的schema文件,并将该文件存储在端侧工程“AppScope/resources/rawfile“目录,文件名称为”schema.json“,该文件是端侧API访问云数据库必须引入的配置文件。
5.6 查看云数据库部署情况
- 在DevEco Studio工具主界面顶部菜单栏选择“Tools > Cloud Dev”打开云开发管理面板。
- 如果开发工具尚未登录华为开发者账号,需要先登录授权才可以使用云开发管理面板能力。点击面板中的“CloudDev > Go to console”或者“Serverless > Cloud DB > Go to console”打开AGC控制台。两者区别在于第一种方式需要在AGC控制台页面点击左侧“云数据库”菜单,而第二种方式可以直接定位到AGC控制台云数据库子控制台。
- 分别点击“对象类型”、“存储区”与“数据”页签,查看通过DevEco Studio工具开发并部署的云数据库资源是否已经成功部署到AGC云端。
6 总结
本小节主要对云数据库相关概念做了简单了解,并通过创建「欢迎页信息」对象类型详细讲解了使用一站式集成工具DevEco Studio开发、部署云数据库至AGC云端,同时提供了如何查看部署到AGC云端的云数据库资源。
相关文章:

「九」HarmonyOS 5 端云一体化实战项目——「M.U.」应用云侧开发云数据库
1 立意背景 M. 代表 “我”,U. 代表 “你”,这是一款用于记录情侣从相识、相知、相恋、见家长、订婚直至结婚等各个阶段美好记忆留存的应用程序。它旨在为情侣们提供一个专属的空间,让他们能够将一路走来的点点滴滴,如初次相遇时…...

记录:virt-manager配置Ubuntu arm虚拟机
virt-manager(Virtual Machine Manager)是一个图形用户界面应用程序,通过libvirt管理虚拟机(即作为libvirt的图形前端) 因为要在Linux arm环境做测试,记录下virt-manager配置arm虚拟机的过程 先在VMWare中…...

clickhouse-介绍、安装、数据类型、sql
1、介绍 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 OLAP(On-Line A…...

【shell】常用100个shell命令使用讲解
【shell】常用100个shell命令使用讲解 【一】文件操作命令【二】搜索命令【三】目录操作命令【四】权限操作命令【五】网络操作命令【六】进程和系统控制命令【七】文本操作命令【八】压缩与解压命令【九】磁盘使用管理命令【十】包管理命令【十一】进程管理命令【十二】环境变…...

Git-分支(branch)常用命令
分支 我们在做项目开发的时候,无论是软件项目还是其他机械工程项目,我们为了提高效率以及合理的节省时间等等原因,现在都不再是线性进行,而是将一个项目抽离出诸进行线,每一条线在git中我们就叫做分支,bran…...

谈谈es6 Map 函数
发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。 Map 是 ES6 中引入的一种新的数据结构,它类似于对象(Object),但与对象相比&#…...

微信小程序:实现节点进度条的效果;正在完成的节点有动态循环效果;横向,纵向排列
参考说明 微信小程序实现流程进度功能 - 知乎 上面的为一个节点进度条的例子,但并不完整,根据上述代码,进行修改完善,实现其效果 横向效果 代码 wxml <view classorder_process><view classprocess_wrap wx:for&quo…...

【Unity3D】无限循环列表(扩展版)
基础版:【Unity技术分享】UGUI之ScrollRect优化_ugui scrollrect 优化-CSDN博客 using UnityEngine; using UnityEngine.UI; using System.Collections.Generic;public delegate void OnBaseLoopListItemCallback(GameObject cell, int index); public class BaseLo…...

MacOS 命令行详解使用教程
本章讲述MacOs命令行详解的使用教程,感谢大家观看。 本人博客:如烟花般绚烂却又稍纵即逝的主页 MacOs命令行前言: 在 macOS 上,Terminal(终端) 是一个功能强大的工具,它允许用户通过命令行直接与系统交互。本教程将详细介绍 macOS…...

redis集群安装部署 redis三主三从集群
redis集群安装部署 redis三主三从集群 1、下载redis2、安装redis集群 三主三从3、配置redis开机自启动3.1、建立启动脚本3.2、复制多份redis启动脚本给集群使用3.3、添加可执行权限3.4、配置开机自启动 1、下载redis 本次redis安装部署选择当前最新的稳定版本7.4.1 下载链接: …...

第十二课 Unity 内存优化_内存工具篇(Memory)详解
内存(Memory) unity 内存部分也是优化过程中非常重要的一个环节,也会影像渲染过程中的同步等待与带宽问题。因此内存的优化也可能会给我们渲染开销带来精简,今天我们先来了解unity中的内存与使用到的内存工具。 Unity中的内存 托…...

达梦8-达梦数据的示例用户和表
1、示例库说明: 创建达梦数据的示例用户和表,导入测试数据。 在完成达梦数据库的安装之后,在/opt/dmdbms/samples/instance_script目录下有用于创建示例用户的SQL文件。samples目录前的路径根据实际安装情况进行修改,本文将达梦…...

数据可视化-1. 折线图
目录 1. 折线图适用场景分析 1. 1 时间序列数据展示 1.2 趋势分析 1.3 多变量比较 1.4 数据异常检测 1.5 简洁易读的数据可视化 1.6 特定领域的应用 2. 折线图局限性 3. 折线图代码实现 3.1 Python 源代码 3.2 折线图效果(网页显示) 1. 折线图…...

【现代服务端架构】传统服务器 对比 Serverless
在现代开发中,选择合适的架构是至关重要的。两种非常常见的架构模式分别是 传统服务器架构 和 Serverless。它们各有优缺点,适合不同的应用场景。今天,我就带大家一起对比这两种架构,看看它们的差异,并且帮助你选择最适…...

论文学习—VAE
VAE----Auto-Encoding Variational Bayes 2024年12月17日-2024年12月18日摘要引言方法例子:变分自动编码器 2024年12月17日-2024年12月18日 从今天开始,我准备记录自己学习的内容以此来检验我每天的学习量,菜鸡一枚,希望能够与大…...

AI 智能体(AI Agent)到底什么原理?能干什么事情
智能体应用有哪些? 智能体在千行百业中有着广泛的应用,目前已经在 600 多个项目落地和探索,广泛应用于政府与公共事业、交通、工业、能源、金融、医疗、科研等行业。智能体是模拟人类智能的计算机系统,能自主感知环境、智能决策并…...

【mysql】如何查看大表记录行数
目录 1. 使用 ANALYZE TABLE 和 SHOW TABLE STATUS2. 查询 INFORMATION_SCHEMA 表3. 使用索引统计信息4. 维护行数缓存5. 使用分区计数 1. 使用 ANALYZE TABLE 和 SHOW TABLE STATUS 1.ANALYZE TABLE 可以更新表的统计信息,然后使用 SHOW TABLE STATUS 来查看估算的…...

Linux之网络配置
一、检查虚拟机和本机通不通 测试虚拟机和本机是否通不通 winR,运行本机cmd,输入ipconfig,拿到本机ip地址 在虚拟机上ping一下这个地址(ctrlshitv)可以把复制的文本粘贴进虚拟机。 可以看到,不通,解决方法在最后&am…...

SpringBoot集成JWT和Redis实现鉴权登录功能
目前市面上有许多鉴权框架,鉴权原理大同小异,本文简单介绍下利用JWT和Redis实现鉴权功能,算是抛砖引玉吧。 主要原理就是“令牌主动失效机制”,主要包括以下4个步骤: (1)利用拦截器LoginInterceptor实现所有接口登录拦…...

LabVIEW热电偶传感器虚拟仿真实验系统
在教学和科研领域,实验设备的更新和维护成本较高,尤其是在经济欠发达地区,设备的短缺和陈旧化严重影响了教学质量。基于LabVIEW的热电偶传感器虚拟仿真实验系统能够通过模拟实验环境,提供一个成本低廉且效果良好的教学和研究平台。…...

Centos7 部署ZLMediakit
1、拉取代码 #国内用户推荐从同步镜像网站gitee下载 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit #千万不要忘记执行这句命令 git submodule update --init 2、安装编译器 sudo yum -y install gcc 3、安装cmake sudo yum -y install cmake 4…...

Docker搭建kafka环境
系统:MacOS Sonoma 14.1 Docker版本:Docker version 27.3.1, build ce12230 Docker desktop版本:Docker Desktop 4.36.0 (175267) 1.拉取镜像 先打开Docker Desktop,然后在终端执行命令 docker pull lensesio/fast-data-dev …...

wsl2-ubuntu安装docker后无法拉取镜像
如上是报错全部信息, 这个实际上是因为网络不通导致的, 由于我实在公司使用, 而公司上网需要使用代理, 因此把代理加上就行了. # 为docker服务添加代理 mkdir /etc/systemd/system/docker.service.d cat > /etc/systemd/system/docker.service.d/http-proxy.conf <<…...

Invalid bound statement (not found) 错误解决
出现这个错误提示:Invalid bound statement (not found): com.xxx.small_reservior.dao.WaterRainMapper.getWaterRainByRegion,通常表示 MyBatis 框架无法找到与给定的 getWaterRainByRegion 方法匹配的 SQL 映射语句。这种问题通常发生在以下几种情况中…...

深度学习的下一站:解锁人工智能的新边界
引言:新边界的呼唤 深度学习的诞生,犹如人工智能领域的一次革命,激发了语音助手、自动驾驶、智能医疗等前沿技术的飞速发展。然而,面对现实世界的复杂性,现有的深度学习模型仍然存在数据依赖、可解释性差、环境适应力不…...

搭建Tomcat(三)---重写service方法
目录 引入 一、在Java中创建一个新的空项目(初步搭建) 问题: 要求在tomcat软件包下的MyTomcat类中编写main文件,实现在MyTomcat中扫描myweb软件包中的所有Java文件,并返回“WebServlet(url"myFirst")”中…...

跟着AI 学AI开发二,本地部署自己的Chat GPT
这里要安装的是Open Web UI ,用一张架构图说明AI 前端与后端的关系。 之前的Python 的方法已经做过多次介绍,这里不做赘述。 顺序:1,Ollama。 2,Docker。 3,Open WebUI。 Ollama 安装下载地址࿱…...

XXE靶机漏洞复现通关
1.扫描XXE靶机的ip地址 将kali虚拟机和XXE靶机部署在同一局域网中,都采用NAT网络模式 搭建好后在kali终端中进行扫描XXE靶机的ip arp-scan -l 根据常识我们可以推断192.168.27.153为靶机的ip地址 2.访问靶机页面并扫描附录 进入页面后我们可以打开御剑扫描网页中…...

XS9922B 同轴RX芯片 四通道 多合一模拟高清解码器
XS9922B 是一款 4 通道模拟复合视频解码芯片,支持 HDCCTV 高清协议和 CVBS 标 清协议,视频制式支持 720P/1080P 高清制式和 960H/D1 标清制式。芯片将接收到的高清 模拟复合视频信号经过模数转化,视频解码以及 2D 图像处理之后,转…...

如何在谷歌浏览器中设置电子邮件通知
在现代互联网生活中,电子邮件已成为我们日常沟通的重要工具。为了更高效地管理邮件,您可以在谷歌浏览器中设置电子邮件通知。本文将详细介绍如何实现这一功能,并附带一些相关的Chrome使用技巧。(本文由https://chrome.google64.cn…...