关闭

杂七杂八笔记

60人阅读 评论(0) 收藏 举报
分类:

1,IOE模式

传统IOE模式:I:IBM的服务器;O:Oracle数据库;E:EMC存储设备

2,同步和非同步;阻塞和非阻塞

2.1 区别

        一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作。 
        同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO。 
        阻塞IO和非阻塞IO的区别在于第一步,发起IO请求是否会被阻塞,如果阻塞直到完成那么就是传统的阻塞IO,如果不阻塞,那么就是非阻塞IO。 

2.2 各个模式优缺点

        BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
        NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。
        AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

2.3 举例

        如果你想吃一份宫保鸡丁盖饭: 
同步阻塞:你到饭馆点餐,然后在那等着,还要一边喊:好了没啊! 
同步非阻塞:在饭馆点完餐,就去遛狗了。不过溜一会儿,就回饭馆喊一声:好了没啊! 
异步阻塞:遛狗的时候,接到饭馆电话,说饭做好了,让您亲自去拿。 
异步非阻塞:饭馆打电话说,我们知道您的位置,一会给你送过来,安心遛狗就可以了。 

3,Java相关小知识

3.1 volatile

 并发编程-volatile解析:http://www.cnblogs.com/dolphin0520/p/3920373.html

        volatile关键字无法保证操作的原子性。通常来说,使用volatile必须具备以下2个条件:

   1)对变量的写操作不依赖于当前值

   2)该变量没有包含在具有其他变量的不变式中

单例模式需要同步双重检查(Double-Check)来解决多线程下可能出现的问题。

3.2 JQuery validate 

JQuery validate 只对name字段进行校验,无法对hidden域进行校验

3.3 toArray方法

toArray方法都需要带参数,而不带参数的toArray()是不行的,运行时会报ClassCastException异常

3.4 synchronized

synchronized(C.class) { /* body */ }
synchronized(getClass()) { /* body */ } // Do not use 这种方式,可能锁住的实际中的类,并不是需要保护的静态成员变量所对应的类(有可能是其子类)


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1738次
    • 积分:40
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档