自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Biz-Logger: Iteration #1 Diff Log capability

记录Diff日志也是很多系统必须的一部分, 例如很多CRM系统, 记录表单更新等.前文提到的两个框架都实现了自己的diff-log操作, 但是使用方式各有不同, 并且对于复杂类型数组/集合的处理都没有银弹.使用者应考虑是否需要记录复杂类型数组/集合的变更.

2024-07-17 10:15:38 838

原创 Biz-Logger操作日志框架

美团技术团队曾经发过一篇如何优雅地记录操作日志?, 简单介绍了业务中为了记录的需求实现, 通过AOP和注解的方式与业务解耦. 遂拜读了下项目源码和另一个人的一个差异化实现log-record。并自己学习着实现了一个自己的操作日志框架。

2024-07-12 15:27:47 1015 1

原创 JPA/Mybatis-plus + MapStruct/Jackson + Google Auto Service + JavaPoet 实现自定义代码生成器

或许同好或多或少用过上提供的代码生成器插件, 其利用模版驱动, 根据预先定义好的模版. 解析数据表结构生成代码, 在业务中使用, 更像是面向数据编程的一种体现. 而本文介绍的实现, 则比较适用于面向对象, DDD等场景.但是这种处理方式是明显不如直接解析模版来的灵活, 客户端无法直接修改代码模版, 但对于有一定编码规范和代码风格的要求的场景, 这种生成器也还是OK的.

2024-05-17 11:20:12 949

原创 基于RequestResponseBodyMethodProcessor的Trim功能装饰者模式实现

公司内部系统老是有人填表单复制粘贴老是整出前后空格来.考虑在服务端增加统一的trim处理.

2024-05-16 12:12:06 399

原创 Excel Module: Iteration #1 EasyExcel生成下拉列表模版时传入动态参数查询下拉数据

有同好提过这问题, 有一定的使用场景, 最近设计了一下并落地了, 支持直接使用框架方式或直接使用EasyExcel方式.该迭代仅限使用SpEL能力最新版本代码, 历史版本忽略.

2024-05-09 10:21:06 583

原创 [DDD] ValueObject的一种设计落地及应用

以前在InfoQ看到过这么一个讲座讲座的细节就不赘述了, 其中举例类似“电话号码”, “货币”在业务中的操作, 如果将这类有业务意义的字符串只是简单通过String/Integer等对象传递, 将丢失其业务意义, 最终编码, 测试都变得更繁琐. 同时程序员还需要在业务流程中时刻关心此类对象是否严格符合业务意义, 比如校验格式, 内容有效性等等. 实际工作看过来, 绝大多数人也都是这样做的.

2024-03-25 09:29:08 901

原创 [套路] 浏览器引入Vue.js场景-WangEditor富文本编辑器的使用 (永久免费)

浏览器引入Vue.js(本地引入, 有人这么叫)的场景, 使用js方式整合使用WangEditor的套路

2024-03-20 13:52:48 1206

原创 [套路] Bypass滑块验证码

在已有Java服务中接入基于Python图像处理能力实现的滑块验证码处理功能, 本地及生产使用Python-3.9.6, JDK21.通过web应用方式部署的场景不受平台限制验证码背景图滑块拼图套路]系列意在提供一个功能基本实现套路的系列文档, 查就完了.高并发场景, 尤其IO密集型场景, 使用Web应用方式会比较合适. 部署起来除了环境需要准备一下, 其他操作没难度. 😃。

2024-03-14 17:09:22 816

原创 Join Module: Iteration #3 Join-in-Memory 的JoinAtReturn的能力说明

本文简单说明在与nedma沟通此前的迭代特性时, 提到的通过切面调用join流程的需求的实现.

2024-03-01 11:34:48 769

原创 [套路] 基于服务内存实现的中文拼音混合查询

此功能设计落地为一个不使用其他第三方搜索组件, 默认基于服务内存的功能. 支持通过接口扩展数据来源和搜索算法.功能基于倒排索引(inverted index)思想完成的简易中英文拼音混合的全文检索, 不涉及权重或分值的计算, 单纯利用用户数据完成全文检索

2024-02-13 13:13:35 845

原创 Join Module: Iteration #2 Join-in-Memory 的多属性同Join注解合并处理能力说明

基于Join-in-Memory实现将一个类中多个属性使用同一种join注解合并处理, 减少查库次数.

2024-01-10 11:49:26 971 7

原创 Join Module: Iteration #1 Join-in-Memory的AfterJoin能力说明

第一篇简单介绍了Join框架的目的及设计, 由于实际实现篇幅过大, 没有将实现细节展现到博客中.本篇主要介绍迭代的AfterJoin能力不论是否使用服务内join, 都会出现一种场景: 获得关联数据后, 还需要进一步对数据处理(转换/聚合等).AfterJoin的能力就是使这类操作自动化的完成调用, 减少一些非业务流程代码对业务编排代码的侵入, 同时利用好并发能力提高处理效率减少处理并发的代码编写等.

2024-01-10 11:05:21 988 3

原创 [套路] el-table 多选属性实现单选效果

el-table单选通过点击行, 再加高亮显示, 不清晰, 多选通过第一列的checkbox选中, 比较直观, 但不支持单选模式, 本文提供一个套路化无脑实现.套路系列意在提供一个工具文档, 查就完了.

2023-12-29 09:40:53 982 1

原创 Annotations Driven方式实现利用Jsoup完成对目标网站的采集需求

Java在做爬虫相关的工作时, 最容易想到的就是使用Jsoup库来实现采集数据的需求, 但写过这类代码的都清楚, 很多代码无非是在不停的重复执行如何选取 tag, 如何获取目标值的操作, 代码的重复性还是比较高的, 如果可以通过注解配置来减少事物脚本式的代码, 将极大的减轻采集需求的代码量.该模块还在使用初期, 支持场景有局限性, 后续随着使用会逐步扩展, 本文意在于介绍这种设计和实现的方式, 设计本身是有良好的扩展性的.

2023-06-19 17:47:15 243

原创 State machine在钉钉机器人交互中的一种使用场景

State mechine (状态机) 通过当前实例持有不同的状态来完成对应业务的一种模式, 但公司主要的业务主要面向数据, 并非多复杂的业务, 所以基本没多少机会能真的好好设计代码. 本文主要是受到关注大佬的 geek-tools 的启发, 想自己尝试一下该模式的应用.

2023-05-21 10:38:37 213

原创 Join-in-Memory一种基于注解配置的连表思路和实现

对于性能(大表,多表join等)及服务化(服务自治,分库分表等)的考虑,在服务的内存中实现join是一个更具扩展性和适应性的选择. 想必同好也有常用的编码方式显现服务内join, 最常见的也就是将数据集聚合后根据关联key查询关联数据, 将关联数据mapping后, 组装数据, 本例则将此方式进一步抽象, 使用注解配置完成从编码到配置的转换.注解驱动的方式将编码转换为配置, 通过表达式解析能力, 是这种配置方式成为可能, 同时提供了并行的执行方式可供选择, 极大的减少了客户端的编码量.

2023-05-04 12:15:52 574

原创 Jackson-AnnotationIntrospector + @AliasFor 实现自定义注解 + JSON序列化的一种场景

需求: 动态表头(相对来说)目前只是控制列宽列名,排序,显隐等简单操作, 没有现成的, 如何新设计一个动态表单模版领域又十分复杂, 耗时. 考虑直接使用注解配置的方式将一个包含表头字段的对象的每个配置字段映射为一个动态表头配置的集合返给前端, 存储json即可.由于前端动态渲染时, 列头的prop属性和列表数据序列化json时的key是要相同的, 本次实现将自定义注解和Jackson的注解组合使用来达到目的.

2023-04-25 14:50:12 1457 4

原创 钉钉扫码免登-钉钉应用内免登的实现(附仓库及Demo)

Vue2, JDK1.8, SpringBoot2.x.x, 钉钉模块, 钉钉模块Demo, 钉钉开放平台旧版钉钉企业内微应用免登自建系统只支持扫码登录, 公司后台使用此方式在PC端登录了钉钉时还需要掏手机扫码, 用起来很不爽, 在优化自建钉钉模块时, 看了下钉钉文档, 注意到其支持了新版本的免登录方式, 即当PC端钉钉登录后, 新方式支持直接调起钉钉认证登录, 省去了扫码的操作, 方便不少.本文主要是对基本的集成做介绍, 以及对在集成过程中遇到的一些坑做说明, 阅读本文能极大的减少你实现新版钉钉免登的时间

2023-03-26 00:08:56 4351 13

原创 windows机器使用spring.config.import配置项与nacos作为配置和注册中心, 提示找不到nacos:xxx.yml配置文件的一次问题及处理

windows机器使用spring.config.import配置项与nacos作为配置和注册中心, 提示找不到nacos:xxx.yml配置文件的一次问题及处理

2023-01-04 14:40:46 3605 1

原创 EasyExcel生成带下拉列表或多级级联列表的Excel模版+自定义校验导入数据(修订)

生成带下拉菜单的Excel文件, 限制用户输入, 以配合服务端的数据模型; 新版本主要变化: 优化部分设计和实现逻辑, 清晰命名, 改用SpEL替换指定接口等. 并更新本文的生成下拉部分内容.

2022-11-01 16:13:35 6380 37

原创 MacOS中使用Electron构建Vue项目在Windows环境的安装包

macOS下使用Electron构建windows安装包的一次最简单的实现

2022-10-31 15:40:38 3239 5

原创 Design Pattern: Visitor and Acyclic Visitor and their differences

DesignPatter: 访问者和无环访问者模式及它们的区别

2022-10-31 13:14:41 179

原创 基于AmazonS3协议的OSS通用组件,minio8集成(附仓库)

基于AmazonS3协议的OSS通用组件,minio8集成(附仓库)

2022-05-23 16:16:44 3839

原创 DingTalk钉钉机器人单聊互动卡片消息的一次实现(附仓库)

互动卡片支持自定义按钮, 并在按钮上绑定回调事件, 点击按钮时将通过提前注册的回调URL, 携带卡片数据及配置的自定义按钮参数调用回调URL, 开发者拿到请求后完成业务处理, 并通过更新互动卡片接口将此前发送的卡片数据更新. 按钮的状态, 显示与否均可动态配置.官方文档东一块西一块的比较容易看乱了, 本文的实现集中于机器人单聊互动卡片的操作, 流程单一, 清晰, 按照本文提供的实现完成发送业务会相对快一些.

2022-03-31 18:16:21 9386 26

原创 记npm错误升级后的问题以及处理

记一次npm错误升级后版本不对应导致的问题及处理

2022-03-18 17:39:54 1789

原创 Nginx + CertBot 泛解析域名申请https证书以及利用脚本完成证书自动续期

升级 https 使用 Nginx + CertBot 泛解析域名证书的申请及(脚本)自动续期

2022-02-21 15:47:08 4039

原创 Nginx使用一个域名完成PC端/移动端前端服务转发配置

多个前端项目,php使用单个项目满足移动端pc端访问, vue项目使用nuxt和webpack分别两个项目处理pc端移动端, 使用同一域名端口在不同浏览器访问对应页面问题描述: 随便查了一下, 网上帖子基本都是同类型项目,多个部署同一域名,例如同为webpack打包后以静态方式部署,或同为nuxt之类的以启动服务的方式部署,无法满足需求, 尝试判断出agent之后nginx配置也会冲突, 想了个取巧可行方式

2021-09-13 11:34:57 1055

空空如也

空空如也

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

TA关注的人

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