仓酷云

标题: 了解下JAVA的Java收集编程从进门到精晓(33):非堵塞I/O的缓冲区(Buffer) ... [打印本页]

作者: 萌萌妈妈    时间: 2015-1-18 11:21
标题: 了解下JAVA的Java收集编程从进门到精晓(33):非堵塞I/O的缓冲区(Buffer) ...
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net网页编程,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。
假如将同步I/O体例下的数据传输比做数据传输的零散体例(这里的零散是指在数据传输的过程当中是以零散的字节体例举行的),那末就能够将非堵塞I/O体例下的数据传输比做数据传输的集装箱体例(在字节和低层数据传输之间,多了一层缓冲区,因而,能够将缓冲区看作是装载字节的集装箱)。人人能够设想,假如我们要输送对照少的货品,用集装箱好象有点不太合算,而假如要输送上百吨的货品,用集装箱来输送的本钱会更低。在数据传输过程当中也是一样,假如数据量很小时,利用同步I/O体例会更合适,假如数据量很年夜时(一样平常以G为单元),利用非堵塞I/O体例的效力会更高。因而,从实际上说,数据量越年夜,利用非堵塞I/O体例的单元本钱就会越低。发生这类了局的缘故原由弛缓冲区的一些特征有着间接的干系。在本节中,将对缓冲区的一些次要特征举行解说,使读者能够充实了解缓冲区的观点,并能经由过程缓冲区来进步程序的实行效力。
创立缓冲区
Java供应了七个基础的缓冲区,分离由七个类来办理,它们都能够在java.nio包中找到。这七个类以下所示:
ByteBuffer
ShortBuffer
IntBuffer
CharBuffer
FloatBuffer
DoubleBuffer
LongBuffer
这七个类中的办法相似,只是它们的前往值或参数和响应的复杂范例绝对应,如ByteBuffer类的get办法前往了byte范例的数据,而put办法必要一个byte范例的参数。在CharBuffer类中的get和put办法前往和传送的数据范例就是char。这七个类都没有public机关办法,因而,它们不克不及经由过程new来创立响应的对象实例。这些类都能够经由过程两种体例来创立响应的对象实例。
1.经由过程静态办法allocate来创立缓冲区。
这七类都有一个静态的allocate办法,经由过程这个办法能够创立有最年夜容量限定的缓冲区对象。allocate的界说以下:
ByteBuffer类中的allocate办法:
public static ByteBuffer allocate(int capacity)
IntBuffer类中的allocate办法:
public static IntBuffer allocate(int capacity)
其他五个缓冲区类中的allocate办法界说和下面的界说相似,只是前往值的范例是响应的缓冲区类。
allocate办法有一个参数capacity,用来指定缓冲区容量的最年夜值。capacity的不克不及小于0,不然会抛出一个IllegalArgumentException非常。利用allocate来创立缓冲区,并非一会儿就分派给缓冲区capacity巨细的空间,而是依据缓冲区中存储数据的情形来静态分派缓冲区的巨细(实践上,在低层Java接纳了数据布局中的堆来办理缓冲区的巨细),因而,这个capacity能够是一个很年夜的值,如1024*1024(1M)。allocate的利用办法以下:
ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
IntBuffer intBuffer = IntBuffer.allocate(1024); 
在利用allocate创立缓冲区时使用注重,capacity的寄义跟着缓冲区的分歧而分歧。如创立字节缓冲区时,capacity指的是字节数。而在创立整型(int)缓冲区时,capacity指的是int型值的数量,假如转换成字数,capacity的值应当乘4。如下面代码中的intBuffer缓冲区最年夜可包容的字节数是1024*4=4096个。
<p>
net网页编程程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net网页编程比。java程序员都是代码完成的,所以java程序员常戏称.net网页编程程序员是操作员,呵呵。
作者: 乐观    时间: 2015-1-18 16:28
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
作者: 简单生活    时间: 2015-1-22 12:19
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 兰色精灵    时间: 2015-1-25 09:45
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
作者: 若天明    时间: 2015-2-2 19:07
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
作者: 谁可相欹    时间: 2015-2-8 04:18
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者: 金色的骷髅    时间: 2015-2-9 22:23
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
作者: 只想知道    时间: 2015-2-24 20:51
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
作者: 分手快乐    时间: 2015-3-1 22:42
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
作者: 深爱那片海    时间: 2015-3-9 03:25
是一种突破用户端机器环境和CPU
作者: 第二个灵魂    时间: 2015-3-16 20:12
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者: 因胸联盟    时间: 2015-3-23 00:07
是一种使网页(Web Page)产生生动活泼画面的语言




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2