- 博客(77)
- 收藏
- 关注
原创 四、一套代码适配多种数据库之最终方案
本文提出了一套优化方案,解决多数据库适配时Mapper接口冗余问题。通过只保留一个子Mapper接口继承父接口,并让不同数据库的Mapper.xml映射到同一接口,启动时仅加载当前数据库对应的Mapper文件。改造内容包括:Service层恢复默认注入、合并子接口、按需加载Mapper.xml、调整扫描路径。该方案避免了创建多个空Mapper接口,简化了代码结构,实现了同一套代码灵活适配不同数据库。
2025-05-26 14:53:27
592
原创 三、一套代码适配多种数据库之升级方案
本文针对初步方案中代码重复和DAO层调用不灵活的问题,提出了升级方案。在Service层通过@Qualifier动态注入子Mapper接口,并约定命名规范(如userPgMapper)减少修改量;DAO层采用子接口继承父接口的方式,使子Mapper能复用父Mapper的XML实现,仅需重写差异SQL。项目改造后,只需修改数据库类型常量即可切换适配不同数据库,显著提升了代码复用性和灵活性。通过PostgreSQL和MySQL的测试验证了方案的可行性,实现了同一套代码适配多种数据库的目标。
2025-05-26 14:52:52
966
原创 二、一套代码适配多种数据库之初步方案
本文探讨了如何通过改造代码实现一套代码适配多种数据库的方案。首先,提出了最简单的方案,以示例项目为基础,详细展示了如何从MySQL切换到PostgreSQL的改造过程。该方案虽然简单,但存在代码冗余和维护成本高的问题,下文通过进一步优化提升代码复用性和可维护性。
2025-05-23 19:50:04
1072
原创 一、一套代码适配多种数据库之需求概述
为了满足国产化需求,Java项目计划将数据库从MySQL替换为国产数据库,同时仍需支持非国产化数据库。由于不同客户可能提出使用不同国产数据库的要求,项目需实现数据库的自由切换,确保系统稳定性和灵活性。具体需求包括:同一套代码适配多种数据库,兼容非国产和国产数据库,设计灵活的数据库适配层,确保切换过程对业务代码透明,并具备扩展性。最终目标是提供高效、灵活的解决方案,满足多样化客户需求。
2025-05-23 19:45:09
311
原创 十、Spring Boot集成Spring Security之HTTP请求授权
Spring Security最新基于HTTP请求授权配置详解:工作原理,授权配置,异常处理,测试接口,案例源码
2024-11-28 17:06:06
1329
2
原创 九、Spring Boot集成Spring Security之授权概述
概要介绍授权概念及其实现流程,概要介绍Spring Security授权中的基本概念和授权种类实现技术及其适用场景
2024-11-28 16:59:18
1275
原创 一文学会easyexcel导入数据,多sheet页、字典转换【附带源码】
SpringBoot集成easyexcel实现数据导入功能,解决常见多sheet导入、字典转换等问题,附带源码
2024-11-08 22:27:08
1099
原创 八、Spring Boot集成Spring Security之前后分离认证最佳实现测试
本文介绍前后分离认证最佳实现的对接测试,使用postman或者其他熟悉的测试工具,配合最佳流程介绍和实现效果更佳!!!
2024-11-08 15:49:29
939
原创 七、Spring Boot集成Spring Security之前后分离认证最佳实现
前后分离项目认证流程代码实现,基于spring security原生流程设计,实现RESTFUL接口、分布式缓存
2024-11-06 21:32:04
1366
原创 六、Spring Boot集成Spring Security之前后分离项目认证流程最佳方案
前后分离项目认证流程最佳方案,基于spring security原生流程设计,实现RESTFUL接口、分布式缓存
2024-11-06 14:52:57
1457
原创 一文学会easyexcel导出数据,多sheet页、字典【附带源码】
SpringBoot集成easyexcel实现数据下载功能,解决常见多sheet导出、字典转换、自适应行宽等问题,附带源码
2024-10-25 15:34:41
1434
原创 五、Spring Boot集成Spring Security之认证流程2
Spring Boot集成Spring Security认证流程2包括自定义UserDetailsService实现
2024-10-14 17:19:59
853
原创 四、Spring Boot集成Spring Security之认证流程
Spring Boot集成Spring Security之认证流程详解包括登录和登出流程
2024-10-10 14:26:15
1539
原创 JavaScript语法之语句、字面量、变量
一、准备工作1、JavaScript三种书写位置行内式内嵌式外链式2、JavaScript基本输入输出语句prompt:输入alert:浏览器弹出console.log:控制台输出4、示例demo.html点击查看代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>示例</title>
2021-11-22 14:48:31
683
原创 JavaScript编程语言概述
一、产生背景JavaScript最初由Netscape的Brendan Eich设计,最初将其脚本语言命名为LiveScript,后来Netscape在与Sun(Java由Sun公司设计开发)合作之后将其改名为JavaScript。微软同时期也推出了JScript来迎战JavaScript的脚本语言。为了互用性,在ECMA(欧洲计算机制造商协会)的协调下,由Netscape、Sun、微软、Borland组成的工作组确定统一标准:ECMA-262。完整的JavaScript实现包含三个部分:ECM
2021-11-22 14:46:49
586
原创 简单理解编程语言的工作原理
一、编程语言定义编程语言可以简单的理解为一种计算机和人都能识别的语言。计算机只能识别二进制,人识别的是人类语言。那怎么实现计算机和人都能识别的语言呢?先看下编程语言的发展历程,再来回答这个问题。二、分类/发展阶段第一代:机器语言简单来说就是:机器语言就是由0和1组成的指令代码每个指令代码会执行计算机内部相应的电路指令代码的集合即是指令系统不同的计算机厂家的指令代码一般不同百科说明:机器语言是机器能直接识别的程序语言或指令代码,无需经过翻译,每一操作码在计算机内部都有相应的电路来完成
2021-11-22 14:44:50
2706
原创 SpringBoot配置参数绑定@ConfigurationProperties@Value
将spring配置文件中配置的参数绑定给组件的属性作用实现步骤注册组件参数绑定种类@Value和@ConfigurationProperties示例配置类@EnableConfigurationProperties+@ConfigurationProperties示例作用将spring配置文件中配置的参数绑定给组件的属性实现步骤容器中注册组件参数绑定注册组件@Component@Repository@Service@Controller@RestController@Co
2021-08-19 16:53:50
226
原创 SpringBoot注册组件之@Import@ImportResource@ComponentScan
SpringBoot正常情况下是不需要使用这些注解的,提供这些注解也使
2021-08-18 17:52:00
371
原创 ModBus TCP/IP协议
因在工作中遇到以前的代码读取聚英PLC设备开关状态失败问题,所以就好好研究了一下ModBus协议,在此记录一下ModBus TCP/IP协议协议的作用数据帧报文头(MBAP)帧结构(PDU)协议的作用规定与PLC交互的指令(数据帧)数据帧包括两部分:数据帧=报文头(MBAP)+帧结构(PDU),下面主要介绍报文头和帧结构的取值及作用数据帧报文头(MBAP)内容解释长度事务处理标识可以理解为报文序列号,一般每次通信之后就要加1以区别不同的通信数据报文2byte协
2021-07-22 18:28:50
2423
3
原创 PLC调试工具Modbus Poll使用说明(ModBus TCP/IP类型)
因在工作中遇到以前的代码读取聚英PLC设备开关状态失败问题,所以就好好研究了一下ModBus协议,其中Modbus Poll发挥了重要作用,在此记录一下Modbus Poll的使用方式测试说明软件版本设备信息功能使用方式连接操作设备准备工作读取Coils状态写Coils状态写Coils状态之打开关闭读取Holding Registers状态读取Discrete Inputs状态额外说明总结测试说明软件版本设备信息施耐德、聚英且支持ModBus TCP/IP协议功能使用方式连接点击【Conn
2021-07-22 17:31:02
17713
5
原创 SpringBoot注册组件之@Configuration@Bean注解作用及注意点
@Configuration注解源码源码package org.springframework.context.annotation;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.ann
2021-07-21 19:09:31
406
1
原创 SpringBoot依赖管理,版本仲裁
SpringBoot依赖管理,版本仲裁依赖管理说明查看依赖的版本修改默认版本号依赖管理说明Spring Boot 的每个版本都提供了它支持的依赖项的精选列表。所以我们在开发Spring Boot 项目时,不需要在构建配置中为这些依赖项额外提供版本。不同版本的Spring Boot依赖项版本也会有变化。查看依赖的版本开发Spring Boot项目引入的parent <parent> <groupId>org.springframework.boot
2021-07-13 22:51:13
385
原创 IDEA中.properties配置文件输入中文显示Unicode编码,本地编辑器,服务器打开显示Unicode编码问题解决方案
IDEA中.properties配置文件输入中文显示Unicode编码,本地编辑器,服务器打开显示Unicode编码,查看时非常不方便,现在教大家一种properties文件按中文保存显示的方法新建properties文件按中文保存显示已存在properties文件中改为按中文保存显示注意点新建properties文件按中文保存显示进入编码设置统一字符编码,并取消勾选【Transparent native-to-ascii conversion】新建.properties配置文件(参
2021-07-11 13:44:32
2825
2
原创 json转Map泛型Map<String,T>,json转集合Map泛型List<Map<String,T>>工具类
json转Map泛型,json转集合Map泛型工具类不带泛型限定的问题工具类不带泛型限定的问题当json转Map或者json转集合Map不指定泛型时,数据类型json指定默认类型。当我们想尝试把默认类型转成我们想要的数据类型是,比较麻烦而且容易遗漏,需要先判断原来的数据类型,把Object强转成原来的数据类型,再转成我们想要的类型。工具类package com.xxx.util;import com.alibaba.fastjson.JSON;import com.alibaba.fas
2021-06-29 14:18:15
2049
原创 360浏览器和搜狗浏览器查看双内核版本及如何控制内核版本
360浏览器和搜狗浏览器查看双内核版本及如何控制内核版本谷歌内核360浏览器搜狗浏览器IE内核360浏览器搜狗浏览器谷歌内核360浏览器查看360浏览器谷歌内核版本方法:或者使用工具网站https://liulanmi.com/labs/core.html搜狗浏览器使用工具网站https://liulanmi.com/labs/core.htmlIE内核360浏览器360浏览器使用系统自带的IE版本搜狗浏览器搜狗浏览器...
2021-06-23 11:22:52
5187
2
原创 自定义注解和SpEL表达式实现功能强大的无侵入式的日志功能
自定义注解和SpEL表达式实现功能强大的无侵入式的日志功能需求:日志审计实现原则使用的技术代码实现自定义注解业务对象注解实现使用注解关键点总结需求:日志审计用户要求系统敏感操作添加日志审计功能,方便查看哪些用户做了敏感操作日志详情样例:用户[admin]新增角色id:[111]name:[testAddRole]结果:[成功]实现原则因为是后加的功能,所以原实现不能大面积修改;退一步讲,就算是新开发的项目,考虑添加日志审计功能时也应该尽可能的减少代码的耦合,减少代码侵入原代码实现尽量不动
2021-05-06 17:43:53
379
原创 linux查看磁盘使用情况及每个文件夹占用磁盘大小
linux查看磁盘使用情况及每个文件夹占用磁盘大小方便定位磁盘满的原因和删除响应的文件查看磁盘使用情况查看每个文件夹占用磁盘大小查看每个文件及文件夹占用磁盘大小查看磁盘使用情况命令df -h示例查看每个文件夹占用磁盘大小查看当前文件夹磁盘大小命令:du --max-depth=1 -h示例查看指定目录文件夹磁盘大小命令:du /opt --max-depth=1 -h示例查看每个文件及文件夹占用磁盘大小查看当前文件及文件夹磁盘大小命令:ll -h示例查看指定目录文件
2021-04-25 15:49:39
503
原创 Linux系统java进程产生的core文件导致宕机原因排查
java进程无故挂掉,程序日志正常,后发现tomcat的bin目录下产生core文件,core文件产生原因排查方法如下情况说明排查方法情况说明JDK安装目录:/java/jdk1.8.0_171/bincore文件名:core.17889core目录:${tomcat}/bingdb版本:gdb-7.6.1-80.el7.x86_64排查方法core文件目录执行: gdb /java/jdk1.8.0_171/bin/java core.17889输入命令:bt通过报错信息可以看出具
2021-04-07 11:46:34
1947
原创 TortoiseGit安装配置详解同时支持github,gitee,gitlab
TortoiseGit 是基于 TortoiseSVN 的 Git 的 Windows Shell 界面。它是开源的,可以完全使用免费软件构建安装安装git并配置环境变量下载地址[https://git-scm.com/downloads](https://git-scm.com/downloads)TortoiseGit安装下载地址[https://tortoisegit.org/download/](https://tortoisegit.org/download/)公钥配置生成SSH公钥打开putty
2021-03-15 17:43:10
1945
8
原创 Jenkins系列三通过脚本方式部署maven项目,maven聚合项目到Tomcat
Jenkins系列三通过脚本方式部署maven项目,maven聚合项目到Tomcat环境Jenkins安装额外插件配置环境配置Item构建项目总结关于目录一定要弄清楚这几个概念,不然配置路径时候很容易弄混环境Linux版本:CentOS7.2JDK版本:1.8Maven版本:3.6.0Tocmat版本:8.5.51Tocmat目录:/opt/demoJenkins版本:2.270Jenkins的workspace目录:/opt/jenkins-workspacejenkins重启demo
2020-12-29 17:10:35
391
原创 Jenkins系列四通过脚本方式部署maven项目,maven聚合项目,前端VUE的springboot项目
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2020-12-29 16:00:31
549
原创 Jenkins系列二通过Deploy war/ear to a container方式部署maven项目,maven聚合项目到Tomcat
Jenkins系列二部署maven项目,maven聚合项目到Tomcat环境Tomcat下载安装Jenkins安装额外插件配置环境配置Item构建项目总结环境Linux版本:CentOS7.2JDK版本:1.8Maven版本:3.6.0Tomcat版本:8.5.51Jenkins版本:2.270假定WEB服务是demo,安装目录:/optTomcat下载https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.51/bin/安装
2020-12-26 20:32:09
1433
原创 Jenkins系列一Linux环境安装Jenkins
Linux环境安装Jenkins软件版本Tomcat下载安装Jenkins下载安装登陆软件版本Linux版本:CentOS7.2Tomcat版本:8.5.51Jenkins版本:2.270Jenkins安装目录:/opt/jenkinsTomcat下载https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.51/bin/安装将apache-tomcat-8.5.51.tar.gz上传到服务器/opt目录解压文件,/opt目录下
2020-12-26 18:55:15
206
原创 打开的文件过多问题排查思路及解决过程
本文会从问题现象、问题排查及定位、解决方案三个方面说明打开的文件过多问题解决之路)问题现象问题排查及定位解决方案问题现象系统正常启动之后运行一段时间再访问页面,部分页面会出现500错误页面。说明:因为我们系统是TCP消息后台驱动运行的,所以会等一段时间在访问。日志报错问题排查及定位看到报错时候,以为是报错的模块有问题,就去看代码排查,并未发现这个模块的问题,然后就把这个模块停用了,重启系统继续观察,发现问题并未消失,虽然不能说明本模块没问题,但是也说明了其他模块也有问题。于是继续排查问题。
2020-09-19 11:51:06
2618
原创 软件开发应用分层、每层的作用及各层之间调用关系
本文会围绕什么是应用分层,怎么分层,分层有什么好处这几个问题展开(一)什么是应用分层(二)怎么分层阿里巴巴Java开发手册推荐分层(一)什么是应用分层分层简单来说就是controller、service、dao。(二)怎么分层阿里巴巴Java开发手册推荐分层...
2020-05-19 20:35:46
3604
Spring Boot集成Spring Security,HTTP请求授权配置:包含匿名访问、允许访问、禁止访问配置
2024-11-22
SpringBoot集成easyexcel数据导入导出案例源码,解决多sheet页、字典转换、自适应样式等常见问题
2024-11-08
spring boot集成spring security前后分离项目分布式缓存认证流程最佳实现
2024-11-06
SpringBoot集成easyexcel数据导出案例源码,解决多sheet页、字典、自适应样式等常见问题
2024-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人