蜀中孤鹰
码龄6年
关注
提问 私信
  • 博客:152,124
    问答:25
    动态:27
    152,176
    总访问量
  • 128
    原创
  • 15,382
    排名
  • 269
    粉丝
  • 0
    铁粉
  • 学习成就

个人简介:心之所向,倾力达之。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
  • 加入CSDN时间: 2019-03-17
博客简介:

小伍的程序之路

博客描述:
学习无边界,探索无止境。
查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    550
    当月
    1
个人成就
  • 获得321次点赞
  • 内容获得42次评论
  • 获得486次收藏
  • 代码片获得414次分享
创作历程
  • 24篇
    2024年
  • 3篇
    2023年
  • 4篇
    2022年
  • 8篇
    2021年
  • 36篇
    2020年
  • 55篇
    2019年
成就勋章
TA的专栏
  • 并发&多线程
    29篇
  • 数据结构
    3篇
  • 重构
    1篇
  • java基础
    2篇
  • MySQL
    2篇
  • 浅谈Java虚拟机(JVM)
    1篇
  • 排序
    4篇
  • 杂项
    10篇
  • JVM
    1篇
  • UNIX/Linux
    2篇
  • web
    5篇
  • 框架
    14篇
  • 设计模式
    3篇
兴趣领域 设置
  • 开发工具
    gitidea
  • 大数据
    mysqlredis
  • 后端
    spring
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

347人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 问答
  • 帖子
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

详细解读Gson 、Jackson 、FastJson 三大json序列化工具

远程端有一个类Exploit,这个类有恶意代码,将这个类的class文件部署在HTTP服务上,确保通过 http://ip:port/Exploit.class 可访问下载即可。jackson反序列化使用JsonDeserializer接口, 而一般的java实体类(非jdk中的常见类,如Date Collection)的。jackson序列化使用JsonSerializer接口, 而一般的java实体类(非jdk中的常见类,如Date Collection)的。可以在类,字段以及将来的方法中使用此注解。
原创
发布博客 2024.11.18 ·
654 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

Websocket如何分块处理数据量超大的消息体

首先将接收到的二进制数据尝试解码成文本数据,若发现接收缓冲区messageBufferText容量不足则查到分块处理器,若存在分块处理器泽调用sendMessageTex(false),先处理部分数据,若不存在则直接抛出异常。若我们服务端一次性最大处理的字节数是1M,而客户端发来了2M的数据,此时服务端的数据就要被切割成两次传输解码。我们即可以给WsContainer全局设置消息体的缓冲池大小,也可以给每个session单独设置消息体的缓冲池大小。是无法处理分块消息体的。可以分块处理这种数据。
原创
发布博客 2024.11.18 ·
472 阅读 ·
3 点赞 ·
0 评论 ·
2 收藏

记一次工作中订单幂等处理方案

当然可以考虑在数据库新增一张表,这张表上有第三方订单号的字段,并为此字段建立唯一索引, 每次下单前预先往这张表插入数据,如果此第三方订单号已存在,那么插入数据必然报错。第一次是通过分布式锁检测,这是在高并发情况下做幂等,有可能两次下单请求相隔时间很短(几乎同时发起),此时下单流程还没执行完,数据还未保存到数据库,此时直接去查数据库时看不到订单的。不要忘记了我们数据库存储了第三方订单号,在redis分布式锁过期了,我们还可以根据第三方订单号去查数据,如果数据库存在订单就直接抛出异常。
原创
发布博客 2024.11.14 ·
299 阅读 ·
4 点赞 ·
0 评论 ·
2 收藏

由浅入深逐步理解spring boot中如何实现websocket

1.springboot中有两种方式实现websocket,一种是基于原生的基于注解的websocket,另一种是基于spring封装后的WebSocketHandler。
原创
发布博客 2024.11.01 ·
774 阅读 ·
6 点赞 ·
1 评论 ·
11 收藏

绝对全网首发,利用Disruptor EventHandler实现在多线程下顺序性执行任务

可以给事件定义一个hash函数,根据哈希取余的槽位下标和当前处理器的下标比较,判断出此事件是否应被当前的处理器处理,不该其处理的事件直接pass,避免重复消费。这两个处理器,那么每个任务只会被其中一个处理器处理,这两处理器的处理时间总数加起来是这4个事件。,这两个处理器都会去这4个事件,也就是每个事件会被处理两次,每个处理器处理一次;也就是说,假设任务队列中有a、b、c、d三个事件,disruptor有两种任务处理器,一个是。可以彼此独立消费同一个队列中的任务,定义的哈希函数接口和统一的基础父类。
原创
发布博客 2024.06.20 ·
663 阅读 ·
6 点赞 ·
1 评论 ·
2 收藏

利用单线程池实现多线程并发顺序消费消息

在某些场景下,我们需要保证消费消息的顺序性,可能要使用单线程处理任务。这个在消息数量较少时,还是一个可行的方案,但在大量的数据消息情况下,单线程就显得力不从心了,所以这时候需要引入多线程。
原创
发布博客 2024.06.20 ·
481 阅读 ·
4 点赞 ·
0 评论 ·
6 收藏

Spring Boot中的各种事件

spring boot 各种事件贯穿整个启动的生命周期,读懂了这些时间也差不多理解了springboot的启动流程。接口表示springboot程序准备开始启动,这是最早的事件触发方法,它将触发。的方法定义很讲究,方法从上到下的顺序也正好是各事件触发的顺序。定义了spring启动过程中各个事件被触发的顶层方法。接口的唯一具体实现类是。
原创
发布博客 2024.06.14 ·
751 阅读 ·
5 点赞 ·
4 评论 ·
3 收藏

WebMvcConfigurer配置不当导致鉴权失败

这样导致springboot中springmvc的自动配置全部失效,这方面所有的配置都得自己手动配置,而我们项目中的公用基础依赖的鉴权是又要依赖spring mvc的自动配置,线程上下文中无法注入session信息,导致接口调用时鉴权失败。公司是公用同一套基础依赖,所以我也为自己的项目配置了一个拦截器,我在启动项目后我请求了项目中的一个接口,session鉴权通过,没有出现他那种情况。这个注解,我一般都不加Enable注解,springboot中一般不需要。开头的注解,我推测应该是这个注解有问题。
原创
发布博客 2024.06.14 ·
716 阅读 ·
5 点赞 ·
1 评论 ·
4 收藏

Mysql常用的数据备份工具

mysqlbackup: mysql enterprise的商业备份工具,功能相对完善,适合生产环境,但是商业收费软件、互联网行业使用较少。mysqldump: mysql自带的简易数据库备份工具,只能全量备份,且是单线程备份,对于大数据量的备份不太合适。mysqlpump: mysql自带的简易数据库备份工具,也只能全量备份,但可以多线程并行备份。mysqlimport: mysql自带的结构化文本数据导入工具,和。xtrabackup: 开源的功能完备的数据库备份软件。
原创
发布博客 2024.06.07 ·
422 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

史上最易懂的mysql锁 、mvvc分析

现在有一个表stu,其中的age字段有索引,现在针对age字段做锁实验。stu表中目前有如下这些数据,间隙锁间隙锁和间隙锁之间是兼容的,即可以同时同一个区间加锁,不会有锁竞争。插入意向锁和插入意向锁(也是一种间隙锁)之间是兼容的,只要不是唯一索引(包括主键)冲突,可以直接插入,不会有锁竞争。间隙锁和插入意向锁之间有锁竞争,但只有在先有间隙锁再申请插入意向锁时才会不兼容,有锁竞争;反之在先有插入意向锁再申请间隙锁是不会有锁竞争的,是兼容的。
原创
发布博客 2024.06.07 ·
433 阅读 ·
16 点赞 ·
0 评论 ·
3 收藏

MySQL的PrepareStatement真的是预编译语句么?

通过使用 PreparedStatement,可以预编译 SQL 语句,并且在执行时可以重复使用这个预编译的语句,这样可以提高执行效率并且增强安全性(特别是防止 SQL 注入攻击)。:是否启用PrepareStatement缓存,默认值是false,相同sql就不再构建新的PrepareStatement对象。:PrepareStatement缓存的最大数量,默认值是25,超过这个数字就抛弃老的prepStmt。: 可以缓存的prepStmt对应sql的最大字符长度,默认值256,超过这个上线就不缓存。
原创
发布博客 2024.06.05 ·
542 阅读 ·
4 点赞 ·
0 评论 ·
8 收藏

深入浅出mysql海量数据批量更新插入、批量查询

这个参数后的抓包截图,jdbc客户端重写了sql语句,它把多个sql语句用分号分隔连接在一起,形成一个大sql脚本, 然后将这个sql脚本一次性发送到server端,最后接收到了大量的response响应。mysql提供了批量写入的方法,将大批量的sql脚本一批次发送到服务端,减少IO次数,然后统一一次执行sql。理论上,上面的sql是批量提交到mysql server统一执行的,但在默认情况下实际上它还是一条条执行命令,要真正的批量执行sql,需要在jdbc连接url加上。,重启项目再执行接口。
原创
发布博客 2024.06.05 ·
2269 阅读 ·
36 点赞 ·
1 评论 ·
27 收藏

深入浅出feign 、ribbion中的重试相关配置

feign、ribbion,这两个组件是spring cloud 远程调用最常用的两个组件。这两个组件分别有各自的重试机制和默认配置。
原创
发布博客 2024.06.03 ·
2178 阅读 ·
17 点赞 ·
0 评论 ·
24 收藏

深入理解mysql中的各种超时属性

连接超时: 登录超时: Socket网络超时,即读超时: sql执行超时:spring事务超时:innodb锁等待超时:mysql server网络回包写超时(针对大量数据查询的sql)
原创
发布博客 2024.06.03 ·
2464 阅读 ·
24 点赞 ·
0 评论 ·
34 收藏

深入理解feign远程调用的各种超时参数

2) 同时使用了feign和ribbion组件,(1)若没有任何人为配置超时时间,远程调用使用ribbion的默认超时时间,连接超时、读超时都是1秒钟;(2)若同时主动配置了feign 、ribbion的超时时间,则使用feign的超时时间;(3)若只主动配置了feign超时时间,则使用feign超时时间;(4)若只主动配置了ribbon超时时间,则使用ribbion超市时间。1)只使用feign组件,不使用ribbion组件,其默认的连接超时是10s,读超时是60s;
原创
发布博客 2024.06.02 ·
2912 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

记一次线上数据库连接超时异常问题

以我对这项目的了解度,我马上就想到了这段时间有一两个定时任务,这两个定时任务都是多线程任务,并且有量的查询和写入数据,但之前都是20分钟左右跑完数据,一般会在这此事故发生段之前就执行完。看下xxl-job的执行日志,确实是在我预先的时间就开始跑任务,但是服务应用的日志却又发现在事故发生时还有定时任务在处理中,并且也都失败了,还进行了事务回滚。所以增加连接池的数据数是个可行的方案。查看了下,数据库的最大总连接数、单用户最大连接数,结果如下图所示,八千多的连接上限,我想我的项目实时的连接数还不至于这么大。
原创
发布博客 2024.06.02 ·
562 阅读 ·
9 点赞 ·
0 评论 ·
5 收藏

解决wireshark无法抓取mysql数据报文

所以默认情况下,我的每个mysql connection都是加密的,wireshark肯定是没办法抓取数据包的。这三个参数是否被显式设值 如果这三个参数有被显式设值,就用这三个中的一个参数。而在我之前用的连接url中这四个参数显然都没被显式设值,所以最终的sslMode的值是。但用公司测试环境的数据库就能抓取到mysql数据报文,观察了下公司的数据库就只发现连接url上多了。这个参数,死马当活马医,我在本地数据库连接上也加了这参数,果然可以抓取mysql数据包文了。方法有对ssl加密参数相关的初始化逻辑。
原创
发布博客 2024.05.30 ·
666 阅读 ·
14 点赞 ·
1 评论 ·
1 收藏

我给线程池管理框架hippo4j找bug

中包含虚拟机参数,而虚拟机参数要放在jar包名之前才会生效,所以此时的虚拟机参数是不生效的。不同项目中有相同的线程池名词,这个应该是是常见现象,不知道为啥这里直接抛出异常报错。这三级的,实际上当你注册线程池时,不能和现有的任何。上面的tpId是线程池名字,上边的查询条件并没有加。参数,作者想打印gc日志并开启日志轮转,本人用。之后,而只有项目参数才放在jar包名之后。hippo4j的官方文档说,线程池管理是分。名字相同(即使是不同租户、不同项目)。方法就做了这种奇怪的判断逻辑。文件中,让我们去看看这个。
原创
发布博客 2024.05.30 ·
429 阅读 ·
3 点赞 ·
0 评论 ·
3 收藏

java微服在使用nacos注册中心时,ribbon负载均衡时给部分feign client使用静态serverList

我看很多贴子都是针对eureka环境下,做静态serverList配置,目前国内大部分都用Nacos,所以便研究了一下。listOfServers:表示你的微服务实例的’ ip地址+端口’的列表,多个实例用逗号分隔,NIWSServerListClassName:表示ServerList的类名,这个只能用。ConfigurationBasedServerList的核心方法就是derive。, 表示使用静态配置的服务列表,而不适用动态服务发现。micore-service-x: 表示你的微服务名。
原创
发布博客 2024.05.24 ·
358 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

mysql驱动版本变更导致查询数据结果一直是空

最近接手了一个已离职同事的java项目,这个项目中原来使用了自己的mysql驱动版本,并未使用公司公共依赖中的版本号。我想为了统一版本号,就将当前项目中pom文件中mysql的版本号verson给去除了。没怎么自测,就直接发到生产环境了,结果没多久就有测试人员告诉了说,有接口报错。其主逻辑sql如下后面发现不止这个接口查询结果为空,其他好几个接口的查询结果都未空。我用同样的sql语句在navicat中能查出结果,我开始怀疑我是不是连错数据库了,是不是连接到开发环境中的数据库。我使用。
原创
发布博客 2024.05.24 ·
994 阅读 ·
33 点赞 ·
0 评论 ·
29 收藏
加载更多