- 使用的是iOS Anki
- 卡片上导入的
托福绿宝书 - 由Gemini帮忙整理
- 持续背单词中
Spring Boot Reactive Redisson && R2DBC 初体验
发表于
更新于
Spring Boot 整合 WebFlux、响应式 Redis (Redisson) 与 R2DBC MySQL 的实战体验与配置记录。
Java 安全随机数在阿里云ECS卡住
发表于
更新于
场景
业务有一个安全随机数方法,需要调用生成数据掉落区间进行结果判定。
最开始业务是在AWS的EC2部署, 后面业务需要迁移,选择了阿里云的ECS,系统是CentOS 8.5
遇到的问题
- 业务有一个逻辑需要生成安全随机数,但是迁移后业务会在安全随机数卡住没有后续,DEBUG级别日志也没有任何日志报错
- 数据、代码全部相同,本地IDEA运行,在开发机本机正常,数据库和缓存连接阿里云服务的外网地址,一切正常。
- 尝试使用Docker image, 现象相同。
- 查询部分说明是发行版系统在Kernel 4之后的版本关闭了安全随机数,需要重新编译内核才能开启,因此尝试将ECS退回到CentOS 7.9版本,仍未恢复。
Java JUC DelayQueue使用
发表于
更新于
macOS 环境 Rider 初始化 C# MAUI环境
发表于
更新于
前言
之前开发的是Java, 这次希望通过C#编写一些程式,但是两者结构不同, 在此记录
本机环境
Chip: Apple M3 Pro
System: macOS 15.0
安装基本环境
.NET
官方链接: https://dotnet.microsoft.com/zh-cn/download/dotnet
下载选择 macOS Arm64 即可
IDE Rider
官方链接: https://www.jetbrains.com/rider/
项目创建
- 创建空文件夹,使用Rider打开, New Solution / 开启Rider, 左侧选择MAUI项目
- 设置ProjectName 环境 net8.0 C# MAUI App
- 自动生成template文件
Java 自定义优先级线程
发表于
更新于
场景
我们的一个数据处理项目, 通过接入第三方平台的 WebSocket 进行数据处理。
最初,我们为单个平台构建了一个线程池,直接分配任务。随着项目发展,需要处理更多平台的数据,但硬件资源有限。为了隔离不同平台的业务,我们为每个平台的长链接都创建了一个独立的线程池。
遇到的问题
- 优先级处理困难
尽管多个线程池实现了业务隔离,但由于 CPU 调度的非确定性,无法保证高优先级任务的及时处理。 - 资源争夺
在同一节点上运行多个服务,且需要保证主数据源的优先处理,这要求我们对线程池进行优化。
解决方案
- 统一线程池,增强优先级处理
为了解决上述问题,我们将多个线程池合并为一个。同时,自定义了 PriorityTask 任务类,以便对任务进行优先级排序。 - 最小化业务侵入
在实现过程中,我们尽量避免对现有业务逻辑造成大的改动。
网络 && JDK虚拟线程 触发RabbitMQ - The channelMax limit is reached
发表于
更新于
Java 单例模式增强, 手动管理单例Bean
发表于
更新于
场景
- 多层WebSocket
使用Spring Boot框架,接入长连接WebSocket-Client,接入第三方平台pushtech,对其进行了封装,需要pom引入使用diffusion。 - 连接状态管理
正常情况下,使用@Bean保证WebSocket连接的单例,并定时检查连接状态,进行重连。
异常
- CLOSED_FAILED状态不可恢复
这是pushtech平台的限制,意味着一旦进入该状态,当前连接无法恢复。 - @Bean失效
Spring的@Bean注解保证了Bean的单例,但在CLOSED_FAILED状态后,Bean的状态可能已经不可恢复,导致后续无法正常工作。
处理
可能有其他更好的处理方式,但我还未找到,所以使用增强单例模式处理, 如果有更好的办法请指导下, 谢谢您
Java 自定义优先级线程池使用问题记录
发表于
更新于
Java 三元表达式空指针异常
发表于
更新于