自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

pdai的博客

Java全栈知识体系 https://www.pdai.tech

  • 博客(60)
  • 资源 (13)
  • 收藏
  • 关注

原创 一文搭建Vuepress博客/文档系统:搭建,导出,SEO,自动编译和部署,域名,HTTPS,备案等

文章内容目录文章内容目录第一部分 - 博客/文档系统的搭建博客/文档搭建前言有哪些选择我做了哪些尝试自己写:我用java手写了一个系统Docisify等工具博客园等平台为什么现在用vuepress博客/文档工具vuepress介绍vuepress是如何工作的?vuepress 一些特性vuepress 插件架构博客/文档基础搭建brew安装或者...

2019-11-08 12:45:29 2292 5

原创 现在Java 桌面应用程序能做到什么程度(Spring Boot+JavaFX2开发)

Spring Boot - JavaFX 2.0应用很多人对Java开发native程序第一反应还停留在暗灰色单一风格的Java GUI界面,开发方式还停留在AWT或者Swing。本文主要基于SpringBoot和JavaFX开发一个Demo给你展示Java Native应用可以做到什么样的程度。当然JavaFX 2.0没有流行起来也是有原因的,而且目前native的选择很多,前端是个框架都会...

2019-10-31 08:40:46 7062 3

原创 一文全面学习后端Java 全栈知识体系

最强最全的Java后端知识体系最全的Java后端知识体系Java基础算法和数据结构Spring相关数据库相关方法论工具清单文档最全的Java后端知识体系最全的Java后端知识体系Java基础算法和数据结构Spring相关数据库相关方法论工具清单文档...

2019-10-17 17:08:00 3151 6

原创 SpringBoot定时任务 - Spring自带的定时任务是如何实现的?有何注意点?

通过前文我们基本梳理了定时任务体系:Timer和ScheduledExecutorService是JDK内置的定时任务方案,以及Netty内部基于时间轮实现的HashedWheelTimer,再到Quartz以及分布式任务(ElasticJob,xxl-job等等)。对于Springboot简单应用,还可以采用Spring自带task方式,本文主要介绍Spring自带的Task的案例和其实现方式。@pdai。...

2022-08-05 07:56:49 348 1

原创 SpringBoot定时任务 - 开箱即用分布式任务框架xxl-job

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。如下内容来源于xxl-job官网1、简单:支持通过Web页面对任务进行CRUD操作,操作简单,一分钟上手;2、动态:支持动态修改任务状态、启动/停止任务,以及终止运行中任务,即时生效;3、调度中心HA(中心式):调度采用中心式设计,“调度中心”自研调度组件并支持集群部署,可保证调度中心HA;...

2022-08-03 07:38:27 396

原创 SpringBoot定时任务 - 什么是ElasticJob?如何集成ElasticJob实现分布式任务调度?

使用 ElasticJob 能够让开发工程师不再担心任务的线性吞吐量提升等非功能需求,使他们能够更加专注于面向业务编码设计; 同时,它也能够解放运维工程师,使他们不必再担心任务的可用性和相关管理需求,只通过轻松的增加服务节点即可达到自动化运维的目的。ElasticJob-Lite: 定位为轻量级无中心化解决方案,使用 jar 的形式提供分布式任务的协调服务。Elasticjob-lite的案例- SpringBoot集成定时任务 - 分布式Elasticjob-lite方式ElasticJob-Cloud:

2022-08-02 07:40:03 253

原创 SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。它的特点如下注: 上图来源于https://www.cnblogs.com/jijm123/p/14240320.html当程序突然被中断时,如断电,内存超出时,很有可能造成任务的丢失。 可以将调度信息存储到数据库里面,进行持

2022-08-01 07:48:10 2864 1

原创 SpringBoot集成文件 - 如何基于POI-tl和word模板导出庞大的Word文件?

如下内容来源于,poi-tl官网。poi-tl(poitemplatelanguage)是Word模板引擎,使用Word模板和数据创建很棒的Word文档。优势它还支持自定义插件,如下是官网代码仓库支持的特性Feature✅Text✅Picture✅Table✅Chart✅Markdown✅WordSDT✅Textbox✅Style✅Merge。...

2022-07-31 17:11:20 1047

原创 一文深入浅出理解国产开源木兰许可系列协议

木兰系列许可证包含“木兰宽松许可证”和“木兰公共许可证”(后续可能还有更多),均由北京大学作为牵头单位,依托全国信标委云计算标准工作组和中国开源云联盟,联合开源生态圈产学研优势团队和个体、尤其是开源法务和律师,起草、修订并发布。木兰开源许可证第一个版本于2019年8月5日发布,第二版本于2020年1月发布。PSMulanPSL是国内首个被OSI认定的“国产开源软件协议”。MulanPSLv2版本通过OSI认证,是否意味着v1本身就不符合开源定义,在开源生态中不具有实际意义?。...

2022-07-21 07:37:29 1197

原创 SpringBoot数据库管理 - 用flyway对数据库管理和迁移

Flyway是一款数据库迁移(migration)工具。简单点说,就是在你部署应用的时候,帮你执行数据库脚本的工具。Flyway支持SQL和Java两种类型的脚本,你可以将脚本打包到应用程序中,在应用程序启动时,由Flyway来管理这些脚本的执行,这些脚本被Flyway称之为migration。PS本质上和liquibase机制一致。按照verion的顺序(和数据库中的更新记录对比,找到未更新的),更新如下更新记录如下。...

2022-07-20 07:28:45 452

原创 SpringBoot数据库管理 - 用Liquibase对数据库管理和迁移?

Liquibase是一个用于用于跟踪、管理和应用数据库变化的开源工具,通过日志文件(changelog)的形式记录数据库的变更(changeset),然后执行日志文件中的修改,将数据库更新或回滚(rollback)到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移。其优点主要有以下支持几乎所有主流的数据库,目前支持包括Oracle/SqlServer/DB2/MySql/Sybase/PostgreSQL等各种数据库为何会出现Liquibase这类工具呢。..

2022-07-19 07:31:23 220

原创 SpringBoot接口 - API接口有哪些不安全的因素?如何对接口进行签名?

**}

2022-07-18 07:26:25 1004

原创 SpringBoot接口 - 如何生成接口文档之非侵入方式(通过注释生成)Smart-Doc?

smart-doc是一款同时支持JAVARESTAPI和ApacheDubboRPC接口文档生成的工具,smart-doc在业内率先提出基于JAVA泛型定义推导的理念,完全基于接口源码来分析生成接口文档,不采用任何注解侵入到业务代码中。你只需要按照java-doc标准编写注释,smart-doc就能帮你生成一个简易明了的Markdown、HTML5、PostmanCollection2.0+、OpenAPI3.0+的文档。零注解、零学习成本、只需要写标准JAVA注释。...

2022-07-15 07:32:23 183

原创 SpringBoot接口 - 如何生成接口文档之Swagger技术栈?

OpenAPI 规范(OAS)定义了一个标准的、语言无关的 RESTful API 接口规范,它可以同时允许开发人员和操作系统查看并理解某个服务的功能,而无需访问源代码,文档或网络流量检查(既方便人类学习和阅读,也方便机器阅读)。正确定义 OAS 后,开发者可以使用最少的实现逻辑来理解远程服务并与之交互。此外,文档生成工具可以使用 OpenAPI 规范来生成 API 文档,代码生成工具可以生成各种编程语言下的服务端和客户端代码,测试代码和其他用例。官方GitHub地址: OpenAPI-Specificat

2022-07-14 07:27:27 160

原创 SpringBoot接口 - 如何优雅的写Controller并统一异常处理?

如果我们不统一的处理异常,经常会在controller层有大量的异常处理的代码, 比如:那怎么实现统一的异常处理,特别是结合参数校验等封装?对于400参数错误异常对于自定义异常对于其它异常Controller接口(接口中无需处理异常)运行测试这里用postman测试下[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DH0L3pwF-1657668397711)(https://pdai.tech/_images/spring/springboot/springbo

2022-07-13 07:27:17 327

原创 SpringBoot接口 - 如何优雅的对参数进行校验?

后端对前端传过来的参数也是需要进行校验的,如果在controller中直接校验需要用大量的if else做判断以添加用户的接口为例,需要对前端传过来的参数进行校验, 如下的校验就是不优雅的:针对这个普遍的问题,Java开者在Java API规范 (JSR303) 定义了Bean校验的标准validation-api,但没有提供实现。hibernate validation是对这个规范的实现,并增加了校验注解如@Email、@Length等。Spring Validation是对hibernate vali

2022-07-12 07:22:42 188

原创 SpringBoot接口 - 如何优雅的对接口返回内容统一封装?

Representational State Transfer,翻译是“表现层状态转化”。可以总结为一句话:REST 是所有 Web 应用都应该遵守的架构设计指导原则。面向资源是 REST 最明显的特征,对于同一个资源的一组不同的操作。资源是服务器上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词。REST 要求,必须通过统一的接口来对资源执行各种操作。对于每个资源只能执行一组有限的操作。符合 REST 设计标准的 API,即 RESTful API。REST 架构设计,遵循的各项标准和准

2022-07-11 07:16:43 314

原创 SpringBoot开发 - 什么是热部署和热加载?devtool的原理是什么?

严格意义上,我们需要区分下热部署和热加载, 对于Java项目而言:热部署热加载LiveLoad是提供浏览器客户端自动加载更新的工具,分为LiveLoad服务器和Liveload浏览器插件两部分; devtools中已经集成了LiveLoad服务器,所以如果我们开发的是web应用,并且期望浏览器自动刷新, 这时候可以考虑LiveLoad.同一时间只能运行一个LiveReload服务器。 开始应用程序之前,请确保没有其他LiveReload服务器正在运行。如果从IDE启动多个应用程序,则只有第一个应用程序将支持

2022-07-10 17:44:10 285

原创 SpringBoot开发 - 如何定制自己的Banner?还能用图片?

我们在启动Spring Boot程序时,有如下Banner信息:那么如何自定义成自己项目的名称呢?在application.yml中添加配置在resource下创建banner.txt,内容自定义:修改后,重启的app的效果SpringApplication还可以设置自定义的Banner的接口类[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4SGYeFwx-1657363965931)(https://pdai.tech/_images/spring/springboo

2022-07-09 18:53:25 351

原创 [推荐]深入浅出学习Spring框架系列

本系列主要介绍Spring框架整体架构,Spring的核心IOC,AOP的案例和具体实现机制;以及SpringMVC框架的案例和实现机制。

2022-07-07 08:04:25 153

原创 Spring框架系列(14) - SpringMVC实现原理之DispatcherServlet处理请求的过程

前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet处理请求的过程的源码解析。本文是第二篇:DispatcherServlet处理请求的过程的源码解析。...

2022-07-06 07:35:32 369

原创 Spring框架系列(13) - SpringMVC实现原理之DispatcherServlet的初始化过程

前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet处理请求的过程的源码解析。本文是第一篇:DispatcherServlet的初始化过程的源码解析。...

2022-07-05 07:25:48 379

原创 Spring框架系列(12) - Spring AOP实现原理详解之JDK代理实现

JDK动态代理是有JDK提供的工具类Proxy实现的,动态代理类是在运行时生成指定接口的代理类,每个代理实例(实现需要代理的接口)都有一个关联的调用处理程序对象,此对象实现了InvocationHandler,最终的业务逻辑是在InvocationHandler实现类的invoke方法上。jdk代理不需要任何依赖。定义实体User被代理的类和接口接口如下实现类如下:JDK代理类代理类如下:使用代理启动类中指定代理目标并执行。简单测试我们启动上述类main 函数,执行的结果如下:JDK

2022-07-04 07:42:12 160

原创 Spring框架系列(11) - Spring AOP实现原理详解之Cglib代理实现

我们在前文中已经介绍了SpringAOP的切面实现和创建动态代理的过程,那么动态代理是如何工作的呢?本文主要介绍Cglib动态代理的案例和SpringAOP实现的原理。

2022-07-02 10:54:45 393

原创 Spring框架系列(10) - Spring AOP实现原理详解之AOP代理的创建

同时我们也总结了Spring AOP初始化的过程,具体如下:创建代理的方法是postProcessAfterInitialization:如果bean被子类标识为代理,则使用配置的拦截器创建一个代理wrapIfNecessary方法主要用于判断是否需要创建代理,如果Bean能够获取到advisor才需要创建代理获取所有的Advisor我们看下获取所有advisor的方法getAdvicesAndAdvisorsForBean通过findEligibleAdvisors方法获取advisor, 如果获

2022-07-01 07:22:00 163

原创 Spring框架系列(9) - Spring AOP实现原理详解之AOP切面的实现

本文主要介绍Spring AOP原理解析的切面实现过程(将切面类的所有切面方法根据使用的注解生成对应Advice,并将Advice连同切入点匹配器和切面类等信息一并封装到Advisor,为后续交给代理增强实现做准备的过程)...

2022-06-30 07:26:05 322

原创 Spring框架系列(8) - Spring IOC实现原理详解之Bean实例化(生命周期,循环依赖等)

上文,我们看了IOC设计要点和设计结构;以及Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的;容器中存放的是Bean的定义即BeanDefinition放到beanDefinitionMap中,本质上是一个`ConcurrentHashMap`;并且BeanDefinition接口中包含了这个类的Class信息以及是否是单例等。那么如何从BeanDefinition中实例化Bean对象呢,这是本文主要.....

2022-06-29 05:52:58 129

原创 Spring框架系列(7) - Spring IOC实现原理详解之IOC初始化流程

上文,我们看了IOC设计要点和设计结构;紧接着这篇,我们可以看下源码的实现了:Spring如何实现将资源配置(以xml配置为例)通过加载,解析,生成BeanDefination并注册到IoC容器中的

2022-06-28 08:42:53 147

原创 Spring框架系列(6) - Spring IOC实现原理详解之IOC体系结构设计

在对IoC有了初步的认知后,我们开始对IOC的实现原理进行深入理解。本文将帮助你站在设计者的角度去看IOC最顶层的结构设计。

2022-06-27 08:44:50 212

原创 Spring框架系列(4) - 深入浅出Spring核心之面向切面编程(AOP)

本节将在此基础上进一步解读AOP的含义以及AOP的使用方式;后续的文章还将深入AOP的实现原理:AOP最早是AOP联盟的组织提出的,指定的一套规范,spring将AOP的思想引入框架之中,通过预编译方式和运行期间动态代理实现程序的统一维护的一种技术,我们将记录日志功能解耦为日志切面,它的目标是解耦。进而引出AOP的理念:就是将分散在各个业务逻辑代码中相同的代码通过横向切割的方式抽取到一个独立的模块中!OOP面向对象编程,针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。而

2022-06-23 19:40:17 117

原创 Spring框架系列(3) - 深入浅出Spring核心之控制反转(IOC)

本节将在此基础上进一步解读IOC的含义以及IOC的使用方式;后续的文章还将深入IOC的实现原理:如果你有精力看英文,首推 Martin Fowler大师的 Inversion of Control Containers and the Dependency Injection pattern;其次IoC作为一种设计思想,不要过度解读,而是应该简化理解,所以我这里也整合了 张开涛早前的博客IoC基础并加入了自己的理解。Spring里面的bean就类似是定义的一个组件,而这个组件的作用就是实现某个功能的,这里所

2022-06-23 19:38:32 140

原创 Spring框架系列(2) - Spring简单例子引入Spring要点

上文中我们简单介绍了Spring和Spring Framework的组件,那么这些Spring Framework组件是如何配合工作的呢?本文主要承接上文,向你展示Spring Framework组件的典型应用场景和基于这个场景设计出的简单案例,并以此引出Spring的核心要点,比如IOC和AOP等;在此基础上还引入了不同的配置方式, 如XML,Java配置和注解方式的差异。......

2022-06-21 20:09:11 298

原创 Spring框架系列(1) - Spring和Spring框架组成

要谈Spring的历史,就要先谈J2EE。J2EE应用程序的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功,因为开发效率,开发难度和实际的性能都令人失望。曾经使用过EJB开发JAVA EE应用的人,一定知道,在EJB开始的学习和应用非常的艰苦,很多东西都不能一下子就很容易的理解。EJB要严格地实现各种不同类型的接口,类似的或者重复的代码大量存在。而配置也是复杂和单调,同样使用JNDI进行对象查找的代码也是单调而枯燥。虽然有一

2022-06-20 19:37:55 156

原创 Redis入门 - 数据类型:Stream详解

Redis5.0 中还增加了一个数据类型Stream,它借鉴了Kafka的设计,是一个新的强大的支持多播的可持久化的消息队列。@pdaiRedis入门 - 数据类型:Stream详解为什么会设计StreamStream详解Stream的结构增删改查独立消费消费组消费信息监控更深入理解Stream用在什么样场景消息ID的设计是否考虑了时间回拨的问题?消费者崩溃带来的会不会消息丢失问题?消费者彻底宕机后如何转移给其它消费者处理?坏消息问题,Dead Letter,死信.

2021-04-15 20:00:49 858

原创 Redis入门 - Redis概念和基础

Redis入门 - Redis概念和基础Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。Redis入门 - Redis概念和基础什么是Redis官方资料为什么要使用RedisRedis的使用场景热点数据的缓存限时业务的运用计数器相关问题分布式锁延时操作排行榜相关问题点赞、好友等相互关系的存储简单队列参考文章什么是R

2021-04-12 22:06:35 470

原创 Tomcat详解系列(3) - 源码分析准备和分析入口

Tomcat - 源码分析准备和分析入口上文我们介绍了Tomcat的架构设计,接下来我们便可以下载源码以及寻找源码入口了。@pdaiTomcat - 源码分析准备和分析入口源代码下载和编译下载二进制包和源码编译源码理解编译后模块从启动脚本定位Tomcat源码入口startup.batcatalina.bat参考文章源代码下载和编译首先是去官网下载Tomcat的源代码和二进制安装包,我这里分析最新的Tomcat9.0.39稳定版本https://tomcat.

2021-03-19 09:13:01 204

原创 Tomcat详解系列(2) - 理解Tomcat架构设计

Tomcat - 理解Tomcat架构设计前文我们已经介绍了一个简单的Servlet容器是如何设计出来,我们就可以开始正式学习Tomcat了,在学习开始,我们有必要站在高点去看看Tomcat的架构设计。@pdaiTomcat - 理解Tomcat架构设计准备知识Tomcat和Catalina是什么关系?什么是Servlet?Tomcat 总结架构从组件的角度看从web.xml配置和模块对应角度从一个完整请求的角度来看从源码的设计角度看从后续深入理解的角度准备

2021-03-18 09:21:14 194

原创 Tomcat详解系列(1) - 如何设计一个简单的web容器

Tomcat - 如何设计一个简单的web容器在学习Tomcat前,很多人先入为主的对它的认知是巨复杂的;所以第一步,在学习它之前,要打破这种观念,我们通过学习如何设计一个最基本的web容器来看它需要考虑什么;进而在真正学习Tomcat时,多把重点放在它的顶层设计上,而不是某一块代码上, 思路永远比具体实现重要的多。@pdaiTomcat - 如何设计一个简单的web容器写在前面基础认知:如何实现服务器和客户端(浏览器)的交互HTTP协议SocketSeverSocket一个简

2021-03-17 09:21:07 217 2

原创 常用开发库 - MapStruct工具库详解

常用开发库 - MapStruct工具库详解MapStruct是一款非常实用Java工具,主要用于解决对象之间的拷贝问题,比如PO/DTO/VO/QueryParam之间的转换问题。区别于BeanUtils这种通过反射,它通过编译器编译生成常规方法,将可以很大程度上提升效率。@pdai为什么会引入MapStruct这类工具首先看下这类工具出现的背景。@pdaiJavaBean 问题引入在开发的时候经常会有业务代码之间有很多的 JavaBean 之间的相互转化,比如PO/DTO/VO/Query

2021-03-16 09:12:21 599

原创 单元测试 - SpringBoot2+Mockito实战

单元测试 - SpringBoot2+Mockito实战在真实的开发中,我们通常是使用SpringBoot的,目前SpringBoot是v2.4.x的版本(SpringBoot 2.2.2.RELEASE之前默认是使用 JUnit4,之后版本默认使用Junit5);所以我们写个基于SpringBoot2.4+H2的内存库的简单例子,同时加点必要的单元测试。@pdai文章目录单元测试 - SpringBoot2+Mockito实战SpringBoot对单测试的差异项目实践Demo程序准备测试类Util

2021-03-12 09:40:59 496

基于java的网上商城的设计.rar

基于java的网上商城的设计.rar基于java的网上商城的设计.rar基于java的网上商城的设计.rar基于java的网上商城的设计.rar基于java的网上商城的设计.rar基于java的网上商城的设计.rar基于java的网上商城的设计.rar

2010-06-07

ASP秀网页特效(CHM).chm

ASP秀网页特效(CHM).chm,ASP秀网页特效(CHM).chm,ASP秀网页特效(CHM).chm,ASP秀网页特效(CHM).chm,ASP秀网页特效(CHM).chm,ASP秀网页特效(CHM).chm

2010-06-07

ASP+SQL教材大全(HTML)

ASP+SQL教材大全(HTML),打包下载

2009-10-17

NIIT J2ME中文课件下载

NIIT J2ME 中文课件 下载,GNIIT软件工程师

2009-10-17

mysql 5.1中文版帮助文档

mysql 5.1帮助文档,非常的有用。中文版。

2009-10-17

NIIT JAVA中文课件打包下载

NIIT JAVA中文课件打包下载!!非常有用!中文版 的哦!

2009-07-02

NIIT ADO.NET中文课件打包下载

NIIT ADO中文课件打包下载!!使用参考十分方便!!

2009-07-02

NIIT XML中文课件打包下载

NIIT XML中文课件打包下载!!适合学习NIIT的英文版的教程的人学习参考!!

2009-07-02

NIIT 数据结构PPT

02_Data Structures and Algorithms!这是NIIT的数据结构的中文课件,非常有用适合于使用英文教材的学习者!!

2009-07-02

Spring Framework 开发参考手册

Spring Framework 开发参考手册!!适合JAVA的开发人员参考

2009-07-02

weblogic权威指南

weblogic 权威指南!!适合用于JAVA 企业级的开发使用参考,非常的方便!

2009-07-02

空空如也

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

TA关注的人

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