自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(847)
  • 资源 (18)
  • 收藏
  • 关注

原创 为什么要equals方法和hashcode方法一起重写

对象不会被放入哈希集合,为了代码的健壮性、可维护性和遵守 Java 规范,​。​ 这几乎是 Java 开发中的一条铁律。这个反例清晰地展示了只重写。类例子,并尝试将其放入。的工作原理:​**​。

2025-09-10 15:03:35 854

原创 redis key过期后会立马删除吗

场景删除机制延迟性​Key 过期后被访问​惰性删除立即删除实时(访问时触发)​Key 过期后未被访问,但被定期删除抽中​定期删除清理秒级延迟(取决于抽查频率和运气)​Key 过期后长期未被访问且未被抽中​可能滞留内存不确定(直到被访问或抽中)

2025-09-10 14:50:20 551

原创 Redis如果有大量的请求一时处理不完,这些请求会存放在哪里

你可以把整个过程想象成一个网红餐厅​:​TCP 内核队列​ = ​餐厅门外的等候区​客人(请求)到来后,如果里面坐满了,先在门外的椅子上排队。和somaxconn就相当于门外等候区的座位数量。座位满了,新来的客人就会被劝离(连接被拒绝)。​Redis 内部队列​ = ​餐厅内已下单但等待制作的订单​客人已经被领进门坐下并点了菜(请求已被 Redis 接收并解析),但厨房(Redis 主线程)只有一个厨师,一次只能炒一盘菜。订单需要在厨房的订单栏上排队等待制作。

2025-09-09 09:29:03 486

原创 redis里多线程的应用具体在哪些场景

​超高并发连接​:当有数万个客户端同时连接时,网络 I/O 的总压力非常大。​大流量管道(pipeline)​​:客户端使用了 pipeline,一次发送大量命令,读取和解析这些命令包的开销很大。​返回大量数据的操作​:例如执行一个LRANGE命令获取上万个元素,将结果写回 socket 的网络输出量很大。​重要结论:​​​​“慢”的不是CPU,而是I/O​:多线程I/O解决的是网络读写这个瓶颈,而不是CPU计算瓶颈。命令执行本身在内存中极快,通常不是问题。​命令执行仍是单线程。

2025-09-09 09:11:00 703

原创 redission实现读写锁的原理

Redisson 实现分布式读写锁的核心原理是 ​​ + ​,在保证强一致性的同时实现高效的读并发(读不阻塞读,写阻塞读)。

2025-09-06 10:53:37 589

原创 java分布式场景怎么实现一个高效的 读-写锁

​。

2025-09-06 10:35:56 968

原创 hashmap计算key的hash的时候为什么要右移16位

而计算index或者说索引或者说桶的时候,是用hashmap的数组长度-1 & 上面计算的hash值,所以如果上面提到的hash值包含整个hash的32位信息的话,极大的减少了hash碰撞的可能性。hashmap计算key的hash的时候,右移16位目的是为了让低16位包含完整的hash值的信息,因为大部分情况下,hashmap的数组长度是小于2的16次方的,

2025-08-30 21:17:53 230

原创 java 和 synchronized里的CAS问题

java多线程自旋的CAS是什么意思,详细说明在 Java 多线程中,自旋的是一种,用于在高并发场景下实现线程安全。它结合了自旋(即线程在不断尝试获取资源时不会立即阻塞)和 CAS 原子操作,从而在一定条件下实现更高效的线程同步。Java 的java复制输出结果是:复制whileJava 中的 CAS 操作依赖于 sun.misc.Unsafe类,底层通过硬件指令(如 x86 架构的CMPXCHG指令)实现。以下是的方法的实现:java复制ABA。

2025-08-18 11:17:11 596

原创 IDEA中查看方法的调用链

标注⑤:调用关系树,譬如说:A方法中调用了B方法,B方法中调用了C方法和D方法.....(因为我们的项目有好多module,所以用这个的时候也会把调用JAR包,JDK中的方法显示出来,这个就很烦)解释说明:标注④:被调用关系树,譬如说:A方法被B方法和C方法调用,B方法又被D方法调用,C方法被E方法调用.....2.1把光标放在方法名上,右键,选择Analyze -->Data Flow to Here命令(如图)3 查看一个Java类、方法或变量的直接使用情况(和2的功能主要区别在于,2是调用链)

2024-08-25 13:14:42 1471 1

原创 MapStruct参数拷贝

我们上面代码里面可以看到,处理参数和返回参数都要经过不同的转换,这里面看似乎增加了不少工作量,主要是测试案例写的比较简单,真实场景中,如果你不区分,就有可能引起各种问题,如信息泄露等。所以定义了不同的层次,当然,根据需要选择。好了,上面就是基本用法了,至于更复杂的用法,推荐查看官网案例。2.添加转换接口类,可以按照不同业务写多个接口,加上注解。来拷贝对象,但是这不是完全的深拷贝,我们可以用。这上面只是简单的参数相同和集合映射的例子,我们先看看前面的部分代码。另外,上面我们使用了。

2024-06-26 08:37:54 542

原创 spring @Order注解

Order多个相同类型处理器的执行顺序:例如多个异常处理器处理相同类型的异常。多个切面(Aspect)的执行顺序:在 AOP 中控制不同切面的执行先后顺序。多个过滤器(Filter)的执行顺序:在 Spring Web 中控制过滤器的执行顺序。通过使用@Order注解,你可以明确指定这些组件的执行顺序,从而确保应用行为符合预期。

2024-06-18 20:44:02 551

原创 Springboot应用设置跳过SSL证书认证

虽然这个类在开发和测试环境中可能有用,但在生产环境中使用是不安全的,因为它会使你的应用程序容易受到各种 SSL/TLS 攻击。请确保在生产环境中进行适当的证书验证,以保护数据传输的安全性。

2024-06-18 10:50:21 2082 1

原创 jpa下hibernate的ddl-auto的各种属性

一般选择validate/update/none,绝对不能选 create, create-drop,update能帮助建表。如果希望实体类发生改动而数据库表做出相应的更改且不破坏数据库现有的数据,要将spring.jpa.hibernate.ddl-auto属性值设置为update。这里还有一点,就算把ddl-auto设置成update值,也不能识别对表结构的所有更改,往往只能识别出增加的字段,比如修改字段名,修改字段类型或者删除一个字段都是不能够识别的。

2024-06-18 10:15:12 2529

原创 CSRF 攻击详解

禁用 CSRF 保护有其合理的应用场景,特别是在开发 RESTful API、使用其他防护措施、内部应用和非浏览器客户端时。然而,需要谨慎对待这个决定,并确保在适当的场景中启用 CSRF 保护,以防范潜在的安全风险。

2024-05-22 22:09:28 4906

原创 spring validator使用

在开发现代应用程序时,数据验证是确保用户输入的正确性和应用程序数据完整性的关键方面。Spring Boot 提供了强大的数据验证机制,使开发者能够轻松地执行验证操作。本文将深入介绍 Spring Boot 中的 Validation,以及如何在应用程序中正确使用它。因Springboot的默认内置了(Spring boot 2.3以前版本),虽然也能做到数据校验,但是考虑到是一个抽象层,使得验证框架的具体实现变得可插拔。这意味着,除了,开发者可以选择其他符合 Bean Validation 规范的实现。

2024-05-16 22:23:07 878

原创 (适配器模式)当接口要加入新方法时,我后悔没有早点学设计模式了

通过适配器模式和策略模式,我们即可以保证具体的实现类实现共同的接口或继承共同的基类,同时,又能在新增功能(方法)的时候,尽可能的保证设计的清晰。不像之前那种破罐子破摔的方式,接口和实现类几乎脱离了关系,每个实现类,各玩儿各的。

2024-05-16 22:20:58 786

原创 CompletableFuture 异步关于异常的坑

在使用异步CompletableFuture时,无论是否有返回值都要调用get()/join()方法,避免程序执行报错了,仍然返回成功。结果:接口返回成功,控制台打印异步线程异常日志,主线程没有打印异常日志。结果:结果返回成功,控制台打印异步线程异常信息,主线程没有打印异常信息。结果:结果返回成功,控制台打印异步线程异常信息,主线程没有打印异常信息。处理,如果只是对异常做处理,不涉及对上一个异步任务结果的情况,调用。结果:接口返回失败,控制台打印异常日志。结果:接口返回成功,控制台打印异常信息。

2024-05-14 20:34:49 592

原创 SpringBoot接收参数的19种方式

https://juejin.cn/post/7343243744479625267?share_token=6D3AD82C-0404-47A7-949C-CA71F9BC9583

2024-05-14 20:31:42 398

原创 springboot @Async 失效的9种场景

这个问题还是比较有意思的,今天这篇文章总结了@Async注解失效的9种场景,希望对你会有所帮助。

2024-05-08 18:07:41 1377

转载 Spring 核心扩展点

一般情况下,Spring通过反射机制利用bean的class属性指定支线类去实例化bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在bean中提供大量的配置信息。使用场景:用户可以扩展这个类,来为要实例化的bean作一个代理,比如为该对象的所有的方法作一个拦截,在调用前后输出一行log,模仿。可以看到,该类用于执行各种驱动接口,在bean实例化之后,属性填充之后,通过执行以上红框标出的扩展接口,来获取对应容器的变量。其作用是在bean的初始化阶段,如果对一个方法标注了。

2024-04-04 21:31:08 119

转载 springcloud ConfigDataContextRefresher刷新central config

首次请求/adviser/loss/test接口,会发现返回=》张三:18,然后修改git上的配置,将年龄修改为20,再次请求/adviser/loss/test接口,发现配置并未更新。关于新版本的实现属实不太理解(功力尚浅),我个人也在学习和总结,后续如果有新的进展,我也会及时更新的,如果您有相关资料或见解,也烦请指教。在2处,重新加载配置,在当前的版本,有2中实现方式:一种是兼容旧版本的实现,一种是新版本的实现,这两种实现分别在。放入缓存中(缓存中没有则放入,有则返回原对象),然后调用。

2024-03-26 18:05:41 298

原创 @JsonProperty作用

JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")。这里需要注意的是将对象转换成json字符串使用的方法是fasterxml.jackson提供的!jackson的maven依赖。

2024-03-25 17:01:18 1558 1

转载 OAuth2.0通俗易懂的解释

是目前最流行的授权机制,用来授权第三方应用,获取用户数据。这个标准比较抽象,使用了很多术语,初学者不容易理解。其实说起来并不复杂,下面我就通过一个简单的类比,帮助大家轻松理解,OAuth 2.0 到底是什么。

2024-01-30 16:01:13 213

原创 谷歌浏览器启用实时字幕功能

您可对字幕进行自定义,以使其更便于阅读。使用字幕框上的箭头收起和展开字幕。选择字幕以将其移至浏览器中您偏好的位置。更改字幕字体、大小、颜色和不透明度。更改背景颜色和不透明度。在计算机上打开 Chrome。在右上角,依次选择“更多”图标设置。在“设置”页面底部,依次选择无障碍字幕偏好设置。在计算机的系统偏好设置中,选择您想使用的自定义项。

2024-01-05 20:32:38 18441 1

原创 ThreadLocal和Synchronized的用法和区别

和。

2023-12-22 13:46:00 479

原创 spring三级缓存

二级缓存:earlySingletonObjects。一级缓存:SingletonObjects。

2023-12-21 14:56:02 961

原创 TaskDecatator用法

方法的目的是让你可以在实际的任务执行之前,对任务进行一些额外的处理。只是一个自定义装饰行为的接口,具体的上下文传递逻辑需要根据你的实际应用场景来设计。例如,在执行异步操作时,你可能需要将主线程的一些上下文信息(比如用户身份验证令牌或请求上下文信息)传递给执行异步操作的线程。,它会捕获提交任务时当前线程的上下文,并在任务实际执行前将这个上下文设置到执行任务的线程中。方法中的逻辑会在你的任务代码之前执行,允许你设置或者修改线程的状态,以便这些状态可以在任务执行时被使用。方法,然后再执行你的任务代码。

2023-12-19 14:57:30 2086

原创 redis实际应用实现合集

首先需要把10个观众的id(具体是什么id可以根据实际业务情况自己定义)放到redis 的 set 集合里。从10名观众中抽取奖项,其中一等奖1人,二等奖2人,三等奖3人。插入10个观众,act:002是活动的名字,后面分别是观众id。从10个观众中随机抽2名幸运观众。需要用到redis的。

2023-12-11 21:20:44 309

原创 springsecurity为什么说使用JWT就可以disable csrf

这个方案的实现方法是,在设置 JWT 的同时,设置一个额外的 CSRF Token Cookie,并将这个 CSRF Token 也返回给前端。攻击者可以在他们控制的网站上构造一个请求,当用户访问这个网站时,这个请求会在用户的浏览器中执行,并带有用户对目标网站的凭证(例如,cookies)。例如,你应当使用 HTTPS 来防止 MITM 攻击,使用适当的策略和技术(例如,Content Security Policy,对用户输入的严格检查和清理)来防止 XSS 攻击。

2023-12-07 20:22:10 995

原创 一文秒懂 springsecurity6.2实现自定义登录页

springsecurity原理和基础这里暂时不讲,网上资料太多了,这个大家可以自行查找学习,基本上没什么太大区别,看几篇文章就了解了,这篇文章主要是针对自定义登录页做一个demo,通过这个小 demo,大家可以直接理解springsecurity 处理登录的流程。这里只是简单的创建了一个 user,实际情况下可以在这里查询 db 里的user,为了简单化流程,这里就略过查询 db 的逻辑了,大家可以自行根据 mybatis 处理这一块内容。

2023-12-06 11:30:51 3288

原创 chrom谷歌浏览器删除表单填写记录

鼠标光标移动到删除的信息 shift+del就可以删除了

2023-12-05 11:16:36 767 1

原创 Failed to resolve org.junit.platform:junit-platform-launcher:1.9.3

springboot 跑 unit test 的时候,如果报错如题的话,可以更改idea 里的 HTTP Proxy 配置为:Auto-detect proxy settings。

2023-12-04 13:45:54 1150

原创 Java通过central config 开关实现双写控制

最后获取开关的值可以配置在central config里,通过更改这个值就可以实现对双写的控制。

2023-11-14 19:52:05 285

转载 Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用

当标记在一个方法上时表示该方法是支持缓存的,当标记在一个类上时则表示该类所有的方法都是支持缓存的。我们前面提到的@Cacheable、@cacheEvict等也可以标注在接口上,这对于基于接口的代理来说是没有什么问题的,但是需要注意的是当我们设置proxy-target-class为true或者mode为aspectj时,是直接基于class进行操作的,定义在接口上的@Cacheable等Cache注解不会被识别到,那对应的Spring Cache也不会起作用了。下面是几个使用参数作为key的示例。

2023-11-14 10:33:36 1715

原创 线程安全问题解析

多线程问题的根本原因是由于多个线程同时操作了同一个对象的成员变量,而且这个变量没有做同步处理,这就会有多线程问题,所以如果一个对象没有成员变量,那么就不会有多线程问题,因为如果一个对象只有方法的话,那么方法是在线程自己的内存空间执行的(线程内存里有栈帧,就是用来执行方法),所以在方法内所产生的对象都是存储在线程自己的内存空间的,不存在线程安全问题。这时候线程2 修改的数据在save到主内存之前,线程1是可见的,也就是说线程1的修改被线程2覆盖掉了,就破坏了线程1的原子性。5. 线程执行方法的过程。

2023-11-10 14:36:26 329

转载 Redis key 过期通知

默认 notify-keyspace-events "" 修改为:notify-keyspace-events Ex。//通知效果如图 RedisKeyExpirationListener.onmessage。只有当key被删除时候 才会通知 并不是在key过期后就马上删除的。

2023-11-09 10:09:02 1170

原创 ThreadLocal用法

是的,使用同步可以解决问题,但是我们要看哪一种方式更合适,一般必须使用同步的场景是这个变量属于业务共享的,也就是说一个线程操作这个对象对别的线程是有业务影响的,是有业务逻辑关系的,再或者说其他线程操作这个变量要看当前线程操作的结果,比如商品库存,这个你总不能说用 ThreadLocal 去定义这个库存吧,那岂不是要疯了。这样,每个线程独立的拥有对象 t,虽然方法是公用的,但是里面的 t 对象是线程独有的,所有就解决了冲突问题。

2023-11-05 21:32:05 319

原创 Mybatis-plus 自定义拦截器动态修改sql

【代码】

2023-11-02 16:00:56 2354 1

原创 springboot 配置文件加载顺序

属性:如果存在`spring.config.name`属性,Spring Boot会尝试加载与该属性值匹配的文件,无论其扩展名是`.properties`还是`.yml`。例如,如果`spring.config.name=myapp`,则会尝试加载`myapp.properties`或`myapp.yml`。`属性,Spring Boot会按照该属性指定的路径加载配置文件。可以指定单个文件的路径,也可以指定包含通配符的路径。

2023-10-28 21:41:48 493

原创 springboot application 常用配置

【代码】springboot application 常用配置。

2023-10-27 13:44:53 241

mysql5.7reference menu

mysql5.7 官网 reference menu,可以作为参考手册,写的很清楚

2018-01-03

图像纹理特征提取 matlab 代码

利用MATLAB提取各种纹理特征

2016-04-19

图像纹理特征提取完整版

上次没传完整,忘了上传那3个函数了,这次是完整版

2017-06-21

mybatis逆向工程jar组件包

mybatis逆向工程jar包以及相关文档,包括mybatis-generator-core-1.3.2.jar 和MySQL-connector-Java-5.1.26.jar

2018-01-24

黑马程序员Struts2笔记

黑马程序员Struts2笔记,包括前两天的内容,不包括源码,只是笔记文档

2017-11-28

Windows下 libsvm3.22

2016年12月最新版 Windows 下的 libsvm3.22

2016-12-22

PDF页面合并器

一款很好用的pdf合并器,非常方便

2017-06-21

SVM 测试样本点相关度打分

可以通过本代码得到 SVM 样本测试点的隶属分数

2017-01-20

eps文件打开器

非常好的一款eps查看器,不需要ps那么大的内存,只有8M,而且打开速度比ps快上100倍,太给力了这个小软件

2017-03-22

swagger-editor3.5.7最新版

swagger-editor3.5.7最新版,这个工具类非常好用,大家可以试着用一下

2018-11-14

c3p0-0.9.2.1和mchange-commons-java-0.2.3.3

c3p0-0.9.2.1和mchange-commons-java-0.2.3.3开发所需的两个包

2017-11-22

mnist图像库已转换为可视的图像格式

mnist手写体数据库原来的格式是不可视化的,现在转换为可视的图像格式,供大家参考查看,可以下载下来做深度学习的研究

2015-07-25

mercurial_extension.zip

该插件是解决Mercurial:Hg检出的时候:The system cannot find the path specified 报错的问题

2019-06-03

libsvm 官方教程

libsvm 官方教程,包含两个文档,很详细,需要的可以看一下

2017-01-02

matlab-libsvm

安装libsvm-mat是在MATLAB平台下使用libsvm的前提,如果没有安装好也就无法使用,在MATLAB平台下安装libsvm-mat一般有以下几个大步骤: 1. 将libsvm-mat所在工具箱添加到matlab工作搜索目录 (File ——》 Set Path… ——》 Add with Subfolders...); 2. 选择编译器(mex -setup); 3. 编译文件(make)。 每一步都很重要【我就不在每一步前面说 这一步很重要了~】,下面我将 掰饽饽说馅【一句东北俚语i.e.翔实详尽】 的给大家详细说明。 1. 将libsvm-mat所在文件夹目录添加到MATLAB工作搜索目录(File ——》 Set Path…——》 Add with Subfolders...) 这第一步很重要,如果没有将libsvm-mat所在文件夹目录正确的添加到MATLAB工作搜索目录,使用的时候就会出现 ??? Undefined function or variable 'XXX'. 等等报错。 首先明晰一下MATLAB工作搜索目录(路径)和当前目录(路径)这两个概念: 当前目录[Current Folder]是指MATLAB当前所在的路径,MATLAB菜单栏下面有一个Current Folder可以在这里进行当前所在目录的更改。 工作搜索目录(路径)是指当你使用某一个函数的时候,MATLAB可以进行搜索该函数的所有的目录集合。

2015-04-05

Java包的作用

Java包的作用

2015-09-22

aspectjweaver-1.8.7和aopalliance1.0

spring AOP 开发所需的两个 jar 包:aspectjweaver-1.8.7和aopalliance1.0

2017-11-15

空空如也

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

TA关注的人

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