java学习笔记
文章平均质量分 79
contact97
这个作者很懒,什么都没留下…
展开
-
利用ZipInputStream(解压)/ZipOutputStream(压缩)文件夹
在操作.zip的压缩包时,可以用到高级流ZipInputStream和ZipOutputStream。.zip文件中的每个文件夹和文件都是一个ZipEntry对象。解压和压缩的本质就是操作每个ZipEntry对象,只能操作后缀为.zip的文件。原创 2023-10-20 11:07:47 · 1260 阅读 · 0 评论 -
SpringMVC——响应处理(2)之内容协商
根据**客户端**接收能力的不同,服务端返回不同的媒体类型的数据。这是由**HTTP协议**定的。Accept 首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。可使用 type/subtype 这种形式,一次指定多种媒体类型。如文本文件 **text/html**,支持text和html两种内容格式。若想要给显示的媒体类型增加优先级,则使用 q= 来额外表示权重值1,用分号(;)进行分隔。权重值 q 的范围是 0~1当服务器提供多种内容时,将会首先返回权重值最高的媒体类型。原创 2023-02-28 10:41:46 · 295 阅读 · 0 评论 -
SpringMVC——响应处理(1)【包含源码分析】
在解析上面这段代码的时候需要,需要了解一个概念内容协商(浏览器在发送请求的时候告知服务器端将接受怎样的返回数据类型,默认通过在请求头中设定Accept头)查看RequestResponseBodyMethodProcessor的supportsReturnType方法的实现源码如下。内容协商(浏览器默认以请求头的方式告知服务器端允许接受的内容类型)是一个处理消息转换的标准接口,不同的内容类型有具体的实现类去处理。服务器根据自身的能力,决定服务器能生产什么样的内容类型的数据。解析的结果正如归纳的步骤而言。原创 2023-02-27 18:16:46 · 379 阅读 · 0 评论 -
注解ConfigurationProperties、EnableConfigurationProperties的用法
ConfigurationProperties主要作用就是将prefix属性指定的前缀配置项的值绑定到这个JavaBean上 ,通过指定的前缀,来绑定配置文件中的配置。这里可以看到仅仅通过new关键字实例一个User对象,并没有看到set 属性的操作,这是Spring框架帮助我们做了这一步,所以User类不能忽略 get set 方法,否则无法将配置信息设置到对应的类属性中。ConfigurationProperties注解可用在类上和方法上(必须是配置类中的标注了@Bean注解的方法)。原创 2023-02-15 11:18:05 · 3500 阅读 · 1 评论 -
Cron表达式说明
corn表达式一共由七个子表达式组成,前六个必填,最后一个可填,子表达式之间用空格隔开。corn表达式允许特殊的字符(, - \* / ? L W C# )且含义如下:转载 2022-08-26 11:07:48 · 384 阅读 · 0 评论 -
SpringBoot——Dozer实现对象转换
2 DozerUtil对象转换工具类3 Dozer对象转换配置文件对象的转换离不开属性与属性间的映射关系。包括不同属性名,同属性名不同属性的类别的之间对象的转换关系。该转换关系离不开dozer的配置xml文件。该文件通常放在resourses 文件夹下,例如新建dozer-mapper.xml...原创 2022-06-08 21:34:30 · 683 阅读 · 0 评论 -
自定义Knife4j-spring-boot-starter
在前后台开发时,需要将接口信息封装成接口文档,可选用knife4j框架生成API接口文档。为了避免重复开发,可将该功能抽离成一个通用的功能,可自定义一个Knife4j-spring-boot-starter,在实际运用时,引用该starter的坐标即可。如何自定义一个starter,可参考我的上一篇文章Springboot Starter介绍以及实现自定义Starter2 定义SwaggerProperties3 定义SwaggerAutoConfiguration原创 2022-06-02 15:54:40 · 10931 阅读 · 2 评论 -
Springboot Starter介绍以及实现自定义Starter
1 SpringBoot Starter介绍在使用SpringBoot开发项目时,会发现比使用Spring框架方便省事,因为其主要核心思想就是依赖大于配置,简化了其他框架整合Spring框架时的各种繁琐的配置。在此基础之上,SpringBoot推出了SpringBoot Starter,即将单独的功能模块抽离成了一个独立的的功能,如你想开发一个Web后台网站,仅仅只需要在pom文件中引入spring-boot-starter-web相关的依赖。Starter组件的核心功能就是引入相关jar及一些初始化的原创 2022-05-25 15:40:08 · 1140 阅读 · 0 评论 -
SpringBoot访问静态资源报404——记录一次调试过程与解决方案
SpringBootWeb项目中,默认的静态资源路径有下列4种:classpath:/META-INF/resourcesclasspath:/resourcesclasspath:/staticclasspath:/public**原创 2022-04-27 21:00:39 · 14976 阅读 · 3 评论 -
SpringBoot——整合Redis
SpringBoot整合Redis原创 2022-04-20 19:46:06 · 600 阅读 · 0 评论 -
数据库事务与事务隔离级别说明
1 什么事务事务是由N步数据库操作序列组成的逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行2 事务的特性原子性(Atomically):事务是应用中不可再分的最小执行体一致性(Consistency):执行的结果需使得数据从一个一致性状态变为另一个一致性的状态隔离性(Isolation):各个事务的执行互不干扰,任何事物的内部操作对其他事务都是隔离的持久性(Durability):事务一旦提交,对数据所作的任何改变都要记录到永久存储器中【数据库】3事务的隔离性与隔离级别在高并发的原创 2022-04-14 23:48:48 · 3531 阅读 · 0 评论 -
SpringBoot——整合kaptcha生成图片验证码
在常见网站上,用户需要登录时,不仅仅需要验证用户账号,密码信息,同时,还需要验证验证码。验证码通常是一组特殊的字符串,字符长度通常在4-6位。那么验证码是如何生成的呢,接下来,我将为大家介绍如何用SpringBoot整合kaptcha生成验证码信息。1Kaptcha 简介Kaptcha 是一个可高度配置的实用验证码生成工具,可自由配置的选项如:验证码的字体验证码字体的大小验证码字体的字体颜色验证码内容的范围(数字,字母,中文汉字!)验证码图片的大小,边框,边框粗细,边框颜色验证码的干扰线.原创 2022-03-23 08:55:43 · 856 阅读 · 0 评论 -
SpringMVC工作流程
1概述传统的web服务分为表现层业务层数据层而在服务的表现层中,将由一个重要的Spring组件完成相应的功能,这个组件就是SpringMVC与服务的三层架构不同的是,表现层同样也被分成了三个模块Controller 控制层Model 模型层View 视图层需要强调是WEB服务的分层,是根据实际业务需求进行划分的,为了到达解耦的目的。千万不要与SpringMVC的三个模块分层混淆。2SpringMVC的工作流程SpringMVC的核心组件是前端控制器DispatcherS原创 2022-03-12 16:34:39 · 100 阅读 · 0 评论 -
SpringBoot整合JWT实现登录验证(2)
1 JWT请求流程SpringBoot整合JWT实现登录验证(1)通过上一章节,介绍了JWT的相关信息,以及JWT字符串的生成与JWT的解析,接下来将用代码实现登录验证。实现流程如下图:发送登录请求,服务器根据私钥key创建JWT字符串返回给用户;浏览器将该jwt串在请求头中像服务器发送请求;服务器验证该jwt 【通过拦截器实现,校验JWT中有效荷载playload,具体的校验逻辑与实际要求有关】;校验通过后返回响应的资源给浏览器,否则抛出登录异常2 相关细节在实际开发中,处在不同原创 2022-03-08 20:11:09 · 530 阅读 · 0 评论 -
SpringBoot整合JWT实现登录验证(1)
1 定义JWT全称为JSON Web Token,是目前最流行的跨域身份验证解决方案。JWT是为了在网络应用环境间传递声明而制定的一种基于JSON的开放标准。此信息可以进行验证和信任,因为它是经过数字签名的。JWT 可以使用密钥(使用 HMAC 算法)或使用 RSA 或 ECDSA 的公钥/私钥对进行签名。JWT特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可被加密。官方介绍2 JWT的数据结构原创 2022-03-05 19:51:37 · 1192 阅读 · 0 评论 -
自定义注解完成Logger记录日志功能
其目的是在类上添加了@SysLog的注解【该注解通过自定义实现】的全部方法,以切面的方式,收集调用时的相关信息【如用户名称,调用接口名称,ip地址等信息】执行切面方法 ,将此信息存入到数据库中。切面方法是通过发布一个SpringEvent监听事件,监听到此事件的发生时,异步执行数据库操作。将信息存入到数据库中。后续开发人员可根据logger日志信息分析并处理相关的异常涉及到的知识点1、切面Aspect、切点PointCut、通知Advice2、Spring Event 异步监听事件3、logba原创 2022-02-17 17:32:04 · 1056 阅读 · 1 评论 -
Logback日志框架
1 简介在实际项目开发中,日志框架是不可避免的。目前常用的日志框架包括log4j和logback等。该文章将选取logback作为日志框架讲解。logback提供的日志功能主要有两个方面:通过logback框架可以在控制台或者日志文件记录日志信息拦截用户请求,将操作日志保存到数据库 使用logback框架Logback 构建在三个主要的类上:Logger,Appender 和 Layout。这三个不同类型的组件一起作用能够让开发者根据消息的类型以及日志的级别来打印日志。Logger作为日志的原创 2022-02-16 19:44:46 · 691 阅读 · 0 评论 -
Hibernate Validator参数校验
Hibernate Validator介绍校验参数基本上是一个体力活,而且冗余代码繁多,也影响代码的可读性,我们需要一个比较优雅的方式来解决这个问题。Hibernate Validator 框架刚好解决了这个问题,可以以很优雅的方式实现参数的校验,让业务代码和校验逻辑分开,不再编写重复的校验逻辑。1hibernate-validator优势:验证逻辑与业务逻辑之间进行了分离,降低了程序耦合度统一且规范的验证方式,无需你再次编写重复的验证代码你将更专注于你的业务,将这些繁琐的事情统统丢在一边原创 2022-02-15 20:06:53 · 1380 阅读 · 0 评论 -
JVM——类加载器
1 定义顾名思义,类加载器(class loader)用来加载 Java 类到 Java 虚拟机中【只有加载到JVM中,JAVA程序才能使用该类】。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码存入到JVM的方法区中。并转换成 java.lang.Class类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的 **newIn原创 2022-02-15 20:03:18 · 466 阅读 · 0 评论 -
SpringCloud
SpringCloud(1)1 什么是SpringCloud分布式架构的一键式解决方案Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。2 SpringBoot与SpringCloud的版本依赖关系https://start.spring.io/actuator/info (官方指定的版本之间的依赖原创 2021-08-16 15:49:31 · 922 阅读 · 0 评论