(参考 “ibm nio入门”)
在 NIO 库中,所有数据都是用缓冲区处理的。在读取数据时,它是直接读到缓冲区中的。在写入数据时,它是写入到缓冲区中的。任何时候访问 NIO 中的数据,都是将它放到缓冲区中。缓冲区实质上是一个数组。通常它是一个字节数组,但是也可以使用其他种类的数组。但是一个缓冲区不仅仅是一个数组。缓冲区提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程。
buffer其实只是一个美化了的数组。
状态变量
跟踪数据的状态情况使buffer可以自己管理数据资源
position: 其实是指从buffer读取或写入buffer的下一个元素位置。比如,已经写入buffer 3个元素那那么position就是指向第4个位置,即position设置为3(数组从0开始计)。
limit:还有多少数据需要从buffer中取出,或还有多少空间可以放入。postition总是<=limit。
capacity: 表示buffer本身底层数组的容量。limit绝不能>capacity。
filp():作了两件事情:1.将limit指向现在position的位置 2.将position设置为0 (limit=position;position=0)
这个过程可以使之前buffer写入数据时改变的状态变为可以“准备读取”。 ......
为了进行非阻塞的socket通信,java nio提供Channel概念的实现。Channel概念以区别于传统的基于流概念的IO。事实上Channel概念的IO既包括非阻塞式的IO也包括阻塞式IO。要Channel完成非阻塞式IO需要实现SelectableChannel接口,与Selector关联使用。SocketChannel就是这样一个SelectableChannel。
由于,selector机制本身涉及多线程的内容,与Channel关联使用较为复杂;所以这里只以片断方式,针对SocketChannel的功能进行说明简要说明。
1。创建服务端的ServerSocketChannel
关联的ServerSocket可以侦听一个port。
ServerSocketChannel sschannel;
...
sschannel = ServerSocketChannel.open();
//设置为no block方式工作
sschannel.configureBlocking(false);
//关联的server-socket开始侦听
address = new InetSocketAddress(port);
ServerSocket ss = sschannel.socket();
ss.bind(address);
2。将ServerSocketChannel注册(帮定)到一个selector用于等待外来socket连接。
当一个server socket channel得到一个外部socket连接时,可以将一个底层连接创建为一个SocketChannel实例。再将这个SocketChannell注册(帮定)到一个selector用于具体IO。 ......
1.factory因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成实例对象,
如A a=new A() 工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑实用工厂模式,
虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。
2.Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,
工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
3.Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.
用户不知道内部的具体构建细节.Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到.
4.Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 在很多操作中,
比如建立目录 数据库连接都需要这样的单线程操作。还有, singleton能够被状态化; 这样,
多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如,你要论坛中的帖子计数器,
每次浏览一次需要计数,单态类能否保持住这个计数,并且能s ......
一、连接MYSQL。
格式: mysql -h主机地址 -u用户名 -p用户密码
1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码. 如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>
2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样) 3、退出MYSQL命令: exit (回车)
二、修改密码。
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、给root加个密码ab12。首先在DOS下进入目录mysql\bin,然后键入以下命令 mysqladmin -u root -password ab12 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、再将root的密码改为djg345。 mysqladmin -u root -p ab12 password djg345
三、增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符) ......
JavaScript 可算是世界上最流行的编程语言,它曾被 Web 开发设计师贴上噩梦的标签,虽然真正的噩梦其实是 DOM
API,这个被大量的开发与设计师随手拈来增强他们的 Web 前端的脚本语言,如今越来越被重视,虽则如此,JavaScript
仍然拥有很多让人费解的东西。
1. 它以 Java 命名,但并不是 Java
它最初叫 Mocha, 接着改名为 LiveScript,最后才确定命名为 JavaScript,根据历史记录,Java 的命名与
Netscape 和 Sun 之间的合作有关,作为交换条件,Netscape 在他们备受欢迎的浏览器中创建了 Java
运行时。值得一提的是,这个名字的出台几近一个玩笑,要知道,LiveScript 和 Java 在客户端脚本方面存在敌对关系。
不管怎么说,人们后来不得不一再澄清的一件事就是,JavaScript 和 Java 毫无关系。
2. Null 是个对象?
看看这段代码,它返回的是 object。
这实在令人费解,假如 null 表示空值,它怎么可以是对象?简单说,它是 JavaScript 最初版本的错误,这个错误甚至被微软的
JScript 直接借用。
3. NaN !== NaN
NaN,表示一个非数字的值,然而问题是,NaN不等于任何东西,甚至不等于它自己。
这显然不对,事实上,如果要判断一个值确实是 NaN,你需要用 ......
简单的经验总结
系统环境
OS—Unix系的Solaris(ソラリス)
Langrage—java1.3
Framework—interstageV5(富士通的)http://software.fujitsu.com/jp/manual/b293c34h0.html
DB—Oracle10g
开发工具
IDE eclipse2.1 注:古董
tera term Unix系统的login tool
Framework interstageV5现在的最新版是V9
FFFTP 不用说了。 ......