- 博客(71)
- 资源 (1)
- 收藏
- 关注
原创 mysql 索引的使用
数据库正在反向扫描索引(从索引末尾向开头扫描),通常用于优化 ORDER BY DESC 或逆序范围查询。在反向扫描索引后,仍需在服务器层对数据进行过滤(索引未完全覆盖查询条件)。含义:使用索引条件下推(Index Condition Pushdown, ICP),在存储引擎层过滤数据。优化建议:为排序字段添加索引,或减少排序数据量(如加 LIMIT)。含义:查询已被优化,无需访问表(如使用聚合函数访问索引的最小值)。匹配的分区(若表已分区)。优化建议:简化查询,或为 GROUP BY 字段添加索引。
2025-03-19 09:57:05
571
原创 Java泛型的全面使用场景详解
通过泛型参数定义类,使其支持多种数据类型。示例:通用容器类// 使用示例// 直接返回String// 自动拆箱为int。
2025-03-17 14:20:50
694
原创 临时数据容器——匿名内部类(new Object)、HashMap、Record(不可变数据载体)
record 是 Java 16+ 引入的特性,用于快速定义不可变数据载体类。其核心特点:自动生成:字段、构造方法、equals()、hashCode()、toString()不可变性:所有字段默认 final类型安全:字段类型明确,无反射或类型转换风险// 定义一个名为 CarData 的 record// 自定义构造方法,添加验证逻辑if (speed < 0) throw new IllegalArgumentException("车速不能为负");
2025-03-17 10:43:00
689
原创 JDK1.8新特性
作为参数传递 Lambda 表达式:为了将 Lambda 表达式作为参数传递,接 收Lambda 表达式的参数类型必须是与该 Lambda 表达式兼容的函数式接口 的类型。流(Stream) 到底是什么呢?是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。“集合讲的是数据,流讲的是计算!注意:①Stream 自己不会存储元素。②Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。③Stream 操作是延迟执行的。
2025-03-13 09:31:30
570
原创 Sharding-JDBC分库分表
随着业务的快速发展,数据库中的数据量猛增,访问性能也变慢,优化必不可少。究其原因是关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据容量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引性能仍下降严重。
2024-11-13 11:12:46
1389
原创 Java Stream流
1. 概述Java Stream API 是 Java 8 及以上版本中提供的一种新特性,它支持对集合(Collections)进行声明式的操作。Stream API 可以用于执行复杂的数据转换操作,并支持并行处理。2. Steam操作中间操作(Intermediate operations)中间操作返回的是一个新的 Stream,可以继续进行链式调用。以下是一些常见的中间操作:(1)filterfilter(Predicate<? super T> predicate): 过滤元素
2024-11-07 13:04:05
871
原创 OAuth2微信扫码登录
微信扫码登录基于OAuth2协议的授权码模式,接口文档:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html流程如下:第三方应用获取access_token令牌后即可请求微信获取用户的信息,成功获取到用户的信息表示用户在第三方应用认证成功。请求获取授权码第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在 PC
2024-03-10 20:39:20
3012
原创 spring boot 生成图片验证码
在认证时一般都需要输入验证码,验证码有什么用?验证码可以防止恶性攻击,比如:XSS跨站脚本攻击、CSRF跨站请求伪造攻击,一些比较复杂的图形验证码可以有效的防止恶性攻击。为了保护系统的安全在一些比较重要的操作都需要验证码。在pom文件中加入依赖<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifac
2024-03-10 19:09:43
843
原创 Spring Security 认证
目前我们测试通过OAuth2的密码模式,用户认证会提交账号和密码,由DaoAuthenticationProvider调用UserDetailsService的loadUserByUsername()方法获取UserDetails用户信息。我们可以在loadUserByUsername()方法上作文章,将用户原来提交的账号数据改为提交json数据,json数据可以扩展不同认证方式所提交的各种参数。有了这些认证参数我们可以定义一个认证Service接口去进行各种方式的认证。定义认证Service 接口。
2024-03-10 18:13:25
827
原创 vue使用瀑布流加载图片
新建一个Water.js文件,在页面种引入。/* 设置一个固定的高度 *//* 开启垂直滚动 *//* 开启垂直滚动 */
2024-03-10 16:52:40
519
原创 spring security 基于数据库用户认证
配合前面几篇文章一起看Spring Security 认证OAuth2SpringBoot +oAuth2+JWT+Spring Security认证配置我们了解了使用Spring Security进行认证授权的过程,目前各大网站的认证方式非常丰富:账号密码认证、手机验证码认证、扫码登录等。连接用户中心数据库进行认证基于的认证流程在研究Spring Security过程中已经测试通过,到目前为止用户认证流程如下:认证所需要的用户信息存储在用户中心数据库,现在需要将认证服务连接数据库查询用户信
2024-03-06 23:52:54
1082
原创 微服务中使用Gatway网关进行认证
注意:网关鉴权功能调试通过后,由于目前还没有开发认证功能,前端请求网关的URL不在白名单中间时会“没有认证”的错误,暂时在白名单中添加 全部放行配置,待认证功能开发完成再屏蔽全部放行配置,除了白名单剩下的就是需要认证的请求,网关需要验证jwt的合法性,jwt合法则说明用户身份合法,否则说明身份不合法则拒绝继续访问。除了白名单剩下的就是需要认证的请求,网关需要验证jwt的合法性,jwt合法则说明用户身份合法,否则说明身份不合法则拒绝继续访问。2、校验jwt的合法性。2、校验jwt的合法性。
2024-03-06 23:14:00
804
原创 SpringBoot +oAuth2+JWT+Spring Security认证配置
官网:https://jwt.io/这个过程就是无状态认证。令牌采用JWT格式即可解决上边的问题,用户认证通过后会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权。拿到了jwt令牌下一步就要携带令牌去访问资源服务中的资源,项目各个微服务就是资源服务,比如:A服务,客户端申请到jwt令牌,携带jwt去B服务查询信息,此时B服务要对jwt进行校验,只有jwt合法才可以继续访问。
2024-03-05 23:31:08
1159
1
原创 OAuth2认证流程
Spring Security支持OAuth2认证,OAuth2提供授权码模式、密码模式、简化模式、客户端模式等四种授权模式,前边举的微信扫码登录的例子就是基于授权码模式,这四种模式中授权码模式和密码模式应用较多,本实例使用Spring Security演示授权码模式、密码模式,其余两种请自行查阅相关资料。答案是否定的,服务提供商会给批准接入的客户端一个身份,用于接入时的凭据,有客户端标识和客户端秘钥,在这里配置批准接入的客户端的详细信息。
2024-03-05 22:53:02
2855
原创 Spring Security 认证研究
FilterChainProxy是一个代理,真正起作用的是FilterChainProxy中SecurityFilterChain所包含的各个Filter,同时这些Filter作为Bean被Spring管理,它们是Spring Security核心,各有各的职责,但他们并不直接处理用户的认证,也不直接处理用户的授权,而是把它们交给了认证管理器(AuthenticationManager)和决策管理器(AccessDecisionManager)进行处理。)方法,设置到其中。
2024-03-03 23:51:28
680
原创 spring cloud熔断降级处理
微服务中难免存在服务之间的远程调用,比如:内容管理服务远程调用媒资服务的上传文件接口,当微服务运行不正常会导致无法正常调用微服务,此时会出现异常,如果这种异常不去处理可能导致雪崩效应。当下游服务异常触发熔断后,上游服务就不再去调用异常的微服务而是执行了降级处理逻辑,这个降级处理逻辑可以是本地一个单独的方法。两者都是为了保护系统,熔断是当下游服务异常时一种保护系统的手段,降级是熔断后上游服务处理熔断的方法。熔断降级的相同点都是为了解决微服务系统崩溃的问题,但它们是两个不同的技术手段,两者又存在联系。
2024-02-27 22:38:01
460
1
原创 Spring Cloud中可以使用Feign进行远程调用
Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign。微服务之间难免会存在远程调用,在Spring Cloud中可以使用Feign进行远程调用,其作用就是帮助我们优雅的实现http请求的发送,解决上面提到的问题。在启动类添加@EnableFeignClients注解。pom.xml中添加依赖。
2024-02-27 22:28:47
204
原创 SpringBoot中事务失效的场景
在示例代码中,事务的入口是createOrder()方法,会开启一个事务,可以成为外部事务。Spring的事务管理默认感知的异常类型是RuntimeException,当事务方法内部抛出了一个IOException时,不会被Spring捕获,因此就不会触发事务回滚,事务就失效了。上面的问题在于非事务方法中调用事务方法其中隐含了一个this.的前缀, 虽然当前方法的事务也被代理类生成了,但是因为默认关键字的原因,调用的还是原来的是没有事务的方法.由于Spring的事务是基于AOP的方式结合动态代理来实现的。
2024-02-26 15:48:04
653
原创 分布式事务-理解CAP理论
学习了CAP理论我们知道进行分布式事务控制要在C和A中作出取舍,保证一致性就不要保证可用性,保证可用性就不要保证一致,首先你确认是要CP还是AP,具体要根据应用场景进行判断。基本可用:当系统无法满足全部可用时保证核心服务可用即可,比如一个外卖系统,每到中午12点左右系统并发量很高,此时要保证下单流程涉及的服务可用,其它服务暂时不可用。在实际应用中符合AP的场景较多,其实虽然AP舍弃C一致性,实际上最终数据还是达到了一致,也就满足了最终一致性,所以业界定义了BASE理论。使用Seata框架基于AT模式实现。
2024-02-25 22:12:46
214
原创 分布式事务
现在的需求是课程发布操作后将数据写入数据库、redis、elasticsearch、MinIO四个地方,这四个地方已经不限制在一个数据库内,是由四个分散的服务去提供,与这四个服务去通信需要网络通信,而网络存在不可到达性,这种分布式系统环境下,通过与不同的服务进行网络通信去完成事务称之为分布式事务。平常我们在程序中通过spring去控制事务是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库来控制事务,此数据库只属于该应用,所以基于本应用自己的关系型数据库的事务又被称为本地事务。
2024-02-25 21:57:31
194
原创 springboot从访问路径中获取IP
IPUtilimport java.net.InetAddress;import java.net.UnknownHostException;import javax.servlet.http.HttpServletRequest;import com.kiz.common.utils.StringUtils;/** * 获取IP方法 */public class IpUtils { /** * 获取客户端IP * * @param request
2024-02-23 17:24:27
487
原创 java根据上传的excel解析成对象,操作完成后返回结果excel
【代码】java根据上传的excel解析成对象,操作完成后返回结果excel。
2024-02-22 14:05:23
204
原创 java导入excel数据,使用map的方式进行映射
controller层接收文件信息,其中dataset参数为我的关联信息,实际情况自行修改。sevince层,业务代码。
2024-02-22 13:59:38
651
原创 根据接收的Excel文件来导入多个sheet,根据索引可返回一个集合
【代码】根据接收的Excel文件来导入多个sheet,根据索引可返回一个集合。
2024-02-22 13:14:14
351
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人