自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jerry‘s word

一些随笔罢了

  • 博客(66)
  • 资源 (3)
  • 问答 (6)
  • 收藏
  • 关注

原创 【Java特性】增强的switch语句

在Java JDK 10中引入了增强的switch语句,它提供了更灵活和可读性更高的switch语法。增强的switch语句允许在switch语句中使用表达式,而不仅限于常量。它使用箭头(->)操作符将表达式与相应的代码块关联起来。

2024-01-08 14:45:05 554

原创 【Kotlin】Kotlin的stream流编程浅析

Kotlin是一门由JetBrains公司开发的静态类型JVM语言,其可以与Java无缝集成。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。今天要浅析的stream流操作就来源于java8当中的特性。

2023-12-25 18:37:25 846

原创 【Golang】为什么我们可以在Go语言中直接用整型与浮点型相比较

在Go语言中,float类型和int类型之间可以直接进行比较是因为Go语言中存在一种类型转换机制。当进行比较运算时,如果两个操作数的类型不同,Go语言会尝试将其中一个操作数的类型转换为另一个操作数的类型,以便进行比较。

2023-08-22 16:53:28 431 2

原创 【Git 完整提交规范】git的约定式提交规范

本文中的关键词 “必须(MUST)”、“禁止(MUST NOT)”、“必要(REQUIRED)”、“应当(SHALL)”、“不应当(SHALL NOT)”、“应该(SHOULD)”、“不应该(SHOULD NOT)”、“推荐(RECOMMENDED)”、“可以(MAY)” 和 “可选(OPTIONAL)” ,其相关解释参考。

2022-12-29 11:25:37 1991 1

原创 【EasyExcel】excel的导入导出基本用法

在java开发中,我们时常会遇到,excel数据的导入导出,EasyExcel 就是一个能够帮助我们快速导入导出excel文件的工具,他提供了标准的上传文件工具,以及一些文件解析工具。

2022-10-24 11:43:55 1953

原创 【shiro-安全框架】入门基础学习

Apache Shiro是Java 的一个安全框架。Shiro可以非常容易的开发出足够好的应用,其不仅可以用在]avaSE环境,也可以用在]avaEE环境。Shiro可以帮助我们完成:认证【登陆】、授权【权限】、加密【密码】、会话管理、与Web集成、缓存等。}

2022-09-20 20:01:41 1260

原创 【Spring Security】安全框架学习(十四)

我们之前的权限控制都是在对应的资源上面,加上注解去进行一个权限的配置。实际上spring security还允许我们在配置类中进行配置权限。例如我们之前就对login接口进行了一个相应的权限控制。

2022-09-12 10:04:47 1139

原创 【Spring Security】安全框架学习(十三)

我们也可以定义自己的权限校验方法,在@PreAuthorize注解中使用我们的方法。我们可以发现直接在@PreAuthorize内写方法名就可以用默认提供的方法,那么怎么才能直接通过方法名调用自己对象的方法呢。实际上涉及到了SpEL表达式,这门语言相对比较冷门,只需要了解即可。SpEL——Spring表达式语言我们首先要创建一个类,在类里面定义自己的方法,方法的定义格式参考security的格式就可以了。

2022-09-12 09:35:41 760

原创 【编程规范】 后端API接口设计编写与文档编写参考

一般前后端分离项目会拥有不同的数据格式,例如 json、url等。这里要通过文档的形式同前后端一起确定好数据阐述的格式。接口地址:不包含接口BASE地址。请求方式: get、post、put、delete等。请求参数:数据格式(默认json)、数据类型、是否必填、中文描述。响应参数:类型、中文描述。这里的接口文档一般就是对应后台的实体,即RequestVo(调用后台接口访问的实体)和给往前端的ResponseVo(前台调用接口时前往的实体)。

2022-09-07 12:07:30 10526

原创 【Spring Security】安全框架学习(十二)

这个就是我们之前在filter中存入到holder当中的对象,即UsernamePasswordAuthenticationToken,可以知道这里userAuthorities拿到了我们的权限对象,最终就调用到了我们自己在LoginUser类中重写的方法里去。但是回到hasAnyAuthorityName 方法中,传进去的prefix前缀的值实际上是null,也就是说实际上并没有做一个拼接,没有前缀,最终的结果也就是原本的字符串。但是我们并不用关心它在内部的调用链路,只需要关注核心的实现代码就可以了。

2022-09-06 16:45:42 1638 2

原创 【Spring Security】安全框架学习(十一)

本身springboot就自带了解决跨域问题的方法,但是光用springboot的那一套显然是不够用的,我们现在的资源请求都是交给spring security帮助我们进行管理、保护。专业的说法叫 预检请求,如果一个请求时非简单请求,会提前发送一个OPTIONS的预检请求,来决定是否发送真实请求,可以去看看HTTP CORS规则文档。浏览器出于安全的考虑,使用XMLHttpRequest对象发起HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的。

2022-09-04 10:56:16 336

原创 【Spring Security】安全框架学习(十)

我们还希望在认证失败或者是授权失败的情况下也能和我们的接口一样返回相同结构的json,这样可以让前端能对响应进行统一的处理。要实现这个功能我们需要知道Spring Security的异常处理机制。在Spring Security中,如果我们在认证或者授权的过程中出现了异常会被ExceptionTranslationFilter捕获到。在ExceptionTranslationFilter中会去判断是认证失败还是授权失败出现的异常。

2022-09-03 11:09:14 496

原创 【Spring Security】安全框架学习(九)

一个权限对应多个用户,一个用户也会有多个权限,看起来是一个多对多的关系,但是从用户的角度看是一个一对多的关系。要注意的是我们查询出来的结果需要去重,原因是因为每一个用户可以有多个角色,而每一个角色可能拥有的权限会有相同的地方,所以要用distinct来去重。在开发的过程中,给一个用户挨个赋予权限显然比较麻烦,所以我们可以建立起一个角色表,直接给用户赋予角色信息,即可将对应的权限通过角色间接的给用户。同时,一个用户可以有多个角色,一个角色也有多个用户,这样的多对多的关系同样可以用一个用户角色关联表关联起来。

2022-09-02 09:30:34 293

原创 【Spring Security】安全框架学习(八)

在上面的代码中,我们可以看到一个泛型 SimpleGrantedAuthority ,它是由Spring提供的,但是我们在存储进redis中的时候,为了安全考虑,默认情况下是不会把SimpleGrantedAuthority进行序列化存入的,如果不做操作的话,java会报异常。所以我们还需要在后台进行用户权限的判断,判断当前用户是否有相应的权限,必须基于所需权限才能进行相应的操作。这我们项目中主要采用的方式是基于注解的。的,前后端分离项目很少使用,所以我们可以使用注解去指定访问对应的资源所需的权限。

2022-09-02 09:28:14 2215

原创 【Spring Security】安全框架学习(七)

我们只需要定义一个登陆接口,然后获取SecurityContextHolder中的认证信息,删除redis中对应的数据即可。我们在这里的注销相当于只是让原来的token失效了, 重新登录时,如果原来的token没有过期就不会生成新token。文件中,添加相应的代码。中提供给前端对应的api。...

2022-08-28 10:11:11 343

原创 【Spring Security】安全框架学习(六)

一个是已认证的,一个是未认证的,结构不一样;同时,一个是登录,一个是验证两个场景,不能混在一起看。可以这么理解,之前的是登陆时验证,后面的这个是登录后访问验证。上面的代码与之前登陆的代码相比较,可以发现为什么之前UsernamePasswordAuthenticationToken存的是username和password,而这里存的是loginUser和null呢?我们需要自定义一个过滤器,这个过滤器会去获取请求头中的token,对token进行解析取出其中的userid。方法内部加上如下代码即可实现。..

2022-08-28 09:45:23 437

原创 【Spring Security】安全框架学习(五)

接下我们需要自定义登陆接口,然后让SpringSecurity对这个接口放行。在 2.3.2 准备工作中我们提供了一个jwt工具类,里面有3种重载形式,详情参考之前的源码。如果要使用jwt工具类,jdk1.8以上的版本可能需要导入这三个包 jjwt-api, jjwt-impl, jwt-jackson,jdk1.8一般来说没必要导。在接口中我们通过AuthenticationManager的authenticate方法来进行用户认...

2022-08-27 20:46:25 338

原创 【Spring Security】安全框架学习(四)

从之前的分析我们可以知道,我们可以自定义一个UserDetailsService,让SpringSecurity使用我们的UserDetailsService。我们自己的UserDetailsService可以从数据库中查询用户名和密码。默认使用的PasswordEncoder要求数据库中的密码格式为:{id}password。它会根据id去判断密码的加密方式。...

2022-08-27 20:44:12 267

原创 【Spring Security】安全框架学习(三)

​ ②获取token中的userId,从redis中获取用户信息,存入SecurityContextHolder中。思考:Jwt认证过滤器中从获取到了userId后,怎么获取到完整的用户信息?登陆:①自定义登陆的接口,调用providerManager的方法进行认证。​ 如果认证通过,则生成JWT;把用户信息缓存到redis中。​ ②自定义UserDetailService,实现查询数据库。校验:①定义JWT认证过滤器,获取token并解析token。实际上分了两部分,一个是登陆一个是校验。.

2022-08-27 11:15:14 234

原创 【Spring Security】安全框架学习(二)

由于安全框架提供了很多默认的设置,添加依赖就能直接运行,但是实际开发中我们只想要得到登陆的结果,就需要修改security提供的默认配置来实现自己的登陆流程。想要知道如何实现自己的登陆流程,就必须要先知道入门案例中的Spring Security的流程。Spring Security的原埋其实就是一个过滤器链,内部包含了提供各种功能的过滤器。我们可以通过debug查看当前系统中的Spring Security过滤链中有哪些过滤器以及他们的顺序。接口:它的实现类,表示当前访问系统的用户,封装了用户相关信息。.

2022-08-27 11:12:34 319

原创 【Spring Security】安全框架学习(一)

Spring Security是Spring家族中的一个安全管理框架。相比与另外一个安全框架shiro,它提供了更丰富的功能,社区资源也比 Shiro丰富。一般来说中大型的项目都是使用来做安全框架。小项目有Shiro的比较多,因为相比与Spring Security,Shiro的上手更加的简单。一般Web应用的需要进行认证和授权。认证:验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户授权:经过认证后判断当前用户是否有权限进行某个操作。...

2022-08-26 12:52:19 269

原创 【插件使用】MarkDown编辑器

MarkDown工具类。

2022-08-14 14:53:06 335

原创 【Java开发技术】登陆过滤器,前端携带token向后端发起请求

【Java开发技术】登陆过滤器,前端携带token向后端发起请求。

2022-07-17 11:46:47 603

原创 【Java开发技术】Redis在springboot中作为缓存时的使用

在java中我们可以编写config类,通过重写CacheManager方法,使redis成为项目中的缓存。当然除了这个配置类以外,也还需要现在yml文件中配置好redis的host,password等配置。

2022-07-16 21:48:17 476

原创 【版本控制器】Git的使用说明(一)

在学习git之前,版本控制的知识是必须要掌握的。

2022-07-16 21:43:02 72

原创 【软件设计模式】常用的设计模式的介绍

是一套反复使用的、多数人知晓的、经过分类编目的代码设计经验总结。是一种用于对软件系统中不断重现的设计问题的解决方案进行文档化的技术,是一种共享专家设计经验的技术。在特定的环境下为了解决某一通用软件设计问题提供的一套定制解决方案,描述了对象和类之间的相互作用。模式名称、问题、目的、解决方案、效果、实例代码、相关设计模式。创建型设计模式:用于对象的创建。结构型设计模式:用于处理对象或类之间的组合。行为型设计模式:描述类或对象怎样交互怎样分配职责的。类模式:处理类和子类之间的关系,通过继承建立,是一种静态的关系。

2022-07-01 04:35:35 457

原创 【Spring Boot】springboot配置

摘要

2022-05-12 22:20:05 126

原创 【SpringBoot】框架的建立(基于maven)

摘要

2022-05-06 09:40:52 413

原创 【SpringBoot】框架的建立(基于Spring Initializr)

摘要

2022-04-26 09:53:59 635

原创 【SSM】关于SSM项目出现 “调用 init 方法失败;嵌套异常是 java.lang.IllegalStateException: Ambiguous mapping。”问题的解决方案

摘要

2022-04-24 14:46:30 2017

原创 【Java】java基础知识

摘要

2022-04-01 00:16:51 406

原创 【SSM框架】部分要使用的pom.xml依赖

摘要

2022-03-28 12:43:45 195

原创 【Spring】spring入门(持续更新)

摘要

2022-03-21 10:52:30 470

原创 【MyBatis】利用Map传递参数

摘要

2022-03-04 19:53:51 2570

原创 【前端框架学习】结合Node手写JSONP服务器剖析JSONP原理

摘要

2022-02-17 11:00:52 648

原创 【前端框架学习】vue-resource实现get、post、jsonp请求

摘要

2022-02-07 11:54:25 1624

原创 【前端框架学习】生命周期函数 中 组件运行与销毁时的钩子函数

摘要

2022-01-30 10:31:55 6011

原创 【前端框架学习】生命周期函数 及组件创建时的钩子函数

摘要

2022-01-29 11:19:56 341

原创 【前端框架学习】指令函数的简写

摘要

2022-01-23 11:41:51 381

原创 【前端框架学习】定义私有指令

摘要

2022-01-23 11:35:13 456

Typora+PicGo

Typora作为Markdown编辑器,PicGo为上传图片工具

2022-08-28

IObitUninstaller

windows软件卸载,注册表清理工具

2022-03-17

Mysql8.0人工翻译文档

Mysql8.0人工翻译文档

2022-03-16

计算机网络教程(第5版)课后习题参考答案

计算机网络教程(第5版)课后习题参考答案

2022-03-11

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

TA关注的人

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