博文

Java对象序列化所引起的循环引用的思考(2012-12-19 15:40:00)

摘要: Java对象序列化所引起的循环引用的思考


解决问题


既然需要引擎更聪明,那就没办法,就得烧香拜佛,希望制造商的产品扩展性足够好,考虑了足够多的情况。


幸运的是,jaxb提供了有这种扩展。(CycleRecoverable接口)


行军打仗(例子先行):(将以上的例子改下)


@Entity


public class Company implements CycleRecoverable{


@Id


@Column(…)


private String id;


@OneToMany(…)


private Employee employee;


//当遇到循环引用时,java培训用temp替代this,返给jaxb解析。


public Object onCycleDetected(Context arg0) {


Company temp = new Company ();


temp.setId(id);


return temp;


}


//setters/getters


……


}


@Entity


public class Employee im......

阅读全文(1951) | 评论:0

Java对象序列化使用基础(2012-12-19 15:35:00)

摘要: 所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象。这个过程也可以通过网络实现,可以先在Windows机器上创建一个对象,对其序列化,然后通过网络发给一台Unix机器,然后在那里准确无误地重新"装配"。像RMI、Socket、JMS、EJB它们中的一种,彼此为什么能够传递Java对象,当然都是对象序列化机制的功劳。


Java对象序列化机制一般来讲有两种用途:


Java的JavaBeans: Bean的状态信息通常是在设计时配置的,Bean的状态信息必须被存起来,以便当程序运行时能恢复这些状态信息,这需要将对象的状态保存到文件中,而后能够通过读入对象状态来重新构造对象,恢复程序状态。


RMI允许象在本机上一样操作远程机器上的对象;或使用套接字在网络上传送对象的程序来说,这些都是需要实现serializaiton机制的。


我们通过让类实现Java.io.Serializable 接口可以将类序列化。这个接口是一个制造者(marker)接口。也就是说,对于要实现它的类来说,该接口不需要实现任何方法。它主要用来通知Java虚拟机(JVM),需要将一个对象序列化。


对于这个,有几点我们需要明确:


并非所有类都可以序列化,在cmd下,我们输入serialver Java.net.Socket,可以得到socket是否可序列化的信息,实际上socket是不可序列化的。


Java有很多基础类已经实现了serializable接口,比如string,vector等。但是比如hashtable就没有实现serializable接口。


将对象读出或者写入流的主要类有两个: ObjectOutputStream与ObjectInputStream .ObjectOutputStream 提供用来将对象写入输出流的writeObject方法, ObjectInputStream提供......

阅读全文(1258) | 评论:0

JAVA类的方法调用和变量(2012-12-14 11:39:00)

摘要:一、累的分类:
   
    1.普通类
   
    2.抽象类(含有抽象方法的类)
   
    3.静态类(不需要实例化,就可以使用的类)
   
    二、方法的分类:
   
    1、私有方法(只有类的内部才可以访问的方法)
   
    2、保护方法(只有类的内部和该该类的子类可以访问的方法)
   
    3、公共方法(无论内部或外部均可访问的方法)
   
    4、静态方法(可以不实例化对象,通过类名。方法就可以调用的方法)
   
    5、抽象方法(只有方法的签名而没有实现的方法)
   
    三、方法的调用:
   
    1.普通类:实例化一个该类的对象,然后通过对象访问。例如:
   
    classs A{
   
    public void method 1(){
   
&nb......

阅读全文(1353) | 评论:0

如何在Java中进行图片剪裁(2012-12-14 11:37:00)

摘要: 在这篇文章中我们将学习如何用 Java 对图像进行剪裁并将剪裁出来的部分单独保存到文件中。


我们将通过以下步骤来学习:


输入图像,指定要处理的图像路径


允许用户拖放要剪裁的部分


选择后使用 Robot 类来确定剪裁部分的坐标


剪裁所选图像并保持


接下来我们开始编码部分。


Listing1: 引入的类


import java.awt.Graphics;


import java.awt.Rectangle;


import java.awt.Robot;


import java.awt.event.MouseEvent;


import java.awt.event.MouseListener;


import java.awt.event.MouseMotionListener;


import java.awt.image.BufferedImage;


import java.io.File;


import javax.imageio.ImageIO;


import javax.swing.JFrame;


说明:


Graphics 类包含绘制矩形的方法


我们使用 Rectangle 类作为拖拉的矩形区域以作剪裁
......

阅读全文(1416) | 评论:0

Eclipse快捷键与使用技巧总结(2012-12-14 11:29:00)

摘要: 此文档主要介绍个人认为比较实用的技巧,常用技巧不做介绍。资料来源于网络,自己再集中整理的。


一、实用类快捷键


1 常用熟悉的快捷键


CTRL+C(复制)、CTRL+X(剪切)、CTRL+Z(撤销)、CTRL+F(查找)、CTRL+H(搜索文件或字符串)、CTRL+Y(重做)、CTRL+/(双斜杠注释)、ALT+/(提示)、CTRL+SHIFT+F(格式化代码)


2 编码辅助类


1)CTRL+D


删除当前行。


2)CTRL+ALT+Down(Up)


复制当前行到下(上)一行中。比CTRL+C单纯的复制功能要方便好用(省掉了粘贴步骤),主要是用在编写代码时,需要移动代码的地方。


3)ALT+Down、ALT+Up.


移动单行(多行)代码。也是比CTRL+C更好的快捷键。


4)ALT+SHIFT+J(建议要使用)


给类,方法,变量添加注释,在类,方法,变量首行,按下此组合键。之所以要建议使用,是为了代码的规范性。现在很多人都没有给自己写的类,方法,变量加上doc文档注释,根本无法生成api 文档。因此每个人在添加一个类、方法时,必须给它加上标准的doc文档注释。(添加类注释有更简便的方法,看后面的配置章节)


5)CTRL+1


Fixed 的快捷键,提示代码错误原因以及处理办法。跟双击代码中的红叉一样的功能。这是一个很常用功能。一般用于修改语法错误。但是个人觉得用在增加接口方法(或参数),类方法(或参数),更能体现出它的便捷之处。比如当你想为一个接口或类增加一个方法,只许在要调用的地方写上你的方法和参数(先不要定......

阅读全文(1478) | 评论:0