[翻译]G1垃圾收集器(五) 之 G1 GC的步骤(下)

G1的老年代GC 像CMS收集器一样,在老年代的GC上,G1 GC被设计成一个低暂停的收集器。下面的表格描述了G1 GC在老年代上收集的各个阶段。 G1收集阶段-并行标记阶段周期 G1老年代收集的各个阶段如下,请注意有些阶段也是年轻代GC的一部分。 阶段 描述 初始化标记(stop_the_world事件) 这是一个stop_the_world的过程,是随着年轻代GC做的,标记survivor区域(根区域),这些区域可能含有对老年代对象的引用。 根区域扫描 扫描survivor区域中对老年代的引用,这个过程和应用程序一起执行的,这个阶段必须在年轻代GC发生之前完成。 并发标记 查找整个堆中存活的对象,这也是和应用程序一起执行的。这个阶段可以被年轻代的垃圾收集打断。 重新标记(stop-the-world事件) 完成堆内存活对象的标记。使用了一个叫开始前快照snapshot-at-the-beginning (SATB)的算法,这个会比CMS collector使用的算法快。 清理(stop-the-world事件,并且是并发的) 对存活的对象和完全空的区域进行统计(stop-the-world) 刷新Remembered Sets(stop-the-world) 重置空的区域,把他们放到free列表(并发)(译者注:大体意思就是统计下哪些区域又空了,可以拿去重新分配了) 复制(stop-the-world事件) 这个stop-the-world的阶段是来移动和复制存活对象到一个未被使用的区域,这个可以是年轻代区域,打日志的话就标记为 [GC pause (young)]。或者老年代和年轻代都用到了,打日志就会标记为[GC Pause (mixed)]。 G1老年代手机的详细步骤 根据上面的阶段定义,来让我们看看他们都是和老年代怎么交互的。 6、初始化标记阶段 初始化标记,是在年轻代垃圾回收的过程中发生的,在日志中标记为GC pause (young)(inital-mark). 7、并发标记阶段 如果空的区域发现(图中标记为“X”),他们就会在重新标记阶段被立即清除掉,同时决定活跃度的统计信息也会计算到。 8、重新标记 空的区域被删除回收,同时计算所有区域的区域活跃度 9、复制和清理阶段 G1 GC会选择活跃度最低的区域进行收集,因为这些区域的垃圾收集会更快一点,在收集的过程中,年轻代的GC也可能同时发生,所以在GC的日志中标记为 [GC pause (mixed)],意思就是年轻代的GC和老年代的GC可以同时发生。 10、复制和清理阶段之后 那些选择收集的区域,存活对象会被压缩到图中标注的深蓝色区域和深绿色区域。 ...

2014年7月8日 · 1 分钟

[翻译]G1垃圾收集器(五) 之 G1 GC的步骤(上)

G1 GC采用不同的方式分配内存,下面这些图片用来解释G1系统的原理 1、G1的堆结构 堆是一块内存区域分成许多固定大小的区域 区域的大小由JVM启动的时候决定的,一般在1-32M范围内,大约生成2000个左右。 2、G1堆的分配 事实上,这些区域在逻辑上被映射到三大区:Eden, Survivor, 和老年代 图片中的颜色表示了区域和它被赋予的角色,存活的对象被腾挪(复制或者拷贝),从一个区域到另一个区域。区域中的收集被设计成和应用程序并行的。 如图所示,区域可以被分配为Eden, Survivor, 和老年代区域,此外还有第四种,我们称之为Humongous区域。这些区域被设计为保存一个标准区域大于50%的对象。他们被存储为一块连续的区域。这种类型的区域必须是没有被使用的区域(译者注:翻译到这里,暂且不明白,接着往下读) 注:在写这篇文章的时候,对Humongous对象的收集还没得到优化,你应该避免创建这样打的对象。(译者注:更云里雾里了,这个Humongous是指一个区域的类型,还是一些对象的类型呢?) 3、G1中的年轻代 堆被分成接近2000块区域,最小1Mb,最大32Mb。蓝色区域存储老年代对象,绿色区域存储年轻代对象。 注:这些区域不需要像老的GC那样必须是连续的 4、G1中年轻代的收集 存活的对象被复制或者移动到一个或多个survivor区域,如果满足老化阈值,这些对象就会被晋升到老年代(译者注:老化、晋升的概念就是说,一个对象在经历n个周期的收集仍然存活,这个对象就是可能被程序长期持有不愿释放的对象,这个对象就算是老化了,晋升到老年代) 这个阶段会发生stop the world的暂停,Eden和survivor的大小需要计算,为了进入下一次的年轻代收集,一些信息的统计也同时进行,为了帮助这个计算。设定的目标暂停时间也会纳入考虑的因素。 这个方法让改变这些区域大小变的容易,根据需要增大或者减少。 5、年轻代GC之后 存活的对象已经被复制或者移动到survivor和老年代区域。 刚晋升的对象如深蓝色所表示,绿色的表示survivor区域 总结一下,关于年轻代的GC有如下几点: 一整块堆内存被分成多个小区域 年轻代是由一些列的不连续的区域组成的,这有助于随时改变它的大小 年轻代的垃圾收集,或者称年轻代GC,是stop-the-world的一个事件,所有的应用程序线程必须停止,等待这个操作完成。 年轻代的GC,又多个线程并行处理 存活的对象被复制或者移动到新的survivor区域或者老年代区域

2014年7月7日 · 1 分钟

[惊喜]百度广告从基础升通用了

从建站伊始我就加入了百度联盟,加入百度联盟门槛不高: 1、有内容,你的网站必须有一定的内容,合法的。如果你刚刚建站,就几篇文章可能会申请失败,你需要充实之后再次申请。 2、有备案,如果你是个国内网站你必须有备案,不过如果你是香港主机或者境外网站的就不需要了。 满足这两个条件就可以在百度联盟网站注册一个用户,中间要验证下自己的网站。就可以投放自己的广告了。 你的网站有两个等级:基础和通用。如果你的网站流量很大,或者内容很丰富,上来审核员可能就给你一个通用级别。那下面的问题就不需要看了。 如果你的网站流量不是很大,内容还不怎么丰富,那你就是基础级别,然后你无论投放的什么百度广告,都是显示的主题广告。主题广告的原理很简单,就是百度联盟广告js,会从你投放广告的页面抓取内容,提取关键字以链接显示出来,用户点击你的主题链接,就会进入围绕这个主题的百度广告页面。这样单调的广告,肯定让你的网站看着很丑陋。 为此我们要努力从基础变成通用,变成通用的条件,一是流量,而是内容,像一个网站的流量基本来源于搜索引擎,所以最终还是要从内容着手,主要从以下几方面 第一:虽然联盟广告,你目前只能做主题广告,但是你也要多加几个,增加展现量。 第二:百度联盟和百度统计是相通的,我相信百度联盟的广告统计展现量是用了百度统计的相关技术,或者是数据有共享,你的网站要加入百度统计代码,不要用cnzz的。 第三:你的网站一定要主题明确,因为百度联盟的广告原理就是根据你的网站内容推送相近内容的广告,所以你一定要围绕一个主题充实你的网站。这就是SEO的话题了,关于SEO其它方面的建议,你可以参考我的《SEO我做了哪些优化》《SEO我做了哪些优化(续)》,或者其它网站的资料。 第四:最重要的还是坚持每天更新原创内容。我就是每天都坚持更新一篇自己原创的文章,最终从基础变成通用的,虽然我的每天的网站流量不是很大。我想我只所以从基础变成通用,是因为百度联盟检测到我的内容原创度高,内容丰富了。百度搜素检测文章是否远程的算法还是有一套的,我发现我之前关于《java多线程学习》的几篇总结,一直没有被收录,这是因为关于这方面的内容,网上实在太多了。你的内容是否原创度高,百度搜索索引量是个间接的反映。

2014年7月7日 · 1 分钟

[翻译]G1垃圾收集器(三) 之 G1垃圾收集器

G1 GC 垃圾优先收集器(G1 GC) 是一个服务器型的垃圾收集器,它的目标是大内存,多处理器的机器。高概率的满足一个垃圾回收暂停时间的目标下,实现大吞吐量。(译者注:例如设置的垃圾回收暂停时间是200ms,G1可以保证90%的垃圾回收暂停时间都在200ms以内,从而保证大的吞吐量),在jdk1.7update4 及其以后的版本完全支持G1 GC,G1 GC主要是为下面这样的应用设计的: 就像CMS收集器一样,可以和应用线程并行处理 紧凑的空间,不会因为GC导致长时间的暂停 GC的暂停时间,希望更多的是可以预见的(译者注:意思就是说,大部分GC时间都是可以控制的,因为G1可以保证90%的GC都在目标时间以内) 不想牺牲大吞吐量的性能 不需要更大的内存 G1 GC的长期计划,就是为了替代CMS GC。比较CMS GC和G1,他们很多不同点表明G1 GC是个更好的解决方案。其中一个不同点就是G1是一种压缩收集器,G1对堆栈的充分压缩,可以避免使用细粒度的未分配内存列表去分配内存,而是使用region的概念。这大大简化了收集器的部分,更大程度上消除了潜在的碎片问题。此外,G1比CMS提供了更多的对收集暂停时间的预测,允许用户设定暂停时间期望目标。 G1操作概述 老的垃圾收集器(像serial,parallel,CMS),全部把堆栈划分成三个区域:年轻代,老年代,以及固定大小的永久代。 所有的对象,最终在三个区域中的一个中消亡。 G1 GC采用不同的方式: 堆被分成一组大小相等的区域,每一块区域对应虚拟机的一片连续内存。他们就像那些老的GC一样,也分成三组(Eden,Survivor,Old)。但是这三种区域没有固定的大小,这在内存使用上提供了更大的灵活性。 G1 GC的执行过程,和CMS有很大类似,G1首先并行进行一个全局的标记,来确认堆内的所有对象的活跃度。在经过标记阶段之后,G1 GC就知道哪些区域大部分都是闲置的。G1 GC首先收集那些可以产生大片空白内存的区域,这就是为什么G1 GC被称为垃圾优先。就像名字一样,G1 GC聚焦它的收集和压缩能力在那些就要被可回收对象(也就是垃圾占满的区域。G1有一个可预测的时间暂停模型,可以让用户指定一个目标,这个模型基于实现这个目标来选择每次收集的区域的个数。 那些有G1确认已到回收时机的区域使用撤离的方式进行回收垃圾。G1从一个或者多个区域中复制对象集中到一个区域中,在复制的过程中进行压缩和释放内存。这个撤离的过程在多处理器中是必行处理的,目的就是减少暂停时间和增大吞吐量。因此每次垃圾收集,G1 GC都要在用户设定的暂停时间内不断的工作,以减少碎片的产生。CMS收集器不会做压缩工作,老的Parallel收集器之做全堆的压缩,这会导致相当大的暂停时间。 有一点要特别注意,G1 GC不是一个实时的收集器,它只是说更大可能的满足你设定的暂停时间,但是也不是一定的。通过前面的收集,G1 GC会大体估算出来在你指定的目标时间内能够收集多少区域。因此G1 GC有一个对收集成本的考量模型,G1 GC通过这个模型来决定哪些,多少区域需要收集来保证这个暂停时间目标。 注意:G1 GC有并发和并行的两种阶段,例如refinement, 标记, 清除阶段,是并发执行,stop-the-word是并行处理的(译者注:并发和并行的概念要研究下)。Full GC仍然是单线程处理的,但是如果你调优的恰当,这种情况是可以避免的。 G1 自占内存 如果你是从老的Parallel GC或者CMS GC转到G1,你会发现更的进程占用,这主要和统计类的数据结构有关,例如Remembered Sets和Collection Sets。 Remembered Sets简称RSets,跟踪一个区域内对象的引用,在堆内,每一块区域对应一个RSet。RSets能让每个区域的收集都是独立并行的。RSets整体占小于5%的内存。 Collection Sets 简称CSets,是GC中需要收集的区域的集合,在一个GC过程中,CSets中所有的活动的数据都要被挪动(包括移动和复制),CSets可以是Eden, survivor, old任意类型的区域,Csets对jvm的大小(译者注:只要是说内存吧)有小于1%的影响。 推荐使用G1 GC的情形 G1第一个关注点是,为那些需要大内存,低GC时延的应用提供一个解决方案。也就是说内存可以到6G甚至更大,可以保证在0.5秒以下稳定的暂停时间。 使用CMS GC和老Parallel GC的应用程序,在有以下一个或者多个特征的情况,比较适合切换到G1 GC: ...

2014年7月6日 · 1 分钟

[翻译]G1垃圾收集器(四) 之 回顾GC以及CMS

回顾分代GC和CMS、 并发标记扫描收集器(CMS),也被称作低暂停并发收集器。它是回收老年代。它试图利用和应用线程并发的收集尽可能多的垃圾,以减少因为垃圾收集导致的停顿。通常这种低延迟并发收集器不会对活动的对象进行压缩处理,也就是说它只做一个不对对象进行移动的垃圾回收,那么配分一个更大的内存的时候,碎片就会成为一个问题。 注意:CMS收集器在年轻代中使用和parallel 收集器相同的算法。 CMS收集阶段 CMS收集器在堆的老年代的回收上有以下几个阶段: 阶段 描述 初始化标记 (stop-the-world事件) 标记老年代中依然存活的对象,包括那些从年轻代晋升来的,这个过程通常比较短暂(译者注:存活我理解为被程序引用,不可回收的对象) 并发标记 和应用程序并发执行的,扫描整个老年代,是从那些标记的对象,或者间接标记的对象开始扫描。第2、3、5个阶段是并发执行的,在这个过程中,在CMS的代中新分配的对象(包括晋升的对象)会被立即标记为存活状态。 重新标记 (stop-the-world事件) 该阶段发现那些被并发标记错过的对象,因为并发标记是和应用程序并发执行的,在标记线程完成对某个对象的跟踪那刻,应用程序可能对对象进行了更新。 并发清理 收集那些在标记阶段没有标记的对象,消亡对象所占的空间会被添加到释放列表里用于重新分配,对死亡对象的聚集工作就发生在这个点。注意:存活的对象不会被移动。 并发重置 做一些数据结构的清理工作,为下一次收集做准备 回顾垃圾收集的步骤 接下来,让我们回顾一下CMS GC的操作步骤: 1、CMS GC的堆结构 整个堆被分成三个部分 年轻代被分割成一个Eden和和两个survivor区域,老年代是延续空间,对象的收集就在这片区域,没有压缩操作直到一个full GC发生。(译者注:读到这里,我们应该很清楚压缩的意思就是说不仅仅对垃圾对象进行收集,还对存活的对象进行腾挪,聚集在一起,腾出更多的空间,不要让对象散落在不同的空间,这就是内存碎片,内存碎片导致无法分配一块连续的大内存) 2、在CMS中,年轻代的GC是怎么工作的? 年轻代被标记为绿色,老年代为蓝色,你的JAVA程序在运行一段时间后,可能会像下面这个样子.对象分散的分布在老年代中: 使用CMS,老年代是对象消亡的地方,它们不会被移动,也不会被压缩,除非遇到一个Full GC. 3、年轻代的收集 存活的对象从 Eden 区域或者一个 survivor区域,移动到另外一个survivor区域,一些老的对象如果达到了晋升阈值,就会被提升到老年代中。 4、年轻代GC之后 年轻代的收集之后,Eden区域和其中一个survivor区域会被清理 新晋升的对象是深蓝色区域,绿色区域年轻代中存活下来,还没有晋升到老年代的对象。 5、CMS中老年代的收集 两次stop_the_world的时间是初始化标记和重新标记阶段,当老年代达到一定的占有率,CMS才开始登场了。 (1)初始化标记是对存活的对象进行标记,只有短暂的停顿(2) 并发标记阶段,是和应用程序一起执行的,也害死标记存活的对象。最终在第(3)阶段去标记那些上一阶段(2)遗漏的对象。 6、老年代的收集-并发清理 在上一阶段没有被标记的对象会在这里消亡,这里没有压缩。 ...

2014年7月6日 · 1 分钟

安兔兔是否在排名上有猫腻?

自从@华为荣耀 官方微博在荣耀6前爆料,荣耀6将登顶安兔兔跑分天王,安兔兔这只兔子就开始不淡定了,先是有人提醒@华为荣耀 安兔兔已经归于雷军麾下,然后就有人爆料,安兔兔连夜升级到安兔兔V5,要把荣耀6斩于发布会前夕。 荣耀6当天发布会,荣耀掌门人刘江峰当众使用安兔兔跑分,安兔兔显示荣耀6跑分成绩已经超过40000分。但是安兔兔迟迟不予更新,两天之后在官方网站上才不得不公布荣耀6已经成为新的跑分天王,但是跑分成绩却有出入,仅仅显示37280分。 同时一直在手机安兔兔上排名第四,分数不足35000分的小米3,不知为何一下超越它之前的HTC one,三星Galaxy S5,三星Galaxy Note3,排在了第一名华为荣耀6、第二名一加手机的后面。 更有小米3的网友爆出,使用安兔兔新放出来的V5版本,测试小米3,分数竟然达到了42000分,硬生生多出来近10000分,竟然超越了荣耀6,无语,你这小米3都发布n久了,难不成,它自己的cpu会进化,内存自己会生小宝宝? 我在想,安兔兔你自己都没个标准准绳,你怎么给人家评分?荣耀6就让雷军你这么不淡定吗?你一个TD,丑不垃圾的3G手机跑不过一个3G内存,八核LTE的手机,有什么不正常的吗?强烈鄙视安兔兔,鄙视雷不斯。

2014年7月6日 · 1 分钟

[翻译]G1垃圾收集器(二) 之 java技术和JVM

java概述 java是一门编程语言和计算平台,第一个版本有Sun 微系统公司在1995年发布,它是支撑java程序,包括公用事业,游戏,和商业等应用的底层技术。java程序跑在全球超过850万的个人电脑,以及数十亿的设备中,包括移动电话和电视设备。java是有一些关键组建的集合,作为一个整体,构建了所谓的java平台 java运行时版本(JRE) java是一门面向对象的编程语言,包括以下几方面特性: 平台无关性,java应用程序,被编译成字节码,存储在类文件中,并在jvm中加载执行。既然java是运行在jvm中,那么它可以在任意不同的操作系统和设备中运行。 面向对象,java作为一门面向对象的语言,获取了C/C++的一些语言特性,并加以改进。 自动垃圾回收机制,Java自动分配和释放内存,所以程序不用承担这份任务。 丰富的标准库,java预置了大量的对象,用于实现各种功能,包括关于输入/输出,网络,日期等方面的操作。 java开发工具包(JDK) JDK是开发java程序的一些工具的集合。使用JDK,你可以编译你用java写的程序,并在JVM中运行它,此外JDK还提供打包、发布你的应用的工具。 JDK和JRE有一样的java应用程序接口(API),JAVA API是提供给开发者开发应用,预先打包的一些类库的集合,这些JAVA API让开发者在开发一些常用功能的时候变的很容易,包括字符串的操作,日期和时间的处理,网络相关。还实现了一些数据结构(例如:链表,map,栈,队列等) java虚拟机(JVM) java虚拟机是一个抽象的计算机,JVM是一个程序,就像一个虚拟的机器,可以让写的程序在上面执行,这样每一个java程序,都是面向同一份接口和类库。针对每一种操作系统,java虚拟机都可以把java程序翻译成操作系统对应的指令,所以java程序是不依赖平台的。 jvm的第一份原型是有sun公司开发的,在一个在手持设备上类似个人数字助理软件中,实现了jvm的指令集。目前oracle公司虽然在手机、桌面或者服务器设备上实现了jvm。但是jvm并不限定特殊的实现技术,主机硬件和主机操作系统。可能这个解释不是很确切,但是的确对于一个硅晶体管CPU,通过编译它的指令集来就可以实现(JVM),或者通过微码,甚至直接通过硅晶体管来实现,也不是不可能实现的。 jvm对于java语言写的程序是不认识的,它只认一种特殊的二进制格式-class文件。一个class文件包含jvm的指令集(或者说字节码)和一个符号表,以及一些其它辅助信息。 为了安全起见,jvm对class文件中的代码,有严格的语法和格式限制。然而任何编程语言,如果可以编译成class文件,都可以在jvm中运行。所以作为一个一般可用,与平台无关的平台,对于其它语言的实现,也可以把jvm作为他们的运行载体。 探索JVM结构体系 Hotspot体系 HotSpot JVM有一个支持强大特性和功能,可实现高性能和高扩展性的结构体系,例如HotSpot JVM的JIT编译器的动态优化功能。换句话说,它可以在java应用运行时做一些优化,让它生成对于底层系统体系更高效的本地机器指令。此外,通过对运行环境、多线程垃圾回收机制的不断成熟演进,HotSpot JVM甚至可以扩展到更多的计算机系统中。 JVM的主要组成部分,包括:类加载器,运行时数据区,和执行引擎。 关键 Hotspot组件 在JVM中,涉及到性能的关键部件如下图高亮显示。 在性能调优方面主要聚焦三个组件:堆栈是用于存储对象数据的。这块区域在程序启动之后就有GC管理了,大多数调优选项是和调整堆栈大小以及选择合适的GC有关的。JIT编译器对性能也有影响,但是对于新版本的JVM很少需要你手动调优。 基本性能 通常情况下,调优一个Java应用程序时,重点是主要是两个目标中的一个:响应速度和吞吐量。我们会请参考这些概念的教程的进展。在教程讲解的过程中,我们会涉及到下面这样概念: 响应速度 响应速度是指在接收到请求数据之后,一个应用程序或者系统响应的有多快。例如包括: 一个桌面UI对一个事件的响应有多快 一个web站点多久返回一个页面 一个数据库查询多长时间能返回 对于响应速度要求很高的应用程序,大的时间暂停是不被接受的,重点就是在短时间内响应。 吞吐量 吞吐量就是一个应用在一定的时间内做尽量多的事情,衡量吞吐量包括以下的例子: 在给定时间内完成事物的多少 一个批处理程序在1个小时内完成的任务数 数据库在一个小时内可做的查询数 对大吞吐量要求高的程序,高暂停时间是可以接受的,由于大吞吐量的程序是更关注于在一定较长时间内,所以快速的响应时间不是它要考虑的。

2014年7月4日 · 1 分钟

[翻译]G1垃圾收集器(一) 之 概论

目的: 本教程包含关于G1 垃圾收集器(简称 G1 GC)使用的基本知识,以及如何在Hotspot JVM中使用,你可以学习到G1 GC的内部是如何工作的,一些关键的命令行参数,以及日志选项。 完成时间: 1个小时左右 简介: 本培训教程涵盖了java中关于java虚拟机(JVM) G1 GC的基本知识,在教程开始总体介绍了一下提供了G1 GC的JVM,以及其性能,然后会介绍CMS GC在JVM中如何工作的,一步步引导出G1 GC在JVM中又是如何工作的。随后一个章节介绍G1 GC的所有命令行选项。最后,你会了解到使用G1 GC时用到的日志选项。 软硬件环境需求 下面是列出的对硬件和软件的需求: 一台装有window XP以后版本、Mac OS X 或者linux的机器。注意window7以及着手测试了,但是不包括所有的平台。但是在Mac OS X 或者linux平台上一切运行正常,最好机器是多核心的。 java 7 update 9 或者以后的版本 最新的Java 7 Demos and Samples Zip file 先决条件 在开始本教程之前,你需要: 如果你没有下载和安装java 7 update 9 或者以后的版本,请到这里下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载安装 Demos 和 Samples zip 从上面同样的地址 解压到一个目录中,例如: C:\javademos

2014年7月3日 · 1 分钟

荣耀立方的一个弊端(当电视附近没有网孔的情况)

不可否认,荣耀立方将路由器和电视盒子合在一起,是一种创新。但是没有想全一种场景:荣耀立方要连接电视,必须放在电视旁边,如果电视旁边没有网孔的时候,就需要扯长线连接立方。 或者你采用官方论坛里介绍的两种方案(特别是光纤或者电话线入户的用户): 方案一:Wi-Fi拨号(或者称Wi-Fi上行) 如下图,入户网络在门口或者书房,现在很多光纤入户的,光猫都是运营商送的,而且带无线,所以这个时候立方可以通过无线直接连接光猫Wi-Fi,然后立方再去拨号上网。原理和直接一根网线连接一样。 方案二:电力猫,变电线为网线 如下图,猫的LAN口连接一个电力猫的LAN口,电力猫上电,这样就将网线可识别的网络数据信号转换成电线可识别的信号,然后在客厅在通过一电力猫,把电线上的网络转换成网口/线,并连接立方,然后通过立方去拨号上网。 这是一种少见的情况,但是荣耀没有考虑到,我也是有点小小失望的,希望荣耀能继续努力,做出对用户更贴心的产品。

2014年7月2日 · 1 分钟

推荐一款wordpress插件 Hacklog Remote Image Autosave

插件全名叫:Hacklog Remote Image Autosave Hacklog Remote Image Autosave是一款WordPress远程图片下载插件,自动保存日志中的远程图片到本地服务器并将保存后的文件作为日志的附件。 如果你想转载其它网站的文章,文章中含有图片,不过图片是存在其它网站上的,你又不想一张一张图片的上传到自己的博客中,就可以使用该插件。 会在你的发表文章的编辑器上方出现一个蓝色的按钮 点击这个按钮,它会帮你把所有文章中,外部的图片下载到本地,并且替换成你网站本地的地址。绝对是转载文章的一大利器。 当然还有其他类似的插件,大多数插件都是老外写的,你可以使用remote download autosave这样的关键字去搜索类似的插件。

2014年7月1日 · 1 分钟

荣耀主题曲

[audio mp3="/wp-content/uploads/2014/06/zhaoyanblog_2014-06-29_08-11-33.mp3"][/audio] 《荣耀》 作词:高晓松 作曲:钱雷 演唱:王晓天 你听远处的声声汽笛 勾勒出梦境中的岛屿 在清晨漫上岸的海浪 是世界尽头的回响 ...... 你看那云上草长莺飞 绽放着明天红色的花蕊 成长于苍茫茫的异乡 回首依然望见故乡月亮 ...... 黑夜给了我黑色眼睛 我却用它去寻找光明 汗水凝结成时光胶囊 独自在这命运里拓荒 ...... 单枪匹马与世界对饮 历经磨难亦不忘初心 做自己荣耀的骑士 勇敢追逐梦想的红日

2014年6月29日 · 1 分钟

[新闻]荣耀6登顶安兔兔排行榜

荣耀6发布会之前,@华为荣耀 官方微博就调戏安兔兔记得更新排行榜,果不其然,在荣耀6发布过去两天,荣耀6实现豪言,登顶安兔兔跑分排行榜,成为名副其实的跑分天王。 [caption id=“attachment_323” align=“alignnone” width=“1024”] 荣耀6 跑分天王[/caption]

2014年6月27日 · 1 分钟

荣耀立方有哪六大超强功能

荣耀立方,早在5月中旬就公布了,网友一直以为它仅仅只是个路由器+硬盘,类似小米路由器,这次借荣耀6发布会之机,荣耀正式推出荣耀立方。 在荣耀掌门人刘江峰的PPT中,以及荣耀官方网站中,都给出了一个下面的公式 荣耀立方=电视盒子×存储×路由 从公式上看,荣耀立方不仅仅等同于小米路由器啊,它相当于小米盒子+小米路由器才行啊。 再看荣耀立方的六大功能 功能一:智能路由 这是之前就公布的功能,802.11ac双频(2.4GHz/5G Hz)千兆WiFi,上网速度提升3倍,穿墙能力倍增Beamforming智能波束成形,自动识别智能设备位置,并定点增强,无线信号下一代QoS,基于内容的智能带宽优化抗干扰,智能信道选择,防钓鱼DNS破解,防暴力破解,保证Wi-Fi信号安全稳定。访客网络权限一键设置,专属客人的上网方式,保护小隐私智能带宽控制模式,一键智能设置视频加速、游戏加速、上网加速一键体检、优化,快速检测防火墙、wifi密码、路由链接状态、固件版本,家长控制模式,设定孩子上网时间 功能二:家庭存储 这也是之前可以猜到的功能,内置1T大硬盘(选配),最高可支持2.5英寸的4T硬盘 支持硬盘热插拔、自动云备份,增强数据容灾能力,源自专业的服务器技术,对存储的视频、照片、音乐智能分类、 功能三:相机伴侣 相机SD卡一键拷贝至硬盘, 可储存10万张高清照片,给美好的记忆找个家,照片墙, 一家人在电视上重温过去时光。这个功能貌似优点勉强,类似于家庭存储的功能。不过荣耀立方提供了一个SD卡槽,可以直接把相机照片直接拷贝到硬盘,这是相当方便的。 功能四:手机驿站 手机遥控家中立方, 远程下载高清影视剧,回家后, Wi-Fi自动同步已下载高清影视剧至手机,链接Wi-Fi后,手机、平板电脑数据自动备份至硬盘中。类似于物联网的操作,远程下载,这个功能还是超赞的。 功能五:安卓主机 双核1GHz 路由系统 + 双核1.5GHz安卓系统,1G RAM + 4G eMMC,双CPU并发处理,安卓操作系统,开放的智能平台,各种App随心装。里面有安卓系统,连接显示器,可以当电脑用,这个也算是个不错的妙用。 功能六:电视盒子 这是所有有都没想到的功能,华为荣耀将安卓系统移植到荣耀立方之中,本来电视盒子就是要连接网络使用的,买个盒子再买个路由器是在多此一举,荣耀立方将两者完美结合,海量正版1080P全高清热门电影大片、美剧韩剧港剧内地剧、综艺节目、时事新闻、体育、教育和少儿节目、纪录片、动漫、音乐会, 片源每日更新, 精彩决不错过!DLNA多屏互动, 小时光APP瞬间推送手机上的视频、照片至电视 这样一款产品只要598元,加上一T硬盘,也才998元。只能看电视的小米盒子299元+没有操作系统的小米路由器699元 = 998元,你会选哪个呢?多说一句,荣耀立方绝对保证组装完好帮您邮寄过去,保质保量~

2014年6月27日 · 1 分钟

elasticsearch三个重要的优化

1、内存优化 在bin/elasticsearch.in.sh中进行配置 修改配置项为尽量大的内存: ES_MIN_MEM=8g ES_MAX_MEM=8g 两者最好改成一样的,否则容易引发长时间GC(stop-the-world) elasticsearch默认使用的GC是CMS GC 如果你的内存大小超过6G,CMS是不给力的,容易出现stop-the-world 建议使用G1 GC 注释掉: JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC" JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC" JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=75" JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly" 修改为: JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC" JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=200" 如果G1 GC优点是减少stop-the-world在几率,但是CPU占有率高。 需要更优化的性能,你可以参考 http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/G1GettingStarted/index.html 2、合理配置主节点和数据节点 配置文件:conf/elasticsearch.yaml node.master: true node.data: true 当master为false,而data为true时,会对该节点产生严重负荷; 当master为true,而data为false时,该节点作为一个协调者; 当master为false,data也为false时,该节点就变成了一个负载均衡器。 3、设置合理的刷新时间 建立的索引,不会立马查到,这是为什么elasticsearch为near-real-time的原因 需要配置index.refresh_interval参数,默认是1s。 你可以像 http://zhaoyanblog.com/archives/299.html 文件中一样,调用接口配置 也可以直接写到conf/elasticsearch.yaml文件中 index.refresh_interval:1s 这样所有新建的索引都使用这个刷新频率。

2014年6月26日 · 1 分钟

荣耀6的几大亮点

1、有延续又有突破的外观 品牌在于延续,就像苹果,几代都有变化,但总体风格是延续的,这样才会得到用户的认同感,如果你的风格突然大变,可能有些人会喜欢,原来喜欢你的人可能就会因为不习惯而离开。 荣耀6的整体外观沿袭上几代的风格,同时也有细微的变化,例如去掉的物理键,边框更窄(75.7%的屏占比以及2.86mm的超窄边框),摄像头放到一角,目的就是让手机保持5寸大屏的情况下,手机显得更小,在3100mA电池容量情况下,显得更薄,此外后盖采用太空符合材料,有精美的炫光纹也算是一个惊喜,瞬间变的高大上了。 2、强劲配置 和我在2014年6月15日那天发表的博文<关于华为荣耀6的猜测>基本一致。我们再来细数一下: 1、cpu:海思八核LTE处理器(全球最快) 2、内存: 3G (强劲,目前市面上并多见) 3、摄像头: 前置500万+后置1300万(索尼第四代BSI堆栈式摄像头,双LED闪光灯哟) 4、电池:3100mA (我猜测3000mA左右) 5、屏幕:1080p (更为惊喜的配置:采用JDI 5.0英寸FHD incell屏幕,像素密度高达445 PPI) 6、制式:FD-LTE/TD-LTE/WCDMA/TD-SCMDA/GSM 五网通吃(告诉小伙伴,是双卡双待哟) 最后补一句,不服跑个分,荣耀6安兔兔跑分40700啊,4G上传下载全球最快! 3、良心价格 我在<关于华为荣耀6的猜测>中预测,荣耀6最有可能延续以往的价格1888,,但是在我看发布会的过程中,看到这么强劲配置,觉得有可能荣耀6要提价,少说也得2000元以上,没想到刘总给出的价格是1999元,只要1999,绝对的高性价比,良心价格。 4、小惊喜 1、我们知道红外遥控功能是荣耀3 outdoor附带的特殊功能,这一功能延续到了荣耀6上,小伙伴们又可以拿着它去超时遥控各种电器了。 2、荣耀6特权:为期一年的意外损坏保修,1000万小时WiFi任用,价值1111元特权礼包。大哥,这些可都是免费的。 以上是我从外观、配置、价格上,总结的荣耀6几大亮点,荣耀6的品质不仅如此,还有很多细节在散发着光芒,不过以上这些足以驱动一个想买手机的用户去拥有它。

2014年6月25日 · 1 分钟