卖便当的少年吧 关注:2贴子:701
  • 6回复贴,共1


IP属地:广东1楼2016-05-29 21:22回复
    2L


    IP属地:广东2楼2016-05-29 21:22
    回复
      2026-01-08 21:51:03
      广告
      不感兴趣
      开通SVIP免广告
      access control
      1、对于class而言,可以有public和no modifier修饰
      =public class A
      public则说明A对于world可见,任何人都可以看见A
      =class A
      则说明A只在class内和package内可见
      2、对于class【内部】而言,可以有public、protected、no modifier、private修饰【member】
      『obj.member』
      =public:该调用在world范围内都可以
      =protected:在class内,package内或者subclass内都可以
      =no modifier:在class内,package内都可以
      =private:只允许在class内
      ~~~~~~
      需要注意subclass子类extends继承baseclass基类时会继承
      public、protected、no modifier的成员(不管final与否)
      不会继承任何static成员


      IP属地:广东3楼2016-05-29 21:38
      回复
        注意当【基类】A位于p0中,【子类】B位于p0中,【子类】C位于p1中
        B可以访问A a的protected成员
        C【不可以】访问A a的protected成员
        ====
        p0:
        public class A { protected void func() {} }
        class B extends A { ... new A().func() } //ok
        p1:
        class C extends A { ... new A().func() } // error


        IP属地:广东4楼2016-05-29 21:45
        回复
          【Java NIO Channel】
          Channel和Stream类似,但有几点不同:
          1、Channel既可以读也可以写,但是stream一般只能是单向的
          2、Channel可以异步读写(asychronously)
          3、Channel总是从Buffer读取或向Buffer写入数据
          FileChannel例子:
          int bytesRead = inChannel.read(buf);
          buf.flip();
          buf.hasRemaining(); buf.get();


          IP属地:广东8楼2016-12-18 19:02
          回复
            【Java NIO Buffer】
            Buffer本质上还是一块内存存储,可以用于和Channel交互。这块内存快被放置再Buffer对象中,从而通过Buffer‘对象的方法睐管理这块内存。
            【使用Buffer的步骤】
            1、向Buffer写入数据
            2、buffer.flip() 将模式从写(读)改为读(写),(同时使得数据可读)
            例如:inChannel.read(buf) 这里是向buf写,接着为了读取buf,需要buffer.flip()
            3、从Buffer读出数据
            4、buffer.clear() 清空buffer、buffer.compact() 仅清空已读,下次写入数据从上次未读入的地方开始
            【Buffer属性(properties)】
            1、capacity 读写模式一样
            2、position 读写模式初始为0,flip时读模式会重置
            3、limit
            【分配Buffer空间】
            allocate
            【写Buffer】
            1、inChannel.read(buf)
            2、buf.put()
            【读Buffer】
            1、inChannel.write(buf) // 对于inChannel来说就是写入Channel(write)
            2、buf.get()


            IP属地:广东9楼2016-12-18 19:28
            回复
              【Java NIO scatter和gather】
              scatter:从Channel读取数据到多个buffer
              gather:从多个buffer写数据到一个Channel
              这两者在需要分开处理传送数据时很有用。例如:一条消息包括消息头(header)和消息主体(body)时,可以把它们存放在不同的buffer里。
              【scatter读】(对于channel主语来说是读)
              ByteBuffer header; ... body; ByteBuffer[] bufferArray = {header, body};
              channel.read(bufferArray); // (对于buffer主语来说是写,也就是写入buffer)
              当一个buffer满了的时候会自动移动到下一个buffer,因此只适用于固定消息大小的情况下。
              【gather写】
              channel.write(bufferArray);
              只有再position和limit之间的数据会被写入channel,因此可以适用于消息长度不同的情况。


              IP属地:广东10楼2016-12-18 21:22
              回复