工欲善其事,必先利其器。程序员的工作需要电脑完成,我个人在家用Y450A的本子,已经跑了三年了,像我这样喜欢折腾电脑的人,现在的Y450A一开机就呜呜的喊叫了。在公司用台式机,肯定是比本快的多了。家里用xp系统,之前一直用win7 64,现在跑起来有些慢了,还是xp熟悉,就换成了xp,你们的现在用什么配置、什么系统呢?相信大部分的人还是xp或者win7吧!普通人咱们用win,文艺的用mac,高手们用linux,也不排除某些13也用linux。现在一台4、5K的电脑,基本就能够满足程序员的需要的,CPU没多低的了,内存配置个4G的都很普通(N年前,我们一台512M的,都属于大内存了),硬盘500G都小了,显卡,不做个设计、不玩个游戏,现在的集成显卡普通的都1G了,还能不够你用吗?再让你下次选择一台做开发的电脑,你会选择什么样的?这里提醒下,做开发,台式机是最好的,各种的DIY,别选什么品牌的,对一个开发者来说,不值得。
1) 堆 运行时数据区域,所有类实例和数组的内存均从此处分配。Java 虚拟机启动时创建。对象的堆内存由称为垃圾回收器 的自动内存管理系统回收。 堆由两部分组成: 其中eden+fromspace+tospace也叫年轻代(young),old space叫旧生代. 其中还有S1,S0(在JDK的自带工具输出中会看到),分别指的是Survivor space,存放每次垃圾回收后存活的对象. Old Generation , 主要存放应用程序中生命周期长的存活对象垃圾回收主要是对Young Generation块和Old Generation块内存进行回收,YG用来放新产生的对象,经过几次回收还没回收掉的对象往OG中移动,对YG进行垃圾回收又叫做MinorGC,对OG垃圾回收叫MajorGC,两块内存回收互不干涉2) 非堆内存 JVM具有一个由所有线程共享的方法区。方法区属于非堆内存。它存储每个类结构,如运行时常数池、字段和方法数据,以及方法和构造方法的代码。它是在 Java 虚拟机启动时创建的。 除了方法区外,Java 虚拟机实现可能需要用于内部处理或优化的内存,这种内存也是非堆内存。 例如,JIT 编译器需要内存来存储从 Java 虚拟机代码转换而来的本机代码,从而获得高性能。 Permanent Generation (图中的Permanent Space) 存放JVM自己的反射对象,比如类对象和方法对象3) 回收算法和过程 JVM采用一种分代回收 (generational collection) 的策略,用较高的频率对年轻的对象(young generation)进行扫描和回收,这种叫做minor collection,而对老对象(old generation)的检查回收频率要低很多,称为major collection。这样就不需要每次GC都将内存中所有对象都检查一遍。 当一个URL被访问时,内存申请过程 如下:A. JVM会试图为相关Java对象在Eden中初始化一块内存区域B. 当Eden空间足够时,内存申请结束。否则到下一步C. JVM试图释放在Eden中所有不活跃的对象(这属于1或更高级的垃圾回收), 释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区D. Survivor区被用来作为Eden及OLD的中间交换区域,当OLD区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区E. 当OLD区空间不够时,JVM会在OLD区进行完全的垃圾收集(0级)F. 完全垃圾收集后,若Survivor及OLD区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现”out of memory错误” 对象衰老的过程 young generation的内存,由一块Eden(伊甸园,有意思)和两块Survivor Space(1.4文档中称为semi-space)构成。新创建的对象的内存都分配自eden。两块Survivor Space总有会一块是空闲的,用作copying collection的目标空间。Minor collection的过程就是将eden和在用survivor space中的活对象copy到空闲survivor space中。所谓survivor,也就是大部分对象在伊甸园出生后,根本活不过一次GC。对象在young generation里经历了一定次数的minor collection后,年纪大了,就会被移到old generation中,称为tenuring。(是否仅当survivor space不足的时候才会将老对象tenuring? 目前资料中没有找到描述) 剩余内存空间不足会触发GC,如eden空间不够了就要进行minor collection,old generation空间不够要进行major collection,permanent generation空间不足会引发full GC。4 接下来这部分讲解的是TOMCAT或者其他服务器出现如下错误时的分析: 1、首先是:java.lang.OutOfMemoryError: Java heap space解释:Heap size 设置JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。解决方法:手动设置Heap size修改TOMCAT_HOME/bin/catalina.bat,在“echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:Java代码set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=256m或修改catalina.sh在“echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:JAVA_OPTS=”$JAVA_OPTS -server -Xms800m -Xmx800m -XX:MaxNewSize=256m”2、其次是:java.lang.OutOfMemoryError: PermGen space原因:PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。解决方法:1. 手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在Java代码“echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行: set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m “echo “Using CATALINA_BASE: $CATALINA_BASE””上面加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512mcatalina.sh下为:Java代码JAVA_OPTS=”$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m”JAVA_OPTS=”$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m”JVM的默认设置**堆**(heap)(News Generation…
javascript 进1取整的几种方式最长见的都是四舍五入,业务中难免也有一些进一去整的要求。进一去整,比如2.1 3.5 4.9,进1去整后的结果就是3 4 5.方式一var a = 2.0;var b = 3.4;var c = 8.9;function modFoat(v) { var _max = parseInt(v) + 1; if( _max - v < 1 ) { return _max; } return v;}alert(modFoat(a)); // 2alert(modFoat(b)); // 4alert(modFoat(c)); // 9方式二var a = 2.0;function parseNumber(number, splitChar) { var n = number + ''; var s = splitChar == null ? '.' : splitChar; var nArr = n.split(s); if (nArr.length == 2) {//2.1 return parseInt(nArr[0]) + 1; } else {//2.0 return number; }}document.write(parseNumber(a));方式三这种方式有bug,如果是2.0呢?var a = 2.1;var b = parseInt(a) + 1; // b will be 3parseInt是截掉尾数,然后再加一即可。方式四最简单的var a = 1.1var s = Math.ceil(a);alert(s);
在微刊上面看到的,相当诡异的的图画。没看过的先看看图画,在看解读吧! 《北京,2008》[油画]——作者/刘溢(旅加华裔画家)**下面的是解读 **正面下方,背後有纹身的亚裔女子,是中国。左手打牌打得聚精会神的,是日本。穿着上衣侧头的是美国。躺得很淫荡的,是俄罗斯。旁边站着的小女孩,则是台湾。这幅叫作《北京2008》的油画,最近在西方社会以及网路世界引发的口水已经比画家所用的颜料多出千倍。画家是刘溢,一个去了加拿大的中国人。有意思的是这张图名字叫北京2008,画的却是四个女人打麻将,其实隐藏着很深的含义在里面。中国碰了「东风」,有两层意思,一是中国借了东风再崛起;二呢,「东风导弹」是中国已经摆台面上的有力武器中国一方面形势好像不错,但不知道其他的牌如何,而她又在牌桌下做着小动作。美国一副成竹在胸的样子,看着台湾,表情很耐人寻味,一方面是想从台湾的表情里读懂些什麽,一方面眼神又在给台湾做暗示。俄罗斯一副漠不关心的样子,其实不然。一边脚勾搭着美国,一边在给中国递牌,两国可以说是在暗中互相交换利益。日本人一本正经看着自己的那副牌,全然不知道别人在做些什麽动作,只顾着打着自己的牌。台湾身穿红肚兜,意思是中华文明的真正继承者。台湾一手拿着水果一手拿着水果刀,表情阴郁而愤恨的看着中国,但没办法,他不入局,无论最终谁胜利,他都只能帮别人切水果。窗外河边乌云密布,暗示海峡两岸局势危机,一触即发。墙上的挂像也很有意思,孙中山的胡子,蒋介石的光头,毛泽东的长相。四个女子的着装,中国光着上身,下边一条裙子一条内裤。美国一件外套一件内衣,下身却光着。俄罗斯只剩一条内裤了。日本已经什麽都不剩了。道尽各国局势的写照。美国衣着看上去最整齐,实力也最强大,其他几人均有点衣不蔽体,但美国貌似光鲜,但却其实已经暴露了自己的底线,而中国和俄罗斯虽然貌似赤裸,但关键阴私却藏住了。假设这局牌是赌脱衣服的,谁输了谁脱。一局牌打下来,中国输,则沦落到如今俄罗斯的地步(跟苏联解体情况相当)美国输,也会沦落到俄罗斯的地步,俄罗斯再输,则彻底沦落到一无所有。而日本,其实已经一无所有了;俄罗斯貌似相公在陪打,其实俄罗斯是在和中国换牌,真正陪打的是日本,因为她已经没东西可输了,而且一输就立刻出局。总结就是,美国最假正经,看上去最光鲜,但其实危机不小,如果打输这一局,他就得交出霸主的地位。俄罗斯两边勾搭,最是阴险狡诈,情况有点类似解放後的中国,一会儿倒向苏联一会儿倒向美国,因为自身实力不济,只能在两边摇摆以求得生存和发展。中国的牌有太多看不见,说明中国隐藏了很多实力?而且桌面下又和俄罗斯在换牌,而美国人却只能从台湾的表情上去揣测中国和俄罗斯干了些什麽。日本人则一无所知,继续打着自己的牌。台湾,冷眼旁观,桌上这些人在搞什麽她都看见了,心里也清楚,可是她没有入局的资格和能力,也没有说话权,心怀不满也无济於事,只能乖乖做丫头,给胜利者献上水果。胜利者应该在中国和美国之间产生,这个悬念不大。但要看清楚,美国尽管实力强,但她们玩的是中国麻将,不是西方扑克,按中国人的规矩玩牌,美国人的胜算又有多少?《2008,北京》(又名《搓麻将的女人》)一副具有影响力的油画,不仅体现了作者高超的艺术表现力,更体现了作者的思想性。上面这幅油画是去年春天在纽约一个画展上展出的油画,它的名字叫做《2008,北京》。这幅画暗示了什么?2008北京,大家自然会想到北京奥运会,但是,从油画所表现的四位游戏者所做的游戏来看,是中国的麻将,而麻将是中国游戏,由此可以肯定地说,油画所表现的主题不是北京奥运会。哪又是什么呢?油画的背景是阴云密布下的海滩,实际上是暗示台湾海峡被战争的乌云笼罩。实际上,进入2008,大陆与台海形势紧张,大陆3000枚导弹,瞄准台海。油画的人物,除了画面上明显的五个人之外,在左边墙上还挂着一幅人像,人像的脸廓是毛泽东的,胡子是孙中山的,光头是蒋介石的,三个人的头像混杂在一起,表明了中国大陆和台湾是孙中山、毛泽东、蒋介石遗留下的一个历史问题。油画中穿红肚兜的小女孩代表台湾,因为她是代表一个地区,无法与大国的地位相平等。四个打麻将的女子,可以肯定有一位是代表中国大陆的女孩,她的上身的纹身有中国的图腾凤凰,正对着中国大陆的女孩代表的是美国,因为中国与美国给太平洋相望;左边那个全身赤裸的代表日本,右边躺着的则代表俄罗斯。这幅画想表达的是,台海局势如何发展,完全是中美俄日四国在主导,台湾却被排挤在牌局之外,只能等待别人安排它的命运。油画的主体是四个打麻将的女子,她们身上衣服的多少代表了实力的强弱。正对大家的女子衣服穿得最多、最整齐,表明美国是四个大国中实力最强的。美国双手抱着头,眼睛望着台湾,对牌局心不在焉的样子,暗示美国自认为胜券在握,对台湾虎视眈眈。右边的俄罗斯一只腿搭在美国身上,另一只手却伸在中国背后,帮助中国偷偷换牌。再看俄罗斯的牌,少了一张,这样的牌根本不能胡,说明俄罗斯对台湾问题完全没兴趣,它明里和美国勾搭,暗中却把武器卖给中国,俄罗斯只是想借台湾问题制约中国和美国。中国上半身没穿衣服,下半身的衣服被桌子挡着看不见,暗示大家都看不清楚中国究竟有多少实力。中国的牌中有一个明杠东风,代表中国最具有威慑力的武器是“东风—31”中程导弹,这可是中国大陆对付台湾的杀手锏。中国背后还暗藏着两张牌,表明中国暗中留了一手,让其他人摸不准自己的实力。左边的日本全身赤裸,它的实力在这四个国家中是最弱的。它聚精会神地看着自己的牌,却没有察觉牌局中大家的小动作,而且从动作上看,非常兴奋,暗示着台海危机、甚至于台海战争对于日本,形势看好,加入战争一开,两虎相斗,必有一伤,日本坐享其成。这说明日本在台湾问题上关注自己的利益,。虽然从表面上看,日本的牌最好,但真正起决定作用的反而不是牌局本身,日本纯粹是陪太子读书,它在台海局势中完全得不到好处。代表中国的女子身上绘着凤凰文身,下身穿的却是带蕾丝的西式内衣。这说明在美国人看来,中国的传统文化只剩下一个外壳,中国本质上正在靠近西方,甚至和西方没什么太大区别,反而是穿着红肚兜的台湾比较完整地保留了中国的传统文化。台湾右手端着一盘水果,左手捏着一把小刀,表示不好意思亮出来,但水果刀,虽不锋利,但可杀人。而大陆回敬的是东风导弹,这前面已有叙述。这暗示台湾基本上不具备反抗能力,但也具有杀伤力。但无论这次牌局是谁胡牌,台湾都得乖乖地敬奉上那盘水果。2008年已经过去,陈水扁的台独政策造成的台海紧张形势、乌云密布,已伴随着国民党马英九的上台,而已形势缓和、乌云散去。但作者对台海形势及大国关系的洞察力,引人深思。原文没找到,微刊
胡天硕的点点滴滴 提醒文章的缩略图,会把原图缩略之后就给变形,比例失调了,使用max-height max-widthde 的属性,在IE下面失效,现在改用jquery插件的方式了,去除了原来的图片延时加载,与等比例缩小插件有冲突.使用也是简单的,加载js文件。http://x.libdd.com/farm1/6424fa/f55203fd/loadimage.js调用: //图片等比例缩放 $(".post-thumbnail img").LoadImage({ scaling : true, width : 170, height : 130, loadpic:"http://x.libdd.com/farm1/6424fa/c106a7b5/default.jpg" });首页可以看到效果,放一张哥们的“萌像”(他自己说的,我看就是呆)。
写了一段代码,删除.svn的,用系统查找出来的删除,老是弄的电脑死机。代码没啥含量,java实现。import java.io.File;/** * * @author zhaopeng * @time 2013年1月1日 20:36:20 * */public class Delsvn { public static void main(String[] args) { Long time = System.currentTimeMillis(); String path = "D:/Workspace"; delsvn(path, ".svn"); System.out.println("耗时:" + (System.currentTimeMillis() - time) / 1000 + "s"); } public static void delsvn(String path, String delFileFix) { File file = new File(path); String fileName = file.getName(); if (delFileFix.equals(fileName)) { delDirectory(file, delFileFix); } else if (file.isDirectory()) { File[] files = file.listFiles(); int size = files.length; for (int i = 0; i < size; i++) { File fileTemp = files[i]; if (fileTemp.isDirectory()) { delsvn(fileTemp.getPath(), delFileFix); } } } } public static void delFile(File file) { file.delete(); System.out.print("."); } public static void delDirectory(File file, String delFileFix) { File[] files = file.listFiles(); String fileName = file.getName(); int size = files.length; for (int i = 0; i < size; i++) { File tempFile = files[i]; if (tempFile.isDirectory()) { delDirectory(tempFile, delFileFix); } else {…
java中常常做一些zip打包,解包的公共类,每次写起来都很麻烦,推荐个zip的类库。使用简单,方便。ZipUtil.pack(new File("temp"), new File("temp.zip"));就这么用,一个temp文件夹,就压缩成temp.zip了。更多的使用看API吧!都很简单的。更多使用:https://github.com/zeroturnaround/zt-zip