基础框架
文章平均质量分 78
基础知识,基础架构
靖节先生
分布式微服务架构设计,致力于业务持续优化迭代,通过技术能力创造业务价值!
展开
-
git diff命令详解
例如,可以将差异结果输出到一个文件,然后使用文本编辑器或其他差异分析工具来查看。的输出可能不是彩色的,但可以通过设置配置项来启用彩色输出,这样可以更直观地看出差异。是 Git 版本控制系统中一个非常强大的命令,用于比较不同状态下的文件差异。这将在输出中显示单词级别的添加、删除和修改,对于文本文件的差异分析非常有用。这将在全局范围内启用自动彩色输出,根据终端的支持情况显示彩色的差异。来比较特定的文件或目录在不同状态下的差异。时这些被忽略的文件将不会显示在差异结果中。选项可以以更详细的方式显示单词级别的差异。原创 2024-08-28 17:02:46 · 1078 阅读 · 1 评论 -
Mybatis拦截器Interceptor与字段类型处理器BaseTypeHandler区别
MyBatis 的拦截器(Interceptor)和自定义类型处理器(BaseTypeHandler 的子类)在功能、使用场景、使用方式和注意事项等方面有以下区别。TypeHandler是MyBatis中用于处理Java类型与JDBC类型之间转换的接口。在SQL语句执行过程中,无论是设置参数还是获取结果集,都需要通过TypeHandler进行类型转换。MyBatis提供了丰富的内置TypeHandler实现,以支持常见的数据类型转换。同时,也可以根据需要自定义TypeHandler来处理特殊的数据类型或转换原创 2024-08-22 17:02:08 · 823 阅读 · 0 评论 -
JDK17详解
国内一直流行一句话,他发任他发,我用Java8。目前也有一些厂商升级到jdk17,我理解升级到jdk17基于以下几点考虑。1.对jdk17有特殊性能场景考虑。2.对jdk17新特性有充分的使用场景。3.对jdk17开源协议是否收费需要考虑。4.新版本的springboot需要jdk17支持。5.老版本的jdk维护时间到了。6.项目jdk升级成本。接下来展开讲讲各个考虑点。原创 2024-08-07 16:33:57 · 1990 阅读 · 0 评论 -
maven打包指定依赖与commitId
这是两个需求,一个是打包指定依赖,另一个是打包时关联指定git的commitId。maven打包关联commitId采用,打入hello-api这个模块。maven打包指定依赖采用。原创 2024-07-01 15:25:05 · 534 阅读 · 0 评论 -
idea自动生成单元测试工具
TestMe插件可以智能分析被测试类的依赖类,结合Mockito+Junit等单元测试框架,生成Mock/InjectMocks依赖关系,自动生成单元测试类。1.File——>Settings——>Plugins,搜索Squaretest,然后install就好了,插件安装完成后需要重启一下。1.File——>Settings——>Plugins,搜索TestMe,然后install就好了,插件安装完成后需要重启一下。2.打开class-右键–选择testme–生成test。原创 2024-06-11 22:39:42 · 1690 阅读 · 0 评论 -
SonarQube跳过指定代码检查方法
现在很多项目里使用Sonarqube管理代码质量,团队一般也会有硬性的指标。如果有些代码虽然不合规范,但是在实际环境中不得不这样写,那么我们为了降低issue的数量,可以让Sonar跳过这一段的检测。原创 2024-03-11 09:34:41 · 2436 阅读 · 1 评论 -
JProfiler详解 JVM性能监测内存泄露分析工具
JProfiler是一款业界领先的Java性能分析工具,由ej-technologies公司开发,专门设计用于分析和优化Java和JVM应用程序的性能。它可以无缝集成到多种开发环境如IntelliJ IDEA、Eclipse等,并支持对本地和远程应用程序的实时或离线性能分析。原创 2024-03-05 14:10:03 · 2083 阅读 · 0 评论 -
Spring Event详解
Spring Event是Spring框架内建的一种发布/订阅(Publish-Subscribe)模式的实现,它允许应用内部不同组件之间通过事件进行通信。当某个特定事件发生时,系统中对这类事件感兴趣的监听器可以接收到通知并执行相应操作。原创 2024-02-18 14:57:47 · 2339 阅读 · 0 评论 -
git从主仓库同步到fork仓库
执行路径:项目右键 -> Git ->Repository -> Fetch。左下角选择远程仓库分支 -> Merge into Current。通过Merge Request提交申请MR到远程,审批合并。方式一:使用idea将远程仓库merg到本地仓库。方式一:idea fetch重新拉取最新地址。方式二:更新主库命令方式。方式一:通过git命令。方式二:通过git页面。方式二:通过命令方式。原创 2023-07-28 10:00:04 · 1877 阅读 · 0 评论 -
easy-jenkins自动化部署工具
easy-jenkins是一款对vue和jar的部署工具,操作简单,实行一键部署,内部结构采用流水线形式架构,每次部署,时时提供部署过程,部署记录,界面友好简洁,使用方便,符合用户常规操作,easy-jenkins面向分支形式,无需登录,默认分支为jenkins,每个分支可以配置多个数据源,切换不同分支可以管理不同数据源,easy-jenkins采用本地存储的结构无需配置数据库,简单易上手。原创 2023-04-23 15:25:07 · 629 阅读 · 0 评论 -
idea插件代码生成工具EasyCode
EasyCode是一款根据idea数据库连接自动生成Java代码,从controller,service,dao,mapper一整套的代码的idea插件。配置路径:File --> Settings --> Other Settings --> EasyCode – > Template Settings。1.在线安装:setting-plugin,搜索easycode,安装重启。首先下载安装easycode插件,idea分为在线安装与离线安装。通过idea离线安装该压缩包。原创 2023-01-03 10:49:58 · 6836 阅读 · 0 评论 -
Lombok详解
Project Lombok是一个java库,它可以自动插入到您的编辑器和构建工具中,为您的java增添趣味。永远不要再写另一个getter或equals方法了,只要有一个注释,你的类就有了一个功能齐全的构建器,自动化你的日志变量,等等。原创 2022-11-28 17:00:05 · 2567 阅读 · 0 评论 -
Java诊断工具arthas详解
Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。原创 2022-11-21 22:12:21 · 720 阅读 · 0 评论 -
Spring5详解
1.Spring概念Spring是轻量级的开源的 JavaEE 框架 ,为了解决企业应用开发的复杂性。2.Spring核心Spring有两个核心部分:IOC 和 Aop(1)IOC:控制反转,把创建对象过程交给 Spring 进行管理。(2)Aop:面向切面,不修改源代码进行功能增强。3.Spring特点(1)方便解耦,简化开发(2)Aop 编程支持(3)方便程序测试(4)方便和其他框架进行整合(5)方便进行事务操作(6)降低 API 开发难度。原创 2022-10-05 11:10:21 · 1942 阅读 · 0 评论 -
Jmeter压测工具详解
Apache JMetier是Apache组织开发的基于Java的压力测试工具。一款非常优秀的开源的性能测试工具。原创 2022-08-24 17:16:05 · 30897 阅读 · 2 评论 -
ThansmittableThreadLocal详解
ThreadLocal只能保存当前线程的信息,不能实现父子线程的继承。InheritableThreadLocal,确实InheritableThreadLocal能够实现父子线程间传递本地变量,但是你的程序如果采用线程池,则存在着线程复用的情况,这时就不一定能够实现父子线程间传递了,因为在线程在线程池中的存在不是每次使用都会进行创建,InheritableThreadlocal是在线程初始化时intertableThreadLocals=true才会进行拷贝传递。ThansmittableThreadLo原创 2022-06-11 08:25:33 · 604 阅读 · 1 评论 -
Java IO与NIO的区别
NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。NIO和IO的主要区别,下表总结了Java IO和NIO之间的主要区别:2. Java IO与NIO的区别1、面向流与面向缓冲 Java IO和NIO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO面向流意味着每次从流中读原创 2022-06-08 16:27:02 · 2403 阅读 · 0 评论 -
Java实现钉钉自定义机器人接入
Java实现钉钉自定义机器人接入1. 钉钉自定义机器人接入概述1.1 钉钉机器人简介1.2 自定义机器人接入2. 钉钉自定义机器人接入实现2.1 场景介绍2.2 调用频率限制2.3 创建钉钉群2.4 自定义机器人2.4 代码实现2.5 测试验证1. 钉钉自定义机器人接入概述1.1 钉钉机器人简介在钉钉,机器人是独立存在的一个应用类型,可以开箱即用,也可以进行二次开发,无需和微应用或者群等场景进行强制绑定。对于开发者而言,钉钉机器人是全局唯一的应用,即无论是在单聊中还是群聊中,都可以用来推送微应用的通原创 2022-05-17 18:27:52 · 4102 阅读 · 4 评论 -
Java BigDecimal详解
Java BigDecimal详解1. BigDecimal概述2. BigDecimal方法介绍2.1 BigDecimal常用构造函数2.2 BigDecimal常用方法详解3. BigDecimal格式化4. BigDecimal常见异常5. BigDecimal总结6. BigDecimal工具类1. BigDecimal概述Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用原创 2022-05-13 17:00:24 · 4140 阅读 · 1 评论 -
Java切面统一处理Token设置用户信息
Java切面处理Token统一设置用户信息1. 需求概述2. 解决方案3. 代码实现3.1 创建解析token3.2 注解+切面填充参数4. 测试验证1. 需求概述常见的后端开发中,接口请求中一般前端都是先通过用户登录获取token,每次接口请求都需要在头信息中携带token信息,后端每次都需要手动处理token信息,从token信息中解析获取用户信息,因为每个接口都需要处理这些公共信息,所以可以采用切面的方式进行统一处理。2. 解决方案方案一,通过注解+切面处理请求对象通过切面获取token信息原创 2022-05-05 18:35:17 · 2305 阅读 · 0 评论 -
Java参数校验validation和validator区别
Java参数校验validation和validator区别1. 参数校验概述2. validation与validator区别3. validation注解说明4. validator注解说明5. 日期格式化说明6. 实现验证6.1 引入依赖6.2 代码实现6.3 实现验证1. 参数校验概述常见的业务开发中无可避免的会进行请求参数校验,一般对于复杂的业务参数校验,可以通过校验类单独的校验方法进行处理,通常对于一些与业务无关简单的参数校验可以采用javax.validation 和 hibernate-原创 2022-04-29 17:29:36 · 2753 阅读 · 0 评论 -
Java stream流式计算详解
Java stream流式计算详解1. Stream概述1.1 Stream简介1.2 Stream分类2. Stream创建3. Stream操作3.1 Stream无状态操作3.2 Stream有状态操作3.3 Stream短路操作3.4 Stream非短路操作4. 测试验证1. Stream概述1.1 Stream简介对于Java8提供的Stream与Lambda表达式结合使用的功能,每个人看法不一,这种语法糖操作确实带来了一定的便利,使代码更加的简洁,但同时也在降低代码的可读性,代码是给人读的原创 2022-04-27 16:12:37 · 1460 阅读 · 0 评论 -
Mybatis特殊字符转义查询问题
Mybatis特殊字符转义查询问题1. 问题描述2. 解决方案3. 设计实现3.1 环境准备3.2 代码实现3.3 拦截器实现4. 测试验证1. 问题描述MyBatis作为目前最常用的ORM数据库访问持久层框架,其本身支持动态SQL存储映射等高级特性也非常优秀,通过Mapper文件采用动态代理模式使SQL与业务代码相解耦,日常开发中使用也非常广泛。正常模糊匹配查询时是没有什么问题的,但是如果需要模糊查询字段含有特殊字符比如% _ / 等时就会出现查询不准确的问题。本文就是通过mybatis拦截器实现特原创 2022-04-22 16:41:45 · 2915 阅读 · 5 评论 -
Java定时任务调度框架
Java定时任务调度框架1. 定时任务调度概述1.1 业务场景概述1.2 任务调度场景1.3 调度任务分类2. 定时任务调度详解2.1 Timer2.2 ScheduledExecutorService2.3 SpringTask2.4 Quartz2.5 xxl-job2.6 elastic-job1. 定时任务调度概述1.1 业务场景概述日常开发中定时任务使用场景很多,比如支付系统每天凌晨定时清算对账;未支付订单超时回收;商品定时上下架等等。定时任务框架选择有很多,面对不同的业务场景可以选择不同的原创 2022-04-14 15:31:45 · 11174 阅读 · 1 评论 -
SpringBoot配置XSS过滤器基于mica-xss
SpringBoot配置XSS过滤器基于mica-xss1. 业务概述1.1 XSS简介1.2 需求概述2. mica概述2.1 mica简介2.1 mica对应springboot版本信息2.2 mica核心功能2.3 mica协议文档3. SpringBoot集成mica-xss3.1 maven依赖3.2 代码实现3.3 测试验证1. 业务概述1.1 XSS简介XSS攻击即跨站点脚本攻击(Cross Site Script),为不和层叠样式表(Cascading Style Sheets, CS原创 2022-04-04 09:48:24 · 4276 阅读 · 1 评论 -
常见网络攻击详解
常见网络攻击详解1. 网络攻击定义2. 网络攻击分类2.1 主动攻击2.2 被动攻击3. 网络攻击方式3.1 XSS攻击3.2 CSRF攻击3.3 SQL注入3.4 DoS攻击3.5 DDOS攻击3.6 ARP攻击3.7 中间人攻击3.8 暴力破解攻击3.9 网络钓鱼1. 网络攻击定义网络攻击(Cyber Attacks,也称赛博攻击)是指针对计算机信息系统、基础设施、计算机网络或个人计算机设备的,任何类型的进攻动作。对于计算机和计算机网络来说,破坏、揭露、修改、使软件或服务失去功能、在没有得到授权的情原创 2022-04-04 09:12:46 · 6131 阅读 · 2 评论 -
工作流框架Flowable
工作流框架Flowable1. Flowable概述1.1 Flowable简介1.2 Flowable与Activiti的区别2. Flowable说明1. Flowable概述1.1 Flowable简介Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等。TKJohn.github.io:https://tkjoh原创 2022-04-03 10:31:50 · 6571 阅读 · 0 评论 -
Java操作MongoDB详解
MongoDB详解1. MongoDB概述1.1 MongoDB简介1.2 MongoDB概念2. MongoDB安装2.1 MongoDB下载3. MongoDB操作4. MongoDB客户端工具5. MongoDB Java操作6. MongoDB集成SpringBoot1. MongoDB概述1.1 MongoDB简介什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。mongodb官网地址:https://www.mongodb.org.原创 2022-03-29 18:30:17 · 23504 阅读 · 2 评论 -
Java对象属性拷贝工具对比分析
Java对象属性拷贝工具详解1. 对象属性拷贝概述2. 对象属性拷贝工具2.1 拷贝工具对比2.2 拷贝工具验证3. 实现案例3.1 集合对象拷贝验证3.2 对象拷贝验证1. 对象属性拷贝概述在开发中经常遇到对象属性拷贝功能,而对象属性拷贝方式很多,比如手动set赋值,虽然麻烦,但是性能是最好的,其次MapStruct也是通过预编译完成,效率等同手动set,但是这两种相较于一些工具类稍微麻烦一些,一些常用的工具类方便简单,而且效率也相对不错,比如SpringBeanUtils,CgLib,hutoolB原创 2022-03-26 19:06:57 · 4917 阅读 · 0 评论 -
Java序列化与反序列化详解
Java序列化与反序列化1. 序列化与反序列化概述1.1 序列化与反序列化简介1.2 序列化与反序列化作用1.3 序列化与反序列化工具2. 常用序列化工具详解2.1 serialVersionUID2.2 fastjson2.3 Kryo2.4 jackson2.5 gson2. 代码实现1. 序列化与反序列化概述1.1 序列化与反序列化简介序列化:把对象转换为字节序列的过程称为对象的序列化。反序列化:把字节序列恢复为对象的过程称为对象的反序列化。1.2 序列化与反序列化作用序列化与反序列化的作原创 2022-03-24 18:24:47 · 1503 阅读 · 0 评论 -
JDK自带JVM分析工具详解
JDK自带JVM分析工具详解1. JVM分析工具概述1.1 JVM分析工具简介1.2 JVM分析工具分类2. JVM分析工具详解2.1 idea环境配置2.2 jps2.3 jinfo2.4 jvisualvm2.5 jconsole2.6 jstat2.7 jstack2.8 jcmd2.9 jmap1. JVM分析工具概述1.1 JVM分析工具简介在日常应用开发过程中对JVM状态指标等健康状况的分析是必不可少的操作,尤其是在出现一些内存,GC,线程等问题,JVM分析工具能够很好的帮助我们定位分析问原创 2022-03-22 15:02:24 · 10645 阅读 · 0 评论 -
Java线程池ThreadPool详解
Java线程池ThreadPool详解1. 线程池概述1.1 线程池简介1.2 线程池特点1.3 线程池解决的问题2. 线程池原理分析2.1 线程池总体设计2.6 线程池流转状态2.2 线程池执行流程2.3 线程池核心参数2.4 线程池饱和策略2.5 线程池阻塞队列2.7 关闭线程池3. 线程池工具类4. Executors创建线程池注意事项5. 线程池手动创建6. SpringBoot创建线程池1. 线程池概述1.1 线程池简介线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出原创 2022-02-16 15:18:05 · 6880 阅读 · 0 评论 -
Spring框架详解New
Spring框架详解New1. Spring框架概述2. Spring框架特点3. Spring框架优缺点3.1 Spring框架优点3.2 Spring框架缺点4. Spring框架设计模式5. Spring IoC5.1 Spring IoC概念5.2 Spring BeanFactory5.3 Spring ApplicationContext5.4 BeanFactory 和 ApplicationContext的区别5.5 Spring DI 依赖注入5.6 WebApplication 体系架构原创 2022-02-11 15:17:39 · 1621 阅读 · 0 评论 -
YML解析框架SnakeYaml简介
YML解析框架SnakeYaml简介1. SnakeYaml概述1.1 yml简介1.2 SnakeYaml简介2. SnakeYaml实现验证2.1 snakeyml依赖2.2 snakeyml实现验证1. SnakeYaml概述1.1 yml简介yaml简称yml,什么是yml,官方解释说,yml不是标记性语言,YAML 是一种人性化的数据序列化,适应所有编程语言的语言。yml官网地址:https://yaml.org/1.2 SnakeYaml简介SnakeYaml就是用于解析YAML,原创 2022-01-25 15:49:02 · 16504 阅读 · 0 评论 -
Java字节码框架ASM简介
Java字节码框架ASM简介1. ASM概述1.1 ASM简介1.2 ASM提供API1.3 ASM核心模块2. ASM应用2.1 ASM依赖2.2 代码实现2.3 测试验证1. ASM概述1.1 ASM简介ASM 是一个通用的 Java 字节码操作和分析框架。一般用来动态生成类或者增强既有类的功能。也就是既可以创建class文件,也可以修改class文件。ASM官网地址:https://asm.ow2.io/index.html1.2 ASM提供APIASM提供了两种APICore API原创 2022-01-25 12:17:17 · 9169 阅读 · 0 评论 -
Java虚拟机JVM详解
Java虚拟机JVM详解1. JVM基本结构1.1 JVM概念1.2 JVM组成1.3 运行时数据区2.类加载机制2.1 类生命周期2.2 类加载器2.3 类加载机制-- 2个机制3. GC算法和垃圾收集器3.1 如何判断对象被回收3.2 如何判断一个常量是废弃常量3.3 如何判断一个类是无用的类3.4 垃圾回收算法3.5 垃圾收集器3.6 怎么选择垃圾收集器?4. GC调优4.1 JVM调优指标4.2 GC调优步骤4.3 GC调优参数5. JVM调优工具5. JVM相关问题5.1 无意识的锁应用5.2 对原创 2022-01-10 18:15:08 · 617 阅读 · 1 评论 -
MySql日期类型YEAR、TIME、DATE、DTAETIME、TIMESTAMP
MySql日期类型DTAETIME、TIMESTAMP、DATE、TIME、YEAR1. MySql日期类型区别2. YEAR类型3. TIME 类型3. DATE 类型4. DATETIME 类型5. TIMESTAMP 类型5.1 TIMESTAMP 概述5.2 TIMESTAMP 场景1. MySql日期类型区别类型名称大小格式范围用途YEAR1YYYY1901 ~ 2155日期值TIME3HH:MM:SS-838:59:59 ~ 838:59:59原创 2022-01-04 11:08:29 · 827 阅读 · 1 评论 -
Java操作Excel三种方式POI、Hutool、EasyExcel
Java操作Excel三种方式POI、Hutool、EasyExcel1. Java操作Excel概述1.1 Excel需求概述1.2 Excel操作三种方式对比2. ApachePOIExcel2.1 ApachePOI简介2.2 ApachePOI功能结构2.3 ApachePOI官网说明2.4 ApachePOI实现验证3. HutoolExcel3.1 Hutool简介3.2 Hutool组件3.1 HutoolExcel实现验证4. EasyExcel4.1 EasyExcel简介4.2 Huto原创 2021-12-30 13:16:01 · 5567 阅读 · 3 评论 -
MyBatis缓存机制详解
MyBatis缓存机制详解1. MyBatis缓存1.1 MyBatis缓存概述1.2 MyBatis一二级缓存区别2. MyBatis一级缓存2.1 MyBatis一级缓存概述2.2 MyBatis一级缓存配置2.3 MyBatis一级缓存原理分析2.4 MyBatis一级缓存总结3. MyBatis二级缓存3.1 MyBatis二级缓存概述3.2 MyBatis二级缓存配置3.3 MyBatis二级缓存原理分析3.4 MyBatis二级缓存总结4. MyBatis缓存测试5. 参考文档1. MyBat原创 2021-12-28 15:19:29 · 2289 阅读 · 1 评论 -
MyBatis框架增删改查
MyBatis框架增删改查1. MyBatis框架概念2. MyBatis框架实现验证1. MyBatis框架概念市场上常见的ORM框架很多Hibernate,Struts,mybatis等,各有利弊,目前mybatis使用比较广泛。常见ORM框架,Object Relational Mappging 对象关系映射。简单的说,就是把数据库表和实体类及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表。这里只是简单认识感受一下mybatis的效果,与传统jdbc两种实现方式的对比,相比于jd原创 2021-12-24 18:09:42 · 245 阅读 · 1 评论