- 充血模型和贫血模型
我觉得既然是面向对象编程,自然应该是充血模型。
但是方法是不是应该属于该对象可能不好判断。
如发贴动作,就不应该属于贴子这个对象
- 聚合和组合等
聚合表示被聚合的类可以离开另一个类独立存在,而组合则相反。这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。
依赖:一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A。比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用;
关联:两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性 的,一般是长期性的。
继承:extends
实现:implements
- 遍历js对象
http://www.javatang.com/archives/2006/09/13/442864.html
- 重写Overriding和重载Overloading
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
- poi删除空行
org_sheet.removeRow(r);
//删除的如果是最后一行,getLastRowNum会自动改变,最后的空行自动被删除了。
if (r.getRowNum()+1 <= org_sheet.getLastRowNum()) {
//rm empty row
org_sheet.shiftRows(r.getRowNum()+1, org_sheet.getLastRowNum(), -1);
}
貌似效率较低。jxl效率还可以,但不支持2007,jexcelapi_2_6_12好像删除有问题,jexcelapi_2_6_9可以删除成功。
- 遍历map
for(Object m: emails.keySet()){
logger.info("email-" + m+ ":" + emails.get(m));
}
或
for (Map.Entry<String, String> m : emails.entrySet()) {
logger.info("email-" + m.getKey() + ":" + m.getValue());
}
keySet返回的是key的集合,entrySet返回的是map存储的Entry包括key和value
- jquery.fn
$.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效。
如扩展$.fn.abc(),即$.fn.abc()是对jquery扩展了一个abc方法,那么后面你的每一个jquery实例都可以引用这个方法了.
jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法,理解为添加静态方法。
jQuery.fn.extend(object);给jQuery对象添加方法。对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。
http://blog.csdn.net/yjsuge/article/details/6779905
-
javascript的!function
http://www.swordair.com/blog/2011/10/714/
- 基于jquery的ztree
http://www.ztree.me/v3/main.php#_zTreeInfo
- jquery的map方法
1、jQuery.map(array, callback):将数组array中的元素转换到另一个数据,静态方法。将callback的返回值放入新数组中。
2、obj.map(callback):将一组元素转换成其他数组(不论是否是元素数组),
如$("input").map(function(){
return $(this).val();
}).get().join(", ")
3、jQuery.makeArray:将类数组对象转换为数组对象,就是返回一个数组
4、如果input上不写name,用serialize()方法是没有返回值的。见serializeArray中代码中的.filter
- 编码
java中字母和数字都是占两个字节的,因为java的String是以char数组存储的。但GBK中一个字母占一个字节。
java中String的编码都是UNICODE的。一个char对应一个unicode码。
character中的代码点指的是该char对应的unicode数值。如a的代码点是97
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1
在linux中执行unzip时,要注意当前用户的编码,否则文件名可能出现乱码。
crt和putty等ssh时,文件名默认的编码格式是window的编码,一般为gbk之类的。可以是设置中修改。还要注意最好和用户的locale保持一致。
http://kejibo.com/ssh-putty-securecrt-chinese-character/
FileZilla上传后文件的文件名编码格式一般是utf8的。http://woohon.bokee.com/viewdiary.41336991.html
GBK和UTF8转换是不行的,会出现乱码
http://fogandsun.blog.163.com/blog/static/366588742010824103624920/
- java中listfiles后,找不到文件
- form使用get时取不到值的问题
- jquery和checkbox
- float
- jquery验证框架
- java的isSiteLocalAddress
ip地址在10.0.0.0 ~ 10.255.255.255、172.16.0.0 ~ 172.31.255.255、192.168.0.0 ~ 192.168.255.255范围以内的返回true
- java的xml中node复制
要先读出document修改后,再使用Transformer重写文件。需要使用importNode方法,而不能用clonenode
newNode = (Element)root.importNode(node, true);
node.getParentNode().appendChild(newNode);
- ajax上传下载
ajax可以下载文件。上传时需要借助隐藏的空frame,可以将以下的内容写回空frame进行后续操作
byte[] bs = ("<script>parent.callback('" + gson.toJson(list) + "')</script>").getBytes("utf-8");
- kworker进程
发现当java申请不到堆内存时,kworker会一直占cpu。。可以手动释放cache的内存。
还有可能是java启动了垃圾回收,从而使sys占用了大量cpu
- lucene的索引合并策略