零散笔记

  • 充血模型和贫血模型

我觉得既然是面向对象编程,自然应该是充血模型。

但是方法是不是应该属于该对象可能不好判断。

如发贴动作,就不应该属于贴子这个对象

  • 聚合和组合等

聚合表示被聚合的类可以离开另一个类独立存在,而组合则相反。这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。

依赖:一个类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后,找不到文件
主要是因为文件名的编码问题,和locale设置有关系。在linux中可以使用convmv来将文件名转换成想要的编码。
  • form使用get时取不到值的问题
如果在url中拼了参数,并把method的方法设置了get时,url中的参数会消失,费解。。无语。。
  • jquery和checkbox
取得选中的checkbox可以使用$("input[name='current_modules']:checked"),进行遍历
设置可以遍历checkbox,然后$(this).attr("checked", true/false);
  • float
    内联元素:又叫行内元素。设置高度和宽度不起作用
   每个块级元素都是从一个新行开始显示,而且其后的无素也需另起一行进行显示。
    浮动元素会生成一个块级框,而不论它本身是何种元素;且要指明一个宽度,否则它会尽可能地窄;另外当可供浮动的空间小于浮动元素时,它会跑到下一行,直到拥有足够放下它的空间。与clear配合使用
 
  • jquery验证框架
Rules指的是配置的验证条件,如required。normalizeRules方法是标准化这些rule,如确保min的参数是number型的。失去焦点时主要调用堆栈为
$.extend.check (jquery.validate.js:527)
$.extend.element (jquery.validate.js:357)
$.extend.defaults.onfocusout (jquery.validate.js:224)
check方法中从rules中取得method,及parameters。如required 的method即为required,参数是true。从来调用required 方法

 

  • 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的索引合并策略
LogMergePolicy的主要子类有LogByteSizeMergePolicy和LogDocMergePolicy,分别是按照索引的大小和文件数进行merger的。 LogDocMergePolicy 主要的合并参数有下面几个 
mergeFactor:当大小几乎相当的段的数量达到此值的时候,开始合并。 
minMergeSize:所有大小小于此值的段,都被认为是大小几乎相当,一同参与合并。 
maxMergeSize:当一个段的大小大于此值的时候,就不再参与合并。 
maxMergeDocs:当一个段包含的文档数大于此值的时候,就不再参与合并。
如果先生成索引库以后,使用 IndexWriter.
addIndexes(IndexReader[])合并这些索引库时,上面的合并策略并不起使用。生成几个cfs文件由 IndexReader[]的个数决定 ,目前使用了
IndexWriter.
forceMerge强制进行合并。
  • java的socket连接慢的问题
socket传入的String是代表的机器名,所以如果传入的是ip,会把ip当成机器名,并通过DNS去查找,这样比较耗时。可以在hosts中加入类似的配置来解决
192.168.1.200      192.168.1.200
  • lucene优化
排序时,lucene是将所有文档排序字段的值都加载到内存中。lucene用String排序比较占内存,可以考虑使用int等排序。
范围 查找时,查找字段是String时,使用TermRangeQuery效率比较低。可以考虑使用NumericRangeQuery。
  • java的while循环中有swith的情况
两个单独用蛮容易理解的。两个在一起的情况,不注意的话,会晕。
swith中有break是指中止这次swith。
swith中有continue是指继续while的下次循环。
如果想在swith块中停止while循环呢,可以使用标签。如break testlable;

你可能感兴趣的:(笔记)