自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 文章汇总(Java篇)

本篇总结内容是作者2018年截至2022年的学习总结,后续将持续更新。作者将大部分业余的时间贡献给了代码实属不易,如果文章对你有帮助记得点赞收藏支持一下作者,你们的鼓励是作者最大的动力。...

2022-06-02 14:39:51 10979 2

原创 文章汇总(Spring和SpringCloud篇)

本篇总结内容是作者2018年截至2022年的学习总结,后续将持续更新。作者将大部分业余的时间贡献给了代码实属不易,如果文章对你有帮助记得点赞收藏支持一下作者,你们的鼓励是作者最大的动力。常用注册中心对比注册中心的产生背景:注册中心是微服务架构的核心,在传统架构中url繁多不方便管理,通过注册中心可以方便管理服务的和健康情况、负载均衡、服务保护。中间件: Nacos:SpringCloud Alibaba Nacos分布式配置中心 Consul:SpringBoot整合Consul搭建配置中心 SpringC

2022-06-01 13:32:40 10936

原创 SpringBoot常用定时器库整合(Java Timer、线程池、Quartz、Task)

定时器可用于做数据统计、年度报表、定时刷新token等。本章主要描述以下常用定时器库的用法:1.Java Timer 2.Java 线程池 3.Quartz 4.Spring Task

2022-09-05 20:09:04 11775 1

原创 二级缓存j2cache和SpringBoot整合

j2cache是开源的二级缓存库,支持实现:本地缓存Ehcache、Caffeine、远程缓存Redis、Memcached。常见解决方案 如一级缓存使用Ehcache、二级缓存使用Redis。上篇描述的阿里开源的jetcache,是支持二级缓存,只是相比j2cache不够灵活,还不够完善,前者是缓存统一操作规范,而j2cache是专注二级缓存库。

2022-09-04 13:59:58 11892

原创 统一缓存库jetcache和SpringBoot整合

jetcache是阿里开源缓存库的封装,它为不同的缓存解决方案提供统一的使用,它提供了比 Spring Cache 中更强大的注解。JetCache 中的注解支持原生 TTL,二级缓存,分布式环境下自动刷新,也可以Cache通过代码操作实例。目前支持本地缓存实现方式:Caffeine、LinkedHashMap。远程缓存实现:redis、tair。

2022-09-03 20:49:00 12127

原创 高性能本地缓存Caffeine和SpringBoot整合

Caffeine是开源的高性能本地缓存库,本地缓存优势在于单机,缺点就是无法共享数据。适合做一级缓存,redis做二级缓存。

2022-09-02 23:05:45 11574

原创 Spring自带缓存和缓存注解@Cacheable的使用

Spring缓存注解可以搭配本地缓存和第三方缓存中间件联合使用,Spring缓存自带缓存使用的是ConcurrentHashMap维护的Cache对象。

2022-09-02 18:05:03 11866

原创 MongDB安装与SpringBoot整合

MongoDB是开源高性能文档数据库,属于NoSQL的一种。数据格式没有固定,存储json数据。适用场景:前端数据库、商城用户数据存储、物联网数据存储。

2022-09-02 17:20:53 11323

原创 SpringBoot 空指针处理总结

DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值。@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值。@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值。@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值。@Size(max=, min=) 被注释的元素的大小必须在指定的范围内。@Past 被注释的元素必须是一个过去的日期。

2022-09-01 22:29:21 12160

原创 SpringBoot 日志总结

在日常开放中追踪和排查问题,使用System.out.println打印不方便管理,如输出的类,时间等。Logback:ceki首创log4j之后,又推出了logback “可靠、通用、快速而又灵活的Java日志框架”,其直接实现了SLF4J。还支持注解:@Log4j、@Log4j2、@JBossLog、@CommonsLog。SpringBoot默认门面采用:SLF4J,实现采用:logback。SLF4J:是门面的担当,本质是个空壳,用来适配各种日志。如上代码使用日志,每一个类都需要如下这段代码。...

2022-08-28 22:44:50 10524

原创 轻量级关系数据库SQLite的安装和SpringBoot整合

SQLite是轻量级的关系型数据库,适用于中小型应用场景:如安卓、网站、终端设备。并且轻量(服务端1M)、方便移植(只需要移动*.db文件到另外一台电脑)

2022-08-25 12:57:42 11604 1

原创 SpringBoot整合h2内存关系型数据库

H2是java开源内存关系型数据库,同时支持持久化,Windows下默认存储位置在 C:/Users/Administrator。相比mysql无需安装中间件,更轻,在某些业务场景适用。H2在SpringBoot中与内嵌的tomca形式一样,是内嵌的数据库,同时SpringBoot还提供了内嵌的数据库HSQL、Derby。

2022-08-24 22:29:35 11795

原创 SpringBoot 单元测试随机数据

pom.xml 引入依赖。

2022-08-24 21:40:34 11525

原创 SpringBoot整合Minio

application.yml 配置minio连接信息。

2022-08-22 21:41:14 11504

原创 SpringBoot整合FastDFS

application.yml 配置FastDFS连接信息。FastDFS操作类。测试 FastDFS。

2022-08-22 21:35:17 10926

原创 SpringBoot整合MybatisPlus

application.yml 配置数据库连接信息。

2022-08-22 21:03:15 11277

原创 SpringBoot整合Mybatis

application.yml 配置数据库连接信息。创建数据库操作类,本文采用注解版本。

2022-08-16 22:30:32 11274

原创 SpringBoot 单元测试整合JUnit

pom.xml 引入依赖。

2022-08-16 21:59:28 11226

原创 【SpringBoot教程】配置文件详细总结

配置文件优先级:application.properties > application.yml > application.yaml。临时属性指不写在配置文件,在外部启动项目添加参数。优先级高的会覆盖优先级低的配置。

2022-08-15 22:20:03 11394

原创 Hutool 工具类优雅非空验证

common lang3库常用的StringUtils、ObjectUtils用来做非空判断,Hutool库提供了工具类,并且功能更强大。

2022-08-11 12:44:02 18895

原创 Spring Initializr私服搭建和定制化模板

SpringInitializr是Spring官方提供,用来创建SpringBoot项目的脚手架。Spring官方SpringInitializrhttpsweb版本idea版本alibaba的SpringInitializrhttpsweb版本idea版本搭建私服的意义1.个人或者团队想定制一些私有化的脚手架,如alibaba把springcloudalibaba集成到脚手架中,方便开发者创建项目,其次可以推广其它产品。2.Spring官方脚手架慢。...

2022-07-31 11:44:37 12498 1

原创 Spring和SpringBoot简介

开源轻量级的Java开发框架,提高开发效率和可维护性,Spring如今是Java杀手级的框架,Java如今依然屹立不倒Spring有很大功劳。

2022-07-31 11:43:29 13151

原创 【SpringBoot教程】根据环境自动装配

SpringBoot利用SPI机制实现自动装配,如项目中使用FastDFS只要引入依赖,配置会自动被实例。根据业务需求,某些服务器只使用minio、某些服务只使用fastdfs。要实现即使导入了依赖也不会自动装配,而是根据环境自动装配。...

2022-07-30 10:22:26 10532

原创 拒绝加班,程序员开发的效率工具集

本文是作者日常开发中常用类库的整理,避免重复造轮子,提升开发效率减少加班时间,工具库涉及Hutool、commons-lang3、guava、Spring自带工具类。

2022-07-29 17:27:25 11408

原创 【Spring Web教程】SpringBoot 实现一应用多Tomcat容器

编写反向代理中间件的时候需要一个应用两个Tomcat,具体实现场景如下:一个虚拟机进程创建两个Tomcat容器:主Tomcat、从Tomcat。主Tomcat:处理前端应用请求、websocket处理从Tomcat:占用多个端口、处理多个反向代理请求。LocalCache:双Tomcat共享数据、WebSocket会话信息...

2022-07-27 18:07:21 12119 1

原创 【Spring Web教程】SpringBoot 实现一应用多端口

一应用多端口通俗来讲是指启动一个springboot项目同时监听多个端口。使用场景:1.反向代理中间件、动态网关实现。上篇文章介绍的是SpringBoot 反向代理的实现,简单接口转发可以满足,但仅仅依靠单个端口配置路由转发无法满足多域名多站点的反向代理,因为前端静态文件CSS、JS是相对路径。而多端口就能满足需求,Nginx通过多端口,实现的一个Nginx服务代理多个Web前端站点。......

2022-07-26 23:37:51 13375

原创 【Spring Web教程】SpringBoot 实现反向代理和轻量级网关

反向代理:客户端请求服务端,服务端通过转发隐藏真实的地址。常用解决方案:1.Nginx2.SpringCloud 中的网关Gateway、zuul3.SpringBoot整合smiley-http-proxy-servlet本文采用第三种方式,该方式在不使用任何中间件的情况实现轻量级网关。...

2022-07-25 23:02:45 13073

原创 【Spring Web教程】SpringBoot 整合WebSocket

WebSocket是一种服务端和网页之间的通讯协议,服务端跟网页保持着长连接,可以达到服务端主动给网页发消息的功能。//socket.send("这是来自客户端的消息"+location.href+newDate());常用场景Web聊天室、通知和紧急告警、网页消息通信、物联网通讯。//发现消息进入开始处理前端触发逻辑。3.编写WebSocket处理器路由。2.编写WebSocket处理器。"websocket发生了错误""websocket已打开""websocket已关闭"...

2022-07-25 21:57:44 11190

原创 【SpringSecurity教程】防止XSS攻击

XSS是跨站脚本攻击,攻击者提交可执行的恶意脚本如(html/js/css),来影响网址的使用。演示如下:模拟XSS攻击:测试效果如下:如果攻击者的恶意请求,服务器将结果保存到数据库后,下次用户查询的时候,可想而知影响很大。1.Spring设置过滤器或者拦截器2.后端设置编码转义(将标签转义如将转义成),常见解决方案有Spring的HtmlUtils和Apache Commons3.设置X-XSS-Protection请求头4.前端展示层做处理本文主要描述 Spring设置编码转义,原理是将标签转义如将

2022-06-11 12:20:12 13991 8

原创 【SpringSecurity教程】认证 3.Form表单认证

Form表单模式是SpringSecurity内置的登录页,请求接口之前先再登录页登录,虽然可以自定义页面,但是该种方式适用传统前后端不分离模式。pom.xml启动类控制层form 表单认证基本配置类测试浏览器访问:http://localhost:8080/test输入用户名:terry,密码:terry123,即可访问接口。...

2022-06-11 12:19:36 10408 1

原创 【SpringSecurity教程】认证 2.Digest摘要认证

Digest(摘要) 认证是在请求接口之前要输入账号密码,是在Basic认证传输账号密码的基础上加密pom.xml启动类控制层Digest 摘要认证基本配置类测试浏览器访问:http://localhost:8080/test输入用户名:terry,密码:terry123,即可访问接口。与Basic认证不同的是,Digest认证请求头中的数据复杂的多。...

2022-06-10 17:55:25 10965

原创 【SpringSecurity教程】认证 1.Basic认证

Basic 认证是在请求接口之前要输入账号密码,是简单的Http验证模式。本章主要描述:SpringBoot如何整合Basic认证、后端Okhttp和前端Vue Axios如何请求Basic认证的接口。pom.xml启动类控制层Basic基本验证配置类。测试浏览器访问:http://localhost:8080/test输入用户名:terry,密码:terry123,即可访问接口。以Okhttp为例默认情况下请求会报错401无权限,如下:OkHttpTest整合Basic如下:打印如下:...

2022-06-10 15:36:30 11597

原创 09.RabbitMQ死信队列

在上篇中主要讲到了RabbitMQ手动响应消息,这篇主要讲到死信队列配置。前面讲到RabbitMQ重试多次配置让他放弃消费,这样会导致消息丢失,除了放弃消费,消息丢失的情况还会有以下这几种:尝试多次拒绝消费消息设置了过期时间消息队列满了保证消息不丢失就需要用死信队列了,简单的讲就是指将消息放到另外一个队列,另外有一个消费者消费。死信交换机配置类@Configurationclass DeadExchangeConfig{ /** * 创建死信队列 */

2022-06-09 08:15:38 10395

原创 【SpringBoot教程 事件】2.SpringBoot启动成功回调

上篇讲到了SpringBoot 七个生命周期回调事件函数,SpringBoot还提供了两种接口:、,先对生命周期定义更加方便。实现ApplicationRunner接口CommandLineRunner接口实现CommandLineRunner接口ApplicationRunner和CommandLineRunner本质上差不多,唯一不同的是参数类型不一样,ApplicationRunner比CommandLineRunner参数相对灵活。打印如下:...

2022-06-09 07:15:00 11200

原创 【SpringBoot教程 事件】3.SpringBoot自定义事件和发布订阅机制

前面讲到了SpringBoot 七个生命周期回调事件函数,SpringBoot底层是在jdk中的类和之上封装实现的发布订阅机制。同时也提供了自定义事件定义,该种方式是一种设计模式–观察者设计模式,优势在于解耦,模块和模块耦合度降低方便扩展。如下实现一个需求:注册用户,然后插入到数据库,另外还需要给用户发邮件和短信。1.创建用户注册事件基类2.用户注册,发布事件例子。3.发送短信,订阅事件例子。4.发送邮件,订阅事件例子。5.测试类,模拟用户注册。打印如下:...

2022-06-08 16:06:24 11097

原创 【SpringBoot教程 事件】1.SpringBoot应用容器七个生命周期回调和SpringBean的生命周期总结

SpringBoot 容器有如下七种回调事件:1.Starting:SpringApplication被初始化事件。2.EnvironmentPrepared:Environment对象创建之后,Content创建之前。3.ContextInitialized:ApplicationContext初始化后,bean还没初始化。4.Prepared:bean被定义后,context对象刷新之前。5.Started:Context被刷新之后,启动器被调用之前。6.Ready:启动器调用后,整个Spri

2022-06-08 15:17:29 11177

原创 SpringBoot整合kafka

在SpringBoot官方对kafka的依赖没有使用starter,而是spring-kafka,如下:pom.xmlapplication.yml内容启动类测试类打印如下:

2022-06-08 07:45:00 10845

原创 docker安装kafka

本文采用docker-compose安装kafka,kafka环境是建立在zookeeper之上,安装kafka之前先安装zookeeper。创建docker-compose内容如下:运行查看运行容器运行成功日志如下:kafka安装成功会在zookeeper生成数据。使用zk客户端工具zktool 或者 ZooInspector。本文使用ZooInspector,能够看到如下图就说明zk和kafka环境搭建成功。......

2022-06-08 07:30:00 10681

原创 【SpringBoot搜索】4.ElasticSearch高级查询与SpringBoot整合

ES中两种查询方式,第一种是简易查询,第二种是DSL(JSON结构化查询)。根据id获取查询语句查询结果查询所有查询结果批量查询id查询结果复杂查询查询名称是小米的查询金额在3000~4000之间查询金额在3000~4000之间、按金额排序、并且分页DSL查询DSL:传递JSON的结构化查询,相对简易更加灵活。term是分词精准查询,如下根据名字匹配。matchmatch是分词模糊匹配,如下根据名字模糊匹配。filterfilter是根据条件过滤,按条件过滤 金额 200

2022-06-07 08:15:00 10357

原创 【SpringBoot搜索】3.SpringBoot整合ElasticSearch

上篇文章主要描述了ES的安装和ES可视化管理工具kibana,本篇内容主要描述SpringBoot整合ES实现增删改查操作。SpringBoot 在2.0之前对ES支持不友好,只能通过EsTemplate操作ES。本文使用的是SpringBoot 2.4.2版本,对es操作如下:1.实现CrudRepository、ElasticsearchRepository接口2.ElasticsearchRestTemplate3.ElasticsearchOperations。本篇文章主要通过CrudReposit

2022-06-07 07:45:00 10381

空空如也

空空如也

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

TA关注的人

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