Microsoft Word - 第5章.doc

Size: px
Start display at page:

Download "Microsoft Word - 第5章.doc"

Transcription

1 第 5 章 5.1 异常处理 异常 (Exception) 指程序运行过程中出现的非正常现象, 例如用户输入错误 需要处理的文件不存在 在网络上传输数据但网络没有连接等 由于异常情况总是可能发生, 良好健壮的应用程序除了具备用户所要求的基本功能外, 还应该具备预见并处理可能发生的各种异常的功能 所以, 开发应用程序时要充分考虑到各种可能发生的异常情况, 使程序具有较强的容错能力 通常把这种对异常情况进行处理的技术称为异常处理 在 Android 系统中应用 Java 语言的异常处理机制进行异常处理 1. 异常处理机制在 Android 系统的异常处理中, 引入了一些用来描述和处理异常的 Java 类, 每个异常类反映一类运行错误, 在类的定义中包含了该类异常的信息和对异常进行处理的方法 当程序运行过程中发生某个异常现象时, 系统会产生一个与之相对应的异常类对象, 并交由系统中的相应机制进行处理, 以避免系统崩溃或其他对系统有害的结果发生, 保证了程序运行的安全性 这就是 Android 系统的异常处理机制 2. 异常类的定义在 Android 系统中, 按 Java 语言对异常的分类, 把异常分为错误 (Error) 与异常 (Exception) 两大类 错误 (Error) 通常是指程序本身存在非法的情形, 这些情形常常是因为代码存在问题而引起的 而且, 编程人员可以通过对程序进行更加仔细的检查, 把这种错误的情形减到最小 从理论上讲, 这些情形可以避免 异常情况 (Exception) 表示另一种 非同寻常 的错误 这种错误通常是不可预测的 常见的异常情况包括内存不足 找不到所需的文件等 Throwable 类派生了两个子类 :Exception 和 Error 其中,Error 类描述内部错误, 它由系统保留, 程序不能抛出这个类型的对象,Error 类的对象不可捕获 不可以恢复, 出错时系统通知用户并终止程序 ; 而 Exception 类则供应程序使用 所有的 Android 异常类都是系统类库中 Exception 类的子类 同其他类一样,Exception 类有自己的方法和属性 它的构造方法有两个 : public Exception(); public Exception(String s);

2 第二个构造方法接受字符串参数传入的信息, 该信息通常是对异常所对应的错误的描述 Exception 类从父类 Throwable 那里还继承了若干种方法, 其中常用的方法有 : (1)public String tostring() tostring() 方法返回描述当前 Exception 类信息的字符串 (2)public void printstacktrace() printstacktrace() 方法没有返回值, 它的功能是完成打印操作, 在当前的标准输出 ( 一般是屏幕 ) 上打印输出当前异常对象的堆栈使用轨迹, 即程序先后调用执行了哪些对象, 或类的哪些方法使得运行过程中产生了这个异常对象 3. 系统定义的运行异常 Exception 类有若干个子类, 每个子类代表一种特定的运行错误 有些子类是系统事先定义的, 并包含在 Android 系统的 Java 类库中, 称为系统定义的运行异常 系统定义的运行异常通常对应系统运行错误 由于这种错误可能导致操作系统错误甚至是整个系统的瘫痪, 所以需要定义异常类来特别处理 表 5-1 中列出了若干常见的系统定义异常 表 5-1 Android 系统引用 Java 定义的运行异常类系统定义的运行异常说明 ClassNotFoundException ArrayIndexOutOfBoundsException FileNotFoundException IOException NullPointerException 找不到要装载的类, 由 Class.forName 抛出数组下标出界找不到指定的文件或目录输入 / 输出错误非法使用空引用 ArithmeticException 算术错误, 如除数为 0 InterruptedException UnknownHostException SecurityException MalfomedURLException 一个线程被另一个线程中断无法确定主机的 IP 地址安全性错误 URL 格式错误 由于定义了相应的异常, 程序即使产生某些致命的错误, 如应用空对象等, 系统也会自动产生一个对应的异常对象来处理和控制这个错误, 避免其蔓延或产生更大的问题 例 5-1 异常处理示例: 当除数为 0 时, 抛出异常 1 package com.ex05_01; 2 import android.app.activity; 3 import android.os.bundle; 4 import android.app.progressdialog; 5 import android.widget.textview; 6 import android.widget.toast; 7 8 public class MainActivity extends Activity { 9 TextView txt1; 10 ProgressDialog log; 11 Toast toast; 125 第 5 章

3 Android 应用程序设计 ( 修订版 ) public void oncreate(bundle savedinstancestate) { 13 super.oncreate(savedinstancestate); 14 txt1=new TextView(this); 15 int x=15,y=0,z; 16 String c=" "; 17 txt1.settext(" 运行结果 "); 18 try{ z=x/y; c=string.valueof(z); } 19 catch(exception e) 20 { c="x=15, y=0, z=x/y 错误, 除数不能为 0!";} 21 toast=toast.maketext(this, c, Toast.LENGTH_LONG); 22 toast.settext(c); 23 toast.show(); 24 setcontentview(txt1); 25 } 26 } 程序的运行结果如图 5.1 所示 Toast 使用静态方法 图 5.1 除数为 0 时抛出异常 5.2 多线程 线程与多线程 1. 线程概述线程是指进程中单一顺序的执行流 设某程序的地址空间在 0x0000~0xffff, 其线程 A 运行在 0x2000~0x4000, 线程 B 运行在 0x4001~0x6000, 线程 C 运行在 0x6001~ 0x8000, 多个线程共同构成一个大的进程, 如图 5.2 所示 线程间的通信非常简单而有效, 上下文切换非常快, 它们是同一个进程中其中两部分之间所进行的切换 每个线程彼此独立执行, 一个程序可以同时使用多个线图 5.2 每个线程彼此独立, 但有公共数据区程来完成不同的任务 一般用户在使用多线程时并不需要考虑底层处理的详细细节

4 2. 多线程概述多线程是指一个程序中包含有多个执行流, 多线程是实现并发机制的一种有效手段 例如, 在传统的单进程环境下, 用户必须等待一个任务完成后才能进行下一个任务 即使大部分时间空闲, 也只能按部就班地工作 而多线程可以避免用户的等待 又如, 传统的并发服务器是基于多线程机制的, 每个客户需要一个进程, 而进程的数目是受操作系统限制的 基于多线程的并发服务器, 每个客户一个线程, 多个线程可以并发执行 进程与多线程的区别如图 5.3 所示 图 5.3 进程与多线程的区别 从图中可以看到, 多任务状态下各进程的内部数据和状态都是完全独立的, 而多线程共享一块内存空间和一组系统资源, 有可能相互影响 线程的生命周期 每个线程都要经历创建 就绪 运行 阻塞和死亡 5 个状态, 线程从产生到消失的状态变化过程称为生命周期 线程的生命周期如图 5.4 所示 1. 创建状态当通过 new 命令创建了一个线程对象后, 该线程对象就处于创建状态 如下面语句 : Thread thread1=new Thread(); 创建状态是线程已被创建但未开始执行的一个特殊状态 此时, 线程对象拥有自己的内存空间, 但没有分配 CPU 资源, 需通过 start() 方法调度进入就绪状态等待 CPU 资源 2. 就绪状态 图 5.4 线程的生命周期 处于创建状态的线程对象通过 start() 方法进入就绪状态 如下面语句 : Thread thread1=new Thread(); Thread1.start(); 127 第 5 章

5 Android 应用程序设计 ( 修订版 ) 128 start() 方法同时调用了线程体, 也就是 run() 方法, 表示线程对象正等待 CPU 资源, 随时可被调用执行 处于就绪状态的线程已经被放到某一队列等待系统为其分配对 CPU 的控制权 至于何时真正地执行, 取决于线程的优先级以及队列的当前状况 3. 运行状态若线程处于正在运行的状态, 表示线程已经拥有了对处理器的控制权, 其代码目前正在运行, 除非运行过程中控制权被另一优先级更高的线程抢占, 否则这一线程将一直持续到运行完毕 4. 阻塞状态如果一个线程处于阻塞状态, 那么该线程将无法进入就绪队列 处于阻塞状态的线程通常必须由某些事件唤醒 至于是何种事件, 则取决于阻塞发生的原因 例如 : 处于休眠中的线程必须被阻塞固定的一段时间唤醒 ; 被挂起或处于消息等待状态的线程则必须由一外来事件唤醒 5. 死亡状态死亡状态 ( 或终止状态 ) 表示线程已退出运行状态, 并且不再进入就绪队列 其原因可能是线程已执行完毕 ( 正常结束 ), 也可能是该线程被另一线程强行中断, 即线程自然撤销或被停止 自然撤销是从线程的 run() 方法正常退出 即, 当 run() 方法结束后, 该线程自然撤销 调用 stop() 方法可以强行停止当前线程 但这个方法已在 JDK2 中作废, 应当避免使用 如果需要线程死亡, 可以进行适当的编码触发线程提前结束 run() 方法, 使其自行消亡 简单归纳一下, 一个线程的生命周期一般经过以下几个步骤 : (1) 一个线程通过 new() 操作实例化后, 进入新生状态 (2) 通过调用 start() 方法进入就绪状态, 一个处在就绪状态的线程将被调度执行, 执行该线程相应的 run() 方法中的代码 (3) 通过调用线程的 ( 或从 Object 类继承过来的 )sleep() 或 wait() 方法, 这个线程进入阻塞状态 一个线程可能自己完成阻塞操作 (4) 当 run() 方法执行完毕, 或者有一个例外产生, 或者执行 System.exit() 方法, 则一个线程就会进入死亡状态 线程的数据通信 1. 消息 (Message) 在 Android 的多线程中, 把需要传递的数据称为消息 由于 Android 的用户界面 UI(User Interface) 是单线程的, 如果 UI 线程花费太多的时间做后台的事情, 超过 5 秒钟,Android 就会给出错误提示 因此, 为了避免 拖累 UI, 一些较费时的工作应该交给独立的后台线程去执行 但是如果后台的线程直接执行 UI 对象,Android 会发出错误信息, 所以,UI 线程与后台线程需要进行消息通信 UI 线程将工作分配给后台线程, 后台线程执行后将相应的状态消息返回给 UI 线程, 让 UI 线程对 UI 完成相应地更新 Message 是一个描述消息的数据结构类,Message 包含很多成员变量和方法 消息的

6 常用方法见表 5-2 表 5-2 消息 (Message) 的常用方法方法说明 Message() gettarget() settarget(handler target) sendtotarget() int arg1 int arg2 int what 创建消息对象的构造方法获取将接收此消息的 Handler 对象, 此对象必须实现 Handler.handleMessage() 方法设置接收此消息的 Handler 对象向 Handler 对象发送消息用于当仅需要存储几个整型数据消息时用于当仅需要存储几个整型数据消息时用户自定义消息标识, 避免各线程的消息冲突 2. 消息处理工具 Handler Handler 是 Android 中多个线程间消息传递和定时执行任务的 工具 类 Handler 是消息的处理者, 负责在多个线程之间发送 Message 和处理 Message Handler 类在多线程中有两个方面的应用 : 发送消息 在不同的线程间传递数据, 使用的方法为 send () 定时执行任务 在指定的未来某时间执行某任务, 使用的方法为 post () 一个线程只能有一个 Handler 对象, 通过该对象向所在线程发送消息 Handler 除了给其他线程发送消息外, 还可以给本线程发送消息 Handler 类的常用方法见表 5-3 表 5-3 Handler 类的常用方法方法说明 Handler() handlemessage(message msg) sendemptymessage(int) sendmessage(message) sendmessageattime(message,long) sendmessagedelayed(message,long) post(runnable) postattime(runnable,long) postdelayed(runnable,long) Handler 对象的构造方法 Handler 的子类必须使用该方法接收消息发送一个空的消息发送消息, 消息中可携带参数在未来某一时间点发送消息延时 N 毫秒发送消息提交计划任务马上执行提交计划在未来的时间点执行提交计划任务延时 N 毫秒执行 应用 Handler 对象处理线程发送消息的一般形式如下 (1) 在线程的 run() 方法中发送消息 : public void run() { Message msg=new Message(); 129 第 5 章

7 Android 应用程序设计 ( 修订版 ) 130 // 消息标志 msg.what=1; // 由 Handler 对象发送这个消息 handler.sendmessage(msg); } (2) 用 Handler 对象处理消息 : private class mhandler extends Handler { public void handlemessage(message msg) { switch(msg.what) { case 1:... case 2:... } } } 其中,handleMessage(Message msg) 的参数 msg 是接收多线程 run() 方法中发送的 Message 对象,msg.what 为消息标志 创建线程 1. 创建线程的两种方式在 Android 中创建线程的方法与在 Java 中创建线程的方法相同, 可采用两种方式创建线程 : (1) 通过创建 Thread 类的子类来构造线程 Java 定义了一个直接从根类 Object 中派生的 Thread 类, 所有从这个类派生的子类或间接子类均为线程 (2) 通过实现一个 Runnable 接口的类来构造线程 注意,Android 中的线程抛弃了 Java 线程中一些不安全的做法 例如, 在 Java 中终止一个 Thread 线程, 可以调用 stop() destroy() 等方法实现, 但在 Android 中, 这些方法都不能实现, 故不能直接使用 2. 创建 Thread 子类构造线程可以通过继承 Thread 类建立一个 Thread 类的子类并重新设计 ( 重载 ) 其 run() 方法来构造线程 Thread 类是用来创建一个新线程的类 使用该类的方法, 可以处理线程的优先级和改变线程的状态 要创建和执行一个线程需完成下列步骤 : (1) 创建一个 Thread 类的子类 ; (2) 在 Thread 子类中重新定义自己的 run() 方法, 在这个 run() 方法中包含线程要实现的操作, 并通过 Handler 对象发送 Message 消息 ; (3) 用关键字 new 创建一个线程对象 ;

8 (4) 调用 start() 方法启动线程 线程启动后当执行 run() 方法完毕时, 会自然进入终止状态 例 5-2 创建一个多线程 Thread 类的子类, 每隔 1 秒钟发送一个信号给主程序, 主程序进行计数 设计思路 : (1) 创建多线程 Thread 子类 mthread 在 run() 方法中通过 Thread.skeeo(1000) 延时 1 秒钟, 实现每隔 1 秒钟发送一次 Message 消息的功能 (2) 创建 Handler 的子类 mhandler, 在 handlemessage(message nsg) 方法中接收多线程发送的 Message 消息 (3) 每接收一次消息, 计数器加 1, 并显示出来 新建工程 ex05_02, 在界面布局文件 activity_main.xml 中安排一个 启动线程 按钮和一个 停止线程 按钮, 再安排一个文本标签, 用于显示计数 界面布局如图 5.5 所示 图 5.5 线程每隔 1 秒钟向 (1) 界面布局文件 activity_main.xml 的代码如下 : 主程序发送一个信号 1 <LinearLayout xmlns:android=" 2 xmlns:tools=" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:background="@color/white" 6 android:orientation="vertical" > 7 <LinearLayout 8 android:layout_width="fill_parent" 9 android:layout_height="wrap_content" 10 android:gravity="center_horizontal" 11 android:orientation="horizontal" > 12 <Button 13 android:id="@+id/mbutton" 14 android:layout_width="wrap_content" 15 android:layout_height="wrap_content" 16 android:text=" 启动线程 " 17 android:textsize="20px" /> 18 <Button 19 android:id="@+id/sbutton" 20 android:layout_width="wrap_content" 21 android:layout_height="wrap_content" 22 android:text=" 停止线程 " 23 android:textsize="20px" /> 24 </LinearLayout> 25 <TextView 26 android:id="@+id/txt" 27 android:layout_width="wrap_content" 131 第 5 章

9 Android 应用程序设计 ( 修订版 ) android:layout_height="wrap_content" 29 android:layout_centerhorizontal="true" 30 android:layout_centervertical="true" 31 android:padding="@dimen/padding_medium" 32 android:text="@string/hello_world" 33 tools:context=".mainactivity" 34 android:textsize="24dp"/> 35 </LinearLayout> (2) 控制文件 MainActivity.java 的代码如下 : 1 package com.example.ex05_02; 2 import android.os.bundle; 3 import android.os.handler; 4 import android.os.message; 5 import android.app.activity; 6 import android.view.view; 7 import android.view.view.onclicklistener; 8 import android.widget.button; 9 import android.widget.textview; public class MainActivity extends Activity 12 { 13 private boolean STOP=true; 定义线程是否停止的标志位 14 private int count=0 定义按秒计时的计数器 15 private mhandler handler; 16 private mthread thread; 17 private Button mbutton, sbutton; 18 private TextView mtextview; 20 public void oncreate(bundle savedinstancestate) 21 { 22 super.oncreate(savedinstancestate); 23 setcontentview(r.layout.activity_main); 24 handler=new mhandler(); 25 thread=new mthread(); 26 mtextview=(textview)findviewbyid(r.id.txt); 27 mbutton=(button)findviewbyid(r.id.mbutton); 28 mbutton.setonclicklistener(new mclick()); 29 sbutton=(button)findviewbyid(r.id.sbutton); 30 sbutton.setonclicklistener(new mclick()); 31 } 32 // 定义监听按钮的事件, 启动线程或停止线程 33 class mclick implements OnClickListener 34 { 36 public void onclick(view arg0)

10 37 { 38 if(arg0==mbutton) 39 { 40 // 设置标志位 41 STOP = false; 处理 启动线程 按钮事件 42 // 开启新的线程 43 thread.start(); 44 } 45 else if(arg0==sbutton) 46 { 47 STOP = true; 设置标志位 处理 停止线程 按钮事件 48 } 49 } 50 } 51 // 定义 Handler 的子类接收和处理线程发送来的消息 52 private class mhandler extends Handler 53 { 54 public void handlemessage(message msg) 55 { 56 switch(msg.arg1) 以消息标志为条件 57 { 58 case 1: 消息标志为 1 时, 执行本复合语句 59 { 60 count++; 秒数增加 61 mtextview.settext(integer.tostring(count)); 数值转换字符串 62 break; 63 } 64 } 65 } 66 } 67 // 定义 Thread 子类, 实现每隔 1 秒钟发送一次消息的功能 68 private class mthread extends Thread 69 { 71 public void run() 线程启动时执行这个函数 72 { 73 while(!stop) 一直循环, 直到标志位为 真 74 { 75 try{ 76 Thread.sleep(1000); 延时 1 秒 77 } catch(interruptedexception e){ 78 e.printstacktrace(); 79 } 80 Message msg = new Message(); 81 msg.arg1=1; 消息标志 133 第 5 章

11 Android 应用程序设计 ( 修订版 ) handler.sendmessage(msg); 发送消息 83 } 84 } 85 } 86 } 3. 实现 Runnable 接口构造线程 Runnable 接口是在程序中使用线程的另一种方法 在许多情况下, 一个类已经继承了 父类, 因而这样的类不能再继承 Thread Runnable 接口为一个类提供了一种手段, 无须扩 展 Thread 类就可以执行一个新的线程或者被一个新的线程控制 这就是通过建立一个实现 Runnable 接口的对象, 并以它作为线程的目标对象来构造线程 它打破了单一继承方式的 限制 在 Java 语言的代码中,Runnable 接口只包含一个抽象方法, 其定义如下 : public interface Runnable { public abstract void run(); } 因此, 一个类实现 Runnable 接口时需要实现多线程的 run() 方法 为了实现 Runnable 对象的线程, 可使用下列方法来生成 Thread 对象 : Thread(Runnable 对象名 ); Thread(Runnable 对象名,String 线程名 ); 例 5-3 应用多线程设计一个小球移动的程序 设计一个绘制小球图形的 ballview, 并由一个线程来控制小球运动 由于 ballview 要继承 View, 因此, 要实现多线程就需要使用 Runnable 接口 关于图形的绘制, 在第 6 章有详细讲解, 这里不作具体说明 (1) 控制文件 MainActivity.java 的代码如下 : 1 package com.example.ex05_03; 2 import android.app.activity; 3 import android.os.bundle; 4 import android.os.handler; 5 import android.os.message; 6 import android.view.view; 7 import android.view.view.onclicklistener; 8 import android.widget.button; 9 10 public class MainActivity extends Activity 11 { 12 int i=80, j=10, step; i j 为小球坐标位置 ;step 为移动的步长值 13 ballview view; 14 Button btn; 15 Handler handler; 16 Thread thread; 17 boolean STOP=true; 线程是否停止标志 18 public void oncreate(bundle savedinstancestate)

12 19 { 20 super.oncreate(savedinstancestate); 21 setcontentview(r.layout.main); 22 view=(ballview)findviewbyid(r.id.view1); 23 btn=(button)findviewbyid(r.id.btn1); 24 btn.setonclicklistener(new mclick()); 25 handler=new mhandler(); 26 thread=new mthread(); 27 view.setxy(i, j); 28 } 29 class mclick implements OnClickListener 30 { 32 public void onclick(view arg0) 33 { 34 STOP=false; 设置线程中循环的标志位 35 thread.start(); 开启新线程 36 } 37 } 38 private class mhandler extends Handler 39 { 40 public void handlemessage(message msg) 41 { 42 switch(msg.what) 以消息标志为条件 43 { 44 case 1: 消息标志为 1 时, 执行下面的复合语句 45 { 46 step=step+5; 47 j=j+step; 48 if(j>220) STOP=true; 设置停止线程中循环的标志位 49 break; 50 } 51 } 52 view.setxy(i, j); 53 view.invalidate(); 更新小球的坐标位置 54 } 55 } 56 private class mthread extends Thread 57 { 59 public void run() 线程启动时执行 run() 函数 60 { 61 while(!stop) 一直循环, 直到标志位为 真 62 { 63 try 135 第 5 章

13 Android 应用程序设计 ( 修订版 ) { 65 Thread.sleep(500); 延时 0.5 秒 66 } 67 catch(interruptedexception e) 68 { 69 e.printstacktrace(); 70 } 71 Message msg=new Message(); 72 msg.what=1; 消息标志 发送消息 73 handler.sendmessage(msg); 74 } 75 } 76 } 77 } (2) 绘制图形文件 ballview.java 的代码如下 : 1 package com.example.ex05_03; 2 import android.content.context; 3 import android.graphics.canvas; 4 import android.graphics.color; 5 import android.graphics.paint; 6 import android.util.attributeset; 7 import android.view.view; 8 9 public class ballview extends View 10 { 11 int x, y; 12 public ballview(context context, AttributeSet attrs) 13 { 14 super(context, attrs); 15 } 16 void setxy(int _x, int _y) 17 { 18 x=_x; 19 y=_y; 20 } 21 protected void ondraw(canvas canvas) 22 { 23 super.ondraw(canvas); 24 canvas.drawcolor(color.cyan); 25 Paint paint = new Paint(); 26 paint.setcolor(color.black); 27 paint.setantialias(true); 绘制小球 28 canvas.drawcircle(x, y, 15, paint); 29 paint.setcolor(color.white); 30 canvas.drawcircle(x-6, y-6, 3, paint); 31 } 32 }

14 (3) 用户界面设计 在用户界面程序中, 除设置一个按钮组件之外, 还设置了自定义的 ballview 组件 设置自定义的组件时, 要注意添加包路径 com.example.ex05_03.ballview 其代码如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android=" 3 android:layout_width="fill_parent" 4 android:layout_height="fill_parent" 5 android:orientation="vertical" > 6 <Button 7 android:id="@+id/btn1" 8 android:layout_width="80dp" 9 android:layout_height="wrap_content" 10 android:text=" 开始 " /> 11 <com.example.ex05_03.ballview 12 android:id="@+id/view1" 13 android:layout_width="fill_parent" 定义自定义组件 ballview 14 android:layout_height="fill_parent" /> 15 </LinearLayout> 程序的运行结果如图 5.6 所示 该示例说明了处理异步更新用户界面的方法 图 5.6 由线程控制小球运动 习题 5 设计两个独立线程, 分别计数, 如图 5.7 所示 图 5.7 设计两个独立运行的线程 137 第 5 章

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

<4D F736F F F696E74202D20B8DFBCB6D3C3BBA7BDE7C3E6D3EBB6E0CFDFB3CC2E707074>

<4D F736F F F696E74202D20B8DFBCB6D3C3BBA7BDE7C3E6D3EBB6E0CFDFB3CC2E707074> 高级用户界面与多线程 LCDUI 高级 LCDUI LCDUI 与多线程 多线程在手机编程中尤为重要 手机游戏开发中, 通常由游戏主线程负责游戏的基本控制, 除此之外还会由一个或者多个线程用于播放背景音乐或声效 网络接受数据时, 传输速度通常都比较慢, 因此可以使用一个独立的线程负责接收数据, 另外一个线程负责 UI 界面和与用户的交互 LCDUI 与多线程 J2ME 是通过线程体来实现多线程的 线程体就是用于实现线程活动的主体,

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

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

01_Service

01_Service 移动平台应用软件开发 Service 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年 什么是 Service 与 Activity 一样, 同属 Android 基本组件 后台运行, 不与用户交互, 没有可视化界面 最常见的 Service 如 : 在后台播放歌曲 后台执行文件的下载 同样需在 AndroidManifest.xml

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

Android线程和进程

Android线程和进程 Android 进程和线程 版权声明 华清远见教育集团版权所有 ; 未经华清远见明确许可, 不得为任何目的以任何形式复制或传播此文档的任何部分 ; 本文档包含的信息如有更改, 恕不另行通知 ; 华清远见教育集团保留所有权利 Android 进程和线程 在安装 Android 应用程序的时候,Android 会为每个程序分配一个 Linux 用户 ID, 并设置相应的权限, 这样其它应用程序就不能访问此应用程序所拥有的数据和资源了

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 : EditText 实现城市搜索 1801210778 邹宇航 摘要 : 使用 EditText 实现搜索城市的功能, 以此为依据更新 ListView 1. 效果图 : 2. 主要步骤 (1) 在 select-city.xml 布局文件中中添加 EditText 控件用作搜索框, 然后添加 ListView 控件用来显示城市名字内容 代码如下 : 预览图 : (2) 在 SelectCity.java

More information

软件工程文档编制

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

More information

chp6.ppt

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

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

建模与图形思考

建模与图形思考 C03_c 基 於 軟 硬 整 合 觀 點 JNI: 从 C 调 用 Java 函 数 ( c) By 高 煥 堂 3 How-to: 基 於 軟 硬 整 合 觀 點 从 C 调 用 Java 函 数 如 果 控 制 点 摆 在 本 地 C 层, 就 会 常 常 1. 从 本 地 C 函 数 去 调 用 Java 函 数 ; 2. 从 本 地 C 函 数 去 存 取 Java 层 对 象 的 属 性

More information

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

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

More information

Dynamic Layout in Android

Dynamic Layout in Android Dynamic Layout in Android 建國科技大學資管系 饒瑞佶 2013/5 V1 Layout 多半都透過 res/layout/xml 格式設定來達成 Android 是 OOP, 所以可以動態產生 Layout 重點是 Layout 的階層關係 (Hierarchy) 需要處理對應事件 最後一樣用 setcontentview 加入 Layout 一 加入現有 Layout 中

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

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

0511-Android程式之GPS應用_專題週記4

0511-Android程式之GPS應用_專題週記4 逢甲大學通訊工程學系專題研究 Android 程式之 GPS 應用 專題週記 0511 學生姓名 陳彥儒 D0035131 廖元譽 D0077791 指導老師 楊豐瑞老師繳交日期 2014.05.11 1 匯入 GoogleMap 1.1 取得授權步驟 目前進度 取得 Google 授權鑰匙 實作程式尚未成功 1.1.1 建立個人的 keystore 1.1.2 由個人的 keystore 查詢 SHA1

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

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

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 多个用户界面的程序设计 3.1 页面的切换与传递参数值 3.1.1 传递参数组件 Intent Intent 是 Android 系统的一种运行时的绑定机制, 在应用程序运行时连接两个不同组件 在 Android 的应用程序中不管是页面切换还是传递数据或是调用外部程序都可能要用到 Intent Intent 负责对应用中某次操作的动作 动作涉及的数据 附加数据进行描述, Android

More information

Database_001

Database_001 作者 : 林致宇日期 :2011/10/26 主要參考來源 : http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applicat ions/ 問題 : 如在存取一個已經建立好的資料庫? 解答 : 有一些應用程式會需要讀取已經建立好的資料庫, 例如一個試題測驗應用程式, 裡面的試題可能已經於電腦上, 使用任何的

More information

Android 开发教程

Android 开发教程 封面 1 文件存取编程基础 文件 文件可以用来存储比使用引用更大数量的数据 Android 提供方法来读 写文件 只有本地文件可以被访问 优点 : 可以存储大容量的数据 缺点 : 文件更新或是格式改变可能会导致巨大的编程工作 文件操作 读文件 Context.openFileInput(String name) 打开一个与应用程序联系的私有文件输入流 当文件不存在时抛出 FileNotFoundException

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

Android 编程基础 Android 开发教程 & 笔记 1

Android 编程基础 Android 开发教程 & 笔记 1 Android 开发教程 & 笔记 1 多式样 ProgressBar 撰写 : 地狱怒兽 联系 :zyf19870302@126.com 普通圆形 ProgressBar 该类型进度条也就是一个表示运转的过程, 例如发送短信, 连接网络等等, 表示一个过程正 在执行中 一般只要在 XML 布局中定义就可以了

More information

Android Fragment

Android Fragment Android Fragment 建國科技大學資管系饒瑞佶 2017/10 V1 Android 3.0 後才支援 Fragment 解決部分 App 適應螢幕大小的問題 它類似於 Activity, 可以像 Activity 可以擁有自己的版面設計, 也和 Activity 一樣有自己的生命週期 ( 具備 oncreate() oncreateview() 與 onpause() 方法 ) LifeCycle

More information

PowerPoint Presentation

PowerPoint Presentation L o g o Java 线程 中软培训中心 内容概述 了解什么是线程 定义线程 实例化线程 启动线程 同步代码 了解线程的 4 个状态之间的转换关系 专题 继承 Thread 和和实现 Runnable 的比较 线程之间的关系 本章目标 学完以后我们应该可以 : 了解什么是线程 编程定义线程 编程实例化线程 知道如何启动线程 会使用同步代码来保护资源 说出线程的 4 个状态之间的转换关系 程序 进程和线程

More information

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复

获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取 Access Token access_token 是接口的全局唯一票据, 接入方调用各接口时都需使用 access_token 开发者需要进行妥善保存 access_token 的存储至少要保留 512 个字符空间 access_token 的有效期目前为 2 个小时, 需定时刷新, 重复 获取将导致上次获取的 access_token 失效 接入方可以使用 AppID 和 AppSecret

More information

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="

图 6-1 主界面 MainActivity 界面对应的布局文件 (activity_main.xml) 如下所示 : <?xml version=1.0 encoding=utf-8?> <RelativeLayout xmlns:android= 第 6 章广播接收者 应用案例 案例 6-1 CallRecord( 通话记录 ) 一 案例描述 1 考核知识点 030006001: 广播接收者简介 030006002: 广播接收者的创建 2 练习目标 广播的静态注册和使用 使用广播处理处理事件 3 需求分析手机最重要的功能就是通话功能, 同样储存通话记录也是必不可少的 该案例使用广 播接收者自己实现通话记录的功能 包括呼出电话 已接来电 未接来电以及通话产生的

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

<4D F736F F F696E74202D20B5DA35D5C220D2ECB3A3BACDB6E0CFDFB3CC2E BBCE6C8DDC4A3CABD5D>

<4D F736F F F696E74202D20B5DA35D5C220D2ECB3A3BACDB6E0CFDFB3CC2E BBCE6C8DDC4A3CABD5D> 第 5 章 异常和多线程 5.1 Java 异常处理 5.2 Java 中的多线程 5.1 Java 异常处理 5.1.1 Java 的异常类和异常处理 \ 1. 异常的产生 异常是指在程序运行过程中, 打断程序正常执行的事件 Java 语言通过异常类 (Exception) 和异常子类, 来处理程序运行过程中产生的异常 一个异常事件由一个异常类的对象来代表并作出处理 确保不对系统造成破坏, 保证程序运行的安全性和强健性

More information

Java程序设计

Java程序设计 第 6 章异常处理 第 6 章异常处理 本章介绍 Java 语言中的异常处理 6.1 异常处理 6.2 自定义异常 6.3 断言及程序的测试 6.4 程序的调试 2 异常处理 3 异常 异常 (exception ) 又称为例外 差错 违例 对应着 Java 运行错误处理机制 基本写法 try{ 语句组 }catch(exception ex){ 异常处理语句组 ; } 示例 : ExceptionForNum.java

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

教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 學校系所 : 樹德科技大學資訊工程學系

教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 學校系所 : 樹德科技大學資訊工程學系 教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 (s11639104@stu.edu.tw) 學校系所 : 樹德科技大學資訊工程學系 實驗目的 本實驗的目的在於讓同學們可以了解 Android 系統核心內部的行程通訊的原理, 透過呼叫系統提供的其中一樣服務

More information

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat 本章学习目标 小风 Java 实战系列教程 AOP 思想概述 AOP 底层技术实现 AOP 术语介绍 SpringAOP 的 XML 方式 HelloWorld SpringAOP 的 XML 方式配置细节 SpringAOP 的注解方式 SpringAOP 的零配置方式 1. AOP 思想概述 1.1. AOP 思想简介 1.2. AOP 的作用 2. AOP 底层技术实现 小风 Java 实战系列教程

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

Android + NFC

Android + NFC Android + NFC 建國科技大學資管系饒瑞佶 2017/3 v1 讀取 Tag UUID Android 2.3.3 (API Level 10) 才有支援完整的 NFC 功能 只要 NFC 相容都讀的到 (NFC 或 Mifare) 建立新專案修改 AndroidManifest.xml 加入 , 如果有 NFC Tag 進入感測範圍, 本 App 也會變成可處理的

More information

RecyclerView and CardVew

RecyclerView and CardVew RecyclerView and CardView 建國科技大學資管系饒瑞佶 2017/10 V1 CardView CardView A CardView is a ViewGroup. Like any other ViewGroup, it can be added to youractivity or Fragment using a layout XML file. To create an

More information

Microsoft Word - 01.DOC

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

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 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

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

6-?????C???{???]?p

6-?????C???{???]?p ( ) 101.06 遊 戲 名 稱 圖 片 縮 放 相 關 類 別 與 元 件 程 式 與 執 行 結 果 遊 戲 名 稱 記 憶 遊 戲 相 關 類 別 與 元 件 程 式 與 執 行 結 果 參 考 文 件 - 元 件 宣 告 類 別 2 控 制 桌 面 上 的 圖 片 可 任 意 的 移 動 不 破 壞 方 位 可 縮 放 的 功 能 3 遊 戲 原 始 碼 來 源 :http://mate.idc.scu.edu.tw/android/

More information

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

More information

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

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-065Big5 Title : Sun Certified Programmer for the Java 2 Platform, SE 6.0 Version : Demo 1 / 14 1. 35. String #name = "Jane Doe"; 36. int

More information

(Microsoft Word - G3_BK_Ch04_\303\376\247O\304~\251\323\273P\253\312\270\313\251\312.doc)

(Microsoft Word - G3_BK_Ch04_\303\376\247O\304~\251\323\273P\253\312\270\313\251\312.doc) 第 4 章類別繼承與封裝性 107 108 Android 的對象技術 (OOP) Android 的對象技術教材下載 第 4 章類別繼承與封裝性 109 第 4 章 类别继承与封装性 4.1 公用与私有数据 4.2 公用与私有函数 4.3 Android 的类别封装性之例 4.4 应用于 C/C++ 110 Android 的對象技術 (OOP) 4.1 公用与私有数据 基于对象的 封装性 (Encapsulation)

More information

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

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 70-536Chinese(C++) Title : TS:MS.NET Framework 2.0-Application Develop Foundation Version : DEMO 1 / 10 1. Exception A. Data B. Message C.

More information

题目

题目 开发 Android 应用 目的 : 帮助大家了解 Android 平台开发 作者 : 王威威 技术爱好 : linux,qt, 嵌入式开发 MSN : wangweiweicdma@hotmail.com Email : wang.weiwei1@ztenc.com.cn wangjiecdma@126.com 下载开发资源 1 下载最新的 Android SDK http://code.google.com/android/download.html

More information

使用Cassandra和Spark 2.0实现Rest API服务

使用Cassandra和Spark 2.0实现Rest API服务 使用 Cassandra 和 Spark 2.0 实现 Rest API 服务 在这篇文章中, 我将介绍如何在 Spark 中使用 Akkahttp 并结合 Cassandra 实现 REST 服务, 在这个系统中 Cassandra 用于数据的存储 我们已经见识到 Spark 的威力, 如果和 Cassandra 正确地结合可以实现更强大的系统 我们先创建一个 build.sbt 文件, 内容如下

More information

while (queue.isempty() && newtasksmaybescheduled) queue.wait(); if (queue.isempty()) break; // Queue is empty and will forever remain; die if (!taskfi

while (queue.isempty() && newtasksmaybescheduled) queue.wait(); if (queue.isempty()) break; // Queue is empty and will forever remain; die if (!taskfi 深入浅出 Java Concurrency (32): 线程池 part 5 周期性任务调度 周期性任务调度前世 在 JDK 5.0 之前,java.util.Timer/TimerTask 是唯一的内置任务调度方法, 而且在很长一段 时间里很热衷于使用这种方式进行周期性任务调度 首先研究下 Timer/TimerTask 的特性 ( 至于 javax.swing.timer 就不再研究了 ) public

More information

Microsoft Word - 02.目錄.doc

Microsoft Word - 02.目錄.doc 目錄 -1- 目錄 序 準備篇 一 使用說明... 0-2 二 標示說明... 0-6 三 注意事項... 0-7 第一類 Android 基礎知識 -UI 設計及語法應用 101. 整存整付計算機... 1-2 102. 電費計算機... 1-8 103. 點餐系統... 1-18 104. 計算 BMI 值... 1-23 105. MENU 功能選單... 1-36 106. 畫廊展示...

More information

Android 开发教程

Android 开发教程 封面 1 GUI 可视化设计器 DroidDraw DroidDraw 是一个基于 Java Swing 的 Android 界面设计器, 可以通过它来生成复杂的 Android Layout XML 文 件,Android 的 Layout 和 Swing Layout 中有很好的对应, 设计器的代码编写起来比较容易 2 AnDroidDraw AnDroidDraw 是一个与 DroidDraw

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

Guava学习之Resources

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

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

Microsoft Word - G3_BK_Ch12-8.doc

Microsoft Word - G3_BK_Ch12-8.doc 第 12 章线程 (Thread) 对象 251 第三篇 进阶技术应用 Android 应用架构含有各式各样的接口, 例如 IBinder ContentProvider 等等 只要将我们的组件配上这些接口, 就能与其它组件融为一体了 252 Android 的对象技术 (OOP) 第 12 章线程 (Thread) 对象 253 E-mail: misoo.tw@gmail.com 254 Android

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

Microsoft Word 杨超-spinner实现省市县的三级联动.docx

Microsoft Word 杨超-spinner实现省市县的三级联动.docx Spinner 实现省市县的三级联动 1801210908- 杨超 下拉框 Spinner 控件 : 常用属性 属性 说明 android:prompt 下拉提示信息 android:spinnermode 下拉显示方法 android:entries 配置下拉框数据源 android:dropdownwidth 下拉框显示模式下的显示项宽度 常用方法 方法 说明 getdropdownwidth()

More information

ContextMenu

ContextMenu 作者 : 林致宇 日期 :2012/1/20 問題 : 如何建立 ContextMenu? 解答 : 什麼是 ContextMenu 呢? 下面兩張圖是 ContextMenu 的範例, 紅色框線中的選單即所謂的 ContextMenu, 可以視為 選單列表, 例如在左圖的 ContextMenu 中有兩個選項 : Action 1 與 Action 2, 按下 Action 1 可執行某些動作,

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年秋北京 Android是什么 Android不仅仅是一个操作系统 它更是一个完整的软件框 架 Android基于Linux内核 2005年Google公司收购了Android公司 Google公司选择使用Apache许可证开放Android源码

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立

More information

内文-2.indd

内文-2.indd 客户端服务端音乐资源信息 : 1. 项目需求从本项目开始, 我们一起开发一个简单的在线音乐播放器, 它具有以下功能 (1) 程序启动时显示一个启动画面, 如图 1-1 所示 (2) 在程序主页面显示服务器上的歌曲列表, 包括歌手名与歌曲名, 单击列表条目可实现在线音乐播放, 单击 播放 暂停 上一曲 下一曲 按钮可实现对应的功能, 进度条可以显示歌曲播放进度, 如图 1-2 所示 图 1-1 程序启动画面

More information

在Spring中使用Kafka:Producer篇

在Spring中使用Kafka:Producer篇 在某些情况下, 我们可能会在 Spring 中将一些 WEB 上的信息发送到 Kafka 中, 这时候我们就需要在 Spring 中编写 Producer 相关的代码了 ; 不过高兴的是,Spring 本身提供了操作 Kafka 的相关类库, 我们可以直接通过 xml 文件配置然后直接在后端的代码中使用 Kafka, 非常地方便 本文将介绍如果在 Spring 中将消息发送到 Kafka 在这之前,

More information

Guava学习之CharSequenceReader

Guava学习之CharSequenceReader CharSequenceReader 类是以 CharSequence 的形式读取字符 CharSequenceReader 类继承自 Reader 类, 除了 remaining() hasremaining() 以及 checkopen() 函数之后, 其他的函数都是重写 Reader 类中的函数 CharSequenceReader 类声明没有用 public 关键字, 所以我们暂时还不能调用这个类

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

1 下列类头定义中, 正确的是 面向对象程序设计网络课程 A class x { } B public x extends y { } C public class x extends y {.} D class x extends y implements y1 { } 2 现有两个类 A B,

1 下列类头定义中, 正确的是 面向对象程序设计网络课程 A class x { } B public x extends y { } C public class x extends y {.} D class x extends y implements y1 { } 2 现有两个类 A B, 1 下列类头定义中, 正确的是 A class x B public x extends y C public class x extends y. D class x extends y implements y1 2 现有两个类 A B, 以下描述中表示 B 继承自 A 的是 (D ) A) class A extends B B) class B implements A C) class A

More information

Microsoft Word - 004_Android線程模式介紹.doc

Microsoft Word - 004_Android線程模式介紹.doc Android 線程模式简介 基礎概念進程與線程在 Android 框架裡, 一個應用套件 (Application Package) 通常含有多個 Java 類 (Class), 這些類可以在同一個進程 (Process) 裡執行 ; 也可以在不同的進程裡執行 基於 Linux 的安全限制, 以及進程的基本特性 ( 例如, 不同進程的位址空間是獨立的 ), 如果兩個類 ( 或其對象 ) 在同一個進程裏執行時,

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 点 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class - Table.class

More information

建模与图形思考

建模与图形思考 F06_c 观摩 :ContentProvider 基於軟硬整合觀點 架构與 DB 引擎移植方法 ( c) By 高煥堂 4 通用性基类 ContentProvider 基於軟硬整合觀點 的使用范例 刚才的范例里, 我们直接使用 DataPersist 类的接口来与 SQLite 沟通 本节将替 DataPersist 配上 ContentProvider 基类, 让 Client 能透过 ContentProvider

More information

ShareText

ShareText 作者 : 林致宇 日期 :2012/1/23 問題 : 如何分享分享文字資訊給其它的應用程式? 解答 : 有時候我們可能會希望 我們的應用程式的資訊 能夠讓使用者分享出去, 讓使用者能夠將此資訊傳送簡訊給其好友或寄電子郵件的方式寄給其好友, 這份文件將示範如何寫出這樣的應用程式 本文件將產出兩個 App, 第一個 App 是 分享資料的來源, 名為 CopyPaste_Source, 功能非常簡單,

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple halcon 与 C# 混合编程之 Halcon 代码调用 写在前面 完成 halcon 与 C# 混合编程的环境配置后, 进行界面布局设计构思每一个按钮所需要实现 的功能, 将 Halcon 导出的代码复制至相应的 C# 模块下即可 halcon 源程序 : dev_open_window(0, 0, 512, 512, 'black', WindowHandle) read_image (Image,

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

Hive:用Java代码通过JDBC连接Hiveserver

Hive:用Java代码通过JDBC连接Hiveserver Hive: 用 Java 代码通过 JDBC 连接 Hiveserver 我们可以通过 CLI Client Web UI 等 Hive 提供的用户接口来和 Hive 通信, 但这三种方式最常用的是 CLI;Client 是 Hive 的客户端, 用户连接至 Hive Server 在启动 Client 模式的时候, 需要指出 Hive Server 所在节点, 并且在该节点启动 Hive Server

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一八年秋北京 Android 是什么 Android 不仅仅是一个操作系统, 它更是一个完整的软件框架 Android 基于 Linux 内核 2005 年 Google 公司收购了 Android 公司 Google 公司选择使用 Apache

More information

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

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

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

More information

chp10.ppt

chp10.ppt Java 软件设计基础 Java 线程机制 1.Java 中的多线程机制 基本概念 程序 程序是为完成特定任务 用某种语言编写的一组指令的集合, 指一段静态的代码 进程 进程是程序的一次执行过程, 是系统进行调度和资源分配的一个独立单位, 每个进程都有自己独立的一块内存空间 一组系统资源 在进程概念中, 每个进程的内部数据和状态都是完全独立的 计算机上同时运行多个程序叫进程并发 操作系统按照一定的策略调度各个进程执行,

More information

使用MapReduce读取XML文件

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

More information

第 6 章 BroadcastReceiver( 广播接收者 ) 学习目标 掌握广播接收者的创建, 以及如何自定义广播 ; 掌握有序广播和无序广播的使用, 能够对有序广播进行拦截 在 Android 系统中, 广播是一种运用在应用程序之间传递消息的机制, 例如电池电量低时会发送一条提示广播 要过滤并

第 6 章 BroadcastReceiver( 广播接收者 ) 学习目标 掌握广播接收者的创建, 以及如何自定义广播 ; 掌握有序广播和无序广播的使用, 能够对有序广播进行拦截 在 Android 系统中, 广播是一种运用在应用程序之间传递消息的机制, 例如电池电量低时会发送一条提示广播 要过滤并 第 6 章 BroadcastReceiver( 广播接收者 ) 学习目标 掌握广播接收者的创建, 以及如何自定义广播 ; 掌握有序广播和无序广播的使用, 能够对有序广播进行拦截 在 Android 系统中, 广播是一种运用在应用程序之间传递消息的机制, 例如电池电量低时会发送一条提示广播 要过滤并接收广播中的消息就需要使用 BroadcastReceiver( 广播接收者 ), 广播接收者是 Android

More information

教案模板4-2

教案模板4-2 移动终端开发技术 电子教案 第三单元 ListView 的功能和用法 章节名称 : 第二章 软件要美观 UI 开发的点点滴滴 所属专业 ( 教研室 ): 计算机软件技术 制定人 : 陈媛媛 合作人 : 制定时间 : 2018 年 2 月 日照职业技术学院 单元标题 ListView 的功能和用法 单元教学学时 在整体设计中的位置 4 课时 第 7 次 授课班级上课地点一体化教室 上课时间周月日第节

More information

Microsoft PowerPoint - 07.Android 介面元件-TableLayout、Toast、AlertDialog

Microsoft PowerPoint - 07.Android 介面元件-TableLayout、Toast、AlertDialog 計劃名稱 : 104 年度教育部資通訊軟體創新人才推升推廣計畫跨校資源中心 : 雲端運算 ( 國立中山大學 ) 課程名稱 : 網路及平台服務 Part1- 課程教材 教材名稱 :Android 介面元件 -TableLayout Toast AlertDialog 國立高雄大學資訊工程學系張保榮教授 大綱 TableLayout 版面配置 Toast 版面配置 AlertDialog 版面配置 TableLayout

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 - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

《大话设计模式》第一章

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

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

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) 09 (File Processes) 9-1 9-2 (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises) Java Servlet 9-1 Servlet (File Processes) Client Servlet Servlet Java Java (Stream)

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

Microsoft Word - Broker.doc

Microsoft Word - Broker.doc Broker 模式 采用 broker 模式对分布式计算进行简单模拟 系统在一个进程内模拟分布式环境, 因此不涉及网络编程和进程间通信,Broker 通过本地函数调用的方式实现 request 和 response 的转发 采用 broker 模式对分布式计算进行简单的模拟, 要求如下 : 设计四个 server, 一个 server 接收两个整数, 求和并返回结果, 一个 server 接收两个整数,

More information

PowerPoint 簡報

PowerPoint 簡報 UI 設計 Android 專案目錄架構 Android 專案建立後會自動產生 3 個主要目錄 src:java 程式檔案 res: 資源 ( 文字 圖形 聲音檔案等 ) 與 UI 設定有關的 layout 檔 此目錄內檔案名稱只能為小寫字母 數字 _. gen:r.java 根據 res 目錄內容自動產生 不要去修改 R.java Android 中所有的資源檔案 ( 圖片 XML 等 ) 命名都必須使用英文小寫,

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

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

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 lambda 表达式及其应用 lambda 表达式是 Java 8 提供的一种新特性, 它使得 Java 也能像 C# 和 C++ 语言一样进行简单的 函数式编程, 这不仅简化了某些通用结构的实现方式, 也大大增强了 Java 语言的表达功能 3.1 lambda 表达式简介 lambda 表达式是基于数学中的 λ 演算得名, 本质上就是一个没有方法名的匿名方法 例如, 有一个方法定义如下

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

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information