Redis 缓存穿透 缓存雪崩 缓存击穿
今天看了面试资料 几乎都要问Redis 开始复习吧 ~
缓存穿透
缓存雪崩
缓存击穿
1.1 什么是缓存穿透?
业务系统要查询的数据根本就存在!当业务系统发起查询时,按照上述流程,首先会前往缓存中查询,由于缓存中不存在,然后再前往数据库中查询。由于该数据压根就不存在,因此数据库也返回空。这就是缓存穿透。
综上所述:业务系统访问压根就不存在的数据,就称为缓存穿透
1.2 缓存穿透的危害
如果存在海量请求查询压根就不存在的数据,那么这些海量请求都会落到数据库中,数据库压力剧增,可能会导致系统崩溃(你要知道,目前业务系统中最脆弱的就是IO
,稍微来点压力它就会崩溃,所以我们要想种种办法保护它)。
1.3 为什么会发生缓存穿透?
发生缓存穿透的原因有很多,一般为如下两种:
恶意攻击
,故意营造大量不存在的数据请求我们的服务,由于缓存中并不存在这些数据,因此海量请求均落在数据库中,从而可能会导致数据库崩溃。
代码逻辑错误
。这是程序员的锅,没啥好讲的,开发中一定要避免!
1.4 缓存穿透的解决方案
下面来介绍两种防止缓存穿透的手段。
1.4.1 缓存空数据
之所以发生缓存穿透,是因为缓存中没有存储这些空数据的key,导致这些请求全都打到数据库上。
那么,我们可以稍微修改一下业务系统的代码,将数据库查询结果为空的key也存储在缓存中。当后续又出现该key的查询请求时,缓存直接返回null,而无需查询数据库。
缓存空对象会有两个问题:
第一,空值做了缓存,意味着缓存层中存了更多的键,需要更多的内存空间 ( 如果是攻击,问题更严重 ),比较有效的方法是针对这类数据设置一个较短的过期时间
,让其自动剔除。
第二,缓存层和存储层的数据会有一段时间窗口的不一致,可能会对业务有一定影响。例如过期时间设置为 5 分钟,如果此时存储层添加了这个数据,那此段时间就会出现缓存层和存储层数据的不一致,此时可以利用消息系统或者其他方式清除掉缓存层中的空对象。
1.4.2 BloomFilter
第二种避免缓存穿透的方式即为使用BloomFilter。
它需要在缓存之前再加一道屏障,里面存储目前数据库中存在的所有key,如下图所示:
当业务系统有查询请求的时候,首先去BloomFilter中查询该key是否存在。若不存在,则说明数据库中也不存在该数据,因此缓存都不要查了,直接返回null。若存在,则继续执行后续的流程,先前往缓存中查询,缓存中没有的话再前往数据库中的查询。
这种方法适用于数据命中不高,数据相对固定实时性低(通常是数据集较大)的应用场景,代码维护较为复杂,但是缓存空间占用少。
1.4.3 两种方案的比较
这两种方案都能解决缓存穿透的问题,但使用场景却各不相同。
对于一些恶意攻击,查询的key往往各不相同,而且数据贼多。此时,第一种方案就显得提襟见肘了。因为它需要存储所有空数据的key,而这些恶意攻击的key往往各不相同,而且同一个key往往只请求一次。因此即使缓存了这些空数据的key,由于不再使用第二次,因此也起不了保护数据库的作用。
因此,对于空数据的key各不相同、key重复请求概率低
的场景而言,应该选择第二种方案。而对于空数据的key数量有限、key重复请求概率较高
的场景而言,应该选择第一种方案。
2. 缓存雪崩
2.1 什么是缓存雪崩?
通过上文可知,缓存其实扮演了一个保护数据库的角色。它帮数据库抵挡大量的查询请求,从而避免脆弱的数据库受到伤害。
如果缓存因某种原因发生了宕机,那么原本被缓存抵挡的海量查询请求就会像疯狗一样涌向数据库。此时数据库如果抵挡不了这巨大的压力,它就会崩溃。
这就是缓存雪崩。
2.2 如何避免缓存雪崩?
2.2.1 使用缓存集群
,保证缓存高可用
和飞机都有多个引擎一样,如果缓存层设计成高可用的,即使个别节点、个别机器、甚至是机房宕掉,依然可以提供服务,例如前面介绍过的 Redis Sentinel
和 Redis Cluster
都实现了高可用。
2.2.1 使用Hystrix
Hystrix是一款开源的“防雪崩工具”,它通过 熔断、降级、限流三个手段来降低雪崩发生后的损失。
Hystrix就是一个Java类库,它采用命令模式,每一项服务处理请求都有各自的处理器
。所有的请求都要经过各自的处理器。处理器会记录当前服务的请求失败率
。一旦发现当前服务的请求失败率达到预设的值,Hystrix将会拒绝随后该服务的所有请求,直接返回一个预设的结果
。这就是所谓的“熔断”。当经过一段时间后,Hystrix会放行该服务的一部分请求,再次统计它的请求失败率
。如果此时请求失败率符合预设值,则完全打开限流开关;如果请求失败率仍然很高,那么继续拒绝该服务的所有请求。这就是所谓的“限流”
。而Hystrix向那些被拒绝的请求直接返回一个预设结果,被称为“降级”
。
2.2.2 常用和推荐使用的方式: 定义统一fallback接口
pom.xml依赖
<!--Hystrix断路器-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
application.properties配置文件
#指定运行端口
server.port=8200
#服务名称
spring.application.name=order
#获取注册实例列表
eureka.client.fetch-registry=true
#注册到Eureka的注册中心
eureka.client.register-with-eureka=true
#配置注册中心地址
#eureka.client.zhang.service-url.defaultZone=http://localhost:8001/eureka/
eureka.client.service-url.defaultZone=http://localhost:8000/eureka/#feign客户端建立连接超时时间
feign.client.config.default.connect-timeout=10000
#feign客户端建立连接后读取资源超时时间
feign.client.config.default.read-timeout=10000#开启Hystrix断路器
feign.hystrix.enabled=true
#配置Hystrix 超时时间 超时关闭
#hystrix.command.default.execution.timeout.enabled=false
#超时时间(默认1000ms)在调用方配置,被该调用方的所有方法的超时时间都是该值,优先级低于下边的指定配置
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=3000
#在调用方配置,被该调用方的指定方法(HystrixCommandKey方法名)的超时时间是该值
hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds=4000
#线程池核心线程数 默认为10
hystrix.threadpool.default.coreSize=10
#最大排队长度。默认-1 如果要从-1换成其他值则需重启,即该值不能动态调整,若要动态调整,需要使用到下边这个配置
hystrix.threadpool.default.maxQueueSize=100
#排队线程数量阈值,默认为5,达到时拒绝,如果配置了该选项,队列的大小是该队列
hystrix.threadpool.default.queueSizeRejectionThreshold=5
# 简言之,10s内请求失败数量达到20个,断路器开。 当在配置时间窗口内达到此数量的失败后,进行短路。默认20个
hystrix.command.default.circuitBreaker.requestVolumeThreshold=20
#短路多久以后开始尝试是否恢复,默认5s
hystrix.command.default.circuitBreaker.sleepWindowInMilliseconds=5
#出错百分比阈值,当达到此阈值后,开始短路。默认50%
hystrix.command.default.circuitBreaker.errorThresholdPercentage=50%
#调用线程允许请求HystrixCommand.GetFallback()的最大数量,默认10。超出时将会有异常抛出,注意:该项配置对于THREAD隔离模式也起作用
hystrix.command.default.fallback.isolation.semaphore.maxConcurrentRequests=50000
定义Feign调用接口,和新建统一fallback处理类并实现Feign调用接口
@FeignClient(value = "member",fallback = MemberServiceFallback.class)
public interface MemberServiceFeign extends IMemberService {//此处为方便调用member服务的接口,采用直接继承member服务接口 不易写错且减少代码量//@FeignClient(value = "member",fallback = MemberServiceFallback.class)//value值为被调用服务名 fallback 值为 统一定义的fallback 类}
@Component
public class MemberServiceFallback implements MemberServiceFeign {@Overridepublic UserEntity getMember(String name) {return null;}//服务降级友好提示@Overridepublic ResultVO getUserinfo() {return new ResultVO(StatusCode.RESULT_SUCCESS,"服务器忙!请稍后重试!!!");}
}
启动类
@SpringBootApplication
@EnableEurekaClient //开启eureka客户端
@EnableFeignClients //开启feign调用
@EnableHystrix //开启hystrix
public class AppOrder {public static void main(String[] args) {SpringApplication.run(AppOrder.class, args);}
}
Feign调用服务降级测试接口(被调用member服务接口实现,睡眠5秒,配置超时3秒,故会超时)
@RestController
public class OrderServcieImpl implements IOrderService {@Autowiredprivate MemberServiceFeign memberServiceFeign;//hystrix第二种写法,使用类方式@RequestMapping("/orderToMemberUserInfoHystrixDemo02")public ResultVO orderToMemberUserInfoHystrixDemo02() {System.out.println("orderToMemberUserInfoHystrixDemo02: 线程池名称:"+Thread.currentThread().getName());return memberServiceFeign.getUserinfo();}
}
@Override
@RequestMapping("/getUserinfo")
public ResultVO getUserinfo() {try {Thread.sleep(5000);}catch (Exception e){e.printStackTrace();}return new ResultVO(StatusCode.RESULT_SUCCESS,"订单服务接口调用会员服务接口成功...."+serverPort);}
}
启动eureka member order 等服务,测试
{"resultCode":"00000000","resultMsg":"SUCCESS","data":"服务器繁忙!请稍后重试!!!"}
2.@HystrixCommand注解方式
1.pom.xml文件 application.properties配置文件 启动类 同方法一 Feign调用服务接口 不要fallback
2.测试代码
//解决服务雪崩效应 hystrix有两种方式配置保护服务 通过注解和接口形式//fallbackMethod 方法的作用:服务降级执行//@HystrixCommand 默认开启了线程池隔离方式 ,服务降级,服务熔断@HystrixCommand(fallbackMethod = "orderToMemberUserInfoHystrixFallbackMethod")@RequestMapping("/orderToMemberUserInfoHystrix")public ResultVO orderToMemberUserInfoHystrix() {System.out.println("orderToMemberUserInfoHystrix: 线程池名称:"+Thread.currentThread().getName());return memberServiceFeign.getUserinfo();}//服务降级处理方法public ResultVO orderToMemberUserInfoHystrixFallbackMethod(){return new ResultVO(StatusCode.RESULT_SUCCESS,"返回友好提示:服务降级 !!! 服务器忙,请稍后重试!!!!");}
3.启动服务,调用接口测试
{"resultCode":"00000000","resultMsg":"SUCCESS","data":"服务器繁忙!请稍后重试!!!"}
3. 缓存击穿(热点数据集中失效)
3.1 什么是热点数据集中失效?
我们一般都会给缓存设定一个失效时间,过了失效时间后,该数据库会被缓存直接删除,从而一定程度上保证数据的实时性。
但是,对于一些请求量极高的热点数据而言,一旦过了有效时间,此刻将会有大量请求落在数据库上
,从而可能会导致数据库崩溃。
如果某一个热点数据失效,那么当再次有该数据的查询请求时就会前往数据库查询。但是,从请求发往数据库,到该数据更新到缓存中的这段时间中,由于缓存中仍然没有该数据,因此这段时间内到达的查询请求都会落到数据库上,这将会对数据库造成巨大的压力。此外,当这些请求查询完成后,都会重复更新缓存。
3.2 解决方案
3.2.1 互斥锁
此方法只允许一个线程重建缓存
,其他线程等待重建缓存的线程执行完,重新从缓存获取数据即可
.
当第一个数据库查询请求发起后,就将缓存中该数据上锁;此时到达缓存的其他查询请求将无法查询该字段,从而被阻塞等待;当第一个请求完成数据库查询,并将数据更新值缓存后,释放锁;此时其他被阻塞的查询请求将可以直接从缓存中查到该数据。
当某一个热点数据失效后,只有第一个数据库查询请求发往数据库,其余所有的查询请求均被阻塞,从而保护了数据库。但是,由于采用了互斥锁,其他请求将会阻塞等待,此时系统的吞吐量将会下降。这需要结合实际的业务考虑是否允许这么做。
互斥锁可以避免某一个热点数据失效导致数据库崩溃的问题,而在实际业务中,往往会存在一批热点数据同时失效的场景
。那么,对于这种场景该如何防止数据库过载呢?
设置不同的失效时间
当我们向缓存中存储这些数据的时候,可以将他们的缓存失效时间错开
。这样能够避免同时失效。如:在一个基础时间上加/减一个随机数,从而将这些缓存的失效时间错开
3.3.2 永远不过期
“永远不过期”包含两层意思:
从缓存层面来看,确实没有设置过期时间,所以不会出现热点 key 过期后产生的问题,也就是“物理”不过期。
从功能层面来看,为每个 value 设置一个逻辑过期时间
,当发现超过逻辑过期时间后,会使用单独的线程去构建缓存
。
从实战看,此方法有效杜绝了热点 key 产生的问题,但唯一不足的就是重构缓存期间,会出现数据不一致的情况
,这取决于应用方是否容忍这种不一致。
3.3.3 两种方案的比较
互斥锁 (mutex key):这种方案思路比较简单,但是存在一定的隐患,如果构建缓存过程出现问题或者时间较长,可能会存在死锁和线程池阻塞的风险
,但是这种方法能够较好的降低后端存储负载并在一致性上做的比较好。
” 永远不过期 “:这种方案由于没有设置真正的过期时间,实际上已经不存在热点 key 产生的一系列危害,但是会存在数据不一致的情况,同时代码复杂度会增大。
现在是星期一 晚上九点半 祝好梦~
创作不易,如果本篇文章能帮助到你,请给予支持,赠人玫瑰,手有余香,虫虫蟹蟹观众姥爷了
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 关系型数据库
前言 先写着 非关系型数据库 非关系型数据库遵循ACID规则 ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:1、A (Atomicity) 原子性原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作…...
2024/5/4 3:01:30 - ZBrush自带笔刷的特性你都知道哪些?
ZBrush 是一个强有力的数字艺术创造工具,ZBrush 可以说是一个极其高效的建模器。它进行了相当大的优化编码改革,并与一套独特的建模流程相结合,可以让你制作出令人惊讶的复杂模型。图片来源于网络随着软件的不断更新,ZBrush中自带的笔刷功能也得到了增强,功能越来越庞大了…...
2024/5/1 23:32:02 - 【python爬虫】QQ空间爬虫 笔记
〇、前情提要 给爷爬。 参考:heartbreaker97/spider_qzone_friends https://github.com/heartbreaker97/spider_qzone_friends python爬虫-登录QQ空间获取COOKIES https://www.bilibili.com/video/BV1w7411W7YR python爬虫-QQ好友列表获取 https://www.bilibili.com/video/BV1…...
2024/4/27 17:43:35 - 解决Vs code中vue文件的自动补全问题
1、在插件市场搜索安装 HTML Snippets 插件2、点击 文件-首选项-设置,然后根据以下截图进行操作3、setting.json中加入以下代码"files.associations":{"*.vue":"html" },注意是以对象的形式插入,和原有的并列...
2024/4/9 1:04:38 - Linux下tomcat的部署
1. 下载tomcat压缩包wget http://xxx.com/tomcat/apache-tomcat-7.0.73.tar.gz2. 解压该压缩包tar -zxvf apache-tomcat-7.0.73.tar.gz3. 进入该文件夹cd apache-tomcat-7.0.734. 编辑配置文件,添加URLEncoding="UTF-8"防止乱码vim conf/server.xml5. 启动./startu…...
2024/4/9 1:04:42 - 学习---计算机语言的发展简单总结
第一代语言 机器语言计算机的基本计算方式都是基于二进制 二进制有0与1构成,逢二进一 计算机直接识别,不需要任何转换为了解决机器语言人们无法读懂的和难以识别的问题,下面出现第二代语言第二代语言 汇编语言解决人们无法读懂机器语言 指令代替二进制 应用于:逆向工程 机器…...
2024/4/25 14:59:44 - LeetCode第641题解析
设计实现双端队列。 你的实现需要支持以下操作:MyCircularDeque(k):构造函数,双端队列的大小为k。 insertFront():将一个元素添加到双端队列头部。 如果操作成功返回 true。 insertLast():将一个元素添加到双端队列尾部。如果操作成功返回 true。 deleteFront():从双端队列…...
2024/4/24 2:35:07 - 前不久发现做Java已经不知不觉5年了
看到很多朋友写了技术博客,无奈技痒试了一下,感觉输出的感觉还是挺好的。如果你觉得有意义,加我好友啊...
2024/4/24 21:11:36 - 概率图模型 ——(3)马尔科夫随机场
文章目录一、马尔科夫随机场定义二、一个简单的例子 一、马尔科夫随机场定义二、一个简单的例子...
2024/5/2 4:46:58 - Opencv 4.1 打开Jetson TX 2 板载摄像头
Opencv 4.1 打开Jetson TX 2 板载摄像头 网上总结很多opencv打开板载摄像头方法,但大多需要卸载刷机安装的原始opencv. 下面我的方法则不用,只需要运行python文件。 // An highlighted block import cv2 def open_cam_onboard(width, height):gst_str = (nvarguscamerasrc …...
2024/4/8 22:16:25 - 【第一章 初识 Python】
1.1 python 简介python是一种高级的面向对象编程语言,是一种面向对象的解释型计算机程序设计语言。特色之一是强制使用空白符作为语句缩进,同时具有丰富和强大的库,因此被称为胶水语言。python虚拟机是一种抽象层次更高的虚拟机。 python可运行在任何操作系统平台上…...
2024/4/8 22:16:25 - 【周赛总结】子树中标签相同的节点数,最多不重复子字符串,找到最接近目标值的函数值
2020/07/19 rank:492/5779 AC: 2/4 这次的题目比较难,只A了两道。 第二题,子树中标签相同的节点数方法是采用DFS的方法处理树有关的问题,这道题目的难点在于如何保存子树的信息。同时需要注意是一个无向图。 首先我们要记录一个集合visit这个集合表示了已经访问的节点,可…...
2024/4/8 22:16:23 - 7/20 SIFT算法学习笔记
SIFT简介 SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,是一种局部特征描述子。该方法于1999年由David Lowe首先发表计算机视觉国际会议(International Conference…...
2024/4/22 1:41:16 - KMP算法简单易懂——传送门
KMP算法简单易懂——传送门...
2024/4/22 8:57:49 - 复习总结---主动信息搜集(一)
复习总结—主动信息搜集(一) 主动信息搜集1.三层发现:traceroute www.baidu.com(路由追踪)Scapy发现流程并复现一下icmpfping -c fping -g 192.168.1.1 fping –help fping -g 192.168.1.1 192.168.1.200 -c 1 fping -f ‘/root/桌面/123’ hping3 192.168.1.1 –icmp-c …...
2024/5/3 5:29:36 - 05 数据结构之“链表”
5-1 链表简介 链表是什么?多个元素组成的列表。 元素存储不连续,用next 指针连在一起。数组 VS 链表数组:增删非首尾元素时往往需要移动元素。 链表:增删非首尾元素,不需要移动元素,只需要更改next的执行即可。(链表元素的存储不是连续的,元素之之间用next相连)JS中的…...
2024/4/19 16:15:41 - JS面试经典题a==1&&a==2&&a==3(记录一下)
//var a = ? if(a==1&&a==2&&a==3){console.log("打印这句话") }只提供思路1、改写隐式转换规则时调用的方法对象与数字比较,对象会默认调用valueOf(),toString()方法,改写这两者其一都可以2、参考vue2的数据劫持重写a的get(set)方法,让其调用…...
2024/4/25 14:59:10 - 求两个数的最大公约数
public int test(int a,int b){int min=a<b?a:b;for(int i=min;i>1;i--){if(a%i==0&&b%i==0){return i;}}return 1;}...
2024/4/17 9:07:03 - 鱼塘钓鱼题解(堆解决)
建议全屏阅读 这道题可以用 贪心 + 大根堆 来解决。 先把题目放上来。 描述 有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表:鱼塘编号 1 2 3 4 5每1分钟能钓到的鱼的数量(1..1000) 10 14 20 16 9每1分钟能钓鱼数的减少量(1..100) 2 4 6 5…...
2024/4/9 1:04:27 - 7. 整数反转_难度简单_long转int
7. 整数反转难度简单给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123 输出: 321示例 2:输入: -123 输出: -321示例 3:输入: 120 输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根…...
2024/4/14 15:07:28
最新文章
- 使用 TensorFlow 和 Keras 构建 U-Net
原文地址:building-a-u-net-with-tensorflow-and-keras 2024 年 4 月 11 日 计算机视觉有几个子学科,图像分割就是其中之一。如果您要分割图像,则需要在像素级别决定图像中可见的内容(执行分类时),或者从像…...
2024/5/4 15:29:18 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 汽车统一诊断服务UDS协议参考文章和视频
UDS基础知识介绍-电子发烧友网 【图解UDS】UDS汽车诊断标准协议(ISO14229)带你入门到精通-有驾 车载测试之UDS诊断协议9:0x27服务:解锁ECU_哔哩哔哩_bilibili UDS诊断的22服务(DID读取数据)和2E服务&…...
2024/5/2 2:41:27 - 前端学习<二>CSS基础——17-CSS3的常见边框汇总
CSS3 常见边框汇总 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>CSS3 边框</title><style>body, ul, li, dl, dt, dd, h1, h2, h3, h4, h5 {margin: 0;padding: 0;}body {background-c…...
2024/5/1 13:58:41 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/5/4 12:05:22 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/5/4 11:23:32 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/4 14:46:16 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/3 16:00:51 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/4 12:10:13 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/5/3 21:22:01 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/3 23:17:01 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/4 14:46:12 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/4 14:46:11 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/4 14:46:11 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/5/4 2:14:16 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/5/3 16:23:03 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/5/4 12:39:12 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/4 13:16:06 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/3 14:57:24 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/4 14:46:05 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/4 2:00:16 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/3 22:03:11 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/4 9:07:39 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/4 14:46:02 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57