笔记

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 这种方式,可能锁住的实际中的类,并不是需要保护的静态成员变量所对应的类(有可能是其子类)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值