- 博客(40)
- 资源 (15)
- 收藏
- 关注
原创 RocketMQ 的事务消息是如何实现的
事务消息用于确保跨服务的操作要么全部成功,要么全部失败,解决数据不一致问题。以电商平台为例,用户下单支付时,需同时完成扣减库存和通知物流系统发货两个操作。若不同步,可能导致库存扣减但物流未收到通知,或物流收到通知但库存未扣减。事务消息通过两阶段提交实现:第一阶段,生产者发送半消息到RocketMQ,Broker确认后生产者执行本地事务并记录结果;第二阶段,生产者根据本地事务结果通知Broker提交或回滚消息。若生产者宕机,Broker会主动回查未确认的消息,确保事务一致性。
2025-05-20 18:00:31
171
原创 RocketMQ 顺序消息实现原理详解
RocketMQ的顺序消息实现原理主要涉及生产者发送、Broker存储和消费者消费三个环节,分为全局有序和分区有序两种模式。全局有序要求所有消息严格按FIFO顺序处理,适用于低并发场景;分区有序则保证同一业务分组的消息顺序,不同分组可并行处理,是生产环境的主流方案。关键技术包括生产者的同步发送和队列选择器、Broker的顺序存储和锁机制、消费者的顺序监听器和重试策略。典型应用场景包括订单流程、库存扣减和事件溯源。注意事项包括性能权衡、异常处理和动态扩容。通过这些机制,RocketMQ在分布式环境下高效实现了
2025-05-20 17:21:31
480
原创 RocketMQ消息拉取模式详解
RocketMQ提供了两种消息拉取模式:Pull模式和Push模式。Pull模式由消费者主动向Broker请求消息,适合需要精确控制消费节奏的场景,但实现复杂且需自行管理消费位点。Push模式基于Pull模式封装,对用户表现为推送体验,使用简单且实时性好,但消费速率由RocketMQ控制。Pull模式的核心实现包括位点管理、队列遍历和状态处理,而Push模式则通过长轮询机制、负载均衡和流控参数来优化消费。最佳实践建议常规场景使用Push模式,特殊需求使用Pull模式,并注意性能调优和容错处理。
2025-05-20 17:03:59
388
原创 Spring Security认证授权深度解析
SecurityContextHolder:存储安全上下文信息Authentication:存储当前用户的认证信息UserDetails:用户信息的核心接口UserDetailsService:加载用户信息的核心接口AuthenticationProvider:认证的具体实现者
2025-04-02 17:15:06
382
原创 MySQL事务隔离级别:一个有趣的江湖故事
这位小侠虽然只认可已经确定的事情,但是优柔寡断,看来看去总是变要么果断一点,看到就决定要么霸道一点,直接锁定不让改实在不行,就升级成大侠,一次看定终身!这位大侠虽然保证了看到的东西不会变,但有时会遇到"鬼影"(新插入的数据)。要么用火眼金睛(加锁)要么一气呵成(快速处理)要么练绝世武功(升级隔离级别)
2025-01-22 18:04:42
484
原创 MySQL事务隔离:REPEATABLE READ 与幻读
1、REPEATABLE READ 的一致性视图主要保护的是快照读操作2、当涉及到当前读操作时,仍可能遇到幻读问题3、MySQL通过间隙锁部分解决幻读,但会影响并发性能4、在实际应用中,需要根据具体业务场景选择合适的处理方式。
2025-01-22 16:33:42
411
原创 Docker部署MySQL 5.7:持久化数据的实战技巧
在生产环境中使用Docker启动MySQL 5.7时,需要考虑数据持久化、配置文件管理、安全性等多个方面。以下是一个详细的步骤指南。
2025-01-17 15:59:54
802
原创 Docker 镜像加速的配置
解决拉取镜像报错:Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while
2025-01-17 11:52:36
536
原创 macOS 安装redis
安装Redis在macOS上通常通过Homebrew进行,Homebrew是macOS上一个流行的包管理器。Redis的配置文件通常位于/usr/local/etc/redis.conf,可以根据需要进行自定义配置。如果Redis正在运行,会返回 PONG。一 使用Homebrew安装Redis。
2024-06-29 17:05:47
506
原创 【Java实战】Mybatis plus根据数据库表自动生成代码
首先生成一个maven项目,不会生成的参考(写的过程中遇到过的问题:mybatis-plus 生成controller中的代码, RequestMapping除了双斜杠问题@RequestMapping("//article")。解决方法: pc.setModuleName(null) )
2023-10-18 15:50:03
991
原创 【Java实战】创建第一个Springboot项目Hello world
没有旗舰版的Idea授权,所以安装了社区版的idea。不知道从何时开始,社区版IDEA的插件不好用了,所以就换了个方法生成Springboot项目。
2023-10-17 19:58:23
502
原创 【Java实战】Mysql读写分离主从复制搭建保姆级教程
MySQL 的数据同步通常采用主从复制(Master-Slave)的方式。主从复制基于二进制日志(binlog)。主服务器(Master)在 binlog 中记录数据更改,从服务器(Slave)将这些日志读取并应用到自己的数据库,以此实现数据的同步。从服务器有两个线程:IO线程从主服务器读取 binlog 并保存在本地的中继日志(relay log);SQL线程读取中继日志,执行其中的事件,确保从服务器数据与主服务器保持一致。
2023-10-17 13:10:07
379
原创 MySQL常见数据类型、特点以及使用场景
INT:4字节,范围从-2,147,483,648到2,147,483,647(有符号),0到4,294,967,295(无符号)。VARCHAR:可变长度字符串,占用的字节数根据存储的数据长度而变化,最多65,535字节。SMALLINT:2字节,范围从-32,768到32,767(有符号),0到65,535(无符号)。用于中等大小的整数。TINYINT:1字节,范围从-128到127(有符号),0到255(无符号)。BIGINT:8字节,范围更大,适用于非常大的整数,如用户ID或订单号。
2023-09-27 00:05:17
607
1
原创 MySQL索引优化策略
通常,应在搜索条件(WHERE子句)、连接条件(JOIN 子句)以及需要排序的字段(ORDER BY子句)上创建索引。覆盖索引:当所有要检索的列都包含在索引中时,查询可以只利用索引来完成,而无需额外访问数据表。使用函数,如 UPPER(column),会使索引失效,因为它修改了列的原始值。注意复合索引的列顺序,尤其是当某些列只用于过滤,而其他列用于排序或连接时。试图设计查询和索引,使得查询可以只使用索引,避免访问实际的数据行。高选择性的列(即包含许多唯一值的列)是创建索引的好候选者。
2023-09-26 18:04:48
197
原创 MySQL索引失效场景,索引优化,索引原理
不必搜索整个数据库,通过使用索引,数据库系统可以直接找到存储在磁盘上的特定行的地址。索引失效指的是在进行数据库查询时,虽然存在合适的索引,但由于某种原因,查询并没有使用该索引,从而可能导致性能下降。与普通索引类似,但要求索引列的所有值都是唯一的(不包括NULL值,因为在MySQL中,多个NULL值是被视为相互不同的)。InnoDB存储引擎的表中,数据的物理存储顺序与主键的顺序相同,也即主键索引是聚簇索引。文章主要有以下内容:MySQL性能优化、索引优化、索引失效,索引原理、索引分类。使用R-Tree算法。
2023-09-25 21:19:31
207
原创 MySQL慢查询优化、日志收集定位排查、慢查询sql分析
MySQL慢查询日志收集、定位,慢查询分析、排查。如果返回值是'OFF',你需要开启它。默认情况下,超过10秒的查询会被记录为慢查询。默认情况下,只有不使用索引的查询才会被记录。等待一段时间后,可以查看`/path/to/your/logfile.log`来定位慢查询。你可以手动查看日志,或者使用工具如`mysqldumpslow`来帮助分析日志内容。在定位到具体的慢查询后,可以使用`EXPLAIN`语句来进一步分析查询执行计划,并基于此进行优化。慢查询日志可能会很大,所以定期轮转和清理是很有必要的。
2023-09-25 12:51:06
690
原创 100道JVM面试题大全最新版2023版
100道与JVM相关的面试题,包括JVM基本概念、内存管理、垃圾回收、性能调优、JVM内存模型、JVM是什么意思、JVM调优、JVM垃圾回收机制、JVM类加载机制、JVM原理。
2023-09-24 10:58:09
1955
2
原创 【Java面试】指令重排引发问题及解决方案
指令重排是指在程序执行过程中,为了优化性能,编译器或处理器可能会重新安排代码指令的执行顺序,但要求不改变程序的最终结果。在多线程环境中,指令重排可能会引发一些问题,因为线程之间的交互可能导致意外的结果。
2023-08-22 09:40:55
1346
1
原创 【Java面试】redis雪崩、穿透和击穿详解
1.Redis雪崩是指在某一时刻,缓存中大量的缓存数据同时失效或过期,导致大量的请求直接打到后端数据库,导致数据库负载剧增,引发性能问题甚至崩溃。这通常是因为缓存数据的过期时间设置过于集中,或者在同一时间段内大量缓存同时失效造成的。2.Redis穿透是指恶意或者异常请求查询一个不存在于缓存和数据库中的数据,导致每次请求都会直接访问数据库,增加了数据库负担。这可能是攻击者故意进行的,也可能是由于业务逻辑问题造成的。3.
2023-08-17 12:40:57
1624
4
原创 【Java面试】HashMap和HashTable的区别、HashMap底层实现原理和扩容机制
当链表长度达到一定阈值时,链表会被转换为红黑树,以减少查找、插入和删除操作的时间复杂度。因此,红黑树主要用于优化哈希碰撞导致的性能问题,对于较小的链表,仍然使用链表存储。红黑树相对于链表在查找、插入和删除操作上具有更好的性能,其时间复杂度为 O(log n),而链表的时间复杂度为 O(n)。的底层实现原理基于哈希表,使用数组存储键值对,通过哈希函数映射到数组索引。在解决哈希碰撞问题时的一种优化手段,可以提高大链表情况下的性能。它是一种自平衡的二叉搜索树,用于优化查找、插入和删除操作的性能。
2023-08-16 23:06:27
1073
1
原创 Stable Diffusion 常用主流checkpoint模型
Stable Diffusion 常用主流checkpoint模型,二次元模型、真实模型、国风模型、建筑模型
2023-07-03 08:04:31
3475
3
原创 Spring Boot 引入 easyexcel 最新版本 3.3.2,实现读写 Excel
Springboot引入easyexcel进行excel文件读写步骤:1、引入依赖。 2、easyexcel读取excel。3、easyexcel写入excel
2023-06-26 17:31:21
8294
3
原创 stable-diffusion-webui远程访问、插件在线安装
本篇文章可以解决以下问题:stable-diffusion-webui 安装插件报错、没有用户登录安全认证、云主机安装后无法远程访问。
2023-06-17 12:50:28
12895
6
原创 stable diffusion webui 安装部署(linux系统)
linux系统安装部署ai绘画软件 stable-diffusion-webui
2023-06-15 23:14:48
10202
5
原创 GPU云服务器Stable Diffusion搭建保姆级教程
搭建Stable Diffusion最大门槛就是GPU。许多人的电脑配置太低,根本无法搭建。或者即使搭建出来,但是跑图太慢。说多了不通过,看下图。
2023-05-27 05:06:54
3568
8
原创 数据库连接池druid参数详解
在使用Druid连接池时,当开启了缓存PreparedStatement功能时,每个连接都会缓存一定数量的PreparedStatement对象,以便在需要执行SQL语句时能够快速获取。需要注意的是,缓存PreparedStatement虽然可以提高SQL执行的效率,但同时也会占用一定的内存资源。在上面的配置中,druid.stat.mergeSql=true表示启用SQL合并功能,druid.stat.slowSqlMillis=5000表示将SQL执行的时间阈值设置为5000毫秒。
2023-03-10 00:28:50
15125
1
原创 用winsw将jar包做成window后台服务
把jar包做成windows后台服务,这样就可以开机自启动了。1、下载Winsw.exeWinsw.exe文件下载路径:https://github.com/winsw/winsw/releases2、编写配置文件sample.xml<service><id>sample</id><name>sample</name><description>This service ru...
2021-05-06 15:14:42
389
原创 用crontab添加定时任务
程序可能出现崩溃级的bug,但这种bug可能十天半月才出现一次。修改起来比较困难,验证也非常耗时。这时候为了保证程序持续稳定运行,就需要一个监控程序了。功能:监控进程 demo-admin.jar 是否存在,如果不存在就启动它。实现方式:使用crontab -e 添加定时任务, 每分钟都执行脚本文件 demo_startup.sh脚本:demo_startup.sh: 判断进程demo-admin.jar是否存在,不存在就执行 nohup java -jar demo-admin.jar &am
2021-05-06 15:12:57
6351
原创 短视频制作素材都在这了
文章原创首发:http://www.liangliangshijie.com/图片素材网站、视频素材网站、音效素材网站、在线图片编辑网站。一:高清图片素材网站1、Unsplash——https://unsplash.com/Unsplash是免费的无版权高清图片资源网站,根据关键词可以进行搜索,这里收录的风景图片作品都十分精美,无论是用来当图片素材还是电脑壁纸都绰绰有余。2.Pixabay——https://pixabay.comPixabay是全球顶级高清摄影网站,是一个充满活力的
2020-08-04 15:32:09
3084
1
原创 音视频处理神器FFmpeg
一 FFmpeg支持的平台下载官方链接:http://ffmpeg.org/download.htmlFFmpeg的使用门槛,就是部分机器可能存在一些依赖版本或涉及到一些库的单独安装,稍微麻烦了一点点而已,但是大部分搜索一下都是可以解决。二:FFmpeg常用功能举例1、提取视频 ffmpeg -i input.mp4 -vcodec copy -an out.mp4 2、提取声音ffmpeg -i input.mp4 -vn -y -acodec copy out.aacffmp
2020-08-04 15:29:30
281
原创 conda 常用的命令
用途:用于将当前环境的配置导出到一个YAML文件中,以便在其他地方进行复制或重建环境。向配置中添加一个新的通道,使Conda在包搜索和安装时优先考虑该通道。显示当前的Conda配置信息,包括通用配置、环境配置和用户配置。用途:用于创建一个新的Conda环境,可以指定环境的名称。用途:用于在Conda仓库中搜索指定的包。用途:用于激活指定名称的Conda环境。用途:用于停用当前激活的Conda环境。用途:用于在当前环境中安装指定的包。用途:用于从当前环境中卸载指定的包。用途:用于列出当前环境中已安装的包。
2020-08-04 15:26:43
138433
原创 Spring Boot 使用腾讯QQ邮箱发送邮件
Spring Boot 发送邮件比较简单,已经傻瓜化了,用两分钟看完,三分钟搞定,五分钟做出此功能足矣。如果五分钟还没做出来,那请检查一下自己的电脑是否有开发工具,电脑是否过于老旧,网络是否缓慢。首先获取一下授权码吧:腾讯QQ个人邮箱授权码的获取方式:在application-local.yml中配置文件中配置以下信息#在.yml文件中配置一下信息server: port: ...
2020-03-01 21:33:48
1310
Android Application Programming with OpenCV
2018-01-30
VC 直接调用PRCE 正则表达式(VS2010)
2014-06-05
Essential IDL
2009-11-20
WTL White Paper
2009-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人