自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-09-12 10:39:21 375

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

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

2024-08-21 17:31:26 303

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

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

2024-08-19 16:20:52 304

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

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

2024-08-17 15:58:01 234

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

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

2024-07-29 10:14:03 343

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

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

2024-07-24 11:55:50 442

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

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

2024-07-12 14:56:36 414 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 282

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

2024-06-25 10:41:18 103

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

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

2024-06-14 14:22:52 276 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 92

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

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

2024-05-22 10:43:27 270

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

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

2024-05-20 11:17:36 210

原创 补充几个BaseMapper公用方法

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

2024-05-20 10:03:52 112

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

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

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 155

原创 重要的事说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 247

原创 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 334

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

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

2024-02-08 11:45:04 360

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

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

2024-02-05 10:48:17 366

原创 用httpd服务搭建公司公用的资源下载服务器

最新产品有些新发布的项目版本下载资源。过往是存在git上面的。但由于版本号、资源文件过大、资源分类等因素。因此,想到以前到官网下载第三方jar包时,直接打开Linux目录的方法。查了下,用httpd可以作到。在默认目录/var/www/html创建index.html文件:这里可以按兴趣玩点花活。5.在/var/www/html下创建任一目录并上传资源。6.跑微信群发布下载地址,装个小B。1.安装并运行httpd。

2024-01-29 15:31:57 508 1

原创 一套不那么成熟的业务数据查询缓存方案

3、更新时,redis擦除数据量较小的key-ids,本地将修改或新增的数据刷新到本地缓存。本地缓存更新数据只需在很小的范围内更新。2、普通的将vos结果缓存到redis在查询数据较大和频率擦除更新的情况下,查询性能得不到太大的提升。2、取数据时,先去redis取到vo的所有键。redis无需缓存vo大对象,更新时也不需要操作vo。3、表数据并非海量,只是关联的表和字段较多,字段内容较多,造成数据包大和查询慢。1、项目启动时,将全部vos集缓存到本地。将vo的唯一键缓存到reids。代码复杂,代码量较大。

2024-01-26 09:40:22 424

原创 模拟StopWatch改写的一款耗时调试工具

StopWatch在单个文件的单个方法中确时还蛮好用的,但跨多个文件,多个方法的同一线程内调试就有明显的不舒服。一是要建立ThreadLocal共享StopWatch的实例。二是StopWatch的start和stop必须形成闭合。比如要查看大方法执行时间,还要查看大方法里面的某个调用的执行时间。3就是StopWatch以纳秒为单位,阅读不舒服(非高并发网站,没那么高的要求,毫秒即可),因此,做了这款调试工作。调试中,只要确定费时的代码在哪个小区间,一般有经验的话能很快定位到问题代码。

2024-01-18 18:11:57 397

空空如也

空空如也

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

TA关注的人

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