- 博客(662)
- 收藏
- 关注
原创 Java中的String,StringBuilder,StringBuffer区别
本文详细解析了 Java中 String,StringBuilder 和 StringBuffer 的区别,主要从运行速度和线程安全两个方面进行了对比。String适用于少量字符串操作,StringBuilder适用于单线程大量操作,StringBuffer适合多线程大量操作。
2025-04-02 16:42:31
285
原创 Java中String字符串的常用方法
在 Java 语言中将字符串作为对象来管理,因此可以像创建其他类对象一样来创建字符串对象。String 类是不可变(final)的,对 String 类的任何改变,都是返回一个新的 String类对象。这样的话把 String 类的引用传递给一个方法,该方法对 String 的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似。Java 的 String 通过不可变性设计保障安全性与效率,但其操作需注意对象复用及性能优化。开发者应掌握常量池机制、常用方法及不可变特性,合理选择拼接策略以提升代
2025-04-02 16:18:46
264
原创 JavaScript数组Array的使用:添加、删除、排序、遍历、互转
数组是存储于一个连续空间且具有相同数据类型的元素集合。可以把数组看作一张单行表格,该表格的每一个单元格都可以存储一个数据,而且各单元格中存储的数据类型可以不同。这些单元格被称为数组元素,每个数组元素都有一个索引号,通过索引号可以方便地引用数组元素。数组是 JavaScript 中唯一用来存储和操作有序数据集的数据结果。数组是 JavaScript 中十分常用的一种数据类型。数组提供了一种快速、方便地管理一组相关数据的方法,是 JavaScript 程序设计的重要内容。通过数组可以对大量性质相同的数据进行存储
2025-04-01 18:57:55
758
原创 Window对象的常用属性和方法
Window 对象代表打开的浏览器窗口,通过 Window 对象,可以控制窗口的大小和位置、由窗口弹出的对话框、打开与关闭窗口,还可以控制窗口上是否显示地址栏、工具栏和状态等栏目。对于窗口中的内容,Window 对象可以控制是否重载网页、返回上一个文档或前进到下一个文档。在框架方面,Window 对象可以处理框架与框架之间的关系,并通过这种关系在一个框架中处理另外一个框架的文档。Window 对象还是所有其他对象的顶级对象,通过对 Window 对象的子对象进行操作,可以实现更多的动态效果。
2025-03-31 19:26:19
868
原创 JavaScript弹出框的使用:对话框、确认框、提示框、弹窗操作
Window 对象代表一个浏览器窗口或标签页,是浏览器对象模型(BOM)的核心对象。在浏览器环境中,Window 是 JavaScript 的全局对象。全局变量和函数均为 Window 对象的属性和方法。对话框(dialog)是响应用户某种需求而弹出的页面。打开窗口可以使用 Window 对象的 open() 方法。利用 open() 方法可以打开一个新的窗口,并在窗口中装载指定 URL 地址的页面,还可以指定新窗口的大小及窗口中可用的选项,并且可以为打开的窗口定义一个名称。
2025-03-31 17:36:15
777
原创 Document对象的常用属性和方法:getElementById()、getElementsByName()、createElement()方法
Document 对象代表浏览器窗口中的文档,该对象是 Window 对象的子对象。由于 Window 对象是 DOM 对象模型中的默认对象,因此其方法和子对象不需要使用 Window 来引用。通过 Document 对象可以访问 HTML 文档中的任何 HTML 标记,并可以动态地改变 HTML 标记中的内容,如表单、图像、表格和超链接等。Document 对象在 JavaScript 1.0 版本中就已经存在,在随后的版本中又增加了几个属性和方法。
2025-03-29 19:02:19
1381
原创 CSS样式大全
CSS(Cascading Style Sheets,层叠样式表)是一种用于定义 HTML/XML 文档视觉样式的标记语言,其核心功能是通过规则控制网页元素的布局、颜色、字体等显示效果。通过选择器与样式规则分离网页内容与表现形式,实现结构与样式的解耦。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。
2025-03-27 21:04:38
352
原创 JavaScript时间戳的使用
在 JavaScript 中,时间戳(Timestamp)通常指自 1970 年 1 月 1 日 00:00:00 UTC(Unix 纪元)以来的毫秒数。时间戳(timestamp)是一个能够表示一份数据在某个特定时间点已经存在的、完整的、可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。它广泛应用于数据库、计算机系统、文件系统、软件以及通信等领域,用于确保数据的完整性和一致性,以及追踪数据的变化。
2025-03-27 16:41:44
834
原创 Vue动态绑定:文本框、单选按钮、下拉列表、多选按钮
在 Web 应用中,通过表单可以实现输入文本、选择选项和提交数据等功能。在 Vue.js 中,通过 v-model 指令可以对象表单元素进行双向数据绑定,在修改表单值的同时,Vue 实例中对应的属性值也会随之更新,反之亦然。在程序设计中,循环控制是变化最丰富的技术。Vue.js 提供了列表渲染的功能,可将数组或对象中的数据循环渲染到 DOM 中。在 Vue.js 中,列表渲染使用的是 v-for 指令,其效果类似于 JavaScript 中的遍历。
2025-03-25 19:17:40
388
原创 Vue动态添加或删除DOM元素:购物车实例
在 Vue 中实现动态添加或删除 DOM 元素,主要通过响应式数据绑定结合列表渲染和条件渲染实现。可以使用动态列表渲染(v-for指令),通过维护响应式数组控制 DOM 元素的增删。使用 v-for 和数组来控制元素的动态渲染,通过维护一个数组,然后利用 v-for 循环来生成 DOM 元素。当添加或删除时,只需要修改数组的长度或者元素,Vue 的响应式系统会自动更新 DOM。这是 Vue 推荐的做法,因为它充分利用了数据驱动的特性,避免直接操作 DOM。
2025-03-25 17:33:04
466
原创 Jackson实现JSON数据的合并
Jackson 库实现 JSON 数据的合并,可以采用基于树模型的深度合并(递归策略),可以保留两个 JSON 的所有层级数据,避免覆盖冲突。在实际开发中,Jackson 功能丰富、安全可靠并且具有比较好的兼容性,这让程序开发人员可以很方便地实现 JavaBean 和以 “键 : 值” 结构保存的 JSON 数据的相互转换。
2025-03-24 19:53:27
323
原创 Jackson使用ArrayNode对象实现JSON列表数据(二):增、删、改、查
Jackson 库中的 ArrayNode 数组节点类是用于表示 JSON 数组的可变节点类,继承自 JsonNode,专为动态构建和操作 JSON 数组设计。支持动态添加、删除数组元素,与只读的 JsonNode 形成对比,可存储混合类型元素(如字符串、数值、嵌套对象或其他数组),常与 ObjectNode 配合构建复杂 JSON 结构。ArrayNode 数组节点类也是 JsonNode 中的一个常用子类,甚至 JsonNode 提供的个别方法就是专门为 ArrayNode 数组节点设计的。
2025-03-24 18:07:06
1063
原创 Jackson使用ObjectNode对象实现JSON对象数据(一):增、删、改、查
Jackson 库中的 ObjectNode 对象节点类是操作 JSON 对象的核心类,可实现动态的增删改查操作。ObjectNode 对象节点是 JsonNode 中比较常用的一个子类。如果以 “键 : 值” 结果保存的 JSON 数据中的某个节点也是一个以 “键 : 值” 结构保存的 JSON 数据,那么这个节点就用 ObjectNode 表示。
2025-03-23 17:11:20
1070
原创 Jackson的核心类与API方法:ObjectMapper、JsonNode、ObjectNode、ArrayNode
Jackson 不仅是一个基于 Java 语言的、开源的 JSON 解析库,也是 Spring Boot 默认使用的 JSON 解析库。为什么 Spring Boot 会默认使用 Jackson 呢?这是因为在 spring-boot-starter-web 依赖包中已经依赖了 Jackson 的依赖包(即:jackson-databind)。在实际开发中,Jackson 功能丰富、安全可靠并且具有比较好的兼容性。
2025-03-23 15:23:51
927
原创 Java中迭代器(Iterator)的使用
在 Java 中,迭代器(Iterator)是集合框架中用于遍历集合元素的一种机制。它提供了一种统一的方式来访问集合中的元素,而不需要了解底层集合的具体实现细节。迭代器是一个对象,用于按顺序访问集合中的元素。它提供了访问集合元素的标准方法,而不必暴露集合的内部结构。迭代器位于 java.util 包中,是一个接口。迭代器简化了集合的遍历过程,使得代码更加简洁和易于维护。
2025-03-15 09:56:02
235
原创 SpringBoot使用Logback日志框架与综合实例
Spring Boot 支持很多种日志框架。通常情况下,这些日志框架是由一个日志抽象层和一个日志实现层搭建而成的。日志抽象层是为记录日志提供的一套标准且规范的框架,其作用在于为记录日志提供接口。日志实现层是由日志抽象层实现的框架。Spring Boot 默认使用的日志抽象层是 Slf4j,默认使用的日志实现层是 Logback 框架。Slf4j 是当下主流的日志抽象层。
2025-03-12 17:51:03
954
原创 SpringBoot设置过滤器(Filter)或拦截器(Interceptor)的执行顺序:@Order注解、setOrder()方法
在 Spring Boot 中,你可以使用 @Order 注解来设置过滤器(Filter)或拦截器(Interceptor)在过滤器链或拦截器链中的执行顺序。@Order 注解是 Spring 框架提供的一个用于定义组件加载或执行顺序的注解。它可以应用于任何由 Spring 容器管理的组件上,当你需要在多个组件之间定义一个明确的加载或执行顺序时,可以使用 @Order 注解。它接受一个整型值作为参数,该值越小,组件的优先级越高,即越早被加载或执行。
2025-03-10 18:44:34
715
原创 SpringBoot使用OncePerRequestFilter过滤器:确保一次请求只通过一次过滤器
OncePerRequestFilter 是 Spring 框架提供的一种过滤器实现,确保外部请求只执行一次过滤逻辑,避免服务器内部 forward 导致的重复过滤。因此,不需要担心在请求处理过程中过滤器会被多次调用。特别需要注意的是,在使用 Spring Security 过程中,Spring Security 中的 Filter 被加载了两次或多次的情况;如果想解决某些过滤器 Filter 只执行一次,可以采用SpringBoot官网提供的此方案。
2025-03-10 17:50:59
212
原创 SpringBoot过滤器(Filter)的使用:Filter接口、FilterRegistrationBean类配置、@WebFilter注释
Spring Boot 的过滤器用于对数据进行过滤处理。通过 Spring Boot 的过滤器,程序开发人员不仅可以对用户通过 URL 地址发送的请求进行过滤处理(例如:过滤一些错误的请求或者请求中的敏感词等),而且可以对服务器返回的数据进行过滤处理(例如:压缩响应信息等)。在 Web 服务器中部署了过滤器以后,不仅客户端发送的请求会经过过滤器的处理,而且请求在发送到目标资源处理以后,请求的回应信息也同样要经历过滤器。
2025-03-08 20:04:21
1063
原创 SpringBoot获取YAML配置文件中的属性值(二):使用Environment环境组件读取值
Spring Boot 提供的 Environment 接口提供了一种机制,使得应用程序能够轻松地获取和操作配置属性。这些属性通常来源于不同的渠道,如命令行参数、系统环境变量、配置文件(如:application.properties 或 application.yml )等,这些配置文件可以放置在不同的位置,如项目的classpath、文件系统或外部存储等。Environment 允许为不同的环境配置不同的 Profile,例如:dev(开发)、test(测试)、prod(生产)等。
2025-03-04 17:40:30
337
原创 MyBatis-Plus注解配置:@TableName、@TableId、@TableField
MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 提供了一系列注解,用于简化数据库表与实体类之间的映射关系。以下是 @TableName、@TableId 和 @TableField 这三个常用注解的配置和使用说明。@TableName 该注解用于指定实体类对应的数据库表名。当实体类名与数据库表名不一致,或者实体类名不是数据库表名的驼峰写法时,您需要使用这个注解来明确指定表名。
2025-02-28 17:20:23
914
原创 SpringBoot整合SpringSecurity、MyBatis-Plus综合实例:认证、授权
Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,它是 Spring 项目组中用来提供安全认证服务的框架,能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案。Spring Security 的前身是 Acegi Security。它是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。Spring Security 采用了 AOP(面向切面编程)思想,并基于 Servlet 过滤器实现。
2025-02-27 17:45:56
1070
原创 SpringSecurity获取当前登录用户信息
在 Spring Security 中,获取当前登录用户的信息通常涉及到使用 SecurityContextHolder 来获取安全上下文,然后从中提取当前认证信息。以下是一些常用的方法来获取当前登录用户的信息。SecurityContextHolder 是 Spring Security 中的一个核心组件,它用于存储当前安全下文(Securty Context)的详细信息。这些信息包括当前已认证的用户、用户的授予权限以及其他相关的安全细节。
2025-02-25 19:14:59
441
原创 SpringSecurity处理器:登录成功处理器、登录失败处理器、无权限处理器、注销成功处理器
在 Spring Security 中,你可以通过实现特定的接口或扩展某些类来自定义各种处理器,例如登录成功处理器、登录失败处理器、无权限处理器和登出成功处理器。以下是每种处理器的具体实现方法:登录成功处理器,需要实现 AuthenticationSuccessHandler 接口,当登录认证成功后会执行调用。登录失败处理器,需要实现 AuthenticationFailureHandler 接口,当登录认证失败后会执行调用。
2025-02-24 17:08:56
472
原创 SpringSecurity设置白名单
白名单(Whitelist)是一个安全术语,它指的是一个明确的列表或集合,其中包含了被系统、程序或网络明确授权允许访问或执行的对象。这些对象可以是用户、IP地址、电子邮件地址、域名、文件、进程或其他任何实体。在 Spring Security 中设置白名单(即允许某些特定的URL路径无需认证即可访问)是一项常见的需求。你可以通过配置 WebSecurityConfigurerAdapter 来实现这一点。以下是一个示例,展示了如何配置 Spring Security 以允许特定的 URL 路径无需认证即
2025-02-22 17:03:00
377
原创 SpringSecurity基于注解实现方法级别授权:@PreAuthorize、@PostAuthorize、@Secured
方法调用授权的含义很明确,与 HTTP 端点级别的授权机制一样,人们可以用它来确定某个请求是否具有调用方法的权限。这里可以分成两种情况:如果是在方法调用之前进行授权管理,则称为预授权(PreAuthorization);如果是在方法执行完之后确定是否可以访问方法返回的结构,则称为后授权(PostAuthorization)。在 Spring Security 中,@PreAuthorize 注解是一种用于方法级别授权的强大工具。它允许你在方法执行之前进行权限检查,从而确保只有具备相应权限的用户才能调用该方法
2025-02-22 16:31:00
937
原创 SpringSecurity基于配置方法控制访问权限:MVC匹配器、Ant匹配器
Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。在 Spring Security 中,可以通过配置方法来控制访问权限。认证是实现授权的前提和基础,在执行授权操作前需要明确目标用户,只有明确目标用户才能明确它所具备的角色和权限。Spring Security 中所采用的授权模型也是由用户、角色和权限组成的。Spring Security 实现配置方法控制访问权限很简单,只需要使用基于 HttpSecurity 对象提供的一组工具方法就能实现复杂场景下的访问控制。
2025-02-19 15:25:16
1228
原创 SpringSecurity密码编码器:使用BCrypt算法加密、自定义密码编码器
Spring Security 作为一个功能完备的安全性框架,一方面提供用于完成加密操作的 PasswordEncoder 组件,另一方面提供一个可以在应用程序中独立使用的密码模块。在 Spring Security 中,PasswordEncoder 接口代表的是一种密码编码器,用于指定密码的具体加密方式,以及如何在给定的一段加密字符串与明文之间完成匹配校验。尽管 Spring Security 提供了丰富的 PasswordEncoder 接口的实现类,但我们也可以通过自定义接口来设计满足自身需求。
2025-02-05 18:57:03
1075
原创 Java使用BCrypt强散列算法实现:加密、校验
BCrypt 加密是一种安全且高效的密码存储与验证方法,它结合了密码哈希函数和加密算法。BCrypt 加密基于哈希函数,并使用一个密码和一个随机生成的盐值作为输入,生成一个固定长度的密码哈希值。这个哈希值在每次密码输入时都会重新生成,且会随着盐值的改变而改变。这种机制确保了即使是相同的密码,在每次加密时也会生成不同的哈希值,从而有效增强了安全性。Bcrypt 生成的密文是 60 位的,而 MD5 的是 32 位的。
2025-02-05 15:42:28
473
原创 SpringSecurity实现自定义用户认证方案
Spring Security 实现自定义用户认证方案可以根据具体需求和业务场景进行设计和实施,满足不同的安全需求和业务需求。这种灵活性使得认证机制能够更好地适应各种复杂的环境和变化。通过自定义认证方案,可以更好地控制和管理用户的访问权限,确保数据和应用程序的安全性和可靠性。Spring Security 所做的工作只是把常见的、符合一般业务场景的实现方法进行抽象并嵌入框架中,开发人员完全可以自定义用户认证方案。
2025-01-20 18:30:32
873
原创 SpringSecurity中的过滤器链与自定义过滤器
Spring Security 中的过滤器链(Filter Chain)是一个核心的概念,它定义了一系列过滤器,这些过滤器按照特定的顺序处理HTTP请求,并负责执行各种安全任务,如身份验证、授权、CSRF 保护等。过滤器链是由多个过滤器组成的链式结构,请求依次经过每个过滤器,每个过滤器可以决定是否继续传递请求。此外,Spring Security 还允许开发人员自定义过滤器,并将其添加到安全过滤器链中。这使得可以根据特定的业务需求,扩展安全过滤器链的功能。
2024-12-30 17:31:04
1114
原创 SpringSecurity使用过滤器实现图形验证码
图形验证码是一种用于区分用户是人类还是计算机程序的自动化测试。它通常用于防止自动化软件(如机器人或爬虫程序)进行恶意操作,如滥用在线服务、暴力破解密码或进行垃圾邮件发送等。图形验证码的工作原理基于一个假设:计算机程序难以自动识别和处理复杂的图像或模式,而人类则相对容易。因此,图形验证码通常包含扭曲的文字、数字、图像或它们的组合,这些元素对人类来说相对容易辨认,但对计算机程序来说则非常困难。本文将介绍Spring Boot 整合 Spring Security 实现图形验证码功能,
2024-12-28 19:58:20
1019
1
原创 Vue3.0使用JavaScript脚本实现Vue Router路由:页面跳转、获取URL参数
在单页 Web 应用中,整个项目只有一个 HTML 文件,不同视图(组件的模块)的内容都是在同一个页面中渲染的。当用户切换页面时,页面之前的跳转都是在浏览器端完成的,这时就需要使用前端路由。路由实际上就是一种映射关系。例如,多个选项卡之间的切换就可以使用路由功能来实现。在切换时,根据鼠标的点击事件显示不同的页面内容,这相当于事件和事件处理程序之间的映射关系。
2024-12-18 17:43:12
612
原创 MyBatis-Plus关于Mapper.xml文件路径的异常问题 Invalid bound statement (not found) 与如何修改路径
在 MyBatis-Plus 中,Mapper.xml 文件起到了至关重要的作用,它定义了 SQL 语句与 Java 方法之间的映射关系,使得开发者可以通过 Java 代码来执行相应的数据库操作。记录一次由于 Mapper.xml 文件的路径写错了,而提示异常的问题。异常信息:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)。异常原因:上图中的存放 xxxMapper.xml 文件的路径写错误了。
2024-12-12 14:46:33
296
原创 SpringBoot整合SpringSecurity实现一个简单的认证与授权应用
Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,它是 Spring 项目组中用来提供安全认证服务的框架,能够为基于 Sprin g的企业应用系统提供声明式的安全访问控制解决方案。Spring Security 的前身是 Acegi Security。它是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。Spring Security 采用了 AOP(面向切面编程)思想,并基于 Servlet 过滤器实现。
2024-11-23 17:38:29
1117
原创 SpringSecurity基于默认数据库模型的认证与授权
在 Spring Security 中,默认的认证和授权机制依赖于一套内置的数据库模型,通常涉及用户(User)、角色(Role)和权限(Authority)等实体。除了 InMemoryUserDetailsManager,Spring Security 还提供另一个 UserDetailsService 实现类: JdbcUserDetailsManager。 JdbcUserDetailsManager 帮助我们以 JDBC 的方式对接数据库和 Spring Security。
2024-11-23 14:50:47
915
原创 SpringSecurity基于内存的多个登录用户支持
Spring Security 支持各种来源的用户数据,包括内存、数据库、LDAP 等,它们被抽象为一个 UserDetailsService 接口,任何实现了 UserDetailsService 接口的对象都可以作为认证数据源。在这种设计模式下,Spring Security 显得尤为灵活。通过覆盖 configure(AuthenticationManagerBuilder auth) 方法,并使用 inMemoryAuthentication() 方法来配置基于内存的用户存储。
2024-11-22 17:00:03
1108
原创 SpringSecurity创建一个简单的自定义表单的认证应用
在 Spring Security 中创建自定义表单认证应用是一个常见的需求,特别是在需要自定义登录页面、认证逻辑或添加额外的表单字段时。以下是一个详细的步骤指南,帮助你创建一个自定义表单认证应用。WebSecurityConfigurerAdapter 是 Spring Security 框架中的一个关键组件,它作为一个适配器类,允许开发者通过继承它并重写相关方法来自定义 Web 应用的安全设置。
2024-11-22 15:47:39
879
原创 SpringSecurity创建一个简单的认证应用
Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架,它是Spring项目组中用来提供安全认证服务的框架,能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案。Spring Security 的前身是 Acegi Security。它是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框架。Spring Security采用了AOP(面向切面编程)思想,并基于Servlet过滤器实现。
2024-11-21 18:13:23
381
原创 SpringBoot使用@Validated注解实现参数的验证
@Validated 注解是 Spring 框架中用于数据验证的强大工具,它可以与 JSR-303/349/380 注解结合使用,提供灵活的验证机制。通过合理使用 @Validated 注解,你可以确保应用程序中的数据正确性和一致性,从而提高应用程序的健壮性和用户体验。
2024-11-18 18:04:46
875
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人