- 博客(86)
- 收藏
- 关注
原创 为什么mysql要有主从复制,主库,从库这种东西
性能层面:读写分离,突破单库性能瓶颈;安全层面:实时数据冗余,降低数据丢失风险;可用层面:故障自动切换,避免业务中断;业务层面:隔离非核心业务,保障核心交易稳定。简单来说:单库是“一个人干所有活,累倒了就全完了”;主从是“分工协作,有人干核心活,有人干辅助活,一个人倒了还有替补”。
2025-10-05 22:07:02
545
原创 出现了oom情况怎么解决
定位类型→诊断原因→针对性优化。大部分OOM并非单纯因为内存不足,而是代码中的内存泄漏或不合理的资源使用导致,因此优先通过工具排查代码问题,而非盲目增大内存。长期需通过规范开发、监控告警和压力测试预防OOM。
2025-10-05 22:06:23
1011
原创 出现了oom情况怎么解决
定位类型→诊断原因→针对性优化。大部分OOM并非单纯因为内存不足,而是代码中的内存泄漏或不合理的资源使用导致,因此优先通过工具排查代码问题,而非盲目增大内存。长期需通过规范开发、监控告警和压力测试预防OOM。
2025-10-05 22:05:48
550
原创 出现了oom情况怎么解决
定位类型→诊断原因→针对性优化。大部分OOM并非单纯因为内存不足,而是代码中的内存泄漏或不合理的资源使用导致,因此优先通过工具排查代码问题,而非盲目增大内存。长期需通过规范开发、监控告警和压力测试预防OOM。
2025-09-25 17:01:17
640
原创 通义千问协议里面,上下文的角色有哪几种
通义千问的上下文角色通过技术规范间接约束在协议中,用户需严格遵循systemuserassistanttool的定义及顺序要求,同时确保内容合法合规。若违反角色使用规则,可能导致服务终止或法律风险。建议在开发前仔细阅读《通义千问大模型API服务协议》及最新技术文档。
2025-09-22 22:05:05
627
原创 session存储
默认单体应用:Session数据存放在服务器运行内存中。分布式应用:通常存放在缓存(如Redis)或数据库中,以实现多节点共享。选择哪种存储方式,主要取决于应用的部署架构(单体/分布式)、性能需求和数据持久性要求。
2025-09-16 17:39:56
430
原创 Spring Security简单理解
Spring Security 是 Spring 生态系统中用于身份验证(Authentication)和授权(Authorization)的安全框架,它提供了全面的安全解决方案,可轻松集成到 Spring 应用中,保护应用程序免受常见的安全威胁。身份验证(Authentication)验证用户是否为其声称的身份,支持多种认证方式:授权(Authorization)验证已认证用户是否有权限执行特定操作,支持:其他安全特性Spring Security 的核心组件通过一套灵活的机制协同工作,核心概念包括:
2025-09-16 14:51:04
712
原创 Java Stream 流式操作举例
集合流stream(),常用Map流:从开始聚合统计reduce文件流,边读边处理,避免内存爆炸无限流,适合模拟数据流并行流,多核加速大数据处理。
2025-09-04 15:38:45
1098
原创 Java 中的流式操作
集合类(List、Set、Queue)都可以流式操作。Map 需要通过 keySet/values/entrySet 生成流。Stream 分中间操作和终端操作中间操作可链式组合,不消耗结果(Lazy)。终端操作触发执行,返回结果或副作用。无限流和边读边处理可用于大数据场景(类似你大文件的流式解析)。如果要处理大文件或大集合,尽量使用流式处理 + limit / filter / map,避免一次性占用大量内存。
2025-09-04 15:37:59
323
原创 ing Data JPA 派生方法 & 数据操作速查表
操作推荐方法特点批量插入/更新内部逐条 SQL,非真正批量批量更新/ 原生 SQL高效,支持部分字段更新批量删除直接批量 delete,效率高。
2025-08-31 12:25:36
328
原创 Spring Data JPA 派生查询方法命名速查表
以后写 Repository 方法,就按这个表组合单词,Spring Data JPA 会自动帮你生成 SQL。→ 如果命名太长,最好用。注解写 JPQL/SQL。,属于最常见的命名规则。
2025-08-31 12:14:46
397
原创 WebSocket简单了解
WebSocket 是一种高效、低延迟的实时通信协议,适用于需要快速双向数据传输的应用。它通过减少连接开销、支持实时数据传输,使得客户端和服务器之间的交互更加高效。
2025-08-26 15:35:38
555
原创 Elasticsearch 8.10安装(windows11)
OK,经过三天的踩坑,以及碰见的n篇傻波的贴子,博主最终还是找到了一篇比较靠谱的贴子,根据这篇帖子完成了Elasticsearch 8.10安装 和 IK分词器 插件的安装。
2025-08-21 11:58:25
1329
原创 windows环境,安装kafka
在 Kafka 的 KRaft 模式下,集群 ID 是用来唯一标识 Kafka 集群的一个 UUID。使用 Kafka 提供的 kafka-storage.sh (Linux/Mac) 或 kafka-storage.bat (Windows) 脚本可以自动生成并格式化存储目录,同时也会生成一个集群 ID。解压 Kafka:将下载的 Kafka 压缩包解压到一个目录,比如 C:\kafka_2.xx.x。listeners: 定义监听地址,例如 PLAINTEXT://localhost:9092。
2025-08-19 12:51:28
535
原创 win11安装erlang和rabbitmq
提醒:安装erlang和rabbitmq版本需要对应。下载之前可以先查一下两个对应的版本。我安装的rabbitmq版本:rabbitmq-server-4.1.2.exe。我安装的erlang版本:otp_win64_28.0.2.exe。已经实践过了,整体流程是可以的。我的系统版本是:window11。
2025-07-23 22:25:48
477
1
原创 java中Class.forName()是什么,详细解释
是 Java 中一个非常重要的方法,它属于类。这个方法的主要用途是根据给定的类名(以字符串形式提供),动态加载该类到 JVM(Java虚拟机)中,并返回对应的Class对象。这在运行时需要动态加载类或使用反射机制的情况下特别有用。
2025-07-02 11:44:27
298
原创 HttpServletResponse源码解析
是的子接口,专门用于处理HTTP 协议的响应内容。在 Servlet 中,当服务器收到请求后,会创建一个对象封装请求信息,同时也会创建一个对象来构建响应内容。设置响应状态码添加响应头(Headers)写入响应体(Body)发送重定向添加 Cookie 等返回数据(JSON、HTML、文件等)控制浏览器行为(重定向、缓存、刷新)安全控制(设置 Headers、Cookie)
2025-06-17 09:49:50
1091
原创 System.arraycopy(Parser.short2Byte(ofData), 0, raw, OF_FREE, OF_DATA);学习
在Java中,方法用于将一个数组中的元素复制到另一个数组中。srcPosdestdestPoslength这里0代表的是源数组(即的结果)中的起始位置。这意味着从结果数组的第一个元素(索引为0的位置)开始复制数据。
2025-06-09 08:52:49
223
原创 数据源指的是哪里的数据,磁盘中还是内存中
问题回答数据源指的是哪里的数据?磁盘中的原始数据(DB 文件、日志文件等)缓存的作用是什么?提高访问速度,减少对磁盘的直接访问getForCache 方法做什么?从磁盘加载数据到内存releaseForCache 方法做什么?把内存中被修改的数据写回磁盘是否可以有多个层级的数据源?可以,比如缓存的缓存,但最终源头还是磁盘。
2025-06-08 19:44:13
815
原创 TM中,return new TransactionManagerImpl(raf, fc);为什么返回是new了一个新的实例
问题解答为什么要 new 一个新的实例?因为每个事务管理器需要拥有自己的资源和状态,互不干扰。为什么不能复用旧的实例?资源不可共享,状态不可共用,否则会导致数据混乱或并发问题。这种设计有什么好处?高内聚、低耦合、便于测试和维护,符合依赖注入思想。
2025-06-08 15:43:35
427
原创 JWT了解
是一种开放标准(RFC 7519),用于在网络应用环境间安全地将信息作为JSON对象传输。它通常被用来在客户端和服务器之间传递声明,例如用户的身份验证信息,使得服务端可以在不需要存储会话状态的情况下识别用户。
2025-05-22 16:16:43
592
1
原创 session、cookie或者jwt 解释一下
特性/技术SessionCookieJWT存储位置服务器端客户端客户端安全性高(敏感信息不暴露给客户端)中等(需注意保护)中等到高(取决于签名算法和使用方式)扩展性差(需要同步session)好(但不适合大量数据)非常好(无状态设计)大小限制无明显限制(受服务器资源影响)每个域名最大4KB无固定大小限制(建议不超过几KB)选择哪种方式取决于具体的需求,例如是否需要跨多个服务共享认证信息,是否关注性能和可扩展性,以及对安全性的要求等。
2025-05-22 10:55:22
677
原创 SseEmitter是什么
单向通信:SSE 支持从服务器到客户端的单向通信,即服务器可以主动向客户端发送数据,而不需要客户端发起请求。持久连接:一旦建立连接,该连接会保持打开状态,直到客户端或服务器决定关闭它。自动重连:如果连接意外断开,浏览器会自动尝试重新连接。文本数据:SSE 仅支持传输 UTF-8 编码的文本数据,不支持二进制数据。SseEmitterSseEmitter是 Spring 提供的一个用于实现 Server-Sent Events 的类,简化了从服务器向客户端推送实时更新的过程。
2025-05-21 17:23:45
1248
原创 如果有三个服务实例部署在三台不同的服务器上,这三个服务实例的本地缓存,是存储一模一样的数据?还是各自只存一部分?
问题回答三个服务实例的本地缓存是不是一模一样的?不一定,取决于请求的数据是否相同是不是每个节点只存一部分数据?不是刻意分片,而是“谁访问谁缓存”,所以看起来像“分散”了这种结构叫什么?非中心化缓存 / 分布式本地缓存。
2025-05-21 10:27:18
574
原创 本地缓存和分布式缓存的理解
虽然本地缓存确实分布在不同的服务器上,但由于它不具备集中管理和数据共享的特性,因此不能被称为分布式缓存。本地缓存适用于那些不需要全局一致性的场景,而对于需要强一致性的应用,则更适合使用分布式缓存解决方案。
2025-05-21 10:25:41
509
原创 CAP理论 ,了解一下什么是CAP理论
CAP理论是由计算机科学家Eric Brewer在2000年提出的一个关于分布式计算系统的重要概念,后来由Seth Gilbert和Nancy Lynch从理论上进行了证明。
2025-05-20 17:04:04
470
原创 ⼀个并发访问量⽐较⼤的key在某个时间过期,在redis中这个时间过期什么意思
在 Redis 中,当提到一个键(key)“在这个时间过期”,指的是为该键设置了生存时间(TTL, Time To Live)或过期时间(expiration time)。一旦到达设定的过期时间,Redis 会自动删除这个键。这对于管理缓存数据特别有用,因为它允许你设置数据的有效期限,在不需要手动干预的情况下自动清理旧数据。
2025-05-20 15:42:40
449
原创 部分复制时如果连接中断后,再次连接上时,主节点发现偏移量之后的数据缓冲区中没有怎么办
当主从节点之间的连接中断后再次恢复,如果从节点请求的部分复制(partial resynchronization)过程中,主节点发现从节点请求的偏移量之后的数据不在复制积压缓冲区中时,将无法进行部分复制。这意味着部分复制无法完成。随后,从节点将不得不进行一次完整的重新同步(full resynchronization)。参数调整),如果在连接中断期间数据变化量过大,超过了积压缓冲区的容量限制,旧的数据就会被覆盖或丢失。通过上述方法,可以在一定程度上减少不必要的完整重同步,提高系统的稳定性和效率。
2025-05-20 11:11:34
352
原创 token令牌
Token 在不同的上下文中有着不同的具体实现和用途,但核心思想都是为了提供一种安全的方式来确认身份、控制访问权限或是保护敏感数据。无论是在 web 应用中的用户会话管理、移动应用与后台服务器之间的通信,还是在金融服务中的支付处理,token 都扮演着至关重要的角色。正确使用 token 不仅能提高系统的安全性,还能改善用户体验,比如减少频繁输入密码的需求。
2025-05-19 17:24:29
429
原创 解释加密中的加盐操作
加盐是指在密码哈希之前,添加一个随机生成的字符串(盐),以增加哈希结果的独特性。目的是为了防止彩虹表攻击,并确保即使两个用户使用了相同的密码,它们的哈希结果也会不同。最佳实践是使用如BCrypt、Argon2等内置加盐机制的强哈希算法,而不是自己手动实现加盐和哈希逻辑。这些算法不仅自带加盐功能,还设计有工作因子(cost factor),可以根据硬件性能调整计算复杂度,进一步提高安全性。
2025-05-19 16:30:41
1008
原创 password,密码加密解释
在处理用户密码时,直接存储用户的原始密码是非常不安全的做法。因此,通常会使用加盐(Salt)和哈希(Hashing)的方式来增强安全性。你提到的方案——将用户上传的密码加盐之后计算MD5保存,是一种常见的做法,但需要注意的是,随着计算机性能的提升,单纯的MD5已经不再被认为是足够安全的,尤其是在没有加盐的情况下。
2025-05-19 16:29:49
501
原创 RedisTemplate
通过使用的各种方法,可以方便地对 Redis 中的不同数据类型进行操作。这些方法提供了面向对象的方式来执行 Redis 命令,使得代码更加简洁、易读和易于维护。根据你要操作的 Redis 数据类型选择合适的方法,即可轻松实现对 Redis 数据库的增删改查等操作。
2025-05-19 11:29:23
886
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅