蛋壳’游记: flipsnap.js一个轻量级的滑动效果JS开发库,仅有8k大小(压缩版),包含了10种滑动方式,是web app开发必备的js库,除了兼容主流的智能手机浏览器(ios safari,android,win phone7 ie9+)外还兼容 PC 版的谷歌和Safari等。演示DEMO或者手机扫描:
在淘宝买了一个乒乓球网架,也就不关心了其他的了。过会一会,竟然收到了一条淘宝违规发布商品处理的短信通知,你大爷我就根本不卖东西啊!到淘宝上去详细看看,还发布是个医疗商品,NND,幸好不是啥军火啥东西的。现在都还没明白是个怎么回事,哪里漏洞了啊!这样的事情,咋处理呢?
工欲善其事,必先利其器。程序员的工作需要电脑完成,我个人在家用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…
Gitblit 是一个纯 Java 库用来管理、查看和处理 Git 资料库。相当于 Git 的 Java 管理工具。目前已经发布到了1.2的版本,翻译的时候是按照1.1的版本翻译的,不过1.2的也能用,已经提交给作者了。 在下一个版本应该会一并发布出来,如果想直接使用,直接把文件GitBlitWebApp_zh_CN.properties放到WEB-INFclassescomgitblitwicket路径下面就可以了。Gitblit使用的wicket框架,应该算是种比较古老的框架吧!研究了一下,与swing开发有些类型,还是很研究的价值的。下载:gitblit.war | 中文包链接: gitblit官网 | gitblit-github最近github被封了,又是天朝的一个杯具!