自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 问答 (1)
  • 收藏
  • 关注

原创 【netty】Channel

channel 的主要作用• close() 可以用来关闭 channel• closeFuture() 用来处理 channel 的关闭sync 方法作用是同步等待 channel 关闭而 addListener 方法是异步等待 channel 关闭• pipeline() 方法添加处理器• write() 方法将数据写入• writeAndFlush() 方法将数据写入并刷出。

2026-02-12 19:26:12 232

原创 【netty】EventLoop

EventLoopGroup 是一组 EventLoop, Channel 一般会调用 EventLoopGroup 的 register 方法来绑定其中一个 EventLoop, 后续这个 Channel 上的 io 事件都由此 EventLoop 来处理(保证了 io 事件处理时的线程安全)niosocketchannel与nioseversocketchannel的区别是什么,一个client来建立链接了,服务器端这边建立的channel是什么channel。答案:是的,正好利用的是io多路复用。

2026-02-11 01:37:06 230

原创 【Netty】nettydemo

这样的方式,前面已经有bytebuf转string了,后面拿到的数据还是bytebuf吗,还是string。如果是多个编解码器,如果是一个协议消息过来了,怎么根据不同协议来区分该用哪个编解码器。ChannelInboundHandlerAdapter的顺序是什么。(是string上面已经转化好了)

2026-02-10 16:43:59 187

原创 【netty】netty的异步与异步IO的区别

netty的异步(最推荐4.1.0LTS长期支持版本)异步 IO 是操作系统提供的原生 IO 能力,属于。我们常讲的异步IO是指的AIO。1.nio的同步非阻塞。

2026-01-13 00:15:43 39

原创 【netty】Netty之TCP链接

在物联网 / 工控场景的主流设计中,一个设备(比如一台诱导屏、一个车位锁)的所有命令、心跳、ACK 确实共用同一个 TCP 长连接,这个连接默认会一直保持(长连接),直到设备主动关闭、网络中断,或服务端主动断开为止。对单个设备而言,“所有命令 / ACK 共用一个 TCP 长连接” 是物联网场景的标准最优实践,而非 Netty 强制要求,但几乎所有工业级设备(诱导屏、车位锁、充电桩等)都会这么设计,原因很简单:设计方案你问的 “直到设备关闭为止” 是逻辑层面的设计目标,实际落地中这个长连接会有这些特性:默认

2026-01-08 02:34:34 324

原创 1分钟内登陆超过3次则锁定用户应该怎么操作?

但这种方法存在一个明显漏洞:恶意用户可能利用窗口切换的间隙发起连续攻击。例如,首次失败后,在接近1分钟窗口结束时再次调用,此时固定窗口仅记录2次失败,不会触发锁定。等到当前窗口过期后,用户可在下一个窗口继续尝试,从而实现在两个连续窗口内累计超过限制次数却未被锁定。这就是固定窗口算法的缺陷所在。系统会根据首次失败时间来判断规定时间内的失败次数,进而执行后续业务逻辑。其实两者之间最大的区别就是,窗口的计算:固定窗口是按照失败的第一次的来计算时间、次数多。而滑动窗口是把每次失败当成窗口的尾部,往前推算。

2026-01-04 03:00:26 296

原创 【canal】canal同步msyql到redis

java层面 canal client配置pom文件。

2026-01-03 01:36:01 159

原创 mac配置es

官网选择对应java版本的es配置环境变量启动 ES停止 ES。

2026-01-02 18:22:02 266

原创 Homebrew 更新及镜像源设置

【代码】Homebrew 更新及镜像源设置。

2026-01-02 18:03:09 151

原创 mac上安装配置cannal

【代码】mac上安装配置cannal。

2026-01-01 01:59:11 249

原创 lock与synchronized区别

【代码】lock与synchronized区别。

2025-12-29 22:22:29 85

原创 HashMap

在移除时,移除前 检查,root根节点,root左子节点,root右子节点,root左子节点的左子节点,如果不存在,则退化成链表。为什么要用红黑树,为何不一上来就树化,树化的阈值为什么是8,何时会树化,何时会退化成链表?hashmap存放值的时候,经过2次hash计算,得到桶下标的位置,放入数组的下标位置。当数组的长度达到64,并且链表的长度为8的时候,这个元素的链表才会进行升级成红黑树。数组的容量为什么是2的N次幂?因为在获取的时候,直接放入,查找的时候,需要遍历数组,直到找到这个值才行。

2025-12-29 21:55:02 252

原创 ArrayList的扩容机制

有元素的时候,扩容大小为Math.max(原容量的1.5倍,集合大小)例如:10>>>1 =5,原来的10+5 =15(新数组的大小)传入一个collection集合,会用集合大小作为起始容量。在数组满的时候,会进行扩容扩容的大小为原数组大小的1.5倍。没有元素的时候,扩容大小Math.max(10,集合大小)在添加一个元素的时候,会立马创建一个大小为10的数组。new一个无参的list,内部就会创建一个空的数组。传入有参的list,会创建一个参数大小的数组。这里的1.5倍并不是乘数计算,而是。

2025-12-28 22:59:26 110

原创 【NIO】ByteBuffer粘包半包

创建bytebuffer进行存储切割后的片段。可以利用换行符进行切割。

2025-12-27 19:41:45 104

原创 【NIO】ByteBuffer

ByteBuffer的使用NIO读写两种模式下,指针位置的变化,clear(写),filp(读),compact(写)

2025-12-26 23:44:21 388

原创 【ollama】同一WiFi下Mac访问Windows Ollama失败?完整调试指南(从Connection refused到成功连通)

最近在搭建跨设备Ollama服务时,遇到了一个典型问题:Windows电脑运行Ollama,同一WiFi下的Mac电脑通过Spring项目调用时,频繁抛出错误。经过多轮排查,终于找到核心原因并解决。这篇文章就完整还原调试过程,总结跨设备访问Ollama的关键踩坑点与解决方案,希望能帮到有类似需求的朋友。

2025-12-26 02:19:03 1093

原创 mysql的隔离级别

读已提交(解决脏读)RC。在一个事务中 对某个查询多次读取到不同值,业务不知道怎么处理了。可重复读(解决不可重复读)RR。

2025-12-23 12:42:39 96

原创 如何去做库存的扣减

redis的zset做流水对账与mysql,mysql超出的部分进行。同时发送mq信息数据库扣减。redis做库存扣减。

2025-12-23 11:25:50 97

原创 分布式锁怎么优化

异步化操作(用户请求-》写入mq-〉立即返回处理中-》mq消费)将校验的逻辑放在锁外面、核心只锁住更新数据库操作。按照商品的id来加锁。

2025-12-21 19:54:55 123

原创 【SpringAI】springai

springai 用prompt对象,封装对话信息,调用call方法,而这个call方法,就是将prompt对象组成chatrequest对象(这个对象就对应着json格式数据),restClient.post方法就是一个http请求。本质上还是http请求,我们可以看到官网的api,可以用curl形式传json格式。temperature 温度 越低越严谨 越高越有感情。maxTokens 根据字数限制。deepseek深度思考。deepseek请求原理。创建自己的apikey。接入deepseek。

2025-12-18 18:23:59 274

原创 volatile

volatile的可见性并非 “跳过缓存直接读写总线 / 主存”,而是通过两个机制强制缓存同步:CPU 层面的硬件协议(Intel 架构为主),解决多核心缓存同步问题,核心逻辑:volatilevolatileJVM 层面为volatile变量的读写添加的 “屏障指令”,禁止 CPU 重排序并强制缓存同步:volatilevolatile以线程 A 修改volatile变量、线程 B 读取该变量为例:volatilevolatile。

2025-12-16 00:42:19 196

原创 【清分结算系统业务逻辑分析报告】

清分结算系统通过订单拆分、对账和商户结算三个核心流程,实现了从原始交易到最终资金流转的完整业务闭环。系统采用了先进的技术架构和设计理念,确保了交易数据的准确性、一致性和资金流转的安全性,为停车场和充电桩等业务提供了可靠的金融支持。

2025-12-14 18:04:38 628

原创 【MYSQL】mysql的各种log

【代码】【MYSQL】mysql的各种log。

2025-12-11 13:28:37 846

原创 @RefreshScope

1.Nacos配置中心在服务启动时通过bootstrap.yml首次拉取配置并缓存2.后续通过30秒超时的HTTP长轮询监听Nacos Server的配置变更,结合MD5校验和分片对比优化效率(通知订阅了的所有实例)3.最终通过@RefreshScope触发Bean重建,实现配置的动态生效。Nacos 配置变更 → 客户端长轮询感知 → @RefreshScope 重建线程池 Bean → 线程池参数更新 → 旧核心线程闲置超时销毁(需开启 allowCoreThreadTimeOut);

2025-12-10 23:58:46 261

原创 【MYSQL】sql如何进行优化?

sql调优一般紧急的情况下,1.mysqld_exporter+Prometheus能够查看2.通过show processList (对应了系统表INFORMATION_SCHEMA.PROCESSLIST表)查看有没有慢sql,或者可以通过mysql设置慢sql来记录,根据time字段的时间长短来确定sql。command是query还是lock wait。如果是lock wait那么对应的大致就是两种情况1.两个事务对两张表操作顺序不一致,由于修改的时候,行锁原因,从而导致死锁。

2025-12-09 10:55:42 275

原创 CODEX的安装及使用

这样就能正常使用了,如果命令返回403等错误信息,是魔搭社区的千问模型没有绑定阿里云账号,在平台绑定之后就能够正常使用了。命令行安装好之后 codex就可以运行,然后登陆自己的chatgpt账号。将以下配置配置到 .codex/config.toml文件中。chagpt的模型需要付费使用,可以绑定一些免费的模型使用。codex有多种使用方式,命令行、ide、云端。依次往下推力效果加强,但是响应会变慢。使用/model命令切换大模型。可以找一些国内的大模型社区。选择大模型,支持推理。

2025-12-05 16:04:43 754

原创 【支付】微信支付

微信公众号(服务号 / 订阅号,需认证)内的 H5 页面支付(如公众号商城、缴费、会员充值);企业微信内置 H5 页面调用(需关联微信支付商户号);不支持微信外的浏览器(如手机自带浏览器),此类场景需用 H5 支付。

2025-12-05 00:59:32 871

原创 Saas模式下多租户的设计

web过滤器 : TenantContextWebFilter- 从请求头 tenant-id 或 visit-tenant-id 中提取租户ID- 将租户ID设置到 TenantContextHolder 中- 请求处理完成后自动清理上下文这里的TenantContextWebFilter是继承OncePerRequestFilter那OncePerRequestFilter、HandlerInterceptor、Filter这几种过滤器有什么区别吗?为什么要用。

2025-12-03 18:14:22 909

原创 【Redis】怎么保证mysql与redis的双写一致性?

一般我们在用到redis缓存的时候,肯定是先写mysql,然后往redis里面再写一份。平常利用redis缓存做查询,可以减少对于mysql的压力。但是如果在并发情况下,因为redis的操作不受spring事务影响,导致mysql的写入,redis的写入没有原子性,不能够同时回滚。不行,在并发情况下。在查询的时候,先去redis找,找不到了去mysql查询,回写到redis。所以在写入mysql的时候,延迟500ms在删除redis。在写入的时候,写入mysql,删除redis缓存。

2025-11-27 12:59:38 220

原创 【Redis】redis分布式锁

看门狗仅在未指定锁过期时间时启动,核心作用是自动续期,防止锁提前释放。续期周期为锁过期时间的 1/3(默认 10 秒),通过定时任务 + Lua 脚本实现原子续期。核心实现依赖的和方法,以及 Netty 的定时任务框架保证高效调度。总结下:redission的看门狗是当前线程持有锁的时候,利用netty的时间轮开启一个定时任务10s一次,利用redis的lua脚本不停的查看锁是否锁当前线程持有。如果是则续期30s。不是则redssion会停止定时任务。

2025-11-21 20:34:18 1018

原创 延时消息如何能够保障准时的发送?

之前被问到一个场景,在各种业务场景下,例如发送短信消息,问如果能够做到的发送到用户的手上。我当时想直接放在mq里面不就行了吗?既然问了,那肯定不是这么简单。立马开启了头脑风暴,想着如果是不同延时长度的消息、延时的长短是否是过长的等一系列问题,不知道怎么展开来讲。于是,一时语塞,不知道该怎么回答。非常的尴尬...后来想想,大概率是我考虑的太多了,以为是需要什么高大上的回答。也是只是需要看看问题的解决思路。今天就详细探讨这个问题,以解心中之郁结。

2025-11-12 20:21:13 369

原创 【ShardingSphere】分库分表之Sharing-jdbc

本文探讨了数据库性能优化及分库分表解决方案。作者指出SQL优化存在极限,提出在考虑分库分表前应优先尝试SQL优化、配置优化、读写分离等方法。当单表数据超2000万行、高并发写入达瓶颈、业务隔离需求或硬件资源耗尽时,则需采用分库分表。重点介绍了水平分表方案:通过主表(按进场时间分表)和索引表(按出场时间分表)的双表结构设计,配合Sharding-JDBC实现高效查询。该方案包含详细的分表规则、字段设计、事务处理和查询流程,确保百万级数据查询耗时控制在100ms内。文章为大数据量场景下的数据库优化提供了实用解决

2025-11-04 10:19:59 696

原创 【RabbitMQ】RabbitMQ如何实现延迟消息?

RabbitMQ是如何实现延迟消息的呢?

2025-10-28 18:09:44 276

原创 【RabbitMQ】如何保障消息一定能发到MQ?

机制,原理是:生产者开启确认模式后,RabbitMQ 在收到消息并处理完成后(如路由到队列、持久化等),会向生产者返回。不匹配、队列未与交换机绑定等),RabbitMQ 会直接丢弃该消息,生产者无法感知这一过程,导致消息 “无声丢失”。消息从生产者-->交换机Exchange-->queue,如何能保证生产者到交换机一定是能够不丢失的?,从而进行补救(如重试发送、记录日志、存入死信队列等),避免消息因路由问题丢失。默认情况下,若消息发送到交换机后无法路由到任何队列(例如:路由键。RabbitMQ 提供。

2025-10-26 19:43:48 227

原创 【RabbitMQ】Rabbitmq如何保证消息不回丢失?

rabbitmq如何保证消息不会丢失?1.queue和交换机的持久化2.发送消息的持久化3.消费者确认机制。

2025-10-24 15:50:59 763

空空如也

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

TA关注的人

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