自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 策略枚举的用法七:实体转换

记录记录,没啥好总结的。

2023-03-01 17:54:30 407

原创 记录 PowerMock 私有方法遇到的坑

网上很难找到的错误解决方法,再有参数的共有方法中调用私有的传参方法时,一致提示找不到Moc看方法。入参的参数需要与实际运行时的一致才可以。

2023-02-28 19:03:20 612

原创 基于Mybatis-Plus的数据权限框架

近期开发使用的框架基本上都是springboot + Mybatis-plus 方便,快速。而且差不多都是单表查询,很少使用关联表。经常会遇到需要做数据权限过滤的查询,每次都要写SQL,然后使用in的方式。非常麻烦。所以研究了一下Mybatis-plus的进阶使用。可以通过自定义SQL解析器,自定义SQL内容。使用该方式 + 切面 的方式,实现自动添加数据权限的过滤方式。注:我自己的工程的权限框架为shiro,可以通过修改,配置适配自己框架如果有额外的自定义SQL,则可以添加。/**

2022-12-13 16:34:21 2186

原创 数据比较器,对比数据前后变化细节

在开发的过程中,有时候需要对数据进行比对,来判断是否发生变化。如果一个字段一个字段比较,就太麻烦了。所以通过整合注解与反射的方式,实现一个通用的实体数据比较框架。总体结构如下:不是基本类型是,必须要有该注解2) 主键注解,校验数据是否一致3) 属性描述注解4) 顺序注解5) 排除注解,不进行比较6) 自定义比较器如果有特殊比较方式,则自行定义比较器2、自定义比较器1) 比较器接口2) 默认比较器实现3、异常类4、枚举定义1) 变化类型:新增,修改,删除,无变化等四种情

2022-12-06 10:50:46 1150 3

原创 请求与响应参数日志记录框架

实际开发中,如果项目权限管控比较严格,自己又上不去服务器查看日志文件,怎么办?而且日志文件查看也比较繁琐。就随便搞一个数据库记录请求参数与响应数据的日志框架。方便自己排查问题排查问题。自己项目的日子记录,自己查看起来方便,区别于整体项目框架的日志。方便自己在没有权限的时候排查问题,开个小后门。有条件的话,自己写一个前端,然后做一下权限控制。单利单利工厂模式。

2022-09-05 19:19:33 670

原创 策略枚举的用法六:内容归类

在开发过程中,我们有时候会遇到一些业务性质的枚举值,这时候还需要对性质进行分类判断,传统的做法,就是写`if`,然后用 `||`来连接判断。这时候,如果新加入一个性质的话,就会修改到比较多的地方,而且不是很直观。要实现功能的方式有很多种,选择一种复合自身实际情况的即可。强行说一下优点吧,提高代码量、水代码。......

2022-08-30 20:32:53 117

原创 将提交、保存、校验复杂逻辑解耦的插件框架

在平时的业务开发过程中,有时候需要在保存完主表信息后,需要同步更新其他表,或者调用外组件更新等,并且还有时候需要回调操作。正常开发的时候,就是简单快速的在操作后面, 引入其他service,然后编写逻辑即可。但是这样会导致代码耦合度高。如果有需求变更,就比较难以应对与扩展。但是也有人说了,我就一种情况写一个方法就好了。确实是可以,那就不用往下看了。一个简单的框架,就能够实现部分功能的解耦。并且可以类推到其他场景中。...

2022-08-03 10:23:05 239

原创 通过swagger注解,生成YAPI文档

在开发过程中,需要与前端核对接口,并且形成落地文档。这时候就可以有多个选择,其中后端常见的与代码绑定的swagger就是首选。但是如果swagger不能够开放给外组件查看的情况下,YApi接口管理平台也是一个不错的选择。并且能够通过添加备注的方式,对接口进一步说明。yapi有提供从swagger导入的接口,这里就不再说明。为什么会有这个工具的诞生呢,肯定是因为方便的东西有一定的局限性(才不是因为无聊瞎搞的)代码是简单的代码,但是可以加深对策略枚举实际应用的理解,也是不错滴。......

2022-07-29 14:51:34 759

原创 BigDecimal 的流式计算工具

例如:在项目开发过程中,存在一个,但是运算符的计算逻辑,并且存在多种数据类型时,使用BigDecimal来进行计算时,又需要一直创建。所以就产生了改工具类。对多种类型进行封装,使用建造者模式进行快速处理,达到代码简洁的效果。本工具依赖 工具包的NumberUtil,算的对其的一种扩展。因为这个类只能实现单一的多个元素计算,无法实现链式的计算。代码中存在大量的方法重载,以满足不同的需求。可以根据具体业务,再自行扩展新的重载。如果不需要 NumberUtil 的依赖,可以自行将其替换掉即可。........

2022-06-09 16:42:47 904

原创 自动生成测试类,并填充测试数据(一)

自动生成测试类,并填充测试数据(一)一 说明二 设计思路三 上代码1 工具类 GenStrUtil2 生成类 GenServiceTest四 结语五 感谢关注一 说明在日常开发过程中,需要对功能做单元测试,还需要制造测试数据。在测试的过程中,造数是比较蛋疼的事情,并且需要编写大量的set方法。所以就有感制作一个自动生成测试用例的代码。二 设计思路内容其实很简单,就是通过固定的字符串拼接 + 反射机制来实现功能。其中有几个需要注意的地方是,判断基本数据类型,List,Map,存在泛型的类,这些是否有.

2022-05-31 17:09:18 739

原创 实现数据字典的缓存、加载、刷新和映射的集成框架

前言在业务开发的过程中,总是会遇到字典打交道。比如说:性别,类型,状态等字段,都可以归纳为字典的范围。字典的组成分成:字典类型、字典数据。其中 字典数据 归属于一类的 字典类型。可以通过 字典类型 获取 字典数据。例如开头提到的,性别就为字典类型,1-男;0-女;就为字典数据。其中“1”和“0”为代码值,“男”和“女”为显示值。数据库中存放代码值,页面上展示显示值。字典的用途:前端下拉框列表展示时,需要将代码值转换成显示值逻辑条件判断(前后端都需要)数据范围限制在这里,我暂时将字典的来

2022-03-02 10:28:11 1959 2

原创 Jackson 序列化字典字段属性(升级)

Jackson 序列化字典字段属性(升级)前言正文1. 返回类型枚举 DictReEnum2.注解改造 @Dict3.字典序列号对象 DictSerializer4.内省器改造5.返回对象改造测试结果总结前言回看 Jackson 序列号字典字段属性 内容的时候发现,业务开发过程中,不一定需要转换成完整的对象返回,有时候单纯的只是想要看显示值而已,不关心码值。所有有了升级的想法。可以支持多种不同的返回类型。既然是多种,又是不同。很自然的就想到的策略模式,然后就用上了策略枚举。有关策略枚举的内容,有兴趣

2022-02-07 16:05:20 724

原创 策略枚举的用法五:枚举方法

策略枚举的用法四:枚举方法说明场景1.枚举2.计算服务3.测试类4.结果优点缺点说明使用枚举 + SpringBeanUtil 实现对类型的实现进行一个代码归档。方便维护与排查问题。场景在项目中, 总会遇到很多计算规则的内容,或者校验规则。这时候我们的实现方式可能会将创建一个规则类,将所有的规则都放在这个类里面。或者规则包,对规则进行归档,然后放在这个规则包中。但是在阅读的时候,就会比较麻烦。这里提供一个使用枚举进行归档的方式。1.枚举import cn.hutool.extra.spring.

2022-02-07 14:11:12 326

原创 Jackson 序列化字典字段属性

Jackson 序列化字典字段属性前言场景正文一 添加配置二 添加项目内省器三 自定义序列化规则四 字典缓存工具五 测试对象六 测试接口七 测试结果总结前言在前后端分离的项目中,存在很多字段是下拉框选项的情况。比如:性别字段代码值value显示值label1男0女2其他在数据库中,存的是代码值,前端显示的时候,需要显示值。这时候,在返回的时候,就需要做一次代码转换。(为什么不是前端自己转换?为了统一管理和方便变更。)场景字典字段为空,则不转换。一

2022-01-29 16:25:01 1290

原创 世界弹射物语 模拟抽卡

世界弹射物语 模拟抽卡前言一 框架介绍角色对象二 准备数据三 绘制页面四 编写逻辑1.抽取角色2. 脑溢血动画3. 点击单抽与十连事件4.页面展示五 总结前言由于最近玩到喜欢的游戏【世界弹射物语】(国服)。并且抽卡太非。所以萌生了自己写一个模拟抽卡的小玩意。(半吊子html和js)在弹射的抽卡中,最有趣的就是抽卡脑溢血画面。也简单的在模拟中体现。感谢 弹射物语磁力 提供的素材。一 框架介绍由于只是一个简单的抽卡模拟,所以框架也相对简单很多。世界弹射物语│├─js 存放 逻辑与数据│

2022-01-27 17:15:16 4790 1

原创 EasyClick 笔记

EasyClick 笔记

2022-01-06 15:38:55 900

原创 java 业务分层设计

java分层设计前言项目结构结构说明总结前言在业务开发过程中,普遍的分层为 controller、service、serviceImpl、mapper或dao、entity,等几层。但是在业务复杂度相对比较高的情况下。serviceImpl层中的逻辑会非常复杂,并且冗长。所以在参考了其他的分层设计,并且根据自己的经验。对分层与职责进一步细化,项目与模块,根据实际情况进行取舍。公共组件和框架组件,这里不分析。项目结构XXX项目│├─doc 项目文档│ │ │ └─sql

2021-10-05 18:10:07 1277

原创 策略枚举的用法四:枚举工厂

策略枚举的用法四:枚举工厂说明工厂模式改造优点缺点优化使用结果说明本文只对策略枚举可以使用的场景进行说明,不做其他介绍。提供额外的实现思路。工厂模式普通的工厂模式,都有一个基本的抽象类或接口,然后具体的实现类。并且由一个工厂类来进行返回实现类。参考:工厂模式改造这里对参考的代码进行改造:Shape.java、Rectangle.java、Square.java、Circle.java,这四个类不变。在ShapeFactory.java类中,存在一个类型:“shapeType”。这个就能

2021-10-05 16:26:21 635

原创 JAVA数独解题(十一):数链法(数块法)

JAVA数独解题(十一):数链法(数块法)说明图片算法代码CalcEnumSuLianKuaiCalcSudoUtil测试数据输出结果总结代码详情说明参考文章:数独高手必备:把数串法推广到数块法(20年6月2日)如果某列中,数字n只有3个空白格B1,B2,B3,并且其中有两个在同一个宫内,另外一个在不同宫内,同时存在另外一个列中,数字n只有两个空白格B4,B5,且不在同一宫内,并且不在B1B2B3宫内。并且满足B1,B2,B3与B4,B5能够形成矩形。则在有两个空白格的宫内与矩形边共同作用的区域,不能

2021-06-23 17:05:28 1039 2

原创 JAVA数独解题(十):数链法(数串、多宝鱼)

JAVA数独解题(十):数链法(数串、丁字))说明图片算法代码CalcEnumXYZwingCalcSudoUtil测试数据输出结果总结代码详情说明参考文章:数独高手必备的两个技巧(20年2月14日)图片算法代码CalcEnum在 绑定算法 中添加 属性XYZwingCalcSudoUtil测试数据在 DataConstant 中添加public static final String OTHER_X_WING_01 = "00030010050040109000102

2021-06-22 16:54:57 695

原创 JAVA数独解题(九):数链法(数串、垂直)

JAVA数独解题(九):数链法(数串、垂直)说明图片算法代码CalcEnumXYZwingCalcSudoUtil测试数据输出结果总结代码详情说明参考文章:数独高级技巧:数串法的原理与应用详解(19年12月27日)图片算法代码CalcEnum在 绑定算法 中添加 属性XYZwingCalcSudoUtil测试数据在 DataConstant 中添加public static final String OTHER_X_WING_01 = "0003001005004010

2021-06-21 16:12:08 551

原创 JAVA数独解题(八):数链法(梯形、摩天楼)

JAVA数独解题(八):数链法(梯形)说明图片算法代码CalcEnumSuLianTrapezoidCalcSudoUtil测试数据输出结果总结代码详情说明参考文章:掌握这个技巧,才可能成为数独高手(20年1月4日)如下图所示,如果同一行中,数字n只有两个空白格B1,B2可以填写,并且空白格不在同一宫中。且存在另外一行,也只有两个空白格B3,B4可以填写数字n,也不在同一宫中。有两个空白格所在的列相同(B1与B3,或B2与B4)【因为都是从左往右查找】,另外两个点的宫在同一列中。则形成梯形数链。可以排

2021-06-18 17:06:36 735

原创 JAVA数独解题(七):XYZ-wing

JAVA数独解题(七):XYZ-wing说明图片算法代码CalcEnumXYZwingCalcSudoUtil测试数据输出结果总结代码详情说明参考文章:数独高级技巧:XYZ-wing法(20年5月26日)图片如下图所示,若第1行第3列中的数只可能是a,b,c,且第1行第4列中的数只可能是a,c,且第3行第3列中的数只可能是b,c,则第1行第1列和第1行第2列不是c。算法代码CalcEnum在 绑定算法 中添加 属性XYZwingCalcSudoUtil测试数据在 DataC

2021-06-18 10:09:28 1735

原创 JAVA数独解题(六):XY-wing

JAVA数独解题(六):XY-wing说明图片算法代码CalcEnumXYwingCalcYXwingCalcSudoUtil测试数据输出结果总结代码详情说明参考文章:数独技巧XY-wing详细介绍(19年11月26日)图片算法代码CalcEnum在 绑定算法 中添加 属性XYwingCalcYXwingCalcSudoUtil 测试数据在 DataConstant 中添加public static final String OTHER_X_WING_01 =

2021-06-17 17:23:01 2240

原创 JAVA数独解题(五):X-wing(矩阵法)

JAVA数独解题(五):X-wing(矩阵法)说明图片算法代码CalcEnumXwingCalcYwingCalcSudoUtil输出结果总结代码详情说明参考文章:假设同一列中,一个数字n只能有两个空白格可以填写,并且不在同一宫中。同时存在这个数字n在另外一列由相同的情况,这时,如果四个空白格形成一个矩形。则可以排除顶点所在行的其他空白格中的候选值n。同理衍生到行的情况,这里代码写作Y-wing。图片算法代码CalcEnum在 绑定算法 中添加 属性package com.suduku.

2021-06-01 20:23:39 4281

原创 JAVA数独解题(四):数对法

JAVA数独解题(四):数对法说明图片算法代码绑定算法class输出结果总结代码详情说明数对,通俗讲就是一对数(两个数字,两个单元格)图片算法代码绑定算法class输出结果总结代码详情代码地址...

2021-05-27 19:33:41 1258

原创 JAVA数独解题(三):单宫行列法

JAVA数独解题(三):单宫行列法说明图片算法代码输出结果绑定算法CalcEnum测试数据DataConstant优化内容AbstractCalcCalcEnumSudoPrintImpl总结说明单宫行列法:当前宫内,一个候选数字可能出现的所有空白格位置,都在同一行中,那么与其所在行的另外两宫同行中,不能出现该数字,出现则剔除。图片如上图所有,左下角第七宫中,第8行中,候选数字1只能在同一行中,就可以排除第9宫中同一行的有候选数字1的情况。故能确定第8行第7列数字为5,第8行,第8列的数字为2。

2021-05-26 11:00:35 342

原创 JAVA数独解题(二):摒除法与优化框架

JAVA数独解题(二):完善框架内容

2021-05-25 20:23:50 417 1

原创 JAVA数独解题(一):框架搭建

JAVA数独解题(一):框架搭建前言环境搭建框架代码如下总结前言个人兴趣。环境   JDK1.8   Lombok插件搭建框架数独的最基本单位是单元格Box,组成一个 9 * 9 共81个的大宫。分别由如下特点:Box(单元格):填写的数字:v(0 - 未填写;1 ~ 9 - 已填写)一维下标:i(0 ~ 80)二维下标: x(0 ~ 8行);y( 0 ~ 8列)所在宫:g(0 ~ 8)候选数字列表:cList(1 ~

2021-05-25 15:37:27 355

原创 策略枚举的用法三:规则处理

策略枚举的用法三:规则处理说明规则处理说明本文只对策略枚举可以使用的场景进行说明,不做其他介绍。提供额外的实现思路。规则处理在开发过程中,我们会遇到需要对不同类型的数据进行不同的校验。这时候传统的做法就是写很多的switc 然后case,或者使用if else 这种写法。非常占用主代码内容。但是我们校验的内容又大体一致,所以就可以使用枚举来实现。例如:索赔类型校验package com...

2019-12-20 16:22:22 362

原创 策略枚举的用法二:数据状态映射

策略枚举的用法二:数据映射说明数据映射说明本文只对策略枚举可以使用的场景进行说明,不做其他介绍。提供额外的实现思路。数据映射在开发过程中,难免会遇到与其他系统的对接,或者产品设计,或者其他种种原因导致 本身的枚举与其他枚举之间需要做一个映射,达到两个字段或者系统的同步,又方便维护一目了然。例如:如上,可以有三个枚举类package com.strategy.btwo.enums;...

2019-12-12 20:13:17 558 1

原创 策略枚举的用法一:状态流转

策略枚举的用法一:状态流转说明状态流转说明本文只对策略枚举可以使用的场景进行说明,不做其他介绍。提供额外的实现思路。状态流转在开发过程中,难免会遇到状态之间的流转。例如:上图可以看出,我们有状态组:黄色框的内容;操作组:连接线上的内容。就可以使用一个状态枚举来包装package com.strategy.enums;/** * 单据状态 */public enum St...

2019-12-11 17:41:29 523 2

空空如也

空空如也

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

TA关注的人

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