当前位置: 首页 > news >正文

网站设计步骤及注意事项唐山开发网站的公司

网站设计步骤及注意事项,唐山开发网站的公司,网站开发 jz.woonl,山西省住房和城乡建设厅官方网站第1章#xff1a;引言 大家好#xff0c;我是小黑#xff0c;今天咱们聊聊Google Guava的缓存机制。缓存在现代编程中的作用非常大#xff0c;它能提高应用性能#xff0c;减少数据库压力#xff0c;简直就是性能优化的利器。而Guava提供的缓存功能#xff0c;不仅强大… 第1章引言 大家好我是小黑今天咱们聊聊Google Guava的缓存机制。缓存在现代编程中的作用非常大它能提高应用性能减少数据库压力简直就是性能优化的利器。而Guava提供的缓存功能不仅强大而且使用起来非常灵活。 在咱们深入挖掘之前先简单说说缓存。缓存其实就是一种保存数据的手段目的是在未来的数据请求中能快速地提供数据。想象一下如果每次处理相同的数据请求都要去数据库里翻一遍那效率岂不是很低缓存就是在这里发挥作用帮我们节省时间和资源。 第2章Guava缓存机制概述 现在咱们来聊聊Guava缓存的精髓所在。Guava的缓存机制是建立在这样一个思想上简单、快速、灵活。它不是要替代其他缓存方案比如Redis或Memcached而是提供一个轻量级的本地缓存方案特别适用于那些对缓存一致性要求不高但又希望减少对外部存储访问的场景。 Guava缓存与传统的Java缓存有什么不同呢首先它更加智能。例如Guava的缓存可以自动加载新值也可以根据需求自动刷新缓存减少了手动管理缓存的麻烦。此外Guava还提供了各种灵活的配置选项比如过期策略、最大容量限制等让你可以根据实际需要灵活地调整缓存行为。 那么这种缓存是怎么工作的呢基本上Guava的缓存机制围绕几个核心组件展开CacheBuilder、LoadingCache、Cache和CacheLoader。CacheBuilder是构建缓存的起点它提供了一系列链式方法来配置缓存。LoadingCache和Cache是两种缓存实现前者自动加载缓存后者需要手动加载。CacheLoader则是定义数据加载逻辑的地方。 来看个简单的代码示例了解如何创建和使用Guava缓存 import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache;public class GuavaCacheExample {public static void main(String[] args) {// 创建缓存LoadingCacheString, String cache CacheBuilder.newBuilder().maximumSize(100) // 最大缓存项数.build(new CacheLoaderString, String() {Overridepublic String load(String key) {return fetchDataFromDatabase(key); // 模拟从数据库加载数据}});// 使用缓存try {String value cache.get(key1); // 获取缓存若无则自动加载System.out.println(Value for key1: value);} catch (Exception e) {e.printStackTrace();}}private static String fetchDataFromDatabase(String key) {// 模拟数据库操作return Data for key;} }第3章Guava缓存的核心组件 Guava提供了几个非常实用的组件它们是CacheBuilder、LoadingCache、Cache和CacheLoader。这些组件共同工作让咱们的缓存管理变得既灵活又高效。 3.1 CacheBuilder 首先让咱们看看CacheBuilder。这个类真是太棒了它像个万能工具帮你构建出各种定制的缓存。想要限制缓存大小没问题。想要设置过期时间一样行。它就像乐高积木可以根据需求搭建出你想要的缓存结构。下面是个示例展示了如何使用CacheBuilder创建一个简单的缓存 LoadingCacheKey, Graph graphs CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(10, TimeUnit.MINUTES).removalListener(MY_LISTENER).build(new CacheLoaderKey, Graph() {public Graph load(Key key) throws AnyException {return createExpensiveGraph(key);}});在这段代码中小黑创建了一个最大容量为1000的缓存设置了10分钟的写入过期时间并且还添加了一个移除监听器。 3.2 LoadingCache和Cache 接下来是LoadingCache和Cache。这两个接口真是让人爱不释手。LoadingCache可以自动加载缓存当你尝试获取一个缓存项时如果它不存在Guava就会自动调用你定义的加载函数去获取数据。而Cache则更灵活它允许你手动控制何时加载数据。 String graph graphs.getUnchecked(key);这段代码演示了如何从LoadingCache中获取数据。如果key对应的数据不存在Guava会自动调用CacheLoader来加载数据。 3.3 CacheLoader 最后但同样重要的是CacheLoader。这个抽象类定义了数据加载的逻辑。你只需要实现load方法当缓存中没有对应的数据时Guava就会调用它来加载新数据。 public class MyCacheLoader extends CacheLoaderKey, Graph {Overridepublic Graph load(Key key) {return fetchData(key); // 你的数据加载逻辑} }在这个例子中小黑创建了一个CacheLoader子类实现了加载数据的逻辑。 通过这些组件的组合咱们可以灵活地创建出各种强大的缓存解决方案满足不同的业务需求。Guava的缓存机制不仅强大而且非常灵活和高效 第4章Guava缓存的实际应用 Guava的缓存不仅仅是理论上的高大上它在实战中更是大放异彩。让我们看看如何将这些理论知识转化为实际的代码解决真正的问题。 首先想象一下这样一个场景咱们需要从数据库中获取用户信息但是频繁的数据库查询会导致性能问题。这时Guava的缓存就能大显身手了。下面是一个使用Guava缓存来优化数据库查询的示例 // 创建一个简单的缓存用于存储用户信息 LoadingCacheString, User userCache CacheBuilder.newBuilder().maximumSize(100) // 设置最大缓存项数.expireAfterWrite(10, TimeUnit.MINUTES) // 设置写入后的过期时间.build(new CacheLoaderString, User() {Overridepublic User load(String userId) throws Exception {return getUserFromDatabase(userId); // 数据库查询逻辑}});// 使用缓存获取用户信息 public User getUser(String userId) {try {return userCache.get(userId); // 尝试从缓存获取缓存不存在时自动加载} catch (ExecutionException e) {throw new RuntimeException(Error fetching user from cache, e);} }private User getUserFromDatabase(String userId) {// 这里是从数据库获取用户的逻辑// 假设这是一个耗时的操作return new User(userId, name, email); }在这个例子里小黑创建了一个LoadingCache它在缓存中自动管理用户信息。当需要用户信息时首先尝试从缓存中获取如果缓存中没有则自动调用getUserFromDatabase方法去数据库中查询并加载数据。这样就大大减少了对数据库的访问次数提高了应用的性能。 再来说说缓存策略。Guava提供了很多灵活的缓存策略例如基于容量、定时过期和基于引用的回收等。这些策略可以帮助咱们灵活地管理缓存满足不同场景的需求。比如在一个内存敏感的应用中咱们可能会采用软引用或弱引用缓存这样当内存不足时缓存可以被垃圾回收器回收避免内存泄漏。 第5章Guava缓存的高级特性和技巧 Guava的缓存不仅基础强大而且提供了许多高级功能可以帮助咱们更精细地控制缓存行为。 5.1 过期策略 首先来聊聊过期策略。Guava提供了两种类型的过期策略基于时间的过期和基于访问的过期。基于时间的过期可以细分为写入过期和访问过期。写入过期意味着从最后一次写入开始计时一旦超过设定时间缓存项就会过期。而访问过期则是从最后一次读或写开始计时。 CacheString, String cache CacheBuilder.newBuilder().expireAfterWrite(10, TimeUnit.MINUTES) // 写入过期.expireAfterAccess(5, TimeUnit.MINUTES) // 访问过期.build();在这个代码中小黑设置了一个缓存项在写入10分钟后过期或者在最后一次访问5分钟后过期。 5.2 弱引用和软引用缓存 接下来是弱引用和软引用缓存。这两种缓存方式在处理大型对象和敏感内存环境时特别有用。软引用缓存项在内存不足时会被垃圾回收器回收而弱引用缓存项则在垃圾回收时总会被回收。 CacheString, BigObject softCache CacheBuilder.newBuilder().softValues().build();CacheString, BigObject weakCache CacheBuilder.newBuilder().weakValues().build();在这里小黑创建了两个缓存一个用软引用存储大对象另一个用弱引用。 5.3 显式清除和自动清除策略 Guava还支持显式清除和自动清除策略。显式清除是指手动移除缓存项而自动清除则是基于某些条件自动移除。 cache.invalidate(key); // 显式清除单个键 cache.invalidateAll(keys); // 显式清除多个键 cache.invalidateAll(); // 清除所有缓存项在这段代码中小黑演示了如何显式地从缓存中移除对象。 通过这些高级特性和技巧Guava的缓存不仅能处理一般的缓存需求还能解决更复杂和特定的场景真正实现了高效和灵活的缓存管理。 第6章性能优化和注意事项 6.1 性能优化 首先性能优化。Guava缓存的性能非常依赖于它的配置。比如合理设置缓存的大小和过期时间可以显著影响性能。如果缓存太大可能会占用过多内存如果设置得太小又会频繁地加载数据导致性能下降。 CacheString, Data cache CacheBuilder.newBuilder().maximumSize(1000) // 合理的最大大小.expireAfterAccess(10, TimeUnit.MINUTES) // 合适的过期时间.build();在这段代码中小黑设置了一个最大大小和过期时间这两个参数都是基于对应用程序的理解和实际需求设定的。 6.2 注意事项 接下来是一些注意事项。在使用Guava缓存时要特别注意缓存的一致性和更新策略。例如如果缓存的数据在数据库中被修改了缓存中的数据也需要相应更新。这就需要合理地设计缓存的刷新机制。 当使用基于引用的缓存如软引用或弱引用时需要了解Java的垃圾回收机制。这类缓存可能会受到垃圾回收的影响导致缓存项提前被清除。 Guava缓存在多线程环境中是线程安全的但在并发高的情况下可能会成为瓶颈。因此在高并发场景下合理调整并发级别是提高性能的关键。 第7章总结 通过这些章节咱们一起走过了Guava缓存的创建、配置、使用以及优化的全过程。咱们可以看到Guava不仅提供了强大的缓存功能还有各种灵活的配置选项能够满足多样化的应用场景。 无论是在哪个领域正确的工具能够大大提高工作效率。Guava缓存正是这样的工具它能帮助咱们优化Java应用的性能提高代码的可读性和可维护性。当然像任何强大的工具一样正确地使用Guava缓存至关重要。通过这些章节希望咱们都能更好地理解并运用它
http://www.lebaoying.cn/news/36908.html

相关文章:

  • 网站主机 流量视频拍摄脚本模板
  • 冠县网站建设费用wordpress 安装语言设置中文
  • 聊城网站开发公司建工网站
  • 什么行业最需要网站建设网站制作属于什么专业
  • 站长之家网站流量查询租域名和服务器要多少钱
  • 安卓手机如何做网站win10 wordpress安装
  • seo优化文章网站网站现在如何做推广
  • 绵阳的网站建设公司成品网站源码的优化技巧
  • 百度收录哪些网站吗天津建设执业资格注册中心网站
  • 做公司网站需要什么程序如何选择做网站
  • 做怎样的企业网站东莞市网站开发
  • 崇信县门户网站官网郑州企业网站托管公司
  • 规划网站总结网站推广策略与问题分析
  • wordpress 做影视站wordpress 博客搬家
  • 网站建设服务器的配置wordpress简历
  • 个人网站可以做淘宝客惠州市住房和城乡规划建设局官方网站
  • 江西网站制作公司哪些企业需要网络推广
  • 一个设计网站多少钱长沙app定制开发
  • 山东济宁网站建设西安网站建设软件
  • 有哪些网站建设工作注册一个公司的流程
  • 公司网页网站建设ppt模板下载义乌市建设局官方网站
  • 网站设计风格有哪些计算机网站开发图片
  • 我的世界查询建筑网站网站建设 今晟网络
  • 网站怎么做appWordPress tag 分类
  • 百度广告投放平台广州seo服务
  • 重庆网站建设公司是什么意思icp备案有效期几年
  • 比特币网站建设网站开发的技术路线
  • 那个网站做h5好有前景的网站建设
  • 安阳360网站推广工具专门做三国战纪的网站叫什么
  • 现在有哪些网站兼职可以做网站设计怎么保持风格一致