博文

Java如何读写txt文件的代码(2012-12-21 15:09:00)

摘要: 有关Java如何读写txt文件这个问题经常在面试时会被问到,不懂或不熟悉的同志们可是要记好了哟!先来看下具体实现吧! package common; import java.io.*; import java.util.ArrayList; public class IOTest { public static void main (String args[]) { ReadDate(); WriteDate(); } /** * 读取数据 */ public static void ReadDate() { String url = “e:/2.txt”; try { FileReader read = new FileReader(new File(url)); StringBuffer sb = new StringBuffer(); char ch[] = new char[1024]; int d = read.read(ch); while(d!=-1){ String str = new String(ch,0,d); sb.append(str); d = read.read(ch); } System.out.print(sb.toString()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 写入数据 */ public static void WriteDate() { try{ File file = new File(“D:/abc.txt”); if (file.exists()) { file.delet......

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

java 获取网页源码(2012-12-21 15:03:00)

摘要: package gogo.cool;     02     03 import java.io.BufferedReader;     04 import java.io.IOException;     05 import java.io.InputStreamReader;     06 import java.net.HttpURLConnection;     07 import java.net.URL;     08     09 public class test1 {     10     11     public static void main(String[] a) throws IOException {     12     13         String url = “http://www.baidu.com”;     14     15         System.out.println(getHTML(url, “gbk”)); // 使用原网页里声明的gb2312反而会出现乱码     16     17     }     18    ......

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

Java中23种设计模式详解(2012-12-20 14:21:00)

摘要: 通常,一个设计模式描述了一个被证实可行的方案。这些方案非常普遍,是具有完整定义的最常用的模式。一般模式有4个基本要素:模式名称(pattern name)、问题(problem)、解决方案(solution)、效果(consequences)。 常见的Java设计模式有以下23种: 1、抽象工厂模式(Abstract Factory):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 2、适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口或类不兼容而不能一起工作的类可以一起工作。 3、桥梁模式(Bridge):将抽象部分与它的实现部分分离,广州达内使它们都可以独立地变化。 4、建造模式(Builder):将一个复杂对象的构建与它的表示分离,使同样的构建过程可以创建不同的表示。 5、责任链模式(Chain of Responsibility):为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。 6、命令模式(Command):将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。 7、合成模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。 8、装饰模式(Decorator):动态地给一个对象添加一些额外的职责。就扩展功能而言,它能生成子类的方式更为灵活。 9、门面模式(Facade):为子系统中的一组接口提供一个一致的界面,门面模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 10、工厂方法(Factory Method):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method 使一个类的实例化延迟到其子类。 ......

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

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 implements CycleRecoverable{ @Id @Column(…) private String id; @ManyToOne private Company company; public Object onCycleDetected(Context arg0) { Employee temp = new Employee(); temp.setId(id); return temp; } //setters/getters …… } 注意到onCycleDetected方法就是一个回调方法,当遇到循环引用时,jaxb引擎会调用这个方法,用return对象来替换this.所以在这个过程中,就可以将引......

阅读全文(2531) | 评论: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提供从输入流中读出对象的readObject方法。使用这些方法的对象必须已经被序列化的。也就是说,必须已经实现 Serializable接口。如果你想writeobject一个hashtable对象,那么,会得到一个异常。 序列化的过程就是对象写入字节流和从字节流中读取对象。将对......

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

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

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

阅读全文(1885) | 评论: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 类作为拖拉的矩形区域以作剪裁 Robot 类用于捕获屏幕截图 使用鼠标侦听器来获取鼠标的拖拉时间 Robot 类使用 BufferedImage 来做图像处理 File 类用于打开图像文件 ImageIO 类用于将图像写到 png 或者 jpg 图像文件中 JFrame 用于显示界面 现在我们编写包含 main 方法的入口类 Listing2: 入口类 public class CropImage extends JFrame implements MouseListener, MouseMotionListener { int drag_status=0,c1,c2,c3,c4; public static voi......

阅读全文(2313) | 评论: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 的快捷键,提示代码错误原因以及处理办法。跟双击代码中的红叉一样的功能。这是一个很常用功能。一般用于修改语法错误。但是个人觉得用在增加接口方法(或参数),类方法(或参数),更能体现出它的便捷之处。比如当你想为一个接口或类增加一个方法,只许在要调用的地方写上你的方法和参数(先不要定义),CTRL+1,选择 create method…就可以自动为你增加想要的方法,省了很多要写的代码。本质是先制造一个错误的语法,让系统自动修复功能帮我们完成代码。 6)CTRL+2 修改变量名,定义变量。按下快捷键,会弹出一个快捷键列表(窗口右下角),在选择你要的操作。 3 快速定位---快捷键 1)CTRL+SHIFT+R(非常好用) 在eclipse中快速定位文件(任何类型)。有了这个,只要记得文件的大概名字,就可以通过模糊查询,搜......

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

SQL Server数据库中交易日志怎么维护?(2012-12-06 11:21:00)

摘要: 交易日志(Transaction logs)是数据库结构中非常重要但又经常被忽略的部分。由于它并不像数据库中的schema那样活跃,因此很少有人关注交易日志。 交易日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。对于任何每一个交易过程,交易日志都有非常全面的记录,根据这些记录可以将数据文件恢复成交易前的状态。从交易动作开始,交易日志就处于记录状态,交易过程中对数据库的任何操作都在记录范围,直到用户点击提交或后退后才结束记录。每个数据库都拥有至少一个交易日志以及一个数据文件。 出于性能上的考虑,SQL Server将用户的改动存入缓存中,这些改变会立即写入交易日志,但不会立即写入数据文件。交易日志会通过一个标记点来确定某个交易是否已将缓存中的数据写入数据文件。当SQL Server重启后,它会查看日志中最新的标记点,并将这个标记点后面的交易记录抹去,因为这些交易记录并没有真正的将缓存中的数据写入数据文件。这可以防止那些中断的交易修改数据文件。 维护交易日志 因为很多人经常遗忘交易日志,因此它也会给系统带来一些问题。随着系统的不断运行,日志记录的内容会越来越多,日志文件的体积也会越来越大,最终导致可用磁盘空间不足。除非日常工作中经常对日志进行清理,否则日志文件最终会侵占分区内的全部可用空间。日志的默认配置为不限容量,如果以这种配置工作,它就会不断膨胀,最终也会占据全部可用空间。这两种情况都会导致数据库停止工作。 对交易日志的日常备份工作可以有效的防止日志文件过分消耗磁盘空间。备份过程会将日志中不再需要的部分截除。截除的方法是首先把旧记录标记为非活动状态,然后将新日志覆盖到旧日志的位置上,这样就可以防止交易日志的体积不断膨胀。如果无法对日志进行经常性的备份工作,最好将数据库设置为"简单恢复模式"。在这种模式下,系统会强制交易日志在每次记录标记点时,自动进行截除操作,以新日志覆盖旧日志。 截除过程发生在备份或将旧标记点标为非活动状态时,它使得旧的交易记录可以被覆盖,但这并不会减少交易日志实际占用的磁盘空间。就算不再使用日志,它依然会占据一定的空间。因此在维护时,还需要对交易日志进行压缩。压缩交易日志的方法是删除非活动记录,从而减少日志文件所占用的物理硬盘......

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