自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

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

原创 今天领证了,耶耶

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

2024-07-12 10:59:14 89

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

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

2024-06-25 10:41:18 88

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

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

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

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

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

2024-06-08 15:59:20 525

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

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

2024-06-04 19:02:31 231

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

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

2024-05-31 09:08:34 177

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

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

2024-05-30 11:27:45 81

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

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

2024-05-22 10:43:27 234

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

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

2024-05-20 11:17:36 186

原创 补充几个BaseMapper公用方法

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

2024-05-20 10:03:52 77

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

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

2024-05-11 15:09:03 201

原创 补充RequestAttribute通用工具类

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

2024-05-10 10:53:11 117

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

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

2024-05-07 10:32:07 122

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

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

2024-04-29 10:25:25 135

原创 重要的事说100遍

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

2024-04-19 12:27:37 409

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

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

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

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

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

2024-04-16 10:24:49 260

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

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

2024-04-15 16:23:30 237

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

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

2024-04-15 16:15:05 262

原创 工具类尽量自个写

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

2024-04-12 15:32:00 97

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

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

2024-04-12 09:33:59 417

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

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

2024-04-11 17:32:17 122

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

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

2024-04-03 17:22:49 444

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

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

2024-04-02 15:21:22 283

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

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

2024-03-20 12:46:03 237

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

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

2024-03-15 11:41:11 645

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

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

2024-03-11 11:24:28 330

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

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

2024-02-08 11:45:04 352

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

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

2024-02-05 10:48:17 356

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

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

2024-01-29 15:31:57 477

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

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

2024-01-26 09:40:22 418

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

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

2024-01-18 18:11:57 390

原创 几个读类路径下固定文件夹配置文件的工具类

【代码】几个读类路径下固定文件夹配置文件的工具类。

2024-01-15 15:57:59 371

原创 一些小小的代码重构心得

尽管看上去代码丑点,却是合理和可靠的。擅自修改他人代码是种很不礼貌的行为。代码重构一般发生了如下情形:bug多、扩展性能差、可修改性差、性能跟不上、项目开发阶段等。如果发现重构版代码有问题。明确旧有版每一个入参起什么作用、入参的json结构、入参的取值范围等要素。费了九牛二虎之力,结果重构只是完成了由一座s山到另一座s山的跨越。在不断的重构代码中,认识自已代码丑的地方,并加以改正。重构代码后,最好是做路径覆盖测试。功能一致、处理逻辑一致才是一次良好的重构。良好的咨询有利于保证重构的功能完整性。

2024-01-12 11:03:16 396

原创 一款上传图片压缩工具及压缩图片的时机说明

某些图片需作下压缩处理,以便某些页面图片列表使用压缩图,从而提高页面图片的加载速度,图片压缩的时机可选在上传图片的时候(新增时)或者读取图片的时候。(对已有图片作压缩,历史数据)。访问图片的方法是在普通图片的前面加上尺寸前缀。如:100x100-compress-aaaaaaaaaaaaaaaaaaaaaaaaaaaa.jpg。下面打开压缩图的办法是存在风险的,会导致图片无限增加。由于本项目是小圈子内的小群体使用。如果要用,需要把catch里面的代码删除或者对可压缩的尺寸作下限制。

2024-01-10 10:23:14 398

原创 文件服务器垃圾附件清理机制

本组件采用了一种非常笨而有效的思路,把各业务的表名和附件字段收集起来。然后查出哪些附件没有在文件信息表的,不存在就把该附件清掉。(主要的垃圾附件来源于上传后取消附件。测试数据删除了会务附件未删除,清表清库没清附件等操作。2.各业务表的附件字段采用反范式字段设计,比如 附件字段attachment_ids–>file_id1,file_id2,file_id3。在每个模块的resource目录的固定目录下建properties:,含本模块的哪张表有哪些字段是附件。

2024-01-09 16:53:56 366

原创 利用powerDesigner生成Html及Word

在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f0afaf399886417c81fd095cbfeacb35.png。7:点击右侧生成Htm 或 RTF,rtf可以转在word,修改样式做成公司标准文档。14:半成品展示:导出的rtf文件只能算是个半成品,不符合大部份的公司文档格式。13:显示表名及中文表名,format里面可以调整下字体格式什么的。4:选择左侧Table,并将它移动到右侧Section_1的下方。3:定义名字,选择简体中文,点击OK。

2024-01-09 09:53:17 551

原创 一些奇奇怪怪的日期工具类

项目由于在数据库设计层面,作了强制要求使用时间戳类型的日期类型,以便于不同国产数据库,mysql数据库之前保持良好的日期格式兼容性(不同格式的日期格式迁移很痛苦),以及在不同终端展示的日期格式有较好的弹性(后台返回long即可,不考虑转换问题)。同时,也带来了不小的缺点。较典型的就是日期区间查询问题。本工具类的大部分方法都是基于此背景而建。

2024-01-08 11:52:39 344

空空如也

空空如也

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

TA关注的人

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