高级Java开发工程师手把手教你用AI人工智能帮你写JAVA代码实际案例二(生成自定义springboot定时器组件)全网唯一

高级Java开发工程师手把手教你用AI人工智能帮你写JAVA代码实际案例二全网唯一

一、需求背景案例说明

笔者有个实际的生产项目,想自己自定义定时器到数据库表里面,不想配置到配置文件里面,很麻烦!这次想用AI帮我写代码!Java springboot 环境!
数据库设计为:

CREATE TABLE `timer_config`  (`id` int(0) NOT NULL AUTO_INCREMENT,`timer_config` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '定时器配置:0 10 * * * ?',`class_method_name` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '执行类方法名称',`remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注信息',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of md_timer_config
-- ----------------------------
INSERT INTO `timer_config` VALUES (1, '0 0 * * * ?', 'nasenServiceImpl.Task1', '方法1');
INSERT INTO `timer_config` VALUES (2, '0 5 * * * ?', 'nasenServiceImpl.Task2', '方法2');

大家按照我的训练人工智能的思路往下走,AI还是需要引导与指导的!笔者把思路方法写下来!

二、训练指导AI的方法步骤

训练AI口令步骤一

提问口令:

下面是mysql的一个定时器配置表!
CREATE TABLE `timer_config`  (`id` int(0) NOT NULL AUTO_INCREMENT,`timer_config` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '定时器配置:0 10 * * * ?',`class_method_name` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '执行类方法名称',`remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注信息',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of md_timer_config
-- ----------------------------
INSERT INTO `timer_config` VALUES (1, '0 0 * * * ?', 'nasenServiceImpl.Task1', '方法1');
INSERT INTO `timer_config` VALUES (2, '0 5 * * * ?', 'nasenServiceImpl.Task2', '方法2');
下面是java代码spingboot的定时器调度的例子:
@EnableScheduling
@Component
public class AutoConfigTaskschedule {@Autowiredprivate nasenServiceImpl nasenServiceImpl;@Scheduled(cron = "0 0 * * * ?")public void task1() {nasenServiceImpl.Task1();}@Scheduled(cron = "0 5 * * * ?")public void task2() {nasenServiceImpl.Task2();}}你帮我修改代码,读取数据库的这个配置表,并动态的执行配置表里面的定时器任务!帮我把Java代码写出来

注意:你要提前给AI一个引导,这个引导是一个方向,比如你给他建表语句,跟你项目中已经写好的定时器的一个例子,AI可以读懂,给你项目大概方向的代码跟实现!

AI回复:

以下是修改后的 Java 代码,用于读取数据库中的定时器配置表,并动态执行配置表中的定时器任务:

import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;@EnableScheduling
@Component
public class DynamicTaskScheduler {@Autowiredprivate DataSource dataSource; // 注入数据源@Scheduled(cron = "0 * * * *?") // 定期执行加载任务配置的操作public void loadTasks() {try (Connection connection = dataSource.getConnection()) {String query = "SELECT timer_config, class_method_name FROM timer_config";try (PreparedStatement statement = connection.prepareStatement(query);ResultSet resultSet = statement.executeQuery()) {while (resultSet.next()) {String timerConfig = resultSet.getString("timer_config");String classMethodName = resultSet.getString("class_method_name");// 根据配置创建定时器任务@Scheduled(cron = timerConfig)public void performTask() {nasenServiceImpl.getClass().getMethod(classMethodName).invoke(nasenServiceImpl);}}}} catch (SQLException e) {e.printStackTrace();}}
}

在上述代码中,通过 loadTasks 方法定期从数据库中加载任务配置。使用 DataSource 注入数据源,并执行查询操作获取定时器配置和对应的类方法名称。然后,根据配置动态创建定时器任务,并通过反射机制调用指定类的指定方法。

请确保已正确配置数据源,并根据实际情况进行调整和扩展。

这个代码还是有些错误的,所以我们要继续引导AI
这个代码经过测试是错误的,还得继续引导!

训练AI口令步骤二

提问口令:

@Autowired
private DataSource dataSource; // 注入数据源@Scheduled(cron = "0 * * * *?") // 定期执行加载任务配置的操作
public void loadTasks() {try (Connection connection = dataSource.getConnection()) {String query = "SELECT timer_config, class_method_name FROM md_timer_config";try (PreparedStatement statement = connection.prepareStatement(query);ResultSet resultSet = statement.executeQuery()) {while (resultSet.next()) {String timerConfig = resultSet.getString("timer_config");String classMethodName = resultSet.getString("class_method_name");// 根据配置创建定时器任务@Scheduled(cron = timerConfig)public void performTask() {clickHouseService.getClass().getMethod(classMethodName).invoke(clickHouseService);}}}} catch (SQLException e) {e.printStackTrace();}
}
你帮我修改代码,读取数据库的这个配置表,并动态的执行配置表里面的定时器任务!帮我把Java代码写出来,哪里不对也帮我改造一下

AI的回答如下:

在Spring Boot中动态创建定时任务并不像直接在类中声明@Scheduled注解那么简单,因为注解是在编译时解析的,不能动态添加或更改。为此,我们需要利用Spring的任务调度器(TaskScheduler)结合数据访问来实现动态定时任务。

以下是一个基于ThreadPoolTaskScheduler的实现示例:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;import javax.sql.DataSource;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;@Component
public class DynamicTaskScheduler {@Autowiredprivate DataSource dataSource;@Autowiredprivate ApplicationContext applicationContext; // 用于获取Beanprivate TaskScheduler taskScheduler = new ThreadPoolTaskScheduler();@PostConstructpublic void init() {taskScheduler.initialize(); // 初始化任务调度器loadAndScheduleTasks();}private void loadAndScheduleTasks() {try (Connection connection = dataSource.getConnection()) {String query = "SELECT timer_config, class_method_name FROM md_timer_config";try (PreparedStatement statement = connection.prepareStatement(query);ResultSet resultSet = statement.executeQuery()) {while (resultSet.next()) {String timerConfig = resultSet.getString("timer_config");String classMethodName = resultSet.getString("class_method_name");scheduleTask(timerConfig, classMethodName);}}} catch (SQLException e) {e.printStackTrace();}}private void scheduleTask(String timerConfig, String classMethodName) {Class<?> serviceClass = getBeanClassByName(classMethodName.split("\\.")[0]);String methodName = classMethodName.substring(classMethodName.indexOf(".") + 1);Method method = findMethod(serviceClass, methodName);if (method == null) {throw new RuntimeException("无法找到方法: " + methodName);}Trigger trigger = new CronTrigger(timerConfig);taskScheduler.schedule(() -> invokeMethod(method, applicationContext.getBean(serviceClass)), trigger);}private Class<?> getBeanClassByName(String beanName) {return applicationContext.getBeansOfType(Object.class).keySet().stream().filter(key -> key.getName().equals(beanName)).findFirst().map(key -> key.getType()).orElseThrow(() -> new RuntimeException("无法找到名为" + beanName + "的Bean"));}private Method findMethod(Class<?> clazz, String methodName) {try {return clazz.getMethod(methodName);} catch (NoSuchMethodException e) {return null;}}private void invokeMethod(Method method, Object target) {try {method.invoke(target);} catch (IllegalAccessException | InvocationTargetException e) {e.printStackTrace();}}
}

在这个例子中,我们首先初始化了一个ThreadPoolTaskScheduler,然后从数据库中读取定时任务配置,并为每个配置创建一个新的定时任务,这些任务通过触发器(如CronTrigger)和任务执行体(即调用指定类的方法)来定义。

需要注意的是,getBeanClassByName方法是基于假设数据库中的类名与Spring容器中的Bean名称一致,如果实际情况不同,可能需要调整这个方法以适应实际的Bean查找逻辑。同时,findMethod方法是简单查找无参的公共方法,如果方法带有参数,还需要进一步完善该方法。

然后我们把代码复制到自己的项目跑跑改改,发现了有一个方法是错误的!
针对错误的方法,把提问的范围缩小!你要说出你自己具体的那个方法,什么问题,什么需求!

训练AI口令步骤三

上部分代码也粘贴给AI

上面代码中的getBeanClassByName方法报错,帮我重新写一个

注意:代码一定要附在上面,要不然AI读不懂!读不懂,他的回答就会千奇百怪!你要引导它给你最佳最准的答案!
在这里插入图片描述

AI回答如下:

在Spring中,获取Bean的类型通常不是基于Bean的名称而是基于类类型。如果你的class_method_name字段格式是“ClassName.methodName”,那么我们可以尝试按类名直接获取Bean。不过,Spring容器中的Bean默认名称通常是首字母小写的类名。如果Bean的名称与类名不一致,你需要在配置文件中为Bean提供明确的名称。这里给出一个改进后的getBeanClassByName方法,假设Spring Bean的名字和类名一致:

private Class<?> getBeanClassByName(String className) {Map<String, Object> beans = applicationContext.getBeansWithAnnotation(Component.class);for (Map.Entry<String, Object> entry : beans.entrySet()) {if (entry.getValue().getClass().getSimpleName().equals(className)) {return entry.getValue().getClass();}}throw new RuntimeException("无法找到名为" + className + "的Bean");
}

然而,这种方法仍然存在一定的局限性,因为它是基于类的简单名匹配,并且依赖于所有的Spring Bean都有@Component注解。在大型项目中,推荐使用更精确的方式来获取Bean,例如:

private Class<?> getBeanClassByName(String className) {try {return Class.forName(className);} catch (ClassNotFoundException e) {// 如果你想基于Spring容器中已注册的Bean名称来查找,则可以尝试以下方式for (String beanName : applicationContext.getBeanDefinitionNames()) {Class<?> beanType = applicationContext.getType(beanName);if (beanType.getSimpleName().equals(className)) {return beanType;}}throw new RuntimeException("无法找到名为" + className + "的Bean");}
}

请注意,尽管如此,这种方式仍不够健壮,因为在实际项目中类名和Bean名称可能存在差异。若要在Spring容器中准确地根据类名获取Bean,请确保你有足够的上下文信息来正确识别对应的Bean。如果Bean的名称和类名没有直接关系,可能需要在数据库中存储额外的信息,例如Bean的名称或者类的全限定名。
在这里插入图片描述

再把改造后的方法,放到自己项目里面测试一下跑通了!

在这里插入图片描述

最终整合AI跑通的代码如下:

package com.nasen.schedule;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.Trigger;
import org.springframework.scheduling.concurrent.ExecutorConfigurationSupport;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;@Component
public class DynamicTaskScheduler {@Autowiredprivate DataSource dataSource;@Autowiredprivate ApplicationContext applicationContext; // 用于获取Beanprivate TaskScheduler taskScheduler = new ThreadPoolTaskScheduler();@PostConstructpublic void init() {((ExecutorConfigurationSupport) taskScheduler).initialize(); // 初始化任务调度器loadAndScheduleTasks();}private void loadAndScheduleTasks() {try (Connection connection = dataSource.getConnection()) {String query = "SELECT timer_config, class_method_name FROM timer_config";try (PreparedStatement statement = connection.prepareStatement(query);ResultSet resultSet = statement.executeQuery()) {while (resultSet.next()) {String timerConfig = resultSet.getString("timer_config");String classMethodName = resultSet.getString("class_method_name");scheduleTask(timerConfig, classMethodName);}}} catch (SQLException e) {e.printStackTrace();}}private void scheduleTask(String timerConfig, String classMethodName) {Class<?> serviceClass = getBeanClassByName(classMethodName.split("\\.")[0]);String methodName = classMethodName.substring(classMethodName.indexOf(".") + 1);Method method = findMethod(serviceClass, methodName);if (method == null) {throw new RuntimeException("无法找到方法: " + methodName);}Trigger trigger = new CronTrigger(timerConfig);taskScheduler.schedule(() -> invokeMethod(method, applicationContext.getBean(serviceClass)), trigger);}private Class<?> getBeanClassByName(String className) {try {return Class.forName(className);} catch (ClassNotFoundException e) {// 如果你想基于Spring容器中已注册的Bean名称来查找,则可以尝试以下方式for (String beanName : applicationContext.getBeanDefinitionNames()) {Class<?> beanType = applicationContext.getType(beanName);if (beanType.getSimpleName().equals(className)) {return beanType;}}throw new RuntimeException("无法找到名为" + className + "的Bean");}}private Method findMethod(Class<?> clazz, String methodName) {try {return clazz.getMethod(methodName);} catch (NoSuchMethodException e) {return null;}}private void invokeMethod(Method method, Object target) {try {method.invoke(target);} catch (Exception e) {e.printStackTrace();}}
}

四、总结

引导思路方法很重要,你要给AI比较具体的例子,然后再缩小范围,然后再提出具体的需求,当然过程中还得自己去测代码,前提是你也得懂代码,你是一个引导者!
笔者这次用的2个AI平台互相引导,用到”豆包“与”通义千问“!
先问豆包AI,看他回答的怎么样,回答的不好,再问通义千问AI,看看是不是回答的更好!然后2者截取最好的,再引导,从这个实际例子中看,通义千问AI的训练水平更高,更聪明,更高说通义千问AI的训练程度更强!

豆包AI是字节跳动公司研发的一种人工智能工具,它基于云雀模型运行。这款工具融合了聊天机器人、写作助手和英语学习助手的功能,能应对各种任务,例如解答用户问题、进行对话、协助文本创作以及提供语言学习指导。豆包AI不仅可以从网页端访问,也能在iOS和Android平台上使用。

https://www.doubao.com/

通义千问是阿里云研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码,功能强大且应用场景广泛。作为一个AI助手,通义千问能够帮助用户在工作、学习、生活中提高效率与质量,通过自然语言理解和生成技术,为用户提供精准、详尽和个性化的服务。您可以通过与通义千问互动,体验其多种功能和智能特性。

https://tongyi.aliyun.com/

2个AI 2个人工智能大师,看看他们谁强谁弱,我是让他们2个一起帮我工作!互相引导!互相帮助!

AI人工智能是什么

人工智能把它看成是一个巨大的无限的机器人或者是巨型的知识库,它能是模拟人类的神经大脑的一个创造的巨大的机器人,它可以通过自主学习与训练变得知识变得越来越丰富!我们普通人就帮它看成一个机器人即可!这个机器人可以协助你帮助你做一些工作、生活的事情,你要指导它、训练它让它为你所用!我们都看过施瓦辛格《未来战士》的天网,AI类似于天网的概念!你可能从脑子里想象你可以给他对话,他是你的管家!很多电影都有类似这些场景!笔者主要是从实际运用出发!就是生活中我们怎么运用到人工智能!

https://tongyi.aliyun.com/qianwen/

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

https://www.doubao.com/

在这里插入图片描述

五、笔者简介

国内某一线知名软件公司企业认证在职员工:任JAVA高级研发工程师,大数据领域专家,数据库领域专家兼任高级DBA!10年软件开发经验!现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目!并维护真实企业级生产数据库300余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

蓝桥杯算法题:栈(Stack)

这道题考的是递推动态规划&#xff0c;可能不是很难&#xff0c;不过这是自己第一次靠自己想出状态转移方程&#xff0c;所以纪念一下&#xff1a; 要做这些题目&#xff0c;首先要把题目中会出现什么状态给找出来&#xff0c;然后想想他们的状态可以通过什么操作转移&#xf…

学习数通HCIE选择誉天有什么优势?

誉天数通课程亮点 课程内容详实&#xff0c;千万级实训环境 涵盖数通技术全场景热门技术&#xff0c;涉及传统园区网&#xff0c;虚拟化园区网&#xff0c;广域互联技术&#xff0c;数据中心网络&#xff0c;网络自动化运维 专业机房环境&#xff0c;全真机教学演示&#xf…

模块化组合优势凸显钡铼IOy系列轻松应对大规模工业自动化工程

模块化组合是钡铼IOy系列独立式I/O模块的一大优势&#xff0c;它为大规模工业自动化工程提供了灵活性、可扩展性和定制性&#xff0c;从而轻松应对不同规模和复杂度的工厂应用。以下是关于模块化组合优势的详细解析&#xff1a; 1. 灵活性和定制性 模块化设计使得钡铼IOy系列…

小鸡宝宝考考你每匹斑马身上的条纹都不相同吗?蚂蚁庄园4.13答案

蚂蚁庄园是一款爱心公益游戏&#xff0c;用户可以通过喂养小鸡&#xff0c;产生鸡蛋&#xff0c;并通过捐赠鸡蛋参与公益项目。用户每日完成答题就可以领取鸡饲料&#xff0c;使用鸡饲料喂鸡之后&#xff0c;会可以获得鸡蛋&#xff0c;可以通过鸡蛋来进行爱心捐赠。其中&#…

【工具-工具指南】

项目-开发工具 ■ 编辑器■ Xmind ■ UI交互设计■ AxureRP9 ■ 项目管理■ boardmix■ excalidraw ■ Markdown■ MarkText■ Typora■ Ulysses■ Notable■ VNote■ Mou■ Bears■ Notion■ 有道云■ 印象笔记 ■ 硬件画图■ AD■ Allegro■ PADS■ Eagle■ Altium■ Fritzin…

大型网站系统架构演化

大型网站质量属性优先级&#xff1a;高性能 高可用 可维护 应变 安全 一、单体架构 应用程序&#xff0c;数据库&#xff0c;文件等所有资源都在一台服务器上。 二、垂直架构 应用和数据分离&#xff0c;使用三台服务器&#xff1a;应用服务器、文件服务器、数据服务器 应用服…

Mongo 报错 Can‘t canonicalize query: BadValue $in needs an array

一、遇到的问题 Mongo in查询 [ UserId > array($in>$userIds)] $userIds数组不是连续索引&#xff0c;报错Cant canonicalize query: BadValue $in needs an array 二、解决 array_values($userIds) 重新索引一下变成连续索引即可。 Mongo in查询的数组要是连续索…

凡尔码搭建物流消防安全巡查系统

物流行业在现代经济中扮演着重要角色&#xff0c;由于物流过程涉及到大量的货物运输和存储&#xff0c;伴随着存在安全隐患、消防安全、设备设施安全等问题&#xff1b;安全问题也为物流企业管理者们需要高度关注的重要问题之一&#xff1b;近年来&#xff0c;随着消防安全管理…

华为校园公开课走入上海交大,鸿蒙成为专业核心课程

4月12日&#xff0c;华为校园公开课在中国上海交通大学成功举办&#xff0c;吸引了来自计算机等相关专业的150余名学生参加。据了解&#xff0c;由吴帆、陈贵海、过敏意、吴晨涛、刘生钟等教授在中国上海交通大学面向计算机系本科生开设的《操作系统》课程&#xff0c;是该系学…

揭秘大前端开发方向的新机遇!

众所周知&#xff0c;华为开发者大会2023&#xff0c;宣布不再兼容安卓&#xff0c;同时宣布了“鸿飞计划”&#xff0c;欲与iOS、安卓在市场三分天下&#xff0c;这对中国国产操作系统而言&#xff0c;具有划时代的意义。 鸿蒙应用开发的兴起&发展 鸿蒙操作系统是华为自…

如何androd动态注册编写计算器

源地址&#xff1a;https://www.ctvol.com/asreverse/41030.html 如何androd动态注册编写计算器 直接开上es开鲁&#xff0c;配置我们就不用多说了。 创建layout&#xff1b;在之后写debug时候回出现乱掉的情况&#xff0c;可以直接慢慢调试 在红圈中是layout基本设置&#…

细胞世界:1.内膜系统(物流网络)与跨膜运输(交通方式)

内膜系统就像一个高度组织化、效率卓越的现代化物流网络&#xff0c;各组成部分协同工作&#xff0c;确保细胞内外的物质转运和处理高效、准确进行。每个部分都承担着不同但相互关联的角色&#xff0c;通过这样的内部物流系统&#xff0c;细胞能够维持其生命活动&#xff0c;响…

网络广播系统是什么?网络广播的作用及应用

网络广播系统是什么?网络广播的作用及应用 商场广播的目的&#xff1a;提醒人员有序、监控配合点对点呼叫、物品遗失广播、背景音乐防噪、紧急情况呼叫等等&#xff0c;各个场景有各个场景的需求模式&#xff0c;广播系统的建设重点在于突发情况的应对&#xff0c;国家已经把广…

清明美食制作|“心灵护航,增能培力”残疾人职业能力提升培养

为提高残疾人的动手能力&#xff0c;提升个人的自身素质和自主就业创业能力&#xff0c;弘扬中华民族传统文化&#xff0c;临近清明之际&#xff0c;淳安县从益舍社会工作服务中心于浪川乡展开了以“品尝春天味道 制作清明粿 清明美食制作”为主题的清明节活动。 【清明粿制作】…

0点起C语言

用sizeof()来查看在你的平台上到底占用多少你多少字节的内存。 Int x sizeof(int); Int xsizeof(shrt int); Int xsizeof(long); Int xsizeof(long double); 等等。 http://www.enet.com.cn/article/2012/0822/A20120822153730_2.shtml #—是个预处理的标志&#xff0c;表示对文…

PCIe总线-存储器域和PCIe总线域访问流程(二)

1.概述 PCIe总线的最大特点是像CPU访问DDR一样&#xff0c;可以直接使用地址访问PCIe设备&#xff08;桥&#xff09;&#xff0c;但不同的是DDR和CPU同属于存储器域&#xff0c;而CPU和PCIe设备属于两个不同的域&#xff0c;PCIe设备&#xff08;桥&#xff09;的地址空间属于…

【MATLAB第104期】基于MATLAB的xgboost的敏感性分析/特征值排序计算(针对多输入单输出回归预测模型)

【MATLAB第104期】基于MATLAB的xgboost的敏感性分析/特征值排序计算&#xff08;针对多输入单输出回归预测模型&#xff09; 因matlab的xgboost训练模型不含敏感性分析算法&#xff0c;本文通过使用single算法&#xff0c;即单特征因素对输出影响进行分析&#xff0c;得出不同…

【教学类-52-01】20240411动物数独(4宫格)宫格图

作品展示 背景需求&#xff1a; 一、下载图片 PS修图&#xff08;图片长宽一样&#xff0c;把动物图片上下拉长&#xff09; 二、数独结构分析&#xff1a; 1、这是一个四宫格的数独题&#xff0c; 2、将1234换成了四种小动物图片。 于是我去找到原来做过的一个代码&#xf…

秒杀优化-异步秒杀思路

6、秒杀优化 6.1 秒杀优化-异步秒杀思路 我们来回顾一下下单流程 当用户发起请求&#xff0c;此时会请求nginx&#xff0c;nginx会访问到tomcat&#xff0c;而tomcat中的程序&#xff0c;会进行串行操作&#xff0c;分成如下几个步骤 1、查询优惠卷 2、判断秒杀库存是否足…

【c语言】atoi函数---使用和模拟实现(详解)

atoi函数---使用和模拟实现 atoi函数在Cplusplus中的定义 atoi函数的使用 #include <stdio.h> #include <stdlib.h>int main() {char arr[20] "4831213";int ret 0;ret atoi(arr);printf("arr:%s\n", arr);printf("ret:%d\n", re…