<4D F736F F D FB1B5A4663F3FA4A7ACFC5FB371A5CEA9CAB1B5A466AABA3FA6583FA5CE5F6F6B2E646F63>
|
|
- 伉蚁 阳
- 4 years ago
- Views:
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
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 information09 (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)
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 informationMicrosoft Word - 01.DOC
第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的
More information用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應
專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;
More informationAndroid 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 informationD 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 informationEJB-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 测试试题 ******
******************* * 关于 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 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入
100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入
More informationuntitled
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 informationres/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 information1.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
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 informationChapter 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 informationMicrosoft 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 informationMicrosoft 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 informationJavaIO.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 informationOOP 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 informationuntitled
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 information1 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 information1: 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) 開發教師 : 張晉源老師 開發學生 : 林政揚 (s11639104@stu.edu.tw) 學校系所 : 樹德科技大學資訊工程學系 實驗目的 本實驗的目的在於讓同學們可以了解 Android 系統核心內部的行程通訊的原理, 透過呼叫系統提供的其中一樣服務
More informationKillTest 质量更高 服务更好 学习资料 半年免费更新服务
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 informationServlet
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 informationOOP 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 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型
文 章 编 号 :1007-757X(2012)1-0036-04 领 域 驱 动 模 型 的 WEB 软 件 系 统 设 计 研 究 摘 要 : J2EE 3 JDK1.7 Tomcat WEB 关 键 词 : 中 图 分 类 号 :TP311 文 献 标 志 码 :A 0 引 言 Web 软 件 系 统 的 分 层 结 构 典 型 的 J2EE 软 件 系 统 开 发 方 法 分 为 三 层 结
More information1 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 informationOOP 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 informationEJB-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 开发指南 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 informationuntitled
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 正式环境地址 https://webapi.zego.im/cgi/stop-mix? access_token=access_token (https://webapi.zego.im/cgi/stop-mix? access_token=access_token)
More information01_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 失效 接入方可以使用 AppID 和 AppSecret
More informationresp.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 informationStateless 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 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop
More informationDatabase_001
作者 : 林致宇日期 :2011/10/26 主要參考來源 : http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applicat ions/ 問題 : 如在存取一個已經建立好的資料庫? 解答 : 有一些應用程式會需要讀取已經建立好的資料庫, 例如一個試題測驗應用程式, 裡面的試題可能已經於電腦上, 使用任何的
More informationSDK 概要 使用 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 informationMicrosoft 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 class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保
More information《大话设计模式》第一章
第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜
More informationKillTest 质量更高 服务更好 学习资料 半年免费更新服务
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 informationchp6.ppt
Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行
More informationuntitled
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 服务 在这篇文章中, 我将介绍如何在 Spark 中使用 Akkahttp 并结合 Cassandra 实现 REST 服务, 在这个系统中 Cassandra 用于数据的存储 我们已经见识到 Spark 的威力, 如果和 Cassandra 正确地结合可以实现更强大的系统 我们先创建一个 build.sbt 文件, 内容如下
More information无类继承.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 informationMicrosoft 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 informationChapter 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# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time
More information3.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
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 informationuntitled
1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart
More informationGuava学习之Resources
Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于
More informationKillTest 质量更高 服务更好 学习资料 半年免费更新服务
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 文件中为了解决这个问
内置对象的取得和多人开发 一 内置对象的取得 在使用的 servlet 的时候可以通过 HttpServletResquest 获取到一些内置对象, 但是在 struts2 中为了方便取得内置对象, 专门提供了一个 ServletActionContext 这个类取得取得内置对象, 观察如下方法 public static javax.servlet.jsp.pagecontext() 取得 pagecontext
More informationuntitled
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一体化理念的课程教学大纲设计
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 插件 ( 比如 MyEclipse 插件 ), 其开发方式和步骤可能略有差异和不同 在该例中,
More informationJava 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 informationMicrosoft 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
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
Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)
More informationMicrosoft Word - Broker.doc
Broker 模式 采用 broker 模式对分布式计算进行简单模拟 系统在一个进程内模拟分布式环境, 因此不涉及网络编程和进程间通信,Broker 通过本地函数调用的方式实现 request 和 response 的转发 采用 broker 模式对分布式计算进行简单的模拟, 要求如下 : 设计四个 server, 一个 server 接收两个整数, 求和并返回结果, 一个 server 接收两个整数,
More informationCC213
: (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 informationOOP 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) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器
More information中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之
臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)
More information2 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 informationCHAPTER 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 informationRxJava
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
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 informationBOOL 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 informationMicrosoft 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 informationKillTest 质量更高 服务更好 学习资料 半年免费更新服务
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 informationGo构建日请求千亿微服务最佳实践的副本
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# 程式語言篇第 3 章 C# 程式語言基礎 C# C# 3.0 var 第 4 章 基本資料處理 C# x
More information05 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多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t
設定存取 SD 卡的權限 SD SD 13.1.4
More informationTopTest_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
丁勇 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 等控件 代码和注释如下 :
EditText 实现城市搜索 1801210778 邹宇航 摘要 : 使用 EditText 实现搜索城市的功能, 以此为依据更新 ListView 1. 效果图 : 2. 主要步骤 (1) 在 select-city.xml 布局文件中中添加 EditText 控件用作搜索框, 然后添加 ListView 控件用来显示城市名字内容 代码如下 : 预览图 : (2) 在 SelectCity.java
More informationAndroid 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 WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立
More informationMicrosoft Word - json入门.doc
Json 入门 送给亲爱的女朋友, 祝她天天快乐 作者 :hlz QQ:81452743 MSN/Email:hulizhong2008@163.com json 入门 (1) json 是 JavaScript Object Notation 的简称 ; 在 web 系统开发中与 AJAX 相结合用的比较多 在 ajax 中数据传输有 2 中方式 : 文本类型, 常用 responsetext 属性类获取
More information9, : 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 informationFun 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 informationIoC容器和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 informationMicrosoft 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 informationJava 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 informationMicrosoft 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
網頁程式設計 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 informationMac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);
More information