精华内容
下载资源
问答
  • const a = a || {} 这句话的意思是: 如果 a 具有真值(不是undefned,null,NAN,false,0中...大多数浏览器处理此异常的方法是停止执行其后的js代码。 所以预先处理好可能发生这种异常的情况,属于一种异常处理机制。 ...
    const a = a || {}
    

    这句话的意思是:
    如果 a 具有真值(不是undefned,null,NAN,false,0中的任意一 种) ,则这个a可以被使用 。

    否则将 a 定义为一个空的object对象 {}

    这样做的目的是,如果a没有被定义,在下面的代码里如果使用到变量a,浏览器将会抛出 xxx is undefined 的异常。大多数浏览器处理此异常的方法是停止执行其后的js代码。

    所以预先处理好可能发生这种异常的情况,属于一种异常处理机制。

    展开全文
  • On Error Resume Next是什么意思

    千次阅读 2005-07-08 12:00:00
    On Error Resume Next的意思是如果发生错误就继续直接执行出错语句下面的那句。一般的,如果出错,VB会报告并停止运行,但有时错误并严重,不会产生严重影响,你可以在可能出错的语句前面加上这句。但是如果错误很...
       On Error Resume Next的意思是如果发生错误就继续直接执行出错语句下面的那句。一般的,如果出错,VB会报告并停止运行,但有时错误并不严重,不会产生严重影响,你可以在可能出错的语句前面加上这句。但是如果错误很严重,会影响到后续语句,就不要使用这个方法了。
    展开全文
  • 首先要知道 Stop the world的含义(网易面试):不管选择哪种GC算法,stop-the-world都是不可避免的。Stop-the-world意味着从应用中停下来并进入到GC执行过程中去。一旦Stop-the-world发生,除了GC所需的线程外,其他...

    首先要知道 Stop the world的含义(网易面试):不管选择哪种GC算法,stop-the-world都是不可避免的。Stop-the-world意味着从应用中停下来并进入到GC执行过程中去。一旦Stop-the-world发生,除了GC所需的线程外,其他线程都将停止工作,中断了的线程直到GC任务结束才继续它们的任务。GC调优通常就是为了改善stop-the-world的时间 

    CMS收集器是一种以获取最短回收停顿时间为目标的收集器,CMS收集器是基于“”标记--清除”(Mark-Sweep)算法实现的,整个过程分为四个步骤: 

              1. 初始标记 (Stop the World事件 CPU停顿, 很短) 初始标记仅标记一下GC Roots能直接关联到的对象,速度很快;

               2. 并发标记 (收集垃圾跟用户线程一起执行) 初始标记和重新标记任然需要“stop the world”,并发标记过程就是进行GC Roots Tracing的过程;

               3. 重新标记 (Stop the World事件 CPU停顿,比初始标记稍微长,远比并发标记短)修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段稍长一些,但远比并发标记时间短

               4. 并发清理 -清除算法;

      整个过程中耗时最长的并发标记和并发清除过程收集器线程都可以与用户线程一起工作,所以,从总体上来说,CMS收集器的内存回收过程是与用户线程一起并发执行的。 

    初始标记:仅仅是标记一下GC roots 能直接关联的对象,速度很快  (何为GC roots :

    在Java语言中,可作为GC Roots的对象包括4种情况:

      a) 虚拟机栈中引用的对象(栈帧中的本地变量表);

      b) 方法区中类静态属性引用的对象;

      c) 方法区中常量引用的对象;

      d) 本地方法栈中JNI(Native方法)引用的对象。

    具体参考:JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)) 

    CMS是一款优秀的收集器,它的主要优点是:并发收集、低停顿,但他有以下3个明显的缺点:

    优点:并发收集,低停顿 

    理由:由于在整个过程和中最耗时的并发标记和 并发清除过程收集器程序都可以和用户线程一起工作,所以总体来说,Cms收集器的内存回收过程是与用户线程一起并发执行的

    缺点:

       1.CMS收集器对CPU资源非常敏感 

          在并发阶段,虽然不会导致用户线程停顿,但是会因为占用了一部分线程使应用程序变慢,总吞吐量会降低,为了解决这种情况,虚拟机提供了一种“增量式并发收集器” 

    的CMS收集器变种, 就是在并发标记和并发清除的时候让GC线程和用户线程交替运行,尽量减少GC 线程独占资源的时间,这样整个垃圾收集的过程会变长,但是对用户程序的影响会减少。(效果不明显,不推荐) 

      2. CMS处理器无法处理浮动垃圾 

          CMS在并发清理阶段线程还在运行, 伴随着程序的运行自然也会产生新的垃圾,这一部分垃圾产生在标记过程之后,CMS无法再当次过程中处理,所以只有等到下次gc时候在清理掉,这一部分垃圾就称作“浮动垃圾” , 

     3. CMS是基于“标记--清除”算法实现的,所以在收集结束的时候会有大量的空间碎片产生。空间碎片太多的时候,将会给大对象的分配带来很大的麻烦,往往会出现老年代还有很大的空间剩余,但是无法找到足够大的连续空间来分配当前对象的,只能提前触发 full gc。 

        为了解决这个问题,CMS提供了一个开关参数,用于在CMS顶不住要进行full gc的时候开启内存碎片的合并整理过程,内存整理的过程是无法并发的,空间碎片没有了,但是停顿的时间变长了  

    ------------------------------------------------------------------------------------------------------------------  

    G1(Garbage First)是一款面向服务端应用的垃圾收集器。G1具备如下特点:

    5、G1运作步骤:

    1、初始标记(stop the world事件 CPU停顿只处理垃圾);

    2、并发标记(与用户线程并发执行);

    3、最终标记(stop the world事件 ,CPU停顿处理垃圾);

    4、筛选回收(stop the world事件 根据用户期望的GC停顿时间回收)(注意:CMS 在这一步不需要stop the world)(阿里问为何停顿时间可以设置,参考:G1 垃圾收集器架构和如何做到可预测的停顿(阿里))

    与其他GC收集器相比,G1具备如下特点:

    1、并行于并发:G1能充分利用CPU、多核环境下的硬件优势,使用多个CPU(CPU或者CPU核心)来缩短stop-The-World停顿时间。部分其他收集器原本需要停顿Java线程执行的GC动作,G1收集器仍然可以通过并发的方式让java程序继续执行。

    2、分代收集:虽然G1可以不需要其他收集器配合就能独立管理整个GC堆,但是还是保留了分代的概念。它能够采用不同的方式去处理新创建的对象和已经存活了一段时间,熬过多次GC的旧对象以获取更好的收集效果。

    3、空间整合:与CMS的“标记--清理”算法不同,G1从整体来看是基于“标记整理”算法实现的收集器;从局部上来看是基于“复制”算法实现的

    4、可预测的停顿:这是G1相对于CMS的另一个大优势,降低停顿时间是G1和CMS共同的关注点,但G1除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用者明确指定在一个长度为M毫秒的时间片段内,

    上面几个步骤的运作过程和CMS有很多相似之处。初始标记阶段仅仅只是标记一下GC Roots能直接关联到的对象,并且修改TAMS的值,让下一个阶段用户程序并发运行时,能在正确可用的Region中创建新对象,这一阶段需要停顿线程,但是耗时很短,并发标记阶段是从GC Root开始对堆中对象进行可达性分析,找出存活的对象,这阶段时耗时较长,但可与用户程序并发执行。而最终标记阶段则是为了修正在并发标记期间因用户程序继续运作而导致标记产生变动的那一部分标记记录,虚拟机将这段时间对象变化记录在线程Remenbered Set Logs里面,最终标记阶段需要把Remembered Set Logs的数据合并到Remembered Set Logs里面,最终标记阶段需要把Remembered Set Logs的数据合并到Remembered Set中,这一阶段需要停顿线程,但是可并行执行。最后在筛选回收阶段首先对各个Region的回收价值和成本进行排序,根据用户所期望的GC停顿时间来制定回收计划。

    G1垃圾回收器其实是JDK7的特性,在目前JDK10都已经发布的情况下,已经不是什么新特性了,而我到它现在才关注它,可见我是有多么的懒;而我终于关注它了,可见我的懒还算是有救的 :)

    G1其实是Garbage First的意思,垃圾优先? 不是,是优先处理那些垃圾多的内存块的意思。在大的理念上,它还是遵循JVM的内存分代假设(其实叫假设不准确,这是从实际Java应用的内存使用观察得到的结论):

    90%的对象熬不过第一次垃圾回收,而老的对象(经历了好几次垃圾回收的对象)则有98%的概率会一直活下来。

    基于这个分代假设,一般的垃圾回收器把内存分成三类: Eden(E), Suvivor(S)和Old(O), 其中Eden和Survivor都属于年轻代,Old属于老年代,新对象始终分配在Eden里面,熬过一次垃圾回收的对象就被移动到Survisor区了,经过数次垃圾回收之后还活着的对象会被移到Old区。c9dec1745cb19bbe37dcf058b484a38a.png

    一般GC的内存分布

    这样分代的好处是,把一个复杂的大问题,分成两类不同的小问题,针对不同的小问题,采用更有针对性的措施(分而治之):

    • 对于年轻代的对象,由于对象来的快去得快,垃圾收集会比较频繁,因此执行时间一定要短,效率要高,因此要采用执行时间短,执行时间的长短只取决于对象个数的垃圾回收算法。但是这类回收器往往会比较浪费内存,比如Copying GC,会浪费一半的内存,以空间换取了时间。

    • 对于老年代的对象,由于本身对象的个数不多,垃圾收集的次数不多,因此可以采用对内存使用比较高效的算法。

    跟其它垃圾回收器不一样的是:G1虽然也把内存分成了这三大类,但是在G1里面这三大类不是泾渭分明的三大块内存,G1把内存划分成很多小块, 每个小块会被标记为E/S/O中的一个,可以前面一个是Eden后面一个就变成Survivor了。

    47786454287711c55218f43dac8bb0ef.png

    G1的内存分布

    这么做给G1带来了很大的好处,由于把三块内存变成了几百块内存,内存块的粒度变小了,从而可以垃圾回收工作更彻底的并行化。

    G1的并行收集做得特别好,我们第一次听到并行收集应该是CMS(Concurrent Mark & Sweep)垃圾回收算法, 但是CMS的并行收集也只是在收集老年代能够起效,而在回收年轻代的时候CMS是要暂停整个应用的(Stop-the-world)。而G1整个收集全程几乎都是并行的,它回收的大致过程是这样的:

    • 在垃圾回收的最开始有一个短暂的时间段(Inital Mark)会停止应用(stop-the-world)

    • 然后应用继续运行,同时G1开始Concurrent Mark

    • 再次停止应用,来一个Final Mark (stop-the-world)

    • 最后根据Garbage First的原则,选择一些内存块进行回收。(stop-the-world)

    由于它高度的并行化,因此它在应用停止时间(Stop-the-world)这个指标上比其它的GC算法都要好。

    G1的另一个显著特点他能够让用户设置应用的暂停时间,为什么G1能做到这一点呢?也许你已经注意到了,G1回收的第4步,它是“选择一些内存块”,而不是整代内存来回收,这是G1跟其它GC非常不同的一点,其它GC每次回收都会回收整个Generation的内存(Eden, Old), 而回收内存所需的时间就取决于内存的大小,以及实际垃圾的多少,所以垃圾回收时间是不可控的;而G1每次并不会回收整代内存,到底回收多少内存就看用户配置的暂停时间,配置的时间短就少回收点,配置的时间长就多回收点,伸缩自如。(阿里面试)

    由于内存被分成了很多小块,又带来了另外好处,由于内存块比较小,进行内存压缩整理的代价都比较小,相比其它GC算法,可以有效的规避内存碎片的问题。

    说了G1的这么多好处,也该说说G1的坏处了,如果应用的内存非常吃紧,对内存进行部分回收根本不够,始终要进行整个Heap的回收,那么G1要做的工作量就一点也不会比其它垃圾回收器少,而且因为本身算法复杂了一点,可能比其它回收器还要差。因此G1比较适合内存稍大一点的应用(一般来说至少4G以上),小内存的应用还是用传统的垃圾回收器比如CMS比较合适。

    总结

    G1通过在垃圾回收领域应用并行化的策略,把几块大内存块的回收问题,变成了几百块小内存的回收问题,使得回收算法可以高度并行化,同时也因为分成很多小块,使得垃圾回收的单位变成了小块内存,而不是整代内存,使得用户可能对回收时间进行配置,垃圾回收变得可以预期了。

    分而治之、化整为零这些朴素的架构思想往往是很多牛叉技术产品背后的思想根源啊。

    展开全文
  • /**************** 以下所有子函数的声明 *********************/ void clockplus(void); /* 时间加 1S 的子程序 */ void update_clockstr(void); /* 更新时间显示编码 */ void update_alartstr...
  • 一、思考❓❔1.什么是debug?找茬找软件的茬发现程序的缺陷2.为什么需要debug?...控制程序的执行想停则停,想执行执行随心所欲设置断点在指定位置停止查看当前命名空间(程序栈)中变量二、Pytho...

    一、思考❓❔

    1.什么是debug?

    找茬

    找软件的茬

    发现程序的缺陷

    2.为什么需要debug?

    谁都不敢保证,写的代码没有任何问题

    高效查找软件异常

    一位优秀的开发工程师

    20%的时间写代码

    80%的时间用来排错

    “不会debug” == “不会代码” == “低工资”

    3.debug工具需要具备哪些功能?

    控制程序的执行

    想停则停,想执行则执行

    随心所欲

    设置断点

    在指定位置停止

    查看当前命名空间(程序栈)中变量

    二、Python中的Debug大法📐

    案例代码如下所示:

    创建deubg_skills_demo.py文件

    import time

    from DebugSkills.gifts import send_gift

    def say_love(name, talk):

    print(f"{name}: {talk}!")

    print(show(3))

    print(f"{send_gift()}, 能代表我的心!")

    def show(num):

    print(f"{'轰隆' * num}!")

    print(f"{'⚡' * num}")

    return "还敢再发誓吗?"

    def long_long_ago(name, talk):

    # breakpoint()

    print("\nlong long ago...")

    print("当初没被雷劈死的原因既然是爱错了那个她/他")

    print(f"{name}: {talk}!")

    print(show(4))

    print(f"{send_gift()}, 能代表我的心!")

    if __name__ == '__main__':

    lover = input("请输入你爱的人: ")

    love_talk = input("请输入爱的箴言: ")

    # 方法一:

    # import pdb

    # pdb.set_trace()

    # 方法二:

    # breakpoint()

    breakpoint()

    say_love(lover, love_talk)

    time.sleep(5)

    lover = input("\n请输入你爱的人: ")

    love_talk = input("请输入爱的箴言: ")

    long_long_ago(lover, love_talk)

    创建gifts.py文件

    import random

    gifts = ["99朵玫瑰", "钻戒", "马尔代夫三十日游",

    "北京二环内的一套厕所", "玛莎拉蒂车钥匙",

    "免费自行车司机"]

    def send_gift():

    """

    送礼物

    :return:

    """

    one_gift = random.choice(gifts)

    return one_gift

    1.pdb操作 (^_-)-☆

    系统自带的debug工具(无需安装)

    将以下代码放在需要调试的地方(类似于设置断点)

    # 通用方法

    import pdb; pdb.set_trace()

    # Python3.6以上版本

    breakpoint()

    当程序执行到上述代码所在位置时,会自动开启一个console终端

    "->"是接下来要执行的代码(当前还未执行)

    可以在终端运行的命令

    list或者l

    显示当前运行的代码

    默认列出11行代码

    p 变量名 或者 p 需要运行的表达式

    打印变量的值

    step或者s

    如果在函数调用处执行,则会进入函数体内部

    next或者n

    如果在函数调用处执行,则不会进入函数体内部

    enter

    重复执行上一次的命令

    b(reak) [ ([filename:]lineno | function) [, condition] ]

    设置断点

    filename可选,如果不传,默认在当前文件设置断点

    c或者continue

    继续往下运行,在下一个断点处停下来

    disable 断点编号

    禁用断点

    enable 断点编号

    启用断点

    cl或者clear 断点编号

    清除断点

    display或者undisplay 变量

    监听或者不监听某个变量

    如果变量值改变,会自动显示

    h或者help

    帮助信息

    h 具体命令

    具体命令的帮助文档

    h pdb

    pdb的完整文档

    三、Pycharm debug操作🔨🔨

    1.打开Python Prompt

    会出现一个ipython的控制台

    可在控制台查看当前命名空间中的变量

    也可执行Python表达式

    2.Step Over / F8

    按调试工具栏中的

    类似于pdb中的next

    程序不会进入到函数体内部

    3.Step Into / F7

    按调试工具栏中的

    类似于pdb中的step

    程序会进入到函数(方法)体内部、系统源码、第三方模块源码中

    4.Step Out / Shift+F8

    从函数体内部跳出

    5.Step Into My Code / ALT+Shift+F7

    按调试工具栏中的

    主要关注自己写的代码

    从系统源码、第三方模块源码中跳到自己写的代码中

    6.Evaluate Expression

    在当前命名空间内计算表达式的值

    7.Quick Evaluate Expression

    快速计算表达式的值

    8.Watching

    类似于pdb中的display

    可以监听某个变量或者表达式的值

    四、总结💡💡

    作为代码编写者,掌握代码的调试技巧是必备的

    能提升工作效率,提高代码质量

    Python中Debug调试工具和技巧非常多

    最常用、最实用的知识点,本文均有覆盖

    展开全文
  • 什么是异常

    2019-11-30 15:45:58
    异常 :指的程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 在Java等面向对象的编程语言中,异常本身一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式中断...
  • 严正声明:在linux下面使用命令行操作时,一定要懂得命令行的意思,然后再执行,要不然在知道接下来会发生什么的情况下输入一通命令,linux很有可能崩掉。因为在linux下面,使用sudo以及root权限时,可以对任意...
  • 1、throws捕获并向外抛出异常 2、throw抛出异常 其中throws与throw的区别: throws关键字通常被应用在声明方法时,用来指定可能抛出的...程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异
  • 什么是cpu/cache stall

    2020-03-28 18:24:38
    stall的概念:它是停止运转的意思,发生在当cpu执行时,所需要的数据却在寄存器或cache中,需要去装载内存的数据,这期间有一个等待,这里叫做stall。这个时间大概several hundred clock cycles。 现代操作系统...
  • 目录1. 异常的概述与体系1.1 异常的概述1.2 异常的体系及分类2. 异常的产生及处理2.1 ...异常,就是正常的意思,在程序中的意思是:在程序执行过程中,出现的非正常情况,最终会导致JVM的非正常停止 在Java等面向对
  • 这个视图对应的控制器 ...$digest方法触动脏检查的方法,为什么不直接用这个呢,因为$apply会在执行时,运行一个eval语句,如果出错就会停止执行了,这样保证逻辑的安全性 转载于:https://www...
  • removeMessages会将handler对应message queue里的消息清空,如果带了int参数则对应的消息清空。...1、这个方法使用的前提之前调用过sendEmptyMessageDelayed(0, time),意思是延迟time执行hand...
  • 异常,就是正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响。 那么在程序中,异常是什么样子的呢? 让我们一起来看看吧。 1.1. 异常概念 异常 :指的是程序...
  • 停止动画并不是恢复到该动画执行前的状况,而是直接停止,当前动画执行什么状态,就停留在什么状态。 用法: $('#ceshi li').mouseover(function () { $(this).siblings().stop().fadeTo(500,0.1);//颜色深浅通过...
  • c语言的return的作用

    2017-03-30 12:38:00
    return 0 是什么意思? 1:停止执行,直接跳出到调用函数那里,下面的语句执行(可以这样理解)。举个很简单的例子 1 #include<stdio.h> 2 int add(int a,int b) 3 { 4 int c,d; 5 c=a+b; 6 ...
  • 时钟周期=1000是什么意思?时钟周期事件每秒执行一次:1000=1秒,10000=10秒,依此类推。时钟停止是时钟1。时钟周期=0,而不是时钟1。禁用=真。时钟是计时器的意识。定期执行一段代码。这个间隔就是时钟周期。执行的...
  • 多线程理解,线程

    2012-03-31 18:12:06
    最近在玩安卓,要提到多线程, 总感觉那东西有点明白,总是有那些停止,暂停,销毁,启动什么的,总是执行那些程序,先后,快慢,说实话,知道那是什么意思的, 个人感觉多线程并不是什么情况下都适用的,一般用在定时功能...
  • Java异常笔记

    2019-04-01 17:31:28
    异常笔记 什么是异常? 异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 其实异常本身也是一个类。 ...注意:异常不是语法错误,语法错误是无法通过编译...分别是什么意思? Erro...
  • 当你知道了代码的执行步骤后,你就需要知道每条语句是什么意思,比如赋值啊,加减乘除取余等等,每条的语句功能知道了你才能明白整块代码大致是干什么的。 ### 3:【重点】试数 为什么我认为试数是重点?因为当你...
  • 的意思在后台运行, 什么意思呢? 意思说, 当你在执行 ./a.out & 的时候, 即使你用ctrl C, 那么a.out照样运行(因为对SIGINT信号免疫)。 但是要注意, 如果你直接关掉shell后, 那么, a.out进程同样消失...
  • 关于SQL的XACT_ABORT属性

    千次阅读 2017-03-31 08:55:39
    默认XACT_ABORT=OFF的情况下,语句不管什么情况,遇到什么错误,反正错误了也继续执行,意思为错也回头。 在XACT_ABORT=ON的情况下,语句遇到一个错误就停止执行并回滚错误: 关键这个事务联系起来,一个事务...
  • 中断是什么 意思就是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。 中断是一种计算机术语。通俗点说就是停下...
  • SqlServer中XACT_ABORT函数

    千次阅读 2018-03-20 16:24:02
    XACT_ABORT原意精确终止其实在SQL运行中很好理解默认XACT_ABORT=OFF的情况下,语句不管什么情况,遇到什么错误,反正错误了也继续执行,意思为错也回头。在XACT_ABORT=ON的情况下,语句遇到一个错误就停止执行并...
  • 后打开另一个窗口,一个打开另一个窗口而自身消失。可以看到他们实现的 方法不同的。 三、Qt Creator 登录对话框(原创) 实现功能: 在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确...
  • 中断一种协作机制,一个线程能强制其他线程停止正在执行的操作而去执行其他操作。 什么是中断状态? 线程类有一个描述自身是否被中断了的boolean类型的状态,可以通过调用 .isInterrupted() 方法来查看。官方...
  • Java中异常知识点总结

    2021-01-19 16:25:29
    指的程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。 在Java等面向对象的编程语言中,异常本身一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式中断处理。 ...
  • 异常,线程

    2018-09-12 19:06:37
    异常就是我们生活中正常的意思,在程序执行中,出现的非正常情况,最终会导致JVM的非正常停止,这就是程序的异常. 在JAVA等面向对象的编程语言当中,异常本身一个类,产生异常就是创建异常对象,并抛出了一个异常对象,...

空空如也

空空如也

1 2 3 4
收藏数 63
精华内容 25
关键字:

不停止执行是什么意思