程序开发 Spring Security 详解以及认证过程 简介 Spring Security 是基于 Spring 实现的一个安全框架,其中包括非常多的过滤器,主要进行攻击防护、认证授权等功能。 过滤器链 Spring Security 常用的过滤器有15个,如下图所示: 在 FilterChainProxy 类中的 doFilterInternal 方法打断点可以看见。 1.org.springframework.security.web.conte...
程序开发 WebSecurityConfigurerAdapter 详解 简介 WebSecurityConfigurerAdapter 是 Spring Security 中的一个抽象类,实现了WebSecurityConfigurer接口,用于配置 Spring Security 的安全性设置。 类图如下: 通过继承WebSecurityConfigurerAdapter并覆盖其中的方法,可以自定义应用程序的安全性配置。 常用配置 下面贴一下WebSecurityC...
程序开发 Stream 流用法详解 简介 Stream 是 Java 8 引入的一个功能强大的流式处理 API。它允许我们以声明性的方式操作集合(数组、集合等)的元素。通过使用 Stream,我们可以将多个操作连接起来,形成一个流水线,从而简化代码并提高可读性。 Stream 类中包含的方法,可以进行数据筛选、转换、排序、去重、限制、跳过、归约、统计、匹配、查找和遍历等操作。 数据筛选和转换: filter(Predicate<...
程序开发 工具类 Optional 用法详解 Optional 类是 Java 8 中引入的一个用于避免空指针异常的工具类,请注意它是 java.util 包下的一个工具类。 它提供了一系列方法,用于对可能为 null 的对象进行操作,以便更加安全地访问对象的属性和方法。 Optional 里面几乎全部都围绕其中的一个成员变量 value 在运作。 下面是 Optional 类中常用的方法及其用法: of 方法 创建一个包含指定对象的 Opt...
程序开发 50 个 Java 编程技巧 一、语法类技巧 1.1. 使用三元表达式 普通: String title; if (isMember(phone)) { title = "会员"; } else { title = "游客"; } 精简: String title = isMember(phone) ? "会员" : "游客"; 1.2.利用 fo...
程序开发 Java 彻底理解两种动态代理 在 java 中,有两种常见的动态代理实现方式,即基于接口的动态代理(JDK 动态代理)和基于类的动态代理(CGLIB 动态代理),下面就对这两种代理进行解释和举例。 1. JDK动态代理 这种动态代理实现方式是基于接口的,使用 java.lang.reflect.Proxy 类和 java.lang.reflect.InvocationHandler 接口来创建代理对象。代理对象实现了目标接口,...
程序开发 Java 使用 EasyExcel 导出基本使用方法 工作中要说用到 excel 的情况说多也不多,说少也不少,但是很多次遇到似乎都要去查一遍 EasyExcel 的用法,所以这里把经常用到的注解记录一下。 1. 基本导出 1.1 指定标题 常规导出情况下,只需要指定单元格头部标题,和忽略部分字段即可。 public class DemoData { @ExcelProperty("字符串标题") private String s...
程序开发 Springboot 定义在字段上数据校验注解详解 在进行数据处理时,对于数据的正确性校验是必不可少的。在Java中,可以使用注解来实现对数据的校验。这些注解可以在实体类中的字段上进行标注,用来验证字段的数据是否符合规定。 @Null: 限制只能为null。 @NotNull: 限制必须不为null。 @AssertFalse: 限制必须为false。 @AssertTrue: 限制必须为true。 @DecimalMax(value): 限制必须...
程序开发 Java 如何自定义注解以及如何使用自定义注解 对所有使用 @Tested 的注解运行看是否报错。 NoBug.java import ceshi.Tested; public class NoBug { @Tested public void suanShu(){ System.out.println("1234567890"); } @Tested public void jiafa(){ System.out.prin...
程序开发 Mybatis 详解及详细使用教程 一、Mybatis 是什么 MyBatis 是一个开源、轻量级的数据持久化框架,是 JDBC 和 Hibernate 的替代方案。MyBatis 内部封装了 JDBC,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,开发者只需要关注 SQL 语句本身。 MyBatis 支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM...
程序开发 Java 包装类型的缓存机制 缓存机制介绍 Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。 Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] 范围的缓存数据,Boolean 直接返回 True or False。 Integer 缓存源码: public static Integer...
程序开发 遍历 Map 最常用的两种方式 使用 for-each 循环遍历 Map 中的键值对 Map<String, Integer> map = new HashMap<String, Integer>(); for (Map.Entry<String, Integer> entry : map.entrySet()) { String key = entry.getKey(); Integer v...