Sweep

Daily English Dictation Number Twelve

梦想的初衷 提交于 2020-09-26 00:57:32
以下内容同时会在微信公众号同步更新: 电子小彭友 (便于手机随时随地翻阅) Coach Shane 是美国的一位帮助热爱英语的人更好地掌握英语的老师,他的微博口号是:“Helping students master english !”。 据我所知,老师已经推出四个作品,按照难度级别分别是:E-cubed(Daily Easy English Expression日常英语轻松表达),Daily English Dictation(DD每日听写),DDM(Daily Dictation Members会员每日听写),PIRF(Pronunciation, Intonation, Rhythm and Flow发音、语调、节奏和流畅);其中DDM和PIRF是收费的,有志提高自己相应能力的朋友可以去听老师的课程,在老师的微博就可以找到报名链接(老师人挺不错,算是帮老师宣传一下吧)。在学习他的DD时,发现视频下面字幕不完整且有部分错误,我就尝试在网上找了一下资源,发现只有一个叫“译学馆”的网站上有DD的字幕(只做了五个视频且大量错误,有时间的同学可以去看一看我说的是这样的情况不)。于是我决定做把自己的分享出来,帮助大家在看Coach Shane老师的DD作品时有不懂的,可以来参照,哈哈。 Daily Dictation 12听写原文: 1936, Jim Henson, creator

面试官:你对JVM垃圾收集器了解吗?13连问你是否抗的住!

旧城冷巷雨未停 提交于 2020-08-20 06:52:05
关于JVM垃圾收集器的面试题 1、简述Java垃圾回收机制 2、GC是什么?为什么要GC 3、垃圾回收的优点和原理。并考虑2种回收机制 4、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 5、Java 中都有哪些引用类型? 6、怎么判断对象是否可以被回收? 7、在Java中,对象什么时候可以被垃圾回收 8、JVM中的永久代中会发生垃圾回收吗 9、说一下 JVM 有哪些垃圾回收算法? 10、说一下 JVM 有哪些垃圾回收器? 11、详细介绍一下 CMS 垃圾回收器? 12、新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别? 13、简述分代垃圾回收器是怎么工作的? 1、简述Java垃圾回收机制 在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。 2、GC是什么?为什么要GC GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存 回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动

面试官:你对JVM垃圾收集器了解吗?13连问你是否抗的住!

≡放荡痞女 提交于 2020-08-20 04:32:58
关于JVM垃圾收集器的面试题 1、简述Java垃圾回收机制 2、GC是什么?为什么要GC 3、垃圾回收的优点和原理。并考虑2种回收机制 4、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 5、Java 中都有哪些引用类型? 6、怎么判断对象是否可以被回收? 7、在Java中,对象什么时候可以被垃圾回收 8、JVM中的永久代中会发生垃圾回收吗 9、说一下 JVM 有哪些垃圾回收算法? 10、说一下 JVM 有哪些垃圾回收器? 11、详细介绍一下 CMS 垃圾回收器? 12、新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别? 13、简述分代垃圾回收器是怎么工作的? 1、简述Java垃圾回收机制 在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。 2、GC是什么?为什么要GC GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存 回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动

《深入理解JVM.2nd》笔记(三):垃圾收集器与垃圾回收策略

落花浮王杯 提交于 2020-08-15 07:19:08
概述 1960年诞生于MIT的Lisp是 第一门 真正使用 内存动态分配 和 垃圾收集技术 的语言。 当Lisp还在胚胎期,人们就在思考GC需要完成3件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 经过多年发展,垃圾收集器与内存分配技术日臻完善, 为什么还有去了解GC和内存分配 ? 因为当需要排查各种内存溢出、内存泄露问题时,当垃圾收集称为系统达到 更高并发量的瓶颈 时,就需要对这些“自动化”的技术实施必要的 监控 和 调节 。 在Java内存运行时区域中, PCR、 VM Stack、 Native Method Stack 3个区域与线程同生共死 。 栈中的栈帧随着方法的进入和退出而有条不紊地执行者出栈和入栈的操作。每一栈帧中分配多少内存基本上是在类结构确定下俩就已知的。 因此这几个区域内存分配和回收都具备确定性,所以无需多虑, 内存随着方法结束或者线程结束而回收 。 Java堆 和 方法区与这3区域的不同。 一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,这能在程序运行期间才能知道会创建哪些对象,这部分内存分配和回收都是动态。 GC所关注的是这部分内存。 对象已死吗 GC在堆进行回收前,第一件事就是要哪些对象是“活”的,哪些是“死”的。 引用计数算法 引用计数算法 Reference Counting 思路:给对象中添加一个

JVM系列(2)-GC

可紊 提交于 2020-08-15 04:43:20
1.什么是GC? 大白话说就是垃圾回收机制,内存空间是有限的,你创建的每个对象和变量都会占据内存,gc做的就是对象清除将内存释放出来,这就是GC要做的事。 2.需要GC的区域 说起垃圾回收的场所,了解过JVM(Java Virtual Machine Model)内存模型的朋友应该会很清楚,堆是Java虚拟机进行垃圾回收的主要场所,其次要场所是方法区。 3.堆内存的结构 Java将堆内存分为3大部分:新生代、老年代和永久代,其中新生代又进一步划分为Eden、S0、S1(Survivor)三个区 4.堆内存上对象的分配与回收: 我们创建的对象会优先在 Eden分配,如果是大对象(很长的字符串数组)则可以直接进入老年代。虚拟机提供一个 -XX:PretenureSizeThreadhold参数 ,令大于这个参数值的对象直接在老年代中分配,避免在 Eden区和两个Survivor区发生大量的内存拷贝。 另外, 长期存活的对象将进入老年代 ,每一次 MinorGC(年轻代GC) ,对象年龄就大一岁,默认 15岁晋升到老年代,通过 -XX:MaxTenuringThreshold设置晋升年龄。 堆内存上的对象回收也叫做垃圾回收,那么垃圾回收什么时候开始呢? 垃圾回收主要是完成 清理对象,整理内存 的工作。上面说到 GC经常发生的区域是堆区,堆区还可以细分为新生代、老年代

java内存结构笔记

只谈情不闲聊 提交于 2020-08-15 00:44:45
此篇仅作笔记,详情参考: https://my.oschina.net/uwith/blog/3110227 栈帧内部的结构:局部变量表、操作数栈(比如我们去赋值或者计算都会操作操作数栈)、动态链接、返回链接。 jvm为对象开辟空间的两种方式: 1、指针碰撞:如果内存空间是规整的有序的连续空间、每存放进去一个对象,对应的指针会向后移动一位。如果是多线程会使用cas锁(是在硬件cpu层面进行加锁)。 2、空闲列表:也就是内存空间不是连续的,会有一个列表指示那些空间是空闲的。 栈上分配:如果在方法中new出来一个对象,对象较小,且只有该方法使用,那么这个new出来的对象就会分配在栈上,而不是堆上。涉及到内存逃逸可以参看下面的链接: https://www.jianshu.com/p/7418a4451974 垃圾回收机制如何判断存活?:引用计数法、可达性算法(根搜索算法)。引用计数发解决不了循环依赖,导致垃圾无法回收。 可达性算法可以作为GCRoots的对象包括:虚拟机栈、方法区中类的静态属性引用对象、方法区中常量引用的对象、本地方法栈中的JNI 垃圾回收机制策略: 1、标记清除算法:碎片化严重。常用在老年代。 2、 标记复制算法 :能够解决碎片化问题但浪费空间。常用在新生代。 3、标记整理算法:也就标记压缩算法,会将标记的对象放在一块,进行挪动,保证空间连续性,解决磁盘碎片问题

科普下DDOS高防IP防御手段

隐身守侯 提交于 2020-08-14 16:29:07
科普下DDOS高防IP防御手段 遭到DDOS流量***不用担心,防护DDoS***CC***, 目前最有效的办法就是通过高防IP进行防御,有很多人对高防IP不解,今天我们来讲一下高防IP是什么,高防IP的原理又是什么呢? 什么是高防IP? 高防御IP是由大流量引起的DDoS***后由Internet服务器发起的付费增值业务,用户可以配置高防御IP,将***流量转移到高防IP上,以保证源站。稳定可靠。 高防ip是指高防御机房提供的ip段,主要用于保护网络中的DDoS***。在网络世界中,ip相当于服务器的门牌号,无论是访问还是管理服务器,都是通过ip。同样,如果网络***者想要对目标进行DDoS***,则需要知道目标的IP地址,并使用大量无效流量数据向IP服务器发出请求,导致服务器资源被大量占用并且无法提出正确的请求。响应。同时,大量无效数据也占用了IP所在服务器的带宽资源,导致信息被阻塞。 高防御IP防御包括但不限于以下类型:SYN Flood,UDP Flood,ICMP Flood,IGMP Flood,ACK Flood,Ping Sweep和CC。可以说它是互联网业务的重要产品。 高IP防御原则: 用户购买高防IP并解析域名到高防御IP(Web服务只需要将域名指向高防御IP。非Web服务,将服务IP转换为高防御IP)并设置高转发率-defense IP。规则

JVM 学习笔记(五)

让人想犯罪 __ 提交于 2020-08-12 02:21:22
前言:   前面的文件介绍了JVM的内存模型以及各个区域存放了那些内容,本编文章将介绍JVM中的垃圾回收Garbage Collector,和大家一起探讨一下。 如何确定一个对象是垃圾:   这里介绍两种方法: 引用计数法   对于某个对象而言,只要应用程序中持有该对象的引用,就说明该对象不是垃圾,如果一个对象没有任何指针对其引用,它就是垃圾。 可达性分析   通过GC Root的对象,开始向下寻找,看某个对象是否可达。能作为GC Root:类加载器、Thread、虚拟机栈的本地变量表、static成员、常量引用、本地方法 栈的变量等。 垃圾回收算法:   已经能够确定一个对象为垃圾之后,接下来要考虑的就是回收,怎么回收呢?得要有对应的算法,下面聊聊常见的垃圾回收算法。 标记-清除(Mark-Sweep) 标记   找出内存中需要回收的对象,并且把它们标记出来。此时堆中所有的对象都会被扫描一遍,从而才能确定需要回收的对象,比较耗时。 如图:绿色的区域表示当前存活的对象,灰色表示垃圾对象,白色表示没有用到的内存碎片。 2. 清除   清除掉被标记需要回收的对象,释放出对应的内存空间。 有以下缺点: 标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另 一次垃圾收集动作。 (1

无需gas即可归集ERC20的PHP开发包【SmartWallet】

只谈情不闲聊 提交于 2020-08-11 19:29:10
SmartWallet开发包适用于平台方高效完成对用户地址上的Ether/ERC20代币的归集工作,无需向用户地址注入Ether即可完成Ether/ERC20代币的归集。官方下载地址: 以太坊智能钱包PHP开发包 。 1、开发包概述 SmartWallet开发包的主要特点如下: 真正的平台型非托管钱包,平台无需管理大量用户地址的密钥并且没有安全性的损失 无需向用户地址注入Ether即可完成以太币/ERC20代币的归集,流程更简单,效率更高 支持在单一交易内完成多个用户地址的归集 SmartWallet运行于PHP 7.1+环境下,主要类以及其关系如下图所示: SmartWallet的主要代码文件清单见官网说明: http://sc.hubwiz.com/codebag/smartwallet-php/ 2、使用示例代码 2.1 部署工厂合约 SmartWallet开发包利用工厂合约SmartWalletFacotry管理用户地址的生成与归集。因此首先需要部署工厂合约。 示例代码 demo/deploy-contracts.php 展示了如何部署SmartWalletFactory合约以及一个用于演示的ERC20代币合约。 执行如下命令运行示例代码: php deploy-contracts.php 运行结果如下: 2.2 生成用户地址 示例代码 demo/generate-user

面试必问之jvm

与世无争的帅哥 提交于 2020-08-11 14:36:50
问题1 说一下jvm内存模型 问题1.1 jvm内存模型 栈区: 栈分为java虚拟机栈和本地方法栈 重点是Java虚拟机栈,它是线程私有的,生命周期与线程相同。 每个方法执行都会创建一个栈帧,用于存放局部变量表,操作栈,动态链接,方法出口等。每个方法从被调用,直到被执行完。对应着一个栈帧在虚拟机中从入栈到出栈的过程。 通常说的栈就是指局部变量表部分,存放编译期间可知的8种基本数据类型,及对象引用和指令地址。局部变量表是在编译期间完成分配,当进入一个方法时,这个栈中的局部变量分配内存大小是确定的。 会有两种异常StackOverFlowError和 OutOfMemoneyError。当线程请求栈深度大于虚拟机所允许的深度就会抛出StackOverFlowError错误;虚拟机栈动态扩展,当扩展无法申请到足够的内存空间时候,抛出OutOfMemoneyError。 本地方法栈为虚拟机使用到本地方法服务(native) 堆区: 堆被所有线程共享区域,在虚拟机启动时创建,唯一目的存放对象实例。 方法区: 被所有线程共享区域,用于存放已被虚拟机加载的类信息,常量,静态变量等数据。被Java虚拟机描述为堆的一个逻辑部分。习惯是也叫它永久代(permanment generation) 垃圾回收很少光顾这个区域,不过也是需要回收的,主要针对常量池回收,类型卸载。