本地缓存、Redis数据缓存策略

在这里插入图片描述

目录

    • 需求看似简单,一取一传
      • 但是,又出现了一个新的问题,数据丢了。
    • 一、缓存
        • 缓存有哪些分类:
    • 二、分析一下本地缓存的优势
    • 三、本地缓存解决方案?
      • 1、基于Guava Cache实现本地缓存
      • 2、基于Caffeine实现本地缓存
      • 3、基于Encache实现本地缓存
    • 四、引入Redis
    • 五、Redis数据缓存策略
      • 1、为什么需要数据缓存策略
      • 2、Redis作为缓存的优势
        • (1)高性能特点
        • (2)多样性的缓存策略
    • 六、LRU算法:最近最少使用
      • 1、LRU算法原理解析
      • 2、redis中应用LRU算法
      • 3、LRU算法的优点与限制
        • 优点
        • 限制
    • 七、LFU算法:最不经常使用
      • 1、LFU算法原理解析
      • 2、在Redis中应用LFU算法
      • 3、LFU算法的优点与限制
        • 优点
        • 限制
    • 八、其他数据缓存策略
      • 1、Least Recently Used with Sampling(LRUS)
        • LRUS算法原理
      • 2、Random Replacement(随机替换)
        • 随机替换的原理
    • 九、性能优化与实际应用
      • 1、数据缓存策略的性能考量
        • (1)缓存大小与命中率的平衡
        • (2)数据访问模式的分析
      • 2、实际应用案例:电子商务网站
        • (1)电子商务网站的缓存策略选择
        • (2)性能优化与实际应用改进
    • 十、总结与实践指导
      • 1、Redis数据缓存策略的重要性
      • 2、如何选择合适的缓存策略

大家好,我是哪吒。

我第一次接触缓存的时候,是用map做的,当时做一个实时数据同步的功能。

需求看似简单,一取一传

  1. 当时是通过websocket获取服务端数据;
  2. 然后根据数据类别,将数据缓存到本地map中;
  3. 做了一个定时任务,通过ftp上传给第三方服务器;

当有并发时,map是不行的,数据会错乱,使用ConcurrentHashMap可以解决并发数据错乱问题。

  • 现场网络很不稳定,FTP时好时坏;
  • 做的是一个安全问题的实时监控系统,第三方数据要求还很严格,必须100%准确。

这矛盾怎么解决,无解了。

起初,是通过重启的方式解决的,哈哈,重启解决一切烦恼。

  1. 添加一个心跳功能,实时监控FTP服务的状态;
  2. 如果断了7秒以上,就采取报警功能,我记得设置的是火警的音乐,提示现场人员排查FTP网络;
  3. 如果断了1分钟以上,就将软件自动重启。

但是,又出现了一个新的问题,数据丢了。

因为用的是ConcurrentHashMap缓存数据,也就是本地缓存,你重启了,数据不就没了吗?兄弟。

到后来,才发现,当时做的真的是稀烂,本地缓存应该具有很多功能,当时这些,压根就没有。

  1. 超过最大限制有对应淘汰策略如LRU、LFU
  2. 过期时间淘汰如定时、懒式、定期
  3. 持久化
  4. 统计监控

下面从缓存、本地缓存、Redis缓存、Redis缓存策略几个维度,全方位、系统的学习一下缓存到底是个啥?

一、缓存

缓存就是把访问量较高的热点数据从传统的关系型数据库中加载到内存中,当用户再次访问热点数据时,是从内存中加载,减少了对数据库的访问量,解决了高并发场景下容易造成数据库宕机的问题。

缓存有哪些分类:

  1. 操作系统磁盘缓存,减少磁盘机械操作
  2. 数据库缓存,减少文件系统 I/O
  3. 应用程序缓存,减少对数据库的查询
  4. Web 服务器缓存,减少应用程序服务器请求
  5. 客户端浏览器缓存,减少对网站的访问

本地缓存:在客户端本地的物理内存中划出一部分空间,来缓存客户端回写到服务器的数据。当本地回写缓存达到缓存阈值时,将数据写入到服务器中。

二、分析一下本地缓存的优势

数据缓存带来了诸多优势,其中两个核心优点是:

  • 降低数据库压力:通过将常用的数据存储在快速访问的内存中,缓存有效地减轻了对后端数据库的压力。这意味着数据库可以更专注地处理复杂的查询和更新操作,而不必频繁地处理重复的读取请求。
  • 提高响应速度:将数据存储在缓存中,使得系统能够更迅速地响应用户的请求。相比每次都从数据库中获取数据,缓存可以在毫秒级别内提供所需信息,从而极大地改善用户体验。

三、本地缓存解决方案?

上面介绍了ConcurrentHashMap,这里不再赘述。

1、基于Guava Cache实现本地缓存

Guava是Google团队开源的一款 Java 核心增强库,包含集合、并发、缓存、IO、反射等工具箱性能和稳定性上都有保障应用十分广泛。

Guava Cache支持很多特性:

  1. 支持最大容量限制
  2. 支持两种过期删除策略插入时间和访问时间
  3. 支持简单的统计功能
  4. 基于LRU算法实现

2、基于Caffeine实现本地缓存

Caffeine是基于java8实现的新一代缓存工具,缓存性能接近理论最优,可以看作是Guava Cache的增强版,功能上两者类似。

不同的是Caffeine采用了一种结合LRU、LFU优点的算法W-TinyLFU在性能上有明显的优越性。

3、基于Encache实现本地缓存

Encache是一个纯Java的进程内缓存框架具有快速、精干等特点。

同Caffeine和Guava Cache相比,Encache的功能更加丰富扩展性更强。

优点:

  1. 支持多种缓存淘汰算法包括LRU、LFU和FIFO
  2. 缓存支持堆内存储、堆外存储、磁盘存储支持持久化三种
  3. 支持多种集群方案解决数据共享问题

四、引入Redis

后来,因为一次事故,甲方被监管平台罚了100万,本质原因就是丢数据问题。

这可如何是好,我也是吓了一身冷汗,连夜想整改方案,最终的解决方案是,“引入Redis”。

Redis作为一款高性能、内存存储的缓存数据库,被广泛应用于缓存数据的场景。

  1. 用户第一次访问数据时,缓存中没有数据,要从数据库中获取数据,因为是从磁盘中拿数据读取数据的过程比较慢。
  2. 拿到数据后,将数据存储在缓存中;
  3. 用户第二次访问数据时,可以从缓存中直接获取,因为缓存是直接操作内存的,访问数据速度比较快。

在这里插入图片描述

下面将深入探讨Redis的数据缓存策略,重点解析LRU(最近最少使用)、LFU(最不经常使用)等算法,并分享如何通过性能优化来提升缓存系统的效率。

五、Redis数据缓存策略

1、为什么需要数据缓存策略

在现代应用中,数据缓存发挥着至关重要的作用。

通过将频繁访问的数据存储在内存中,我们能够避免不必要的数据库查询,从而显著提升系统的响应速度和吞吐量。

然而,随着应用规模和用户访问量的不断增加,有效的数据缓存策略变得尤为重要。

我们需要在性能和资源利用之间找到最佳平衡,以应对不同需求和挑战。

这进一步引出了一个关键问题:如何选择适合的数据缓存策略来满足不同的应用场景?

下图详细地说明了数据缓存的优势和选择适合的数据缓存策略的过程:

在这里插入图片描述

通过上图,我们深入探讨了数据缓存的优势,并展示了在选择合适的缓存策略时,我们如何在提升性能和资源利用之间找到最佳平衡。

选择适合的策略能够有效地降低数据库压力,并通过提高响应速度来提供更出色的用户体验。

2、Redis作为缓存的优势

Redis(Remote Dictionary Server)是一款强大的高性能开源内存数据库,不仅被广泛应用于缓存场景,还可用作队列、发布订阅系统等。作为缓存数据库,Redis拥有一系列突出的优势:

(1)高性能特点

Redis的数据存储在内存中,因此具备出色的读写性能。其高效的数据结构和优化的算法使得绝大多数情况下,读写操作能够在微秒级别内完成,满足了高并发应用的需求。

(2)多样性的缓存策略

Redis提供了多种数据缓存策略,使开发者可以根据业务特点选择合适的策略。这种灵活性允许我们根据数据的访问模式、使用频率以及其他因素来决定数据何时被清理或保留。

下图说明缓存策略的选择过程:

在这里插入图片描述

通过分析数据访问模式,根据数据的访问频率选择合适的缓存策略。根据实际情况不断地监控数据的访问情况,并优化缓存策略,在不同的场景中灵活应用这些策略。

六、LRU算法:最近最少使用

LRU(Least Recently Used)算法是一种经典的缓存替换策略,它的核心思想是优先淘汰最近最少使用的数据,以便为新数据腾出空间。在数据缓存场景中,LRU算法能够保留热门数据,从而提高缓存的命中率。

1、LRU算法原理解析

LRU算法的原理非常直观:当缓存空间满了,系统会优先淘汰最久未被访问的数据。这个策略的背后思想是,如果某个数据在最近一段时间内没有被访问,那么它在未来也可能不会被访问。这种替换策略有助于保持缓存中的数据是热数据,即最近被频繁访问的数据。

在这里插入图片描述

上图说明了LRU算法如何根据访问顺序来保留缓存中的数据。最近访问的数据会被保留在缓存中,而最早访问的数据会被优先替换。

示例代码如下,展示了如何通过继承LinkedHashMap来实现LRU缓存:

import java.util.LinkedHashMap;
import java.util.Map;class LRUCache<K, V> extends LinkedHashMap<K, V> {private final int MAX_CAPACITY;public LRUCache(int capacity) {super(capacity, 0.75f, true);MAX_CAPACITY = capacity;}@Overrideprotected boolean removeEldestEntry(Map.Entry<K, V> eldest) {return size() > MAX_CAPACITY;}
}

在这个示例中,我们创建了一个LRUCache类,继承自LinkedHashMap。通过重写removeEldestEntry方法,我们指定了当缓存大小超过一定阈值时,自动删除最久未被访问的数据。

2、redis中应用LRU算法

在Redis中,我们可以通过配置maxmemory-policy选项来启用LRU算法的缓存策略。当Redis的内存使用达到限制时,LRU算法将被用于淘汰部分数据,以便腾出空间给新数据。

以下是如何在Redis中启用LRU缓存策略的示例:

# 启用LRU缓存策略
CONFIG SET maxmemory-policy allkeys-lru

3、LRU算法的优点与限制

在这里插入图片描述

LRU(Least Recently Used)算法是一种常用的数据缓存策略,它在管理缓存数据时有一些明显的优点和一些限制。

优点

优点描述
适用于热数据LRU算法保留了最近最常访问的数据,因此非常适用于具有明显访问热点的场景。
简单有效LRU算法的实现相对简单,不需要复杂的计算和维护。

限制

限制描述
周期性访问LRU算法可能会因为数据的周期性访问而导致不必要的数据替换,特别是在某些特殊业务场景中。
缓存污染LRU算法容易受到突发的大量访问影响,可能导致缓存中的“热·数据被淘汰,从而影响缓存效果。

七、LFU算法:最不经常使用

LFU(Least Frequently Used)算法是一种与LRU相似的缓存替换策略,它的核心思想是优先淘汰最不经常使用的数据,以便为新数据腾出空间。在某些特定场景下,LFU算法能够更好地适应数据访问模式的变化。

1、LFU算法原理解析

LFU算法的原理与LRU算法类似,但不同之处在于LFU算法基于数据被访问的频率来做出替换决策,而不仅仅是访问的时间顺序。LFU算法维护了一个数据访问频率的记录,当需要淘汰数据时,会优先选择访问频率最低的数据。

在这里插入图片描述

上图说明了LFU算法如何根据数据的访问频率来保留缓存中的数据。频繁访问的数据会被保留,而不经常访问的数据会被优先替换。

2、在Redis中应用LFU算法

在Redis中,您可以通过配置maxmemory-policy选项来启用LFU算法的缓存策略。当Redis的内存使用达到限制时,LFU算法将用于淘汰部分数据,以便为新数据腾出空间。

以下是如何在Redis中启用LFU缓存策略的示例:

# 启用LFU缓存策略
CONFIG SET maxmemory-policy allkeys-lfu

3、LFU算法的优点与限制

在这里插入图片描述

LFU(Least Frequently Used)算法是一种另类的数据缓存策略,它在不同的场景下具有一些明显的优点和一些限制。

优点

优点描述
适用于频繁刷新LFU算法能够优先保留频繁被刷新的数据,适合某些周期性访问的场景。
对数据热度变化敏感相比于LRU算法,LFU算法更能适应数据访问模式的变化,能够更好地反映数据的热度。

限制

限制描述
计算复杂性LFU算法需要维护数据的访问频率记录,这可能导致一定的计算复杂性,特别是在大规模数据场景下。
冷启动问题对于刚开始访问的数据,由于没有足够的访问频率信息,LFU算法可能难以做出合适的替换决策。

在这里插入图片描述

八、其他数据缓存策略

1、Least Recently Used with Sampling(LRUS)

除了传统的LRU算法,还存在一种改进的版本,即LRUS(Least Recently Used with Sampling)算法。LRUS算法通过周期性的采样来记录数据的访问情况,从而更好地估计最近使用的数据,减少了LRU算法中的“冷启动·问题。

LRUS算法原理

LRUS算法引入了采样机制,通过周期性地记录一部分数据的访问情况,从而更准确地判断哪些数据是热数据,哪些是冷数据。与传统的LRU算法不同,LRUS算法能够更好地适应数据访问模式的变化,提高数据缓存的命中率。

在这里插入图片描述

上图LRUS算法通过周期性采样记录数据的访问情况,从而更精确地判断哪些数据应该被保留,哪些应该被替换。

2、Random Replacement(随机替换)

随机替换是一种简单但有效的缓存策略。与LRU和LFU不同,随机替换策略不考虑数据的访问时间或频率,而是随机选择要替换的数据。尽管这听起来不太智能,但在某些场景下,随机替换策略表现出意外的优势。

随机替换的原理

随机替换的核心思想是,每次需要替换数据时,从缓存中随机选择一条数据进行替换。虽然这种策略没有考虑数据的热度或频率,但在一些特殊情况下,随机替换能够避免特定数据被频繁淘汰,从而维持一定的数据多样性。

在这里插入图片描述

上图中,随机替换算法随机选择要替换的数据,从而在一些情况下维持了数据多样性。

九、性能优化与实际应用

1、数据缓存策略的性能考量

在选择和配置数据缓存策略时,性能是一个关键因素。不同的缓存策略适用于不同的业务场景,因此在做出决策时需要综合考虑多个因素。

(1)缓存大小与命中率的平衡

在配置缓存大小时,需要权衡缓存的总大小和实际存储的数据量。一个过小的缓存可能导致命中率降低,无法有效减轻数据库负载,而一个过大的缓存可能浪费内存资源。通常可以通过监控命中率和缓存利用率来优化缓存大小。

(2)数据访问模式的分析

分析业务的数据访问模式对于选择合适的缓存策略至关重要。例如,如果某些数据被频繁地访问,而另一些数据则很少被访问,那么选择适当的策略可以提高缓存的效果。对于频繁访问的热数据,可以选择LRU或者LFU策略,而对于较少访问的冷数据,可以考虑随机替换策略。

2、实际应用案例:电子商务网站

让我们通过一个实际的应用案例,来展示如何根据业务需求选择合适的缓存策略。考虑一个电子商务网站,用户经常访问商品列表、商品详情以及购物车等页面。针对这个场景,可以选择不同的缓存策略来优化性能。

(1)电子商务网站的缓存策略选择

商品列表页:由于商品列表页中的商品信息经常变动,可以选择LRU或者随机替换策略。这样可以保留最近的商品数据,提高页面加载速度。

// 使用LRU算法实现商品列表页缓存
LRUCache<String, List<Product>> productListCache = new LRUCache<>(1000); // 缓存容量1000List<Product> cachedProductList = productListCache.get("productList");
if (cachedProductList == null) {// 从数据库获取商品列表数据List<Product> productList = database.getProductList();productListCache.put("productList", productList);cachedProductList = productList;
}

商品详情页:商品详情页的数据相对稳定,适合选择LFU策略。这样可以保留频繁访问的商品详情数据,提高页面响应速度。

// 使用LFU算法实现商品详情页缓存
LFUCache<String, ProductDetails> productDetailsCache = new LFUCache<>(500); // 缓存容量500ProductDetails cachedProductDetails = productDetailsCache.get("product123");
if (cachedProductDetails == null) {// 从数据库获取商品详情数据ProductDetails productDetails = database.getProductDetails("product123");productDetailsCache.put("product123", productDetails);cachedProductDetails = productDetails;
}

购物车页:购物车页的数据与用户关联紧密,可以选择LRU或者LRUS策略。这样可以保留最近被访问的购物车数据,提供更好的用户体验。

// 使用LRUS算法实现购物车页缓存
LRUSCache<String, ShoppingCart> shoppingCartCache = new LRUSCache<>(200); // 缓存容量200ShoppingCart cachedShoppingCart = shoppingCartCache.get("user123");
if (cachedShoppingCart == null) {// 从数据库获取购物车数据ShoppingCart shoppingCart = database.getShoppingCart("user123");shoppingCartCache.put("user123", shoppingCart);cachedShoppingCart = shoppingCart;
}

(2)性能优化与实际应用改进

在实际应用中,通过合理配置缓存策略以及优化缓存大小,电子商务网站可以显著提升页面加载速度和用户体验。同时,通过监控数据访问模式的变化,还可以动态调整缓存策略,进一步优化性能。

十、总结与实践指导

1、Redis数据缓存策略的重要性

数据缓存不仅可以提升系统性能,还能降低后端数据库的压力,从而实现更快的响应时间和更好的用户体验。在现代高并发应用中,优化数据缓存策略已经成为系统设计中不可或缺的一环。

2、如何选择合适的缓存策略

在实际应用中,选择合适的缓存策略是至关重要的。根据不同的业务场景和数据访问模式,我们可以灵活地选择LRU、LFU、LRUS、随机替换等缓存策略。同时,还可以根据实际需要动态地调整缓存大小,以达到最佳的性能与资源利用率的平衡。

实践指导

  1. 分析数据访问模式:在选择缓存策略之前,首先需要详细分析数据的访问模式。哪些数据被频繁访问?哪些数据变化较少?根据这些信息,选择适合的缓存策略。
  2. 选择合适的算法:根据业务需求,选择合适的缓存算法。LRU适用于保留最近访问的数据,LFU适用于保留最频繁访问的数据,而LRUS则更好地应对访问模式的变化。
  3. 监控与优化:缓存策略不是一成不变的,需要不断监控数据访问情况,优化缓存大小和策略。通过监控缓存的命中率和利用率,可以动态地做出调整。
  4. 灵活应用:不同的业务模块可能需要不同的缓存策略。根据实际情况,可以在系统中采用多种缓存策略,以最大程度地提升性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/66966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无涯教程-Flutter - Dart简介

Dart是一种开源通用编程语言&#xff0c;它最初是由Google开发的&#xff0c; Dart是一种具有C样式语法的面向对象的语言&#xff0c;它支持诸如接口&#xff0c;类之类的编程概念&#xff0c;与其他编程语言不同&#xff0c;Dart不支持数组&#xff0c; Dart集合可用于复制数据…

来和稚晖君做同事,校招内推、社招、实习

先上校招官网投递链接和内推码。 投递链接&#xff1a;http://www.agibot.com/ 我的内推码&#xff1a;MVKRCCW 智元机器人开始校招了&#xff0c;众多岗位如下&#xff1a; 公司正在不断发展壮大中&#xff0c;需要优秀的毕业生加入&#xff0c;一块来搞点有意思的事情。稚…

访问 GitHub 方法

访问 GitHub 方法 方法一&#xff1a;最常见的就是 fq&#xff0c;但这个是违法的行为&#xff0c;自己私下搞可以&#xff0c;不能教你们。 方法二&#xff1a;利用加速器&#xff0c;这是正规合法操作。这里推荐一个免费的加速器&#xff0c;下载安装 Watt Toolkit加速器,原名…

spark支持深度学习批量推理

背景 在数据量较大的业务场景中&#xff0c;spark在数据处理、传统机器学习训练、 深度学习相关业务&#xff0c;能取得较明显的效率提升。 本篇围绕spark大数据背景下的推理&#xff0c;介绍一些优雅的使用方式。 spark适用场景 大数据量自定义方法处理、类sql处理传统机器…

1+X智慧安防系统实施与运维技能等级证产教融合基地建设方案

一、系统概述 1X智慧安防系统实施与运维技能等级证产教融合体系统融合了产业需求、教育培训和技能认证&#xff0c;通过课程培训、实训基地和实习实训等方式培养学员的技能水平&#xff0c;并通过技能认证来评估其能力&#xff0c;以满足智慧安防行业对人才的需求&#xff0c;并…

迈向无限可能, ATEN宏正领跑设备切换行业革命!

随着互联网在各个领域的广泛应用,线上办公这一不受时间和地点制约、不受发展空间限制的办公模式开始广受追捧,预示着经济的发展正朝着新潮与活跃的方向不断跃进。当然,在互联网时代的背景下,多线程、多设备的线上办公模式也催生了许多问题:多设备间无法进行高速传输、切换;为保…

能直接运营的发接任务平台小程序搭建开发演示

有个项目估计做过互联网的小伙伴都听说过——发接任务平台。 基本每年都有发接任务平台关站&#xff0c;但又有新的平台出来&#xff0c;往复循环&#xff0c;无比热闹。这在互联网圈不常见&#xff0c;互联网项目很多都是风头过去了就结束了&#xff0c;但发接任务年年似乎都…

电商项目part10 高并发缓存实战

缓存的数据一致性 只要使用到缓存&#xff0c;无论是本地内存做缓存还是使用 redis 做缓存&#xff0c;那么就会存在数据同步的问题。 先读缓存数据&#xff0c;缓存数据有&#xff0c;则立即返回结果&#xff1b;如果没有数据&#xff0c;则从数据库读数据&#xff0c;并且把…

spring 错误百科

一、使用Spring出错根源 1、隐式规则的存在 你可能忽略了 Sping Boot 中 SpringBootApplication 是有一个默认的扫描包范围的。这就是一个隐私规则。如果你原本不知道&#xff0c;那么犯错概率还是很高的。类似的案例这里不再赘述。 2、默认配置不合理 3、追求奇技淫巧 4、…

iOS系统修复软件 Fix My iPhone for Mac

Fix My iPhone for Mac是一款iOS系统恢复工具。修复您的iPhone卡在Apple徽标&#xff0c;黑屏&#xff0c;冻结屏幕&#xff0c;iTunes更新/还原错误和超过20个iOS 12升级失败。这个macOS桌面应用程序提供快速&#xff0c;即时的解决方案来修复您的iOS系统问题&#xff0c;而不…

记录一下自己对linux分区挂载的理解

一直狠模糊&#xff0c;分两个区&#xff0c;一个挂载/, 一个挂载/home 两者是什么关系 实测 先看挂载的内容 然后umount /home后创建一个新文件 再挂载回去 发现旧分区又回来了&#xff0c;说明路径只是个抽象的概念&#xff0c;分区挂载&#xff0c;互相之间数据是不影响…

layui数据表格实现表格中嵌套表格,并且可以折叠展开

效果&#xff1a; 思路&#xff1a; 1、最外层的表格先渲染&#xff0c;在done回调中向每个tr后面插入一个用来嵌套子级表格的tr。 tr的class和table的id需要用索引 i 关联 //向每一行tr后面追加显示子table的trlet trEles $(".layui-table-view[lay-idlist] tbody tr&…

iOS练手项目知识点汇总

基础理解篇 Objective-C是一种面向对象的编程语言&#xff0c;它支持元编程。元编程是指编写程序来生成或操纵其他程序的技术。 Objective-C中&#xff0c;元编程可以使用Objective-C的动态特性来实现。例如可以使用Objective-C的运行时函数来动态地创建类、添加属性和方法等等…

【Flutter】使用Android Studio 创建第一个flutter应用。

前言 首先下载好 flutter sdk和 Android Studio。 FlutterSDK下载 Android Studio官网 配置 我的是 windows。 where.exe flutter dart查看flutter安装环境。 如果没有&#xff0c;自己在环境变量的path添加下flutter安装路径。 在将 Path 变量更新后&#xff0c;打开一个…

Java应用CPU占用过高故障排除

一、背景 最近测试反馈测试环境接口偶现有访问超时&#xff0c;然后APP提示是网络失败&#xff0c;看了一下测试环境的应用完全没啥问题&#xff0c;一直以为是网络问题。 今天测试有反馈了&#xff0c;赶紧看了一下测试服务器&#xff0c;这次终于有症状了&#xff0c;CPU直…

ARM编程模型-指令流水线

流水线技术通过多个功能部件并行工作来缩短程序执行时间&#xff0c;提高处理器核的效率和吞吐率&#xff0c;从而成为微处理器设计中最为重要的技术之一。 1. 3级流水线 到ARM7为止的ARM处理器使用简单的3级流水线&#xff0c;它包括下列流水线级。 &#xff08;1&#xff0…

第63步 深度学习图像识别:多分类建模误判病例分析(Tensorflow)

基于WIN10的64位系统演示 一、写在前面 上两期我们基于TensorFlow和Pytorch环境做了图像识别的多分类任务建模。这一期我们做误判病例分析&#xff0c;分两节介绍&#xff0c;分别基于TensorFlow和Pytorch环境的建模和分析。 本期以健康组、肺结核组、COVID-19组、细菌性&am…

Python安装与Pycharm配置

Python与Pycharm安装 用了一年的Python最近被一个问题难倒了&#xff0c;pip安装一直不能用&#xff0c;报错说被另一个程序使用。被逼到只能重新安装python了&#xff0c;正好记录一下这个过程&#xff0c;写这篇笔记。&#xff08;突然想到可能是配Arcgis的python接口&#…

金融风控数据分析-信用评分卡建模(附数据集下载地址)

本文引用自&#xff1a; 金融风控&#xff1a;信用评分卡建模流程 - 知乎 (zhihu.com) 在原文的基础上加上了一部分自己的理解&#xff0c;转载在CSDN上作为保留记录。 本文涉及到的数据集可直接从天池上面下载&#xff1a; Give Me Some Credit给我一些荣誉_数据集-阿里云…

2023年新风口,Kwai快手海外公会入驻详细指南!

Kwai快手海外公会发展前景作为中国短视频市场的领头羊&#xff0c;Kwai快手在海外市场也取得了一定的成绩。但是&#xff0c;海外市场的发展前景还存在一些不确定因素&#xff0c;需要快手进一步探索和努力。首先&#xff0c;海外市场对于内容的申请找cmxyci要求与国内市场有所…