自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 收藏
  • 关注

原创 Excel导入时,一个简单的匹配中文外键的方法

Excel导入时,外健往往只能用中文导入,在代码中,尝试用中文去匹配外建的id然后绑到要导入的数据中,这样一个,外健中文就必须和表里面的一模一样,但在实际中,导入的名称与表里存的名称总有少量字不同的差异,导致不能成功匹配到外健,因此,作了下面这个经验外健匹配工具,原理也简单,算一下目标匹配字符与需要匹配字符串之间匹配的百分比,该方法较简单,存在误判率。在不同的项目中有过验证。也可以提高几个经验数字来提高匹配的准确率。具体使用可以视导入数据的重要程度、敏感程度等不同场景来决定。

2024-09-23 18:14:11 43

原创 公用代码片码抽取需要不断的强化代码复用意识

【代码】公用代码片码抽取需要不断的强化代码复用意识。

2024-09-23 17:00:03 52

原创 集合去重时需要灵活的指定某一个字段的一个小工具

【代码】集合去重时需要灵活的指定某一个字段的一个小工具。

2024-09-19 11:48:54 217

原创 一种简单的防止JWT令牌多重登录机制

过程比较简单,还没发现能绕过去的方法。欢迎大佬指正BUG。

2024-09-12 10:39:21 381

原创 找到sql里面参数字段占位符的位置,方便对字段进行加密存储

【代码】分析sql,并找到sql里面,参数字段占位符的位置,方便对字段进行加密存储。

2024-08-21 17:31:26 304

原创 SQL关键字检测持续优化,太难了

【代码】SQL关键字检测优化持续优化,太难了。

2024-08-19 16:20:52 306

原创 一种低版本mybatisPlus SQL注入攻击解决办法

对https://blog.csdn.net/qq_37148232/article/details/135238622?spm=1001.2014.3001.5501作了下升级。使用切面对入参作全面检查。以解决低版本mybatisPlus所带来的sql注入问题。

2024-08-17 15:58:01 236

原创 单体应用内,一种模块与模块间解耦合的土办法

单体应用有时会有一些综合数据的模块, 比如考评、报表、综合查询等。在maven里面直接把jar包移过来会产生循环依赖以及后期导致依赖混乱的问题。对业务模块的独立性也不是很友好。后期维护性、模块可移植性都很差。因此,在组件包里面设置了一个数据提供者的接口。模块间通过该接口进行数据交互。模块只需编写自已的数据提供接口的实现类接口即可。而综合数据模块也能取到需要的模块数据。两个模块开发人员沟通供需数据就可以了。不用直接把模块的坐标依赖过来。也不要去依赖对方的类。单体项目中,模块的独立性得到了保障。

2024-07-29 10:14:03 346

原创 往MybatisPlus添加一个分组统计的通用方法

【代码】往MybatisPlus添加一个分组统计的通用方法。

2024-07-24 11:55:50 462

原创 一款好用的特殊字符处理工具

跟mybatis代码的时候,偶然发现的一款特殊字符处理工具java.lang.StringTokenizer。平常,我们看到的mybatis mapper.xml里面各种换行各种缩进,但日志文件里面的sql都是整整齐齐的。该工具能很好的去掉文件里面的/n/r,tab符,空格等。将字符串分成一小段一小段的,然后再拼接起来。下面是一个常用的应用场景,如下,读sql关键字。读到代码中后,使用StringTokenizer工具能将文件按行处理成一个关键字集合。分成一个sql集合,然后再用一个空格连起来。

2024-07-12 14:56:36 419 1

原创 今天领证了,耶耶

好久没有这种通过考试的喜悦心情了。

2024-07-12 10:59:14 103

原创 SpringBoot升级引发一个循环依赖支持问题

最近有个重要的项目要求使用带自定义表单的工作流。教材上,Flowable6.7.2要求匹配的SpringBoot版本是2.6.2.需要对项目的Boot版本从2.3releae升到2.6.2,其他还好。就是这个循环依赖,2.3支持循环依赖,2.6默认是不支持的。由于个别同学业务代码质量问题,导致必须要支持循环依赖(重构有风险),支持的话需要在Application.yml里添加配置 spring.main.allow-circular-references: true,问题就来了。现有项目已经有20多个。

2024-07-08 16:29:30 284

原创 超级开心的一天,哈哈

2024-06-25 10:41:18 104

原创 程序员要学会偷懒--excel转建表语句

如下需求:一个复杂的统战系统,用户信息字段总共有26个sheet,54张小表,没有什么复杂的业务逻辑,纯增删改查。领导交待了一句这周末完成,我?2:用拼音命名字段,1000多个字典,光起字段名就足够消耗你N多时间了。而用拼音,则可根据表内的中文名称作生成。这点用工具类是可以做到的。4 能多出很多摸鱼时间,这点是最重要的。那是初级小白才会做的事。2 能使用生成工具,生成表,建表,再拿表生成代码和文档,美美的节省大量时间。形成了一种整体的命名风格一致性。脚本生成后,只需做少量调整和添加少量外键即可。

2024-06-14 14:22:52 283 2

原创 一个公用的数据状态修改组件

灵感来自于一项重复的工作,下图中,这类禁用启用、审核通过不通过、设计成是什么状态否什么状态的场景很多。每一个都需要单独提供接口。调用示例,后端不用写任何代码,只需要告诉前端调哪个实体类和某个属性即可。

2024-06-08 15:59:20 535

原创 利用BeanFactoryPostProcessor让Bean提前被创建

起因是bean的一些初始化方法里面,查询数据的时话,用到了Spring的一些Bean,采用的是静态调用。而这些bean还没有被始始化出来。需要提前把这部份bean创建好。只需要在postProcessBeanFactory中提前获取bean并设置即可。

2024-06-04 19:02:31 248

原创 一种受限的SQL分组排序土办法

要求对表数据进行排序,表字段中,有国,省,市,县,镇五个字典,外加一个sort字段。sort不能超过1000000000,超过了就跨区间了。这点可以从页面限制填写的序号大小即可。强制将sort分成了国,省,市,县,镇5个区间。然后取区间数值排序即可。勉强满足了业务需求。涉及到一个分组排序问题,然后数据又是一个整体。只能倒序,默认序号为0,空值排到最后面。先排国,然后对国的sort进行排序。再排省,然后对省的sort进行排序。

2024-05-31 09:08:34 196

原创 简单读下SpringBoot run方法执行过程

【代码】简单读下SpringBoot run方法执行过程。

2024-05-30 11:27:45 93

原创 一个Map对象的统一命名规则

统一了一下map的命名规则,感觉顺眼多了,采用了xxxMapxxx的命名方式,表示xxx映射到xxx。即使写成这样也能准确知道map所要表达的映射关系。

2024-05-22 10:43:27 275

原创 双缓存机制的简单应用

/ 如果单个接口的数据达到几行几千行。那么单个接口访问redis还不如在代码循环外查出缓存目标,再循环设置。

2024-05-20 11:17:36 213

原创 补充几个BaseMapper公用方法

用法如下,喜欢搓麻绳的朋友可以试试。

2024-05-20 10:03:52 113

原创 一种简单的小报表本地缓存方案

适应如下场景:报表数据不多,可能就十多行。参数也固定,实时性要求不高,隔那么半小时刷新一次,查询性能要求高,给领导看的,要求很快。

2024-05-11 15:09:03 223

原创 补充RequestAttribute通用工具类

补充https://blog.csdn.net/qq_37148232/article/details/138303873?

2024-05-10 10:53:11 130

原创 一条蛮实用的命令,查看内存里面存活的对象数

jmap -histo:live 7|grep com.xxx|awk ‘$2>100’

2024-05-07 10:32:07 149

原创 用request的attribute代替ThreadLocal的使用

感觉还可以,不用老操心threadLocal的clean问题。attribute能够转运的对象可以是多个,不像ThreadLocal一样受泛型控制,只能共享单个类型的单个对象。对于单线程内共享一些对象还蛮友好的。

2024-04-29 10:25:25 157

原创 重要的事说100遍

直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!

2024-04-19 12:27:37 417

原创 跟风Spring的context继承风格写的一个业务处理器,无聊

忽然记起spring的context的N重继承风格,一个抽象类实现一部份功能,想从那重改复写就从哪重开始。脑子一抽,也在业务代码里面玩了下。学得是有模有样,感觉就是越搞越复杂。产品中一重抽象实现一部分功能。

2024-04-16 17:03:58 226 1

原创 模仿SpringSecurity配置文件的写法对mybatisPlus查询方法的改造

使用mybatisPlus查询数据的传统流程是:Autowired mapper对象。new Wrapper 一通乱set Wrapper ,select xxx。但实际开发中,还有很大的改进空间,一是一些脆弱的参数设置有多处,得不到妥善维护,二是代码编写丑陋难看。因此,本人模仿SpringSecurity的配置文件的写法,对一些使用频繁查询对象做了点改动,将一些脆弱的参数设置全部提取到构建器中,保证项目内,某参数的设置方法只有唯一的一处。有利提高代码可维护性和复用性能。用起来也感觉很舒服。

2024-04-16 10:24:49 265

原创 利用BeanFactoryPostProcessor接口,批量将某一类型的bean设置成懒加载

实际中,Logic由于数量太多。可能会出现老年代内存占用过高。如果设置成懒加载,能有效的减少内存占用。但由于已有数千个实现类。不可能逐个实现类去修改。利用BeanFactoryPostProcessor的执行时间是在容器业务bean初始化之前的特点,在其实现方法里面修改bean为懒加载。对于所有logic设置延迟加载,这样偶尔使用的时候再加载,不必要从一开始就让该所有数千个实现类全部加载到内存中,占用资源。

2024-04-15 16:23:30 249

原创 Spring容器初始化之前,利用SpringBoot监听器做一些数据库方面的检查

3:Spring容器初始化时,里面的ApplicationListener,ApplicationRunner,初始化方法等有部分实现是异步预热缓存数据。如果不前置检查数据表结构,很容易报sql异常。当产品有更新表结构时,项目发布时,很容易出现该问题。之所以把数据库的连接、结构、最小初始化等检查项放到SpringBoot监听器而不是Spring容器的初始过程。1:SpringBoot监听器是SpringBoot初始化过程中,最先被执行的那一批周期函数。2:数据库连接测试能很快的获得结果。

2024-04-15 16:15:05 283

原创 工具类尽量自个写

工具类尽量自个写,少用第三方的,无他,顺手耳。

2024-04-12 15:32:00 106

原创 对策略设计模式的一个小扩展

在基于产品的二次开发过程中,有时需要对产品项目中预制的某一个策略实现作些修改。但又不想修改策略的路由信息。以免调用方需要更新参数或修改代码等。基于此,对产品的策略接口作了一个小扩展,加上了一个可替换相同策略的boolean函数。效果还可以,可通过继承或新写实现的方式,将默认的策略替换掉。而调用方什么都不用修改。

2024-04-12 09:33:59 424

原创 局部适配器在产品和二次开发中的应用

局部适配器这个说法是本人从产品项目中总结出的一种叫法。原理是在产品项目的某一项业务处理时,嵌入抽象方法和默认实现,以便产品作二次开发时,不用迁分支或重写就适配修改产品工程的局部逻辑。该方法使用原理很简单,但好处明显,在一些频繁小修小改的固定场合,使用该方案具备很高的灵活度和可修改性。业务相对固定的话,可用来代替模块拉分支操作。

2024-04-11 17:32:17 129

原创 一些数据迁移工作心得

治理策略有清洗、转换、补默认值、流程状态匹配、数据拆分、数据合并、提高范式、消除冲突、策略匹配、加密策略不一致等方面。转换方面,比如数据类型转换,标识转换,y-1,n-0,男-1,女-2,补默认值方面,数据移到新系统后,设置合理的,原数据没有的默认值等。抽样检测一般针对单表数据的数据完整度,参考的是旧系统的数据条数、数据状态、数据内容等。比如只迁移哪几个模块的数据、只迁xxx年以后的数据、只迁状态为xxx,xxx的数据等。在新系统旧数据使用的前期,收集客户反馈的数据问题是一项非常有必要的工作。

2024-04-03 17:22:49 477

原创 在产品作二次开发时,添加字段的解决方案

2.动态参数,后置更新方案,原理就是前端任一传额外参数,然后将参数转为下划线命名,优点是命名规范,按需建字段。缺点时占表空间(一般可忽略),字段命名不可识别,上面截图采用了明星的名字命名。这是利用了mybatisPlus的特点,单张表,多个mapper接口进行部份字段管理。5、直接修改产品实体类添加字段,此类一般是较有普遍性的一些字段。公司的产品线孵化项目时,经常性的面临实体类加字段的问题,为此,项目中采用了如下方案来解决。1,备用字段,产品中,项目继承一个扩展的备用字段。用于项目灵活添加字段。

2024-04-02 15:21:22 305

原创 一种仿物化视图技术的报表查询优化方案

在报表结果集表中的数据就那么几行几十行。如果报表实时性要求不高。

2024-03-20 12:46:03 248

原创 系统重构后,对项目定制开发的兼容性问题

通过该方案的实施,大大节省了旧系统改造升级的开发周期。在公司其他同场景的其他项目中,得到了广泛的推广。取得了良好的经济效益。

2024-03-15 11:41:11 654

原创 一种缩减设计模式类数量的代码风格

传统策略、装饰,适配器模式中,一般包含了一个整合各实现类的集合类,方便外部调用,比如SpringSecurity里面的CompositeTokenGranter,ProviderManager等。最新在写业务适配器时,发用在接口里面用静态方法代表缩合调用类还蛮方便的。比写一个ExcelWriterDescAdaptors还是要方便点,一个接口把活干完了。

2024-03-11 11:24:28 335

原创 一个很冷门的java基础知识-跳循环

循环标签—从内循环断开到外循环或从内循环跳出外循环,有时一些特殊场合还是能用上的,节省不少循环次数。

2024-02-08 11:45:04 361

原创 在接口权限方案的基础上添加的一种快速配置机制

办法很简单,但大大提高了接口权限的配置效率。3-4个小时就能全部配置完成。而且项目与项目之间是可复制的。

2024-02-05 10:48:17 366

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除