java技术圈 为您找到相关结果 11

Mybatis的一级缓存,二级缓存过期时间分析_ToBeWhatYouWant

Mybatis的缓存级别 Mybatis提供了查询缓存来查询数据,使在项目开发中提高性能。 Mybatis的缓存分为一级缓存和二级缓存,一级缓存是SqlSession级别的缓存,二级缓存是mapper级别的缓存,二级缓存是多个SqlSession共享的。Mybatis通过缓存机制减轻数据压力,提高数据库的性能。 一.一级缓存没有过期时间,只有生命周期 (1).Mybatis在开启一个数据库会话时,会创建一个新的SqlSession对象。SqlSession对象的缓存是Mybatis的一级缓存,在操作数据库时需要创建SqlSession对象,在对象中有hashMap用于保存缓存数据(对象的id作为key,而对象作为 value保存的)。一级缓存的作用范围是SqlSession范围的,当一个Sq...阅读全文

博文 2021-04-03 07:07:08 CSDN博客

彻底弄懂HTTP缓存机制及原理 - 云中桥

前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。 但是对于很多前端同学来说,仅仅只是知道浏览器会对请求的静态文件进行缓存,但是为什么被缓存,缓存是怎样生效的,却并不是很清楚。 在此,我会尝试用简单明了的文字,像大家系统的介绍HTTP缓存机制,期望对各位正确的理解前端缓存有所帮助。 在介绍HTTP缓存之前,作为知识铺垫,先简单介绍一下HTTP报文 HTTP报文就是浏览器和服务器间通信时发送及响应的数据块。 浏览器向服务器请求数据,发送请求(request)报文;服务器向浏览器返回数据,返回响应(response)报文。 报文信息主要分为两部分 1.包含属性的首部...阅读全文

并发研究之CPU缓存一致性协议(MESI) - 枫飘雪落

CPU缓存一致性协议MESI CPU高速缓存(Cache Memory) CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU。这就造成了高性能能的内存和硬盘价格及其昂贵。然而CPU的高度运算需要高速的数据。为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题。 在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理。 时间局部性(Temporal Locality):如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。 比如循环、递归、方法的反复调用等。 空间局部性(Spatial Locality):如果一个存储器...阅读全文

博文 2020-02-20 15:12:53 博客园

CDN回源-简单介绍 - 红雨520

CDN回源 回源:回源是CDN领域的专用词,指的是CDN缓存服务器从源站获取所需要分发的资源。 CDN缓存服务器一般是不会主动回源的,只有在缓存服务器缺少用户请求的资源时(可能是该资源CDN缓存服务器没有缓存,也可能是缓存过期),CDN缓存服务器才会向源站发起请求,获取所需要分发的资源。 回源这个词目前不仅仅使用在CDN领域,阿里云的oss对象存储目前也提供回源,当你向oss对象存储请求资源时,如果获取不到该资源,会根据设置的回源规则去相对应的源站上获取资源,并保存在oss对象存储中...阅读全文

博文 2021-05-30 19:12:50 博客园

idea编译项目很慢

如果你正在使用 IntelliJ IDEA 编译 Java 项目,遇到编译速度缓慢的问题,以下是一些可能的原因和解决方法: 内存不足:检查你的电脑内存是否足够支持 IDEA 运行,并确保为 IDEA 分配了足够的内存。你可以编辑 IntelliJ IDEA 安装目录下的 bin 目录下的 idea64.exe.vmoptions 文件,将-Xms和-Xmx参数值增加一些。 插件过多:禁用不必要的插件,因为一些插件可能会导致 IDEA 编译速度变慢。 外部依赖库:检查你的项目是否引用了大量的外部依赖库,如果是,建议尝试减少依赖库的数量或者更换为较小的依赖库。 编译设置:检查你的编译设置是否正确。例如,你可以在“File” -> “Settings” -> “Build, Execution, ...阅读全文

Redis系列 | 缓存穿透、击穿、雪崩、预热、更新、降级 - 云+社区

Redis是高性能的分布式内存数据库,对于内存数据库经常会出现下面几种情况,也经常会出现在Redis面试题中:缓存穿透、缓存击穿、缓存雪崩、缓存预热、缓存更新、缓存降级。本篇分别介绍这些概念以及对应的解决方案。目录缓存穿透缓存击穿缓存雪崩缓存预热缓存更新缓存降级缓存穿透当查询Redis中没有的数据时,该查询会下沉到数据库层,同时数据库层也没有该数据,当这种情况大量出现或被恶意攻击时,接口的访问全部透过Redis访问数据库,而数据库中也没有这些数据,我们称这种现象为"缓存穿透"。缓存穿透会穿透Redis的保护,提升底层数据库的负载压力,同时这类穿透查询没有数据返回也造成了网络和计算资源的浪费。解决方案:在接口访问层对用户做校验,如接口传参、登陆状态、n秒内访问接口的次数;利用布隆过滤器,将数据...阅读全文

博文 2022-03-23 12:55:34 腾讯云

既然操作系统层已经提供了page cache的功能,为什么还要在应用层加缓存?

简单说,OS提供了一个通用的选择,没办法针对应用做个性化定制。kafka基本是顺序读写,这点是OS缓存可以很好的处理的情况;但是对于更多应用层系统来说,存在数据热点分布不均的情况,这些OS就不能很好的处理了。例如MySQL的innoDB缓存,如果采用OS的缓存策略,来一次全表扫描那么就可以让InnoDB辛辛苦苦热起来的数据冷了。但是InnoDB自己维护缓存情况下,就可以处理得很好,例如MySQL的InnoDB会对缓冲数据拆分为young以及old数据;会在整个缓存空间中腾出3/8的数据来用缓存这种多次访问的热点数据;这样全表扫描情况下,至少大多数热点数据还在内存中。甚至应用层可以在程序中直接指定热点数据,直接缓存起来;还有一个问题,OS缓存单位是页,不够应用层灵活。MySQL :: MySQ...阅读全文

博文 2023-05-15 10:50:34 知乎

[nginx]proxy_cache缓存系统 - 花酒锄作田

前言 proxy_cache是nginx内置的一个缓存系统,可实现减小后端负载的作用。 常用参数说明 参数 说明 proxy_cache_path 缓存文件路径。level表示目录层级,1:2表示两个子目录。keys_zone指定缓存区名称和大小。inactive表示缓存有效期。max_size表示硬盘中缓存的大小。use_temp_path为off时表示缓存文件直接写到cache中而不使用temp_path,避免文件拷贝导致影响性能。 proxy_cache 启用缓存并指定缓存区域 proxy_cache_valid 根据状态码来定义缓存的有效期 proxy_cache_min_uses 被访问多少次后才缓存,默认为1 proxy_cache_methods 指定可以被缓存的请求方法,默认...阅读全文

博文 2024-11-26 16:05:17 博客园

MyBatis缓存机制

--- ### **一、一级缓存的核心特性** 1. **作用范围** 一级缓存是 **SqlSession 级别**的缓存,仅在同一个数据库会话(SqlSession)内部有效。 • **示例**: ```java SqlSession session1 = sqlSessionFactory.openSession(); User user1 = session1.selectOne("getUserById", 1); // 首次查询,写入缓存 User user2 = session1.selectOne("getUserById", 1); // 命中缓存 ``` 此时 `user1` 和 `user2` 是同一个对象,说明缓存生效。 2. **生命周期** 缓存数据在以下情况会被...阅读全文

缓存淘汰算法W-TinyLFU

W-TinyLFU算法是一种**融合LFU与LRU双重特性的混合淘汰算法**,其本质是通过分层机制将短期突发流量与长期热点数据分离处理。 --- ### 一、缓存结构设定(以总容量100为例) 1. **窗口缓存(Window Cache)** • **容量**:总容量的1%(即1个槽位) • **淘汰策略**:LRU(应对突发流量) *示例*:新访问的数据A、B、C会先进入此区域,若已满则淘汰最早进入的数据。 2. **主缓存(Main Cache)** • **容量**:总容量的99%(99个槽位) • **细分结构**: ◦ **保护区(Protected,80%)**:长期高频数据 ◦ **考察区(Probation,20%)**:待晋升候选数据 • **淘汰策略**:SLRU(分段...阅读全文

博文 2025-03-27 01:14:54 dalang

MySQL与Direct I/O:绕过内核缓存的设计与性能优化

--- ### MySQL与Direct I/O:绕过内核缓存的设计与性能优化 --- #### 引言 在数据库系统中,I/O性能是影响整体效率的核心因素之一。MySQL(尤其是InnoDB存储引擎)通过**Direct I/O**(直接I/O)和**用户态缓存管理**的设计,在提升性能的同时确保数据一致性。本文将深入探讨这一机制的原理、实现及其背后的权衡。 --- ### 一、Direct I/O的基本原理 #### 1. 什么是Direct I/O? Direct I/O是一种文件访问模式,通过`O_DIRECT`标志(Linux)或`FILE_FLAG_NO_BUFFERING`(Windows)实现。其核心特点是**绕过内核的页缓存(Page Cache)**,直接将数据从用户空间写...阅读全文

博文 2025-03-28 00:20:24 dalang