<4D F736F F D FB1B5A4663F3FA4A7ACFC5FB371A5CEA9CAB1B5A466AABA3FA6583FA5CE5F6F6B2E646F63>

Size: px
Start display at page:

Download "<4D F736F F D FB1B5A4663F3FA4A7ACFC5FB371A5CEA9CAB1B5A466AABA3FA6583FA5CE5F6F6B2E646F63>"

Transcription

1 G08_ 接口设计之美 _ 通用性接口的组合应用 内容 : 1. 复习 : 通用性接口的基本结构 2. 此结构是由 2 个 EIT 造形所组成 3. 谁来 实现 通用性接口呢? 4. 应用范例 : 手机与 Android TV 的多机整合 4.1 应用情境 4.2 介绍 3 个通用性接口 :Servlet Context 和 IBinder 5. 范例架构设计 : 联合应用 3 个通用性接口 5.1 iphone 手机端的规划 5.2 i-jetty 的 Servlet 接口与浏览器对接 5.3 Android 的 Context 和 IBinder 接口与 myservlet 对接 5.4 Android 本地 App 的设计 6. 结语 1

2 复习 : 通用性接口的基本结构 此结构是由 2 个 EIT 造形所组成前言 : 在上一单元里, 我们自己设计了通用性接口, 来整合 Agile-Use Case 的开发 在这单元里, 将运用多个既有的通用性接口, 联合应用来整合 iphone 手机与 Android TV 本单元的范例, 以前也介绍过 ; 然而, 在这里将具焦于通用性接口的联合应用上 2

3 1. 复习 : 通用性接口的基本结构 兹看看一个大家已经很熟悉的 EIT 造形 : 这个 <E> 可以提供一个接口, 例如下图的 IE 接口 : <E> 提供了 IE 接口给 Client 使用 ; 于是 Client 透过 IE 接口而调用 <E> 的 operation() 函数, 由于它是一个抽象函数, 所以就直接执行了 <T> 的 operation() 函数的实现代码 这里的 IE 接口与 <I> 接口是一致的 这就是一个通用接口的设计模式 (Pattern) 了 ; 它有一个更常见的变形 : 3

4 其中的 operation() 函数将 IE 接口转换成为 <I> 接口 ; 于是 Client 透过 IE 接口而调用 <E> 的 operation() 具象函数, 然后调用 onoperation() 抽象函数, 就执行了 <T> 的 onoperation() 函数的实现代码 这里的 IE 接口与 <I> 接口是不一样的 这通用接口的设计模式, 非常接近 GoF 的 TemplateMethod 设计模式, 如下图 : 4

5 2. 此结构是由 2 个 EIT 造形所组成 2.1 通用性接口模式 (Pattern) 其实, 上述这是接口设计模式, 是由两个 EIT 造形所组成的, 所以我们称之为 模式 (Pattern), 而不称为 造形 (Form) 上面的 EIT 造形, 是一个退化的 EIT 造形, 没有限定它的 <E>; 也可以说, 所有的 Client 都能扮演它的 <E> 角色, 而是这个 IE 接口就成为 通用性接口 了 2.2 自己设计通用性接口 : 上一节的范例 在上一节里的 播放 MP3 音乐 的范例, 就曾经亲自设计通用性接口, 来 支持敏捷开发, 有效整合 Use Case 的代码 其 Use Case 图 : 5

6 这用例图里, 含有两个用例 :1) 播放 (Play) 音乐 ;2) 播放 (Play) 某首音乐 基于这项需求 (Requirements), 而设计了一个通用性接口, 成为一个简单 的应用框架, 如下图 : 6

7 此范例展示如何建立一个框架 (Framework): 包含一个 IPlugin 接口和一 个 Plugin 基类 由它来提供统一的通信接口, 来整合各敏捷跌代过程中所开 发的各用例代码 2.3 也善用 ( 别人 ) 既有的通用性接口 : 本节的范例 在本节 ( 单元 ) 里, 将运用多个既有的通用性接口, 联合应用来整合 iphone 手机与 Android TV 其中, 包括了 Android 的 IBinder 接口和 Context 接口 ; 以及 i-jetty 的 Servlet 接口 透过这 3 个通用性接口的串接, 就能顺利将 iphone 手机与 Android TV 衔 接起来, 让用户能使用自己的手机, 上网去开起大会议厅里的主灯和电视墙等 如下图 : 7

8 8

9 G08_ 接口设计之美 _ 通用性接口的组合应用 内容 : 1. 复习 : 通用性接口的基本结构 2. 此结构是由 2 个 EIT 造形所组成 3. 谁来 实现 通用性接口呢? 4. 应用范例 : 手机与 Android TV 的多机整合 4.1 应用情境 4.2 介绍 3 个通用性接口 :Servlet Context 和 IBinder 5. 范例架构设计 : 联合应用 3 个通用性接口 5.1 iphone 手机端的规划 5.2 i-jetty 的 Servlet 接口与浏览器对接 5.3 Android 的 Context 和 IBinder 接口与 myservlet 对接 5.4 Android 本地 App 的设计 6. 结语 9

10 前言 : 上节的接口, 是一种标准的结构 : 由子类 <T> 来实现接口的函数 在本节里, 将介绍一种较为特殊的结构 : 子类 <T> 并不直接实现接口, 而是委托别的类来实现接口 <I> 例如 : 这个特殊的结构, 其详细内涵如下图 : 10

11 3. 谁来 实现 通用性接口呢? 谁来实现 (Implement) 通用性接口呢? 例如下图 : 你会回答 : 当然由 <E> 来实现这个 IE 通用性接口 这项答案是对的 由于 接口 (Interface) 就是一个纯粹抽象类 (Pure Abstract Class), 上图就相当于下图 : 一样地, 这也是由 <E> 来实现这个 IE 类所提供的通用性 <operation> 接口 由于 IE 类里的 operation() 是抽象函数,<E> 必须提供 operation() 函数的实现代码 然而, 有一种状况, 就是当我们必须赚写很多个 <E> 类来实现同一个 IE 接口时, 而且实现代码是相同的 ; 此时将会重复赚写一样的实现代码, 其开发和维护成本就上升了 此时, 可以采取 委托实现 的架构 11

12 委托 (Delegation) 实现 类 : 我们可以将上述的 IE 接口的实现代码集中于一个小类里, 如下图里的 IE_Impl 此时,<E> 的 operation() 函数可以去调用 IE_Impl 类里的 operation() 函数, 执行其实现代码了, 它 ( 即 <E>) 的 operation() 函数就不必重复撰写 operation() 函数的实现代码了 这项途径, 在软件设计上称为 委托 (Delegation) 也可以将 IE_Impl 类独立出来, 如下图所示 : 12

13 本来是 <E> 类必须撰写 operation() 函数的实现代码, 为了避免重复撰写实现代码,<E> 类就就转而 委托 IE_Impl 类, 调用它的 operation() 实现代码 这种架构设计的效益是,<E> 类不必再重复撰写 operation() 函数的实现代码, 可节省开发 维护实现代码的负担 当 <E> 类的个数愈多时, 这种架构设计的效益就愈大 如下图所示 : 图里的黑色菱形符号 ( ) 表示 <E> 类都会创建一个 IE_Impl 类的对象, 然后 <E> 类的 operation() 函数会调用 IE_Impl 类的 operation() 的实现代码 也就是, <E> 类将它自己的 operation() 函数的实现工作委托给 IE_Impl 类去做了 4. 应用范例 : 手机与 Android TV 的多机整合 4.1 应用情境 其实, 大家已经看过这个范例了 这是 2012 年 9 月 21 日于秦皇岛市举行的 < 智能电视软硬整合产业联盟会议 >> 开幕时, 副市长以他自己的手机上网访问会议厅中 Android TV 里的 i-jetty 网页, 再透过 Android App 发出 Zigbee 信号, 打开会议厅的主灯和电视墙 13

14 4.2 介紹 3 个通用性接口 :Servlet Context 和 IBinder 在本节里, 你将会看到多个通用性接口组合应用的壮丽情境 其中, 包括了 三个主要的通用性接口, 如下图 : 其实, 而所谓 通用性 又分为不同等级 例如, 从上图里, 就能看到接 14

15 口的 通用性 级别了 其中的 Servlet IBinder 和 Context 都是最通用的接口, 来自各方的 Client 都能使用它 而 <doget, dopost> 就是属于 GenericServlet 类的专属接口 ; 相对上,Servlet 接口的通用等级, 就比 <doget, dopost> 接口来得高 同样地,IBinder 接口的通用等级, 就比 <ontransact> 接口来得高 15

16 G08_ 接口设计之美 _ 通用性接口的组合应用 内容 : 1. 复习 : 通用性接口的基本结构 2. 此结构是由 2 个 EIT 造形所组成 3. 谁来 实现 通用性接口呢? 4. 应用范例 : 手机与 Android TV 的多机整合 4.1 应用情境 4.2 介绍 3 个通用性接口 :Servlet Context 和 IBinder 5. 范例架构设计 : 联合应用 3 个通用性接口 5.1 iphone 手机端的规划 5.2 i-jetty 的 Servlet 接口与浏览器对接 5.3 Android 的 Context 和 IBinder 接口与 myservlet 对接 5.4 Android 本地 App 的设计 6. 结语 16

17 5. 范例架构设计 : 联合应用 3 个通用性接口 5.1 iphone 手机端的规划 在这个范例里, 为了让各种移动终端皆能来访问 Android TV, 就不特别去开发 iphone 客户端的 App 了 而是, 直接采取通用的一般浏览器 (Browser) 做为这个案例的手机客户端软件了 如下图 : 如上图所示, 从手机上网联机之后, 手机浏览器出现首页画面如下 : 这首页的网页 HTML 代码如下 : 17

18 范例代码 //index.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=gbk"> <title>insert title here</title> </head> <body> <h1> 智能家庭 移动互联网 </h1> <div > <li> 控制操作 :</li> <p> <li ><center><a href="zigbeedemo?zigbeecmd=1"><img src="red.jpg" border="0"></a></center></li> <p> <li><center><a href="zigbeedemo?zigbeecmd=0"><img src="blue.jpg" border="0"></a></center></li> </div> </body> </html> 5.2 衔接 iphone 手机端的 ( 通用性 ) 接口 :Servlet iphone 手机与 Android TV 是两个相互竞争的平台, 也是各自发展的 那么, 又如何将两个平台整合起来呢? 答案是 : 以 EIT 造形来实践 < 通用性接口 > 如下图 : 18

19 其中,<E> 提供通用性接口来与手机端的浏览器对接 ; 而 <T> 则与本地 App 来对接 然后 <E> 则透过 <I> 来与 <T> 衔接起来 于是, 我们找到现成的 <E&I> 平台, 就是 :i-jetty 框架 19

20 这 i-jetty 本身是以 Android 应用程序形式嵌入 ( 运行 ) 于 Android 平台里, 它可以透过 Android 框架的 API 与其它应用程序沟通 因而, 在 i-jetty 里执行的 Servlet 程序也能透过该 Android API 而与其它应用程序沟通 分享数据 例如, 在家庭的 Android TV 里, 加入一个 i-jetty 插件, 来容纳 HTML 网页和 Servlet 程序 数千公里外的家庭成员, 透过手机 Browser 解析 HTML, 与家里的 TV 沟通, 形成大小屏互动 多机整合的架构设计了 20

21 有了 i-jetty 框架之后, 我们只需要基于 GenericServlet 的 <E&I> 来撰写子 类 <T> 就行了 ; 如下图 : 由 i-jetty 提供 Servlet 通用性接口来与 iphone 手机上的浏览器对接 在 i_jetty 里, 转换成为 <doget, dopost> 接口, 再经由 <T> 来使用 Context 通用性接口, 调用它的 startservice() 函数, 来取得 IBinder 通用性接口, 进而与 ZigbeeAppActivity& 硬件驱动互相通信 就完成两端整合的任务了 这 mytvservlet 类的代码如下 : 范例代码 // mytvservlet.java package com.nazca.px; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletconfig; import javax.servlet.servletexception; import javax.servlet.servletoutputstream; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import android.content.componentname; import android.content.intent; import android.content.serviceconnection; 21

22 import android.os.ibinder; import public class mytvservlet extends HttpServlet { private static final long serialversionuid = 1L; private String proofoflife ; private myproxy pproxy = null ; public void init(servletconfig config) throws ServletException { super.init(config); android.content.context androidcontext = (android.content.context)config.getservletcontext().getattribute ("org.mortbay.ijetty.context"); proofoflife = androidcontext.getapplicationinfo().packagename; androidcontext.startservice ( new Intent("com.google.android.ZigbeeApp.REMOTE_SERVICE")); androidcontext.bindservice ( new Intent("com.google.android.ZigbeeApp.REMOTE_SERVICE"), mconnection, android.content.context.bind_auto_create); private ServiceConnection mconnection = new ServiceConnection() { public void onserviceconnected(componentname classname, IBinder ibinder){ pproxy = new myproxy(ibinder); public void onservicedisconnected(componentname classname) { ; protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { String zigbeecmd = request.getparameter("zigbeecmd"); response.setcontenttype("text/html;charset=gbk"); PrintWriter out = response.getwriter(); out.println("<html>"); out.println("<h1> 智能家庭 移动互联网 <br></h1>" ); out.println("<h3> 控制操作 : <br></h3>"); if(integer.valueof(zigbeecmd)==1){ pproxy.setledstatus(1); out.println("<h3><li> 你已开启电源插座 </li></h3>"); out.println("<h3><a HREF=\"index.html\"> 返回 </a></h3>"); if(integer.valueof(zigbeecmd)==0){ pproxy.setledstatus(0); out.println("<h3><li> 你已关闭电源插座 </li></h3>"); out.println("<h3><a HREF=\"index.html\"> 返回 </a></h3>"); out.println("</html>"); out.flush(); out.close(); protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // private class myproxy { private IBinder ib ; 22

23 private String mstatus,mledstatus ; myproxy(ibinder ibinder) { ib = ibinder ; public void setledstatus(int key){ Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); try{ ib.transact(key, data, replay, 0); catch (Exception e) { e.printstacktrace(); 当 iphone 手机的浏览器上网, 就出现首页画面如下 : 浏览器就来就透过 i-jetty 的 Servlet 通用性接口, 调用到这个 doget() 函数, 再经由 <T> 来使用 Context 通用性接口, 调用它的 startservice() 函数, 进而与 ZigbeeAppActivity& 硬件驱动互相通信 23

24 G08_ 接口设计之美 _ 通用性接口的组合应用 内容 : 1. 复习 : 通用性接口的基本结构 2. 此结构是由 2 个 EIT 造形所组成 3. 谁来 实现 通用性接口呢? 4. 应用范例 : 手机与 Android TV 的多机整合 4.1 应用情境 4.2 介绍 3 个通用性接口 :Servlet Context 和 IBinder 5. 范例架构设计 : 联合应用 3 个通用性接口 5.1 iphone 手机端的规划 5.2 i-jetty 的 Servlet 接口与浏览器对接 5.3 Android 的 Context 和 IBinder 接口与 myservlet 对接 5.4 Android 本地 App 的设计 6. 结语 24

25 5.3 App 的 Context 接口与 mytvservlet 对接 在上一节的 mytvservlet 里, 使用了 Android 的 Context 和 IBinder 两个 通用性接口, 来与 Android 的 App 来沟通 : public class mytvservlet extends HttpServlet { private static final long serialversionuid = 1L; private String proofoflife ; private myproxy pproxy = null ; public void init(servletconfig config) throws ServletException { super.init(config); android.content.context androidcontext = (android.content.context)config.getservletcontext().getattribute ("org.mortbay.ijetty.context"); proofoflife = androidcontext.getapplicationinfo().packagename; androidcontext.startservice ( new Intent("com.google.android.ZigbeeApp.REMOTE_SERVICE")); androidcontext.bindservice ( new Intent("com.google.android.ZigbeeApp.REMOTE_SERVICE"), mconnection, android.content.context.bind_auto_create); //. 在上一节的 mytvservlet 里, 也使用了 Android 的 IBinder 两个通用性接 口, 来与 Android 的 App 来沟通 : private class myproxy { private IBinder ib ; private String mstatus,mledstatus ; myproxy(ibinder ibinder) { ib = ibinder ; public void setledstatus(int key){ Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); try{ ib.transact(key, data, replay, 0); catch (Exception e) { e.printstacktrace(); 25

26 我们使用 Android 框架提供的这两个通用性接口, 来与 i-jetty 框架里的 mytvservlet 沟通 这 Context 接口的详细内涵如下图 : 26

27 加上 IBinder 通用性接口, 其内涵如下图 : 这个 Context 通用性接口, 是 Android 框架里最具有权力地位的接口 例 如, 只要你能取得这个 Context 接口, 就能调用极具权力象征的 startactivity() 函数 27

28 从上图可以看到, 除了 startactivity() 函数之外, 还有 startservice() 函数 bindservice() 函数等, 都是 Android 平台上最常用的函数 在 Android 里, 上 图的实现代码片段如下 : public class ContextWrapper extends Context { Context mbase; public ContextWrapper(Context base) { mbase = base; public void startactivity(intent intent) { public ComponentName startservice(intent service) { return mbase.startservice(service); // 其中,mBase 是指针, 用来指向 ContextImpl 对象的 Context 接口 也就 是说,ContextWrapper 对象都会含有一个 ContextImpl 对象的指针 这让 ContextWrapper 能透过 mbase 而调用 ContextImpl 类里的实现代码 例如, public void startactivity(intent intent) { mbase.startactivity(intent); 就是 委托 (Delegation) 机制的实际运行了 class ContextImpl extends Context { public void startactivity(intent intent) { warnifcallingfromsystemprocess(); startactivity(intent, public void startactivity(intent intent, Bundle options) { // 实现代码 public ComponentName startservice(intent service) { warnifcallingfromsystemprocess(); return startserviceasuser(service, muser); 28

29 @Override public ComponentName startserviceasuser(intent service, UserHandle user) { // 实现代码 //.. 接下来, 就撰写 myservice 和 mybinder 两个类的代码了 如下 : 范例代码 // myservice.java package com.google.android.zigbeeapp; import android.app.service; import android.content.context; import android.content.intent; import android.os.binder; import android.os.ibinder; import android.os.parcel; import android.util.log; import android.widget.toast; public class myservice extends Service{ private IBinder mybinder = null public void oncreate() { mybinder = new public IBinder onbind(intent intent){ return mybinder ; 范例代码 // mybinder.java class mybinder extends Binder { private Context context ; private myservice srv ; public mybinder(context ctx, myservice service){ context = ctx ; srv = public boolean ontransact(int code, Parcel data, Parcel reply, int flags) throws android.os.remoteexception { if (code == 0) { Intent intent = new Intent("android.intent.action.MY_BROADCAST"); intent.putextra("inta", 101) ; sendbroadcast(intent); // 传送给 Activity 29

30 return true; 这里的 IBinder 接口是协助 IPC 的通用性接口 其典型的调用流程, 如下图 : 其实, 这个典型的通用性接口设计模式, 还有很多种变化的形式 例如下图 : 30

31 虽然是一个简单的通用性接口设计模式, 但是含有丰富的变化机制 例如上图的机制, 就让 C/C++ 层的模块成为架构的掌控者 然而, 必须理解到 : 因为设计 ( 和掌控 ) 了 IBinder 通用性 接口 设计, 才能充分保为了 C/C++ 层的模块的 逻辑 控制权 这是许多人难以体会的 31

32 G08_ 接口设计之美 _ 通用性接口的组合应用 内容 : 1. 复习 : 通用性接口的基本结构 2. 此结构是由 2 个 EIT 造形所组成 3. 谁来 实现 通用性接口呢? 4. 应用范例 : 手机与 Android TV 的多机整合 4.1 应用情境 4.2 介绍 3 个通用性接口 :Servlet Context 和 IBinder 5. 范例架构设计 : 联合应用 3 个通用性接口 5.1 iphone 手机端的规划 5.2 i-jetty 的 Servlet 接口与浏览器对接 5.3 Android 的 Context 和 IBinder 接口与 myservlet 对接 5.4 Android 本地 App 的设计 6. 结语 32

33 5.4 Android 本地 App 的設計 在 Android TV 里, 首先规划一支 App, 来与底层的 Zigbee 驱动沟通, 控制其发出 Zigbee 信号给会议大厅的主灯开关 那么, 谁来调用这支 App 呢? 答案是 :mybinder 类 class mybinder extends Binder { private Context context ; private myservice srv ; public mybinder(context ctx, myservice service){ context = ctx ; srv = public boolean ontransact(int code, Parcel data, Parcel reply, int flags) throws android.os.remoteexception { if (code == 0) { Intent intent = new Intent("android.intent.action.MY_BROADCAST"); intent.putextra("inta", 101) ; sendbroadcast(intent); // 传送给 Activity return true; mytvservlet 先透过 Context( 通用性 ) 接口来绑定启动和绑定 Service 33

34 绑定了 Service 之后, 就能透过 IBinder 通用性接口, 来与 mybinder 沟通, 进而与 ZigbeeAppActivity 沟通了 撰写一 Activity 应用类 :ZigbeeAppActivity 兹设计一个 Android 的本地应用程序 (App), 其包含一个应用子类, 就是 : ZigbeeAppActivity.java 它衔接到底层的 Zigbee 驱动程序, 发出 Zigbee 信号给会议大厅的主灯开关 如下图 : 34

35 这个 ZigbeeAppActivity 应用子类, 其幕后就继承了 Context 通用性接口, 其架构就如下图 : ZigbeeAppActivity 类, 它继承 Activity 类, 也继承了 Context 通用性接口 如下述的代码 : 范例代码 35

36 // ZigbeeAppAcitity.java package com.misoo.zigbeeapp; import android.app.activity; import android.content.broadcastreceiver; import android.content.componentname; import android.content.context; import android.content.intent; import android.content.intentfilter; import android.os.bundle; import android.os.handler; import android.os.message; import android.util.log; import android.view.view; import android.view.view.onclicklistener; public class ZigbeeAppActivity extends Activity implements OnClickListener { protected static final long DelayMillis = 100; myreceiver receiver; private byte[] deviceid = new byte[8]; private String deviceidstr = ""; private int nodecount; private boolean mpowerstatus ; private final String VALUE = "value"; String power_status, public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); protected void onresume() { super.onresume(); // // 准备接收来自 myservice/mybinder 的广播信息 receiver = new myreceiver(); IntentFilter filter = new IntentFilter(); filter.addaction("android.intent.action.my_broadcast"); registerreceiver(receiver, filter); super.onresume(); // initnative(); // 初始化 JNI 本地函数 getstatus = true; protected void onpause() { super.onpause(); uninitnative(); getstatus = false; // private boolean getstatus; private void startgetstatus(){ new Thread(){ public void run() { while (getstatus) { getstatusnative(); // 调用本地函数 36

37 ;.start(); try { sleep(delaymillis); catch (InterruptedException e) { e.printstacktrace(); // Callback from JNI 本地函数 private void reportnodeid(int index, byte id0, byte id1, byte id2, byte id3, byte id4, byte id5, byte id6, byte id7) { deviceid = setbytearray(id0, id1, id2, id3, id4, id5, id6, id7); deviceidstr = bytes2hexstring(deviceid); private void reportpowerstatus(byte id0, byte id1, byte id2, byte id3, byte id4, byte id5, byte id6, byte id7, int SocketNum, int SocketStatus) { String power_status = SocketStatus == 1? "Close" : "OPEN"; String power_tips = "Power"+ SocketNum + " Status is " + status; // (SocketNum == 1) 代表 POWERSTATUS // (SocketNum == 0x81) 代表 POWERLEDSTATUS)) // // public void SetPowerStatus( int status){ switch(status){ case 0: SetPowerStatusNative(deviceId, 1, 1); break; case 1: SetPowerStatusNative(deviceId, 1, 0); break; default: break; // static{ System.loadLibrary("zigbee"); // // 宣告 JNI 本地函数 private native int initnative(); private native int getstatusnative(); private native int uninitnative(); private native int resetnative(); private native int reconnetnative(); private native int getnodecountnative(); private native int getnodeidnative(int index); private native int SetSwitchStatusNative(byte[] DeviceId, int num, int stauts); private native int GetSwitchStatusNative(byte[] DeviceId, int num); private native int SetBrightnessNative(byte[] DeviceId, int num, int vol); private native int GetBrightnessNative(byte[] DeviceId, int num); private native int SetPowerStatusNative(byte[] DeviceId, int num, int stauts); 37

38 private native int GetPowerStatusNative(byte[] DeviceId, int num); private native int IRStudyNative(byte[] DeviceId, int keynum); private native int IRSendNative(byte[] DeviceId, int keynum); private native int GetWindowStatusNative(byte[] DeviceId); private native int GetInputStatusNative(byte[] DeviceId, int num); private native int SetOutputStatusNative(byte[] DeviceId, int num, int stauts); private native int GetOutputStatusNative(byte[] DeviceId, int num); private native int SetCurtainStatusNative(byte[] DeviceId, int status); private native int GetCurtainStatusNative(byte[] DeviceId); private native int GetTempHumiStatusNative(byte[] DeviceId); // private byte[] setbytearray(byte id0, byte id1, byte id2, byte id3, byte id4, byte id5, byte id6, byte id7){ byte[] resultbyte = new byte[8]; resultbyte[0] = id0; resultbyte[1] = id1; resultbyte[2] = id2; resultbyte[3] = id3; resultbyte[4] = id4; resultbyte[5] = id5; resultbyte[6] = id6; resultbyte[7] = id7; return resultbyte; private String bytes2hexstring(byte[] barray) { StringBuffer sb = new StringBuffer(bArray.length); String stemp; for (int i = barray.length - 1; i >= 0; i--) { stemp = Integer.toHexString(0xFF & barray[i]); if (stemp.length() < 2) sb.append(0); sb.append(stemp.touppercase()); return sb.tostring(); // class myreceiver extends BroadcastReceiver public void onreceive(context context, Intent intent) { int tempint; tempint = intent.getintextra("inta", 101); if(tempint!= -1) SetPowerStatus(tempInt); // 设定开关状态 6. 結語 综上所述, 由 i-jetty 提供 Servlet 接口来与 iphone 手机上的浏览器对接 在 i_jetty 里, 转换成为 <doget, dopost> 接口, 再经由 <T> 来使用 Context 接口, 调用它的 startservice() 函数, 来取得 IBinder 接口, 进而透过 IBinder 接口与 ZigbeeAppActivity& 硬件驱动互相通信 藉由 3 个现成的通用性接口的联合应用, 就完成了 iphone 手机与 Android TV 两端的对接与整合任务了 38

新・解きながら学ぶ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

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

(Microsoft Word - G02_\261\265\244f??\244\247\254\374_7??\245\316\255S\250\322_ok.doc)

(Microsoft Word - G02_\261\265\244f??\244\247\254\374_7??\245\316\255S\250\322_ok.doc) G02_ 接口设计之美 _7 个应用范例 內容 : 1. 范例 ( 一 ):Use Case 分析 2. 范例 ( 二 ):iphone 手机访问 Android 智能电视 3. 范例 ( 三 ): 封装通信协议 4. 范例 ( 四 ): 维护底层或后台模块的变动自由度 5. 范例 ( 五 ): 软硬整合开发 6. 范例 ( 六 ): 微信 (We Chat) 平台整合家庭物联网 7. 范例 ( 七

More information

建模与图形思考

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

More information

Microsoft Word - 01.DOC

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

More information

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

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

More information

Android Service

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

More information

建模与图形思考

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

More information

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ

D getinitparameternames() 9 下 列 选 项 中, 属 于 Servlet API 中 提 供 的 request 对 象 的 包 装 类 的 是 ( ) A HttpServletRequestWrapper B HttpServletRequest C HttpServ 第 四 章 Filter( 过 滤 器 ) 样 题 A 卷 一 选 择 题 ( 每 小 题 2 分, 共 20 分 ) 1 下 面 选 项 中, 用 于 实 现 初 始 化 过 滤 器 的 方 法 是 ( ) A init(filterconfig filterconfig) B dofilter(servletrequest req,servletresponse resp,filterchain

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

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 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

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

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

More information

untitled

untitled PowerBuilder Tips 利 PB11 Web Service 年度 2 PB Tips PB9 EAServer 5 web service PB9 EAServer 5 了 便 web service 來說 PB9 web service 力 9 PB11 release PB11 web service 力更 令.NET web service PB NVO 論 不 PB 來說 說

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

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

(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

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

Microsoft Word - GoF-ch06-8-AbsFactory-ok.doc

Microsoft Word - GoF-ch06-8-AbsFactory-ok.doc 第 6 章 Abstract Factory 樣式 137 138 Google Android 設計招式之美 Android 設計招式之美教材下載 第 6 章 Abstract Factory 樣式 139 第 6 章 Abstarct Factory 模式 6.1 Abstract Factory 模式美何在? 6.1.1 大格局的分合自如 6.1.2 不知而亦能用 之实践 6.2 介绍 Abstract

More information

Microsoft PowerPoint - 02-Servlet-Basics-Chinese.ppt

Microsoft PowerPoint - 02-Servlet-Basics-Chinese.ppt 2004 Marty Hall servlet 基础 JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 2 JSP and Servlet Books from Sun Press: http://www.coreservlets.com

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

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

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

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

软件工程文档编制

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

More information

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

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

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

Servlet

Servlet Servlet Allen Long Email: allen@huihoo.com http://www.huihoo.com 2004-04 Huihoo - Enterprise Open Source http://www.huihoo.com 1 Huihoo - Enterprise Open Source http://www.huihoo.com 2 GET POST Huihoo

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

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型 文 章 编 号 :1007-757X(2012)1-0036-04 领 域 驱 动 模 型 的 WEB 软 件 系 统 设 计 研 究 摘 要 : J2EE 3 JDK1.7 Tomcat WEB 关 键 词 : 中 图 分 类 号 :TP311 文 献 标 志 码 :A 0 引 言 Web 软 件 系 统 的 分 层 结 构 典 型 的 J2EE 软 件 系 统 开 发 方 法 分 为 三 层 结

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

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

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

手说TTS开发指南

手说TTS开发指南 手说 TTS 开发指南 v1.3 2011 年 6 月 版权所有 : 手说工作室 shoushuo.com 版本时间作者说明 1.0 2010-11-15 张波 1.1 2010-12-27 在 ondestroy 方法 unbindservice 1.2 2010-12-30 1.3 2011-6-12 去掉 TTS 初始化 ; ttsservice.initialize() 方法调用添加接口方法

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 access_token=access_token (http

停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址   access_token=access_token (http 停止混流接口 请注意 : 该功能需要联系 ZEGO 技术支持开通 1 接口调用说明 http 请求方式 : POST/FORM, 需使用 https 正式环境地址 https://webapi.zego.im/cgi/stop-mix? access_token=access_token (https://webapi.zego.im/cgi/stop-mix? access_token=access_token)

More information

01_Service

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

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

resp.getwriter().print(j + "*" + i + "=" + j * i+" "); resp.getwriter().print("<br/>"); protected void dopost(httpservletrequest req, HttpServletRespo

resp.getwriter().print(j + * + i + = + j * i+ ); resp.getwriter().print(<br/>); protected void dopost(httpservletrequest req, HttpServletRespo 第三章补充案例 案例 3-1 HttpServlet 一 案例描述 1 考核知识点名称 :HttpServlet 编号 : 2 练习目标 掌握 HttpServlet 的 doget() 方法和 dopost() 方法 3 需求分析由于大多数 Web 应用都是通过 HTTP 协议和客户端进行交互, 因此, 在 Servlet 接口中, 提供了 一个抽象类 javax.servlet.http.httpservlet,

More information

Stateless Session Beans(无状态bean)的学习

Stateless Session Beans(无状态bean)的学习 一 Stateless Session Beans( 无状态 bean) 的学习 第一步 : 要定义一个会话 Bean, 首先需要定义一个包含他所有业务方法的接口 这个接口不需要任何注释, 就像普通的 java 接口那样定义 调用 EJB 的客户端通过使用这个接口引用从 EJB 容器得到的会话 Bean 对象 stub 接口的定义如下: HelloWorld.java package com.foshanshop.ejb3;

More information

使用MapReduce读取XML文件

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

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

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

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc Java C++ Pascal C# C# if if if for while do while foreach while do while C# 3.1.1 ; 3-1 ischeck Test() While ischeck while static bool ischeck = true; public static void Test() while (ischeck) ; ischeck

More information

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

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

More information

《大话设计模式》第一章

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

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

chp6.ppt

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

More information

untitled

untitled Work Managers 什 Work Managers? WebLogic Server 9.x 行 (thread) 理 thread pool 數量 立 execute queues 來 量 理 thread count, thread priority 參數 理 thread pool 數量? WebLogic Server 9.x 理 行 (thread) (self-tuning) 句

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

无类继承.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

Microsoft Word - PHP7Ch01.docx

Microsoft Word - PHP7Ch01.docx PHP 01 1-6 PHP PHP HTML HTML PHP CSSJavaScript PHP PHP 1-6-1 PHP HTML PHP HTML 1. Notepad++ \ch01\hello.php 01: 02: 03: 04: 05: PHP 06:

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

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii 前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time

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

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

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

Guava学习之Resources

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

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

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

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

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

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他

使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他 使用 Eclipse 开发 Java EE 应用 (Web 应用 ) 这里以开发一个简单的 Web 应用为例, 介绍使用 Eclipse 开发 Java EE 应用的一般步 骤 此处使用的 Eclipse 是 Eclipse IDE for Java EE Developers; 如果是使用的其他 Eclipse 插件 ( 比如 MyEclipse 插件 ), 其开发方式和步骤可能略有差异和不同 在该例中,

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

概述

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

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt

Microsoft PowerPoint - 05-Status-Codes-Chinese.ppt 2004 Marty Hall 服务器响应的生成 : HTTP 状态代码 JSP, Servlet, & Struts Training Courses: http://courses.coreservlets.com Available in US, China, Taiwan, HK, and Worldwide 2 JSP and Servlet Books from Sun Press: http://www.coreservlets.com

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

單步除錯 (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

Microsoft Word - Broker.doc

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

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

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

拦截器(Interceptor)的学习

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

More information

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF Chapter 2 WF 2.1 WF 2.2 2. XAML 2. 2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF WF WF WF WF EDI API WF Visual Studio Designer 1 2.1 WF Windows Workflow Foundation 2 WF 1 WF Domain-Specific

More information

中 国 矿 业 大 学

中 国 矿 业 大 学 实验一动态网页设计基础 实验目的 : 1 掌握 HTML 的常用标签 2 掌握 HTML 设计基本网页 3 掌握 HTML 设计网络中常用的表单 4 了解 JavaScript 的简单应用, 实验环境 : 操作系统 Windows XP 或更高版本实验内容 : 1 编写一个简单的学生信息注册页面, 包括学号 姓名 密码 专业, 其中学号 姓名用单行文本框 密码使用密码框 专业使用下拉菜单 ; 2 使用框架将一个页面均分为四个区域,

More information

CHAPTER 1

CHAPTER 1 CHAPTER 1 1-1 System Development Life Cycle; SDLC SDLC Waterfall Model Shelly 1995 1. Preliminary Investigation 2. System Analysis 3. System Design 4. System Development 5. System Implementation and Evaluation

More information

RxJava

RxJava RxJava By 侦跃 & @hi 头 hi RxJava 扩展的观察者模式 处 观察者模式 Observable 发出事件 Subscriber 订阅事件 bus.post(new AnswerEvent(42)); @Subscribe public void onanswer(answerevent event) {! }! Observable observable = Observable.create(new

More information

關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK

關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK 2 l 跨裝置網頁設計 Android ios Windows 8 BlackBerry OS Android HTML 5 HTML 5 HTML 4.01 HTML 5 CSS 3 CSS 3 CSS 2.01 CSS 3 2D/3D PC JavaScript

More information

國家圖書館典藏電子全文

國家圖書館典藏電子全文 EAI EAI Middleware EAI 3.1 EAI EAI Client/Server Internet,www,Jav a 3.1 EAI Message Brokers -Data Transformation Business Rule XML XML 37 3.1 XML XML XML EAI XML 1. XML XML Java Script VB Script Active

More information

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2 PowerBuilder 9 PowerBuilder Native Interface(PBNI) PowerBuilder 9 PowerBuilder C++ Java PowerBuilder 9 PBNI PowerBuilder Java C++ PowerBuilder NVO / PowerBuilder C/C++ PowerBuilder 9.0 PowerBuilder Native

More information

Microsoft Word - GoF-ch04-8-Factory-ok.doc

Microsoft Word - GoF-ch04-8-Factory-ok.doc 第 4 章 Factory Method 样式 93 94 Google Android 设计招式之美 第 4 章 Factory Method 样式 95 第 4 章 Factory Method 模式 4.1 Factory Method 模式美何在? 4.2 介绍 Factory Method 模式 4.2.1 谁来創建应用类别之对象? 4.2.2 GoF 的 Factory Method 模式图

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

Go构建日请求千亿微服务最佳实践的副本

Go构建日请求千亿微服务最佳实践的副本 Go 构建 请求千亿级微服务实践 项超 100+ 700 万 3000 亿 Goroutine & Channel Goroutine Channel Goroutine func gen() chan int { out := make(chan int) go func(){ for i:=0; i

More information

導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式

導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式 導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式語言篇第 3 章 C# 程式語言基礎 C# C# 3.0 var 第 4 章 基本資料處理 C# x

More information

05 01 accordion UI containers 03 Accordion accordion UI accordion 54

05 01 accordion UI containers 03 Accordion accordion UI accordion 54 jquery UI plugin Accordion 05 01 accordion UI containers 03 Accordion accordion UI accordion 54 05 jquery UI plugin 3-1

More information

TopTest_Adminstrator.doc

TopTest_Adminstrator.doc 壹 前 言... 3 貳 系 統 簡 介... 4 一 TKB multimedia Top-Test 系 統 架 構...4 1. 使 用 者 介 面 層 (Presentation tier)...5 2. 商 業 邏 輯 層 (business logic tier)...5 3. 資 料 服 務 層 (data services tier)...5 二 TKB Multimedia Top-Test

More information

设计模式 Design Patterns

设计模式 Design Patterns 丁勇 Email:18442056@QQ.com 学习目标 掌握 Model I 体系结构 掌握 Model II 体系结构 掌握 MVC 应用程序 Model I 体系结构 6 1 Model I 体系结构结合使用 JSP 页面和 Bean 来开发 Web 应用程序 应用服务器 请求 JSP 页面 响应 Bean 数据库服务器 Model I 体系结构 6 2 Model I 体系结构用于开发简单的应用程序

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

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21 Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21 Outlines for Today Future Planning Review System Architecture Dev. Tools & Making the First App Project Structure & File Details Application

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

Microsoft Word - json入门.doc

Microsoft Word - json入门.doc Json 入门 送给亲爱的女朋友, 祝她天天快乐 作者 :hlz QQ:81452743 MSN/Email:hulizhong2008@163.com json 入门 (1) json 是 JavaScript Object Notation 的简称 ; 在 web 系统开发中与 AJAX 相结合用的比较多 在 ajax 中数据传输有 2 中方式 : 文本类型, 常用 responsetext 属性类获取

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

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

IoC容器和Dependency Injection模式.doc

IoC容器和Dependency Injection模式.doc IoC Dependency Injection /Martin Fowler / Java Inversion of Control IoC Dependency Injection Service Locator Java J2EE open source J2EE J2EE web PicoContainer Spring Java Java OO.NET service component

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

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 - 第4章 Servlet开发—教学设计.doc

Microsoft Word - 第4章 Servlet开发—教学设计.doc 传智播客 JavaWeb 程序开发入门 教学设计 课程名称 : JavaWeb 程序开发入门 授课年级 : 2014 年级 授课学期 : 2014 学年第一学期 教师姓名 : 某某老师 2014 年 09 月 09 日 课题名称内容分析教学目标及基本要求重点及措施 计划第 4 章 Servlet 技术 6 课时学时随着 Web 应用业务需求的增多, 动态 Web 资源的开发变得越来越重要, 为此 Sun

More information

關於本書 Part 3 CSS XHTML Ajax Part 4 HTML 5 API JavaScript HTML 5 API Canvas API ( ) Video/Audio API ( ) Drag and Drop API ( ) Geolocation API ( ) Part 5

關於本書 Part 3 CSS XHTML Ajax Part 4 HTML 5 API JavaScript HTML 5 API Canvas API ( ) Video/Audio API ( ) Drag and Drop API ( ) Geolocation API ( ) Part 5 網頁程式設計 HTML JavaScript CSS HTML JavaScript CSS HTML 5 JavaScript JavaScript HTML 5 API CSS CSS Part 1 HTML HTML 5 API HTML 5 Apple QuickTime Adobe Flash RealPlayer Ajax XMLHttpRequest HTML 4.01 HTML 5

More information

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

More information