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

4、前后端联调文生文、文生图事件

4、前后端联调文生文、文生图事件

原文地址

1、底部【发送按钮】事件触发调用后端AI程序逻辑

<!-- 前端模板如下: -->
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>小薛博客LLM大模型实战</title><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 引入 layui.css --><link href="/layui/css/layui.css" rel="stylesheet">
</head><body>
<div class="layui-layout layui-layout-admin"><!--4444444--><div id="footer-chat" class="layui-footer" style="height: 80px;line-height: 80px;"><!-- 底部固定区域 --><div style="width: 80%;"><div class="layui-input-group" style="width: 100%;"><input type="text" id="question-input" style="margin-top: 20px;margin-left: 120px;" placeholder="输入问题..."class="layui-input"><div class="layui-input-suffix"><button type="button" id="question-send"  style="margin-left: 80px;" lay-on="question-send" class="layui-btn layui-btn-radius">发送</button></div></div></div></div>
</div><!-- 引入 layui.js -->
<script src="/layui/layui.js"></script>
<script>//JSlayui.use(['element', 'layer', 'util'], function(){var element = layui.element;var layer = layui.layer;var util = layui.util;//var $ = layui.$;var jQuery = layui.$;var question_type = "chat"; // 默认对话问答文生文,当前在使用聊天功能util.on('lay-on',{//对话问答(文生文)'chat-nav-show':function () {jQuery("#chat-nav").show();jQuery("#draw-nav").hide();jQuery("#discuss-nav").hide();//对话问答-点击后顶部导航栏显示第一个标签页ChatGPTvar showDivId = "chat-chatgpt-content";jQuery("#" + showDivId).show();jQuery("#" + showDivId).siblings().hide();//对话问答-点击后顶部导航栏显示第一个标签页ChatGPT+底部光标跟随jQuery("#chat-nav").find("li").removeClass("layui-this");jQuery("#chat-nav").find("li").eq(1).addClass("layui-this");// 显示最下面【输入问题】对话框jQuery("#footer-chat").show();//底部输入框对话类型question_type = "chat";},//对话问图(文生图)'draw-nav-show':function () {jQuery("#draw-nav").show();jQuery("#chat-nav").hide();jQuery("#discuss-nav").hide();//左侧对话问图-点击后顶部导航栏显示第一个标签页ChatGPTvar showDivId = "draw-chatgpt-content";jQuery("#" + showDivId).show();jQuery("#" + showDivId).siblings().hide();//左侧对话问图-点击后顶部导航栏显示第一个标签页ChatGPT+底部光标跟随jQuery("#draw-nav").find("li").removeClass("layui-this");jQuery("#draw-nav").find("li").eq(1).addClass("layui-this");// 显示最下面【输入问题】对话框jQuery("#footer-chat").show();//底部输入框对话类型question_type = "draw";},//左侧话题讨论'discuss-nav-show':function () {jQuery("#discuss-nav").show();jQuery("#chat-nav").hide();jQuery("#draw-nav").hide();//左侧话题讨论-点击后顶部导航栏显示第一个标签页ChatGPTvar showDivId = "discuss-content";jQuery("#" + showDivId).show();jQuery("#" + showDivId).siblings().hide();jQuery("#discuss-nav").find("li").removeClass("layui-this");jQuery("#discuss-nav").find("li").eq(1).addClass("layui-this");// 隐藏最下面【输入问题】对话框jQuery("#footer-chat").hide();},//给lay-on="nav-change-content"添加函数说明,根据标签页切换显示不同的内容'nav-change-content':function (e) {var showDivId = jQuery(e).attr("lay-data");jQuery("#" + showDivId).show(); // 显示自己的内容jQuery("#" + showDivId).siblings().hide(); // 隐藏所有同级 div 的内容},//给主页底部【发送】按钮添加事件'question-send':function () {//输入问题...对话框内容var question = jQuery("#question-input").val();//非空判断if (question == null || question == "") {layer.msg("提问词不能为空,请先输入问题!");return;}if(question_type == "chat") {//文生文//前端发送ajax请求到后端restfuljQuery.ajax({url:"/openai/chat",type: "get",data:{question:question},success:function (result) {}});}else if(question_type == "draw"){//文生图//前端发送ajax请求到后端restfuljQuery.ajax({url:"/openai/draw",type: "post",data:{question:question},success:function (result) {}});}},//关于我们'about-us':function () {layer.msg('触发了事件-关于我们');},});//头部事件util.event('lay-header-event', {menuLeft: function(othis){ // 左侧菜单事件layer.msg('展开左侧菜单的操作', {icon: 0});},menuRight: function(){  // 右侧菜单事件layer.open({type: 1,title: '更多',content: '<div style="padding: 15px;">处理右侧面板的操作</div>',area: ['260px', '100%'],offset: 'rt', // 右上角anim: 'slideLeft', // 从右侧抽屉滑出shadeClose: true,scrollbar: false});}});});
</script>
</body>
</html>

完整index.html

<!-- 前端模板如下: -->
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>小薛博客LLM大模型实战</title><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 引入 layui.css --><link href="/layui/css/layui.css" rel="stylesheet">
</head><body>
<div class="layui-layout layui-layout-admin"><!--11111111--><div class="layui-header"><div class="layui-logo layui-hide-xs layui-bg-black">小薛博客LLM大模型实战</div><!-- 头部区域(可配合layui 已有的水平导航) --><ul id="chat-nav" class="layui-nav layui-layout-left"><!-- 移动端显示 --><li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft"><i class="layui-icon layui-icon-spread-left"></i></li><li class="layui-nav-item layui-hide-xs layui-this" lay-on="nav-change-content"  lay-data="chat-chatgpt-content"><a href="javascript:;">ChatGPT</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="chat-tongyi-content"><a href="javascript:;">通义千问</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="chat-wenxin-content"><a href="javascript:;">文心一言</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="chat-xunfei-content"><a href="javascript:;">科大讯飞</a></li></ul><ul id="draw-nav" class="layui-nav layui-layout-left"><!-- 移动端显示 --><li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft"><i class="layui-icon layui-icon-spread-left"></i></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="draw-chatgpt-content"><a href="javascript:;">ChatGPT</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="draw-tongyi-content"><a href="javascript:;">通义千问</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="draw-wenxin-content"><a href="javascript:;">文心一言</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="draw-xunfei-content"><a href="javascript:;">科大讯飞</a></li></ul><!-- 头部区域(可配合layui 已有的水平导航) --><ul id="discuss-nav" class="layui-nav layui-layout-left" style="display: none"><!-- 移动端显示 --><li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft"><i class="layui-icon layui-icon-spread-left"></i></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content" lay-data="discuss-content"><a href="javascript:;">推荐</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content" lay-data="discuss-content-new"><a href="javascript:;">最新</a></li></ul><ul class="layui-nav layui-layout-right"><li class="layui-nav-item layui-hide layui-show-sm-inline-block"><a href="javascript:;"><img src="//unpkg.com/outeres@0.0.10/img/layui/icon-v2.png" class="layui-nav-img">tester</a><dl class="layui-nav-child"><dd><a href="javascript:;">Your Profile</a></dd><dd><a href="javascript:;">Settings</a></dd><dd><a href="javascript:;">Sign out</a></dd></dl></li><li class="layui-nav-item" lay-header-event="menuRight" lay-unselect><a href="javascript:;"><i class="layui-icon layui-icon-more-vertical"></i></a></li></ul></div><!--22222222--><div class="layui-side layui-bg-black"><div class="layui-side-scroll"><!-- 左侧导航区域(可配合layui已有的垂直导航) --><ul class="layui-nav layui-nav-tree" lay-filter="test"><li class="layui-nav-item layui-nav-itemed"><a class="" href="javascript:;">AI功能集</a><dl class="layui-nav-child"><dd><a href="javascript:;" lay-on="chat-nav-show">对话问答(文生文)</a></dd><dd><a href="javascript:;" lay-on="draw-nav-show">对话问图(文生图)</a></dd></dl></li><li class="layui-nav-item" lay-on="discuss-nav-show"><a href="javascript:;">话题讨论</a></li><li class="layui-nav-item" lay-on="about-us"><a href="javascript:;">关于我们</a></li></ul></div></div><!--3333333--><div class="layui-body"><!-- 内容主体区域 --><div style="padding: 15px;"><div><div id="chat-chatgpt-content" class="layui-card layui-panel"><div class="layui-card-header layui-font-16">ChatGPT提出的问题1</div><div class="layui-card-body">ChatGPT回答的问题</div></div><div id="chat-tongyi-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">tongyi提出的问题1</div><div class="layui-card-body">tongyi回答的问题</div></div><div id="chat-wenxin-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">wenxin提出的问题1</div><div class="layui-card-body">wenxin回答的问题</div></div><div id="chat-xunfei-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">xunfei提出的问题1</div><div class="layui-card-body">xunfei回答的问题</div></div><div id="draw-chatgpt-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">draw-ChatGPT</div><div class="layui-card-body">draw-ChatGPT画的回答</div></div><div id="draw-tongyi-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">draw-tongyi</div><div class="layui-card-body">draw-tongyi问题</div></div><div id="draw-wenxin-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">draw-wenxin</div><div class="layui-card-body">draw-wenxin画图</div></div><div id="draw-xunfei-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">draw-xunfei</div><div class="layui-card-body">draw-xunfei回答</div></div><div id="discuss-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">话题讨论-推荐</div><div class="layui-card-body">话题讨论-推荐详细情况</div></div><div id="discuss-content-new" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">话题讨论-最新</div><div class="layui-card-body">话题讨论-最新详细情况</div></div></div></div></div><!--4444444--><div id="footer-chat" class="layui-footer" style="height: 80px;line-height: 80px;"><!-- 底部固定区域 --><div style="width: 80%;"><div class="layui-input-group" style="width: 100%;"><input type="text" id="question-input" style="margin-top: 20px;margin-left: 120px;" placeholder="输入问题..."class="layui-input"><div class="layui-input-suffix"><button type="button" id="question-send"  style="margin-left: 80px;" lay-on="question-send" class="layui-btn layui-btn-radius">发送</button></div></div></div></div>
</div><!-- 引入 layui.js -->
<script src="/layui/layui.js"></script>
<script>//JSlayui.use(['element', 'layer', 'util'], function(){var element = layui.element;var layer = layui.layer;var util = layui.util;//var $ = layui.$;var jQuery = layui.$;var question_type = "chat"; // 默认对话问答文生文,当前在使用聊天功能util.on('lay-on',{//对话问答(文生文)'chat-nav-show':function () {jQuery("#chat-nav").show();jQuery("#draw-nav").hide();jQuery("#discuss-nav").hide();//对话问答-点击后顶部导航栏显示第一个标签页ChatGPTvar showDivId = "chat-chatgpt-content";jQuery("#" + showDivId).show();jQuery("#" + showDivId).siblings().hide();//对话问答-点击后顶部导航栏显示第一个标签页ChatGPT+底部光标跟随jQuery("#chat-nav").find("li").removeClass("layui-this");jQuery("#chat-nav").find("li").eq(1).addClass("layui-this");// 显示最下面【输入问题】对话框jQuery("#footer-chat").show();//底部输入框对话类型question_type = "chat";},//对话问图(文生图)'draw-nav-show':function () {jQuery("#draw-nav").show();jQuery("#chat-nav").hide();jQuery("#discuss-nav").hide();//左侧对话问图-点击后顶部导航栏显示第一个标签页ChatGPTvar showDivId = "draw-chatgpt-content";jQuery("#" + showDivId).show();jQuery("#" + showDivId).siblings().hide();//左侧对话问图-点击后顶部导航栏显示第一个标签页ChatGPT+底部光标跟随jQuery("#draw-nav").find("li").removeClass("layui-this");jQuery("#draw-nav").find("li").eq(1).addClass("layui-this");// 显示最下面【输入问题】对话框jQuery("#footer-chat").show();//底部输入框对话类型question_type = "draw";},//左侧话题讨论'discuss-nav-show':function () {jQuery("#discuss-nav").show();jQuery("#chat-nav").hide();jQuery("#draw-nav").hide();//左侧话题讨论-点击后顶部导航栏显示第一个标签页ChatGPTvar showDivId = "discuss-content";jQuery("#" + showDivId).show();jQuery("#" + showDivId).siblings().hide();jQuery("#discuss-nav").find("li").removeClass("layui-this");jQuery("#discuss-nav").find("li").eq(1).addClass("layui-this");// 隐藏最下面【输入问题】对话框jQuery("#footer-chat").hide();},//给lay-on="nav-change-content"添加函数说明,根据标签页切换显示不同的内容'nav-change-content':function (e) {var showDivId = jQuery(e).attr("lay-data");jQuery("#" + showDivId).show(); // 显示自己的内容jQuery("#" + showDivId).siblings().hide(); // 隐藏所有同级 div 的内容},//给主页底部【发送】按钮添加事件'question-send':function () {//输入问题...对话框内容var question = jQuery("#question-input").val();//非空判断if (question == null || question == "") {layer.msg("提问词不能为空,请先输入问题!");return;}if(question_type == "chat") {//文生文//前端发送ajax请求到后端restfuljQuery.ajax({url:"/openai/chat",type: "get",data:{question:question},success:function (result) {}});}else if(question_type == "draw"){//文生图//前端发送ajax请求到后端restfuljQuery.ajax({url:"/openai/draw",type: "post",data:{question:question},success:function (result) {}});}},//关于我们'about-us':function () {layer.msg('触发了事件-关于我们');},});//头部事件util.event('lay-header-event', {menuLeft: function(othis){ // 左侧菜单事件layer.msg('展开左侧菜单的操作', {icon: 0});},menuRight: function(){  // 右侧菜单事件layer.open({type: 1,title: '更多',content: '<div style="padding: 15px;">处理右侧面板的操作</div>',area: ['260px', '100%'],offset: 'rt', // 右上角anim: 'slideLeft', // 从右侧抽屉滑出shadeClose: true,scrollbar: false});}});});
</script>
</body>
</html>

2、OpenAIController

package com.xx.controller;import com.xx.common.Result;
import com.xx.exception.BusinessException;
import com.xx.utils.ValidationUtil;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @auther xx* @create 2024-11-02 19:04*/
@RestController
@RequestMapping("/openai")
public class OpenAIController {private Logger log = LoggerFactory.getLogger(this.getClass());@Resourceprivate OpenAiChatModel openAiChatClient;@GetMapping(value = "/chat")@Operation(summary = "调用 Open AI 聊天接口")public Result chat(String question) {//测试假如等于XXX敏感词if (question.equals("abcd")) {throw new BusinessException("敏感词");}if (ValidationUtil.isEmpty(question)) {// 输入为空return Result.error("请求参数不能为空");}// 调用 Open AI 接口return Result.ok(openAiChatClient.call(question));}
}

3、调通后端AI后前台进行显示和页面细节调整

if(question_type == "chat") {//文生文//前端发送ajax请求到后端restfuljQuery.ajax({url:"/openai/chat",type: "get",data:{question:question},success:function (result) {if(result.code == 200){var createHTML = '          <div class="layui-card layui-panel">\n' +'            <div class="layui-card-header layui-font-16">\n' +question+'            \n' +'            </div>\n' +result.result+'            <div class="layui-card-body">\n' +'              \n' +'            </div>\n' +'          </div>';jQuery("#chat-chatgpt-content").prepend(createHTML);jQuery("#chat-chatgpt-content").val("");jQuery("#question-input").val("");}else{layer.msg(result.code+"\t"+result.message);}}});

4、openai生成图片

https://docs.spring.io/spring-ai/reference/api/image/openai-image.html

package com.xx.controller;import com.xx.common.Result;
import com.xx.exception.BusinessException;
import com.xx.utils.ValidationUtil;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ai.image.ImagePrompt;
import org.springframework.ai.image.ImageResponse;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.openai.OpenAiImageModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @auther xx* @create 2024-11-02 19:04*/
@RestController
@RequestMapping("/openai")
public class OpenAIController {private Logger log = LoggerFactory.getLogger(this.getClass());@Resourceprivate OpenAiImageModel openAiImageClient;@GetMapping(value = "/draw")@Operation(summary = "绘图功能")public Result draw(String question) {String imageUrl = null;if (ValidationUtil.isEmpty(question)) {// 输入为空return Result.error("请求参数不能为空");}// 调用 Open AI 接口,土生图调用openai不稳定,暂时写死图片地址,调用成功返回结果如下:ImageResponse imageResponse = openAiImageClient.call(new ImagePrompt(question));imageUrl = imageResponse.getResult().getOutput().getUrl();//自己写死
//        imageUrl = "http://gips2.baidu.com/it/u=195724436,3554684702&fm=3028&app=3028&f=JPEG&fmt=auto?w=1280&h=960";return Result.ok(imageUrl);}
}
<!-- 前端模板如下: -->
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>小薛博客LLM大模型实战</title><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 引入 layui.css --><link href="/layui/css/layui.css" rel="stylesheet">
</head><body>
<div class="layui-layout layui-layout-admin"><!--11111111--><div class="layui-header"><div class="layui-logo layui-hide-xs layui-bg-black">小薛博客LLM大模型实战</div><!-- 头部区域(可配合layui 已有的水平导航) --><ul id="chat-nav" class="layui-nav layui-layout-left"><!-- 移动端显示 --><li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft"><i class="layui-icon layui-icon-spread-left"></i></li><li class="layui-nav-item layui-hide-xs layui-this" lay-on="nav-change-content"  lay-data="chat-chatgpt-content"><a href="javascript:;">ChatGPT</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="chat-tongyi-content"><a href="javascript:;">通义千问</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="chat-wenxin-content"><a href="javascript:;">文心一言</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="chat-xunfei-content"><a href="javascript:;">科大讯飞</a></li></ul><ul id="draw-nav" class="layui-nav layui-layout-left"><!-- 移动端显示 --><li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft"><i class="layui-icon layui-icon-spread-left"></i></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="draw-chatgpt-content"><a href="javascript:;">ChatGPT</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="draw-tongyi-content"><a href="javascript:;">通义千问</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="draw-wenxin-content"><a href="javascript:;">文心一言</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content"  lay-data="draw-xunfei-content"><a href="javascript:;">科大讯飞</a></li></ul><!-- 头部区域(可配合layui 已有的水平导航) --><ul id="discuss-nav" class="layui-nav layui-layout-left" style="display: none"><!-- 移动端显示 --><li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft"><i class="layui-icon layui-icon-spread-left"></i></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content" lay-data="discuss-content"><a href="javascript:;">推荐</a></li><li class="layui-nav-item layui-hide-xs" lay-on="nav-change-content" lay-data="discuss-content-new"><a href="javascript:;">最新</a></li></ul><ul class="layui-nav layui-layout-right"><li class="layui-nav-item layui-hide layui-show-sm-inline-block"><a href="javascript:;"><img src="//unpkg.com/outeres@0.0.10/img/layui/icon-v2.png" class="layui-nav-img">tester</a><dl class="layui-nav-child"><dd><a href="javascript:;">Your Profile</a></dd><dd><a href="javascript:;">Settings</a></dd><dd><a href="javascript:;">Sign out</a></dd></dl></li><li class="layui-nav-item" lay-header-event="menuRight" lay-unselect><a href="javascript:;"><i class="layui-icon layui-icon-more-vertical"></i></a></li></ul></div><!--22222222--><div class="layui-side layui-bg-black"><div class="layui-side-scroll"><!-- 左侧导航区域(可配合layui已有的垂直导航) --><ul class="layui-nav layui-nav-tree" lay-filter="test"><li class="layui-nav-item layui-nav-itemed"><a class="" href="javascript:;">AI功能集</a><dl class="layui-nav-child"><dd><a href="javascript:;" lay-on="chat-nav-show">对话问答(文生文)</a></dd><dd><a href="javascript:;" lay-on="draw-nav-show">对话问图(文生图)</a></dd></dl></li><li class="layui-nav-item" lay-on="discuss-nav-show"><a href="javascript:;">话题讨论</a></li><li class="layui-nav-item" lay-on="about-us"><a href="javascript:;">关于我们</a></li></ul></div></div><!--3333333--><div class="layui-body"><!-- 内容主体区域 --><div style="padding-top: 15px;padding-bottom: 80px"><div><div id="chat-chatgpt-content"></div><div id="chat-tongyi-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">tongyi提出的问题1</div><div class="layui-card-body">tongyi回答的问题</div></div><div id="chat-wenxin-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">wenxin提出的问题1</div><div class="layui-card-body">wenxin回答的问题</div></div><div id="chat-xunfei-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">xunfei提出的问题1</div><div class="layui-card-body">xunfei回答的问题</div></div><div id="draw-chatgpt-content" class="layui-card layui-panel" style="display: none"></div><div id="draw-tongyi-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">draw-tongyi</div><div class="layui-card-body">draw-tongyi问题</div></div><div id="draw-wenxin-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">draw-wenxin</div><div class="layui-card-body">draw-wenxin画图</div></div><div id="draw-xunfei-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">draw-xunfei</div><div class="layui-card-body">draw-xunfei回答</div></div><div id="discuss-content" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">话题讨论-推荐</div><div class="layui-card-body">话题讨论-推荐详细情况</div></div><div id="discuss-content-new" class="layui-card layui-panel" style="display: none"><div class="layui-card-header layui-font-16">话题讨论-最新</div><div class="layui-card-body">话题讨论-最新详细情况</div></div></div></div></div><!--4444444--><div id="footer-chat" class="layui-footer" style="height: 80px;line-height: 80px;"><!-- 底部固定区域 --><div style="width: 80%;"><div class="layui-input-group" style="width: 100%;"><input type="text" id="question-input" style="margin-top: 20px;margin-left: 120px;" placeholder="输入问题..."class="layui-input"><div class="layui-input-suffix"><button type="button" id="question-send"  style="margin-left: 80px;" lay-on="question-send" class="layui-btn layui-btn-radius">发送</button></div></div></div></div>
</div><!-- 引入 layui.js -->
<script src="/layui/layui.js"></script>
<script>//JSlayui.use(['element', 'layer', 'util'], function(){var element = layui.element;var layer = layui.layer;var util = layui.util;//var $ = layui.$;var jQuery = layui.$;var question_type = "chat"; // 默认对话问答文生文,当前在使用聊天功能util.on('lay-on',{//对话问答(文生文)'chat-nav-show':function () {jQuery("#chat-nav").show();jQuery("#draw-nav").hide();jQuery("#discuss-nav").hide();//对话问答-点击后顶部导航栏显示第一个标签页ChatGPTvar showDivId = "chat-chatgpt-content";jQuery("#" + showDivId).show();jQuery("#" + showDivId).siblings().hide();//对话问答-点击后顶部导航栏显示第一个标签页ChatGPT+底部光标跟随jQuery("#chat-nav").find("li").removeClass("layui-this");jQuery("#chat-nav").find("li").eq(1).addClass("layui-this");// 显示最下面【输入问题】对话框jQuery("#footer-chat").show();//底部输入框对话类型question_type = "chat";},//对话问图(文生图)'draw-nav-show':function () {jQuery("#draw-nav").show();jQuery("#chat-nav").hide();jQuery("#discuss-nav").hide();//左侧对话问图-点击后顶部导航栏显示第一个标签页ChatGPTvar showDivId = "draw-chatgpt-content";jQuery("#" + showDivId).show();jQuery("#" + showDivId).siblings().hide();//左侧对话问图-点击后顶部导航栏显示第一个标签页ChatGPT+底部光标跟随jQuery("#draw-nav").find("li").removeClass("layui-this");jQuery("#draw-nav").find("li").eq(1).addClass("layui-this");// 显示最下面【输入问题】对话框jQuery("#footer-chat").show();//底部输入框对话类型question_type = "draw";},//左侧话题讨论'discuss-nav-show':function () {jQuery("#discuss-nav").show();jQuery("#chat-nav").hide();jQuery("#draw-nav").hide();//左侧话题讨论-点击后顶部导航栏显示第一个标签页ChatGPTvar showDivId = "discuss-content";jQuery("#" + showDivId).show();jQuery("#" + showDivId).siblings().hide();jQuery("#discuss-nav").find("li").removeClass("layui-this");jQuery("#discuss-nav").find("li").eq(1).addClass("layui-this");// 隐藏最下面【输入问题】对话框jQuery("#footer-chat").hide();},//给lay-on="nav-change-content"添加函数说明,根据标签页切换显示不同的内容'nav-change-content':function (e) {var showDivId = jQuery(e).attr("lay-data");jQuery("#" + showDivId).show(); // 显示自己的内容jQuery("#" + showDivId).siblings().hide(); // 隐藏所有同级 div 的内容},//给主页底部【发送】按钮添加事件'question-send':function () {//输入问题...对话框内容var question = jQuery("#question-input").val();//非空判断if (question == null || question == "") {layer.msg("提问词不能为空,请先输入问题!");return;}if(question_type == "chat") {//文生文//前端发送ajax请求到后端restfuljQuery.ajax({url:"/openai/chat",type: "get",data:{question:question},success:function (result) {if(result.code == 200){var createHTML = '          <div class="layui-card layui-panel">\n' +'            <div class="layui-card-header layui-font-16">\n' +question+'            \n' +'            </div>\n' +result.result+'            <div class="layui-card-body">\n' +'              \n' +'            </div>\n' +'          </div>';jQuery("#chat-chatgpt-content").prepend(createHTML);jQuery("#chat-chatgpt-content").val("");jQuery("#question-input").val("");}else{layer.msg(result.code+"\t"+result.message);}}});}else if(question_type == "draw"){//文生图//前端发送ajax请求到后端restfuljQuery.ajax({url:"/openai/draw",type: "get",data:{question:question},success:function (result) {if(result.code == 200){var createHTML = '<div>\n' +'                        <div class="layui-card-header layui-font-16">\n' +question +'                        </div>\n' +'                        <div class="layui-card-body">\n<img src="' +result.result+'">                        </div>\n' +'             </div>';jQuery("#draw-chatgpt-content").prepend(createHTML);jQuery("#draw-chatgpt-content").val("");jQuery("#question-input").val("");}else{layer.msg(result.code+"\t"+result.message);}}});}},//关于我们'about-us':function () {layer.msg('触发了事件-关于我们');},});//头部事件util.event('lay-header-event', {menuLeft: function(othis){ // 左侧菜单事件layer.msg('展开左侧菜单的操作', {icon: 0});},menuRight: function(){  // 右侧菜单事件layer.open({type: 1,title: '更多',content: '<div style="padding: 15px;">处理右侧面板的操作</div>',area: ['260px', '100%'],offset: 'rt', // 右上角anim: 'slideLeft', // 从右侧抽屉滑出shadeClose: true,scrollbar: false});}});});
</script>
</body>
</html>

相关文章:

4、前后端联调文生文、文生图事件

4、前后端联调文生文、文生图事件 原文地址 1、底部【发送按钮】事件触发调用后端AI程序逻辑 <!-- 前端模板如下: --> <!DOCTYPE html> <html><head><meta charset"utf-8"><title>小薛博客LLM大模型实战</title><me…...

深度学习中的提示词优化:梯度下降全解析

深度学习中的提示词优化:梯度下降全解析 在您的代码中,提示词的更新方向是通过梯度下降算法确定的,这是深度学习中最基本的优化方法。 一、梯度下降与更新方向 1. 核心公式 对于可训练参数 θ \theta θ(这里是提示词嵌入向量),梯度下降的更新公式为:...

Midjourney 最佳创作思路与实战技巧深度解析【附提示词与学习资料包下载】

引言 在人工智能图像生成领域&#xff0c;Midjourney 凭借其强大的艺术表现力和灵活的创作模式&#xff0c;已成为设计师、艺术家和创意工作者的核心工具。作为 CSDN 博主 “小正太浩二”&#xff0c;我将结合多年实战经验&#xff0c;系统分享 Midjourney 的创作方法论&#x…...

【数字图像处理】半开卷复习提纲

1&#xff1a;要求 2张A4纸以内&#xff0c;正反面均可写 &#xff08;不过博主由于墨水浸到背面了&#xff0c;采用了把2张单面通过双面胶粘起来的方法&#xff0c;结果考前半个小时都在用这个难用的双面胶。。。&#xff09; 2&#xff1a;提纲内容 3&#xff1a;提示 考的…...

交通运输与能源融合发展——光储充在交通上的应用完整解决方案

在全球积极应对气候变化、推动可持续发展的大背景下&#xff0c;交通运输与能源领域的融合发展成为关键趋势。近日&#xff0c;交通运输部等十部门联合发布的《关于推动交通运输与能源融合发展的指导意见》&#xff0c;为这两个重要行业的协同前行指明了清晰的方向&#xff0c;…...

API 接口开放平台 Crabc 3.2 发布

2025 年 5 月 15 日&#xff0c;API 接口开放平台 Crabc 3.2 发布。 Crabc 是一款 API 接口开发平台、企业级接口管理和 SQL2API 平台。它支持动态数据源、动态 SQL 和标签&#xff0c;能接入多种 SQL 或 NoSQL 数据源&#xff0c;包括 MySQL、Oracle、达梦、TiDB、Hive、ES 和…...

基于智能推荐的就业平台的设计与实现(招聘系统)(SpringBoot Thymeleaf)+文档

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...

【web应用】配置Java JDK与maven3的环境变量

文章目录 一、控制面板 - 系统 - 高级系统设置-环境变量二、用户变量和系统变量的配置方法一样&#xff1a;三、查看是否配置成功 maven有两种安装方式&#xff1a; 1、IDEA捆绑安装&#xff0c;一般是maven3【这里配置的环境变量是捆绑安装这种方式】 2、手动下载安装插件 一、…...

编程日志5.7

二叉树的功能代码 #include<iostream> using namespace std; //二叉树结点定义 template<typename T> struct TreeNode { T val;//定义了一个类型为T的成员变量val,用于存储树节点的值 TreeNode* left;//定义了一个指向TreeNode类型的指针成员变量left,…...

室内定位:热门研究方向与未解难题深度解析

I. 引言:对普适性室内定位的持续探索 A. 室内定位在现代应用中的重要性 室内定位系统(IPS)正迅速成为众多应用领域的基石技术,其重要性源于现代社会人们约70%至90%的时间在室内度过的事实 1。这些应用横跨多个行业,包括应急响应 1、智能建筑与智慧城市 6、医疗健康(如病…...

图片通过滑块小图切换大图放大镜效果显示

图片通过滑块小图切换大图放大镜效果显示 实现目标&#xff1a; 显示一组图片列表&#xff0c;鼠标进入小图记录当下小图下标&#xff0c;通过小图下标在数组中对应图片显示到大图位置&#xff1b; 鼠标进入大图位置时&#xff0c;带动滑块移动&#xff0c;并将放大两倍的大图…...

[250515] 腾讯推出 AI 编程助手 CodeBuddy,对标 Cursor

目录 腾讯推出 AI 编程助手 CodeBuddy 腾讯推出 AI 编程助手 CodeBuddy 腾讯发布 CodeBuddy&#xff0c;一款 AI 编程助手&#xff0c;旨在提升开发者效率。 主要亮点&#xff1a; CodeBuddy&#xff1a; 全新英文品牌&#xff0c;面向全球开发者。Craft 模式&#xff1a; A…...

OpenCV光流估计:原理、实现与应用

一、什么是光流&#xff1f; 光流(Optical Flow)是计算机视觉中描述图像序列中像素运动模式的重要概念。它表示图像中物体在连续帧之间的表观运动&#xff0c;是由物体或相机的运动引起的。 光流的基本假设 亮度恒常性&#xff1a;同一物体点在连续帧中的亮度保持不变时间持…...

使用 QGIS 插件 OpenTopography DEM Downloader 下载高程数据(申请key教程)

使用 QGIS 插件 OpenTopography DEM Downloader 下载高程数据 目录 使用 QGIS 插件 OpenTopography DEM Downloader 下载高程数据&#x1f4cc; 简介&#x1f6e0; 插件安装方法&#x1f30d; 下载 DEM 数据步骤&#x1f511; 注册 OpenTopography 账号&#xff08;如使用 Cope…...

PHP基础知识

【学习资料】 视频&#xff1a; https://www.bilibili.com/video/BV1Xh411S7G1?spm_id_from333.788.videopod.episodes&vd_sourcebe26b82da70367069ab00d6db4f4ffc0 文档&#xff1a;https://www.runoob.com/php/php-tutorial.html 目录 1&#xff0c;PHP是什么2&#xff…...

Kotlin 和 Java 混合开发时需要注意哪些问题

1 空安全&#xff08;Null Safety&#xff09; Kotlin 有严格的空安全机制&#xff08;如非空类型的 String 和可空类型 String?&#xff09;&#xff0c;但是 Java 没有&#xff1a; Kotlin 代码调用 Java 代码&#xff1a;Java 中的所有引用类型默认都是可空的&#xff0c…...

乘法口诀练习神器

请你利用python语言开发一个“乘法口诀练习神器”&#xff0c;主要辅助小学生练习乘法口诀&#xff0c;主要功能如下&#xff1a; 1. 能够随机循环出10道题&#xff0c;可以是乘法或者是除法。如果是乘法&#xff0c;确保两个因数都是1-9之间的整数&#xff1b;如果是除法&…...

How to configure Linux mint desktop

Backgrounds apt install mint-backgrounds-*Theme...

【golang】DNS 资源记录(RR)接口

Go 中 miekg/dns 包对 DNS 资源记录&#xff08;RR&#xff09;接口 的定义&#xff1a; type RR interface {Header() *RR_HeaderString() stringcopy() RRlen(off int, compression map[string]struct{}) intpack(...)unpack(...)parse(...)isDuplicate(r2 RR) bool }这个接…...

Vue中的自定义指令适用于哪些场景

自定义指令在 Vue 中非常灵活且功能强大&#xff0c;它们可以在多种场景中使用&#xff0c;以实现特定的 DOM 操作或行为 自定义样式和类 自定义指令可以用来动态地添加或修改元素的样式和类。这在需要根据数据动态调整样式时非常有用。 <div id"app"><d…...

边缘计算平台

本文来源 &#xff1a; 腾讯元宝 边缘计算平台是一种在靠近数据源头的网络边缘侧部署的分布式计算架构&#xff0c;通过融合网络、计算、存储和应用核心能力&#xff0c;就近提供实时、低延迟的智能服务。以下是其核心要点&#xff1a; ​​1. 定义与特点​​ ​​定义​​&a…...

2025年5月H12-831新增题库带解析

组播基础 以下关于PIM-SM(SSM)的描述&#xff0c;错误的是哪一项? PIM-SM(SSM)无需维护RPPIM-SM(SSM)模型形成的组播分发树会一直存在&#xff0c;不会因为没有组播流量而消失PIM-SM(SSM)可以在成员端DR上基于组播源地址直接反向建立SPT在PIM-SM(SSM)中依日需要注册组播源 答…...

JavaScript - 运算符之逗号操作符与逗号分隔符(逗号操作符概述、逗号操作符用法、逗号分隔符、逗号分隔符用法)

一、逗号操作符概述 【表达式 1】, 【表达式 2】, 【表达式 3】, ..., 【表达式 N】逗号操作符&#xff08;,&#xff09;允许在一个语句中从左到右执行多个表达式&#xff0c;并返回最后一个表达式的值 二、逗号操作符用法 for 循环中的多变量控制 for (let i 0, j 10; i…...

AM1.5G太阳光模拟器参数

AM1.5G太阳光模拟器的参数通常包括光谱匹配度、空间均匀性、时间稳定性等关键指标&#xff0c;这些参数对于太阳能电池的测试和校准至关重要。以下是AM1.5G太阳光模拟器的主要参数&#xff1a; 光谱匹配度 AM1.5G光谱是指大气质量为1.5时&#xff0c;太阳光在地球表面的光谱分…...

YOLO11解决方案之距离计算探索

概述 Ultralytics提供了一系列的解决方案&#xff0c;利用YOLO11解决现实世界的问题&#xff0c;包括物体计数、模糊处理、热力图、安防系统、速度估计、物体追踪等多个方面的应用。 测量两个物体之间的间距被称为特定空间内的距离计算&#xff0c;YOLO11使用两个边界框的中心…...

OkHttp用法-Java调用http服务

特点&#xff1a;高性能&#xff0c;支持异步请求&#xff0c;连接池优化 官方文档&#xff1a;提供快速入门指南和高级功能&#xff08;如拦截器、连接池&#xff09;的详细说明&#xff0c;GitHub仓库包含丰富示例。 社区资源&#xff1a;中文教程丰富&#xff0c;GitHub高…...

c/c++中程序内存区域的划分

c/c程序内存分配的几个区域&#xff1a; 1.栈区&#xff1a;在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结束时这些存储单元自动被释放&#xff0c;栈内存分配运算内置于处理器的指令集中&#xff0c;效率很高但是分配的内存容量有…...

‌JMeter聚合报告中的任务数和并发数区别

‌JMeter聚合报告中的任务数和并发数有本质的区别。‌ 任务数&#xff08;样本数&#xff09; 任务数或样本数是指在性能测试中发出的请求数量。例如&#xff0c;如果模拟20个用户&#xff0c;每个用户发送100次请求&#xff0c;那么总的任务数或样本数就是2000次请求‌ 并发…...

70、微服务保姆教程(十三)Docker容器详细讲义

一、关于Docker 1.1为什么要用docker? 随着开发的项目越来越复杂,软件越来越多,服务器越来越多,我们在开发和部署的时候会遇到很多问题,比如: 1.不同的应用程序可能会有不同的应用环境,比如Java开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都…...

2025年5月-信息系统项目管理师高级-软考高项-成本计算题

成本计算题挣值分析、成本计算题如何学?1、PV&#xff0c;EV&#xff0c;AC需要理解&#xff0c;根据题目给出的一些个条件需要求得这些值;2、CV&#xff0c;SV&#xff0c;CPI&#xff0c;SPI公式必须记住&#xff0c;需要根据求得的值判断项目的进度和成本的执行情况&#x…...

【BotSharp详细介绍——一步步实现MCP+LLM的聊天问答实例】

BotSharp详细介绍——一步步实现MCPLLM的聊天问答实例 一、MCP原理介绍二、创建BotSharp的项目&#xff0c;实现LLM推理机器人1、新建一个 解决方案&#xff0c;结构如下&#xff1a;2、先看下 MyWeatherPlugin3、创建MyWeatherMcpAPI 三、创建 MCP Server1、添加引用2、添加工…...

[Linux性能优化] 线程卡顿优化。Linux加入USB(HID)热插拔线程占用CPU优化。Linux中CPU使用率过高优化

文章目录 [Linux性能优化] 线程卡顿优化。一、问题定位&#xff1a;CPU 资源分析二、线程卡顿现场复现线程优化前图片线程优化后图片 [Linux性能优化] 线程卡顿优化。 一、问题定位&#xff1a;CPU 资源分析 线程卡顿通常与 CPU 资源竞争、线程调度异常相关&#xff0c;第一步…...

鸿蒙OSUniApp 开发的文件上传与下载功能#三方框架 #Uniapp

使用 UniApp 开发的文件上传与下载功能 前言 在移动应用开发中&#xff0c;文件上传与下载是非常常见且重要的功能需求。无论是上传用户头像、提交表单附件&#xff0c;还是下载资源文件、缓存图片&#xff0c;这些需求几乎存在于每一个成熟的应用中。UniApp 作为一个跨平台开…...

【MySQL】基础知识

MySQL(一)基础知识 MySQL 一、结构 1.客户端 2.服务器 分布式系统 二、存储 1.空间 1.1内存 1.1.1速度 1.1.2稳定性 1.1.3大小 1.1.4使用 1.2硬盘 1.2.1速度 1.2.2稳定性 1.2.3大小 1.2.4【Java学习】反射-CSDN博客 2.体系 表-数据库-服务器 3.特点 3.1…...

产品销量数据爬虫通用模板

最近遇到各行各业的需要爬取销售数据&#xff0c;每次写一个教程相对麻烦&#xff0c;所以思前考后我还是觉得写一个通用模板更适合。所以模板需要足够的灵活性&#xff0c;让用户能够自定义选择器。比如&#xff0c;产品标题、价格、销量的CSS选择器可能因网站而异&#xff0c…...

一文讲透 Vue3 + Three.js 材质属性之皮革篇【扫盲篇】

文章目录 前言一、Three.js材质系统基础1.1 为什么选择PBR材质&#xff1f;1.2 关键参数解析 二、不同类型皮革的材质配置2.1 牛皮材质实现2.2 羊皮材质实现2.3 仿皮材质实现 三、高级贴图技术3.1 贴图制作流程3.2 组合贴图实战 四、性能优化策略4.1 贴图压缩技术4.2 材质共享4…...

mysql读写分离

一、读写分离原理 客户端连接代理层&#xff0c;代理层&#xff08;中间件&#xff09;来实现读操作给从服务器&#xff0c;写操作给主服务器。 二、示例 mycat实现读写分离 读写分离在主从复制的基础上 1客户机1代理1主2从1、网络主 192.168.10.101从1 192.168.10.102从2 …...

Java集合框架

集合 概念&#xff1a;对象的容器&#xff0c;定义了对多个对象进行操作的常用方法。可实现数组的功能 和数组的区别 数组长度固定&#xff0c;集合长度不固定 数组可以存储基本类型和引用类型&#xff0c;集合只能存储引用类型 位置&#xff1a;java.util.* Collection体…...

salesforce如何导出所有字段

在 Salesforce 中&#xff0c;导出所有字段信息&#xff08;包括字段名、API 名、字段类型、是否可报表、是否可搜索等&#xff09;通常不是一个“一键完成”的操作&#xff0c;但可以通过几种方法实现。以下是常用的几种方法&#xff1a; ✅ 方法一&#xff1a;使用 Salesforc…...

一招解决Tailwindcss4.x与其他库样式冲突问题

当项目中引入tailwindcss&#xff0c;并与其他UI库混用时&#xff0c;可能会出现样式冲突问题&#xff0c;因为tailwindcss重置了一些基础样式&#xff0c;例如&#xff1a;引入tailwindcss后&#xff0c;原生button按钮没有了默认的样式。 在老版本中解决这个问题&#xff0c…...

[Harmony]封装一个可视化的数据持久化工具

1.添加权限 在module.json5文件中添加权限 // 声明应用需要请求的权限列表 "requestPermissions": [{"name": "ohos.permission.DISTRIBUTED_DATASYNC", // 权限名称&#xff1a;分布式数据同步权限"reason": "$string:distrib…...

关于AI人工智能的知识图谱简介

人工智能是计算机科学的一个重要领域&#xff0c;旨在理解和构建智能行为。人工智能可以被划分为多个子领域或分支&#xff0c;包括机器学习、深度学习、自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;、计算机视觉&#xff08;Computer Vis…...

uniapp,小程序中实现文本“展开/收起“功能的最佳实践

文章目录 示例需求分析实现思路代码实现1. HTML结构2. 数据管理3. 展开/收起逻辑4. CSS样式 优化技巧1. 性能优化2. 防止事件冒泡3. 列表更新处理 实际效果总结 在移动端应用开发中&#xff0c;文本内容的"展开/收起"功能是提升用户体验的常见设计。当列表项中包含大…...

RabbitMQ 消息模式实战:从简单队列到复杂路由(一)

RabbitMQ 初相识 在当今分布式系统大行其道的技术领域中&#xff0c;消息队列作为实现系统间异步通信、解耦以及流量削峰的关键组件&#xff0c;发挥着不可或缺的作用。而 RabbitMQ&#xff0c;无疑是消息队列领域中一颗耀眼的明星。自 2007 年诞生以来&#xff0c;RabbitMQ 凭…...

阿里云ECS部署Dify

一&#xff1a;在ECS上面安装Docker 关防火墙 sudo systemctl stop firewalld 检查防火墙状态 systemctl status firewalld sudo yum install -y yum-utils device-mapper-persistent-data lvm2 设置阿里镜像源&#xff0c;安装并启动docker [base] nameCentOS-$releas…...

Missashe考研日记—Day37-Day43

Missashe考研日记—Day37-Day43 写在面前 本系列博客用于记录博主一周的学习进度&#xff0c;具体知识总结在目前已有的笔记中&#xff1a; 1.高数强化学习笔记2.计网复习笔记 本周五到周日有其他安排&#xff0c;所以今天就把这一周的先更新了。 专业课408 这周学了计网的…...

DB-GPT扩展自定义app配置说明

简介 文章主要介绍了如何扩展一个自定义app插件&#xff0c;这里先看下生成效果&#xff0c;生成的内容其实还是有问题的&#xff0c;后续博主会调整提示词看看能不能优化生成效果 修改代码 代码详情 # chat_di是从chat_normal复制过来的&#xff0c;这里只改了提示词 from d…...

2025年11月软考各科目难度及适合人群分析

2025上半年软考考试报名已结束&#xff0c;不少小伙伴已经在咨询下半年的考试科目了&#xff0c;今天就给大家推荐几个好考的科目。 一、2025下半年软考考试科目 2025下半年软考考试时间为11月8日至11日。 根据计考办发布的《关于2025年度计算机技术与软件专业技术资格&…...

vue异步导入

vue的异步导入 大家开发vue的时候或多或少路由的异步导入 component: () >import(“/views/A_centerControl/intelligent-control/access-user-group”),当然这是路由页面&#xff0c;那么组件也是可以异步导入的 使用方式 组件的异步导入非常简单&#xff0c;主要是一个…...

[IMX] 03.时钟树 - Clock Tree

目录 1.PLL 时钟源 2.Clock Tree 时钟树 3.ARM 内核时钟 3.1.频率设置 - CCM_ANALOG_PLL_ARMn 3.2.时钟分频 - CCM_CACRR 3.3.时钟源选择 - CCM_CCSR 3.4.修改 ARM 内核时钟 4.PFD 时钟 4.1.PLL2_PFD 频率 - CCM_ANALOG_PFD_528n 4.2.PLL3_PFD 频率 - CCM_ANALOG_PFD…...