随笔分类 - java概念
摘要:1.纯内存操作 Redis将数据存储在内存中,读写操作完全基于内存,避免了磁盘I/O的延迟。内存的访问速度(纳秒级)比磁盘(毫秒级)快多个数量级,这是Redis高效的基础。 2.单线程操作 避免锁竞争与上下文切换 单线程无需处理多线程的锁竞争问题,减少了线程切换和同步的开销。 虽然无法利用多核CPU
阅读全文
摘要:首先是结论: Redis中的哨兵(Sentinel)和设计模式中的哨兵模式(Sentinel Pattern)虽然名称相似,但本质上是完全不同的概念,解决的问题和场景也截然不同。 哨兵: 功能: 监控:持续检查主节点和从节点的健康状态 自动故障转移:当主节点宕机时,Sentinel会自动选举一个从节
阅读全文
摘要:概念 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,允许你将多个对象连接成一条链,请求沿着这条链传递,直到有对象处理它为止。这种模式解耦了请求的发送者和接收者,使得多个对象都有机会处理请求。 应用场景 多级请求处理 审批系统(员工→经理→总监→CE
阅读全文
摘要:如:cloneable 问:为什么该接口无任务内容,那为什么在克隆的时候还是要实现这个接口 起到了标记作用,通过实现这个接口告知JVM,这个对象是可以克隆的 这类无任务内容的接口统称为:标记型接口
阅读全文
摘要:ArrayList: 基于动态数组实现,内存中是连续存储的。 支持快速随机访问(通过索引直接定位元素)。 默认初始容量为10,扩容时容量增长为原来的1.5倍(例如:10 → 15 → 22 → ...)。 LinkedList: 基于双向链表实现,元素分散在内存中,每个节点包含前驱和后继指针。 插入
阅读全文
摘要:peek方法是一个中间操作,它的主要用途是观察流中的元素,同时支持对流元素进行调试或执行无副作用的操作 1.调试和日志记录 用于调试时查看流程里过程中某个阶段的元素状态,而无需修改流的内容。 2.观察中间操作的结果 由于流是惰性求值的(lazy),只有终止操作(如 collect、forEach)被
阅读全文
摘要:概念 覆盖索引是一种数据库优化技术,指查询所需的字段全部包含在某个索引中,使得数据库引擎无需访问实际的数据行(即“回表”),仅通过索引即可完成查询。它通过减少磁盘I/O和提升数据检索效率来优化性能。 核心原理 索引结构:数据库索引通常采用B+树结构,叶子节点存储索引字段的值和指向数据行的指针(如主键
阅读全文
摘要:在Java中,两者都是用于处理可变字符串的类,它们的主要目的实在频繁修改字符串时提高性能(避免创建大量String对象) 1.共同点 可变性:两者都支持动态修改字符串内容(如追加、插入、删除)。 方法相似:两者的API几乎完全相同。常见方法如下: 1.append(String str):将指定字符
阅读全文
摘要:1.全文搜索 用于对文本字段进行分词后的模糊匹配,支持相关性评分 match查询:对文本进行分词后搜索,默认使用OR,支持AND、minimum_should_match等参数。 minimum_should_match解析: 是 Elasticsearch 中一个用于控制查询条件的参数,主要作用于
阅读全文
摘要:FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT/OFFSET FROM 作用:确定数据来源的表。 示例:FROM users 表示从 users 表读取数据。 WHERE 作用:过滤符合条件
阅读全文
摘要:RabbitMQ 作为一款成熟的消息队列(Message Queue)中间件,在项目中广泛应用于解耦、异步处理、流量削峰等场景。 懒惰队列 RabbitMQ 中的 懒惰队列(Lazy Queue) 是一种特殊类型的队列,它的设计目标是 优化内存使用 懒惰队列的核心作用: 减少内存占用 默认情况下,R
阅读全文
摘要:1.添加依赖 在项目的pom.xml 中添加Spring Cloud OpenFeign依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</a
阅读全文
摘要:1.缓存穿透 现象:大量请求查询数据库中不存在的数据(如恶意攻击),缓存未命中导致直接穿透到数据库。 原因:非法请求利用系统漏洞频繁访问不存在的数据。 解决方案: 布隆过滤器(Bloom Filter):在缓存层前增加布隆过滤器,预先存储所有合法 Key 的哈希值,快速拦截非法请求。 缓存空值(Nu
阅读全文
摘要:1.@RequestBody 作用: 将HTTP请求体(如JSO/XML)反序列化为Java对象 使用场景: 接收前端提交的复杂数据(如POST/PUT请求中的表单或JSON) 2.@PathVariable 使用流程 作用:从 URL 路径中提取动态参数(RESTful 风格)。 适用场景
阅读全文
摘要:1. 自动生成API文档 代码即文档:通过在Java代码中添加注解(如@ApiOperation、@ApiParam),Swagger能够自动生成结构化的API文档,减少手动编写和维护文档的工作量。 实时同步:每当代码变更时,文档会自动更新,确保文档与代码的一致性,避免过时信息。 2. 交互式测试界
阅读全文
摘要:1.RedisTemplate的介绍 RedisTemplate 是 Spring Data Redis 提供的核心工具类,用于简化 Redis 的交互操作。它封装了底层连接管理、数据序列化、异常处理等细节,支持多种数据结构的操作,并与 Spring 生态无缝集成. 2.操作不同数据结构时的用法 1
阅读全文
摘要:1.实现拦截器接口 创建一个类实现HandlerInterceptor接口(Spring MVC)或框架对应的拦截器接口,重写关键方法 如下: import org.springframework.web.servlet.HandlerInterceptor; import javax.servle
阅读全文
摘要:Seata的分布式模型中各个角色的作用: 1.TM(事务管理器) 是分布式事务的发起方,负责定义全局事务的边界(开始,提交,回滚),并于TC交互协调事务状态。 核心职责: 通过@GlobalTransctional注解标记全局事务的起点。 向TC注册全局事务 根据业务逻辑决定全局事务的提
阅读全文
摘要:是实现微服务的工具与框架 微服务的五大组件:(目前使用的) 1.注册中心/配置中心: Nacos 注册中心 作用:实现服务的自动注册与动态发现,解决服务实例动态变化时的通信问题。 服务注册:实例启动时向注册中心注册自身信息(IP、端口、服务名)。 服务发现:消费者通过注册中心查询可用服务实例,支持负
阅读全文
摘要:微服务保护方案 1:现有问题 (1) 接口缓慢 因为一个接口在并发时,正好执行时长又比较长,那么当前这个接口占用过多的Tomcat连接,导致其他接口无法即时获取到Tomcat连接来完成请求,导致接口拖慢,甚至失败 (2) 微服务雪崩 因为微服务之间相互调用,关系错综复杂,有可能因为一个服务不
阅读全文
浙公网安备 33010602011771号