寺庙小程序-H5网页开发

大家好,我是程序员小孟。

现在有很多的产品或者工具都开始信息话了,寺庙或者佛教也需要小程序吗?

当然了!

前面我们还开发了很多寺庙相关的小程序。

今天要介绍的是一款寺庙系统,该系统可以作为小程序、H5网页、安卓端。

根据目录快速阅读

    • 一,系统的用途
    • 二,系统的功能需求
    • 三,系统的技术栈
    • 四,系统演示
    • 五,系统的核心代码

一,系统的用途

该系统用于寺庙,在该系统中可以查询寺庙的信息,可以在线查看主持,在线看经,在线听经,在线预约,在线联系师傅等。

通过本系统实现了寺庙的宣传、用户线上听经、视经,信息的管理,提高了管理的效率。

二,系统的功能需求

用户:登录、注册、寺庙信息查看、在线听经、在线视经、在线预约祈福、在线留言、在线纪念馆查看

管理员:用户管理、寺庙信息管理、听经管理、视经管理、预约祈福审核、留言管理、纪念馆信息管理、数据统计等等。

三,系统的技术栈

因为客户没有技术方面的要求,那就按照我习惯用的技术开发的,无所谓什么最新不最新技术了。

小程序:uniapp

后台框架:SpringBoot,

数据库采用的Mysql,

后端的页面采用的Vue进行开发,

缓存用的Redis,

搜索引擎采用的是elasticsearch,

ORM层框架:MyBatis,

连接池:Druid,

分库分表:MyCat,

权限:SpringSecurity,

代码质量检查:sonar。

图片

看下系统的功能框架图应该更加清楚:

在这里插入图片描述

四,系统演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五,系统的核心代码

package com.example.controller;import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.ShifuInfo;
import com.example.entity.UserInfo;
import com.example.entity.Account;
import com.example.exception.CustomException;
import com.example.service.ShifuInfoService;
import com.example.service.UserInfoService;
import cn.hutool.json.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.apache.poi.util.IOUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;import java.io.IOException;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;@RestController
public class AccountController {@Resourceprivate UserInfoService userInfoService;@Value("${appId}")private String appId;@Value("${appSecret}")private String appSecret;@Resourceprivate ShifuInfoService shifuInfoService;@GetMapping("/logout")public Result logout(HttpServletRequest request) {request.getSession().setAttribute("user", null);return Result.success();}@GetMapping("/auth")public Result getAuth(HttpServletRequest request) {Object user = request.getSession().getAttribute("user");if(user == null) {return Result.error("401", "未登录");}return Result.success((UserInfo)user);}/*** 注册*/@PostMapping("/register")public Result<UserInfo> register(@RequestBody UserInfo userInfo, HttpServletRequest request) {UserInfo register = userInfoService.add(userInfo);return Result.success(register);}@PostMapping("/findUserByUserName")public Result<List<UserInfo>> findUserByUserName(@RequestBody UserInfo userInfo, HttpServletRequest request) {if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {throw new CustomException(ResultCode.PARAM_ERROR);}List<UserInfo> register = userInfoService.findByUserName(userInfo);return Result.success(register);}@PostMapping("/wxFindUserByOpenId")public Result<UserInfo> wxFindUserByOpenId(@RequestBody UserInfo userInfo) {if (StrUtil.isBlank(userInfo.getOpenId())) {throw new CustomException(ResultCode.USER_OPENID_ERROR);}UserInfo login = userInfoService.wxFindUserByOpenId(userInfo.getOpenId());return Result.success(login);}@PostMapping("/wxFindUserByUserName")public Result<List<UserInfo>> wxFindUserByUserName(@RequestBody UserInfo userInfo, HttpServletRequest request) {if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {throw new CustomException(ResultCode.PARAM_ERROR);}List<UserInfo> register = userInfoService.findByUserName2(userInfo);return Result.success(register);}/*** 登录*/@PostMapping("/endLogin")public Result<UserInfo> login(@RequestBody UserInfo userInfo, HttpServletRequest request) {if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);}UserInfo login = userInfoService.login(userInfo.getName(), userInfo.getPassword());HttpSession session = request.getSession();session.setAttribute("user", login);session.setMaxInactiveInterval(120 * 60);return Result.success(login);}@PostMapping("/wxlogin")public Result<UserInfo> wxlogin(@RequestBody UserInfo userInfo, HttpServletRequest request) {if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);}UserInfo login = userInfoService.wxlogin(userInfo.getName(), userInfo.getPassword());HttpSession session = request.getSession();session.setAttribute("user", login);session.setMaxInactiveInterval(120 * 60);return Result.success(login);}@PostMapping("/login2")public Result<ShifuInfo> login2(@RequestBody UserInfo userInfo, HttpServletRequest request) {if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {throw new CustomException(ResultCode.USER_ACCOUNT_ERROR);}ShifuInfo login = shifuInfoService.login(userInfo.getName(), userInfo.getPassword());HttpSession session = request.getSession();session.setAttribute("user", login);session.setMaxInactiveInterval(120 * 60);return Result.success(login);}/*** 重置密码为123456*/@PutMapping("/resetPassword")public Result<UserInfo> resetPassword(@RequestParam String username) {return Result.success(userInfoService.resetPassword(username));}@PutMapping("/resetPassword2")public Result<ShifuInfo> resetPassword2(@RequestParam String username) {return Result.success(shifuInfoService.resetPassword(username));}@PutMapping("/updatePassword")public Result updatePassword(@RequestBody UserInfo info, HttpServletRequest request) {UserInfo account = (UserInfo) request.getSession().getAttribute("user");if (account == null) {return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);}String oldPassword = SecureUtil.md5(info.getPassword());if (!oldPassword.equals(account.getPassword())) {return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg);}account.setPassword(SecureUtil.md5(info.getNewPassword()));userInfoService.update(account);// 清空session,让用户重新登录request.getSession().setAttribute("user", null);return Result.success();}@PutMapping("/updatePassword2")public Result updatePassword2(@RequestBody ShifuInfo info, HttpServletRequest request) {ShifuInfo account = (ShifuInfo) request.getSession().getAttribute("user");if (account == null) {return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);}String oldPassword = SecureUtil.md5(info.getPassword());if (!oldPassword.equals(account.getPassword())) {return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg);}account.setPassword(SecureUtil.md5(info.getNewPassword()));shifuInfoService.update(account);// 清空session,让用户重新登录request.getSession().setAttribute("user", null);return Result.success();}@GetMapping("/mini/userInfo/{id}/{level}")public Result<Account> miniLogin(@PathVariable Long id, @PathVariable Integer level) {Account account = userInfoService.findByIdAndLevel(id, level);return Result.success(account);}/*** 修改密码*/@PutMapping("/changePassword")public Result<Boolean> changePassword(@RequestParam Long id,@RequestParam String newPassword) {return Result.success(userInfoService.changePassword(id, newPassword));}@GetMapping("/getSession")public Result<Map<String, String>> getSession(HttpServletRequest request) {UserInfo account = (UserInfo) request.getSession().getAttribute("user");if (account == null) {return Result.success(new HashMap<>(1));}Map<String, String> map = new HashMap<>(1);map.put("username", account.getName());return Result.success(map);}@GetMapping("/wxAuthorization/{code}")public Result wxAuthorization(@PathVariable String code) throws IOException, IOException {System.out.println("code" + code);String url = "https://api.weixin.qq.com/sns/jscode2session";url += "?appid="+appId;//自己的appidurl += "&secret="+appSecret;//自己的appSecreturl += "&js_code=" + code;url += "&grant_type=authorization_code";url += "&connect_redirect=1";String res = null;CloseableHttpClient httpClient = HttpClientBuilder.create().build();// DefaultHttpClient();HttpGet httpget = new HttpGet(url);    //GET方式CloseableHttpResponse response = null;// 配置信息RequestConfig requestConfig = RequestConfig.custom()          // 设置连接超时时间(单位毫秒).setConnectTimeout(5000)                    // 设置请求超时时间(单位毫秒).setConnectionRequestTimeout(5000)             // socket读写超时时间(单位毫秒).setSocketTimeout(5000)                    // 设置是否允许重定向(默认为true).setRedirectsEnabled(false).build();           // 将上面的配置信息 运用到这个Get请求里httpget.setConfig(requestConfig);                         // 由客户端执行(发送)Get请求response = httpClient.execute(httpget);                   // 从响应模型中获取响应实体HttpEntity responseEntity = response.getEntity();System.out.println("响应状态为:" + response.getStatusLine());if (responseEntity != null) {res = EntityUtils.toString(responseEntity);System.out.println("响应内容长度为:" + responseEntity.getContentLength());System.out.println("响应内容为:" + res);}// 释放资源if (httpClient != null) {httpClient.close();}if (response != null) {response.close();}JSONObject jo = new JSONObject(res);String openid = jo.getStr("openid");return Result.success(openid);}@GetMapping("/wxGetUserPhone/{code}")public Result wxGetUserPhone(@PathVariable String code) throws IOException {//获取access_tokenSystem.out.println("code" + code);String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";url += "&appid="+appId;//自己的appidurl += "&secret="+appSecret;//自己的appSecretString res = null;CloseableHttpClient httpClient = HttpClientBuilder.create().build();// DefaultHttpClient();HttpGet httpget = new HttpGet(url);    //GET方式CloseableHttpResponse response = null;// 配置信息RequestConfig requestConfig = RequestConfig.custom()          // 设置连接超时时间(单位毫秒).setConnectTimeout(5000)                    // 设置请求超时时间(单位毫秒).setConnectionRequestTimeout(5000)             // socket读写超时时间(单位毫秒).setSocketTimeout(5000)                    // 设置是否允许重定向(默认为true).setRedirectsEnabled(false).build();           // 将上面的配置信息 运用到这个Get请求里httpget.setConfig(requestConfig);                         // 由客户端执行(发送)Get请求response = httpClient.execute(httpget);                   // 从响应模型中获取响应实体HttpEntity responseEntity = response.getEntity();if (responseEntity != null) {res = EntityUtils.toString(responseEntity);}// 释放资源if (httpClient != null) {httpClient.close();}if (response != null) {response.close();}JSONObject jo = new JSONObject(res);String token = jo.getStr("access_token");//解析手机号url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token="+token;httpClient = HttpClientBuilder.create().build();// DefaultHttpClient();HttpPost httppost = new HttpPost(url);    //POST方式JSONObject jsonObject = new JSONObject();jsonObject.putOpt("code",code);String jsonString = jsonObject.toJSONString(0);StringEntity entity = new StringEntity(jsonString, ContentType.APPLICATION_JSON);httppost.setEntity(entity);// 配置信息requestConfig = RequestConfig.custom()          // 设置连接超时时间(单位毫秒).setConnectTimeout(5000)                    // 设置请求超时时间(单位毫秒).setConnectionRequestTimeout(5000)             // socket读写超时时间(单位毫秒).setSocketTimeout(5000)                    // 设置是否允许重定向(默认为true).setRedirectsEnabled(false).build();           // 将上面的配置信息 运用到这个Get请求里httppost.setConfig(requestConfig);                         // 由客户端执行(发送)Get请求response = httpClient.execute(httppost);                   // 从响应模型中获取响应实体responseEntity = response.getEntity();if (responseEntity != null) {res = EntityUtils.toString(responseEntity);}// 释放资源if (httpClient != null) {httpClient.close();}if (response != null) {response.close();}JSONObject result = new JSONObject(res);String strResult = result.getStr("phone_info");return Result.success(new JSONObject(strResult));}
}
package com.example.controller;import com.example.common.Result;
import com.example.entity.AddressInfo;
import com.example.service.AddressInfoService;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;@RestController
@RequestMapping("/addressInfo")
public class AddressInfoController {@Resourceprivate AddressInfoService addressInfoService;@PostMappingpublic Result<AddressInfo> add(@RequestBody AddressInfo info) {addressInfoService.add(info);return Result.success(info);}@DeleteMapping("/{id}")public Result delete(@PathVariable Long id) {addressInfoService.delete(id);return Result.success();}@PutMappingpublic Result update(@RequestBody AddressInfo info) {addressInfoService.update(info);return Result.success();}@GetMappingpublic Result<AddressInfo> all() {return Result.success(addressInfoService.findAll());}
}```java
package com.example.controller;import com.example.common.Result;
import com.example.entity.AdvertiserInfo;
import com.example.service.AdvertiserInfoService;
import com.example.vo.ChaobaInfoVo;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;@RestController
@RequestMapping(value = "/advertiserInfo")
public class AdvertiserInfoController {@Resourceprivate AdvertiserInfoService advertiserInfoService;@PostMappingpublic Result<AdvertiserInfo> add(@RequestBody AdvertiserInfo advertiserInfo) {advertiserInfoService.add(advertiserInfo);return Result.success(advertiserInfo);}@DeleteMapping("/{id}")public Result delete(@PathVariable Long id) {advertiserInfoService.delete(id);return Result.success();}@PutMappingpublic Result update(@RequestBody AdvertiserInfo advertiserInfo) {advertiserInfoService.update(advertiserInfo);return Result.success();}@GetMapping("/{id}")public Result<AdvertiserInfo> detail(@PathVariable Long id) {AdvertiserInfo advertiserInfo = advertiserInfoService.findById(id);return Result.success(advertiserInfo);}@GetMappingpublic Result<List<AdvertiserInfo>> all() {return Result.success(advertiserInfoService.findAll());}@GetMapping("/getNew")public Result<List<AdvertiserInfo>> getNew() {return Result.success(advertiserInfoService.getNew());}@PostMapping("/page")public Result<PageInfo<AdvertiserInfo>> page(  @RequestBody AdvertiserInfo advertiserInfo,@RequestParam(defaultValue = "1") Integer pageNum,@RequestParam(defaultValue = "10") Integer pageSize,HttpServletRequest request) {return Result.success(advertiserInfoService.findPage(advertiserInfo.getName(), pageNum, pageSize, request));}@PostMapping("/front/page")public Result<PageInfo<AdvertiserInfo>> page(@RequestParam(defaultValue = "1") Integer pageNum,@RequestParam(defaultValue = "4") Integer pageSize,HttpServletRequest request) {return Result.success(advertiserInfoService.findFrontPage(pageNum, pageSize, request));}
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot实现文件上传功能,整合云服务

文章目录 这是springboot案例的,文件上传功能的拆分,本篇将带大家彻底了解文件上传功能,先从本地存储再到云存储,全网最详细版本,保证可以学会,可以了解文件上传功能的开发文件上传功能剖析进行书写一个小的文件上传文件上传的文件三要素首先表单提交的方式要是 post方式,第二个…

Leetcode 剑指 Offer II 080.组合

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定两个整数 n 和 k&#xff0c;返回 1 … n 中所有可能的 k 个…

vue2+antv/x6实现er图

效果图 安装依赖 npm install antv/x6 --save 我目前的项目安装的版本是antv/x6 2.18.1 人狠话不多&#xff0c;直接上代码 <template><div class"er-graph-container"><!-- 画布容器 --><div ref"graphContainerRef" id"gr…

国际荐酒师(香港)协会受邀出席广州意大利国庆晚宴

2024年5月30日&#xff0c;意大利驻广州总领事馆举办的2024年意大利国庆招待会及晚宴&#xff0c;庆祝意大利共和国成立。此次晚宴旨在促进中意两国之间的文化交流与合作。国际荐酒师&#xff08;香港&#xff09;协会受主办方邀请参与了这一重要活动。 国际荐酒师&#xff08;…

内核调度客制化利器:SCHED_EXT

一、前言 今年年初&#xff0c;宋宝华老师发表了一篇对2023年内核技术总结的文章《熠熠生辉 | 2023 年 Linux 内核十大技术革新功能》。有兴趣的伙伴可以点击蓝色字体链接回顾。 文章提及的10个技术中&#xff0c;与CPU任务调度器核心相关的内容&#xff0c;一共有两个&#xf…

痛心!2岁女童被从17楼推下坠亡,凶手疑是未成年

一起又一起的案件&#xff0c; 如同一部沉重的史诗&#xff0c; 无声地述说着一个共同的真理&#xff1a; 严惩恶魔&#xff0c;实则是在庇护着无数纯真的心灵&#xff0c;守护着更多的孩子。 因为每一起案件的背后&#xff0c;都隐藏着一个个令人心碎的故事。 01 近日&#xf…

python编程:实现对数据库中图片文件的查看及比对

当谈到图像查看和管理时,我们往往会使用一些工具软件,比如Windows自带的照片查看器或者第三方工具。那如果你想要一个更加强大和定制化的图像查看器呢?这时候就需要自己动手写一个程序了。 C:\pythoncode\new\ShowSqliteImage.py 这里我们将介绍一个使用Python和wxPython编写…

FPGA-ARM架构与分类

ARM架构&#xff0c;曾称进阶精简指令集机器&#xff08;Advanced RISC Machine&#xff09;更早称作Acorn RISC Machine&#xff0c;是一个32位精简指令集&#xff08;RISC&#xff09;处理器架构。 主要是根据FPGA zynq-7000的芯片编写的知识思维导图总结,废话不多说自取吧 …

【Python内功心法】:深挖内置函数,释放语言潜能

文章目录 &#x1f680;一、常见内置函数&#x1f308;二、高级内置函数⭐1. enumerate函数&#x1f44a;2. eval函数❤️3. exec函数&#x1f4a5;4. eval与exec 中 globals与locals如何用☔4-1 globals 参数&#x1f3ac;4-2 locals 参数 ❤️5. filter函数&#x1f44a;6. z…

Python 之SQLAlchemy使用详细说明

目录 1、SQLAlchemy 1.1、ORM概述 1.2、SQLAlchemy概述 1.3、SQLAlchemy的组成部分 1.4、SQLAlchemy的使用 1.4.1、安装 1.4.2、创建数据库连接 1.4.3、执行原生SQL语句 1.4.4、映射已存在的表 1.4.5、创建表 1.4.5.1、创建表的两种方式 1、使用 Table 类直接创建表…

安卓如何书写注册和登录界面

一、如何跳转一个活动 左边的是本活动名称&#xff0c; 右边的是跳转界面活动名称 Intent intent new Intent(LoginActivity.this, RegisterActivity.class); startActivity(intent); finish(); 二、如果在不同的界面传递参数 //发送消息 SharedPreferences sharedPreferen…

【学习Day4】计算机基础

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; ❤️学习和复习的过程是愉快嘚。 1.7.3 流水线 流水线&#xff08;pipeline&#xff09;技术…

单片机按键处理模块

一 介绍 1.key_board用于单片机中的小巧多功能按键支持&#xff0c;软件采用了分层的思想&#xff0c;并且做到了与平台无关&#xff0c;用户只需要提供按键的基本信息和读写io电平的函数即可&#xff0c;非常方便移植&#xff0c;同时支持多个矩阵键盘及多个单io控制键盘。 …

chap5 CNN

卷积神经网络&#xff08;CNN&#xff09; 问题描述&#xff1a; 利用卷积神经网络&#xff0c;实现对MNIST数据集的分类问题 数据集&#xff1a; MNIST数据集包括60000张训练图片和10000张测试图片。图片样本的数量已经足够训练一个很复杂的模型&#xff08;例如 CNN的深层…

商用未来何时来?软银揭示量子计算商业应用现状

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨沛贤/浪味仙 排版丨沛贤 深度好文&#xff1a;3000字丨10分钟阅读 摘要&#xff1a;软银&#xff08;SoftBank&#xff09;先进技术研究所正在积极推进量子计算商业应用&#xff0c;借助与…

SpringCloud Feign用法

1.在目标应用的启动类上添加开启远程fein调用注解&#xff1a; 2.添加一个feign调用的interface FeignClient("gulimall-coupon") public interface CouponFeignService {PostMapping("/coupon/spubounds/save")R save(RequestBody SpuBondTo spuBounds);…

随记-点选验证码(二)

之前写过一篇文章 随记-点选验证码 &#xff0c;当时借助了 ddddocr 完成了ocr 识别&#xff0c;这篇文章算是对之前的补充。 本次更换了新的方案&#xff1a; 通过 ultralytics&#xff08;YOLO8&#xff09;训练自己的模型 吐槽一句&#xff1a;标注真是一件耗时的事情啊&am…

鸿蒙实现汉字转拼音

1.使用三方库 pinyin-pro 地址&#xff1a;OpenHarmony三方库中心仓 亲测可用&#xff0c;一共三个关于 转pinyin的库&#xff0c;一个无法使用&#xff0c;另一个时间太久。 ohpm i pinyin-proimport { pinyin } from pinyin-pro;// 获取带音调拼音 pinyin(汉语拼音); // …

【Java数据结构】详解LinkedList与链表(一)

&#x1f512;文章目录&#xff1a; 1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; 2.ArrayList的缺陷 3.链表的概念及结构 4.无头单向非循环链表的实现 4.1成员属性 4.2成员方法 createList display——打印链表 addFirst——头插 addLast…

少样本学习与零样本学习:理解与应用

少样本学习与零样本学习&#xff1a;理解与应用 在现代机器学习领域中&#xff0c;少样本学习&#xff08;Few-Shot Learning&#xff09;和零样本学习&#xff08;Zero-Shot Learning&#xff09;正变得越来越重要。这些技术能够在数据稀缺的情况下有效地进行学习和推理&…