《计算概论》课程 第十九讲 C 程序设计语言应用

Size: px
Start display at page:

Download "《计算概论》课程 第十九讲 C 程序设计语言应用"

Transcription

1 Java 高级技术 课程 Java 语言的高级特性 李戈 北京大学信息科学技术学院软件研究所 2009 年 4 月 11 日

2 输入 / 输出流 输入 / 输出流 为输入 / 输出数据,Java 程序与数据的发送者或接收者要建立一个数据通道, 这个通道被抽象为流 (stream); Java 语言本身不包含输入 / 输出语句, 而是通过 Java API 提供的程序包 java.io 完成的 ; 输入 / 输出流的作用 使输入 / 输出的源和目标相分离 输出时只管将数据写入输出流, 而不管数据到底写入到了哪个文件 设备或程序 ; 输入时只管从输入流读取数据, 不管到底是从哪个文件 设备或程序读取数据 ; 输入 / 输出流负责关联到具体的文件 设备或程序

3 输入 / 输出流的操作 输入 / 输出流的操作 程序对各种流的处理基本相同 : 打开流 读取 写入 关闭流 ; 程序可以用统一的形式处理输入 / 输出, 使得输入输出的编程变得非常简单和方便 文件缓冲 由于输入 / 输出外部设备的速度远低于计算机处理数据的速度, 所以文件系统一般都支持缓冲 (buffer) 机制 对于输出设备, 程序输出的数据首先存放到一个开设在内存的缓冲区中, 缓冲区中的数据装满后再整批送往外部设备

4 流系统概述 文件流 过滤器流 对象流 管道流 连接流 内容提要

5 Java 流系统概述 Java API 提供了两套流类来处理输入 / 输出 : 面向字节 (byte-oriented) 的流, 以 8 位字节为单位处理输入输出数据 可处理任何格式的数据, 但具体的格式由程序自己负责解释 面向字符 (char-oriented) 且基于 Unicode 编码的流 以 16 位的字符为处理单位, 将输入 / 输出的数据解释为基于 Unicode 编码的字符, 可用于处理文本 每套流类中都包括 : 输入流类 输出流类 基本流类 过滤器流类

6 Java 的输入输出流 面向字节的输入流类 面向字节的输出流类 面向字符的输入流类 面向字符的输出流类

7 面向字节的输入流类 面向字节的输入流类都是类 InputStream 的后代类 调用构造方法创建对象实例时会将流关联到输入源 ; abstract int read() throws IOException 从流关联的输入源读入一个字节的数据 ; int read(byte[ ] buffer) throws IOException 从流关联的输入源试图读入 buffer.length 个字节的数据放到 buffer, 直到遇上流的结尾或者发生其他问题 ; int read(byte[ ] buffer, int offset, int length) throws IOException 从流关联的输入源试图读入 length 个字节的数据放到 buffer[offset] 至 buffer[offset+length-1], 直到遇上流的结尾或者发生其他问题 ; void close() throws IOException 关闭流, 释放与流关联的输入源

8 ByteArrayInputStream 以程序中的一个字节数组作为输入源 FileInputStream 以文件作为输入源 用于完成文件中数据的输入操作 PipedInputStream 与另一输出管道相连, 读取写入到该输出管道的数据 ObjectInputStream 与另一输入流关联以方便从该输入流读取序列化对象 SequenceInputStream 用于顺序连接多个输入流, 使多个输入流用作一个输入流 FilterInputStream 用于装饰另一个输入流以提供对输入数据附加的处理功能 该类是所有输入过滤器流的祖先类 ;

9 面向字节输入流类的继承层次

10 面向字节的输出流类 面向字节的输出流类都是类 OutputStream 的后代类 abstract void write(int bytedata) throws IOException 写一个字节的数据到流关联的输出目标 ; void write(byte[ ] buffer) throws IOException 将字节数组 buffer 中的 buffer.length 个字节数据写入到关联到的输出目标 ; void write(byte[ ] buffer, int offset, int length) throws IOException 将字节数组的 buffer[offset] 至 buffer[offset+length-1] 的 length 个字节数据写入到流关联的输出目标 ; void flush( ) throws IOException 刷新流内部的缓冲区, 以强制将数据真正写入到输出目标 void close() throws IOException 关闭流, 释放与流关联的输出目标

11 ByteArrayOutputStream 以一个字节数组作为输出目标 FileOutputStream 以文件作为输出源 用于完成向文件输出数据 PipedOutputStream 与另一输入管道相连, 将输出写入到该输入管道 ObjectOutputStream 与另一输出流关联以将对象序列化并写入到该输出流 FilterOutputStream 不与具体的输出目标相关联, 而用于装饰另一个输出流以提供对输出数据附加的处理功能 该类是所有输出过滤器流的祖先类

12 面向字节输出流类的继承层次

13 面向字符的输入流类 面向字符的输入流类都是类 Reader 的后代类 调用构造方法创建对象实例时会将流关联到输入源 abstract int read() throws IOException 从流关联的输入源读入一个字符的数据 ; int read(char[] buffer) throws IOException 从流关联的输入源读入 buffer.length 个字符的数据放到 buffer, 直到遇上流的结尾或者发生其他问题 ; int read(char[] buffer, int offset, int length) throws IOException 从流关联的输入源读入 length 个字符的数据放到 buffer[offset] 至 buffer[offset+length-1], 直到遇上流的结尾或者发生其他问题 ; void close() throws IOException 关闭流, 释放与流关联的输入源

14 CharArrayReader 以程序中的一个字符数组作为输入源 通常用于对字符数组中的数据进行转换 BufferedReader 为所装饰的输入流提供缓冲区的功能, 以提高输入数据的效率 LineNumberReader 为所装饰的输入流提供计算并附加行号的功能, 通常所装饰的输入流应该关联到文本文件 InputStreamReader 将面向字节的输入流按照某种指定的字符编码集 ( 缺省是 Unicode 编码 ) 将字节编码成字符再提供输入功能, 从而将面向字节的输入流转换为面向字符的流 FileReader 以文件作为输入源 用于完成缺省编码集字符的文本文件的输入操作 PipedReader 与另一输出管道相连, 读取写入到该输出管道的以字符为基本单位的数据 StringReader 以程序中的一字符串作为输入源 通常用于对字符串中的数据进行转换 FilterReader 用于装饰另一个输入流以提供对输入数据附加的处理功能 PushbackReader 为所装饰的输入流提供回压数据的功能

15 面向字符输入流类的继承层次

16 面向字符的输出流类 面向字符的输出流类都是类 Writer 的后代类 abstract void write(int bytedata) throws IOException 写一个字符的数据到流关联的输出目标 ; void write(char[] buffer) throws IOException 将字符数组 buffer 中的 buffer.length 个字符数据写入到流关联的输出目标 ; void write(char[] buffer, int offset, int length) throws IOException 将字符数组的 buffer[offset] 至 buffer[offset+length-1] 的 length 个字符数据写入到流关联的输出目标 ; void flush() throws IOException 刷新流内部的缓冲区, 以强制将数据真正写入到输出目标 ; void close() throws IOException 关闭流, 释放与流关联的输出目标 ;

17 CharArrayWriter 将一字符数组作为输出目标, 可用于对字符数组中的数据进行转换 BufferedWriter 为所装饰的输出流提供缓冲区的功能, 以提高输出数据的效率 OutputStreamWriter FileWriter 将面向字节的输入流按照某种指定的字符编码集 ( 缺省是 Unicode 编码 ) 将字节编码成字符再提供输出功能, 从而将面向字节的输出流转换为面向字符的流 以文件作为输出源 用于完成缺省编码集字符的文本文件的输出操作 PipedWriter 与另一输入管道相连, 写入数据到该输如管道的以字符为基本单位的数据 StringWriter 将一字符串作为输出目标, 可用于对字符数组中的数据进行转换 FilterWriter PrintWriter 用于装饰另一个输出流以提供对输出数据附加的处理功能 为所装饰的输入流提供打印各种数据的能力, 这种打印通常是在屏幕或打印机上输出 与类 PrintStream 完成的功能只有细微的差别

18 面向字符输出流类的继承层次

19 举例 System.out.print(" 请输入数字 :"); // 提示用户如何正确输入 try { // 读入用户输入的一行数据 ( 作为字符串处理 ) BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String line = input.readline(); // 将字符串转换为所需类型的数据 int val1 = Integer.valueOf(line).intValue(); float val2 = Float.valueOf(line).floatValue(); double val3 = Double.valueOf(line).doubleValue(); catch (java.io.ioexception exc) { System.out.println(" 输入过程发生错误!"); return; catch (java.lang.numberformatexception exc) { System.out.println(" 用户输入数据的格式不正确!"); return;

20 System 举例说明 Java API 定义的类, 封装了许多与运行环境有关的对象和方法 ; 流对象 in out 和 err 由类 System 声明并初始化 ; in 为 InputStream 类型的公有静态常量 ; 关联到标准的输入设备 ( 通常是键盘 ) out 和 err 为 PrintStream 类型的公有静态常量 ; out 关联到标准的输出设备 ( 通常是显示器 ) err 关联到标准的错误输出设备 ( 通常也是显示器 )

21 流系统概述 文件流 过滤器流 对象流 管道流 连接流 内容提要

22 文件流 Java 程序如何操纵文件及文件中的数据 如何利用类 File 操纵文件及文件目录? 如何顺序读写文件中的数据? 如何读写文本文件? 如何读写二进制文件? 如何随机读写文件中的数据? 类 File 不属于 Java 流系统, 但是利用文件流进行文件操作的辅助类 ; 可用来操纵文件及文件目录, 包括删除 重命名文件或目录, 列出文件的属性, 创建子目录, 列出目录下的文件等 ;

23 列出当前目录下的文件名 import java.io.*; public class ListDirectory { private static class SimpleFilter implements FilenameFilter { String pattern; SimpleFilter( String pattern ) { this.pattern = pattern; public boolean accept( File dirname, String filename ) { return ( filename.indexof(pattern) >= 0 ); public static void main(string[ ] args) { String[ ] list; File path = new File("."); if (args.length > 0) list = path.list( new SimpleFilter(args[0]) ); else list = path.list( ); for (int i = 0; i < list.length; i++) System.out.println( list[i] ); System.out.println( "Total " + list.length + " file(s)"); 列出所有名字包含 args[0] 的文件名

24 举例说明 public String[ ] list(filenamefilter filter) 返回一个字符串数组, 这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录 除了返回数组中的字符串必须满足过滤器外, 此方法的行为与 list( ) 方法相同 如果给定 filter 为 null, 则接受所有名称 否则, 当且仅当在此抽象路径名及其表示的目录中的文件名或目录名上调用过滤器的 FilenameFilter.accept(java.io.File, java.lang.string) 方法返回 true 时, 该名称才满足过滤器

25 举例说明 public String[] list(filenamefilter filter) 当确定其中的文件 filename 是否可列出时, list( ) 方法调用接口 FilenameFilter 的方法 accept(dirname, filename), 此方法返回 true 表示可列出, 返回 false 表示不可列出 回调机制 list() 方法回调程序员实现接口 FilenameFilter 的方法 accept() 来控制列出的文件

26 回调机制 public String[] list(filenamefilter filter) { String names[] = list(); if ((names == null) (filter == null)) { return names; ArrayList v = new ArrayList(); for (int i = 0 ; i < names.length ; i++) { if (filter.accept(this, names[i])) { v.add(names[i]); return (String[])(v.toArray(new String[v.size()]));

27 import java.io.*; 文件操作 (1) public class FileManipulator { public static void main(string[] args) { // 列出由 args[1] 指定的文件 ( 或目录 ) 的各种属性 File file = new File(args[1]); if (file.exists()) { System.out.println(" 全名 : " + file.getabsolutepath()); System.out.println(" 可读 : " + file.canread()); System.out.println(" 可写 : " + file.canwrite()); System.out.println(" 文件名 : " + file.getname()); System.out.println(" 含有的父目录名 : " + file.getparent()); System.out.println(" 目录名 : " + file.getpath()); System.out.println(" 文件长度 : " + file.length()); System.out.println(" 最后修改时间 : " + file.lastmodified()); System.out.println( (file.isfile()? " 文件 " : (file.isdirectory()? " 目录 " : " 未知 "))); else System.out.println(" 文件或目录 " + args[1] + " 不存在.");

28 文件操作 (2) import java.io.*; public class FileManipulator { public static void main(string[] args) { if (args[0].touppercase().equals("rename")) { File oldfile = new File(args[1]); File newfile = new File(args[2]); oldfile.renameto(newfile); else if (args[0].touppercase().equals("delete")) { File file = new File(args[1]); if (file.exists()) file.delete(); else if (args[0].touppercase().equals("mkdir")) { (new File(args[1])).mkdirs();

29 文件内容的顺序读写 // 使用面向字节的文件流拷贝二进制文件 public static void copybinaryfile(string src, String dest) throws IOException { File infile = new File(src); FileInputStream in = new FileInputStream(inFile); File outfile = new File(dest); FileOutputStream out = new FileOutputStream(outFile); int ch; while ((ch = in.read())!= -1) out.write(ch); in.close(); out.close();

30 文件内容的顺序读写 // 使用面向字符的文件流拷贝文本文件 public static void copytextfile(string src, String dest) throws IOException { File infile = new File(src); FileReader in = new FileReader(inFile); File outfile = new File(dest); FileWriter out = new FileWriter(outFile); int ch; while ((ch = in.read())!= -1) out.write(ch); in.close(); out.close();

31 文件内容的随机读写 类 RandomAccessFile 支持文件随机读写 不属于 Java API 的流系统, 直接是根 Object 的子类, 类 RandomAccessFile 设置了文件指针, 该指针以字节为单位, 通过从文件开头开始计算的偏移量来指明当前读写的位置 ; 提供移动文件指针的方法 seek(long pos), 其中 pos 是移动后文件指针的位置 ; 移动文件指针到该位置之后, 调用读写方法就可以从该位置起读写数据, 读写方法在读写一定字节数的数据后会将文件指针自动移动到读写数据之后的位置 提供了方法 getfilepointer() 以获取文件指针的当前位置

32 文件内容的随机读写 import java.io.*; public class Salary { public static void main(string [] args) throws IOException { RandomAccessFile raf = new RandomAccessFile("salary.dat", "rw"); System.out.println("File length = " + raf.length()); raf.writeutf(" 张三 "); raf.writedouble(2950.5); // 保存写入第二个员工的工资数据时的起始文件位置 long pos = raf.getfilepointer(); raf.writeutf(" 李四 "); raf.writedouble(2718.0); // 将文件指针移到第二员工工资数据的起始位置 raf.seek(pos); // 读取第二个员工的工资数据 String name = raf.readutf(); double salary = raf.readdouble(); System.out.println(" 姓名 :" + name); System.out.println(" 工资 :" + salary); raf.close();

33 流系统概述 文件流 过滤器流 对象流 管道流 连接流 内容提要

34 过滤器流 当希望给某个对象添加一些功能 继承机制是添加功能的一种有效途径, 但不够灵活 将已有的组件嵌入另一个对象中, 由这个对象添加功能 称这个嵌入的对象为装饰 这个装饰与它所装饰的组件接口一致或满足 LSP 它将客户请求转发给该组件, 并且可能在转发前后执行一些额外的动作 透明性使得你可以递归的嵌套多个装饰, 从而可以添加任意多的功能

35 过滤器流 装饰模式 (decorator pattern) 是一种软件设计模式 在某些时候我们需要动态地为一些特定的对象扩充功能, 需要提供一种有别于继承机制的手段来扩充已有对象的功能, 这就是所谓的装饰 (decorate), 或者称为包装 (wrapp) 装饰模式涉及两个对象 : 被装饰者 (decoratee), 它是需要扩充功能的对象 ; 装饰者 (decorator), 它包装被装饰者, 提供附加的功能 ; 装饰模式的实现 在装饰者中存放一个被装饰者的对象, 装饰者提供的方法接口是被装饰者的方法接口的超集, 在调用装饰者的方法时, 它可能转发给被装饰者的方法, 也可能进行一些额外的处理之后再转发, 被装饰者可完成自己原有的功能

36 DECORATOR( 装饰 )

37 过滤器流 过滤器流是装饰模式的典型应用 所有过滤器流类的对象可充当装饰者, 其它流类对象可充当被装饰者, 被装饰的流对象称为过滤器流的基础流 (underlying stream) FileInputStream in1 = new FileInputStream("data.txt"); BufferedInputStream in2 = new BufferedInputStream(in1); LineNumberInputStream in3 = new LineNumberInputStream(in2); DataInputStream in4 = new DataInputStream(in3); String line; while ((line = in4.readline())!= null) { System.out.println(in3.getLineNumber() + ": " + line); in4.close();

38 面向字节输入流类的继承层次

39 数据转换流 数据转换流包括输入流 DataInputStream 和输出流 DataOutputStream, 它们可分别装饰已有的输入流和输出流, 为其额外提供直接读写基本数据类型数据的能力 ; 这些新的方法的命名均类似 readint() 或 writeint(), 以 read 或 write 开头, 后接基本数据类型名 ( 首字母大写 ); 读写字符串的方法命名为 readutf() 和 writeutf(), 支持以 UTF 编码的字符串的读写

40 数据转换流 public class VoucherData { public static void main(string[] args) throws IOException { // 用数据转换流装饰文件输出流 DataOutputStream out = new DataOutputStream(new FileOutputStream("voucher.dat")); boolean[ ] flags = { true, true, false ; String[ ] accounts = { " 经营费用 ", " 管理费用 ", " 现金 " ; double[ ] amounts = { 1500, 240.5, ; for (int i = 0; i < accounts.length; i++) { // 数据转换流可直接写基本数据类型的数据到文件 out.writeboolean(flags[i]); out.writechar('\t'); out.writechars(accounts[i]); out.writechar('\t'); out.writedouble(amounts[i]); out.writechar('\n'); out.close();

41 public class VoucherData { public static void main(string[] args) throws IOException { // 用数据转换流装饰文件输入流 DataInputStream in = new DataInputStream(new FileInputStream("voucher.dat")); while (true) { try { System.out.print((in.readBoolean()? " 借 " : " 贷 ") + ":"); in.readchar(); // 跳过制表符 '\t' StringBuffer acc = new StringBuffer(20); char ch; // 读入会计科目名称, 一个个字符的读入, // 将其拼装成正确的中文名称 while ((ch = in.readchar())!= '\t') acc.append(ch); System.out.print(acc + " "); // in.readchar(); // 注意此处不再需要跳过制表符, 因为已经读出了该字符 System.out.println(in.readDouble() + " 元 "); in.readchar(); // 跳过换行符 catch (EOFException exc) { break; in.close();

42 保存的文件 关于数据转换流 数据转换流都是面向字节的流, 将基本数据类型的数据写入到文件之后, 文件中存放的是这些数据的二进制表示 对于这种二进制文件的处理, 程序员必须确保读取数据的顺序与写入数据的顺序完全相同, 且每写入一种类型的数据之间都用制表符分割, 最后写入换行符 ; 在读取数据时, 也必须按顺序读取 如 : 写入字符串可用方法 writechars(), 但没有相应的 readchars() 方法, 因为对于二进制文件无法自动判断字符串的结束, 只能由程序根据在字符串后写入的制表符来判断

43 带行号的输入流 带行号的输入流 很多环境中需要获取 / 利用文本文件的 行信息, 带行号的的操作 ; 输入流提供了一组方法支持对 行信息 方法 setlinenumber(int num) 设置读入的当前行的行号 方法 getlinenumber() 返回当前行的行号 面向字节的流类 LineNumberInputStream 将单个字节当作文本字符处理, 因此无法处理汉字 ; 面向字符的流类 LineNumberReader 可以处理汉字 ; 不同的操作系统使用不同的特殊字符来分隔文本文件的文本行

44 import java.io.*; public class Display { public static void main(string[] args) throws IOException { if (args.length!= 1) { System.out.println(" 用法 :java Display textfilename"); return; // 使用面向字符的带行号输入流可正确显示汉字字符 LineNumberReader reader = new LineNumberReader(new FileReader(args[0])); // 而如果使用面向字节的带行号输入流则可能不能正确显示汉字字符 // LineNumberInputStream reader = new LineNumberInputStream( // new FileInputStream(args[0])); // DataInputStream in = new DataInputStream(reader); String line; while ((line = reader.readline())!= null) { System.out.print(reader.getLineNumber() + ": "); System.out.println(line); reader.close();

45 用户可以定义自己的过滤器流 设计自己的过滤器流 假定我们要编写一个电子词典程序, 该程序要求只能输入输出英文字母 为此设计过滤器流类 WordsReader 和 WordsWriter 提供对输入输出数据是否是英文字母的检查功能 // 设计一个接口定制如何检查输入输出数据是否是单词 interface WordChecker { boolean isword(char ch); private static class Checker implements WordChecker { public boolean isword(char ch) { if ((ch >= 'A' && ch <= 'Z') (ch >= 'a' && ch <= 'z')) return true; // 默认的单词分隔符 if (ch == '\n' ch == '\t' ch == '\r' ch == ' ') return true; return false;

46 class WordsReader extends FilterReader { private WordChecker checker; public WordsReader(Reader in, WordChecker checker) { super(in); // 调用超类 FilterReader 的构造函数设置被包装的基础流 this.checker = checker; // 设置检查是否是单词的检查者 // 重定义超类的 read() 方法 public int read() throws IOException { class NotWordException extends IOException { public NotWordException(String msg) { super(msg); int ch = in.read(); // 将读数据请求转发给基础流 if (!checker.isword((char) ch)) // 检查读入的数据是否是英文字母 throw new NotWordException(" 读入的数据不是英文单词!"); return ch; // 重定义超类的 read(char[ ] buf, int off, int leng) 方法 public int read(char[ ] buf, int off, int len) throws IOException { int num = in.read(buf, off, len); // 将读数据请求转发给基础流 for (int i = 0; i < num; i++) { // 进行额外的检查, 检查读入的每个字符是否都是英文字母 if (!checker.isword(buf[off + i])) throw new NotWordException(" 读入的数据不是英文单词!"); return num;

47 class WordsWriter extends FilterWriter { private WordChecker checker; public WordsWriter(Writer out, WordChecker checker) { // 调用超类 FilterWriter 的构造函数设置被包装的基础流 super(out); this.checker = checker; // 重定义超类的 write() 方法 public void write(int ch) throws IOException { // 进行额外的检查, 检查读入的数据是否是英文字母 if (!checker.isword((char) ch)) throw new NotWordException(" 要写入的数据不是英文单词!"); out.write(ch); // 将写数据请求转发给基础流 // 重定义超类的 write(char[] buf, int off, int leng) 方法 public void write(char[] buf, int off, int len) throws IOException { // 要记得重定义超类的 write(string str, int off, int len) 方法 public void write(string str, int off, int len) throws IOException { // 重定义超类的 write(string str) 方法, 调用上述 write(string, int, int) 方法 public void write(string str) throws IOException { write(str, 0, str.length());

48 设计自己的过滤器流 设计面向字符的过滤器流的关键在于 : 第一, 构造函数以基础流类的对象为参数, 以体现装饰模式的思想 ; 第二, 重定义类 FilterReader/FilterWriter ( 如果是设计面向字节的流则重定义类 FilterInputStream 和类 FilterOutputStream) 的 read() 和 write() 方法以提供附加的功能, 但要保证将真正的读写工作转发给基础流的 read() 和 write() 方法, 这种转发也体现了装饰模式的基本思想

49 流系统概述 文件流 过滤器流 对象流 管道流 连接流 内容提要

50 对象序列化 对象序列化 (Object Serialization) 将对象转换成一个字节序列的过程 对象反序列化 (Object Deserialization) 将一个字节序列恢复为对象的过程 对象序列化的作用 对象串行化使得内存中的对象可以保存到外存储器, 或者在网络上进行传输, 从而实现了对象的持久性 对象的持久性 指对象的生存期超过了创建它的程序的运行时间 对象保存到外存储器后, 可以在另一个程序 ( 或线程 ) 读取和使用该对象 ; 在网络上传输后, 可以在另一机器上读取和使用该对象

51 对象序列化 对象序列化 建立对象图与字节流之间的映射关系, 将内存中的对象图映射到字节流 内存中的对象图 是指程序在运行时对象实例的组成及对象之间的引用关系 一个对象引用是一个顶点, 它所引用的对象实例的每一个组成成分也都是一个顶点, 对象引用所代表的顶点到这些组成成分有有向边 Java 支持下的对象 ( 反 ) 序列化 对象输入流 ObjectInputStream 和对象输出流 ObjectOutputStream 提供的 writeobject() 和 readobject() 方法可读写对象 ;

52 对象序列化示例 将一个表示当前时间的日期对象写入到文件 date.dat import java.io.*; import java.util.date; public class WriteDate { public static void main(string[] args) throws IOException { Date currdate = new Date(); // 创建一个表示 ( 运行时 ) 当前时间的日期对象 ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("date.dat")); // 将对象串行化, 写入到文件 date.dat out.writeobject(currdate); out.writeobject(" 再写入一中文字符串!"); System.out.println(" 写对象 [" + currdate + "] 和中文字符串到文件 date.dat!");

53 对象序列化示例 从文件 date.dat 读入一个表示时间的日期对象 import java.io.*; import java.util.date; public class ReadDate { public static void main(string[] args) throws IOException, ClassNotFoundException { ObjectInputStream in = new ObjectInputStream(new FileInputStream("date.dat")); // 将对象反串行化, 从文件 date.dat 读取日期对象 ; Date olddate = (Date) in.readobject(); System.out.println(" 读取了日期对象 [" + olddate + "]!"); // 按顺序读入另一个对象, 即一个字符串 ; String str = (String) in.readobject(); System.out.println(" 又读取了字符串 [" + str + "]!");

54 自定义对象的序列化示例 (1) 序列化一个字符串栈类, 每个栈节点含有一个字符串和指向下一个节点的引用 class StackNodeimplements Serializable { private String element; private StackNode link; public StackNode(String str, StackNode lnk) { element = str; link = lnk; public void setlink(stacknode lnk) { link = lnk; public String getelement() { return element; public StackNode getlink() { return link;

55 自定义对象的序列化示例 (2) class StringStack implements Serializable { private StackNode top; public StringStack() { top = null; public boolean isempty() { if (top == null) return true; else return false; public String gettop() throws Exception { if (top == null) throw new Exception(" 栈为空!"); return top.getelement(); public void push(string str) { StackNode newnode = new StackNode(str, top); top = newnode; public void pop() throws Exception { if (top == null) throw new Exception(" 栈为空!"); top = top.getlink();

56 import java.io.*; public class SerializeStack { public static void writestack(string filename, StringStack stk) throws IOException { ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fileName)); out.writeobject(stk); public static StringStack readstack(string filename) throws IOExcep4ion,ClassNotFoundException { objectinputstream in = new ObjectInputStream(new FileInputStream(fileName)); return (StringStack) in.readobject(); pub,ic static void main(string[ ] args) throws OException,ClassNotFoundException { StringStack stk = new StringStack(); stk.push(" 第一个字符串!"); stk.push(" 第二个字符串!"); stk.push(" 第三个字符串!"); writestack("stack.dat", stk); StringStack oldstk = readstack("stack.dat"); oldstk.display();

57 几点重要事项 : 自定义对象的序列化 要序列化的自定义类必须声明实现接口 Serializable; 该接口没有定义任何方法, 只是一个标志, 标志实现它的类可串行化, 因此声明实现它的类也无需提供额外的方法 ; 一旦声明一个类可串行化之后, 不要轻易修改一个支持序列化的类, 这很容易导致写入的对象版本与读取的对象版本不一致 在序列化对象时, 不会将对象的静态成员写入到输出流, 因为静态成员不只属于某一个对象, 而是类的属性 在序列化对象时, 不会将使用保留字 transient 声明的成员写入到输出流, 因为这样的成员被定义为 瞬时的, 无需持久化

58 例如 : Transient 示例 class StackNode implements Serializable { private String element; private transient StackNode link;... 则在写入字符串栈对象流时就只会写入栈顶节点 ;

59 流系统概述 文件流 过滤器流 对象流 管道流 连接流 内容提要

60 管道流 管道 指将一个程序 ( 或线程 ) 的输出作为另一个程序 ( 或线程 ) 的输入的通道 许多操作系统的命令行外壳都支持管道, 例如在 Windows 操作系统中 : > dir *.java sort more 符号 ' ' 表示管道, 表示将 dir 命令的输出作为 sort 命令的输入, 将 sort 命令的输出作为 more 命令的输入 JavaAPI 提供的管道流 面向字节的管道流 PipedInputStream 和 PipedOutputStream 面向字符的管道流 PipedReader 和 PipedWriter

61 管道流示例 (1) // 线程 OutThread 用于向管道输出数据 class OutThread extends Thread { private PipedOutputStreamout; public OutThread(PipedOutputStream out) { this.out = out; // run() 方法是线程所要完成任务的主体, 一旦获得调度, 进入运行状态即调用该方法 public void run() { byte[ ] data = { 1, 2, 3 ; try { // 向输出管道写数据, 这些数据将为输入管道所接受 out.write(data, 0, 3); catch (IOException exc) { System.out.println(" 线程 OutThread 不能向管道流写入数据!");

62 管道流示例 (2) // 线程 InThread 用于从管道读取数据 class InThread extends Thread { private PipedInputStream in; public InThread(PipedInputStream in) { this.in = in; public void run() { byte[ ] data = new byte[3]; try { // 从输入管道读取数据, 这些数据由输出管道提供 in.read(data, 0, 3); catch (IOException exc) { System.out.println(" 线程 inthread 不能从管道流读取数据!"); System.out.println(" 读取的数据之和为 :" + (data[0] + data[1] + data[2]));

63 管道流示例 (3) public class DemoPipe { public static void main(string[] args) throws IOException { // 创建输入和输出管道 PipedOutputStream out = new PipedOutputStream(); PipedInputStream in = new PipedInputStream(); // 必须将输出管道与输入管道相互连接之后才能使用输入和输出管道输入和输出数据 out.connect(in); // 创建两个线程对象实例 OutThread outthread = new OutThread(out); InThread inthread = new InThread(in); // 启动两个线程,start() 方法使线程进入可运行状态, 一旦线程被 // JVM 调度获得运行即执行线程的 run() 方法 outthread.start(); inthread.start();

64 流系统概述 文件流 过滤器流 对象流 管道流 连接流 内容提要

65 连接流 连接流 将多个输入流类连接成一个输入流, 使得程序可将这多个输入流作为一个输入流来使用 连接流的构造函数以两个输入流, 或者一些输入流的枚举集 ( 接口 Enumeration 的引用变量 ) 作为参数, 将这些输入流连接成一个输入流 JavaAPI 提供的连接流 输入流类 SequenceInputStream

66 // 定义 FileList 实现接口 Enumeration 以存放输入流的枚举集 class FileList implements Enumeration { private String[] list; private int current = 0; public FileList(String[ ] list) { this.list = list; public boolean hasmoreelements() { if (current < list.length) return true; else return false; public Object nextelement() { InputStream in = null; if (!hasmoreelements()) throw new NoSuchElementException("No more files."); else { String nextelement = list[current++]; try { in = new FileInputStream(nextElement); catch (FileNotFoundException exc) { System.err.println("Can't open " + nextelement); return in;

67 连接流示例 public class Merge { public static void main(string[] args) throws IOException { // 根据用户在命令行参数中给出的文件名列表创建类 // FileList 的对象, 从而以这些文件名创建相应的文件输 // 入流对象 FileList list = new FileList(args); InputStream seq = new SequenceInputStream(list); int ch; while ((ch = seq.read())!= -1) System.out.write(ch); seq.close();

68 小结

69 好好想想, 有没有问题? 谢谢!

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

while ((ch = fr.read())!= -1) { System.out.print((char) ch); fr.close(); 例 3: 用 BufferedReader 读 TXT 文件 public class FileReaderDemo3 { public static v

while ((ch = fr.read())!= -1) { System.out.print((char) ch); fr.close(); 例 3: 用 BufferedReader 读 TXT 文件 public class FileReaderDemo3 { public static v 第九章 Java I/O 流操作 实验目的 (1) 掌握文本文件的读写方法 (2) 掌握 InputStream OutputStream 的使用方法 (3) 熟悉 FileReader,BufferedReader,InputStreamReader 和 FileWriter, BufferedWriter, PrintWriter 的使用方法 ; 理解使用过滤流实现数据项的读写 :DataOutputStream,

More information

OOP with Java 通知 Project 6: 6 月 6 日晚 9 点

OOP with Java 通知 Project 6: 6 月 6 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 6: 6 月 6 日晚 9 点 复习 异常处理 语法 抛出异常 : throw 处理异常 : try, catch 异常对象 : Exception 类的子类 从方法中抛出异常 方法的异常说明 :throws 中断当前方法的执行, 返回抛出的异常对象, 在该方法的调用路径上寻找合适的

More information

OOP with Java 通知 Project 6: 5 月 30 日晚 9 点

OOP with Java 通知 Project 6: 5 月 30 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 6: 5 月 30 日晚 9 点 复习 异常处理 语法 抛出异常 : throw 处理异常 : try, catch 异常对象 : Exception 类的子类 从方法中抛出异常 方法的异常说明 :throws 中断当前方法的执行, 返回抛出的异常对象, 在该方法的调用路径上寻找合适的

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

OOP with Java 通知 Project 6: 5 月 24 日晚 9 点

OOP with Java 通知 Project 6: 5 月 24 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 6: 5 月 24 日晚 9 点 复习 异常处理 语法 抛出异常 : throw 处理异常 : try, catch 异常对象 : Exception 类的子类 从方法中抛出异常 方法的异常说明 :throws 中断当前方法的执行, 返回抛出的异常对象, 在该方法的调用路径上寻找合适的

More information

untitled

untitled Velocity 14 100061 315@pptph.com.cn http://www.pptph.com.cn 010-67129212 010-67129211 787 1092 1/16 22 535 1 0 000 2001 11 1 2001 11 1 ISBN 7-115-09828-X/TP 2577 32.00 01067129223 1 2 1 2 3 4 5 1 Velocity

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

chp7.ppt

chp7.ppt Java 软件设计基础 7. Java 的基本可重用类 1.Java 可重用类的结构 Java 语言中将功能相关的可重用类组织成包, 可重用类的继承层次和包的组织呈树形结构 M L L L L L Java 可重用类按功能可划分为 : java.lang 是 Java 语言的核心包, 主要含有与语言相关的类 ; 提供如基本数据类型处理 基本数值函数 字符串处理 线程 异常处理等基本功能 ; 由解释程序自动加载,

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-854 Title : Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Version : Demo 1 / 12 1.Given: 20. public class CreditCard

More information

2009年9月全国计算机等级考试二级Java真题及答案

2009年9月全国计算机等级考试二级Java真题及答案 2009 年 9 月 全 国 计 算 机 等 级 考 试 二 级 Java 真 题 及 答 案 [ 录 入 者 :NCRE100 时 间 :2009-10-08 19:41:34 作 者 : 来 源 :NCRE100.com 浏 览 :1421 次 ] 2009 年 9 月 全 国 计 算 机 等 级 考 试 二 级 笔 试 试 卷 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟,

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题 2009 年 3 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ( 每 题 2 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上,

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/ 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:// 不能以数字开头 D._3_ B:// 不能用点和空格 提问 抢答 E.$anothervar C: // 不能用点和空格

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

Microsoft PowerPoint - CPP-Ch Print.ppt [兼容模式]

Microsoft PowerPoint - CPP-Ch Print.ppt [兼容模式] Chapter 17 File Processing http://jssec.seu.edu.cn 杨明 yangming2002@seu.edu.cn OBJECTIVES To create, read, write and update files. Sequential file processing. Random-access file processing. To use high-performance

More information

Struts2自定义类型转换.doc

Struts2自定义类型转换.doc Struts2 自定义类型转换 原理 struts2 的自定义类型转换机制为复杂类型的输入输出处理提供了便捷.struts2 已经为我们提供了几乎所有的 primitive 类型以及常用类型 ( 如 Date) 的类型转换器, 我们也可以为我们自定义类添加自定义类型转化器. struts2 为我们提供了一个类型转化器的入口 : ognl.defaulttypeconverter, 或继承 org.apache.struts2.util.strutstypeconverter,

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

Microsoft Word - sy09_实验09_字符串和文本IO.docx

Microsoft Word - sy09_实验09_字符串和文本IO.docx 面向对象程序设计 (Java) 课程实验 第 9 章字符串和文本 I/O 9.1 找出回文串检测一个字符串是否是回文串 : 从前向后和从后向前读都是同一个字符串的字符串 public class CheckPalindrome { // Create a Scanner Scanner input = new Scanner(System.in); // Prompt the user to enter

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

Microsoft Word - 投影片ch14

Microsoft Word - 投影片ch14 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十四章檔案處理 本章學習目標認識串流學習檔案的開啟與關閉學習如何處理文字檔學習如何處理二進位檔 檔案處理 14-2 14.1 關於串流 串流可分為 輸入串流 (input stream) 與 輸出串流 (output stream) 兩種 下圖說明了串流如何做為檔案處理的橋樑 : stream 資料 input stream

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

Microsoft Word - 新1-12.doc

Microsoft Word - 新1-12.doc 实训 5 面向对象编程练习 实训 5 面向对象编程练习 5.1 实训目的 通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想 以及如何创建类 和对象 了解成员变量和成员方法的特性 5.2 实训要求 编写一个体现面向对象思想的程序 编写一个创建对象和使用对象的方法的程序 5.3 实训内容 5.3.1 创建对象并使用对象 1 定义一个 Person 类 可以在应用程序中使用该类 成员属性

More information

java2d-4.PDF

java2d-4.PDF 75 7 6 G r a d i e n t P a i n t B a s i c S t r o k e s e t P a i n t ( ) s e t S t o r k e ( ) import java.awt.*; import java.awt.geom.*; public class PaintingAndStroking extends ApplicationFrame { public

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

untitled

untitled 1 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object 參 類 都 object 參 object Boxing 參 boxing

More information

目 录 实 验 一 : 熟 悉 Java 开 发 环 境... 1 实 验 二 : 类 与 面 向 对 象... 7 实 验 三 : 继 承 和 多 态... 13 实 验 四 : 异 常 处 理... 18 实 验 五 : 流 文 件 及 基 于 文 本 的 应 用... 23

目 录 实 验 一 : 熟 悉 Java 开 发 环 境... 1 实 验 二 : 类 与 面 向 对 象... 7 实 验 三 : 继 承 和 多 态... 13 实 验 四 : 异 常 处 理... 18 实 验 五 : 流 文 件 及 基 于 文 本 的 应 用... 23 Java 程 序 设 计 实 验 指 导 书 商 丘 学 院 计 算 机 科 学 与 技 术 学 院 张 艳 晓 目 录 实 验 一 : 熟 悉 Java 开 发 环 境... 1 实 验 二 : 类 与 面 向 对 象... 7 实 验 三 : 继 承 和 多 态... 13 实 验 四 : 异 常 处 理... 18 实 验 五 : 流 文 件 及 基 于 文 本 的 应 用... 23 实 验

More information

untitled

untitled 1 Outline ArrayList 類 列類 串類 類 類 例 理 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object

More information

《面向对象程序设计A》课程教学大纲Ⅱ4

《面向对象程序设计A》课程教学大纲Ⅱ4 Java 程 序 设 计 课 程 教 学 大 纲 Ⅱ5 课 程 代 码 : 课 程 名 称 :Java 程 序 设 计 Java Programming 学 分 :5 总 学 时 :80 ( 其 中 : 理 论 学 时 :48 实 验 ( 上 机 ) 学 时 :32) 先 修 课 程 : 2106010190 大 学 计 算 机 信 息 技 术 基 础 适 用 对 象 : 本 二 工 科 非 计 算

More information

Swing-02.pdf

Swing-02.pdf 2 J B u t t o n J T e x t F i e l d J L i s t B u t t o n T e x t F i e l d L i s t J F r a m e 21 2 2 Swing C a n v a s C o m p o n e n t J B u t t o n AWT // ToolbarFrame1.java // java.awt.button //

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

Microsoft Word - JAVA Programming Language Homework VI_ans.doc

Microsoft Word - JAVA Programming Language Homework VI_ans.doc JAVA Programming Language Homework VI: Threads & I/O ID: Name: 1. When comparing java.io.bufferedwriter to java.io.filewriter, which capability exists as a method in only one of the two? A. Closing the

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

x MapReduce A Italic URL Constant width Constant width bold Constant width italic 這個圖示代表提示或建議 這個圖示代表一般註解

x MapReduce A Italic URL Constant width Constant width bold Constant width italic 這個圖示代表提示或建議 這個圖示代表一般註解 Java R Python Java Java Java x MapReduce A Italic URL Constant width Constant width bold Constant width italic 這個圖示代表提示或建議 這個圖示代表一般註解 第一章 I/O double[][] int[] String[] List 2 Map JavaScript Object Notation

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac)

OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac) OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 21 日晚 9 点 作业提交格式 学习使用 文本编辑器 cmd, PowerShell (Windows), terminal(linux, Mac) 复习 面向对象编程 将实际问题分解成不同的对象 不的对象提供不同的服务 对象之间可以传递消息 例子小李深夜

More information

第3章 Java语言基础

第3章 Java语言基础 第 3 章 Java 语言基础 第 1/55 页 习题 3 3. 8. 9. 13. 18. 实验 : 1. 实验 4( 实 P11~12) 2. 实验任务 : 1 例 3.1( 教 P30) 2 变量赋值 ( 教 P29) 3 编写两个缓冲区对应同一个输入流对象, 并键盘输入整型 a 和双精度 b, 求和 第 2/55 页 习题 3 3. 实验任务 : 1 实验 5( 实 P12~13) 2 实验

More information

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 1 CARDGAME 1 CardGame 题目描述 桌上有一叠牌, 从第一张牌 ( 即位于顶面的牌 ) 开始从上往下依次编号为 1~n 当至少还剩两张牌时进行以下操作 : 把第一张牌扔掉, 然后把新的第一张放到整叠牌的最后 请模拟这个过程, 依次输出每次扔掉的牌以及最后剩下的牌的编号 输入 输入正整数 n(n

More information

Microsoft PowerPoint - string_kruse [兼容模式]

Microsoft PowerPoint - string_kruse [兼容模式] Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.

More information

拦截器(Interceptor)的学习

拦截器(Interceptor)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

JBuilder Weblogic

JBuilder Weblogic JUnit ( bliu76@yeah.net) < >6 JUnit Java Erich Gamma Kent Beck JUnit JUnit 1 JUnit 1.1 JUnit JUnit java XUnit JUnit 1.2 JUnit JUnit Erich Gamma Kent Beck Erich Gamma Kent Beck XP Extreme Programming CRC

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

Microsoft PowerPoint - ch7_1 DA class

Microsoft PowerPoint - ch7_1 DA class Quiz 1. Describe the similarities and differences of Tester class and GUI class 2. What is the function of GUI class? 3. What is the function of PD(problem domain) class? 4. How does a GUI class interact

More information

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B 25 9 2008 9 M ICROEL ECTRON ICS & COMPU TER Vol. 25 No. 9 September 2008 J ava 1,2, 1,2, 1,2 (1, 330022 ; 2, 330022) :,. Apla - Java,,.. : PAR ;Apla - Java ; ;CMP ; : TP311 : A : 1000-7180 (2008) 09-0018

More information

D C 93 2

D C 93 2 D9223468 3C 93 2 Java Java -- Java UML Java API UML MVC Eclipse API JavadocUML Omendo PSPPersonal Software Programming [6] 56 8 2587 56% Java 1 epaper(2005 ) Java C C (function) C (reusability) eat(chess1,

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

三种方法实现Hadoop(MapReduce)全局排序(1)

三种方法实现Hadoop(MapReduce)全局排序(1) 三种方法实现 Hadoop(MapReduce) 全局排序 () 三种方法实现 Hadoop(MapReduce) 全局排序 () 我们可能会有些需求要求 MapReduce 的输出全局有序, 这里说的有序是指 Key 全局有序 但是我们知道,MapReduce 默认只是保证同一个分区内的 Key 是有序的, 但是不保证全局有序 基于此, 本文提供三种方法来对 MapReduce 的输出进行全局排序

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt Java 程式設計基礎班 (6) 莊坤達台大電信所網路資料庫研究室 Email: doug@arbor.ee.ntu.edu.tw Class 6 1 回顧 Java Inner class Class/Object 基本使用方法 Class 6 2 Java Utilities 字元與字串 (String) StringBuffer Class 6 3 String 類別 java.lang.string

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

RUN_PC連載_12_.doc

RUN_PC連載_12_.doc PowerBuilder 8 (12) PowerBuilder 8.0 PowerBuilder PowerBuilder 8 PowerBuilder 8 / IDE PowerBuilder PowerBuilder 8.0 PowerBuilder PowerBuilder PowerBuilder PowerBuilder 8.0 PowerBuilder 6 PowerBuilder 7

More information

Microsoft PowerPoint - course6.ppt

Microsoft PowerPoint - course6.ppt 回顧 Java 程式設計基礎班 (6) Java Inner class Class/Object 基本使用方法 劉根豪台大電機所網路資料庫研究室 Email: kenliu@arbor.ee.ntu.edu.tw 1 2 Java Utilities String 類別 字元與字串 (String) StringBuffer java.lang.string Java 中的字串不像 char int

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

FileMaker 16 ODBC 和 JDBC 指南

FileMaker 16 ODBC 和 JDBC 指南 FileMaker 16 ODBC JDBC 2004-2017 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. FileMaker WebDirect FileMaker Cloud FileMaker,

More information

文件

文件 CH10 文件 1 文件的概念 一 文件分类 二 文件的组织结构 : ASCII 码文件 ( 文本文件 ) 二进制文件 文件是二进制代码的, 则文件就是字节流 文件是 ASCII 码的, 则文件就是字符流, 也是字节流 1 如 : 对于整型变量 x, 其值为 32767 若以文本方式存放, 则共有 5 个字符, 内容为 : 00110011 00110010 00110111 00110110 00110111

More information

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

ebook39-5

ebook39-5 5 3 last-in-first-out, LIFO 3-1 L i n e a r L i s t 3-8 C h a i n 3 3. 8. 3 C + + 5.1 [ ] s t a c k t o p b o t t o m 5-1a 5-1a E D 5-1b 5-1b E E 5-1a 5-1b 5-1c E t o p D t o p D C C B B B t o p A b o

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx 运算符重载 Operator Overloading class Point { public: ; double x_, y_; Why Operator Overloading? Point (double x =0, double y = 0):x_(x),y_(y) { int main(){ Point a(1., 2), b(3,4); Point c = a + b; return 0;

More information

Microsoft Word - newJavaA4.doc

Microsoft Word - newJavaA4.doc P74 拾壹. 基本輸入與輸出 一. 使用的物件 1.Java 的輸入與輸出會使用到 Java.lang 套件中的 System 類別與 Java.io 套件, 其中 Java.io 套件中以 Reader/Writer 與 InputStream/OutputStream 類別最 重要, 前者以字元 (Character) 為導向, 後者以位元組 (Byte) 為導向 2.System 類別中最主要宣告了三個類別物件,System.in

More information

模板

模板 制作人 : 张刚 目录 类和对象 面向对象程序设计基本特征 类的声明 构造方法 成员变量和方法 封装 继承 多态 包 访问控制 final static 抽象类和接口 内部类 沈阳工业大学软件学院 Java 课程教研组 Page 2 核心知识点 类 对象 三个基本特征 类的基本结构 成员变量 构造方法 成员方法 类实例 对象创建和操作 沈阳工业大学软件学院 Java 课程教研组 Page 3 1.

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

ebook39-6

ebook39-6 6 first-in-first-out, FIFO L i n e a r L i s t 3-1 C h a i n 3-8 5. 5. 3 F I F O L I F O 5. 5. 6 5. 5. 6.1 [ ] q u e n e ( r e a r ) ( f r o n t 6-1a A 6-1b 6-1b D C D 6-1c a) b) c) 6-1 F I F O L I F ADT

More information

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public

More information

Microsoft PowerPoint - course2.ppt

Microsoft PowerPoint - course2.ppt Java 程 式 設 計 基 礎 班 (2) 莊 坤 達 台 大 電 信 所 網 路 資 料 庫 研 究 室 Email: doug@arbor.ee.ntu.edu.tw Class 2 1 回 顧 Eclipse 使 用 入 門 Class 2 2 Lesson 2 Java 程 式 語 言 介 紹 Class 2 3 Java 基 本 知 識 介 紹 大 小 寫 有 差 (Case Sensitive)

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

提纲 1 2 OS Examples for 3

提纲 1 2 OS Examples for 3 第 4 章 Threads2( 线程 2) 中国科学技术大学计算机学院 October 28, 2009 提纲 1 2 OS Examples for 3 Outline 1 2 OS Examples for 3 Windows XP Threads I An Windows XP application runs as a seperate process, and each process may

More information

epub 33-8

epub 33-8 8 1) 2) 3) A S C I I 4 C I / O I / 8.1 8.1.1 1. ANSI C F I L E s t d i o. h typedef struct i n t _ f d ; i n t _ c l e f t ; i n t _ m o d e ; c h a r *_ n e x t ; char *_buff; /* /* /* /* /* 1 5 4 C FILE

More information

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问

在所有的项目开发中, 一定是多人协作的团队开发, 但是使用框架就会出现一个问题, 我们所 有的 Action 以及相关的路径都要求在我们的 struts.xml 文件中配置, 如果所有的人去修改一个 文件, 那么就会变得混乱, 而且有可能出现冲突, 那么在 struts.xml 文件中为了解决这个问 内置对象的取得和多人开发 一 内置对象的取得 在使用的 servlet 的时候可以通过 HttpServletResquest 获取到一些内置对象, 但是在 struts2 中为了方便取得内置对象, 专门提供了一个 ServletActionContext 这个类取得取得内置对象, 观察如下方法 public static javax.servlet.jsp.pagecontext() 取得 pagecontext

More information

Spark读取Hbase中的数据

Spark读取Hbase中的数据 Spark 读取 Hbase 中的数据 Spark 和 Flume-ng 整合, 可以参见本博客 : Spark 和 Flume-ng 整合 使用 Spark 读取 HBase 中的数据 如果想及时了解 Spark Hadoop 或者 Hbase 相关的文章, 欢迎关注微信公共帐号 :iteblog_hadoop 大家可能都知道很熟悉 Spark 的两种常见的数据读取方式 ( 存放到 RDD 中 ):(1)

More information

View:Struts 提 供 了 action form 创 建 form bean, 用 于 在 controller 和 view 间 传 输 数 据 此 外,Struts 提 供 了 自 定 义 JSP 标 签 库, 辅 助 开 发 者 用 JSP 创 建 交 互 式 的 以 表 单 为 基

View:Struts 提 供 了 action form 创 建 form bean, 用 于 在 controller 和 view 间 传 输 数 据 此 外,Struts 提 供 了 自 定 义 JSP 标 签 库, 辅 助 开 发 者 用 JSP 创 建 交 互 式 的 以 表 单 为 基 一 你 对 MVC 的 理 解,MVC 有 什 么 优 缺 点? 结 合 Struts, 说 明 在 一 个 Web 应 用 如 何 去 使 用? 答 : MVC 设 计 模 式 ( 应 用 观 察 者 模 式 的 框 架 模 式 ) M: Model(Business process layer), 模 型, 操 作 数 据 的 业 务 处 理 层, 并 独 立 于 表 现 层 (Independent

More information