Java学习笔记——其它Java知识

1. JNLP(Java网络加载协议),它可以允许使用一组API及Ant等构建工具,在用户访问Web服务器时,Servlet通过响应生成应用程序及数据文件的jar包,下载传输到客户端去执行,然后再将结果返回服务器,由此节约服务器资源。下载文件运行时,需要提供签名保障安全。大致包含一个JNLP描述文件等的设置,利用了Java执行Runtime外部命令及Java中执行Ant的一些API。

2. Java语言图形化编程,事件传递是使用了观察者模式。在Java中使用观察者模式,还可以深入一些,使用JavaBean绑定属性模式,Java中提供了一些类,用它提供的方法设置属性;另一深入是多点广播事件模式,即从属性层次上升到事件层次,事件继承自java.awt.event包中的Events类。具体过程如下:在对属性进行设置等操作前后,但自己保存的事件监听者List中的Listener一个个取出来,执行它们的handleEvent(eventObject)操作。

3. 由于JavaBean绑定属性和多点广播事件主要有两个缺点:事件传播由事件源控制;每个监听者都需要注册自己感兴趣的事件。所以Java采用了事件服务机制克服这些缺点。它包含注册机制、传送机制和一个将事件提交、传送的公共机制,事件源与监听器直接与服务系统打交道。

4. 其于主题的事件传递:将事件用树形结构组织起来,侦听器可向任一节点注册,而接收该结点及其以下的所有事件的更新。

5. JNI(Java Native Interface)Java本地接口是Java SDK的一部分,JNI允许Java调用C/C++的代码,或反之。它为Java的开放性提供了思路,为编程提供了更多的选择。它会破坏Java的可移植性,增强C/C++的可移植性。不同语言间的类型对应也需要一些时间和步骤来处理,甚至C不是面向对象的。JNI大致步骤:

(1)Java调用C/C++:先写Java类,方法声明为native,表示由其它本地代码实现。编译该类,并用javah.exe工具(Java自带)生成对应的C/C++头文件。然后用C/C++实现这些头文件,编译为代码库,这样便可在java中调用这些方法了。

(2)C/C++中调用Java:把Java编译好,编写C/C++程序创建和实例化JVM(利用JNI提供的可供C/C++调用的jvm.dll等文件)。这样便可在其中调用Java代码了。

6. 用于开发分布式对象的一些重要基础结构:(1)Java远程方法调用RMI(2)公共请求代理体系结构CORBA(3)微软分布式组件对象模型DCOM(4)EJB。 

7. RMI的用途是使分布在不同JVM中的对象的外表和行为和本地对象一样,一旦获得了引用,使用起来便同本地对象一样,连垃圾收集也不用管。

8. 为实现位置透明性,RMI引入了两种特殊的对象,存根与框架:

(1)存根(stub)是代表远程对象的客户端对象。存根具有远程对象的方法和属性列表,但客户端调用存根方法时存根通过RMI基础结构将请求转到到远程对象,由它执行。

(2) 框架(skeleton)处理服务器端的所有细节,JDK2工具rmic会自动生成上述存根与框架的对象的类文件。

9. 服务器端初始化时,建好了远程对象,并用bind绑定好了命名空间,客户端用lookup查找该对象。

10. CORBA本身是一个规范,它有不同的语言实现,Java,C++等。功能比RMI强大,也复杂许多。

11. JTA(Java Transaction API)为J2EE平台提供了分布式事务服务,要用JTA进行事务界定,需要下载JavaEE SDK,调用其javax.transaction.UserTransaction接口中的方法,用JTA界定事务需要JDBC驱动实现了javax.sql.XADataSource, javax.sql.XAConnection和javax.sql.XAResource接口。Oracle、Sybase、DB2、SQLServer等大型数据库才支持分布式事务。MySQL5.0之后也增加了对XA的支持,用户只需调用UserTransaction,JDBC Driver会提供分布式事务的实现。

12. 水箱:在计算机内构建一个虚拟环境供程序运行,有害程序和病毒等的攻击都只限于水箱中,有些浏览器便采用了这种技术。JavaApplet也在水箱中运行,无法访问本地资源如文件读写等。因为Java的类加载器为层次结构的,哪怕同一包中的类,如果不同的ClassLoader加载的,就是相互隔绝的。Java水箱安全模型的另一部分是,对Class文件进行严格校验;在Applet等访问本地资源时使用签名;Java语言本身的安全机制(如数组越界、不用指针、类型检查)等。

13. i=i++和i=i+1;等式子,其值有时增了,有时没增,最好不使用连体的i+++i++之类的表达式,以免有歧义。

14. Java中的byte,在127之前与int一样,int的128会强制转换为byte的-128,类推至-127,-,……-1。所以byte的取值范围为-128——127,byte很少用。

15. short s=1;s=s+1;//错,因s+1为int,不能直接给s,short s=1;s+=1;//正确。

16. 会可能丢失位的类型转换,需要显式类型转换,如:double c=5; int a=c;是错误的,需要int a=(int)c;

17. 关于自动装/拆箱:Integer i=null; j=i;//报错,因为j=i实际执行为j=i.value(),会产生运行时错误。

Integer i=100; Integer j=100;//i==j结果为true

Integer i=200; Integer j=200;//i==j结果为false,因为实际比较的是对象地址,而在-128——127之间的是Integer常量,会重复利用空间,跟String一样,超出此范围则不对了!

18. Java调用构造函数时的初始化顺序,两遍:分为static与非static的父、子对象及自己。

19. Java中的两个保留字为const和goto。

20. 只有内部类可以是private或protected的。

21. 普通内部类不能调用newInstance方法,因为它不存在不参构造函数,它的构造函数必须传一个外部类的指针,因此只能outer.new...的形式。

22. 判断奇偶时,不能只凭%2==1,因为负奇数%2==-1,因此判断%2==0为正确的形式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值