摘要: 一、模块简介 1、功能亮点 实时读取库表结构元数据信息,比如表名、字段名、字段类型、注释等,选中修改后的表,点击一键生成,代码成即可提现出表结构的变化。 单表快速转化restful风格的API接口并对外暴露服务。对于百余张表的数据库,使用代码生成器让开发事半功倍。 多表连接查询。多表连接查询默认不开 阅读全文
posted @ 2022-06-16 09:24 赛泰先生 阅读(1133) 评论(2) 推荐(3) 编辑
摘要: 一、序言 在日常开发中,常常有动态word文件生成的需求,通过编制模版,然后动态修改word内容以组合成新的文件。报告单、请假单、发票页等都可以使用动态生成word来解决。 笔者总结归纳出通用技术要点,尽可能降低广大开发者的使用技术门槛。 二、制作与渲染模版 (一)总体流程 1、准备数据 通过查询数 阅读全文
posted @ 2022-06-14 07:46 赛泰先生 阅读(1415) 评论(5) 推荐(2) 编辑
摘要: 一、序言 当我们在编写Java应用的时候,很少会注意Java程序是如何被运行的,如何被操作系统管理和调度的。带着好奇心,探索一下Java虚拟机启动过程。 1、素材准备 从Java源代码、Java字节码、Java虚拟机、操作系统四个角度分解启动过程。 public class HelloWorld { 阅读全文
posted @ 2022-05-27 11:10 赛泰先生 阅读(621) 评论(0) 推荐(1) 编辑
摘要: 一、序言 本文讲述仅针对 JVM 层次的内置锁,不涉及分布式锁。 锁有多种分类形式,比如公平锁与非公平锁、可重入锁与非重入锁、独享锁与共享锁、乐观锁与悲观锁、互斥锁与读写锁、自旋锁、分段锁和偏向锁/轻量级锁/重量级锁。 下面将配合示例讲解各种锁的概念,期望能够达到如下目标:一是在生产环境中不错误的使 阅读全文
posted @ 2022-04-20 11:31 赛泰先生 阅读(386) 评论(3) 推荐(0) 编辑
摘要: 一、序言 Java多线程编程线程池被广泛使用,甚至成为了标配。 线程池本质是池化技术的应用,和连接池类似,创建连接与关闭连接属于耗时操作,创建线程与销毁线程也属于重操作,为了提高效率,先提前创建好一批线程,当有需要使用线程时从线程池取出,用完后放回线程池,这样避免了频繁创建与销毁线程。 // 任务 阅读全文
posted @ 2022-04-06 11:48 赛泰先生 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 一、序言 目前企业级主流使用的Java版本是8,垃圾回收器支持手动修改为G1,G1垃圾回收器是Java 11的默认设置,因此G1垃圾回收器可以用很长时间,现阶段垃圾回收器优化意味着针对G1垃圾回收器优化。 为了简化讨论,下面假设针对4C/16G物理机器进行优化。 二、G1概览 (一)了解G1 1、最 阅读全文
posted @ 2022-03-18 11:00 赛泰先生 阅读(1054) 评论(2) 推荐(0) 编辑
摘要: 一、序言 在分布式并发系统中,数据库与缓存数据一致性是一项富有挑战性的技术难点。本文将讨论数据库与缓存数据一致性问题,并提供通用的解决方案。 假设有完善的工业级分布式事务解决方案,那么数据库与缓存数据一致性便迎刃而解,实际上,目前分布式事务不成熟。 二、不同的声音 在数据库与缓存数据一致解决方式中, 阅读全文
posted @ 2022-03-15 10:29 赛泰先生 阅读(1032) 评论(2) 推荐(3) 编辑
摘要: 一、序言 在实际开发中常常遇到如下需求:判断当前元素是否存在于已知的集合中,将已知集合中的元素维护一个HashSet,使用时只需耗时O(1)的时间复杂度便可判断出结果,Java内部或者Redis均提供相应的数据结构。使用此种方式除了占用内存空间外,几乎没有其它缺点。 当数据量达到亿级别时,内存空间的 阅读全文
posted @ 2022-03-04 09:19 赛泰先生 阅读(879) 评论(0) 推荐(1) 编辑
摘要: 一、序言 在实际业务中,单表数据增长较快,很容易达到数据瓶颈,比如单表百万级别数据量。当数据量继续增长时,数据的查询性能即使有索引的帮助下也不尽如意,这时可以引入数据分库分表技术。 本文将基于SpringBoot+MybatisPlus+Sharding-JDBC+Mysql实现企业级分库分表。 1 阅读全文
posted @ 2022-03-01 08:50 赛泰先生 阅读(1494) 评论(1) 推荐(3) 编辑
摘要: 一、序言 面向大数据量查询数据库,优点是在较大数据量(千万级)的前提下具有较好的查询性能。 1、应用场景 ClickHouse应用于OLAP(在线分析处理)领域,具体来说满足如下特点使用此技术比较合适: 事务型数据库表通过连表查询转换成宽表 聚合(统计)计算使用较多 对查询效率要求较高,有限时间范围 阅读全文
posted @ 2022-02-25 09:30 赛泰先生 阅读(819) 评论(2) 推荐(0) 编辑
摘要: 一、序言 空值异常是应用运行时常见的异常,传统方式为了编写健壮的应用,常常使用多层嵌套逻辑判断回避空指针异常。Java8新特性之Optional为此类问题提供了优雅的解决方式。 广大程序员朋友对空值异常刻骨铭心,因此Optional一经推出,广受赞誉。 二、问题复原 (一)素材准备 public c 阅读全文
posted @ 2022-02-24 10:52 赛泰先生 阅读(390) 评论(0) 推荐(1) 编辑
摘要: 一、序言 SpringBoot 2.6.x不推荐使用循环依赖,这是一个好消息,SpringBoot从底层逐渐引导开发者书写规范的代码,同时也是个忧伤的消息,循环依赖的应用场景实在是太广泛了。 如果从低版本升级到2.6.x,那么很大概率遇到的第一个问题便是循环依赖问题。 二、问题复原 1、代码说明 下 阅读全文
posted @ 2022-02-23 15:49 赛泰先生 阅读(2415) 评论(0) 推荐(2) 编辑
摘要: 一、序言 UCode Cms管理系统是面向企业级应用软件开发的脚手架。当前版本1.3.4。快速体验: git clone https://gitee.com/decsa/demo-cms.git (一)项目特点 1、源码开源 源码开源并且使用MIT开源许可协议,个人或者企业用户免费放心使用,项目源码 阅读全文
posted @ 2022-02-22 08:52 赛泰先生 阅读(706) 评论(0) 推荐(1) 编辑
摘要: 一、序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器。代码生成器模块属于可拆卸模块,即按需引入。代码生成器生成SSM(Spring、SpringBoot、MybatisPlus)风格的源代码。 面试时经常提到面向对象编程,实际开发中常常是面向数据库编程,随着需 阅读全文
posted @ 2022-02-21 10:40 赛泰先生 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 一、序言 UCode Cms 是一款Maven版的Java源代码生成器,是快速构建项目的利器。代码生成器模块属于可拆卸模块,即按需引入。代码生成器生成SSM(Spring、SpringBoot、MybatisPlus)风格的源代码。 面试时经常提到面向对象编程,实际开发中常常是面向数据库编程,随着需 阅读全文
posted @ 2022-02-16 12:06 赛泰先生 阅读(1182) 评论(0) 推荐(0) 编辑
摘要: Java8特性大全(最新版) 一、序言 Java8 是一个里程碑式的版本,凭借如下新特性,让人对其赞不绝口。 Lambda 表达式给代码构建带来了全新的风格和能力; Steam API 丰富了集合操作,拓展了集合的能力; 新日期时间 API 千呼万唤始出来; 随着对 Java8 新特性理解的深入,会被 Lambda 表达式(包含 阅读全文
posted @ 2022-02-13 23:17 赛泰先生 阅读(1696) 评论(0) 推荐(2) 编辑
摘要: 一、序言 (一)背景内容 软件应用技术架构中DAO层最常见的选型组件为MyBatis,熟悉MyBatis的朋友都清楚,曾几何时MyBatis是多么的风光,使用XML文件解决了复杂的数据库访问的难题。时至今日,曾经的屠龙者终成恶龙,以XML文件为基础的数据库访问技术变得臃肿、复杂,维护难度直线上升。 阅读全文
posted @ 2022-02-12 10:33 赛泰先生 阅读(12620) 评论(6) 推荐(6) 编辑
摘要: 一、序言 Jenkins 是一款自动化构建工具,能够基于 Maven 构建后端 Java 项目,也能够基于 nodejs 构建前端 vue 项目,并且有可视化 web 界面。 所谓自动化构建是按照一定的策略执行打包脚本,相对于普通脚本构建,Jenkins 有如下优势: 构建队列中能够同时构建多个项目 阅读全文
posted @ 2022-02-11 13:53 赛泰先生 阅读(1221) 评论(2) 推荐(2) 编辑
摘要: 一、序言 Redis高可用有两种模式:哨兵模式和集群模式,本文基于哨兵模式搭建一主两从三哨兵Redis高可用服务。 1、目标与收获 一主两从三哨兵Redis服务,基本能够满足中小型项目的高可用要求,使用Supervisor监控并管理Redis实例。通过本文将完成如下目标: 哨兵模式服务规划与搭建 哨 阅读全文
posted @ 2022-02-10 09:19 赛泰先生 阅读(763) 评论(0) 推荐(0) 编辑
摘要: 一、序言 使用Nginx作为web应用服务时,会代理如下常见文件:js、css、JSON、图片等,本文提供基于Nginx内置的压缩技术,提供网络请求响应速度的解决方案。 1、网络压缩原理 网络压缩的原理是消耗CPU资源,减少文件在公网传输的大小,提高响应速度。相比于CPU的计算资源,网络带宽通常较为 阅读全文
posted @ 2022-02-08 09:32 赛泰先生 阅读(949) 评论(0) 推荐(0) 编辑
摘要: 一、MybatisPlusMax简介 MybatisPlusMax是MybatisPlus的增强包,秉承只拓展不修改的理念,对MybatisPlus做增强。 正如MybatisPlus是对MyBatis的增强,MybatisPlusMax是对MybatisPlus的增强,拓展理念一脉相承。 Myba 阅读全文
posted @ 2023-01-10 14:31 赛泰先生 阅读(1253) 评论(0) 推荐(4) 编辑
摘要: MybatisPlus多表连接查询一对多分页查询数据 一、序言 在日常一线开发过程中,多表连接查询不可或缺,基于MybatisPlus多表连接查询究竟该如何实现,本文将带你找到答案。 在多表连接查询中,既有查询单条记录的情况,又有列表查询,还有分页查询,这些需求与多表连接是什么关系,又该如何实现,这是本文讨论的中心内容。 二、实战编码 1、两个关联DO 阅读全文
posted @ 2022-12-01 13:20 赛泰先生 阅读(1390) 评论(0) 推荐(0) 编辑
摘要: EntityUtils MapStruct BeanCopier 数据实体类转换工具 DO BO VO DTO 附视频 一、序言 在实际项目开发过程中,总有数据实体类互相转换的需求,DO、BO、VO、DTO等数据模型转换经常发生。今天推荐几个好用的实体类转换工具,分别是EntityUtils MapStruct BeanCopier ,并且给出使用的案例。需要说明的是,本文有配套视频讲解。 下面分别讲解这3种工具的使 阅读全文
posted @ 2022-11-23 10:19 赛泰先生 阅读(418) 评论(0) 推荐(0) 编辑
摘要: TreeUtils工具类一行代码实现列表转树【第三版优化】 三级菜单 三级分类 附视频 一、序言 在日常一线开发过程中,总有列表转树的需求,几乎是项目的标配,比方说做多级菜单、多级目录、多级分类等,有没有一种通用且跨项目的解决方式呢?帮助广大技术朋友给业务瘦身,提高开发效率。 本文将基于Java8的Lambda 表达式和Stream等知识,使用TreeUtils工具类实现一行代码完成列 阅读全文
posted @ 2022-11-22 10:44 赛泰先生 阅读(640) 评论(1) 推荐(5) 编辑
摘要: TreeUtils工具类一行代码实现列表转树 实战Java8 三级菜单 三级分类 附视频 一、序言 在日常一线开发过程中,总有列表转树的需求,几乎是项目的标配,比方说做多级菜单、多级目录、多级分类等,有没有一种通用且跨项目的解决方式呢?帮助广大技术朋友给业务瘦身,提高开发效率。 本文将基于Java8的Lambda 表达式和Stream等知识,使用TreeUtils工具类实现一行代码完成列 阅读全文
posted @ 2022-11-18 10:47 赛泰先生 阅读(825) 评论(2) 推荐(1) 编辑
摘要: 一、序言 众所周知,MybatisPlus在处理单表DAO操作时非常的方便。在处理多表连接连接查询也有优雅的解决方案。今天分享MybatisPlus基于Lambda表达式优雅实现聚合分组查询。 由于视频的交互性更强,保留更多的细节,看视频的朋友,传送门在这里。 下面的内容是博客文字版。 二、代码实现 阅读全文
posted @ 2022-11-08 10:04 赛泰先生 阅读(11440) 评论(1) 推荐(0) 编辑
摘要: 本文节选左耳朵耗子相关文章,与读者共勉! 本质上来说,程序员是手艺人,有手艺的人就能做出别人做不出来的东西,而付费也是一件很自然的事了。那么,这个问题就成了,如何让自己的“手艺”更为值钱的问题了。 千里之行,积于跬步 任何一件成功的大事,都是通过一个一个的小成功达到的。所以,你得确保你有一个一个的小 阅读全文
posted @ 2022-07-10 19:38 赛泰先生 阅读(284) 评论(0) 推荐(0) 编辑
摘要: GitHub 在国内经常会出现无法访问的情况,下面分享几个 GitHub 镜像站供大家使用! GitHub镜像站: https://cdn.githubjs.cf https://hub.おうか.tw https://hub.連接.台灣 https://gitclone.com/ (仅支持git) 阅读全文
posted @ 2022-07-04 18:05 赛泰先生 阅读(14499) 评论(0) 推荐(0) 编辑