`
wsqwsq000
  • 浏览: 676548 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表

java动态代理

    博客分类:
  • j2ee
所谓Dynamic Proxy(动态代理)是这样一种class: 它是在运行时生成的class,在生成它时你必须提供一组interface给它,然后该class就宣称它实现了这些interface。你当然可以把该class的实例当作这些interface中的任何一个来用。当然啦,这个Dynamic Proxy其实就是一个Proxy,它不会替你作实质性的工作,在生成它的实例时你必须提供一个handler,由它接管实际的工作。动态代理更有利于程序的扩展;不需要更改原有的代码。能在运行过程中根据接口的类型动态的调用实现该接口的类   在目前的Java开发包中包含了对动态代理的支持,但是其实现只支 ...
java动态代理   Proxy.newProxyInstance方法,将动态产生一个类$Proxy0,这个类既继承了Proxv又实现了所指定类的接口. 该接口有一个方法,令为action,则$Proxy0中实现的action将直接调用InvocationHandler对象的invoke方法.实现的接口的方法,   动态代理的意义:在函数可能变动的地方,使用动态代理封装这个变化点,让程序员在另一处变动。这处就是继承InvocationHandler的子类中。     在程序运行时,让封装点按需要变动。还必须对动态代理进行封装:    在这个封装类中,将使用类反射器。把已经变动好的类文件的 ...
1. 代理模式 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式一般涉及到的角色有: 抽象角色:声明真实对象和代理对象的共同接口; 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。 真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。   以下以《Java与模式》中 ...
面向对象的三个基本特征是:封装、继承、多态。 封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承,可以通过“继承”(Inherita ...
★ 线程状态        Java虚拟机将线程运行过程分成四种状态 。 (1) New 新生;(2) Runnable 可运行;(3) Blocked 阻塞;(4) Dead 死亡。      值得注意的是: 线程的可运行状态并不代表线程一定在运行(runnable != running ) 。 大家都知道:所有现代桌面和服务器操作系统都使用了抢占式的线程调度策略 。一旦线程开始执行,并不是总是保持持续运行状态的。当系统分给它的时间片(非常小的运行时间单位)用完以后,不管程序有没有执行完,线程被强制放弃CPU,进入就绪状态,直到下次被调度后开始继续执行。也就是说, Runnable可运行状态的 ...
★ Java对象赋值 Java代码 Employee e1=new Employee("李"); //Employee是一个自定义类        Employee e2=e1; //赋值对象        e2.setName("王");//改变对象e2的名字        System.out.println(e1.getName()); //打印e1的结果: 王               这就是Java的对象赋值,改变e2的内容竟然会影响e1的内容。原因很简单,就是e1和e2这两个对象引用都指向了堆 ...

java nio

    博客分类:
  • j2ee
1.   基本 概念 IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。 所有语言运行时系统提供执行 I/O 较高级别的工具。 (c 的 printf scanf,java 的面向对象封装 ) 2.    Java 标准
前言:      jdk供的无阻塞I/O(NIO)有效解决了多线程服务器存在的线程开销问题,但在使用上略显得复杂一些。在NIO中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个CPU的处理能力和处理中的等待时间,达到提高服务能力的目的。     这段时间在研究NIO,写篇博客来记住学过的东西。还是从最简单的Hello World开始, client多线程请求server端,server接收client的名字,并返回Hello! +名字的字符格式给client。当然实际应用并不这么简单,实际可能是访问文件或者数据库获取信息返回给client。非阻塞 ...

用NIO读写文件

    博客分类:
  • j2ee
我们用原有 IO 读写文件应该不会陌生了,顺带回顾一下,大致两种:1. 在 InputStream 或 OutputStream 上读写字节或字节数组,读 InputStream 时用是否返回 -1 来判断是否到达末尾。2. 包装成 Reader/Writer 可以直接读写字符串,进一步包装 ...
服务器代码:   import java.net.*;   import java.nio.*;   import java.nio.channels.*;   import java.util.*;   public class server   {   ServerSocketChannel ssc ;   public void start()   {   try   {   Selector selector = Selector.open();   ServerSocketChannel ssc=ServerSocketChannel.open();   s ...
Java NIO与IO的区别和比较 导读J2SE1.4以上版本中发布了全新的I/O类库。本文将通过一些实例来简单介绍NIO库提供的一些新特性:非阻塞I/O,字符转换,缓冲以及通道。 一. 介绍NIONIO包(java.nio.*)引入了四个关键的抽象数据类 ...

socket的常见异常

    博客分类:
  • j2ee
第1个异常是java.net.BindException:Address already in use: JVM_Bind。该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监听。此时用netstat –an命令,可以看到一个Listending状态的端口。只需要找一个没有被占用的端口就能解决这个问题。   第2个异常是java.net.ConnectException: Connection refused: connect。该异常发生在客户端进行new Socke ...
我从java1.3开始学习java,后来主要用1.4,再后来1.5和1.6中的很多新特性,都停留在“知道”的状态,比如nio,虽然据说可以提升性能,但并没有真正深入使用和测试过,工作操作文件的情况不多,所以关注也不多,即便用到,也 ...
从JDK 1.4开始,Java的标准库中就包含了NIO,即所谓的“New IO”。其中最重要的功能就是提供了“非阻塞”的IO,当然包括了Socket。NonBlocking的IO就是对select(Unix平台下)以及 WaitForMultipleObjects(Windows平台)的封装,提供了高性能、易伸缩 ...
最近做了一个小型的通讯项目,有一点体会,在这里拿来和大家分享一下: 一:关于Socket的长连接 这个项目中,客户提出了“一次连接,10次交互”的需求,就是说创建一个Socket后,在客户端与服务端完成10次交互前(客户端请求,服务端响应算一次交互),不会被关掉。起初按照这种思路来做Socket的长连接,发现在使用阻塞IO的情况下,如果,在一次交互后不关闭Socket,那么下次客户端虽然可以正常发送请求,但是怎么也读不出服务端的响应信息,因为服务端的输入流被阻塞在上次读取后。如果,每次交互后都关掉Socket,就不符合客户的要求了。于是查资料,说是用异步输入输出流java.nio,于是将其引入项 ...
Global site tag (gtag.js) - Google Analytics