彻底搞懂GC机制和GC算法
1. 分代
堆中内存分为新生代和老年代,其中新生代又分为Eden区、(Survivor)From区、(Surviver)To区,大致如图:
2. GC分类
2.1 新生代垃圾回收器:Minor GC/Young GC
2.2 老年代垃圾回收器:Mojor GC/Old GC
2.3 整堆回收:Full GC(回收堆区和方法区)
3. 垃圾回收算法
- 复制算法:
思想:将内存按容量分为两块,每次只使用其中一块,每次将其中一块存活的对象复制到另一块上去,再清空这块区域。这种方式不需要考虑内存碎片,只需要考虑复制的开销;
注意:对象复制过区之后,对应的引用指针也改变了。这种算法适合新生代,因为新生代对象朝生夕死,需要复制的对象少,效率高。 - Appel式回收
思想:优化的复制算法,将新生代分为Eden区、from区、to区,默认比例8:1:1,新对象分配在Eden区,经历一次GC,存活的对象转移到from/to区,之后存活对象在from和to区进行复制算法相同操作,这种策略只浪费10% 的新生代空间。而当from/to区不够时依赖老年代进行分配担保。 - 标记-清除算法
思想:将垃圾回收分为标记和清除两个阶段,其中标记是将需要回收的对象进行扫描标记,清除就是对这些垃圾对象进行清除;
注意:这种算法一般用在老年代,但是会产生大量内存碎片,会触发提前GC。 - 标记-整理算法
思想:在标记清除算法的思想上,清除之后对内存空间进行整理,将存活对象向一端移动;
注意:这种算法效率偏低,而对象移动之后也需要进行对象指针调整。
4.常见的垃圾回收器
记住这张图!!!
4.1 Serial和Serial Old
古老的单线程垃圾回收器,一个回收新生代,一个回收老年代。
Stop The World:在进行垃圾回收时,会暂停所有的用户线程。
4.2 Parallel Scavange和Parallel Old
jdk1.8默认的多线程垃圾回收器。
参数设置:
停顿时间 -XX:MaxGCPauseMillis;
吞吐量大小 -XX:GCTimeRatio [0,100] 默认值99 ,意为垃圾回收时间99%;
二者是相互平衡受制的。
4.3 ParNew
和CMS配套使用,和Serial没啥区别,就是他是多线程的,停顿时间更少,jdk1.9之后合并到CMS了。
4.4 CMS(Concurrent Mark Sweep)
第一款并发垃圾回收器
目的:实现停顿时间最短,注重响应速度;
该垃圾回收器在标记清除的思想上,把垃圾回收分为四个步骤:
初始标记: 标记GC-Roots能关联的对象(时间短)
并发标记: 和用户线程一起执行,标记GC-Roots引用链的所有对象(时间长)
重新标记: 标记在并发标记过程中导致标记变动的对象(时间短)
并发清除: 和用户线程一起执行,清除不在引用链上的对象(时间长)
参数设置:-XX:+UseConcMarkSweepGC,表示新生代使用ParNew,老年代的用CMS
------------------------CMS存在的问题:--------------------
1. CPU敏感:cms是并发的垃圾回收器,当cpu核心数低于4个时,cms对用户影响较大;
2. 浮动垃圾:在并发清理阶段还会产生新的垃圾,这些垃圾只能在下次GC回收,所以需要预留一部分内存来存放这些浮动垃圾,而万一这部分内存不够的话,就会出现Concurrent Mode Failure,这时候虚拟机就会临时启用Serial Old来替代CMS;
3. 内存碎片:标记清除算法会产生内存碎片,参数
-XX:+UseCMSCompactAtFullCollection默认开启,会进行内存整理,这里一般用Serial Old,所以内存大,对象多时会很卡。
疑问:问什么用标记清除,不用标记整理?
因为标记整理过程中会涉及对象引用的改变,这个过程需要暂停所有用户线程,会延长STW的时间。
5.G1 (Garbege First)
思想:传统的分代回收思想,总逃不过STW的不可预测性,而G1则时将整个堆空间划分为许多个独立的大小相同的Region区域,每个Region区可以根据内存空间需要扮演Eden区、From区、To区和Old区,回收器根据不同的区域采用不同的策略去处理。
Region:
可以通过参数-XX:G1HeapRegionSize来设置,范围为1M到32M,2的N次幂,一般建议增大该数值,GC间隔会更长点;
每个Region区内有个Humongous区域来专门处理超过半个Region大小的大对象,而超过整个Region大小的超大对象,则会放入N个连续的Humongous Region中,G1将Humongous Region当作老年代的一部分来看待。
G1的运行过程
初始标记: 标记GCRoots能直接关联到的对象,并且修改TAMS(Top At Mark Start)指针的值,让下一阶段用户线程并发运行时,能正确地在可用的Region中分配新对象。这个阶段需要停顿线程,但耗时很短,而且是借用进行MinorGC的时候同步完成的,所以G1收集器在这个阶段实际并没有额外的停顿。
TAMS是啥? 要达到GC与用户线程并发运行,必须要解决回收过程中新对象的分配,所以G1为每一个Region区域设计了两个名为TAMS(TopatMarkStart)的指针,从Region区域划出一部分空间用于记录并发回收过程中的新对象。这样的对象认为它们是存活的,不纳入垃圾回收范围。
并发标记: 从GC Root开始对堆中对象进行可达性分析,递归扫描整个堆里的对象图,找出要回收的对象,这阶段耗时较长,但可与用户程序并发执行。当对象图扫描完成以后,并发时有引用变动的对象,这些对象会漏标,漏标的对象会被一个叫做SATB(snapshot- at the beginning)算法(下面细说)来解决。
最终标记: 用于处理并发阶段结后仍遗留下来的最后那少量的SATB记录(漏标对象)。
筛选回收: 负责更新Region的统计数据,对各个Region的回收价值和成本进行排序,根据用户所期望的停顿时间来制定回收计划,可以自由选择任意多个Region构成回收集,然后把决定回收的那一部分Region的存活对象复制到空的Region中,再清理掉整个旧Region的全部空间。这里的操作涉及存活对象的移动,是必须暂停用户线程,由多条收集器线程并行完成的。
特点
1. 并行与并发: G1能充分利用多CPU、多核环境下的硬件优势,使用多个CPU (CPU或者CPU核心)来缩短Stop-The-World停顿的时间,部分其他收集器原本需要停顿Java线程执行的GC动作,G1收集器仍然可以通过并发的方式让Java程序继续执行。
2. 分代收集: 与其他收集器一样,分代概念在G1中依然得以保留。虽然G1可以不需要其他收集器配合就能独立管理整个GC堆,但它能够采用不同的方式去处理新创建的对象和已经存活了一段时间、熬过多次GC的旧对象以获取更好的收集效果。
3. 空间整合: 与CMS的“标记-清理”算法不同,G1从整体来看是基于“标记-整理”算法实现的收集器,从局部(两个Region之间)上来看是基于“复制”算法实现的,但无论如何,这两种算法都意味着G1运作期间不会产生内存空间碎片,收集后能提供规整的可用内存。这种特性有利于程序长时间运行,分配大对象时不会因为无法找到连续内存空间而提前触发下一次GC。
总结:
5.深入
5.1 三色标记法: 在三色标记法之前有一个算法叫Mark-And-Sweep (标记清除)。这个算法会设置一个标志位来记录对象是否被使用。最开始所有的标记位都是0,如果发现对象是可达的就会置为1,一步步下去就会呈现一个类似树状的结果。等标记的步骤完成后,会将未被标记的对象统一清理, 再次把所有的标记位设置成0方便下次清理。
这个算法最大的问题是GC执行期间需要把整个程序完全暂停,不能异步进行GC操作。因为在不同阶段标记清扫法的标志位0和1有不同的含义,那么新增的对象无论标记为什么都有可能意外删除这个对象。对实时性要求高的系统来说,这种需要长时间挂起的标记清除法是不可接受的。所以就需要一个算法来解决GC运行时程序长时间挂起的问题,那就三色标记法。
三色标记最大的好处是可以异步执行,从而可以以中断时间极少的代价或者完全没有中断来进行整个GC。
三色标记法很简单。首先将对象用三种颜色表示,分别是白色、灰色和黑色。
黑色: 根对象,或者该对象与它的子对象都被扫描过。
灰色: 对本身被扫描,但是还没扫描完该对象的子对象。
白色: 未被扫描对象,如果扫描完所有对象之后,最终为白色的为不可达对象,既垃圾对象。
5.2 GC并发情况下的漏标问题
5.2.1 CMS中的解决方案
Incremental Update算法:当一个白色对象被一个黑色对象引用,将黑色对象重新标记为灰色,让垃圾回收器重新扫描;
5.2.2 G1中的解决方案
SATB(snapshot-at-the-beginning): 刚开始做一个快照,当B和C消失的时候要把这个引用推到GC的堆栈,保证C还能被GC扫描到,最重要的是要把这个引用推到GC的堆栈,是灰色对象指向白色的引用,如果一旦某一个引用消失掉了,我会把它放到栈(GC 方法运行时数据也是来自栈中),我其实还是能找到它的,我下回直接扫描他就行了,那样白色就不会漏标。
对应G1的垃圾回收过程中的:
最终标记( Final Marking)
对用户线程做另一个短暂的暂停,用于处理并发阶段结后仍遗留下来的最后那少量的SATB记录(漏标对象)。
5.2.3 对比
SATB算法是关注引用的删除。(B->C的引用)
Incremental Update算法关注引用的增加。(A->C 的引用)
G1如果使用Incremental Update算法,因为变成灰色的成员还要重新扫,重新再来一遍, 效率太低了。
所以G1在处理并发标记的过程比CMS效率要高,这个主要是解决漏标的算法决定的。
5.3 G1中的细节实现
5.3.1 跨代引用
堆空间通常被划分为新生代和老年代。由于新生代的垃圾收集通常很频繁,如果老年代对象引用了新生代的对象,那么回收新生代的话,需要跟踪从老
年代到新生代的所有引用,所以要避免每次YGC时扫描整个老年代,减少开销。
RSet (记忆集)
记录了其他Region中的对象到本Region 的引用,RSet的价值在于使得垃圾收集器不需要扫描整个堆,找到谁引用了当前分区中的对象,只需要扫描RSet即可。
RSet本身就是一个Hash表,如果是在G1的话,则是在一个Region区里面。
CardTable(卡表)
由于做新生代GC时,需要扫描整个OLD区,效率非常低,所以JVM设计了CardTable,如果 一个OLD区CardTable中有对象指向Y区,就将 它设为Dirty .
(标志位1),下次扫描时,只需要扫描CARDTABLE上是Dirty的内存区域即可。
字节数组CARDTABLE的每一个元素都对应着其标识的内存区域中一块特定大小的内存块,这个内存块被称作“卡页”(Card Page)。一 般来说,卡页大小
都是以2的N次幂的字节数,假设使用的卡页是2的10次幂,即1K,内存区域的起始地址是0x0000的话,数组CARD_TABLE 的第0、1、2号元素,分别
对应了地址范围为0x0000~0xO3FF、0x0400 ~ 0x07FF、0x0800~0x011FF 的卡页内存。
小结
这里描述的是G1处理跨代引用的细节,其实在CMS中也有类似的处理方式,比如CardTable,也需要记录一个RSet来记录,我们对比一下,在G1中是每
一个Region都需要一个 RSet的内存区域,导致有G1的RSet可能会占据整个堆容量的20%乃至更多。但是CMS只需要一份,所以就内存占用来说,G1
占用的内存需求更大,虽然G1的优点很多,但是我们不推荐在堆空间比较小的情况下使用G1,尤其小于6个G。
安全点与安全区域
安全点
用户线程暂停,GC线程要开始工作,但是要确保用户线程暂停的这行字节码指令是不会导致引用关系的变化。所以JVM会在字节码指令中,选一些指令,作为“安全点”,比如方法调用、循环跳转、异常跳转等,一般是这些指令才会产生安全点。
为什么它叫安全点,是这样的,GC时要暂停业务线程,并不是抢占式中断(立马把业务线程中断)而是主动是中断。
主动式中断是设置一个标志,这个标志是中断标志,各业务线程在运行过程中会不停的主动去轮询这个标志,一旦发现中断标志为True,就会在自己最近
的“安全点”上主动中断挂起。
安全区域
为什么需要安全区域?
要是业务线程都不执行( 业务线程处于Sleep或者是Blocked状态),那么程序就没办法进入安全点,对于这种情况,就必须引入安全区域。
安全区域是指能够确保在某一段代码片段之中, 引用关系不会发生变化, 因此,在这个区域中任意地方开始垃圾收集都是安全的。我们也可以把安全区
城看作被扩展拉伸了的安全点。
当用户线程执行到安全区域里面的代码时,首先会标识自己已经进入了安全区域,这段时间里JVM要发起GC就不必去管这个线程了。
当线程要离开安全区域时,它要检查JVM是否已经完成了根节点枚举,或者其他GC中需要暂停用户线程的阶段
1、如果完成了,那线程就当作没事发生过,继续执行。
2、否则它就必须一直等待,直 到收到可以离开安全区域的信号为止。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 2020.08.17 webpack环境搭建
webpack是什么? webpack 是一个现代 JavaScript 应用程序的静态模块打包器 webpack稳定版本:v4.44 如何使用webpack搭建前端环境 1.安装node.js(尽量使用npm) 2.创建项目目录并初始化package.json,会默认创建package.json文件 安装命令:npm init -y 3.安装webpack和webpac…...
2024/4/23 1:31:21 - Java基础之异常
java异常概述Java 中一切皆对象,在java中有一个超类叫java.lang.Throwable. 在java中异常又分为两大类,叫错误Error 和 异常 Exception. Error类对象有Java虚拟机生成并抛出,大多数错误与代码编写者执行的操作无关。 Exception 有一个重要的分支运行时异常,这些一般与程序逻…...
2024/5/9 1:48:02 - HTML简介/文本标签/列表标签/图片标签
HTML基础每日复习要点 JAVA三大特性: 封装 继承 多态阶段学习目标 **1. web前段: 如何开发页面 **HMTL: 搭建页面结构和页面内容 CSS: 美化页面 JavaScrip t: 给页面添加动态效果 jQuery: JavaScrip语言框架,提高了原生JavaScrip语言的开发效率.(写的更少实现的更多).2. 数据…...
2024/5/8 11:41:34 - Glide只播放一次Gif以及监听播放完成的实现方案
需求: 近段时间正好有一个需求,是要实现Gif图只加载播放一次,并且要在Gif播放完毕后回调给系统的需求。 因为Glide 3系列的API与4系列还是有很大差距的,这里我们针对Glide 3.x和Glide 4.x的分别进行实现方案的说明。 解决方案: 在Glide3.x的解决方案: Glide.with(this).l…...
2024/5/8 20:26:52 - m3u8各个字段意义解析
#EXTM3U声明这是一个m3u8文件#EXTINF:<duration>,<title>duration表示持续的时间(秒)必须是整数,如果版本在3以上可以是浮点数。#EXTINF后面的URI碎片的时间长度#EXT-X-BYTERANGE表示媒体段是一个媒体URI资源中的一段,只对其后的media URI有效,格式如下:#EXT…...
2024/4/4 11:25:59 - Python知识点总结_【字符串的方法】篇~随时更新【第二篇】
一、字符串常用的方法 1、str.upper() : 把英文小写,全部变成大写,中文不发生改变 a = "abc" #小写英文,全部转换成大写 print(a.upper()) >>> ABCb = "中国,Abc" #只针对小写英文起效果 print(b.upper()) >>> 中国,ABC2、st…...
2024/5/8 18:18:32 - 【工具类】用这个方法-让GitHub下载速度可达2MB/s
因为大家都知道的原因,在国内从github上面下载代码的速度峰值通常都是20kB/s。这种速度对于那些小项目还好,而对于大一些的并且带有很多子模块的项目来讲就跟耽误时间。而常见的的方法无非就是修改HOST或者挂VPN,实际用起来并不稳定。 这里提供一种新的方法,下载速度可以达…...
2024/5/8 19:40:01 - 上海开发票的数据备份还原+
–创建备份设备USE [master]GOEXEC master.dbo.sp_addumpdevice @devtype = N’disk’, @logicalname = N’beifen’, @physicalname = N’D:\beifen.bak’GO –完整备份到备份设备中BACKUP DATABASE [student] TO [beifen] WITH NOFORMAT, NOINIT, NAME = N’student-完整 …...
2024/5/8 16:17:53 - debian9.13系统,中英文切换
1、切换到root2、执行 dpkg-reconfigure locales然后按下图选择中文或者英文3、按空格选择,然后回车,如下图4、在回车,然后vim /etc/default/locale 文件里,如下,#代表注释5、重启之后发现,部分还是英文,这时可以执行,apt-get update,在重启就是中文了,英文也是…...
2024/4/4 11:25:55 - 剑指 Offer 37. 序列化二叉树-Python题解
请实现两个函数,分别用来序列化和反序列化二叉树。 示例:# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = Noneclass Codec:def serialize(self, r…...
2024/5/6 20:32:45 - 一、JPA入门
一、JPA入门教程 首先JPA(相当于通用接口)是Java Persistence API的简称,中文名Java持久层API;JPA的总体思想和现有Hibernate、TopLink、JDO等ORM框架统一。在JPA中默认的实现方式是Hibernate(全自动映射关系),在编程时我们只要准备实体类即可,无需关心具体sql语句怎么写,…...
2024/4/28 12:43:27 - vue页面参数传递(VUE+echart+map联动实例)
我们在使用vue的时候经常会遇到页面参数传递,相比之前JavaScript操作,js入参传参,js之间方法调用只要我们引入js就可以相互调用,但是vue里面的不太一样,主要涉及有三种方式,父子传参,子父传参,兄弟传参 最近在做VUE+echart+map时候正好涉及到这三个传值,给大家分享一下…...
2024/4/26 23:10:18 - 记录安装使用联邦机器学习FATE框架
联邦机器学习框架 参考: 文章:联邦学习项目FATE Stand-alone单机版在ubuntu16.04上体验部署来源 链接:https://blog.csdn.net/weixin_42379358/article/details/103177864仅仅测试单机版,简单的api测试使用 Docker安装环境部署FATE框架需要python3.6,jdk,mysql等其他工具支…...
2024/5/8 11:10:37 - 差点被派生类析构给坑到
关键字:纯虚函数、纯虚析构函数、派生类 文章目录问题代码如下声明:实现:用户:运行结果第一种情况第二种情况第三种情况 由于基础不够扎实,今天在写代码时发现一个底层的小坑,在delete子类的时候只会调用父类的析构函数不会调用子类的析构函数。 这样可能导致的重大问题是…...
2024/4/23 18:23:21 - CentOS7 PHP7.3 连接Sqlserver
本机PHP版本7.3,非线程安全扩展下载地址 https://github.com/microsoft/msphpsql/releases/tag/v5.6.1 我的是centos7 7.3 所以选择centos7-73.tar解压完后:然后把文件移动到扩展文件下面比如我的是然后配置文件修改然后重启至此就完成了...
2024/4/18 13:38:01 - 【Computer Organization笔记21】虚拟存储器:段式存储,页式存储
本次笔记内容: P43 计算机组成原理(43) P44 计算机组成原理(44) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 幻灯片见我的 GitHub 仓库:计算机组成原理 src/slides 本节课幻灯片:组成原理34 vm.ppt…...
2024/4/26 3:42:49 - python基础 第六、七天
函数用法和底层分析函数也是对象Python中,“一切皆是对象”。实际上,用def定义函数后,系统就创建了相应的函数对象。以后,每次重复调用这个对象的地址,而非重新创建。变量的作用域(全局变量和局部变量)变量起作用的范围称为变量的作用域,不同作用域内同名变量之间互不影…...
2024/5/4 9:34:26 - requests库入门(详解)
Requests库的七个主要方法方法 说明requests.request() 构造一个请求,支撑以下各方法的基础方法requests.get() 获取HTML网页的主要方法,对应HTTP的GETrequests.head() 获取HTML 网页信息的方法,对应HTML的headrequests.post() 向HTML网页提交POST请求的方法,对应HTTP的POS…...
2024/5/8 21:25:34 - sqli-labs闯关记录(Less6-Less10)
Basic InjectionLess-6 bool盲注(双引号)Less-7 Dump into OutfileLess-8 Blind-Boolian-Single Quotes StringLess-9 Blind-Time based-Single Quotes StringLess-10 Blind-Time based-Double Quotes String Less-6 bool盲注(双引号) 这里依然可以使用报错注入,与Less-5不…...
2024/4/21 23:42:38 - concurrent.Map:扩展sync.Map
前言笔者最近在写一个开源项目gmap,里面就复用了sync.Map的技术,并不是直接使用sync.Map,而是拷贝sync.Map的代码并做一些适配性的调整和扩展。我想很多人应该会问为什么拷贝而不是直接使用?为什么不用map?这里我列举如下问题:map加读写锁(sync.RWMutex),问题在于利用…...
2024/4/27 9:22:10
最新文章
- 2024-05-07 问AI: 介绍一下music 21 工具包
文心一言 Music21是一个由MIT开发的功能强大的计算音乐学分析Python库。这个工具包提供了丰富的功能,包括处理多种格式的音乐文件(如MusicXML、MIDI、abc等),以及从零开始构建音乐文件或对音乐进行分析。Music21也可以方便地使用…...
2024/5/9 4:09:45 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - Mac OS X系统中的隐藏文件夹 .fseventsd,.Spotlight-V100,.Trashes
Mac OS X系统中的隐藏文件夹(.fseventsd,.Spotlight-V100,.Trashes),务必谨慎操作。这些文件夹通常存储着系统的临时数据和缓存,对系统的正常运行至关重要。下面是对它们的说明以及如何处理的建议ÿ…...
2024/5/4 2:52:49 - javaWeb网上零食销售系统
1 绪 论 目前,我国的网民数量已经达到7.31亿人,随着互联网购物和互联网支付的普及,使得人类的经济活动进入了一个崭新的时代。淘宝,京东等网络消费平台功能的日益完善,使得人们足不出户就可以得到自己想要的东西。如今…...
2024/5/8 15:41:52 - BetterZip for Mac2024最新mac解压缩软件
作为一名软件专家,对于市面上各类软件都有较为深入的了解,下面介绍的是一款适用于Mac系统的解压缩软件——BetterZip,将从其功能特点、使用方法、用户体验及适用人群等方面进行详细介绍。 BetterZip5-安装包绿色版下载如下: htt…...
2024/5/8 19:36:26 - 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/8 19:32:33 - 【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/7 22:31:36 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/9 2:44:26 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/8 20:33:13 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/9 3:15:57 - 【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/7 16:57:02 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/7 14:58:59 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/8 20:58:56 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/9 1:35:21 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/8 1:37:35 - 用欧拉路径判断图同构推出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/7 16:05:05 - 【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/8 18:06:50 - 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/8 1:37:32 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/9 1:42:21 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/8 1:37:31 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/8 1:37:31 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/8 12:44:41 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/8 9:51:44 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/8 1:37:29 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/7 17:09:45 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下: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