标志设计logo网站做农村电子商务的网站有哪些

张小明 2026/1/14 9:11:50
标志设计logo网站,做农村电子商务的网站有哪些,wordpress单页主题制作教程,合肥seo排名收费背景在高性能的服务架构设计中#xff0c;缓存是一个不可或缺的环节。在实际的项目中#xff0c;我们通常会将一些热点数据存储到Redis或Memcached 这类缓存中间件中#xff0c;只有当缓存的访问没有命中时再查询数据库。在提升访问速度的同时#xff0c;也能降低数据库的压…背景在高性能的服务架构设计中缓存是一个不可或缺的环节。在实际的项目中我们通常会将一些热点数据存储到Redis或Memcached 这类缓存中间件中只有当缓存的访问没有命中时再查询数据库。在提升访问速度的同时也能降低数据库的压力。随着不断的发展这一架构也产生了改进在一些场景下可能单纯使用Redis类的远程缓存已经不够了还需要进一步配合本地缓存使用例如Guava cache或Caffeine从而再次提升程序的响应速度与服务性能。于是就产生了使用本地缓存作为一级缓存再加上远程缓存作为二级缓存的两级缓存架构。在先不考虑并发等复杂问题的情况下两级缓存的访问流程可以用下面这张图来表示图片为什么要使用本地缓存本地缓存基于本地环境的内存访问速度非常快对于一些变更频率低、实时性要求低的数据可以放在本地缓存中提升访问速度使用本地缓存能够减少和Redis类的远程缓存间的数据交互减少网络I/O开销降低这一过程中在网络通信上的耗时设计一个本地内存需要有什么功能存储并可以读、写原子操作(线程安全)如ConcurrentHashMap可以设置缓存的最大限制超过最大限制有对应淘汰策略如LRU、LFU过期时间淘汰如定时、懒式、定期持久化统计监控本地缓存方案选型1. 使用ConcurrentHashMap实现本地缓存缓存的本质就是存储在内存中的KV数据结构对应的就是jdk中线程安全的ConcurrentHashMap但是要实现缓存还需要考虑淘汰、最大限制、缓存过期时间淘汰等等功能优点是实现简单不需要引入第三方包比较适合一些简单的业务场景。缺点是如果需要更多的特性需要定制化开发成本会比较高并且稳定性和可靠性也难以保障。对于比较复杂的场景建议使用比较稳定的开源工具。2. 基于Guava Cache实现本地缓存Guava是Google团队开源的一款 Java 核心增强库包含集合、并发原语、缓存、IO、反射等工具箱性能和稳定性上都有保障应用十分广泛。Guava Cache支持很多特性支持最大容量限制支持两种过期删除策略插入时间和访问时间支持简单的统计功能基于LRU算法实现使用代码如下dependency groupIdcom.google.guava/groupId artifactIdguava/artifactId version31.1-jre/version /dependency Slf4j public class GuavaCacheTest { public static void main(String[] args) throws ExecutionException { CacheString, String cache CacheBuilder.newBuilder() .initialCapacity(5) // 初始容量 .maximumSize(10) // 最大缓存数超出淘汰 .expireAfterWrite(60, TimeUnit.SECONDS) // 过期时间 .build(); String orderId String.valueOf(123456789); // 获取orderInfo如果key不存在callable中调用getInfo方法返回数据 String orderInfo cache.get(orderId, () - getInfo(orderId)); log.info(orderInfo {}, orderInfo); } private static String getInfo(String orderId) { String info ; // 先查询redis缓存 log.info(get data from redis); // 当redis缓存不存在查db log.info(get data from mysql); info String.format({orderId%s}, orderId); return info; } }3. CaffeineCaffeine是基于java8实现的新一代缓存工具缓存性能接近理论最优。可以看作是Guava Cache的增强版功能上两者类似不同的是Caffeine采用了一种结合LRU、LFU优点的算法W-TinyLFU在性能上有明显的优越性使用代码如下dependency groupIdcom.github.ben-manes.caffeine/groupId artifactIdcaffeine/artifactId version2.9.3/version /dependency Slf4j public class CaffeineTest { public static void main(String[] args) { CacheString, String cache Caffeine.newBuilder() .initialCapacity(5) // 超出时淘汰 .maximumSize(10) //设置写缓存后n秒钟过期 .expireAfterWrite(60, TimeUnit.SECONDS) //设置读写缓存后n秒钟过期,实际很少用到,类似于expireAfterWrite //.expireAfterAccess(17, TimeUnit.SECONDS) .build(); String orderId String.valueOf(123456789); String orderInfo cache.get(orderId, key - getInfo(key)); System.out.println(orderInfo); } private static String getInfo(String orderId) { String info ; // 先查询redis缓存 log.info(get data from redis); // 当redis缓存不存在查db log.info(get data from mysql); info String.format({orderId%s}, orderId); return info; } }4. EncacheEncache是一个纯Java的进程内缓存框架具有快速、精干等特点是Hibernate中默认的CacheProvider。同Caffeine和Guava Cache相比Encache的功能更加丰富扩展性更强支持多种缓存淘汰算法包括LRU、LFU和FIFO缓存支持堆内存储、堆外存储、磁盘存储支持持久化三种支持多种集群方案解决数据共享问题使用代码如下dependency groupIdorg.ehcache/groupId artifactIdehcache/artifactId version3.9.7/version /dependency Slf4j public class EhcacheTest { private static final String ORDER_CACHE orderCache; public static void main(String[] args) { CacheManager cacheManager CacheManagerBuilder.newCacheManagerBuilder() // 创建cache实例 .withCache(ORDER_CACHE, CacheConfigurationBuilder // 声明一个容量为20的堆内缓存 .newCacheConfigurationBuilder(String.class, String.class, ResourcePoolsBuilder.heap(20))) .build(true); // 获取cache实例 CacheString, String cache cacheManager.getCache(ORDER_CACHE, String.class, String.class); String orderId String.valueOf(123456789); String orderInfo cache.get(orderId); if (StrUtil.isBlank(orderInfo)) { orderInfo getInfo(orderId); cache.put(orderId, orderInfo); } log.info(orderInfo {}, orderInfo); } private static String getInfo(String orderId) { String info ; // 先查询redis缓存 log.info(get data from redis); // 当redis缓存不存在查db log.info(get data from mysql); info String.format({orderId%s}, orderId); return info; } }本地缓存问题及解决1. 缓存一致性两级缓存与数据库的数据要保持一致一旦数据发生了修改在修改数据库的同时本地缓存、远程缓存应该同步更新。解决方案1: MQ一般现在部署都是集群部署有多个不同节点的本地缓存; 可以使用MQ的广播模式当数据修改时向MQ发送消息节点监听并消费消息删除本地缓存达到最终一致性图片解决方案2Canal MQ如果你不想在你的业务代码发送MQ消息还可以适用近几年比较流行的方法订阅数据库变更日志再操作缓存。Canal 订阅Mysql的 Binlog日志当发生变化时向MQ发送消息进而也实现数据一致性。图片2. 如何提高本地缓存命中率参考如何提高缓存命中率3. 本地内存的技术选型问题从易用性角度Guava Cache、Caffeine和Encache都有十分成熟的接入方案使用简单。从功能性角度Guava Cache和Caffeine功能类似都是只支持堆内缓存Encache相比功能更为丰富从性能上进行比较Caffeine最优、GuavaCache次之Encache最差(下图是三者的性能对比结果图片对于本地缓存的方案中我比较推荐Caffeine性能上遥遥领先。虽然Encache功能更为丰富甚至提供了持久化和集群的功能但是这些功能完全可以依靠其他方式实现。真实的业务工程中建议使用Caffeine作为本地缓存另外使用redis或者memcache作为分布式缓存构造多级缓存体系保证性能和可靠性。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

电子商务网站安全措施社区建设网站

宝塔面板v7.7.0完整安装与配置终极指南 【免费下载链接】btpanel-v7.7.0 宝塔v7.7.0官方原版备份 项目地址: https://gitcode.com/GitHub_Trending/btp/btpanel-v7.7.0 宝塔面板是一款功能强大的服务器管理工具,宝塔面板v7.7.0版本作为官方原版备份&#xff…

张小明 2026/1/12 2:16:45 网站建设

中国建设银行钓鱼网站苏州高端网站建设设计公司哪家好

第一章:从零构建可信AI系统的核心挑战在人工智能技术快速演进的背景下,构建可信AI系统已成为企业与研究机构面临的关键命题。可信AI不仅要求模型具备高准确率,还需满足可解释性、公平性、鲁棒性与数据隐私保护等多维标准。然而,从…

张小明 2026/1/12 3:04:35 网站建设

网站搜索排名优化怎么做泉州哪家网站建设公司好

数据库工作负载管理:连接池、亲和性与资源管理实践 在数据库管理中,工作负载管理是确保系统高效、稳定运行的关键环节。本文将围绕数据库连接池配置、连接亲和性设置以及资源管理器的使用展开详细介绍。 快速连接故障转移示例 为实现快速连接故障转移,我们采用基于 JDBC …

张小明 2026/1/12 2:29:23 网站建设

用php做的大型网站怎么推广自己

仿射变换(Affine Transformation)是一种保持图像平行性和共线性的几何变换,核心是通过线性变换(缩放、旋转、剪切)与平移变换的组合,改变图像的位置、姿态和尺寸,但不改变图形的平行关系&#x…

张小明 2026/1/12 3:58:17 网站建设

做网站需要参考书目书青岛手机端建站模板

Excalidraw商标使用规范:品牌保护边界 在开源工具日益普及的今天,一个名字往往不只是代码的代号,更承载着用户信任、社区共识和长期积累的技术声誉。以手绘风格著称的虚拟白板工具 Excalidraw,自诞生以来便因其简洁直观的设计理念…

张小明 2026/1/12 4:24:28 网站建设

太原建高铁站产品设计公司

前言之前找工作的时候凭感觉做了一个实现 Promise A 规范的 Promise的练习,最近在准备新的工作机会,又看到了这个面试题。我感觉之前的实现有很大优化空间。之前用前次调用结果作为标记来实现 Promise 多次 resolve 和 reject 触发的正确逻辑&#xff0c…

张小明 2026/1/12 4:08:33 网站建设