面试疑难点解析——Java数据库开发(五)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
全局流量管理 GTM,标准版 1个月
简介: 为什么需要有缓存?缓存的实现有哪些?关于缓存这9个问题,你需要了解~

7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!14位团队技术大牛在线招人,更有《阿里云技术面试红宝书》助你拿下Offer!戳下图或链接马上投递简历:
图片无法显
点击图片或戳我查看详情和投简历

1. 为什么需要有缓存?


在整个计算机系统设计过程之中,所有的程序执行最终都需要CPU完成,但是CPU不能直接进行硬盘数据的操作,所有的CPU可以处理的数据都要加载到内存之中。

2. 为什么电脑使用一段时间就慢了?


不论什么电脑,随着存储的内容越来越多,最终都会导致一个问题出现,那就是变慢。磁盘进行寻址时间会加长,随着磁盘碎片的增长,整个寻址过程又会变得异常缓慢。

3. 用户多的情况下


每一个用户一定要创建一个session,这样电脑上就一定要为这个session分配内存空间。如果用户多,那么这些线程就一定会慢慢让整个内存空间占满,而后虚拟内存空间也都会慢慢占满。后续的来访者就无法进行session的创建,也就无法进行连接了,这个时候是卡在了前台的内存上。
如果用户现在刚好可以正常访问,这个时候的问题又会出现在磁盘上了。

4. 现实中如果发现电脑变慢可以使用固态硬盘实现操作系统的安装


固态硬盘在整个寻址处理上要比原始的机械硬盘速度快许多,所以现在使用固态硬盘相当于减少内存与文件系统中的读取时间。
但是需要考虑一个问题,固态硬盘价格昂贵,而且固态硬盘的使用寿命不如机械硬盘。

5. 在设备简陋的情况下如何提速?


如果把一些常用的数据直接放在内存里面,不通过磁盘读取,这样就避免了磁盘上的性能障碍,就形成了缓存的基本概念,从此缓存开始出现。

6. 关于缓存的思考


哪些数据需要保存在缓存里?
大家的热点操作需要缓存,而且这个缓存应该是针对某一新闻操作;
不用的数据什么时候清理掉?
所有的缓存都是保存在内存里面的,而JVM的内存空间的清理是需要通过GC完成的,所以在java里考虑到这种情况,提供有四种引用范围;
还有两种常用算法:LRU、FIFO;
是否需要同步?
缓存中的数据是保存在内存之中,所以此时与磁盘的联系就断了,而所有的数据都要放在磁盘上,这个时候就可能出现缓存中的数据可能是旧数据,而磁盘会进行更新,这个时候如果进行同步,那么一定会造成额外的系统开销,所以缓存的数据都会采用只读的模式,不会进行更新处理。

7. 缓存的实现


缓存的形式基本有以下几种:
文件缓存:将一些数据保存在文件里面,需要的时候进行读取,这样就避免了文件内容的动态生成;
内存缓存:有些内容就直接保存在内存里面了,而对于内存缓存有两种常用的组件:
- OSCache:主要是用在web上,可以在JSP页面上缓存一些对象供用户使用;
- EhCache:广泛地应用在一些开发框架上,例如Hibernate、shiro;
缓存数据库上(NOSQL数据库):Memcached、Redis。

8. 需要有一个专门的缓存机器?


如果你使用了Nginx进行负载均衡,那么Nginx本身是具备缓存机制的;
在进行缓存的时候考虑到处理性能,此时往往会搭建一个缓存的数据库集群,例如:Redis集群。

9. 缓存数据的丢失问题


如果搭建了一个Redis集群,虽然有主从的开发结构,但是如果主服务器down掉了,那么应该使用从服务器,而这个过程中有可能造成数据的丢失。
很多时候往往不会直接采用主从结构,愿意使用Zookeeper进行协调一致的处理,因为Zookeeper切换很快,所以可以保证一台主机出问题之后,其它的主机可以立刻上来使用。

如果要进行分布式的缓存开发,强烈建议使用Redis数据库。
更多专业知识,面试技巧就在面试一点通,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

相关文章
|
4天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
48 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
11天前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
10天前
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
9天前
|
Java 数据库连接 Spring
反射-----浅解析(Java)
在java中,我们可以通过反射机制,知道任何一个类的成员变量(成员属性)和成员方法,也可以堆任何一个对象,调用这个对象的任何属性和方法,更进一步我们还可以修改部分信息和。
|
20天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
102 13
|
25天前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
57 10
|
18天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
55 2
|
28天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
87 2
|
10天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析

热门文章

最新文章

推荐镜像

更多