- 博客(148)
- 收藏
- 关注
原创 java冷门基础知识--package-info
方法,控制类和模块级。在这个文件上加个@Permission(“admin”),表示整个模块都需要管理员权限才能访问。等于是起了一个模块名称。有时需要记录下访问接口是属于哪个模块的。类似日志、数据分类、生成某些模块数据之类的。在某一个包下创建一个package-info.java文件,名称是固定的。
2024-10-23 17:34:52 136
原创 debug的一些个人心得
spring容器初化过程,基本都在下面这个方法内:org.springframework.context.support.AbstractApplicationContext#refresh,关注的点有配置加载,各类工厂前置和前置处理器,监听器,bean的前置和后置处理,Aware接口、createBean等。这个最简单的了,一般也就进入方法F6,跳到下一行F5,跳过到下一断点F8,按钮的按法有一定的经验技巧,在最可能出现BUG的地方可以一行行跳,检查过敏感代码后,忽略非敏感代码,跳到下一断点等。
2024-10-09 18:02:32 337
原创 用来deploy jar包的bat脚本
call mvn deploy:deploy-file -DgroupId=%groupId% -DartifactId=%afId% -Dversion=%version% -Dpackaging=jar -Dfile=%~dp0%jarName% -Durl=http://纟x/repository/maven-releases/ -DrepositoryId=zysoft-releases。把jar包放在脚本同级目录,修改几个set参数,然后双击使用,没啥复杂的。echo “jar包上传结束”
2024-10-09 17:21:46 222
原创 Excel导入时,一个简单的匹配中文外键的方法
Excel导入时,外健往往只能用中文导入,在代码中,尝试用中文去匹配外建的id然后绑到要导入的数据中,这样一个,外健中文就必须和表里面的一模一样,但在实际中,导入的名称与表里存的名称总有少量字不同的差异,导致不能成功匹配到外健,因此,作了下面这个经验外健匹配工具,原理也简单,算一下目标匹配字符与需要匹配字符串之间匹配的百分比,该方法较简单,存在误判率。在不同的项目中有过验证。也可以提高几个经验数字来提高匹配的准确率。具体使用可以视导入数据的重要程度、敏感程度等不同场景来决定。
2024-09-23 18:14:11 146
原创 一种低版本mybatisPlus SQL注入攻击解决办法
对https://blog.csdn.net/qq_37148232/article/details/135238622?spm=1001.2014.3001.5501作了下升级。使用切面对入参作全面检查。以解决低版本mybatisPlus所带来的sql注入问题。
2024-08-17 15:58:01 279
原创 单体应用内,一种模块与模块间解耦合的土办法
单体应用有时会有一些综合数据的模块, 比如考评、报表、综合查询等。在maven里面直接把jar包移过来会产生循环依赖以及后期导致依赖混乱的问题。对业务模块的独立性也不是很友好。后期维护性、模块可移植性都很差。因此,在组件包里面设置了一个数据提供者的接口。模块间通过该接口进行数据交互。模块只需编写自已的数据提供接口的实现类接口即可。而综合数据模块也能取到需要的模块数据。两个模块开发人员沟通供需数据就可以了。不用直接把模块的坐标依赖过来。也不要去依赖对方的类。单体项目中,模块的独立性得到了保障。
2024-07-29 10:14:03 365
原创 一款好用的特殊字符处理工具
跟mybatis代码的时候,偶然发现的一款特殊字符处理工具java.lang.StringTokenizer。平常,我们看到的mybatis mapper.xml里面各种换行各种缩进,但日志文件里面的sql都是整整齐齐的。该工具能很好的去掉文件里面的/n/r,tab符,空格等。将字符串分成一小段一小段的,然后再拼接起来。下面是一个常用的应用场景,如下,读sql关键字。读到代码中后,使用StringTokenizer工具能将文件按行处理成一个关键字集合。分成一个sql集合,然后再用一个空格连起来。
2024-07-12 14:56:36 453 1
原创 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 300
原创 程序员要学会偷懒--excel转建表语句
如下需求:一个复杂的统战系统,用户信息字段总共有26个sheet,54张小表,没有什么复杂的业务逻辑,纯增删改查。领导交待了一句这周末完成,我?2:用拼音命名字段,1000多个字典,光起字段名就足够消耗你N多时间了。而用拼音,则可根据表内的中文名称作生成。这点用工具类是可以做到的。4 能多出很多摸鱼时间,这点是最重要的。那是初级小白才会做的事。2 能使用生成工具,生成表,建表,再拿表生成代码和文档,美美的节省大量时间。形成了一种整体的命名风格一致性。脚本生成后,只需做少量调整和添加少量外键即可。
2024-06-14 14:22:52 355 2
原创 一个公用的数据状态修改组件
灵感来自于一项重复的工作,下图中,这类禁用启用、审核通过不通过、设计成是什么状态否什么状态的场景很多。每一个都需要单独提供接口。调用示例,后端不用写任何代码,只需要告诉前端调哪个实体类和某个属性即可。
2024-06-08 15:59:20 544
原创 利用BeanFactoryPostProcessor让Bean提前被创建
起因是bean的一些初始化方法里面,查询数据的时话,用到了Spring的一些Bean,采用的是静态调用。而这些bean还没有被始始化出来。需要提前把这部份bean创建好。只需要在postProcessBeanFactory中提前获取bean并设置即可。
2024-06-04 19:02:31 268
原创 一种受限的SQL分组排序土办法
要求对表数据进行排序,表字段中,有国,省,市,县,镇五个字典,外加一个sort字段。sort不能超过1000000000,超过了就跨区间了。这点可以从页面限制填写的序号大小即可。强制将sort分成了国,省,市,县,镇5个区间。然后取区间数值排序即可。勉强满足了业务需求。涉及到一个分组排序问题,然后数据又是一个整体。只能倒序,默认序号为0,空值排到最后面。先排国,然后对国的sort进行排序。再排省,然后对省的sort进行排序。
2024-05-31 09:08:34 207
原创 一个Map对象的统一命名规则
统一了一下map的命名规则,感觉顺眼多了,采用了xxxMapxxx的命名方式,表示xxx映射到xxx。即使写成这样也能准确知道map所要表达的映射关系。
2024-05-22 10:43:27 316
原创 一种简单的小报表本地缓存方案
适应如下场景:报表数据不多,可能就十多行。参数也固定,实时性要求不高,隔那么半小时刷新一次,查询性能要求高,给领导看的,要求很快。
2024-05-11 15:09:03 237
原创 补充RequestAttribute通用工具类
补充https://blog.csdn.net/qq_37148232/article/details/138303873?
2024-05-10 10:53:11 137
原创 用request的attribute代替ThreadLocal的使用
感觉还可以,不用老操心threadLocal的clean问题。attribute能够转运的对象可以是多个,不像ThreadLocal一样受泛型控制,只能共享单个类型的单个对象。对于单线程内共享一些对象还蛮友好的。
2024-04-29 10:25:25 171
原创 重要的事说100遍
直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!直接用SQL大面积修改生产数据库数据先备份!
2024-04-19 12:27:37 422
原创 跟风Spring的context继承风格写的一个业务处理器,无聊
忽然记起spring的context的N重继承风格,一个抽象类实现一部份功能,想从那重改复写就从哪重开始。脑子一抽,也在业务代码里面玩了下。学得是有模有样,感觉就是越搞越复杂。产品中一重抽象实现一部分功能。
2024-04-16 17:03:58 234 1
原创 模仿SpringSecurity配置文件的写法对mybatisPlus查询方法的改造
使用mybatisPlus查询数据的传统流程是:Autowired mapper对象。new Wrapper 一通乱set Wrapper ,select xxx。但实际开发中,还有很大的改进空间,一是一些脆弱的参数设置有多处,得不到妥善维护,二是代码编写丑陋难看。因此,本人模仿SpringSecurity的配置文件的写法,对一些使用频繁查询对象做了点改动,将一些脆弱的参数设置全部提取到构建器中,保证项目内,某参数的设置方法只有唯一的一处。有利提高代码可维护性和复用性能。用起来也感觉很舒服。
2024-04-16 10:24:49 278
原创 利用BeanFactoryPostProcessor接口,批量将某一类型的bean设置成懒加载
实际中,Logic由于数量太多。可能会出现老年代内存占用过高。如果设置成懒加载,能有效的减少内存占用。但由于已有数千个实现类。不可能逐个实现类去修改。利用BeanFactoryPostProcessor的执行时间是在容器业务bean初始化之前的特点,在其实现方法里面修改bean为懒加载。对于所有logic设置延迟加载,这样偶尔使用的时候再加载,不必要从一开始就让该所有数千个实现类全部加载到内存中,占用资源。
2024-04-15 16:23:30 257
原创 Spring容器初始化之前,利用SpringBoot监听器做一些数据库方面的检查
3:Spring容器初始化时,里面的ApplicationListener,ApplicationRunner,初始化方法等有部分实现是异步预热缓存数据。如果不前置检查数据表结构,很容易报sql异常。当产品有更新表结构时,项目发布时,很容易出现该问题。之所以把数据库的连接、结构、最小初始化等检查项放到SpringBoot监听器而不是Spring容器的初始过程。1:SpringBoot监听器是SpringBoot初始化过程中,最先被执行的那一批周期函数。2:数据库连接测试能很快的获得结果。
2024-04-15 16:15:05 295
原创 对策略设计模式的一个小扩展
在基于产品的二次开发过程中,有时需要对产品项目中预制的某一个策略实现作些修改。但又不想修改策略的路由信息。以免调用方需要更新参数或修改代码等。基于此,对产品的策略接口作了一个小扩展,加上了一个可替换相同策略的boolean函数。效果还可以,可通过继承或新写实现的方式,将默认的策略替换掉。而调用方什么都不用修改。
2024-04-12 09:33:59 431
原创 局部适配器在产品和二次开发中的应用
局部适配器这个说法是本人从产品项目中总结出的一种叫法。原理是在产品项目的某一项业务处理时,嵌入抽象方法和默认实现,以便产品作二次开发时,不用迁分支或重写就适配修改产品工程的局部逻辑。该方法使用原理很简单,但好处明显,在一些频繁小修小改的固定场合,使用该方案具备很高的灵活度和可修改性。业务相对固定的话,可用来代替模块拉分支操作。
2024-04-11 17:32:17 139
原创 一些数据迁移工作心得
治理策略有清洗、转换、补默认值、流程状态匹配、数据拆分、数据合并、提高范式、消除冲突、策略匹配、加密策略不一致等方面。转换方面,比如数据类型转换,标识转换,y-1,n-0,男-1,女-2,补默认值方面,数据移到新系统后,设置合理的,原数据没有的默认值等。抽样检测一般针对单表数据的数据完整度,参考的是旧系统的数据条数、数据状态、数据内容等。比如只迁移哪几个模块的数据、只迁xxx年以后的数据、只迁状态为xxx,xxx的数据等。在新系统旧数据使用的前期,收集客户反馈的数据问题是一项非常有必要的工作。
2024-04-03 17:22:49 519
原创 在产品作二次开发时,添加字段的解决方案
2.动态参数,后置更新方案,原理就是前端任一传额外参数,然后将参数转为下划线命名,优点是命名规范,按需建字段。缺点时占表空间(一般可忽略),字段命名不可识别,上面截图采用了明星的名字命名。这是利用了mybatisPlus的特点,单张表,多个mapper接口进行部份字段管理。5、直接修改产品实体类添加字段,此类一般是较有普遍性的一些字段。公司的产品线孵化项目时,经常性的面临实体类加字段的问题,为此,项目中采用了如下方案来解决。1,备用字段,产品中,项目继承一个扩展的备用字段。用于项目灵活添加字段。
2024-04-02 15:21:22 320
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人