xxl-job升级到springboot3.0 导致页面打不开报错)问题
原因:springboot3.0 因为移除了jsp 导致xxl-job不能访问,解决方法如下
1、修改PermissionInterceptor拦截器
package com.xxl.job.admin.controller.interceptor;import com.xxl.job.admin.controller.annotation.PermissionLimit;
import com.xxl.job.admin.core.model.XxlJobUser;
import com.xxl.job.admin.core.util.I18nUtil;
import com.xxl.job.admin.service.LoginService;import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.AsyncHandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;/*** 权限拦截** @author xuxueli 2015-12-12 18:09:04*/
@Component
public class PermissionInterceptor implements AsyncHandlerInterceptor {@Resourceprivate LoginService loginService;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {if (!(handler instanceof HandlerMethod)) {return true; // proceed with the next interceptor}// if need loginboolean needLogin = true;boolean needAdminuser = false;HandlerMethod method = (HandlerMethod)handler;PermissionLimit permission = method.getMethodAnnotation(PermissionLimit.class);if (permission!=null) {needLogin = permission.limit();needAdminuser = permission.adminuser();}if (needLogin) {XxlJobUser loginUser = loginService.ifLogin(request, response);if (loginUser == null) {response.setStatus(302);response.setHeader("location", request.getContextPath()+"/toLogin");return false;}if (needAdminuser && loginUser.getRole()!=1) {throw new RuntimeException(I18nUtil.getString("system_permission_limit"));}request.setAttribute(LoginService.LOGIN_IDENTITY_KEY, loginUser);}return true; // proceed with the next interceptor}/*** 新增拦截方法* @param request* @param response* @param handler* @param modelAndView* @throws Exception*/@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 此处数据是preHandle方法set的loginUser信息Object loginIdentityKey = request.getAttribute("XXL_JOB_LOGIN_IDENTITY");if (null != modelAndView && null != loginIdentityKey) {modelAndView.addObject("XXL_JOB_LOGIN_IDENTITY", loginIdentityKey);}}
}
2、修改common.macro.ftl文件
<#macro commonStyle><#-- favicon --><link rel="icon" href="${request.contextPath}/static/favicon.ico" /><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><!-- Tell the browser to be responsive to screen width --><meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"><!-- Bootstrap --><link rel="stylesheet" href="${request.contextPath}/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css"><!-- Font Awesome --><link rel="stylesheet" href="${request.contextPath}/static/adminlte/bower_components/font-awesome/css/font-awesome.min.css"><!-- Ionicons --><link rel="stylesheet" href="${request.contextPath}/static/adminlte/bower_components/Ionicons/css/ionicons.min.css"><!-- Theme style --><link rel="stylesheet" href="${request.contextPath}/static/adminlte/dist/css/AdminLTE.min.css"><!-- AdminLTE Skins. Choose a skin from the css/skins folder instead of downloading all of them to reduce the load. --><link rel="stylesheet" href="${request.contextPath}/static/adminlte/dist/css/skins/_all-skins.min.css"><!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --><!-- WARNING: Respond.js doesn't work if you view the page via file:// --><!--[if lt IE 9]><script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script><![endif]--><!-- pace --><link rel="stylesheet" href="${request.contextPath}/static/adminlte/bower_components/PACE/themes/blue/pace-theme-flash.css"><#-- i18n --><#global I18n = I18nUtil.getMultString()?eval /></#macro><#macro commonScript><!-- jQuery --><script src="${request.contextPath}/static/adminlte/bower_components/jquery/jquery.min.js"></script><!-- Bootstrap --><script src="${request.contextPath}/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js"></script><!-- FastClick --><script src="${request.contextPath}/static/adminlte/bower_components/fastclick/fastclick.js"></script><!-- AdminLTE App --><script src="${request.contextPath}/static/adminlte/dist/js/adminlte.min.js"></script><!-- jquery.slimscroll --><script src="${request.contextPath}/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js"></script><!-- pace --><script src="${request.contextPath}/static/adminlte/bower_components/PACE/pace.min.js"></script><#-- jquery cookie --><script src="${request.contextPath}/static/plugins/jquery/jquery.cookie.js"></script><#-- jquery.validate --><script src="${request.contextPath}/static/plugins/jquery/jquery.validate.min.js"></script><#-- layer --><script src="${request.contextPath}/static/plugins/layer/layer.js"></script><#-- common --><script src="${request.contextPath}/static/js/common.1.js"></script><script>var base_url = '${request.contextPath}';var I18n = ${I18nUtil.getMultString()};</script></#macro><#macro commonHeader><header class="main-header"><a href="${request.contextPath}/" class="logo"><span class="logo-mini"><b>XXL</b></span><span class="logo-lg"><b>${I18n.admin_name}</b></span></a><nav class="navbar navbar-static-top" role="navigation"><a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a><div class="navbar-custom-menu"><ul class="nav navbar-nav"><#-- login user --><li class="dropdown"><a href="javascript:" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">${I18n.system_welcome} ${XXL_JOB_LOGIN_IDENTITY.username}<span class="caret"></span></a><ul class="dropdown-menu" role="menu"><li id="updatePwd" ><a href="javascript:">${I18n.change_pwd}</a></li><li id="logoutBtn" ><a href="javascript:">${I18n.logout_btn}</a></li></ul></li></ul></div></nav></header><!-- 修改密码.模态框 --><div class="modal fade" id="updatePwdModal" tabindex="-1" role="dialog" aria-hidden="true"><div class="modal-dialog "><div class="modal-content"><div class="modal-header"><h4 class="modal-title" >${I18n.change_pwd}</h4></div><div class="modal-body"><form class="form-horizontal form" role="form" ><div class="form-group"><label for="lastname" class="col-sm-2 control-label">${I18n.change_pwd_field_newpwd}<font color="red">*</font></label><div class="col-sm-10"><input type="text" class="form-control" name="password" placeholder="${I18n.system_please_input} ${I18n.change_pwd_field_newpwd}" maxlength="18" ></div></div><hr><div class="form-group"><div class="col-sm-offset-3 col-sm-6"><button type="submit" class="btn btn-primary" >${I18n.system_save}</button><button type="button" class="btn btn-default" data-dismiss="modal">${I18n.system_cancel}</button></div></div></form></div></div></div></div></#macro><#macro commonLeft pageName ><!-- Left side column. contains the logo and sidebar --><aside class="main-sidebar"><!-- sidebar: style can be found in sidebar.less --><section class="sidebar"><!-- sidebar menu: : style can be found in sidebar.less --><ul class="sidebar-menu"><li class="header">${I18n.system_nav}</li><li class="nav-click <#if pageName == "index">active</#if>" ><a href="${request.contextPath}/"><i class="fa fa-circle-o text-aqua"></i><span>${I18n.job_dashboard_name}</span></a></li><li class="nav-click <#if pageName == "jobinfo">active</#if>" ><a href="${request.contextPath}/jobinfo"><i class="fa fa-circle-o text-yellow"></i><span>${I18n.jobinfo_name}</span></a></li><li class="nav-click <#if pageName == "joblog">active</#if>" ><a href="${request.contextPath}/joblog"><i class="fa fa-circle-o text-green"></i><span>${I18n.joblog_name}</span></a></li><#if XXL_JOB_LOGIN_IDENTITY.role == 1><li class="nav-click <#if pageName == "jobgroup">active</#if>" ><a href="${request.contextPath}/jobgroup"><i class="fa fa-circle-o text-red"></i><span>${I18n.jobgroup_name}</span></a></li><li class="nav-click <#if pageName == "user">active</#if>" ><a href="${request.contextPath}/user"><i class="fa fa-circle-o text-purple"></i><span>${I18n.user_manage}</span></a></li></#if><li class="nav-click <#if pageName == "help">active</#if>" ><a href="${request.contextPath}/help"><i class="fa fa-circle-o text-gray"></i><span>${I18n.job_help}</span></a></li></ul></section><!-- /.sidebar --></aside>
</#macro><#macro commonControl ><!-- Control Sidebar --><aside class="control-sidebar control-sidebar-dark"><!-- Create the tabs --><ul class="nav nav-tabs nav-justified control-sidebar-tabs"><li class="active"><a href="#control-sidebar-home-tab" data-toggle="tab"><i class="fa fa-home"></i></a></li><li><a href="#control-sidebar-settings-tab" data-toggle="tab"><i class="fa fa-gears"></i></a></li></ul><!-- Tab panes --><div class="tab-content"><!-- Home tab content --><div class="tab-pane active" id="control-sidebar-home-tab"><h3 class="control-sidebar-heading">近期活动</h3><ul class="control-sidebar-menu"><li><a href="javascript::;"><i class="menu-icon fa fa-birthday-cake bg-red"></i><div class="menu-info"><h4 class="control-sidebar-subheading">张三今天过生日</h4><p>2015-09-10</p></div></a></li><li><a href="javascript::;"> <i class="menu-icon fa fa-user bg-yellow"></i><div class="menu-info"><h4 class="control-sidebar-subheading">Frodo 更新了资料</h4><p>更新手机号码 +1(800)555-1234</p></div></a></li><li><a href="javascript::;"> <i class="menu-icon fa fa-envelope-o bg-light-blue"></i><div class="menu-info"><h4 class="control-sidebar-subheading">Nora 加入邮件列表</h4><p>nora@example.com</p></div></a></li><li><a href="javascript::;"><i class="menu-icon fa fa-file-code-o bg-green"></i><div class="menu-info"><h4 class="control-sidebar-subheading">001号定时作业调度</h4><p>5秒前执行</p></div></a></li></ul><!-- /.control-sidebar-menu --></div><!-- /.tab-pane --><!-- Settings tab content --><div class="tab-pane" id="control-sidebar-settings-tab"><form method="post"><h3 class="control-sidebar-heading">个人设置</h3><div class="form-group"><label class="control-sidebar-subheading"> 左侧菜单自适应<input type="checkbox" class="pull-right" checked></label><p>左侧菜单栏样式自适应</p></div><!-- /.form-group --></form></div><!-- /.tab-pane --></div></aside><!-- /.control-sidebar --><!-- Add the sidebar's background. This div must be placed immediately after the control sidebar --><div class="control-sidebar-bg"></div>
</#macro><#macro commonFooter ><footer class="main-footer">Powered by <b>XXL-JOB</b> ${I18n.admin_version}<div class="pull-right hidden-xs"><strong>Copyright © 2015-${.now?string('yyyy')} <a href="https://www.xuxueli.com/" target="_blank" >xuxueli</a> <a href="https://github.com/xuxueli/xxl-job" target="_blank" >github</a></strong><!-- All rights reserved. --></div></footer>
</#macro>
3、修改joblog.index.ftl文件
<!DOCTYPE html>
<html>
<head><#import "../common/common.macro.ftl" as netCommon><@netCommon.commonStyle /><!-- DataTables --><link rel="stylesheet" href="${request.contextPath}/static/adminlte/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css"><!-- daterangepicker --><link rel="stylesheet" href="${request.contextPath}/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.css"><title>${I18n.admin_name}</title>
</head>
<body class="hold-transition skin-blue sidebar-mini <#if cookieMap?exists && cookieMap["xxljob_adminlte_settings"]?exists && "off" == cookieMap["xxljob_adminlte_settings"].value >sidebar-collapse</#if> ">
<div class="wrapper"><!-- header --><@netCommon.commonHeader /><!-- left --><@netCommon.commonLeft "joblog" /><!-- Content Wrapper. Contains page content --><div class="content-wrapper"><!-- Content Header (Page header) --><section class="content-header"><h1>${I18n.joblog_name}</h1></section><!-- Main content --><section class="content"><div class="row"><div class="col-xs-2"><div class="input-group"><span class="input-group-addon">${I18n.jobinfo_field_jobgroup}</span><select class="form-control" id="jobGroup" paramVal="<#if jobInfo?exists>${jobInfo.jobGroup}</#if>" ><#if XXL_JOB_LOGIN_IDENTITY.role == 1><option value="0" >${I18n.system_all}</option> <#-- 仅管理员支持查询全部;普通用户仅支持查询有权限的 jobGroup --></#if><#list JobGroupList as group><option value="${group.id}" >${group.title}</option></#list></select></div></div><div class="col-xs-2"><div class="input-group"><span class="input-group-addon">${I18n.jobinfo_job}</span><select class="form-control" id="jobId" paramVal="<#if jobInfo?exists>${jobInfo.id}</#if>" ><option value="0" >${I18n.system_all}</option></select></div></div><div class="col-xs-2"><div class="input-group"><span class="input-group-addon">${I18n.joblog_status}</span><select class="form-control" id="logStatus" ><option value="-1" >${I18n.joblog_status_all}</option><option value="1" >${I18n.joblog_status_suc}</option><option value="2" >${I18n.joblog_status_fail}</option><option value="3" >${I18n.joblog_status_running}</option></select></div></div><div class="col-xs-4"><div class="input-group"><span class="input-group-addon">${I18n.joblog_field_triggerTime}</span><input type="text" class="form-control" id="filterTime" readonly ></div></div><div class="col-xs-1"><button class="btn btn-block btn-info" id="searchBtn">${I18n.system_search}</button></div><div class="col-xs-1"><button class="btn btn-block btn-default" id="clearLog">${I18n.joblog_clean}</button></div></div><div class="row"><div class="col-xs-12"><div class="box"><#--<div class="box-header hide"><h3 class="box-title">调度日志</h3></div>--><div class="box-body"><table id="joblog_list" class="table table-bordered table-striped display" width="100%" ><thead><tr><th name="jobId" >${I18n.jobinfo_field_id}</th><th name="jobGroup" >jobGroup</th><#--<th name="executorAddress" >执行器地址</th><th name="glueType" >运行模式</th><th name="executorParam" >任务参数</th>--><th name="triggerTime" >${I18n.joblog_field_triggerTime}</th><th name="triggerCode" >${I18n.joblog_field_triggerCode}</th><th name="triggerMsg" >${I18n.joblog_field_triggerMsg}</th><th name="handleTime" >${I18n.joblog_field_handleTime}</th><th name="handleCode" >${I18n.joblog_field_handleCode}</th><th name="handleMsg" >${I18n.joblog_field_handleMsg}</th><th name="handleMsg" >${I18n.system_opt}</th></tr></thead><tbody></tbody></table></div></div></div></div></section></div><!-- footer --><@netCommon.commonFooter />
</div><!-- 日志清理.模态框 -->
<div class="modal fade" id="clearLogModal" tabindex="-1" role="dialog" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><h4 class="modal-title" >${I18n.joblog_clean_log}</h4></div><div class="modal-body"><form class="form-horizontal form" role="form" ><div class="form-group"><label class="col-sm-3 control-label">${I18n.jobinfo_field_jobgroup}:</label><div class="col-sm-9"><input type="text" class="form-control jobGroupText" readonly ><input type="hidden" name="jobGroup" ></div></div><div class="form-group"><label class="col-sm-3 control-label">${I18n.jobinfo_job}:</label><div class="col-sm-9"><input type="text" class="form-control jobIdText" readonly ><input type="hidden" name="jobId" ></div></div><div class="form-group"><label class="col-sm-3 control-label">${I18n.joblog_clean_type}:</label><div class="col-sm-9"><select class="form-control" name="type" ><option value="1" >${I18n.joblog_clean_type_1}</option><option value="2" >${I18n.joblog_clean_type_2}</option><option value="3" >${I18n.joblog_clean_type_3}</option><option value="4" >${I18n.joblog_clean_type_4}</option><option value="5" >${I18n.joblog_clean_type_5}</option><option value="6" >${I18n.joblog_clean_type_6}</option><option value="7" >${I18n.joblog_clean_type_7}</option><option value="8" >${I18n.joblog_clean_type_8}</option><option value="9" >${I18n.joblog_clean_type_9}</option></select></div></div><hr><div class="form-group"><div class="col-sm-offset-3 col-sm-6"><button type="button" class="btn btn-primary ok" >${I18n.system_ok}</button><button type="button" class="btn btn-default" data-dismiss="modal">${I18n.system_cancel}</button></div></div></form></div></div></div>
</div><@netCommon.commonScript />
<!-- DataTables -->
<script src="${request.contextPath}/static/adminlte/bower_components/datatables.net/js/jquery.dataTables.min.js"></script>
<script src="${request.contextPath}/static/adminlte/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
<!-- daterangepicker -->
<script src="${request.contextPath}/static/adminlte/bower_components/moment/moment.min.js"></script>
<script src="${request.contextPath}/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.js"></script>
<script src="${request.contextPath}/static/js/joblog.index.1.js"></script>
</body>
</html>
相关文章:
xxl-job升级到springboot3.0 导致页面打不开报错)问题
原因:springboot3.0 因为移除了jsp 导致xxl-job不能访问,解决方法如下 1、修改PermissionInterceptor拦截器 package com.xxl.job.admin.controller.interceptor;import com.xxl.job.admin.controller.annotation.PermissionLimit; import com.xxl.job.…...

栈和队列.
目录 1. 栈(Stack) 2. 栈的模拟实现 3. 栈的应用场景 4. 队列(Queue) 5. 队列的模拟实现 6. 循环队列 7. 双端队列(Deque) 8. 面试题 1. 栈(Stack) 栈:一种特殊…...
Parallel.ForEach - 并行处理
Parallel.ForEach 是 C# 中 System.Threading.Tasks.Parallel 类提供的一个方法,用于并行地迭代集合中的每一个元素。Parallel.ForEach 方法允许多个线程同时处理集合中的元素,从而提高程序的执行效率,特别是在处理大量数据或执行耗时任务时。…...

【MySQL】初识MySQL—MySQL是啥,以及如何简单操作???
前言: 🌟🌟本期讲解关于MySQL的简单使用和注意事项,希望能帮到屏幕前的你。 🌈上期博客在这里:http://t.csdnimg.cn/wwaqe 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 目…...

LLM应用实战: 产业治理多标签分类
数据介绍 标签体系 产业治理方面的标签体系共计200个,每个标签共有4个层级,且第3、4层级有标签含义的概括信息。 原始数据 企业官网介绍数据,包括基本介绍、主要产品等 企业专利数据,包括专利名称和专利摘要信息,且专…...

下载Mongodb 4.2.25 版本教程
1、MongoDB 安装包的下载链接 Download MongoDB Community Server | MongoDB 进入如下截图: 2、查找历史版本 往下拉,点击“...”,找到”Archived releases”,点击进入 、 3、下载Mongodb 4.2.25 版本 找到如下图4.2.25版本下载链接,点击就可…...

docker拉取redis5.0.5并建立redis集群
1.配置文件 mkdir -p redis-cluster/7001/ mkdir -p redis-cluster/7002/ mkdir -p redis-cluster/7003/ mkdir -p redis-cluster/7004/ mkdir -p redis-cluster/7005/ mkdir -p redis-cluster/7006/cd redis-clustervim 7001/redis.confbind 0.0.0.0port 7001cluster-enabled…...

React16新手教程记录
文章目录 前言一些前端面试题1. 搭建项目1. 1 cdn1. 2 脚手架 2. 基础用法2.1 表达式和js语句区别:2.2 jsx2.3 循环map2.4 函数式组件2.5 类式组件2.6 类组件点击事件2.6.1 事件回调函数this指向2.6.2 this解决方案2.6.2.1 通过bind2.6.2.2 箭头函数(推荐…...
怎么摆脱非自然链接?
什么是非自然链接? 非自然链接是人为创建的链接,用于操纵网站在搜索引擎中的排名。非自然链接违反了Google 的准则,网站可能会因此受到惩罚。 它们不是由网站所有者编辑放置或担保的。示例包括带有过度优化锚文本的链接、通过 PR 的广告、嵌…...

【2024数模国赛赛题思路公开】国赛B题第二套思路丨附可运行代码丨无偿自提
2024年数模国赛B题解题思路 B 题 生产过程中的决策问题 一、问题1解析 问题1的任务是为企业设计一个合理的抽样检测方案,基于少量样本推断整批零配件的次品率,帮助企业决定是否接收供应商提供的这批零配件。具体来说,企业需要依据两个不同…...
P1166 打保龄球
共可以投 1 局 一局10轮 在一局中,一共有十个柱,会出现很多种情况。 第1次把10个 打倒全部 >> 分数10后2次得分 --若是第10轮则还需另加两次滚球; 没全部打倒 >> 第2次把剩下的 打倒 >&g…...

[数据集][目标检测]西红柿成熟度检测数据集VOC+YOLO格式3241张5类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3241 标注数量(xml文件个数):3241 标注数量(txt文件个数):3241 标注…...

数仓工具—Hive语法之URL 函数
hive—语法—URL 函数 业务需求中,我们经常需要对用户的访问、用户的来源进行分析,用于支持运营和决策。例如我们经常对用户访问的页面进行统计分析,分析热门受访页面的Top10,观察大部分用户最喜欢的访问最多的页面等: 又或者我们需要分析不同搜索平台的用户来源分析,统…...
c#如何实现触发另外一个文本框的回车事件
一.需求 我需要实现listview中的一行双击后,将其中的一个值传给一个文本框,传完后,给文本框一个回车指令。 我的方法:后面加上 \rthis.txt_ID.Text this.listView1.SelectedItems[0].Text"\r" 结果无效。 二.问通义…...
Vue 中 nextTick 的最主要作用是什么,为什么要有这个 API
在 Vue.js 中,nextTick 是一个用于在 DOM 更新后执行代码的 API。它的主要作用是确保在某个操作完成后,DOM 已经更新且可以被访问或操作。这个 API 在处理需要等待 DOM 更新完成的逻辑时非常有用。 nextTick 的最主要作用 确保 DOM 更新完成: Vue 的响应…...
python科学计算:NumPy 数组的运算
1 数组的数学运算 NumPy 提供了一系列用于数组运算的函数和操作符,这些运算可以作用于数组的每个元素上。常见的数学运算包括加、减、乘、除等。 1.1 元素级运算 NumPy 支持对数组的每个元素进行逐元素运算。这些操作可以通过标准的数学符号或 NumPy 函数来完成。…...

SAP B1 基础实操 - 用户定义字段 (UDF)
目录 一、功能介绍 1. 使用场景 2. 操作逻辑 3. 常用定义部分 3.1 主数据 3.2 营销单据 4. 字段设置表单 4.1 字段基础信息 4.2 不同类详细设置 4.3 默认值/必填 二、案例 1 要求 2 操作步骤 一、功能介绍 1. 使用场景 在实施过程中,经常会碰见用户需…...

Idea发布springboot项目无法识别到webapp下面的静态资源
问题: Idea发布springboot项目无法识别到webapp下面的静态资源 访问报错404 解决办法: 修改之后重新构建,访问成功...
Redis及其他缓存
1.NOSQL、Redis概述,通用命令,redis五大数据类型,三大特殊数据类型 NOSQL概述: (NOT ONLY SQL-不仅仅是SQL),泛指非关系型数据库,为解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用问题 常见no…...
golang入门
学习视频:https://www.bilibili.com/video/BV1gf4y1r79E go安装 go源码包一般解压到/usr/local/linux下go的环境变量配置: export GOROOT/usr/local/go # 源码包export GOPATH$HOME/go # 工作路径export PATH P A T H : PATH: PATH:GOROOT/bin:$GOPATH/…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...