自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 pig4cloud自定义SecurityFilterChain、Filter

在现在pig4cloud的版本中具体的做法是声明一个Configuration配置类,然后声明要生成SecurityFilterChain的方法,逻辑里将要添加的Filter可以做成一个List集合,然后添加到SecurityFilterChain中;要自定义多个SecurityFilterChain只需要在MySecurityConfig中再写一个返回SecurityFilterChain的方法,跟4.2中的一样,添加test2的SecurityFilterChain;重新启动项目,然后发送请求;

2024-09-20 16:15:00 382

原创 pig4cloud中RequestMatcher的添加

他们都已经有了匹配规则。这个方法主要是创建一个metadataSource,通过metadataSource创建FilterSecurityInterceptor对象,然后将其加入到http对象的filter中;可以看到添加了一个AntMatcher,将所有要放行的url(之前配置文件application.yml有配过的security.oauth2.ignore中的和默认放行的)最后将处理好的FilterSecurityInterceptor放入HttpSecurity的对象http的filter中;

2024-09-20 08:30:00 452

原创 pig4cloud的Filter匹配matcher过程

循环执行matches方法进行匹配,第一个是OrRequestMatcher,这个RequestMatcher的实现是将多个RequestMatcher进行组合,只要满足一个就算匹配;顺着第一条FilterChain进入matches方法,会先进入DefaultSecurityFilterChain(FilterChain的实现对象)中的matches方法;然后再调用自己的内部类的对象的接口实现,然后去父类AntPathMatcher中进行最终的url匹配。pig4cloud版本:3.7.1-JDK8。

2024-09-19 15:30:00 692

原创 人工智能时代,程序员如何保持核心竞争力?

在当今人工智能时代,科技的飞速发展如同一股汹涌的浪潮,不断冲击着各个行业。对于程序员这个群体来说,AIGC(如 ChatGPT、Midjourney、Claude 等)大语言模型的涌现以及 AI 辅助编程工具的日益普及,无疑带来了深刻的变革。在这个充满挑战与机遇的时代,程序员们究竟该如何保持核心竞争力,成为了一个备受关注的问题。

2024-09-19 12:19:49 780

原创 pig4cloud鉴权token的处理流程

pig4cloud鉴权token的处理流程,源码刨析。

2024-09-19 10:40:48 534

原创 pig4cloud登录请求处理流程以及token的签发

可以看到有4种converter的实现,跟进其converter方法,可以看到,其实就是根据grantType检查是否支持此操作,而这个OAuth2ResourceOwnerBaseAuthenticationConverter是支持password方式的,然后跟进第一个AnonymousAuthenticationProvider的support方法中,可以看到此方法支持的token是AnonymousAuthenticationToken或者他的子类、实现类。可以看到可选的providers有14个;

2024-07-31 11:26:35 969

原创 pig4cloud请求分发流程和pig4cloud的Filter

OAuth 2.0令牌端点的过滤器,它处理OAuth 2.0授权授予的处理。这实际上是对旧的httpessioncontextintegrationfilter的重构,将存储问题委托给一个单独的策略,允许在请求之间维护安全上下文的方式上进行更多定制。这个过滤器是一个比较重要的,当客户端访问资源时,RequestCacheAwareFilter尝试冲缓存中查找已经保存的Request,默认是存储到Session的Attitude种的,默认的key为SPRING_SECURITY_SAVED_REQUEST。

2024-07-31 11:08:13 795

原创 ubuntu24无法网络无法连接的问题

今天使用ubuntu的最新版24.04碰见个很奇怪的问题,所有防火墙都是关闭的,但是无法访问3306端口。通过官方文档发现,原来新版本引入了AppArmor,进行了跟高级别的安全控制,这就是为什么所有的服务都是正常的,防火墙也都是关闭的却无法连接的原因。关闭AppArmor或者配置AppArmor的规则,命令请自行查找哈。

2024-07-21 02:41:51 541

原创 pig4cloud启动流程

pig4cloud启动流程源码刨析

2024-07-20 17:15:00 1167

原创 基于SpringSecurity的最佳实践:Pig4Cloud

java 认证、权限管理框架

2024-07-20 08:30:00 495

原创 redis操作set时的性能分析y以及一系列问题

redis zset的性能情况以及一系列问题

2024-07-19 09:00:00 624

原创 zset分数相同元素排序问题、score类型和值的问题

redis的 zset分数相同元素排序问题

2024-07-19 08:15:00 276

原创 Java操作Excel技术选型

Java操作Excel技术选型

2024-07-18 10:38:52 767 1

原创 Java动态执行jar包中类的方法

通过反射可以实现动态调用jar包中类的方法

2024-07-08 16:07:48 704 1

原创 微信小程序点击事件冲突的解决

有父组件group,里面有个button,当点击button时,目的是触发button的事件,实际却触发了container的事件点击按钮触发click1。

2024-06-29 05:54:14 453

原创 使用@Lazy注解解决循环依赖的问题

订单服务与用户服务的循环依赖假设在一个电商系统中,我们有两个服务类:OrderService 和 UserService。OrderService 需要访问用户服务来获取或更新订单关联的用户信息。例如,当处理订单时,可能需要检查用户的信用状态或地址信息。UserService 同样也需要访问订单服务,比如为了统计用户的购买行为或者计算用户的积分,这可能涉及到查询某个用户下的所有订单。

2024-06-25 13:38:45 420

原创 IDEA注释模板内容

Idea配置快捷键的内容;Idea注释模板

2024-06-03 14:15:12 196

原创 基于SpringBoot实现WebSocket实时通讯的服务端和客户端

实现服务端注册的客户端的列表;服务端向客户端发送广播消息;服务端向指定客户端发送消息;服务端向多个客户端发送消息;客户端给服务端发送消息;

2024-03-20 10:10:07 893

原创 Tomcat的安装

Windows安装Tomcat、Linxu安装Tomcat,最简单方便的安装Tomcat;

2024-03-15 14:09:43 252

原创 数据库设计的三范式

数据库设计的范式,数据库设计的三范式。第一范式(1NF):字段不可再拆分第二范式(2NF):表中任意一个主键或者任意一组联合主键,可以确定除该主键外的所有非主键值第三范式(3NF):在任意主键都可以确定非主键值的情况下,不能存在通过某非主键字段A还可以获取到某非主键字段B。

2024-03-15 11:07:25 449

原创 host文件的位置,Linux中、Win中host文件的位置

host文件的位置,Linux中host文件的位置、Win中host文件的位置。

2024-03-14 16:11:05 577

原创 编码、加密、哈希化分别是什么意思

一文讲清楚什么是编码、加密、哈希化

2024-02-28 14:59:22 431

原创 Java连接MySQL实现增删改查最简单的实现

小白都能看懂的Java使用JDBC连接MySQL实现增删改查

2024-02-28 14:45:02 1723

原创 设计模式概述

什么是设计模式?为什么要用设计模式?设计模式的使用场景?设计模式的定义?设计模式的六大原则?设计模式适用什么情况,什么情况不适用?

2024-02-28 10:37:00 328

原创 for、foreach、stream循环性能比较

for、foreach、stream都可以循环处理数据,如果单纯当循环使用,for、foreach、stream哪个性能更好?

2024-01-29 10:27:48 750 1

原创 下载大文件时内存溢出情况分析解决

下载小文件没有问题,在超过100M左右时会报错`org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space`;

2024-01-26 13:38:31 1166

原创 重构第十二章:大型重构 and结语

至此这本书就这样草草结束了,后面肯定是还会来刷第二遍、第三遍的,在这一次的阅读中,我基本上只是快速的找手法,对深入理解可能还有欠缺,尽管如此,我还是深感收获颇丰,对代码重构这一看似琐碎而实则深具影响力的技术有了更深刻的理解。首先,本书以通俗易懂的语言阐释了代码重构的核心理念和基本原则,使得这个看似复杂的主题变得亲切而易于理解。通过“马老师”的引导,我逐渐认识到重构并非只是修补 bug 或优化代码,更是一种有组织、有策略的代码演进方式。

2023-12-29 09:45:27 561

原创 重构第十一章:处理概括关系

第十一章系统介绍了一系列处理概括关系的重构手法,旨在优化继承关系和其他类型的概括关系,提高代码的可维护性和可读性。在使用这些技巧时,要根据实际情况选择最适合你的方法,确保代码清晰易懂,确保代码的质量和可维护性。解决方法:将相似的属性和方法提取到一个超类中,让多个类都能继承这个超类。解决方法:将只有某个子类使用的方法移到该子类中,使得方法更加局部化。解决方法:将只有某个子类使用的字段移到该子类中,使得字段更加局部化。问题:子类的逻辑只是调用了父类的方法,没有实际的扩展。问题:父类中的方法只有某个子类使用。

2023-12-27 09:45:38 720

原创 Spring常用注解详解(三)

当一个方法被标注为 @Transactional 时,Spring 将为该方法开启一个事务,并在方法执行完成后提交事务,或在方法执行过程中发生异常时回滚事务。通过将 @Async 注解标记在方法上,Spring 将会在调用该方法时,启动一个新的线程来执行方法体,从而实现异步执行。异步方法的返回值类型通常是 void,因为调用者无法直接获取异步方法的返回结果。在上述例子中,performAsyncOperation 方法被标注为 @Async,表示该方法应该在一个独立的线程中异步执行。

2023-12-27 09:44:13 833

原创 重构第十章:简化函数调用

当我们编写软件时,代码的可读性和可维护性是至关重要的。第十章介绍了一系列精妙的方法,旨在简化函数调用,使得我们的代码更易读、更易维护。

2023-12-22 09:49:22 370

原创 重构第九章:简化条件表达式

在应用这些手法时,要根据具体的情况选择合适的手法,确保代码的质量和可维护性。以策略取代条件表达式(Replace Conditional with Strategy): 多个条件表达式根据相同的条件选择不同的行为时,将条件表达式替换为策略模式,每个策略对象实现不同的行为。合并重复的条件片段(Consolidate Duplicate Conditional Fragments): 多个条件片段执行相同的操作时,将重复的条件片段合并为一个条件片段,避免重复代码。

2023-12-21 14:36:01 412

原创 Spring常用注解详解(二)

在上述例子中,@ModelAttribute(“currentUser”) 注解被用于标注 getCurrentUser 方法的返回值,表示将方法返回的 User 对象放入模型中,属性名为 “currentUser”。在上述例子中,@InitBinder 注解被用于标注 initBinder 方法,该方法接收一个 WebDataBinder 参数,通过该参数可以注册自定义的数据编辑器,如上例中的日期编辑器。它可以用在方法上,标识一个方法为初始化绑定器的方法,用于自定义数据绑定的规则。

2023-12-20 15:00:59 924

原创 重构第八章:重新组织数据

以多态取代条件表达式(Replace Conditional with Polymorphism): 使用条件表达式来选择不同的行为时,使用多态将条件表达式替换为具体的子类,以实现更清晰的逻辑。以对象取代数组(Replace Array with Object): 使用数组表示一组相关的数据时,创建一个对象,将数组替换为对象的字段,使得数据更易于扩展和维护。在这一章作者详细的介绍了一系列的重构手法,旨在优化代码中的数据组织方式,以提高代码的清晰度、可读性和可维护性。

2023-12-20 09:52:19 431

原创 SpringSecurity自定义Filter、自定义FilterChain以及FilterChain的匹配

SpringSecurity怎么自定义Filter、怎么自定义FilterChain以及怎么实现FilterChain的匹配

2023-12-20 09:51:11 3731

原创 Git的rebase和merge合并代码的区别

git的中rebase和merge都可以合并代码,那他们有什么相同和不同呢?本文来一次说清楚、说明白

2023-12-18 16:57:21 604

原创 重构第七章:搬移特性

搬移函数至委托类(Move Method to Delegate): 如果一个函数对于某个类的委托而言更有意义,就在委托类中创建方法,并在原类中使用委托来调用委托类的方法。搬移函数至服务类(Move Method to Service): 如果一个函数对于某个服务类而言更有意义,就在服务类中创建方法,并在原类中使用服务类来调用服务类的方法。字段的提炼(Extract Field): 如果一个类中某个字段的责任变得过多,就创建一个新的类,将相关的字段移至新类中,然后在原类中使用新类的实例。

2023-12-18 16:44:35 698

原创 重构第六章:重构API

解决方法: 将向下转型的操作封装在一个函数中,使得API不再直接依赖于具体的实现。解决方法: 将带有参数的函数替换为多个明确的函数,每个函数对应一个可能的参数值。解决方法: 引入一个特殊的Null对象,代表缺失的对象,避免返回null。解决方法: 将函数封装成一个命令对象,以更灵活地扩展和组合不同的逻辑。解决方法: 将这组原始数据封装成一个对象,提高参数的表达力和可读性。解决方法: 使用工厂函数创建对象,允许在创建时进行更多的逻辑操作。问题: 使用一个参数控制函数的行为,而这个参数可能有多个取值。

2023-12-18 14:51:09 707

原创 重构第五章:重构的方法

在软件开发的舞台上,重构是一场不断进化的演变。为了优化、提升代码的质量,我们需要掌握各种重构的细致技法。以下是书中本章详细介绍的重构手法,它们为我们提供了一系列实践的方法,助力代码保持清晰、可读、可维护。每个手法都有其特定的应用场景,我们可以根据实际情况选择合适的手法进行应用~~~~~太多了,就当笔记吧,散会。

2023-12-12 13:59:58 588

原创 重构第四章:构建测试体系

在构建测试体系的过程中,不仅要注重全面性,还要注重测试的更新和维护,以应对代码变更带来的挑战。通过持续关注测试质量,我们能够在重构的道路上越走越远,如果你是刚入行的新同学,那如果前辈们有漏掉的螺丝,最后都是你补的~所以你一定要时刻盯紧测试哦。在有限的时间和资源下,聚焦于最为核心和关键的功能,犹如船队中的旗舰,为代码的稳定性提供坚实的保障。同时,确保测试的全面性是不可或缺的,覆盖各种情况,包括正常场景和边缘案例,是发现潜在问题的有力武器。随着代码的变迁,测试也需要时刻保持同步,以确保其与代码的一致性。

2023-12-08 15:15:00 807

原创 Spring常用注解详解(一)

在最新版本的 Spring 中,@RequestMapping 已经被 @GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping 等更具体的注解取代,以提高代码的可读性和简洁性。在上面的例子中,@RequestMapping 注解在类级别上定义了 “/example”,因此所有该类中的处理方法的路径都会以 “/example” 作为前缀。在处理成功和失败的情况时,使用该注解可以提供清晰的标识,使得代码更易于维护和理解。

2023-12-08 10:41:29 868

基于微信小程序的校园二手交易平台

系统分为三个端,分别是客户端、管理端、服务端; 客户端:使用原生微信小程序实现 管理端:使用Layui实现 服务端:使用Java SpringBoot实现 用到的所有技术栈: 客户端:微信小程序 管理端:Html、Css、JavaScript、Layui、Ajax、JQuery 服务端:Java JDK8、SpringBoot、Mybatis 数据库:MySQL 工具:Idea、HBuilderX、微信小程序开发者工具、xampp、Navicat 安装教程 启动MySQL服务,新建数据库second_market,导入数据库文件second_market.sql 启动服务端,在idea中打开SecondMarketServer,修改application.yml文件中的数据库连接信息,启动项目 启动管理端,在HBuilderX中打开SecondMarketManager;修改AppConfig.js中的服务器信息, 配置web服务器,可以使用Nginx或者

2024-07-31

植物大战僵尸 中文原版(支持全屏)

植物大战僵尸资源 中文原版 怀旧

2024-02-19

空空如也

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

TA关注的人

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