精华内容
下载资源
问答
  • 【译文】 GC 安全点 和安全区域

    千次阅读 2017-05-06 11:06:41
    GC安全点与安全区域

    转载自:http://www.cnblogs.com/ridox/p/3646381.html

    根引用  Root references
       一个实例死了,意味着它变得无用。只用程序员知道一个实例是否已经无用。为了让程序知道一个实例是否已经无用,我们可以使用编译器分析,引用计数, 或者 可达性分析。

      

      可达性分析假设只要一个实例是可达的,它就是活着的。如果一个实例的引用直接包含在当前函数栈的一个槽(slot)中,它就是直接可达的。那些被可达实例引用的实例也是可达的。因此,可达性分析就是找出那些直接可达的引用,也就是根引用。 根引用的集合就做根集合。

      

      当前执行函数(the mutator)的上下文中 有直接可达的数据,因此 找根集合就是在上下文中找实例的引用。当前函数的上下文引用它的栈和寄存器文件(和一些线程所有的数据)。全局数据也是直接可达的。

     

    枚举根集合Root set enumeration
      一般情况下,如果GC使用可达性来确定一个实例是否存活,GC需要获得当前执行现场的一个一致的快照(a consistent snapshot),以便枚举根引用。 这对于stop-the-world 和 并发 GC(多数情况)都适用。 “一致” 意味着快照看起来就像在单个时间点上取得的。 一个一致的根引用快照对于正确性很有必要,否则一些活着的实例就可能丢失。 那现在的问题就是怎样获得当前上下文一致的快照。

      

      为了获得一致的快照,一个简单的办法就是在枚举根引用的过程中,当前执行函数阻塞。 如果在枚举过程中,根集合是不变的,快照也是一致的。

     

      当前执行函数阻塞了它的执行以后,它就不一定能够枚举它上下文中的根引用,除非它在它的上下文中登记并保存了那些引用信息。也就是说,它应该能够分辨出那个栈里有引用,哪个寄存器里有引用。 如果GC能够准确地获得这些信息,它就是准确根集合枚举, 否则就是模糊的。

     

      (对应模糊枚举,GC使用启发式规则来保守地猜测哪些是上下文中的引用。因此,这些GC就是所谓的保守GC。 这篇文章只讨论准确枚举。)

     

      Harmony 通过使用GC安全点和安全区域, 支持准确根集合枚举。

    GC安全点和安全区域 Safe-point (or safepoint)
      为了支持准确枚举,JIT编译器需要做一些额外的工作,因为只有JIT准确地知道栈帧信息和寄存器上下文。 当JIT编译一个方法的时候, 对于每一个指令, 它都保存根引用信息,以防执行阻塞在那个指令上。

     

      但是对每一个指令都保存那些信息太昂贵了。 它需要大量空间保存那些信息。 这是不必要的,因为 只有一小部分指令有机会在实际执行时阻塞。 JIT只需要保存那部分指令的信息就够了-- 他们就把叫做安全点。安全点意味着对应根枚举来说,在该点阻塞是安全的。

     

      顺便说一下,并不是所有编程语言的编译器都能够确切知道堆栈信息。 只有安全语言有这个能力。 比如, C/C++就没有。

    函数阻塞 Mutator suspension
      对于安全点,现在的问题是,我们怎么保证函数在安全点阻塞。

      有两种基本方法来阻塞当前函数,抢先或者自愿。抢先式的方法是无论任何时候GC需要进行一次收集,它都立即阻塞当前函数的执行。当它发现函数被阻塞在一个不安全的点时,它会恢复函数执行,向前滚动到一个安全点。这种方法在ORP【1】中实现,它是Harmony的前一个版本。但是,目前几乎没有JVM使用这种方法。

     

      在Harmony中实现的方法是自愿阻塞。当GC触发一次垃圾回收,它只是简单的设置一个标志; 当前执行函数会轮询这个标志, 当发现这个标志置位的时候,他们就会阻塞。那些轮询的点都是安全点。 多数情况下, JIT负责在合适的位置插入轮询程序。 有时,VM也需要有一些轮询点。

    轮询点 Polling point
      那么哪里是正确轮询GC触发事件的地点呢? 就像我们上面讨论的,我们不想在每一个指令处都设置轮询点。 对于自愿阻塞,一个更严重的问题是轮询负载。因此插入轮询点需要遵循一些基本原则:第一,轮询点应该足够频繁,以便GC不需要等待当前函数阻塞的时间太长, 因为其他函数还在等着GC释放空间来继续执行。第二,轮询点不能太多,导致增加运行负载过重。

     

      最好的结果是刚好有足够的轮询点满足需求:

    1. 一类强制的轮询点是内存分配点。分配可以触发一次垃圾收集,因此分配必须是安全点
    2. 长时间的执行总是和方法调用或者循环 有关。因此,调用点和循环回边点也是期望的轮询点  

     

      这些就是Harmony中的轮询点: 分配点,调用点和循环回边点。 多数情况下运行时负载小于1%。 不幸的是,我们发现单独安全点是不够的。

    安全区域 Safe-region
      为什么不够呢? 因为我们忘掉了一种常见执行的情况。我们忘了它,因为它实际上不是长时间执行,而是长时间闲置。有这样一类情况程序不能及时响应GC触发事件,比如sleep,因系统调用阻塞。 这些操作不是JVM能够控制的。JVM在此期间不能够响应GC事件。 因此,我们引入了安全区域的概念来解决这个问题。

     

      安全区域是其中引用不会改变的一段代码片段,那么在其中任一点进行根枚举都是安全的。 换句话说,安全区域是安全点的一个很大的扩展。

     

      在安全点的设计中,如果GC触发事件发生了,执行函数通过轮询进行响应。它通过设置一个准备好的标志(ready flag)来响应。 那么GC就可以进行根枚举了。这是一个握手协议。

     

      安全区域也遵循这个协议。执行函数在进入安全区域时设置ready flag。在它离开安全区域以前,它先检查GC是否完成了枚举(或者收集),并且不再需要执行函数呆在阻塞状态。如果是真的,它就向前执行,离开安全区域; 否则,它就像安全点一样阻塞他自己。

     

      在Harmony的实现中,我们插入 suspend_enable 和 suspend_disable来标志安全区域的界限。



    【1】 ORP (Open Runtime Platform), http://orp.sf.net

    展开全文
  • 关于安全点和安全区域

    千次阅读 2020-01-05 00:10:32
    安全安全点,即程序执行时并非在所有地方都能停顿下来开始GC,只有在到达安全点时才能暂停。Safepoint的选定既不能太少以至于让GC等待时间太长,也不能过于频繁以致于过分增大运行时的负荷。 安全点的初始目的并...

    安全点

    安全点,即程序执行时并非在所有地方都能停顿下来开始GC,只有在到达安全点时才能暂停。Safepoint的选定既不能太少以至于让GC等待时间太长,也不能过于频繁以致于过分增大运行时的负荷。

    安全点的初始目的并不是让其他线程停下,而是找到一个稳定的执行状态。在这个执行状态下,Java虚拟机的堆栈不会发生变化。这么一来,垃圾回收器便能够“安全”地执行可达性分析。只要不离开这个安全点,Java虚拟机便能够在垃圾回收的同时,继续运行这段本地代码。

    程序运行时并非在所有地方都能停顿下来开始GC,只有在到达安全点时才能暂停。安全点的选定基本上是以程序“是否具有让程序长时间执行的特征”为标准进行选定的。“长时间执行”的最明显特征就是指令序列复用,例如方法调用、循环跳转、异常跳转等,所以具有这些功能的指令才会产生Safepoint。

    为什么把这些位置设置为jvm的安全点呢,主要目的就是避免程序长时间无法进入safepoint,比如JVM在做GC之前要等所有的应用线程进入到安全点后VM线程才能分派GC任务 ,如果有线程一直没有进入到安全点,就会导致GC时JVM停顿时间延长。比如写了一个超大的循环导致线程一直没有进入到安全点,GC前停顿了8秒。

    对于安全点,另一个需要考虑的问题就是如何在GC发生时让所有线程(这里不包括执行JNI调用的线程)都“跑”到最近的安全点上再停顿下来。

    两种解决方案:

    抢先式中断

    抢先式中断不需要线程的执行代码主动去配合,在GC发生时,首先把所有线程全部中断,如果发现有线程中断的地方不在安全点上,就恢复线程,让它“跑”到安全点上。现在几乎没有虚拟机采用这种方式来暂停线程从而响应GC事件。

    主动式中断

    主动式中断的思想是当GC需要中断线程的时候,不直接对线程操作,仅仅简单地设置一个标志,各个线程执行时主动去轮询这个标志,发现中断标志为真时就自己中断挂起。轮询标志的地方和安全点是重合的,另外再加上创建对象需要分配内存的地方。

    安全点应用场景

    1. GC STW
    2. 偏向锁释放
    3. 其他

    安全区域

    安全点机制保证了程序执行的时候,在不太长的时间就会遇到可进入gc的安全点。但是如果线程处于sleep状态或者blocked状态的时候,这时线程无法响应jvm的中断请求,就需要安全区域。

    安全区域是指在一段代码片段中,引用关系不会发生变化,在该区域的任何地方发生gc都是安全的
    当代码执行到安全区域时,首先标示自己已经进入了安全区域,那样如果在这段时间里jvm发起gc,就不用管标示自己在安全区域的那些线程了,在线程离开安全区域时,会检查系统是否正在执行gc,如果是那么就等到gc完成后再离开安全区域。

    展开全文
  • 安全点(Safepoint) 1、概念:程序执行时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为“安全点(Safepoint) 2、SafePoint的选择很重要,如果太少可能导致GC等待的时间太长...

    安全点(Safepoint)

    1、概念:程序执行时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为“安全点(Safepoint)

    2、SafePoint的选择很重要,如果太少可能导致GC等待的时间太长(STW),如果太频繁可能导致运行时的性能问题。大部分指令的执行时间都非常短暂,通常会根据是否具有让程序长时间执行的特征为标准。比如:选择一些执行时间较长的指令作为SafePoint,如方法调用、循环跳转和异常跳转等。
    在这里插入图片描述

    3、如何在GC发生时,检查所有线程都跑到最近的安全点停顿下来呢?
    (1)抢先式中断:(目前没有虚拟机采用了)
    首先中断所有线程。如果还有线程不在安全点,就恢复线程,让线程跑到安全点。

    (2)主动式中断:
    设置一个中断标志,各个线程运行到SafePoint的时候主动轮询这个标志,如果中断标志为真,则将自己进行中断挂起。

    安全区域(Safe Region)

    1、产生:当线程处于Sleepr状态或Blocked状态,这时候线程无法响应JVM 的中断请求,“走” 到安全点去中断挂起,JVM也不太可能等待线程被唤醒。对于这种情况,就需要安全区域(Safe Region) 来解决。

    2、概念:安全区域是指在一段代码片段中,对象的引用关系不会发生变化,在这个区域中的任何位置开始GC都是安全的。我们也可以把Safe Region 看做是被扩展了的Safepoint。

    3、实际执行时:
    1、当线程运行到Safe Region的代码时,首先标识已经进入了Safe Region,如果这段时间内发生GC,JVM会忽略标识为Safe Region状态的线程;

    2、当线程即将离开Safe Region时, 会检查JVM是否已经完成GC,如果完成了,则继续运行,否则线程必须等待直到收到可以安全离开SafeRegion的信号为止

    看完面试就够了-- JVM垃圾回收篇(Garbage Collection)分享 【图文并茂】

    有用点个关注,手留余香! 😐 😐 😐

    展开全文
  • 安全点与安全区域详解

    千次阅读 2019-06-18 22:52:00
    对于这种情况,就需要安全区域(SafeRegin)来解决了。 在线程执行到Safe Region中的代码时,首先标识自己已经进入了Safe Region,那样,当在这段时间里JVM要发起GC时,就不用管标识自己为Safe Region状态的线程了...

    对于之前GC垃圾收集器的学习回忆【https://www.cnblogs.com/webor2006/p/10982448.html】一下都有哪些垃圾收集器:

    接下来则会对CMS这种超级复杂的一个垃圾回收器进行一个学习,相比serial收集器还是parallel收集器,CMS这种收集器无论是在处理的阶段上,还是在它的实现的复杂性上,都远远的要超过我们之前所接触过的各种各样的其它垃圾回收器,CMS的复杂性体现是多方面的:首先是它的源代码是非常复杂,在新版本的JDK中已经将CMS这个垃圾回收器标记为@Deprecated的了, 对于为啥会将它标记为@Deprecated在国外twtter上有这么一个“段子”,原因是由于当时编写CMS的人已经离职了,离职之后新接手的人是无论如何也看不懂CMS的C++源代码,所以从侧面也能反应CMS垃圾收集器是有多么的复杂。 对于我们而言不管代码实现上是如何的复杂,首先得从原理上去理解CMS这种垃圾回收器到底是做什么事情的?到底有什么特点为啥它这么复杂?为啥如此复杂的回收器还能广泛的存在于各个版本的JDK当中?像咱们实现用的JDK8也是可以正常去使用这个CMS回收器的,只要在JVM的启动参数上加上相应CMS回收器也能正常使用了。CMS是隶属于老年代的垃圾回收器,而新生代基本上都会采用复制算法,无论是serial收集器还是parallel收集器,所以在新生代中就会存在一个Eden区域和两个Survivor【From、To】区域,而在老年代中一般是会使用标记-清除【mark-sweep】或标记-整理算法【mark-compact】,所以接下来会来理解CMS垃圾回收器的基本原理,而首先对它的理论的了解是助于我们能了解其原理的基础,所以。。直接硬着头皮来了解理论:

    枚举根节点:

    当执行系统停顿下来之后,并不需要一个不漏地检查完所有执行上下文和全局的引用位置,虚拟机应当是有办法直接得知哪些地方存放着对象引用。在HotSpot的实现中,是使用一组称为OopMap的数据结构来达到这个目的的。

     

    安全点:

    关于这个概念其实在之前理论的学习中是已经提到过的,回忆一下:

    所以接下来了解一下这个概念。

    • 在OopMap的协助下,HotSpot可以快速且准确地完成GC Roots枚举,但一个很现实的问题随之而来:可能导致引用关系变化,或者说OopMap内容变化的指令非常多,如果为每一条指令都生成对应的OopMap,那将会需要大量的额外空间,这样GC的空间成本将会变得更高。
    • 实际上,HotSpot并没有为每条指令都生成OopMap,而只是在“特定的位置”记录了这些信息,这些位置称为安全点(Safepoint) ,既程序执行时并非在所有地方都能停顿下来开始GC,只有在达到安全点时才能暂停。这里解释一下:当JVM遇到空间不够的时候会执行垃圾回收,但并不是在系统的任何时刻都可以执行垃圾回收,必须要等到程序执行到一个称之为安全点这样的一个位置上才可以进行GC。
    • Safepoint的选定既不可能太少以至于让GC等待时间太长,也不能过于频繁以至于过分增大运行时的负载。所以,安全点的选定基本上是以“是否具有让程序长时间执行的特征”为标准进行选定的----因为每条指令执行的时间非常短暂,程序不太可能因为指令流长度太长这个原因而过长时间执行,“长时间执行”的最明显特征就是指令序列复用,例如方法调用、循环跳转、异常跳转等,所以具有这些功能的指令才会产生Safepoint。
    • 对于Safepoint,另一个需要考虑的问题是如何在GC发生时让所有线程(这里不包括执行JNI调用的线程)都“跑”到最近的安全点上再停顿下来:抢占式中断(Preemptive Suspension)和主动式中断(Voluntary Suspension)。
    • 抢占式中断:它不需要线程的执行代码主动去配合,在GC发生时,首先把所有线程全部中断,如果有线程中断的地方不在安全点上,就恢复线程,让它“跑”到安全点上。
    • 主动式中断:当GC需要中断线程的时候,不直接对线程操作,仅仅简单地设置一个标志,各个线程执行时主动去轮循这个标志,发现中断标志为真时就自己中断挂起。轮循标志的地方和安全点是重合的【这个很关键,这样通过标志来中断刚好是在安全点上发生的】,另外再加上创建对象需要分配内存的地方。注意:现在几乎没有虚拟机采用抢占式中断来暂停线程从而响应GC事件。

    安全区域:

    • 在使用Safepoint似乎已经完美地解决了如何进入GC的问题,但实际上情况却并不一定。Safepoint机制保证了程序执行时,在不太长的时间内就会遇到可进入GC的Safepoint。但如果程序在“不执行”的时候呢?所谓程序不执行就是没有分配CPU时间,典型的例子就是处于Sleep状态或者Blocked状态,这时候线程无法响应JVM的中断请求,JVM也显示不太可能等待线程重新分配CPU时间。对于这种情况,就需要安全区域(SafeRegin)来解决了。
    • 在线程执行到Safe Region中的代码时,首先标识自己已经进入了Safe Region,那样,当在这段时间里JVM要发起GC时,就不用管标识自己为Safe Region状态的线程了,在线程要离开Safe Region时,它要检查系统是否已经完成了根节点枚举(或者是整个GC过程),如果完成了,那线程就继续执行,否则它就必须等待直到收到可以安全离开Safe Region的信号为止。

    以上的理论确实是有点头大,木关系,之后慢慢会通过实践再来理解的~~

    转载于:https://www.cnblogs.com/webor2006/p/11048407.html

    展开全文
  • 有办法,就是此处的安全点和安全区域。 1.什么是安全点Safe Point 程序执行时并非在所有地方都能停顿下来开始GC , 只有在特定的位置才能停顿下来开始GC , 这些位置称为“ 安全点(Safepoint)。 2.安全点的选择 ...
  • 福哥答案2020-12-04: 安全点 用户线程暂停,GC 线程要开始工作,但是要...主动式中断是设置一个标志,这个标志是中断标志,各业务线程在运行过程中会不停的主动去轮询这个标志,一旦发现中断标志为 True,就会在自己
  • JVM虚拟机如何枚举根节点:原理、安全点和安全区域 枚举根节点——可作为GC Roots的节点 可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表) 枚举根节点——...
  • 当线程执行到安全区域时,首先标识自己已进入安全区域,那样,当在这段时间里JVM要发起GC时,就不用管标识自己为“安全区域”状态的线程了,该线程只能乖乖的等待根节点枚举或者整个GC过程完成之后才能继续执行。...
  • 向AI转型的程序员都关注了这个号????????????机器学习AI算法工程 公众号:datayx该项目是使用 YOLOv5 来训练在智能工地安全领域中头盔目标检测的应用代码及运行教...
  • 深入JVM内存区域

    千次阅读 2015-11-12 12:22:56
    JVM内存区域的划分和C/C++开发不同,在从事JAVA的开发过程中,我们对内存区域的关注相对较轻,但是了解和掌握JAVA的内存结构会帮助我们做出合理的优化决策。
  • 文件描述符标志、文件状态标志

    千次阅读 2018-03-09 13:39:50
    FD_CLOSEEXEC带来的安全问题 二、文件状态标志 文件状态标志分类 三、打开文件的内核数据结构图 四、接口函数 open dup/dup2:复制一个现有的文件描述符 fcntl:改变已打开文件的属性(只需提供fd即可) ...
  • 深入理解Java虚拟机-Java内存区域与内存溢出异常

    万次阅读 多人点赞 2020-01-03 21:42:24
    文章目录概述运行时数据区域程序计数器(线程私有)Java虚拟机栈(线程私有)局部变量表操作数栈动态链接方法返回地址小结本地方法栈(线程私有)Java堆(全局共享)方法区(全局共享)运行时常量池直接内存HotSpot...
  • Android系统的安全设计与架构

    千次阅读 2016-01-22 13:35:11
    Android系统的安全设计与架构一、安全...2、安全边界,有时也会称为信任边界,是系统中分隔不同信任级别的特殊区域。 一个最直接的例子就是内核空间与用户空间之间的边界。内核空间中的 代码可以对硬件执行一些底层操
  • TCP标志位详解(TCP Flag)

    万次阅读 多人点赞 2017-09-14 11:38:12
    TCP的Flag(标志位) 每个TCP段都有一个目的,这是借助于TCP标志选项来确定的,允许发送方或接收方指定哪些标志应该被使用,以便段被另一端正确处理。 您可以看到在3次握手(SYN,ACK)和数据传输期间使用的2个标志...
  • 这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文分享了威胁情报分析,通过Python抓取FreeBuf网站“APT”主题的相关文章。这篇文章将...
  • 汽车标志大全

    万次阅读 2011-06-05 11:00:00
    进口标志大全A 奥迪奥迪标志(AUDI)的创建历史可追溯至整整100年以前。在18世纪末,德国便已有30多家汽车制造厂。查看更多 > 阿斯顿马丁阿斯顿马丁(AstonMartin)原是英国豪华轿车、跑车生产厂。建于1913年。查看更...
  • 华为防火墙安全策略

    千次阅读 2020-12-11 10:48:39
    平时我们上班乘坐地铁,出差乘坐高铁或飞机,在这三个场所中都会有蓝色的标志“Security Check”,旁边站着一个工作人员“安检员”。他的作用就是检查乘客随身携带的物品是否安全,如安全放行通过,如不安全,拒绝...
  • 什么是线程安全?如何保证线程安全

    千次阅读 多人点赞 2019-05-27 23:22:44
    什么是线程安全 参考: 《Java并发编程实践》中对线程安全的定义: 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作...
  • JVM的内存形式:   (1)方法区:存放了要加载的类的信息(名称,修饰符等)、类中的静态变量...方法区域也是全局共享的,在一定条件下它也会被GC,当方法区域要使用的内存超过其运行的大小时,会抛出OutOfMemo
  • 网络安全-防火墙知识点

    千次阅读 2019-08-20 21:25:57
    定义:是一款具备安全防护功能网络设备 隔离网络:将需要保护的网络与不可信任网络进行隔离,隐藏信息并进行安全防护 二.防火墙的基本功能 访问控制攻击防护冗余设计路由、交换日志记录虚拟专网VPNNAT 三.防火墙...
  • 前言:一般我们在公共场合都看的到消防安全提示性标志标识、建筑安全疏散标识(平面图的形式)、安全出口指示标识,消防应急灯,消防专用通道标识,消火栓标识,灭火器箱外的标识等,另外带自动灭火系统建筑的相关...
  • 详解 Java 内存区域

    千次阅读 2021-01-18 14:39:18
    运行时数据区域2.1. 程序计数器2.2. Java 虚拟机栈2.3. 本地方法栈2.4 堆2.5 方法区直接内存方法区和永久代的关系为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 1. 概述 对于 Java 程序员来说,在虚拟机...
  • 网络安全面试题

    万次阅读 多人点赞 2019-02-12 15:42:14
    在当今社会网络安全行业越来越发达,也有越来越多的人去学习,为了更好地进行工作,除了学好知识外还要应对企业的面试。 所以在这里我归总了一些网络安全方面的常见面试题,希望对大家有所帮助。 windows常见 ...
  • 在互联网上,防火墙是一种非常有效的网络安全系统,通过它可以隔离风险区域(Internet或有一定风险的网络)与安全区域(局域网)的连接,同时不会妨碍安全区域对风险区域的访问。可见,不管古代和今天的防火墙,在...
  • 网络空间安全——总结

    千次阅读 2020-03-12 17:41:36
    系统而全面的了解网络空间安全方面的基础知识、认识安全隐患、掌握相应的防范方法、提高大家的安全意识。 课程重点: 勾勒网络空间安全的框架。 课程内容安排: 安全法律法规 物理设备安全 网络攻防技术 恶意...
  • Java内存区域讲解

    千次阅读 2020-02-01 16:03:34
     ·介绍下 Java 内存区域(运行时数据区)  ·Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)  ·对象的访问定位的两种方式(句柄和直接指针两种方式)  拓展问题  ·String...
  • Java内存区域与内存溢出

    千次阅读 2020-02-09 17:27:55
    内存初始化后,JVM需要对对象进行一些必要的设置,例如:类型指针、哈希码、GC年龄, 锁标志、偏向线程ID、偏向时间戳等,这些数据保存在对象的对象头(Object Header)中。 这些工作全部完成以后,对于JVM而言一个...
  • 如果你想成为一名逆向分析或恶意代码检测工程师,或者对系统安全非常感兴趣,就必须要认真分析一些恶意样本。熊猫烧香病毒就是一款非常具有代表性的病毒,当年造成了非常大的影响,并且也有一定技术手段。本文将详细...
  • 题库来源:安全生产模拟考试一点通公众号小程序 2020C证(安全员)考试试题及C证(安全员)考试软件,包含C证...2、【判断题】施工现场应当根据工程特点,有针对性地设置、悬挂安全标志。(√) 3、【判断题】挡土墙...
  • C/C++中程序内存区域划分大总结

    千次阅读 2016-03-28 19:24:05
    程序由代码和数据组成,其中代码存储在代码区中,数据根据类型的不同存储在不同的区域中。本文分别介绍了C和C++中内存区域的划分。 C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,528
精华内容 25,811
关键字:

安全区域标志