随笔分类 -  Java

摘要:一、MybatisPlusMax简介 MybatisPlusMax是MybatisPlus的增强包,秉承只拓展不修改的理念,对MybatisPlus做增强。 正如MybatisPlus是对MyBatis的增强,MybatisPlusMax是对MybatisPlus的增强,拓展理念一脉相承。 Myba 阅读全文
posted @ 2023-01-10 14:31 赛泰先生 阅读(1276) 评论(0) 推荐(4) 编辑
摘要:MybatisPlus多表连接查询一对多分页查询数据一、序言 在日常一线开发过程中,多表连接查询不可或缺,基于MybatisPlus多表连接查询究竟该如何实现,本文将带你找到答案。 在多表连接查询中,既有查询单条记录的情况,又有列表查询,还有分页查询,这些需求与多表连接是什么关系,又该如何实现,这是本文讨论的中心内容。 二、实战编码 1、两个关联DO 阅读全文
posted @ 2022-12-01 13:20 赛泰先生 阅读(1415) 评论(0) 推荐(0) 编辑
摘要:EntityUtils MapStruct BeanCopier 数据实体类转换工具 DO BO VO DTO 附视频一、序言 在实际项目开发过程中,总有数据实体类互相转换的需求,DO、BO、VO、DTO等数据模型转换经常发生。今天推荐几个好用的实体类转换工具,分别是EntityUtils MapStruct BeanCopier ,并且给出使用的案例。需要说明的是,本文有配套视频讲解。 下面分别讲解这3种工具的使 阅读全文
posted @ 2022-11-23 10:19 赛泰先生 阅读(437) 评论(0) 推荐(0) 编辑
摘要:TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频一、序言 在日常一线开发过程中,总有列表转树的需求,几乎是项目的标配,比方说做多级菜单、多级目录、多级分类等,有没有一种通用且跨项目的解决方式呢?帮助广大技术朋友给业务瘦身,提高开发效率。 本文将基于Java8的Lambda 表达式和Stream等知识,使用TreeUtils工具类实现一行代码完成列 阅读全文
posted @ 2022-11-22 10:44 赛泰先生 阅读(641) 评论(1) 推荐(5) 编辑
摘要:TreeUtils工具类一行代码实现列表转树 实战Java8 三级菜单 三级分类 附视频一、序言 在日常一线开发过程中,总有列表转树的需求,几乎是项目的标配,比方说做多级菜单、多级目录、多级分类等,有没有一种通用且跨项目的解决方式呢?帮助广大技术朋友给业务瘦身,提高开发效率。 本文将基于Java8的Lambda 表达式和Stream等知识,使用TreeUtils工具类实现一行代码完成列 阅读全文
posted @ 2022-11-18 10:47 赛泰先生 阅读(829) 评论(2) 推荐(1) 编辑
摘要:一、序言 众所周知,MybatisPlus在处理单表DAO操作时非常的方便。在处理多表连接连接查询也有优雅的解决方案。今天分享MybatisPlus基于Lambda表达式优雅实现聚合分组查询。 由于视频的交互性更强,保留更多的细节,看视频的朋友,传送门在这里。 下面的内容是博客文字版。 二、代码实现 阅读全文
posted @ 2022-11-08 10:04 赛泰先生 阅读(11672) 评论(1) 推荐(0) 编辑
摘要:本文节选左耳朵耗子相关文章,与读者共勉! 本质上来说,程序员是手艺人,有手艺的人就能做出别人做不出来的东西,而付费也是一件很自然的事了。那么,这个问题就成了,如何让自己的“手艺”更为值钱的问题了。 千里之行,积于跬步 任何一件成功的大事,都是通过一个一个的小成功达到的。所以,你得确保你有一个一个的小 阅读全文
posted @ 2022-07-10 19:38 赛泰先生 阅读(301) 评论(0) 推荐(0) 编辑
摘要:一、模块简介 1、功能亮点 实时读取库表结构元数据信息,比如表名、字段名、字段类型、注释等,选中修改后的表,点击一键生成,代码成即可提现出表结构的变化。 单表快速转化restful风格的API接口并对外暴露服务。对于百余张表的数据库,使用代码生成器让开发事半功倍。 多表连接查询。多表连接查询默认不开 阅读全文
posted @ 2022-06-16 09:24 赛泰先生 阅读(1139) 评论(2) 推荐(3) 编辑
摘要:一、序言 在日常开发中,常常有动态word文件生成的需求,通过编制模版,然后动态修改word内容以组合成新的文件。报告单、请假单、发票页等都可以使用动态生成word来解决。 笔者总结归纳出通用技术要点,尽可能降低广大开发者的使用技术门槛。 二、制作与渲染模版 (一)总体流程 1、准备数据 通过查询数 阅读全文
posted @ 2022-06-14 07:46 赛泰先生 阅读(1426) 评论(5) 推荐(2) 编辑
摘要:一、序言 当我们在编写Java应用的时候,很少会注意Java程序是如何被运行的,如何被操作系统管理和调度的。带着好奇心,探索一下Java虚拟机启动过程。 1、素材准备 从Java源代码、Java字节码、Java虚拟机、操作系统四个角度分解启动过程。 public class HelloWorld { 阅读全文
posted @ 2022-05-27 11:10 赛泰先生 阅读(635) 评论(0) 推荐(1) 编辑
摘要:一、序言 指令重排在单线程环境下有利于提高程序的执行效率,不会对程序产生负面影响;在多线程环境下,指令重排会给程序带来意想不到的错误。 本文对多线程指令重排问题进行复原,并针对指令重排给出相应的解决方案。 二、问题复原 (一)关联变量 下面给出一个能够百分之百复原指令重排的例子。 public cl 阅读全文
posted @ 2022-04-23 11:34 赛泰先生 阅读(300) 评论(0) 推荐(0) 编辑
摘要:一、序言 在Web开发中,总有一些接口需要暴露在用户认证前访问,短信发送接口特别是短信验证码注册接口便是其中典型的一类,这类接口具有如下特点: 流量在用户认证之前 流量在用户认证之前,意味着无法获取用户ID等唯一标识符信息对流量限流 手机号未知 手机号未知意味着无法对待发送短信的手机号做精准检测,判 阅读全文
posted @ 2022-04-12 11:42 赛泰先生 阅读(2664) 评论(18) 推荐(5) 编辑
摘要:一、序言 Java多线程编程线程池被广泛使用,甚至成为了标配。 线程池本质是池化技术的应用,和连接池类似,创建连接与关闭连接属于耗时操作,创建线程与销毁线程也属于重操作,为了提高效率,先提前创建好一批线程,当有需要使用线程时从线程池取出,用完后放回线程池,这样避免了频繁创建与销毁线程。 // 任务 阅读全文
posted @ 2022-04-06 11:48 赛泰先生 阅读(340) 评论(0) 推荐(0) 编辑
摘要:定时任务使用指南 如果你想做定时任务,有高可用方面的需求,或者仅仅想入门快,上手简单,那么选用它准没错。 定时任务模块是对Quartz框架进一步封装,使用更加简洁。 1、引入依赖 <dependency> <groupId>xin.altitude.cms</groupId> <artifactId 阅读全文
posted @ 2022-04-01 21:16 赛泰先生 阅读(761) 评论(5) 推荐(2) 编辑
摘要:一、序言 目前企业级主流使用的Java版本是8,垃圾回收器支持手动修改为G1,G1垃圾回收器是Java 11的默认设置,因此G1垃圾回收器可以用很长时间,现阶段垃圾回收器优化意味着针对G1垃圾回收器优化。 为了简化讨论,下面假设针对4C/16G物理机器进行优化。 二、G1概览 (一)了解G1 1、最 阅读全文
posted @ 2022-03-18 11:00 赛泰先生 阅读(1075) 评论(2) 推荐(0) 编辑
摘要:一、序言 在并发场景中,当热点缓存Key失效时,流量瞬间打到数据库中,此所谓缓存击穿现象;当大范围的缓存Key失效时,流量也会打到数据库中,此所谓缓存雪崩现象。 当使用分布式行锁时,能够有效解决缓存击穿问题;当使用分布式表锁时,能够解决缓存雪崩问题。实际操作中,分布式表锁不在考虑范围,理由是降低并发 阅读全文
posted @ 2022-03-16 09:43 赛泰先生 阅读(451) 评论(0) 推荐(0) 编辑
摘要:一、序言 在分布式并发系统中,数据库与缓存数据一致性是一项富有挑战性的技术难点。本文将讨论数据库与缓存数据一致性问题,并提供通用的解决方案。 假设有完善的工业级分布式事务解决方案,那么数据库与缓存数据一致性便迎刃而解,实际上,目前分布式事务不成熟。 二、不同的声音 在数据库与缓存数据一致解决方式中, 阅读全文
posted @ 2022-03-15 10:29 赛泰先生 阅读(1040) 评论(2) 推荐(3) 编辑
摘要:一、序言 延迟任务应用广泛,延迟任务典型应用场景有订单超时自动取消;支付回调重试。其中订单超时取消具有幂等性属性,无需考虑重复消费问题;支付回调重试需要考虑重复消费问题。 延迟任务具有如下特点:在未来的某个时间点执行;一般仅执行一次。 1、实现原理 生产者将带有延迟信息的消息发送到RabbitMQ交 阅读全文
posted @ 2022-03-08 08:18 赛泰先生 阅读(788) 评论(2) 推荐(1) 编辑
摘要:一、序言 在实际开发中常常遇到如下需求:判断当前元素是否存在于已知的集合中,将已知集合中的元素维护一个HashSet,使用时只需耗时O(1)的时间复杂度便可判断出结果,Java内部或者Redis均提供相应的数据结构。使用此种方式除了占用内存空间外,几乎没有其它缺点。 当数据量达到亿级别时,内存空间的 阅读全文
posted @ 2022-03-04 09:19 赛泰先生 阅读(887) 评论(0) 推荐(1) 编辑
摘要:一、序言 在使用MyBatis、MybatisPlus等DAO层数据库访问框架式,常常会与一级缓存、二级缓存打交道,为了增强对缓存体系的整体把控力,提高软件应用响应速度,这里对三级缓存一次梳理。 缓存固然能够提高系统性能,与此同时也带来了脏数据的副作用,系统的缓存体系、缓存结构、缓存策略、缓存介质等 阅读全文
posted @ 2022-03-02 10:02 赛泰先生 阅读(173) 评论(0) 推荐(0) 编辑