springBoot+ureport报表引擎

UReport是一款基于单元格迭代模型的纯Java中式报表引擎。它架构于Spring之上,因此与企业应用具有良好的集成能力。UReport提供了基于Eclipse插件与基于网页的两种报表模版设计方式,采用类Excel报表模版设计风格,简单、易上手,可在不编程的情况下完成绝大多数报表模版的设计工作。

UReport的主要作用体现在以下几个方面:

  1. 报表设计:UReport支持简单、复杂报表的设计,能够很好地嵌合实际业务需求。无论是通过纯SQL还是配置的方式,都可以实现针对不同人员的报表管理。
  2. 数据实时处理:UReport能够根据实时数据自动调整参数,以达到最佳效果。这种自动调整参数的能力使得模型能够快速响应并精确预测,同时减少人工参与的次数,提升模型的投入产出比。
  3. 参数优化:UReport是一种强大的参数优化技术,它能够帮助用户改进模型参数,最大化模型性能,并减少人工参与,提高模型的运行效率。通过UReport的帮助,用户可以更快地实现模型的优化,提升性能,加快产品开发进度,从而节省大量时间和金钱。

首先看一下整体目录:

最终显示结果:

一:需要引入相关依赖pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.crwl</groupId><artifactId>ureport</artifactId><version>1.0-SNAPSHOT</version><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><spring-cloud.version>2.1.1.RELEASE</spring-cloud.version><flowable.version>6.5.0</flowable.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId><version>2.0.9.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.0.9.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.0.9.RELEASE</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional><version>1.16.20</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>RELEASE</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>RELEASE</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>4.6.10</version></dependency><dependency><groupId>com.jfinal</groupId><artifactId>activerecord</artifactId><version>4.8</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.6</version></dependency><dependency><groupId>com.bstek.ureport</groupId><artifactId>ureport2-console</artifactId><version>2.2.9</version></dependency><dependency><groupId>com.bstek.ureport</groupId><artifactId>ureport2-core</artifactId><version>2.2.9</version></dependency></dependencies>
</project>

二:配置resources:

1.  application.yaml

server:port: 9090servlet:context-path: /pro
spring:http:encoding:force: trueenabled: truecharset: UTF-8datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/j2eedb?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowMultiQueries=true&nullNamePatternMatchesAll=trueusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSourceresources:static-locations: classpath:/,classpath:/static/

2.  config目录下config.properties:

#ureport.fileStoreDir=D:/myfile/ureportfiles
ureport.disableFileProvider=true
ureport.fileToDbStoreDir=D:/ureportDbfiles
ureport.disableFileDbProvider=false
ureport.contextPath=/pro

3.  config目录下context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><import resource="classpath:ureport-console-context.xml" /><bean id="propertyConfigurer" parent="ureport.props"><property name="locations"><list><value>classpath:config/config.properties</value></list></property></bean><bean id="ureport.fielToDataBaseProvider" class="com.report.provider.FileToDatabaserProvider"><property name="fileStoreDir" value="${ureport.fileToDbStoreDir}"></property><property name="disabled" value="${ureport.disableFileDbProvider}"></property></bean>
</beans>

三:配置数据源DataSourceConfig.java

package com.report.config;import com.alibaba.druid.pool.DruidDataSource;
import com.report.model._MappingKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.activerecord.CaseInsensitiveContainerFactory;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;import javax.sql.DataSource;@Configuration
public class DataSourceConfig {@Primary@Bean@ConfigurationProperties(prefix = "spring.datasource")public DataSource druidDataSource() {return new DruidDataSource();}/*** 设置数据源代理*/@Beanpublic TransactionAwareDataSourceProxy transactionAwareDataSourceProxy() {TransactionAwareDataSourceProxy transactionAwareDataSourceProxy = new TransactionAwareDataSourceProxy();transactionAwareDataSourceProxy.setTargetDataSource(druidDataSource());return transactionAwareDataSourceProxy;}/*** 设置ActiveRecord*/@Beanpublic ActiveRecordPlugin activeRecordPlugin() {ActiveRecordPlugin arp = new ActiveRecordPlugin(transactionAwareDataSourceProxy());arp.setDialect(new MysqlDialect());arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));//忽略大小写arp.setShowSql(true);arp.getEngine().setToClassPathSourceFactory();//arp.addSqlTemplate("sql/all.sql");_MappingKit.mapping(arp);arp.start();System.out.println("调用Jfinal ActiveRecordPlugin 成功");return arp;}
}

四:配置返回结果类Result.java:

package com.report.dto;
import com.report.enums.ResultEnum;
import java.io.Serializable;public class Result implements Serializable {/****/private static final long serialVersionUID = 3337439376898084639L;/*** 处理状态*/private Integer code;/*** 处理信息*/private String msg;private String serverID;/*** 返回值*/private Object data;private int total;private Object rows;/*** 成功,传入data(使用最多)** @param data* @return*/public static Result success(Object data) {return Result.success(data,"请求成功!");}/*** 成功,传入data(使用最多)* @param msg* @return*/public static Result success(String msg) {Result result = new Result();result.setCode(ResultEnum.SUCCESS.getCode());result.setMsg(msg);return result;}/*** 成功,传入rows和total* @param rows* @param total* @return*/public static Result success(Object rows,int total) {Result result = new Result();result.setCode(ResultEnum.SUCCESS.getCode());result.setMsg("请求成功!");result.setRows(rows);result.setTotal(total);return result;}/*** 成功,传入data 和 msg* @param data* @param msg* @return*/public static Result success(Object data, String msg) {Result result = new Result();result.setCode(ResultEnum.SUCCESS.getCode());result.setMsg(msg);result.setData(data);return result;}/*** 失败* @return*/public static Result error() {return Result.error("请求失败!");}/*** 失败 传入 msg* @param msg* @return*/public static Result error(String msg) {return  Result.error(msg,ResultEnum.FAILURE);}public static Result error(String msg ,ResultEnum resultEnum){Result result = new Result();result.setCode(resultEnum.getCode());result.setMsg(msg);return result;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;if(null != this.data && this.data.getClass().getName().equals("com.crwl.commonserver.dto.CurrUser")){this.data = null;}}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public String getServerID() {return serverID;}public void setServerID(String serverID) {this.serverID = serverID;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public int getTotal() {return total;}public void setTotal(int total) {this.total = total;}public Object getRows() {return rows;}public void setRows(Object rows) {this.rows = rows;}@Overridepublic String toString() {return "Result{" +"code=" + code +", msg='" + msg + '\'' +", serverID='" + serverID + '\'' +", data=" + data +", total=" + total +", rows=" + rows +'}';}
}

五:返回枚举类ResultEnum.java:

package com.report.enums;
/*** 返回状态*/
public enum ResultEnum {/*** 200 OK     //客户端请求成功* 400 Bad Request  //客户端请求有语法错误,不能被服务器所理解* 401 Unauthorized //请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用* 403 Forbidden  //服务器收到请求,但是拒绝提供服务* 404 Not Found  //请求资源不存在,eg:输入了错误的 URL* 500 Internal Server Error //服务器发生不可预期的错误* 503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常*/SUCCESS(200, "操作成功"),ERROR(500,"操作失败"), FAILURE(404, "请求的网页不存在"),INVALID(503,"服务不可用"),LOGINOVERTIME(1000,"登录超时");private ResultEnum(Integer code, String data) {this.code = code;this.data = data;}private Integer code;private String data;public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getData() {return data;}public void setData(String data) {this.data = data;}
}

六:BaseReport.java

package com.report.model.base;import com.jfinal.plugin.activerecord.IBean;
import com.jfinal.plugin.activerecord.Model;import java.util.Date;@SuppressWarnings({"serial", "unchecked"})
public abstract class BaseReport<M extends BaseReport<M>> extends Model<M> implements IBean {public M setId(Integer id) {set("id", id);return (M)this;}public Integer getId() {return getInt("id");}public M setRptCode(String rptCode) {set("rpt_code", rptCode);return (M)this;}public String getRptCode() {return getStr("rpt_code");}public M setRptName(String rptName) {set("rpt_name", rptName);return (M)this;}public String getRptName() {return getStr("rpt_name");}public M setRptType(Integer rptType) {set("rpt_type", rptType);return (M)this;}public Integer getRptType() {return getInt("rpt_type");}public M setUreportName(String ureportName) {set("ureport_name", ureportName);return (M)this;}public String getUreportName() {return getStr("ureport_name");}public M setRptUrl(String rptUrl) {set("rpt_url", rptUrl);return (M)this;}public String getRptUrl() {return getStr("rpt_url");}public M setRemark(String remark) {set("remark", remark);return (M)this;}public String getRemark() {return getStr("remark");}public M setSort(Integer sort) {set("sort", sort);return (M)this;}public Integer getSort() {return getInt("sort");}public M setStatus(Integer status) {set("status", status);return (M)this;}public Integer getStatus() {return getInt("status");}public M setCreateUser(String createUser) {set("create_user", createUser);return (M)this;}public String getCreateUser() {return getStr("create_user");}public M setCreateDate(Date createDate) {set("create_date", createDate);return (M)this;}public Date getCreateDate() {return getDate("create_date");}public M setUpdateUser(String updateUser) {set("update_user", updateUser);return (M)this;}public String getUpdateUser() {return getStr("update_user");}public M setUpdateDate(Date updateDate) {set("update_date", updateDate);return (M)this;}public Date getUpdateDate() {return getDate("update_date");}
}

七:_MappingKit.java

package com.report.model;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
public class _MappingKit {public static void mapping(ActiveRecordPlugin arp) {arp.addMapping("ur_report", "id", Report.class);}
}

八:Report.java

package com.report.model;import com.report.model.base.BaseReport;
/*** Generated by JFinal.*/
@SuppressWarnings("serial")
public class Report extends BaseReport<Report> {public static final Report dao = new Report().dao();
}

九:DsProvider.java

package com.report.provider;import com.bstek.ureport.definition.datasource.BuildinDatasource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;//提供ureport 内置数据源连接
@Component("dsScoreSys")
public class DsProvider implements BuildinDatasource {@Autowiredprivate DataSource dataSource;@Overridepublic String name() {return "内置数据源";}@Overridepublic Connection getConnection() {try {return dataSource.getConnection();} catch (SQLException e) {e.printStackTrace();return null;}}
}

十: FileToDatabaserProvider.java

package com.report.provider;import com.bstek.ureport.exception.ReportException;
import com.bstek.ureport.provider.report.ReportFile;
import com.bstek.ureport.provider.report.ReportProvider;
import com.report.model.Report;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;import java.io.*;
import java.util.*;public class FileToDatabaserProvider implements ReportProvider {private String prefix="fileToDb:";private String fileStoreDir;private String disabled;@Overridepublic InputStream loadReport(String file) {if(StringUtils.isNotEmpty(file)){String[] arr = file.split("@");Report report = null;if(null != arr && arr.length==2){report = Report.dao.findById(Integer.parseInt(arr[1]));file = report.getUreportName();}else{report = Report.dao.findFirst(" select * from ur_report t where t.ureport_name=?", file);}if(null != report) {if (file.startsWith(prefix)) {file = file.substring(prefix.length(), file.length());}String fullPath = fileStoreDir + "/" + file;try {return new FileInputStream(fullPath);} catch (FileNotFoundException e) {throw new ReportException(e);}}else{throw new ReportException("报表文件不存在");}}else{throw new ReportException("报表文件不存在");}}@Overridepublic void deleteReport(String file) {Report report = Report.dao.findFirst(" select * from ur_report t where t.ureport_name=?",file);if(null != report){if(file.startsWith(prefix)){file=file.substring(prefix.length(),file.length());}String fullPath=fileStoreDir+"/"+file;File f=new File(fullPath);if(f.exists()){f.delete();}report.delete();}}@Overridepublic List<ReportFile> getReportFiles() {List<Report> reportList = Report.dao.find("select * from ur_report t where t.rpt_type=2 ");File file=new File(fileStoreDir);List<ReportFile> list=new ArrayList<>();
//        if(reportList != null) {
//            for(Report reportStore:reportList) {
//                ReportFile reportFile = new ReportFile(reportStore.getRptName(),reportStore.getCreateDate());
//                list.add(reportFile);
//            }
//        }
//        return list;for(File f:file.listFiles()){Calendar calendar=Calendar.getInstance();calendar.setTimeInMillis(f.lastModified());Report report = null;for(int i=0; i<reportList.size();i++){Report r = reportList.get(i);String reportName = r.getUreportName();if(StringUtils.isNotEmpty(reportName)){reportName = reportName.substring(prefix.length(), reportName.length());if(f.getName().equals(reportName)){report = r;}}}if(null != report){list.add(new ReportFile(f.getName(),calendar.getTime()));
//                list.add(new ReportFile(report.getId(),f.getName(),calendar.getTime()));}}Collections.sort(list, new Comparator<ReportFile>(){@Overridepublic int compare(ReportFile f1, ReportFile f2) {return f2.getUpdateDate().compareTo(f1.getUpdateDate());}});return list;}@Overridepublic void saveReport(String file, String content) {try {if(StringUtils.isNotEmpty(file)) {String[] arr = file.split("@");Report report = null;if(null != arr && arr.length==2){report = Report.dao.findById(Integer.parseInt(arr[0]));file = arr[1];}else{report = Report.dao.findFirst(" select * from ur_report t where t.ureport_name=?", file);if (report == null) {report = new Report();}}report.setUreportName(file);report.setRptUrl("ureport/preview?_u=" + file);if (file.startsWith(prefix)) {file = file.substring(prefix.length(), file.length());}String fullPath = fileStoreDir + "/" + file;FileOutputStream outStream = null;try {outStream = new FileOutputStream(new File(fullPath));IOUtils.write(content, outStream, "utf-8");} catch (Exception ex) {throw new ReportException(ex);} finally {if (outStream != null) {try {outStream.close();} catch (IOException e) {e.printStackTrace();}}}report.setUpdateDate(new Date());if (null != report.getId()) {report.update();} else {report.setCreateDate(new Date());report.setRptType(2);report.save();}}else{throw new ReportException("报表文件不存在");}} catch (Exception e) {throw new ReportException(e);}}@Overridepublic String getName() {return "数据库文件系统";}@Overridepublic boolean disabled() {return false;}@Overridepublic String getPrefix() {return prefix;}public void setFileStoreDir(String fileStoreDir) {this.fileStoreDir = fileStoreDir;}public void setDisabled(String disabled) {this.disabled = disabled;}
}

十一:ReportServiceImpl.java

package com.report.service.impl;import com.report.model.Report;
import com.report.service.ReportService;
import com.jfinal.plugin.activerecord.Page;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;@Service
public class ReportServiceImpl implements ReportService {private final String table = "ur_report";@Overridepublic Page<Report> getPageList(Integer currentPage, Integer pageSize, String rptName, String rptType) {StringBuilder sql = new StringBuilder();sql.append(" from "+ table + " t where 1=1 ");if(StringUtils.isNotEmpty(rptName)){sql.append(" and instr(t.rpt_name,'"+rptName +"')>0 ");}if(StringUtils.isNotEmpty(rptType)){sql.append(" and t.rpt_type="+rptType);}sql.append(" order by t.sort desc ");Page<Report> pageList = Report.dao.paginate(currentPage,pageSize,"select t.* ",sql.toString());return pageList;}
}

十二:ReportService.java

package com.report.service;
import com.report.model.Report;
import com.jfinal.plugin.activerecord.Page;public interface ReportService {/**** 获取表格数据* @param currentPage* @param pageSize* @param rptName* @param rptType* @return*/Page<Report> getPageList(Integer currentPage, Integer pageSize, String rptName, String rptType);
}

十三:主类UreportApplication.java

package com.report;import com.bstek.ureport.console.UReportServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ImportResource;
import org.springframework.transaction.annotation.EnableTransactionManagement;/*** 入口类*/
@SpringBootApplication()
@EnableTransactionManagement
@ImportResource("classpath:config/context.xml")
@ComponentScan(basePackages = {"com.report.*"})
public class UreportApplication {public static void main(String[] args) {SpringApplication.run(UreportApplication.class, args);}//ureport报表@Beanpublic ServletRegistrationBean buildUReprtServlet(){return new ServletRegistrationBean(new UReportServlet(),"/ureport/*");}
}

最后贴上表设计:

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

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

相关文章

数据结构和算法:搜索

二分查找 二分查找&#xff08;binary search&#xff09; 是一种基于分治策略的高效搜索算法。它利用数据的有序性&#xff0c;每轮缩小一半搜索范围&#xff0c;直至找到目标元素或搜索区间为空为止。 给定一个长度为 &#x1d45b; 的数组 nums &#xff0c;元素按从小到大…

django orm DateTimeField 6位小数精度问题

from django.db.backends.mysql.base import DatabaseWrapperDatabaseWrapper.data_types[DateTimeField] "datetime"意思就是重写源码里面的DateTimeField字段

如何在家中使用手机平板电脑 公司iStoreOS软路由实现远程桌面

文章目录 简介一、配置远程桌面公网地址二、家中使用永久固定地址 访问公司电脑**具体操作方法是&#xff1a;** 简介 软路由是PC的硬件加上路由系统来实现路由器的功能&#xff0c;也可以说是使用软件达成路由功能的路由器。 使用软路由控制局域网内计算机的好处&#xff1a…

2024年【起重机械指挥】考试报名及起重机械指挥免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机械指挥考试报名考前必练&#xff01;安全生产模拟考试一点通每个月更新起重机械指挥免费试题题目及答案&#xff01;多做几遍&#xff0c;其实通过起重机械指挥模拟考试题库很简单。 1、【多选题】严禁吊车超负…

凯撒加密.

题目描述 给定一个单词&#xff0c;请使用凯撒密码将这个单词加密 凯撒密码是一种替换加密的技术&#xff0c;单词中的所有字母都在字母表上向后偏移3位后被替换成密文。即a变为 d&#xff0c;变为e.&#xff0c;w 变为z&#xff0c;2 变为a&#xff0c;y变为 6&#xff0c;z变…

Java——注解和注释

0 注解和注释的区别 在博主刚开始学习java语言的时候&#xff0c;经常把注释和注解搞混淆&#xff0c;误认为这两个是类似的东西&#xff0c;其实它们完全不是一个东西。 注释&#xff1a; 注释是程序员在代码中添加的说明性文字&#xff0c;用于解释代码的功能、目的或实现…

每日五道java面试题之springboot篇(二)

目录&#xff1a; 第一题. 你如何理解 Spring Boot 配置加载顺序&#xff1f;第二题. Spring Boot 中如何解决跨域问题 ?第三题. 什么是 CSRF 攻击&#xff1f;第四题. 比较一下 Spring Security 和 Shiro 各自的优缺点 ?第五题. bootstrap.properties 和 application.proper…

[AIGC] 对比MySQL全文索引,RedisSearch,和Elasticsearch的详细区别

全文搜索是数据库和搜索引擎的重要功能。这个功能能在一个或多个列中查找用户查询的文本&#xff0c;这对诸如电子商务网站和检索大量文本数据的应用是必需的。在这篇文章中&#xff0c;我们将详细对比三种主流全文搜索技术&#xff1a; MySQL全文索引&#xff0c;Redis的Redis…

【Ucore操作系统】8. 并发

文章目录 【 0. 引言 】0.1 线程定义0.2 同步互斥 【 1. 内核态的线程管理 】1.1 线程概念1.2 线程模型与重要系统调用1.2.1 线程创建系统调用1.2.2 等待子线程系统调用1.2.3 进程相关的系统调用 1.3 应用程序示例1.3.1 系统调用封装1.3.2 多线程应用程序 – threads 1.4 线程管…

考研数学|《660题》这样刷最有效!

考研数学660题作为许多考研学子在备考过程中重要的复习资料之一&#xff0c;自然也有很多同学会有660该怎么刷的问题。为了更有效率地使用这些题目&#xff0c;希望以下策略能帮到大家&#xff0c; 首先&#xff0c;你需要根据自己的实际情况&#xff0c;制定一个合理的学习计…

【网安】DDoS攻击:方法、影响与防御策略

【网安】DDoS攻击&#xff1a;方法、影响与防御策略 前言DDoS攻击实现的常见方法Volumetric Attacks&#xff08;流量攻击&#xff09;UDP FloodICMP (Ping) Flood Protocol Attacks&#xff08;协议攻击&#xff09;SYN Flood Application Layer Attacks&#xff08;应用层攻击…

就业班 第二阶段 2401--3.25 day5 mycat读写分离

[TOC] 启动并更改临时密码 [rootmysql1~]# systemctl start mysqld && passwdgrep password /var/log/mysqld.log | awk END{ print $NF} && mysqladmin -p"$passwd" password Qwer123..; MyCAT读写分离 Mycat 是一个开源的数据库系统&#xff0c;但…

LeetCode-1669题:合并两个链表(原创)

【题目描述】 给你两个链表 list1 和 list2 &#xff0c;它们包含的元素分别为 n 个和 m 个。请你将 list1 中下标从 a 到 b 的全部节点都删除&#xff0c;并将list2 接在被删除节点的位置。下图中蓝色边和节点展示了操作后的结果&#xff1a; 请你返回结果链表的头指针。 【…

【办公类-21-11】 20240327三级育婴师 多个二级文件夹的docx合并成docx有页码,转PDF

背景展示&#xff1a;有页码的操作题 背景需求&#xff1a; 实操课终于全部结束了&#xff0c;把考试内容&#xff08;docx&#xff09;都写好了 【办公类-21-10】三级育婴师 视频转文字docx&#xff08;等线小五单倍行距&#xff09;&#xff0c;批量改成“宋体小四、1.5倍行…

数据库学习(四)mybatis

Mybatis Mybatis是一个基于数据持久层&#xff08;DAO层&#xff09;的一款框架&#xff0c;他能极大的简化Java中连接数据库&#xff0c;操作数据库也就是jdbc的操作。 在定义mybatis相关接口时&#xff0c;不需要定义实现类&#xff0c;因为在程序启动时&#xff0c;mybati…

Python环境下一种新的类谱峭度算法的旋转机械故障诊断模型

谱峭度SK的本质是计算每根谱线峭度值的高阶统计量&#xff0c;谱峭度对信号中的瞬态冲击成分十分敏感&#xff0c;能有效的从含有背景噪声信号中识别瞬态冲击及其在频带中的分布。由于谱峭度的复杂性、缺少一个正式的定义和一个容易理解的计算过程使其在很长时间内都未能引入到…

Redis入门到实战-第六弹

Redis实战热身Lists篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的&#xff08;采用BSD许可证&#xff09;&#xff0c;用作数据库、缓存、消息代理和流…

kubectl 启用shell自动补全功能

官网手册参考&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux/ 系统&#xff1a;centos7 补全脚本依赖于工具 bash-completion&#xff0c; 所以要先安装它&#xff08;可以用命令 type _init_completion 检查 bash-completion 是否已安装&a…

2024年腾讯云优惠券领取教程及使用攻略分享

随着云计算技术的快速发展&#xff0c;腾讯云作为国内领先的云计算服务提供商&#xff0c;为企业和个人提供了丰富的云产品和服务。为了帮助大家更好地了解和使用腾讯云&#xff0c;本文将为大家详细介绍2024年腾讯云优惠券领取教程及使用攻略。 一、腾讯云优惠券介绍说明 腾讯…

成都克鲁斯机器人电路板故障维修攻略,快来了解一下!

一、克鲁斯机器人电路板维修步骤 断开电源&#xff1a;在进行电路维修前&#xff0c;务必断开机器人的电源&#xff0c;确保安全。 拆卸电路板&#xff1a;根据电路图或维修手册&#xff0c;小心拆卸故障电路板。注意记录拆卸过程中的细节&#xff0c;以便后续重新安装。 更换损…