博文
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......
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提供......
JAVA类的方法调用和变量(2012-12-14 11:39:00)
摘要:一、累的分类:
1.普通类
2.抽象类(含有抽象方法的类)
3.静态类(不需要实例化,就可以使用的类)
二、方法的分类:
1、私有方法(只有类的内部才可以访问的方法)
2、保护方法(只有类的内部和该该类的子类可以访问的方法)
3、公共方法(无论内部或外部均可访问的方法)
4、静态方法(可以不实例化对象,通过类名。方法就可以调用的方法)
5、抽象方法(只有方法的签名而没有实现的方法)
三、方法的调用:
1.普通类:实例化一个该类的对象,然后通过对象访问。例如:
classs A{
public
void method 1(){
&nb......
如何在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 类作为拖拉的矩形区域以作剪裁
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 的快捷键,提示代码错误原因以及处理办法。跟双击代码中的红叉一样的功能。这是一个很常用功能。一般用于修改语法错误。但是个人觉得用在增加接口方法(或参数),类方法(或参数),更能体现出它的便捷之处。比如当你想为一个接口或类增加一个方法,只许在要调用的地方写上你的方法和参数(先不要定......