Microsoft Word - 第十章.doc

Size: px
Start display at page:

Download "Microsoft Word - 第十章.doc"

Transcription

1

2 撰写高效率的 MTS/COM+ 组件和 MTS/COM+ 应用系统 许多人在开发了一些基本的 MTS/COM+ 分布式多层应用系统之后都觉得执行效率不好, 因此也开始怀疑分布式多层应用系统是否能够提供合理的执行效率 事实上, MTS/COM+ 提供了许多主从架构无法提供的功能, 这些功能能够帮助分布式多层应用系统增加执行效率以及系统的延展性 那么为什么许多人都会觉得分布式多层应用系统的执行速度很缓慢呢? 这个问题正是本章要讨论的主题 使用正确方法开发的分布式多层应用系统其执行效率可以和主从架构并驾齐驱, 并且提供了更好的系统延展性 开发高效率的 MTS/COM+ 组件和应用系统并不困难, 但是程序员必须掌握一些重要的概念和技巧 本章讨论的内容将让 Delphi 的程序员完全掌握这些开发 MTS/COM+ 应用系统最重要的技术 本章重点 你应该牢记的事情 快速建立和呼叫远程 MTS/COM+ 对象 MTS/COM+ 对象和数据的传递 状态信息 结论

3 现在你应该知道如何使用 Delphi 开发 MTS/COM+ 组件以及 MTS/COM+ 应用系统了 通过 Delphi 提供的向导, 程序员可以快速地开发出以 MTS/COM+ 为骨架的分布式多层应用系统 但是我们使用分布式多层应用系统的目的除了因为这种架构比较好维护并且适合使用在 Internet/Intranet 或电子商务系统之外, 我相信执行效率仍然是所有程序员都非常重视的 不管一个系统的架构有多么的好, 没有适当的执行效率, 这种系统仍然不会为用户所接受 许多对于 MTS 应用系统有经验的程序员都觉得 MTS 的执行效率不好, 我也有一些朋友在使用 MTS 开发分布式多层应用系统之后失败的例子 当然失败的例子大都不是因为 MTS 系统无法稳定的执行, 事实上,MTS 是相当稳定的执行环境,Windows2000 的 COM+ 更比 MTS 来得稳定和有效率 这些系统真正失败的原因是因为当客户端的人数一多的时候, 整个系统执行的速度就如 龟速 一般 我个人也曾接到一些读者的来信, 其中有一些读者在信中说当他们决定把主从架构改为使用 MTS 的分布式多层应用系统之后, 不但开发的速度变慢了, 因为他们得同时开发执行在中间层的 MTS 组件以及客户端的图形用户接口应用程序 而且当系统开发完成之后, 他们发现 MTS 的分布式多层系统执行效率比主从架构缓慢了数倍以上 这让他们相当地沮丧, 因为他们觉得从主从架构改为分布式多层之后完全感觉不到任何的好处, 反而是系统的用户不断地向他们抱怨新的系统比旧的系统更为差劲, 因此这些读者想要知道如何能够解决这些问题 当然, 我无法立刻帮助他们解决问题, 因为系统不是我写的, 并且一个系统执行效率的问题除了和 MTS 有关之外, 基本上开发人员如何设计系统是影响整个应用系统执行效率最大的因素 同样, 本章讨论的内容并不在于教导程序员如何以对象导向分析 / 对象导向设计的方式设计 MTS/COM+ 的分布式多层应用系统 有关这个问题的说明, 你应该参考相关的对象导向分析 / 对象导向设计书籍 不过本章将会从技术角度告诉你如何使用最有效率的方式来建立和调用 MTS/COM+ 对象, 让你开发的 MTS/COM+ 分布式多层应用系统能够提供接近主从架构的执行效率 10-1 你应该牢记的事情 就和几年前许多程序员从 File-Based 应用系统转换到主从架构一样, 由于对于 File-Based 数据库和 RDBMS 的异同不甚了解, 许多程序员仍然以 File-Based 数据库的方式来开发主从架构, 因此造成了所开发的主从架构系统执行缓慢的问题 经过了一段时间的学习之后这些程序员才了解了问题的所在, 慢慢地改善了开发主从架构的技术, 才让主从架构系统的开发进入成熟的阶段 现在我们面对的是以 MTS/COM+ 为中介软件的应用系统, 它和以 Delphi 的 MIDAS 应用程序服务器作为中介软件的应用系统也有所不同, 即使这两种架构都是分布式多层应用系统 因此程序员也必须学习使用新的概念和技术来开发 MTS/COM+ 应用系统 如果你对开发 MIDAS 应用程序服务器已经有些经验, 并且使用你在 MIDAS 应用程序服务器学习到的方式来开发 MTS/COM+ 应用系统, 那么你仍然可能会觉得非常的沮丧, 因为你会发现你所开发出来的 MTS/COM+ 应用系统的执行效率比 MIDAS 应用程序服务器缓慢了 5~10 倍的速度 当然其中一部分原因是因为 MIDAS 应用程序服务器只提供了最简单的远程数据存取的功能, 而 MTS/COM+ 应用系统却提供了相当多的系统功能, 这些是 MIDAS 应用程序服务器无法比拟的 但是, 即使想以一些执行效率来交换系统功能和稳定性, 我们也不希望结果是无法接受的缓慢速度 我想我们要的分布式多层应用系统是具有丰富的功能以及稳定的执行环境, 但是它的执行效率也必须在可接受的范围之内 为了达成这种对于 MTS/COM+ 应用系统的要求, 程序员在开发 MTS/COM+ 应用系统必须把几件事情牢记在心中 下面是一些基本的事情, 程序员在开发 MTS/COM+ 应用系统时必须把它们牢记在心中 : 对于客户端而言, 应该尽早取得需要使用的 MTS/COM+ 对象, 并且在最后使用完毕之后再释放取得的 MTS/COM+ 对象

4 尽量避免激活不必要的事务 Context 对于 MTS/COM+ 对象而言, 应该让事务管理越晚发生越好 并且在执行完必要的工作之后立刻调用 SetComplete/SetAbort 和 EnableCommit/DisableCommit 方法释放占据的资源 尽量把相关的 MTS/COM+ 对象放在同一个套件组件中, 尽量减少不同套件组件之间 MTS/COM+ 对象的调用 如果一定要进行不同套件组件之间的调用, 请再参考第一项的说明 在 MTS 中使用 STA 线程模型的对象, 在 COM+ 中使用 Neutral/Rental 线程模型的对象 尽量利用 MTS/COM+ 对于数据库的 Pooling, 请记得使用 MTS/COM+ 的对象 Pooling 来利用数据库 Pooling, 而不要使用主从架构的方式来利用数据库 Pooling 当然, 除了这些规则之外, 程序员也必须在适当的场合以自己的经验来判断如何以最好的方式来撰写程序代码 下面的章节会以上述的规则来实际地验证这些法则是否真的有效 10-2 快速建立和调用远程 MTS/COM+ 对象 在开发 MTS/COM+ 应用系统时的许多时间是花费在建立和调用远程 MTS/COM+ 对象 你可别小看这些时间, 在许多的应用系统中这些花费的时间是相当可观的 如果你使用 MTS/COM+ 来开发项目, 那么这些花费的时间也可能是你的项目无法通过验收的主因 因此本小节要讨论的内容就是如何快速地建立和调用远程 MTS/COM+ 对象, 让应用系统以最少的时间来完成这些工作 让我们冷静地想一想, 在一个分布式多层应用系统中, 应用程序所面对的是什么? 那当然就是 MTS/COM+ 组件 企业逻辑程序代码以及数据 ( 数据库 ) 了 而且在分布式多层应用系统中经常需要调用 MTS/COM+ 组件来执行企业逻辑程序代码, 并且处理数据 因此, 如果我们能够使用最有效率的方式来建立和调用 MTS/COM+ 组件, 那么我们就可以掌握系统 1/3 的执行效率因素了 事实上, 在 MTS/COM+ 应用系统中, 程序员第一个要掌握的知识就是如何正确地使用 MTS/COM+ 组件 如果要详细说明的话, 就是应用程序应该在什么时候建立 MTS/COM+ 组件? 应用程序调用 MTS/COM+ 组件的负荷有多少?MTS/COM+ 组件调用 MTS/COM+ 组件的负荷又有多少? 在前面的小节中已经说过, 应用程序应该尽早建立要使用的 MTS/COM+ 组件, 这是因为当应用程序建立了 MTS/COM+ 组件之后, 只是保留了 MTS/COM+ 组件的 ContextWrapper(CW) 组件 CW 所占用的资源极少, 因此对于系统的负荷不大 但是尽早建立 MTS/COM+ 组件, 以及如何使用 MTS/COM+ 组件却对系统的执行效率有很大的影响 让我们以一个实际的范例来说明这些问题的重要性 这个范例会清楚地让我们了解建立 MTS/COM+ 组件时机的重要性,MTS/COM+ 组件和 MTS/COM+ 组件之间的调用负荷, 以及主从架构和分布式多层应用系统之间的差距 图 10-1 是一个范例 MTS/COM+ 客户端应用程序执行的结果画面 在这个范例中我使用了三种方法从一个数据表中取得数据 其中的 NoProxy 按钮使用的方法是每当这个按钮被点选之后, 再建立并且调用 mtscoormonitor 这个 MTS/COM+ 组件, 而 mtscoormonitor 会再建立另外一个称为 mtsdoworkshops 的 MTS/COM+ 组件, 并从 WorkShops 数据表中取得数据 在 NoProxy 按钮上方的 TEdit 控件显示了 mtscoormonitor 调用 mtsdoworkshops 组件所花费的时间, 而下方的 TEdit 控件显示了客户端应用程序调用 mtscoormonitor 花费的时间 WithProxy 按钮则使用了另外一个方法来执行和 NoProxy 按钮相同的工作 只是 WithProxy 按钮并不是在被点选之后才建立 mtscoormonitor 组件, 而是使用客户端应用程序在一开始执行之前便已经建立好 mtscoormonitor 组件 由于 WithProxy 按钮使用

5 了预先建立的 mtscoormonitor 组件, 因此它符合了前面书说的应用程序应该尽早建立 MTS/COM+ 组件的规则 在 WithProxy 按钮上方的 TEdit 控件显示了 mtscoormonitor 调用 mtsdoworkshops 组件所花费的时间, 而下方的 TEdit 控件显示了客户端应用程序调用 mtscoormonitor 花费的时间 至于 CSConn 按钮则是使用 TADOConncetion 和 TADOQuery 组件直接连接 WorkShops 数据表并且取得数据 图 10-1 中窗体的 Caption 显示了客户端应用程序在一开始执行后先建立 WithProxy 按钮使用的 mtscoormonitor 对象所花费的时间 要注意的是, 这个时间 (0.55 秒 ) 包含了 DLLHost.EXE 加载套件组件 客户端应用程序建立 DCOM 连接以及建立 mtscoormonitor 组件的时间 图 10-1 显示的结果是执行 100 次的平均时间 下面的表格是这三种方法的比较结果 方法 执行速度 差 异 不使用 Proxy N/A 使用 Proxy 快 40% 主从架构 比不使用 Proxy 快 35%, 比使用 Proxy 慢 5% 上面的表格中我们可以看出尽早建立 MTS/COM+ 组件对于客户端应用程序的影响, 它可以 大大增加客户端应用程序的执行效率, 甚至在少量数据的情形下 (WorkShops 数据表包含的 数据只有数十笔 ), 其执行的效率比主从架构还好 下面的程序代码就是 NoProxy 按钮的 OnClick 事件处理程序 可以看到它在循环中调用 TestPerf 函数, 而 TestPerf 函数则是利用 wrapper 类别来建立 mtscoormonitor 组件, 再调用它的方法来取得数据 Procedure TForm2.btnNoProxyClick(Sender:TObject); var icount:integer; lstart:=gettickcount; lcreateobjecttime:=0; for icount:=1 to LOOPS do //Iterate lcreateobjecttime:=lcreateobjecttime+testperf; //for lend:=gettickcount;

6 edtnptime.text:=floattostr((lend-lstart)/1000.0); Edit1.Text:=FloatToStr(lCreateObjectTime/1000.0/LOOPS); function TForm2.TestPerf:Longint; var npmonitor:imtscoormonitor; npmonitor:=comtscoormonitor.createremote(mtsmachine); npmonitor.getwsinfo(ltime); Result:=lTime; WithProxy 按钮的 OnClick 事件处理程序如下 : procedure TForm2.btnProxyClick(Sender:TObject); var icount:integer; lstart:=gettickcount; lcreateobjecttime:=0; for icount:=1 to LOOPS do //Iterate lcreateobjecttime:=lcreateobjecttime+testperf1; //for lend:=gettickcount; edtwptime.text:=floattostr((lend-lstart)/1000.0); Edit2.Text:=FloatToStr(lCreateObjectTime/1000/LOOPS); function TForm2.TestPerf1:Longint; wpmonitor.getwsinfo(ltime); Result:=lTime; procedure TForm2.FormActivate(Sender:TObject); lstart:=gettickcount; wpmonitor:=comtscoormonitor.createremote(mtsmachine); lend:=gettickcount; Self.Caption:=FloatToStr((lEnd-lStart)/1000.0); 在循环中它调用 TestPerf1 函数, 再由 TestPerf1 调用 mtscoormonitor 组件的方法以取得数据 至于 TestPerf1 函数使用的 mtscoormonitor 组件则是在这个客户端应用程序的 FormActivate 事件处理程序中预先建立的, 并且储存在类的全局变量之中, 以便在 TestPerf1 函数中使用

7 下面的程序代码则是 mtscoormonitor 组件的 GetWSInfo 方法的程序代码 可以看到在这个方法中它使用了 ObjectContext 的 CreateInstance 方法以建立其他的 MTS/COM+ 组件, 再调用这个组件的方法来取得 WorkShops 数据表的数据 Function TmtsCoorMonitor.GetWSInfo(outlPerData:Integer):OleVariant; var IdoWorkShops:ImtsdoWorkShops; try lperdata:=gettickcount; ObjectContext.CreateInstance(CLASS_mtsdoWorkShops,IID_ImtsdoWorkShops, IdoWorkShops); ssqldata:='select * from WorkShops'; Result:=GetWorkShopsData(sSQLData); ObjectContext.SetComplete; lperdata:=gettickcount-lperdata; except on Exception do ObjectContext.SetAbort; //try/except 由于上面的范例执行了 100 次并且取用执行的平均值, 因此即使是在 NoProxy 的情形下都有资源被高速缓存 (cache), 所以还看不出尽早建立 MTS/COM+ 组件和需要时才建立 MTS/COM+ 组件的真正差异 图 10-2 便是让这个范例应用程序只执行一次的结果 下面的表格是这三种方法的比较 : 方法执行速度不使用 Proxy 0.21N/A 使用 Proxy 快 75% 以上主从架构 0.08 比不使用 Proxy 快 62%, 比使用 Proxy 慢 37% 从这次的比较中我们可以真正地看到这两种不同方式执行效率的差距, 使用 Proxy 比不使用 Proxy 足足快了 75% 以上 事实上, 这是比较接近实际的分布式多层应用系统 因为在实际的分布式多层应用系统中, 虽然客户端应用程序会调用 MTS/COM+ 对象, 但是在每一个调用之间也会执行其他的企业逻辑程序代码, 或等待用户输入数据 因此 MTS/COM+ 可能已经暂时释放了 MTS/COM+ 组件 在这种情形下, 尽早建立 MTS/COM+ 对象, 并且保存 MTS/COM+ 对象的 Proxy( 或 CW) 会比每一次重新建立 MTS/COM+ 对象再调用快 75% 以上, 甚至可以快上数倍 因为在实际的应用中客户端应用程序可能会传递许多参数, 这对于

8 客户端应用程序的执行效率会有重大的影响 使用 Proxy 方法还有另外一个好处, 那就是可以避免 DLLHost.EXE 释放套件组件并且结束执行 这样可以让套件组件停留在内存中, 以加快 MTS/COM+ 应用系统的执行效率 因为如果有其他的客户端应用程序也需要调用这个软件包中的 MTS/COM+ 组件, 就不需要再花费激活 DLLHost.EXE 并且加载软件包的时间了 例如图 10-3 是执行另外一个客户端应用程序的画面 从图 10-3 的窗体 Caption 中我们可以清楚地看到, 它一开始建立 mtscoormonitor 花费的时间大幅地减少了 30% 以上 下面的表格是这两种方法的比较 : 方法执行速度第 1 次激活 MTS/COM N/A 第 2 次之后激活 MTS/COM+ 0.2 快 30% 以上因此使用 Proxy 的方式不但可以增加这个应用程序的执行效率, 还能够增加其他客户端应用程序的效率, 进而增加整个分布式多层应用系统的效率 在下面的小节中我们从几个方面来说明如何在 MTS/COM+ 应用系统中增加系统的执行效率 1 客户端和远程 MTS/COM+ 对象程序员应该尽早在客户端应用程序中建立要使用的 MTS/COM+ 组件, 并且储存 MTS/COM+ 组件的 proxy 在类别变量中, 以便在不同的函数中使用 这样比在不同的函数中再建立 MTS/COM+ 组件可以大大地改善执行效率 如果程序员再配合使用协调对象的方式, 不要建立大量的 MTS/COM+ 组件, 那么又可以再增加执行效率, 并且节省系统使用的资源 ( 因为这可以减少 MTS/COM+ 执行环境需要维护的 CW) 2 同一套件组件之间的 MTS/COM+ 对象从上面的范例中我们可以知道, 在 MTS/COM+ 执行环境中,MTS/COM+ 组件建立其他的 MTS/COM+ 组件的负荷是非常小的, 因此程序员不需要担心 MTS/COM+ 组件建立其他 MTS/COM+ 组件需要花费的时间, 而把所有的企业逻辑程序代码撰写在一个单一的 MTS/COM+ 组件之中 而且请你仔细观察前面 mtscoormonitor 的 GetWSInfo 方法的程序代码 在 GetWSInfo 方法中它用来建立 mtsdoworkshops 组件的方式是在每一次被调用时才建立 mtsdoworkshops 组件, 而不是预先建立 mtsdoworkshops 但是这样所花费的时间仍然很小 这是因为这些组件都是在一个相同的套件组件之中, 因此彼此之间的建立组件花费的时间也就很小 如果我们再把上面的程序代码改成预先建立 mtsdoworkshops 组件, 那么又可以增加一些效率 3 不同套件组件之间的 MTS/COM+ 对象当然, 如果客户端应用程序调用的 MTS/COM+ 组件分属于不同的套件组件, 例如, 如果 mtscoormonitor 组件和 mtsdoworkshops 组件是在不同的套件组件之中, 那么 mtscoormonitor 组件调用 mtsdoworkshops 组件需要花费的时间就很可观了 甚至可能比前面客户端应用程序使用 NoProxy 的方法建立 MTS/COM+ 组件还多 因此, 当程序员在开发 MTS/COM+ 应用系统时, 一定要好好地规划 MTS/COM+ 组件之间的关系, 应该尽量把相

9 关的 MTS/COM+ 组件放在相同的套件组件之中, 并且尽量避免跨套件组件之间的组件建立和组件调用 虽然在实际的 MTS/COM+ 应用系统中跨套件组件或跨机器之间的组件建立和调用是不可避免的, 例如为了提供容错能力以及平均负荷的能力, 但是只要程序员有良好的规划, 仍然可以有效地降低系统的负荷 从上面的实际范例中我们学习到了什么呢? 非常重要的, 那就是程序员应该尽量先建立应用程序需要使用的 MTS/COM+ 对象, 而且应该把建立的 MTS/COM+ 对象的接口变量储存在类别的全域变量之中, 而不要在每一个独立的程序或函数中再建立 MTS/COM+ 对象 这样可以大大加快应用程序调用远程 MTS/COM+ 对象的速度 因为当应用程序以全域变量储存建立的 MTS/COM+ 对象时, 事实上, 客户端应用程序是保留了 MTS 的 ContextWrapper 对象, 或 COM+ 的 Context-awareProxy 如此做可以减少连接远程 MTS/COM+ 执行环境的次数以及减少 MTS/COM+ 执行环境需要初始化以及建立 ContextWrapper 对象或 COM+ 的 Context-awareProxy 的时间, 因此应用程序会执行得比较快速 至于客户端应用程序保留 ContextWrapper 对象或 Context-awareProxy 在 MTS/COM+ 执行环境中花费的内存空间大约是 600K 到 800K 不等, 可以说是相当的少 使用这么少的空间却得到良好的执行效率是值得的 如果程序员又使用了协调对象的模型, 减少客户端应用程序需要建立大量 MTS/COM+ 组件的话, 那么就可以同时节省内存, 又能够得到执行效率, 可以说是两全其美 另外, 在相同的套件组件中对于 MTS/COM+ 对象的建立以及相互之间的调用时间都非常的快速, 因此程序员更应该使用协调对象模型, 让协调对象在 MTS/COM+ 执行环境中调用其他的 MTS/COM+ 组件来完成工作, 而不要让客户端应用程序调用大量的 MTS/COM+ 组件来执行工作 最后, 程序员在设计 MTS/COM+ 组件和套件组件时, 必须好好地规划哪些 MTS/COM+ 组件应该实现在哪一个套件组件之中 因为跨越套件组件之间的调用速度是非常缓慢的, 因此规划良好的 MTS/COM+ 组件以及套件组件能够增加 MTS/COM+ 应用系统的执行效率 10-3 MTS/COM+ 对象和数据的传递 在开发 MTS/COM+ 应用系统时, 我相信大部分的系统都会和数据有关系 事实上, 使用 MTS/COM+ 开发分布式多层应用系统的部分原因也是因为这种架构能够处理更多的客户端要求, 整合 Web 应用, 以及使用更有效率的方式来处理数据, 以便增加系统的延展性 但是许多人在尝试开发了一些分布式多层应用系统之后, 都会觉得分布式多层应用系统比起主从架构缓慢了许多, 因此许多人也开始怀疑为什么要使用分布式多层应用系统来取代主从架构 当然, 如果你只是需要开发内部的信息系统, 人数在 200 人以内, 不需要 Internet 应用, 不需要 Intranet 应用, 也不需要电子商务或是任何形式的 Web 应用, 那么主从架构的确是一个不错的选择, 因为经过适当调整的主从架构的确非常有效率 主从架构到底已经是一个技术成熟的系统架构 除了系统的维护成本较高之外, 似乎没有什么重大的缺点 不过分布式多层应用系统毕竟是现在的趋势, 也提供了许多主从架构无法提供的能力, 因此我们现在要解决的问题应该是如何在分布式多层架构中尽量提供和主从架构类似的效率 这并不是一个简单的问题, 在前面的小节中我们说明了如何使用最有效率的方式调用 MTS/COM+ 组件, 本小节将以如何使用有效率的方式来处理数据作为主题, 让你了解通过适当的调整和遵循一些原则, 分布式多层应用系统也能够提供接近主从架构的执行效率 分布式多层架构和主从架构为什么主从架构会比分布式多层架构来得有效率? 你可曾自己想过这个问题? 记得数年前当分布式多层应用系统刚开始出现时, 我曾在中科院做了一次演讲, 介绍分布式多层应用系统 中介软件 COM/DCOM 以及 CORBA 的概念和技术 当时就有一位先生问我, 既然分布式多层应用系统多了一个应用程序服务器 ( 或中介软件 ), 那么这样的架构就一定比主

10 从架构缓慢, 因为在主从架构中客户端应用程序是直接和数据库服务器连接的, 客户端应用程序需要的数据也就直接由数据库传递到客户端, 不再需要经过应用程序服务器 由于少了应用程序服务器这一层, 所以主从架构会比较快速, 不是吗? 这个问题的答案牵涉了许多因素 简单地说, 如果就实际的架构来说, 由于数据需要从数据库服务器先传递到应用程序服务器, 再由应用程序服务器传递到客户端应用程序, 因此会比主从架构直接从数据库服务器传递到客户端应用程序来得缓慢 而且分布式多层使用了 COM/DCOMMarshalling 的方式传递数据, 负荷也比直接使用 TCP/IP 等通信协议来得大 不过在主从架构中客户端应用程序必须持续地和数据库服务器保持联机的状态, 因此对于网络的使用量又比分布式多层系统大, 加上分布式多层系统可以通过中介软件享有各种 Pooling 的好处, 因此又可以拉近和主从架构的差距 所以我说如何设计和开发应用系统的架构才是影响分布式多层应用系统执行效率的最大因素, 经过适当设计和调整的分布式多层应用系统是可以提供类似主从架构效率的系统的 在分布式多层应用系统中, 程序员应该使用类似 HTTP 通信协议的概念来存取数据 这也就是说, 客户端应用程序应该尽量只选择需要的数据, 而不要使用类似 Select * from TableName 的 SQL 命令来存取数据, 以避免从应用程序服务器一次取得大量的数据到客户端 使用少量 多次的方式存取数据可以大幅地减少系统的响应时间, 而让用户对你的分布式多层应用系统更为满意 传递数据的数量在分布式多层应用系统中程序员应该牢记的是千万不要传递大量的数据, 特别是客户端应用程序不需要的数据 程序员应该戒除使用 Select * From TableName 这种 SQL 命令来存取数据的习惯 在分布式多层应用系统中, 如果程序员在客户端应用程序中尽量只存取目前需要的数据, 并且以少量 多次的方式存取数据, 那么 MTS/COM+ 将能够使用非常有效率的方式提供客户端需要的数据 基本上, 客户端应用程序一次存取的数据如果少于一定的数量, 那么分布式多层应用系统存取数据的速度几乎是和主从架构一样有效率 但是如果大于这个数量, 那么分布式多层应用系统的执行效率将会大大地低于主从架构, 相差的效率可达 10 倍以上 这是相当重要的, 因为超过这个临界点的话, 那么分布式多层应用系统的执行效率和主从架构比起来实在是相差太远 但是如果在临界点之内, 那么分布式多层应用系统的执行效率却非常良好 那么这个临界点是在哪里呢? 当然, 这就和你的系统建制架构有关了 但是就我的经验来说,900 笔之内的数据似乎是最好的范围 超过 1000 笔数据的话, 那么执行效率就非常不理想了 一次存取 900 笔的数据在大部分的应用中都已经足够了, 我想没有什么用户能够在一秒之内浏览 / 查阅完 900 笔的数据 因此, 即使我们需要处理的数据可能有 2000 笔, 那么分布式多层应用程序仍然可以使用 3~4 次的存取, 让用户处理完毕 这样不但有效率, 而且也能够节省资源, 因为用户可能根本不需要处理最后的数据, 因此可能在存取两次数据之后就结束应用程序的执行 因此程序员在分布式多层应用系统中应该掌握的技术便是如何能够以少量 多次的技术来满足客户端的要求 这需要结合 MTS/COM+ 组件以及状态信息的技术 一个实例 : 我的一个朋友曾经询问我一个问题, 那就是他在 MTS 应用系统中撰写一个报表程序 这个报表程序需要处理大量的数据 ( 数万笔的数据 ), 因此它使用 QuickReport, 调用中间的 MTS 组件取得数据, 再传递到客户端的 QuickReport 中处理并且打印数据 但是在撰写完之后, 他说这个 MTS 应用程序需要执行 3~4 个小时, 他问我有没有什么方法可以增加这个报表程序的执行效率, 因为用户实在无法忍受这种执行速度 虽然他一直问我有没有什么多线程的技术可以增加这个程序的执行效率, 但是我说基本上这已经是一个错误的设计, 再使用多线程的技术只不过能够增加些许的效率, 还是无法让用户接受的 这个程序的问题在于程序员根本不应该这样设计

11 对于这种需要传递大量数据到客户端的应用程序即使是在主从架构中也非常吃力, 何况是对于早已超出数据存取临界点的分布式多层应用系统只要想一想如果在网络中同时有数个人在执行这个程序的话, 那么会有多少的数据在网络中来回地传递呢? 因此我的答案很简单, 使用存储过程来处理报表最后需要的结果数据, 这样可以避免在网络中传递大量的数据 当存储过程处理完毕之后, 再把处理结果的数据传递到客户端的 QuickReport 中打印 因此客户端调用的 MTS 组件应该先调用这个存储过程, 再传递结果数据回客户端 这样不但是多层的架构, 也兼顾了执行效率 那么这个程序最后的结果是什么呢? 结果非常令人满意, 执行的时间从原先的 3~4 个小时降低到 10 分钟之内, 更重要的是系统使用的资源 ( 中介软件和客户端的内存 ) 大幅地减少, 进而增加了整个系统的执行效率 其他的客户端应用程序再也不会因为有用户执行这个报表程序而明显地变慢了 结论 : 程序应该根据程序的特性选择适当的架构, 而不是整个系统都使用相同的方法来完成 让我们看看一个实例, 比较一下主从架构和分布式多层应用系统在存取数据时的表现 下面的图 10-4~ 图 10-7 分别是主从架构存取 笔数据, 而分布式多层应用系统存取 和 笔数据的情形 从图中我们可以看到几个现象 第一是主从架构在存取数据时都有很稳定的存取时间, 没有太大的变化 但是对于分布式多层架构来说, 其间的变化就相当大了 分布式多层架构在 1000 笔之内还具有合理的存取速度 但是一旦超过 1000 笔数据, 其执行速度就下降得非常迅速 在超过 3000 笔的情形下已经到了无法忍受的程度, 因为光是存取数据就超过 3 秒, 这在许多的项目中已经是不可接受的, 更何况下图的数据只是执行一个客户端应用程序, 如果同时有许多客户端用户同时执行应用程序的话, 那么执行的时间一定需要更久

12 图 10-8 则是把主从架构和分布式多层架构存取数据笔数需要的时间同时显示在一个单一的图形中 从这个图形中我们也可以非常清楚地看到这两种架构的差异 因此许多人在开发了一些分布式多层应用系统的先导雏型系统之后, 都觉得分布式多层应用系统在执行效率方面和主从架构比起来差得太多了 我想这大都是因为许多人仍然使用在主从架构或 File-Based(FoxPro,dBase 等 ) 系统的习惯来开发分布式多层应用系统, 这样当然是不适当的

13 因此程序员必须谨记在分布式多层应用系统中应该只存取客户端应用程序需要的数据, 而不 要使用 Select * From TableName 等 SQL 命令一次取得所有的数据, 这样分布式多层仍然可 以提供类似主从架构的执行效率 你应该根据你的系统结构来做实验以便找出存取数据的临界点在哪里 程序员在分布式多层应用系统中应该使用一次存取少量, 并且在用户真的需要存取其他的数据时, 再使用多次的技术来存取数据 事实上, 这就是 MIDAS 的分段存取的概念, 就像在 TClientDataSet 的 PacketRecords 特性中不要设定为 -1 来一次取得所有的数据, 而应该设定 PacketRecords 特性为 20 或其他适当的数值, 一次只存取少量的数据 问题是如何在 MTS/COM+ 应用系统中使用分段的方式存取呢? 这需要一点技巧, 让我们使用一个非常有用的范例来展示这个技巧 少量 多次存取的范例 MIDAS3.0 版本最重要的新功能之一便是允许程序员建立无状态对象,3.0 新的接口 IAppServer 就是为了帮助程序员开发无状态的 MIDAS 应用程序服务器 由于在 MTS/COM+ 中非常适合使用无状态对象, 因此程序员如果能够结合 MIDAS 开发无状态的 MTS/COM+ 对象, 那么不但可以让 MTS/COM+ 帮助应用系统 Pooling 数据库连接, 还能够以分段的方式一次存取少量的数据, 并且在用户真的需要其他数据时再存取随后的数据 从前面的观察中我们可以发现, 如果 MTS/COM+ 应用系统一次存取的数据量不多, 那么 MTS/COM+ 应用系统的执行效率会比主从架构还好 因此, 在 MTS/COM+ 应用系统中使用 MIDAS 的无状态对象不但可以节省资源, 利用 MTS/COM+ 的 Pooling 功能, 还能够增加系统的执行效率 在本系列的第一本书 Delphi5.x 分布式多层应用系统篇 中已经说过, 要建立无状态对象的 MIDAS 组件, 程序员可以设定 TClientDataSet 组件的 PacketRecords 特性值为一个特定的数值 这个数值就代表 TClientDataSet 组件一次从应用程序服务器取得的数据笔数 设定 PacketRecords 特性值再结合 TClientDataSet 组件的 BeforeGetRecords 事件处理程序, 以及 TDataSetProvider 的 BeforeGetRecords 事件处理程序, 程序员既可以开发 MIDAS 无状态对象, 又能够享有分段存取数据的好处, 是一个兼顾资源和效率的鱼与熊掌兼得之法 不过, 如果按照 Delphi5.x 分布式多层应用系统篇 在 MTS/COM+ 中开发 MIDAS 无状态对象, 那么可能会碰到困难, 因为在 MIDAS 应用程序服务器和在 MTS/COM+ 中有一些行为是不太一样的 为了能够在 MTS/COM+ 中开发 MIDAS 无状态对象以便以少量 多次的方式存

14 取数据, 所以我修改了在 Delphi5.x 分布式多层应用系统篇 一书中的范例, 让它能够正确地在 MTS/COM+ 应用系统中执行 首先, 让我们建立一个 ActiveX Library 项目, 然后在此项目中建立一个 MTS 数据模块, 并且在这个数据模块中放入 TADOConnection TADOQuery 和 TdataSet Provider 组件 在这个范例中我把 ADO 的数据存取组件连接到 MSSQLServer7 的 Pubs 数据库中的 employee 数据表 图 10-9 是 MTS 数据模块的画面 : 接着再建立一个客户端应用程序项目 在客户端应用程序中使用 TDCOMConnection TClientDataSet 连接到刚才开发的 MTS/COM+ 组件, 并且设定 TClientDataSet 组件的 PacketRecords 特性值为 5, 以便一次从 MTS/COM+ 组件中取得 5 笔数据 图 是客户端应用程序的主画面, 其中的 ConnectMTS/COM+ 对象 按钮会设定 TDCOMConnection 为 True 以连接 MTS/COM+ 组件, 并且设定 TClientDataSet 组件的 Active 为 True 以便从 MTS/COM+ 组件取得第一次的 5 笔数据 至于 More 按钮则可以让程序员依序取得随后的数据 由于在客户端应用程序中设定了 TClientDataSet 的 PacketRecords 特性值为 5, 而且中间是使用 MTS/COM+ 组件, 因此当第一次客户端应用程序取得前 5 笔数据之后, 中间的 MTS/COM+ 组件便会被释放 因此, 当用户点选了客户端应用程序的 More 按钮之后, 客户端应用程序必须把上一次最后一笔的数据告诉中间的 MTS/COM+ 组件, 再由 MTS/COM+ 组件从上一次最后存取的数据的下一笔数据处开始存取数据 要让客户端应用程序传递状态信息给 MTS/COM+ 组件, 我们可以使用 MIDAS 的 BeforeGetRecord 事件处理程序来完成 在 BeforeGetRecord 事件处理程序中, 这个范例客户端应用程序把上次存取数据的最后一笔数据的键值传递给 MTS/COM+ 组件, 以便让 MTS/COM+ 组件能够从这笔数据之后存取新的分段数据 在下面的程序代码中, 客户端应

15 用程序的 BeforeGetRecord 事件处理程序调用了 GetKeyFieldValue 函数取得这个键值, 并且把键值指定给 OwnerData 以便通过 MIDAS 传递给 MTS/COM+ 组件 至于上图中 More 按钮的 OnClick 事件处理程序则非常简单, 它调用了 TClientDataSet 组件的 GetNextPacket 方法以取得下一分段的数据 而 GetNextPacket 方法则会触发 BeforeGetRecord 事件处理程序把键值正确的传递给中间的 MTS/COM+ 组件 Procedure TForm1.ClientDataSet1BeforeGetRecords(Sender:Tobject; var OwnerData:OleVariant); try vownerdata:=getkeyfieldvalue(sender); OwnerData:=vOwnerData; except on exception do function TForm1.GetKeyFieldValue(Sender:TObject):OleVariant; var acds:tclientdataset; try try acds:=tclientdataset.create(self); acds.data:=clientdataset1.data; acds.last; Result:=aCDS.FieldByName('emp_id').Value; finally//wrapup acds.free; //try/finally except one:exception do raise; //try/except procedure TForm1.btnMoreClick(Sender:TObject); try if (notbtrueeof) then if (ClientDataSet1.GetNextPacket<ClientDataSet1.PacketRecords) then btrueeof:=true; except

16 on Exception do; edtrecordcount.text:=inttostr(clientdataset1.recordcount); 至于客户端的键值传递到中间的 MTS/COM+ 组件之后,MIDAS 会触发 TDataSetProvider 组件的 BeforeGetRecord 事件处理程序 在这个事件处理程序中, 我们只需要把 TADOQuery 的 cursor 定位到此键值的下一笔数据处,MIDAS 即可回传从定位处开始的下一分段的数据 下面即是 TDataSetProvider 组件的 BeforeGetRecord 事件处理程序的代码 : procedure TmtsFetchOnDemandObj.dspEmployeeBeforeGetRecords(Sender: TObject;varOwnerData:OleVariant); var bresult:boolean; if not ((VarIsEmpty(OwnerData)) or (VarIsNull(OwnerData))) then with SenderasTDataSetProvider do DataSet.Open; bresult:=dataset.locate('emp_id',ownerdata,[]); DataSet.Next; //with 现在我们如果编译这个范例 MTS/COM+ 应用系统, 就会看到如图 和图 所示的执行画面 从下面的画面中可以看到, 客户端应用程序果然可以在使用 MTS/COM+ 组件的情形下以分段的方式 ( 一次存取 5 笔数据 ) 从 Employee 数据表取得数据 这个范例应用系统可以很正确地执行 但是对于一些大型的数据表, 例如包含数万笔或数十万笔的数据而言, 在中间的 MTS/COM+ 组件如果使用上述的程序代码来定位键值数据的话, 那么由于上述的程序代码是使用 Locate 来搜寻键值数据, 因此 MTS/COM+ 组件仍然会从数据库服务器传递大量的数据到中间的 MTS/COM+ 组件 这可能会造成系统沉重的负担, 而且这样做也传递了大量没有用的数据非常浪费资源 因此我们最好只让数据库服务器直接传递我们需要的分段数据, 而不需要传递其他不相关的数据

17 为了增加系统的执行效率, 我们可以使用数个方法来解决 例如直接撰写存储过程 在这个范例中由于我是使用 MSSQLServer7.0, 因此我把 MTS/COM+ 组件中的 TADOQuery 组件使用 SQL 命令 : select * from employee 改成如下的 SQL 命令 : select top 5 * from employee where emp_id>:idorderbyemp_id 这个 SQL 命令可以只传递符合条件的 5 笔数据给 MTS/COM+ 组件 其中的 :id 这个动态 SQL 参数就是客户端应用程序传入的键值信息 修改了 SQL 命令之后, 就让我们修改 TDataSetProvider 组件的 BeforeGetRecords 事件处理程序如下 : procedure TmtsFetchOnDemandObj.dspEmployeeBeforeGetRecords(Sender: TObject;varOwnerData:OleVariant); var bresult:boolean; if not ((VarIsEmpty(OwnerData)) or (VarIsNull(OwnerData))) then adoqemployee.parameters.parambyname('id').value:=ownerdata; end else adoqemployee.parameters.parambyname('id').value:=''; 在上面的程序代码中我们判断, 如果客户端应用程序传递来键值信息, 我们就把它指定给 id 这个动态参数 如果客户端应用程序没有传递任何的键值信息, 那么这个情形就是客户端应用程序第一次开启 Employee 数据表时, 我们就把 id 这个动态参数设定为空字符串 ( 因为 Employee 数据表的键值字段 emp_id 是字符串类型 ), 以便从第一笔数据开始存取 使用了刚才修改的方法和程序代码之后, 现在这个范例 MTS/COM+ 应用系统在处理大型数据表的情形下比刚才使用 Locate 的方法快了数倍到十几倍 当然, 在大型数据表的情形下只使用 Locate 方法也比不使用少量 多次的无状态对象 MTS/COM+ 组件的方式快了许多 有关 MIDAS 的处理流程以及 BeforeGetRecords 事件处理程序等的说明, 请参考 Delphi5.x 分布式多层应用系统篇 一书

18 数据库连接 Pooling MTS/COM+ 由于充分使用了各种 Pooling 的技术, 因此在理论上能够在客户端人数渐多的应用中提供较好的执行效率和延展性 特别是当程序员开发 Web 解决方案或客户端应用程序以少量 多次的方式存取数据时, 都能够表现得非常优秀 因此程序员应该使用适当的 ADO 驱动程序和数据库服务器, 并且尽量充分利用 MTS/COM+ 提供的数据库 Pooling 机制 同样, 让我们以一个实际的范例来观察数据库 Pooling 对于分布式多层应用系统的影响, 并且和主从架构比较一下, 看看数据库 Pooling 机制对于分布式多层应用系统的帮助 下面的一些观察结果是我使用 ADO For SQLServer 驱动程序, 连接 MS SQL Server7.0 所得到的 这些结果也应该出现在 Oracle Sybase 或 Informix 等的数据库服务器中, 只要能够找到你使用的数据库的真正 ADO 驱动程序 这些观察的结果对于我们了解以及比较主从架构和分布式多层是非常重要的, 因为这可以让我们了解为什么分布式多层应用系统比较适合使用在用户众多的系统, 以及 Web 和电子商务等系统之中 图 是我同时执行两个主从架构应用程序, 并且使用 MS SQL Server 的 Profiler 观察的情形 其中的主从架构应用程序直接使用 TADOConnection TADOQuery 组件连接数据库服务器, 而 TADOQuery 组件则使用了 Select * fromcust 的 SQL 命令存取 Cust 数据表的数据 在下面的图形中显示了许多非常有意思的结果 首先, 让我们注意的是这两个不同的主从架构应用程序在连接数据库服务器时都各自建立了独立的数据库连接 这可以从下图的 EventClass 字段中的 Connect 事件中看到 其次, 由于这两个主从架构应用程序是一样的程序, 因此 SQLServer 执行的命令都是一样的, 并且这两个主从架构应用程序执行 SQL 命令所花费的时间也几乎是一样 这可以由下图的最后一个字段看到 这些观察结果代表对于主从架构应用程序来说,MSSQL 数据库服务器对于不同的主从架构应用程序可以重复利用的资源并不多 因此每一个不同的主从架构应用程序的连接数据库以及存取数据的时间几乎都一样, 这也是在上一小节我们观察到主从架构应用程序执行的行为 现在再让我们继续观察分布式多层应用程序 图 是在同样的状态下所得到的观察结 果, 图 和图 呈现了许多非常有意思的不同点 首先从图 中我们似乎看到

19 了这两个相同的分布式多层应用程序也似乎都建立了独立的数据库连接, 所以这似乎和主从架构应用程序是一样的 不过这是因为在下图中我们只执行了两个分布式多层应用程序 稍后我们会执行多个分布式多层应用程序, 到那时你便会了解这两者的不同 另外要注意的是, 对于分布式多层应用程序而言,MS SQL Server 选择执行的 SQL 命令是不一样的 MS SQL Server 会先准备 SQL 命令, 然后以存储过程的方式来执行 TADOQuery 组件的 SQL 命令 由于 MS SQL Server7.0 可以高速缓存 (cache) 存储过程, 因此第一个分布式多层应用程序需要的执行时间较多 而第 2 个分布式多层应用程序可以直接使用 cache 在内存中的存储过程, 因此第 2 个分布式多层应用程序的执行时间大幅地减少, 这可以从下图的最后一个字段看到 这个观察结果非常重要, 因为这表示在分布式多层系统中, MTS/COM+ 和 MS SQL Server/ADO 驱动程序做了非常好的配合, 可以尽量重复使用系统资源, 所以可以加快分布式多层应用程序的执行速度 现在再让我们观察程序对于数据库连接的使用状况 图 是执行 4 个主从架构应用程序的画面 我们可以看到这 4 个主从架构应用程序分别建立了和数据库独立的连接 至于图 则是执行 4 个分布式多层应用程序的画面, 我们可以清楚地看到这 4 个分布式多层应用程序只建立了两个数据库连接 这代表 MTS/COM+ 有效地减少了需要的数据库连接, 让这 4 个分布式多层应用程序能够重复地使用 MTS/COM+ 提供的数据库连接 这很明显地呈现了 MTS/COM+ 中数据库 Pooling 的功能 分布式多层应用系统的确能够通过 MTS/COM+ 的数据库 Pooling 技术减少客户端实际需要的数据库连接数目 这样不但可以降低数据库服务器的负荷, 减少网络的负荷, 更能够让更多的客户端应用程序或 Web 同时存取数据库服务器 例如, 如果你购买了一个 100 个用户的数据库连接, 在主从架构中最多只有 100 个客户端用户能够使用 但是在分布式多层应用系统中, 通过 MTS/COM+ 的数据库 Pooling 功能, 系统却能够让多于 100 个的用户存取系统 这对于 Web 或电子商务系统来说是非常重要的, 因为这样的系统具有较好的延展性 分布式多层应用系统通过数据库 Pooling 降低数据库服务器和网络的负荷而提供比主从架构更好的执行效率 因此当客户端用户人数逐渐增加以后, 分布式多层的执行效率将会慢慢地

20 比主从架构更好 这一方面是分布式多层优于主从架构的地方

21 还是那句话, 你使用的 ADO 驱动程序的品质决定了系统的行为和特性 应该根据你使用的数据库服务器以及 ADO 驱动程序来观察分布式多层应用系统是否能够充分地使用 MTS/COM+ 的数据库 Pooling 功能 如果不能, 建议你马上找一个品质较好的 ADO 驱动程序, 或要求你的数据库服务器厂商提供 ADO 驱动程序 数据库驱动程序的设定最后一个有关数据存取效率的影响因素是许多人经常忽略的, 那就是对于数据集组件特性值的设定, 例如 TADOConnection TADOQuery 等组件的特性值 分布式多层应用系统和主从架构使用的数据集组件的特性值应该是不一样的, 程序员不应该把主从架构的特性值使用在分布式多层应用系统之中, 因为这可能会造成 MTS/COM+ 组件不必要的负荷 程序员在设计 MTS/COM+ 组件时, 如果使用了数据集组件, 就应该仔细地考虑一下这些组件的设定值 虽然要如何在分布式多层应用系统中设定数据集组件的特性值并没有标准的答案, 而应该视系统的应用 架构等的因素来决定, 但是有一些基本的原则却是可以讨论的 下面要说明的就是这些基本的原则 程序员在开发 MTS/COM+ 的应用系统时, 应该时时想到这些基本原则, 除非必要, 否则应该尽量遵照这些基本的原则来设定数据集组件的特性值 1 ResolveToDataSet: 序员应该设定 TDataSetProvider 组件的 ResolveToDataSet 特性值为 True, 本书前面已经说明过, 要开发 MTS/COM+ 应用系统最好是使用真正的 ADO 驱动程序, 因为 BDE/IDAPI 并不适合使用在 MTS/COM+ 中 如果程序员结合 MIDAS 来开发 MTS/COM+ 应用系统, 那么由于 MIDAS 在更新数据回数据库中时有两种方式可以完成更新的动作, 即使用 MIDAS 自己产生的 SQL 命令, 或通过数据集组件本身更新数据, 这由 TDataSetProvider 组件的 ResolveToDataSet 特性值来决定 因此程序员必须决定要使用哪一种方式来更新数据 由于 ADO 对于从多个数据表 Join 来的数据都会适当地把数据正确地更新回每一个数据表, 不管后端的数据库是 File-Based 或是真正的 SQL 服务器, 而这是 BDE/IDAPI 无法做到的, 因此我建议程序员把 TdataSetProvider 组件的 ResolveToDataSet 设定为 True, 让 ADO 自动产生更新数据的 SQL 命令 这样不但省事, 而且 ADO 会自动参加 MTS/COM+ 的事务管理, 正确地更新数据 此外, 把 ResolveToDataSet 设定为 True 也可以避免 MIDAS 在 MTS/COM+ 中触发额外事务管理的臭虫 2 CursorLocation: 在本书前面讨论 ADO 的章节中已经介绍了 CursorLocation 在 MTS/COM+ 分布式多层应用系统中, 不管你是使用 MIDAS RDS 或其他的方法来处理数据, 这些数据都会由客户端的引擎 (MIDAS,RDS 等 ) 来负责处理 中间的 MTS/COM+ 组件在传递数据给客户端之后就会自动被释放或被其他的客户端重复使用, 因此 ADO 本身的 CursorLocation 就没有什么作用了 所以建议各位在分布式多层应用系统中千万不要设定 CursorLocation 为 cluseserver 这样不但没有用, 而且会减慢 MTS/COM+ 组件存取数据的速度 3 CursorType: 由于在 MTS/COM+ 应用系统中不像主从架构一样是持续地和数据库连接, 因此客户端浏览或处理的数据只是 cache 在客户端内存中的数据 所以在 MTS/COM+ 中的 MTS/COM+ 组件在使用 TADOQuery 或 TADOTable 存取数据时, 便不需要设定等级较高的 CursorType, 这样不但没有作用, 反而增加了 MTS/COM+ 组件的负担 而且客户端的引擎 (MIDAS 或 RDS) 都有自己维护 cursor 的机制, 因此在 MTS/COM+ 中我们应该只使用最经济 负担最小的 cursortype 因此建议你只需要使用 ctstatic 这种 cursortype 即可 4 IsolationLevel: IsolationLevel 设定的原因也和前面说的一样, 在客户端应用程序中处理的数据只是 cache 在客户端的数据 在分布式多层应用系统中客户端的数据一定是和数

22 据库服务器没有直接连接的 程序员如果使用太严格的 IsolationLevel 也没有多大的作用, 反而会增加系统使用的资源 ( 锁定机制 ), 因此建议在 MTS/COM+ 组件中使用的 ADO 数据集组件只使用 ilcursorstability 或 ilreadcommitted 即可 如果程序员真的很在意数据的完整性, 那么可以撰写较多的数据处理程序代码以及数据例外处理程序代码 5 KeepConnection: 在 MTS/COM+ 分布式多层应用系统中,MTS/COM+ 在执行完工作之后就应该关闭数据库和数据库的连接, 并且被释放 因此 KeepConnection 这个特性值可以设定为 False, 以避免不必要的负担 6 LockType: 当然, 对于 LockType 来说,MTS/COM+ 组件使用的 ADO 数据集应该使用 ltoptimistic 或 ltbatchoptimistic, 因为分布式多层应用系统中客户端的数据在被修改时是和数据库没有直接连接的, 因此使用 ltpessimistic 没有作用, 反而会在 MTS/COM+ 组件存取数据时使用了不必要的锁定资源 这会造成系统的执行效率降低, 并且增加数据库服务器的负担 7 MarshalOptions: 如果使用 MIDAS 做为 MTS/COM+ 应用系统中传递数据的技术, 那么由于客户端应用程序或浏览器传递到 MTS/COM+ 组件中的数据已经只是经过修改的数据, 因此可以设定这个特性值为 momarshalmodifiedonly, 以减少 ADO 驱动程序不必要的工作 虽然, 即使是使用这些 ADO 数据集组件的默认属性值设定也可以让 MTS/COM+ 分布式多层正确地执行, 但是程序员如果做适当的设定, 那么不但可以增加执行效率, 还能够降低数据库服务器不必要的负担, 进而增加系统的延展性 举手之劳又何乐而不为呢? 在前面的小节中我们已经讨论了如何有效率地开发 MTS/COM+ 组件以及在分布式多层应用系统中存取数据 在下一小节中将会讨论如何在分布式多层应用系统中有效率地处理状态信息 10-4 状态信息 在前面的小节中我们介绍了如何以少量 多次的方式在分布式多层应用系统中处理数据, 这个范例就是运用状态信息的范例 虽然 MTS/COM+ 建议程序员尽量开发和使用无状态对象, 但是在许多场合应用系统可能仍然需要使用状态对象 在 MTS/COM+ 分布式多层应用系统中使用状态对象并不是什么不正确或错误的事情, 只是程序员应该比较小心地使用状态对象 如果真的需要使用状态对象, 就应该使用它 但是要使用状态对象, 程序员必须处理如何储存状态信息的问题 因为 MTS/COM+ 组件会被释放或重复使用, 因此如果客户端应用程序需要把 MTS/COM+ 组件当成是状态对象来使用, 那么必须负责把 MTS/COM+ 组件的状态回复到上一次执行结束之后的状态 这就有赖于使用状态信息了 在前面小节的范例中我们是把状态信息储存在客户端应用程序中, 但是在 设计 MTS/COM+ 对象和 MTS/COM+ 应用系统 一章中我们是使用 SPM 来储存状态信息 事实上,MTS/COM+ 应用系统有许多种不同的方式储存状态信息, 每一种方式都有其优缺点 不过大致上状态信息可以储存在下列的三个地方 : 储存在客户端应用程序中 可以储存在变量 文档或系统注册表中 储存在中介服务器中 可以储存在 SPM 文档或系统注册表中 储存在后端数据库服务器中

23 下面的表格描述了每一种方法的优缺点 : 状态信息储优缺点存的位置 客户端应用程 序 MTS/COM+ 中 ( 使用 SPM) 后端数据库中 每一个客户端调用远程 MTS/COM+ 组件时都 必须传递状态信息给 MTS/ COM+ 组件, 因此 需要频繁并且大量地传递数据 但是对于 MTS/COM 和数据库的负荷是最轻的, 因为每 一个客户端应用程序分别储存各自的状态信 息 SPM 必须储存大量客户端应用程序的状态信 息 由于 SPM 的延展性并不好, 因此在客户 端众多或状态信息很多时, 容易造成 MTS/COM+ 的沉重负担 因为 SPM 储存的信 息在一段时间没有使用之后便会自动被释放, 因此状态信息容易自己消失 MTS/COM+ 必须频繁地建立数据库连接并且 存取数据库, 比起前面两个方案来说执行速度 比较缓慢 但是通过 MTS/COM+ 的数据库 Pooling 可以加快存取的速度 此外, 使用数 据库储存状态信息也是延展性最好的, 因为数 据库本来就适合储存信息 适用场合客户端需要处理并且计算状态信息 在这种情形下比较适合使用这种方式并不建议大量使用 SPM, 除非状态信息不多, 并且会经常使用客户端众多而且分布式多层应用系统需要处理大量的状态信息 但是如果你的系统真的要处理大量的描述信息的话, 我建议你重新检查一下你设计的 MTS/COM+ 组件和应用系统架构 当程序员真的需要使用状态对象并且储存状态信息时, 必须根据分布式多层应用系统的 执行特性 系统的建制状态以及执行效率和延展性做适当的考虑和选择

24 10-5 结论 本章讨论了许多开发 MTS/COM+ 多层应用系统重要的概念, 这些概念对于 MTS/COM+ 多层应用系统的执行效率有非常重大的影响 适当使用这些概念在应用程序中将会大大增加应用系统的响应时间以及执行效率 本章从数个不同的角度来讨论如何增加 MTS/COM+ 多层应用系统的效率, 包括如何正确地建立和使用 MTS/COM+ 组件,MTS/COM+ 多层应用系统应该如何处理数据的存取,MTS/COM+ 的数据库 Pooling 机制, 以及如何在 MTS/COM+ 多层应用系统中以少量 多次的方式来处理数据 程序员只要把这些基本的原则牢记在心, 并且不断地积累实际的经验, 我相信一个用心的 Delphi 程序员一定能够开发出高效率的分布式多层应用系统

IDEO_HCD_0716

IDEO_HCD_0716 IDEO HCD Toolkit Tencent CDC ...? Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC Tencent CDC

More information

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

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

More information

工程项目进度管理 西北工业大学管理学院 黄柯鑫博士 甘特图 A B C D E F G 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 甘特图的优点 : 直观明了 ( 图形化概要 ); 简单易懂 ( 易于理解 ); 应用广泛 ( 技术通用 ) 甘特图的缺点 : 不能清晰表示活动间的逻辑关系 WBS 责任分配矩阵 ( 负责〇审批

More information

水晶分析师

水晶分析师 大数据时代的挑战 产品定位 体系架构 功能特点 大数据处理平台 行业大数据应用 IT 基础设施 数据源 Hadoop Yarn 终端 统一管理和监控中心(Deploy,Configure,monitor,Manage) Master Servers TRS CRYSTAL MPP Flat Files Applications&DBs ETL&DI Products 技术指标 1 TRS

More information

长 安 大 学 硕 士 学 位 论 文 基 于 数 据 仓 库 和 数 据 挖 掘 的 行 为 分 析 研 究 姓 名 : 杨 雅 薇 申 请 学 位 级 别 : 硕 士 专 业 : 计 算 机 软 件 与 理 论 指 导 教 师 : 张 卫 钢 20100530 长安大学硕士学位论文 3 1 3系统架构设计 行为分析数据仓库的应用模型由四部分组成 如图3 3所示

More information

李 琼 评扎迪 史密斯的 白牙 要是他 指艾伯特 加勒比海移民 真的回去 了 那么他将要面临的失败是明摆在那儿的 因为当地并没有发生什么变化 这就是移民的悲剧 他们比他们离弃的故乡变化得更 快 于是他们永远也不可能因回到家乡而感 到幸福 可是 他们在移居的国家也不幸福 因为这不是家乡 瞿世镜

李 琼 评扎迪 史密斯的 白牙 要是他 指艾伯特 加勒比海移民 真的回去 了 那么他将要面临的失败是明摆在那儿的 因为当地并没有发生什么变化 这就是移民的悲剧 他们比他们离弃的故乡变化得更 快 于是他们永远也不可能因回到家乡而感 到幸福 可是 他们在移居的国家也不幸福 因为这不是家乡 瞿世镜 略论英国移民族群认同的发展和走向 李 琼 李 琼 评扎迪 史密斯的 白牙 要是他 指艾伯特 加勒比海移民 真的回去 了 那么他将要面临的失败是明摆在那儿的 因为当地并没有发生什么变化 这就是移民的悲剧 他们比他们离弃的故乡变化得更 快 于是他们永远也不可能因回到家乡而感 到幸福 可是 他们在移居的国家也不幸福 因为这不是家乡 瞿世镜 年 外国文学 第 期 这些天来 我觉得来到这个国家 就像是和魔鬼签了协议

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

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech

Office Office Office Microsoft Word Office Office Azure Office One Drive 2 app 3 : [5] 3, :, [6]; [5], ; [8], [1], ICTCLAS(Institute of Computing Tech - OfficeCoder 1 2 3 4 1,2,3,4 xingjiarong@mail.sdu.edu.cn 1 xuchongyang@mail.sdu.edu.cn 2 sun.mc@outlook.com 3 luoyuanhang@mail.sdu.edu.cn 4 Abstract. Microsoft Word 2013 Word 2013 Office Keywords:,, HTML5,

More information

* 4 6 R P r p . 1 2 3 4 7 89bk 6 5 1 2 3 4 5 6 7 8 9 0 bk r bl bm bn^ bo bl br bq bpbo bn bm [ ] [ ] [ ] bp 8 2 4 6 bq p [ ] [SET] br clckbt bs bs bt ck cl. 1 2 1 2+- 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

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

Spark读取Hbase中的数据

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

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

More information

工程施工招标

工程施工招标 郑 州 市 教 育 局 教 学 研 究 室 考 试 网 上 评 卷 及 数 据 分 析 技 术 服 务 采 购 项 目 谈 判 文 件 采 购 编 号 : 郑 财 单 一 来 源 2016-J004 号 HENAN TENDER-PURCHASE SERVICE CO.,LTD. 目 第 一 部 分 邀 请 函... 6 第 二 部 分 主 要 维 护 及 服 务 内 容... 7 第 三 部 分

More information

SQL Server SQL Server SQL Mail Windows NT

SQL Server SQL Server SQL Mail Windows NT ... 3 11 SQL Server... 4 11.1... 7 11.2... 9 11.3... 11 11.4... 30 11.5 SQL Server... 30 11.6... 31 11.7... 32 12 SQL Mail... 33 12.1Windows NT... 33 12.2SQL Mail... 34 12.3SQL Mail... 34 12.4 Microsoft

More information

11 天 山 区 区 环 卫 清 运 队 机 械 工 程 师 4011 C 1 不 限 不 限 机 电 具 有 两 以 工 作 经 12 天 山 区 乌 鲁 木 齐 市 第 15 小 会 计 4012 C 1 不 限 不 限 会 计 财 会 财 电 算 化 临 床 医 预 防 医 公 共 卫 生 与

11 天 山 区 区 环 卫 清 运 队 机 械 工 程 师 4011 C 1 不 限 不 限 机 电 具 有 两 以 工 作 经 12 天 山 区 乌 鲁 木 齐 市 第 15 小 会 计 4012 C 1 不 限 不 限 会 计 财 会 财 电 算 化 临 床 医 预 防 医 公 共 卫 生 与 2013 乌 鲁 木 齐 市 事 业 单 工 作 员 表 序 1 天 山 区 区 委 财 经 领 导 小 组 办 公 室 ( 金 融 工 作 办 公 室 ) 金 融 工 作 专 干 4001 C 2 不 限 不 限 硕 士 研 究 生 会 计 财 务 管 理 财 务 会 计 基 建 会 计 行 政 事 业 财 务 会 计 2 天 山 区 区 园 林 队 会 计 4002 C 1 不 限 不 限 财

More information

Microsoft Word - 第17組

Microsoft Word - 第17組 壹 前 言 眼 睛 是 人 類 的 靈 魂 之 窗, 是 人 體 中 非 常 重 要 的 器 官 之 一 現 在 是 科 技 化 的 社 會, 在 日 常 生 活 中 有 些 器 官 可 用 移 植 或 藥 物 作 治 療, 但 眼 球 若 因 為 先 天 缺 陷 或 外 力 造 成 失 明 時, 現 代 科 技 是 無 法 治 療 使 其 完 全 恢 復 正 常 視 力, 人 們 的 視 界 將

More information

handsome-招股书-新规则-final-version-0422.PDF

handsome-招股书-新规则-final-version-0422.PDF 1 Handsome Electronics Co., Ltd. ( 259 ) 1 2 28 2 Handsome Electronics Co., Ltd. ( ) 17,000,000 A 1700 1 15.53 2003 4 28 2003 4 10 3 1 2002 44.28 11.65 2 3 4 2001 7 17 3 2010 2010, 4 5...8...11...11...11...11...12...12...12...13...

More information

User Group SMTP

User Group SMTP SOP v1.00 2003 02 28 TrendMicro Control Manager V2.5 1 1... 3 2... 4 2.1... 4 2.2... 14 3... 24 3.1... 24 3.2... 29 3.3... 34 3.3.1... 34 3.3.2 User Group... 37 3.3.3... 40 3.4... 41 3.4.1... 41 3.4.2

More information

天津天狮学院关于修订2014级本科培养方案的指导意见

天津天狮学院关于修订2014级本科培养方案的指导意见 目 录 天 津 天 狮 院 关 于 修 订 2014 级 本 科 培 养 方 案 的 指 导 意 见...1 金 融 类 专 业...9 金 融 专 业 培 养 方 案...9 保 险 专 业 培 养 方 案...14 人 力 资 源 管 理 专 业 培 养 方 案...19 劳 动 与 社 会 保 障 专 业 培 养 方 案...24 工 商 管 理 类 专 业...29 市 场 营 销 专 业

More information

untitled

untitled : 36 236 : (025)52121888 : (025)52121555/800 8289722 : 211100 h t t p://www.phoenixcontact.com.cn e-mail: phoenix@phoenixcontact.com.cn MNR 52005577/07.04.2010-01 Printed in China PHOENIX CONTACT 2010

More information

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

More information

教学输入与学习者的语言输出 温晓虹 本文从三个方面探讨了语言的输入与输出的关系 首先从理论研究的角度讨 论了从语言输入到语言输出的习得过程 实验研究表明 输入的语言素材必须被学习者所接收 即使接收了的内容也并不会自动进入中介语的体系 而是需要进一步对输入语言进行 分解 归类等分析性与综合性的处理 在语言 内化 的基础上 学习者的中介语系统才能 够不断地得到重新组合 趋于目的语 另外 学习者在语言输出前和输出时需要调节

More information

RUN_PC連載_12_.doc

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

More information

untitled

untitled 20 1 66 1 20 2 66 2 20 3 66 N WAKIN 20 WAKIN 20 20 20 3 20 4 66 4 20 5 66 Dear Wakin, I m a Chinese girl living in Denmark together with my parents. I started to listen to your music at the age of 14 and

More information

05_06_浙江省发展和改革委员会网上并联审批系统实施案例.PDF

05_06_浙江省发展和改革委员会网上并联审批系统实施案例.PDF -------------------------------------------------------------------------------- 2004 12 22 1 WTO 2 3 1999 1 OA 2 WEB 3 2000 1 ( ) WEB ( ) 11 11 2 2001 7 11 12 3 WEB OA 2001 12 10 ( ) 14 Client/Server

More information

60 50 42 10 32

60 50 42 10 32 2006 9 1 24 N*2M E1 2M VPN 60 50 42 10 32 1 2 3 4 5 2006 1 2 3 4 5 6 B/S 7 1 2 10M/100M 2K 500ms 10000 2M 5 Windows IBM AIX HP Unix Linux CPU SMP Cluster Weblogic Webshpere Tomcat JBoss, Oracle Sybase

More information

全国信息化工程师----GIS应用水平考试大纲(二级)

全国信息化工程师----GIS应用水平考试大纲(二级) 全 国 信 息 化 工 程 师 ----GIS 应 用 水 平 考 试 (NCIE-GIS) 二 级 应 用 方 向 考 试 大 纲 (2011.12 月 修 订 ) 为 了 更 好 地 指 导 考 生 学 习, 地 理 信 息 系 统 软 件 及 其 应 用 教 育 部 工 程 研 究 中 心 依 据 该 考 试 的 整 体 指 导 思 路, 会 同 有 关 专 家 共 同 制 定 了 全 国 信

More information

第13章 SQL Server提供的应用程序接口

第13章 SQL Server提供的应用程序接口 第 13 部分 SQL Server 提供的应用程序接口 学习要点 : 通过 ODBC 连接 SQL Server 通过 ADO 对象连接 SQL Server 通过 JDBC 连接 SQL Server 13.1 ODBC 与 SQL Server 13.1.1 ODBC 的概述 开放式数据库连接 (Open Database Connectivity, ODBC) 是数据库服务器的一个标准协议,

More information

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

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

More information

(, : )?,,,,, (, : ),,,, (, ;, ;, : ),,, (, : - ),,, (, : ),,,,,,,,,,,,, -,,,, -,,,, -,,,,,,, ( ), ;, ( ) -,,,,,,

(, : )?,,,,, (, : ),,,, (, ;, ;, : ),,, (, : - ),,, (, : ),,,,,,,,,,,,, -,,,, -,,,, -,,,,,,, ( ), ;, ( ) -,,,,,, : 曹正汉 :, '.,,,., -..,.,,,.,, -., -,,,,,,,,,,,,,,, ( ),,,,,,,?,,?,, ( ), :? (. ) (, ),?, (, : )?,,,,, (, : ),,,, (, ;, ;, : ),,, (, : - ),,, (, : ),,,,,,,,,,,,, -,,,, -,,,, -,,,,,,, ( ), ;, ( ) -,,,,,,

More information

Microsoft Word - 九月月刊.docx

Microsoft Word - 九月月刊.docx 梅 Aug 2014 Vol. 1 Issue 7 + 1 常 的 糖尿病篇 Page 1 Ø Ø 我不需要自己, 那是 生的事情? Ø Ø Ø Ø 么 时 药 + more on 2 Lorem 梅 Aug 2014 Vol. 1 Issue 7 Ipsum 于血糖 : 我不需要自己, 那是 生的事情 2 梅 Aug 2014 Vol. 1 Issue 7 Lorem Ipsum 1) 2) 晚

More information

网上路演公告-final.PDF

网上路演公告-final.PDF Handsome Electronics Co., Ltd. ( 259 ) 1 2 28 1-1-1 Handsome Electronics Co., Ltd. ( ) 17,000,000 A 1700 1 15.53 2003 121 2003 10 22 1-1-2 1 2003 4 25 " " 2003 5 2003 10 14 2003 4067 2 1-1-3 3 4 2001 7

More information

吉林大学学报 工学版 244 第 4 卷 复杂 鉴于本文篇幅所限 具体公式可详见参考文 献 7 每帧的动力学方程建立及其解算方法如图 3 所示 图4 滚转角速度与输入量 η 随时间的变化波形 Fig 4 Waveform of roll rate and input η with time changing 图5 Fig 5 滚转角随时间的变化波形 Waveform of roll angle with

More information

CAD CAE CAPP CAD CAM PDM CAD ERP T Q C S E CAD CAPP PDM OAERP PDM PDM MISAL 40 90% CK CK ISO

CAD CAE CAPP CAD CAM PDM CAD ERP T Q C S E CAD CAPP PDM OAERP PDM PDM MISAL 40 90% CK CK ISO CAD CAD PDM / 1996 5 80 WTO 15 75 1 2000 1998 0.3 810 2 MISMRP ERP OAERP 5 20 CADCAPPPDMOAERP 1 CAD CAE CAPP CAD CAM PDM CAD ERP T Q C S E CAD CAPP PDM OAERP PDM PDM 2.1 1965 MISAL 40 90% CK7815 1995 104

More information

营 销 策 划 岗 部 门 招 聘 职 位 招 聘 人 数 岗 位 职 责 基 本 要 求 岗 位 任 职 要 求 6 参 与 项 目 产 品 研 究 客 户 需 求 研 究 竞 争 环 境 研 究 价 格 研 究 等 项 目 市 场 研 究 ; 7 公 司 经 纪 业 务 的 品 牌 管 理, 对

营 销 策 划 岗 部 门 招 聘 职 位 招 聘 人 数 岗 位 职 责 基 本 要 求 岗 位 任 职 要 求 6 参 与 项 目 产 品 研 究 客 户 需 求 研 究 竞 争 环 境 研 究 价 格 研 究 等 项 目 市 场 研 究 ; 7 公 司 经 纪 业 务 的 品 牌 管 理, 对 202 年 国 开 证 券 有 限 责 任 公 司 总 部 招 聘 岗 位 部 门 招 聘 职 位 招 聘 人 数 岗 位 职 责 基 本 要 求 岗 位 任 职 要 求 组 织 策 划 投 资 顾 问 服 务 方 案 及 实 施 ; 中 国 证 券 业 协 会 注 册 证 券 投 资 顾 问 ; 投 顾 管 理 岗 2 组 织 策 划 投 资 顾 问 资 讯 产 品 设 计 方 案 及 实 施 ;

More information

电信行业网上营业厅

电信行业网上营业厅 2015 年 浙 江 首 届 网 络 安 全 管 理 员 职 业 竞 赛 竞 赛 指 南 竞 赛 组 委 会 2015 年 6 月 30 日 1 / 12 目 录 1 竞 赛 类 型... 3 1.1. 个 人 赛... 3 1.2. 团 队 赛... 3 2 题 型 及 数 量... 4 2.1. 个 人 赛... 4 2.1.1 个 人 初 赛... 4 2.1.2 个 人 决 赛... 4 2.2.

More information

小说《橙年》:纪念一段欣喜若狂 英语 不青不红、不尴不尬、不管不顾

小说《橙年》:纪念一段欣喜若狂 英语 不青不红、不尴不尬、不管不顾 小 说 橙 年 : 纪 念 一 段 欣 喜 若 狂 英 语 不 青 不 红 不 尴 不 尬 不 管 不 顾 147 http://www.scrjzs.com 小 说 橙 年 : 纪 念 一 段 欣 喜 若 狂 英 语 不 青 不 红 不 尴 不 尬 不 管 不 顾 耳 边 响 起 亲 切 的 人 声 风 声 鸟 叫 声 我 回 头 看 了 一 眼, 相 比 看 悬 悬 而 望 我 喜 出 望 外

More information

骨头的故事

骨头的故事 头 1 图 206 33 7 12 5 5 4 12 2 54 10 200-400 3 500 图 类 图 图 动 节 4 5 图 发 图 节 180 Youtube 180 [1] 7 2 7 6 9 270 6 图 树懒 块颈 13-25 14 17 25 7 图 扭头 头鹰 鹅 8 图 红 为 关节 绿 为 关节 9 图 类 10 图 类 11 图 盘 动 类 图 阴 犸 艺 你可能会以为图

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

2017創形パンフ表1_表4

2017創形パンフ表1_表4 2017 SCHOOL GUIDE BOOK 2017 SOKEI ACADEMY OF FINE ART & DESIGN 关于创形美术学校? 创形美术学校是培育专业艺术家的摇篮 大家知道 : 用普通的教育课程来培育专业的艺术家是件困难的事 在我们创形, 从老师到办公人员, 大家全体都是专业的艺术家 在美术界, 设计界当中取得卓越成绩的艺术家们将为大家面对面地传授心得 我们重视的并不是通过指定的教学说明书来指导大家,

More information

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

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

More information

FortiADC SLB Virtual Server L7 方式部署介绍 版本 1.0 时间支持的版本作者状态反馈 2015 年 10 月 FortiADC v4.3.x 刘康明已审核

FortiADC SLB Virtual Server L7 方式部署介绍 版本 1.0 时间支持的版本作者状态反馈 2015 年 10 月 FortiADC v4.3.x 刘康明已审核 FortiADC SLB Virtual Server L7 方式部署介绍 版本 1.0 时间支持的版本作者状态反馈 2015 年 10 月 FortiADC v4.3.x 刘康明已审核 support_cn@fortinet.com 目录 简介... 3 Virtual Server L7 代理部署方式介绍... 3 Virtual Server L7 携带源地址代理部署方式介绍... 5 Fortinet

More information

XXXXXXXX http://cdls.nstl.gov.cn 2 26

XXXXXXXX http://cdls.nstl.gov.cn 2 26 [ ] [ ] 2003-7-18 1 26 XXXXXXXX http://cdls.nstl.gov.cn 2 26 (2003-7-18) 1...5 1.1...5 1.2...5 1.3...5 2...6 2.1...6 2.2...6 2.3...6 3...7 3.1...7 3.1.1...7 3.1.2...7 3.1.2.1...7 3.1.2.1.1...8 3.1.2.1.2...10

More information

计算机网络实验说明

计算机网络实验说明 计算机网络实验说明 龚旭东 电三楼 420 lzgxd@mailustceducn 2011 年 11 月 1 日 龚旭东 (TA) 计算机网络实验说明 2011 年 11 月 1 日 1 / 20 Outline 1 实验系统介绍 实验环境实验流程 2 实验内容编程实验交互实验观察实验 3 一些控制台命令 4 实验报告说明 龚旭东 (TA) 计算机网络实验说明 2011 年 11 月 1 日 2

More information

幻灯片 1

幻灯片 1 沈 阳 工 业 大 学 2014 年 6 月 第 7 章 数 据 库 技 术 基 础 主 要 内 容 : 7.1 数 据 库 概 述 数 据 库 基 本 概 念 数 据 模 型 逻 辑 数 据 模 型 数 据 库 系 统 的 产 生 和 发 展 常 用 的 数 据 库 管 理 系 统 7.2 Access 2010 数 据 库 创 建 及 维 护 创 建 Access 2010 数 据 库 创 建

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

* r p . 4 6 12 3 5 7 8 9bk bm btbsbrbqbp bo bn bl [ ] [ ] [ ] [ ] [SET] 1 2 3 4 5 6 7. cmcl ck 8 9 0 bk bl bm bn bo 1 2 1 2+ - bp bq 8 2 4 6 br r bs p bt ck cl cm 3 3 . 1 2 3 4 5 6 7 8 9 bk bl bm

More information

目錄

目錄 資 訊 素 養 線 上 教 材 單 元 五 資 料 庫 概 論 及 Access 5.1 資 料 庫 概 論 5.1.1 為 什 麼 需 要 資 料 庫? 日 常 生 活 裡 我 們 常 常 需 要 記 錄 一 些 事 物, 以 便 有 朝 一 日 所 記 錄 的 事 物 能 夠 派 得 上 用 場 我 們 能 藉 由 記 錄 每 天 的 生 活 開 銷, 就 可 以 在 每 個 月 的 月 底 知

More information

基于UML建模的管理管理信息系统项目案例导航——VB篇

基于UML建模的管理管理信息系统项目案例导航——VB篇 PowerBuilder 8.0 PowerBuilder 8.0 12 PowerBuilder 8.0 PowerScript PowerBuilder CIP PowerBuilder 8.0 /. 2004 21 ISBN 7-03-014600-X.P.. -,PowerBuilder 8.0 - -.TP311.56 CIP 2004 117494 / / 16 100717 http://www.sciencep.com

More information

内 容 协 作 平 台 TRS WCM 6.5 北 京 拓 尔 思 信 息 技 术 股 份 有 限 公 司 Beijing TRS Information Technology Co., Ltd 版 权 说 明 本 手 册 由 北 京 拓 尔 思 信 息 技 术 股 份 有 限 公 司 ( 以 下 简 称 TRS 公 司 ) 出 版, 版 权 属 TRS 公 司 所 有 未 经 出 版 者 正 式

More information

软件概述

软件概述 Cobra DocGuard BEIJING E-SAFENET SCIENCE & TECHNOLOGY CO.,LTD. 2003 3 20 35 1002 010-82332490 http://www.esafenet.com Cobra DocGuard White Book 1 1....4 1.1...4 1.2 CDG...4 1.3 CDG...4 1.4 CDG...5 1.5

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

七天基于风险测试—Chinatest.ppt

七天基于风险测试—Chinatest.ppt / @ at Testart PPT ?! Risk = Damage*Probability Damage Probability ? . 1. 1. 4. 1. Web- GIS PC 7 ? ? : ? - - - 0.1 0.1 X bug UI 10 Requirement SpecificaCon IteraCon Develop

More information

FPGAs in Next Generation Wireless Networks WPChinese

FPGAs in Next Generation Wireless Networks WPChinese FPGA 2010 3 Lattice Semiconductor 5555 Northeast Moore Ct. Hillsboro, Oregon 97124 USA Telephone: (503) 268-8000 www.latticesemi.com 1 FPGAs in Next Generation Wireless Networks GSM GSM-EDGE 384kbps CDMA2000

More information

Microsoft Word - 13院21号.doc

Microsoft Word - 13院21号.doc 川 教 考 院 2013 21 号 四 川 省 教 育 考 试 院 关 于 全 国 计 算 机 等 级 考 试 体 系 调 整 的 通 知 各 NCRE 考 点 : 为 进 一 步 适 应 新 时 期 计 算 机 应 用 技 术 的 发 展 和 人 才 市 场 需 求 的 变 化, 确 保 全 国 计 算 机 等 级 考 试 ( 以 下 简 称 NCRE) 健 康 持 续 发 展, 教 育 部 考

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

epub 61-6

epub 61-6 6 We b 6.1 6.1.1 R e c o r d s e t 6-1 6-1 6.1.2 166 Dreamweaver UltraDev 6-2 6-2 6-3 3 6-3 I I S 6 167 Tr a i n M i s 6-4 6-4 6.1.3 10 000 1 K 10 000K 10 M 6-5 Dreamweaver UltraDev Repeat Region 6-5 168

More information

Mechanical Science and Technology for Aerospace Engineering October Vol No. 10 Web SaaS B /S Web2. 0 Web2. 0 TP315 A

Mechanical Science and Technology for Aerospace Engineering October Vol No. 10 Web SaaS B /S Web2. 0 Web2. 0 TP315 A 2012 10 31 10 Mechanical Science and Technology for Aerospace Engineering October Vol. 31 2012 No. 10 Web2. 0 400030 SaaS B /S Web2. 0 Web2. 0 TP315 A 1003-8728 2012 10-1638-06 Design and Implementation

More information

Microsoft Word TW.doc

Microsoft Word TW.doc 1 1 2008 : : : : : 12 : : : : http://www.epochtimes.com/b5/8/2/25/n2022702.htm http://www.newstaiwan.com/leenews/index.asp?id=28&id2=3&page=13 2000 : : : : : :,?,,,,,,,,,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

More information

RUN_PC連載_10_.doc

RUN_PC連載_10_.doc PowerBuilder 8 (10) Jaguar CTS ASP Jaguar CTS PowerDynamo Jaguar CTS Microsoft ASP (Active Server Pages) ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar CTS ASP Jaguar Server ASP

More information

目 錄 頁 次 政 風 法 令 宣 導 一 行 政 中 立 實 務 探 討 二 收 到 支 付 命 令 不 可 置 之 不 理 3 9 公 務 機 密 維 護 宣 導 一 淺 談 駭 客 攻 擊 14 二 何 不 自 行 設 計 入 侵 防 禦 系 統? 17 安 全 維 護 宣 導 認 識 爆 竹

目 錄 頁 次 政 風 法 令 宣 導 一 行 政 中 立 實 務 探 討 二 收 到 支 付 命 令 不 可 置 之 不 理 3 9 公 務 機 密 維 護 宣 導 一 淺 談 駭 客 攻 擊 14 二 何 不 自 行 設 計 入 侵 防 禦 系 統? 17 安 全 維 護 宣 導 認 識 爆 竹 103 年 6 月 地 政 局 政 風 室 編 撰 1 目 錄 頁 次 政 風 法 令 宣 導 一 行 政 中 立 實 務 探 討 二 收 到 支 付 命 令 不 可 置 之 不 理 3 9 公 務 機 密 維 護 宣 導 一 淺 談 駭 客 攻 擊 14 二 何 不 自 行 設 計 入 侵 防 禦 系 統? 17 安 全 維 護 宣 導 認 識 爆 竹 煙 火 高 雄 市 爆 竹 煙 火 施 放

More information

页眉

页眉 课 程 设 计 2016 年 第 9 期 高 职 院 校 底 层 共 享 中 层 分 立 高 层 互 选 专 业 群 课 程 体 系 的 探 讨 和 实 践 鲁 娟 娟, 王 俊, 王 高 山, 吕 树 红 摘 要 : 专 业 群 建 设 是 一 个 系 统 工 程, 涉 及 人 才 培 养 模 式 课 程 体 系 教 学 团 队 实 训 体 系 教 学 资 源 库 质 量 保 障 与 监 督 机

More information

TD

TD *TD-000212-05* 20- 应用实例 4 本例显示的是使用两个亚低 音扬声器和多个顶箱的双声 道 立体声 设置 除了各声道都增加了一个顶 箱外 也可以增加更多的顶 箱 本例和例 3 的情况一 致 声道 2 或 右声道 声道 1 或 左声道 要接到更多的顶箱 将最后 一个顶箱的全幅线路输出接 头处的线缆接到下一个顶箱 的全幅线路输入接头 在不 降低信号质量的情况下 最

More information

WebEx 一键集成 1 文档目的 Web 集成 URL API 语法 启会 加会 调用 移动集成 wbx schema 调用 取得 sessionticket...4

WebEx 一键集成 1 文档目的 Web 集成 URL API 语法 启会 加会 调用 移动集成 wbx schema 调用 取得 sessionticket...4 WebEx 一键集成 1 文档目的...1 2 Web 集成...1 2.1 URL API 语法...1 2.2 启会...2 2.3 加会...3 2.4 调用...3 3 移动集成...3 3.1 wbx schema...3 3.2 调用...4 4 取得 sessionticket...4 1 文档目的 本文档目的是, 让用户了解如何在 Web 端和移动端, 一键调用 WebEx app,

More information

你的第一本 Photoshop 书 图 1.3 图 1.4 RGB 图 1.5 图 三原色光的概念 R Red G Green B Blue RGB RGB R B 3 1 RGB RGB 256 0~ RGB

你的第一本 Photoshop 书 图 1.3 图 1.4 RGB 图 1.5 图 三原色光的概念 R Red G Green B Blue RGB RGB R B 3 1 RGB RGB 256 0~ RGB 第 1 章色彩基础知识 Photoshop Photoshop 1.1 RGB 色彩模式 1.1 1.2 图 1.1 图 1.2 Photoshop sample0101.png 1.3 > CTRL O Windows Photoshop Photoshop Photoshop F8 > 1.4 B R 你的第一本 Photoshop 书 图 1.3 图 1.4 RGB 1.5 1.6 图 1.5

More information

论中日 囚徒困境 的存在及逃逸 马亚华 本文试图用博弈论方法分析中日关系发生困难的原因 并在此基础上提出一点解决问题的思路 目前中日关系已在重复博弈中陷入了 囚徒困境 状态 囚徒困境 不仅为第三方势力提供了渔利的空间 直接损害了两国战略利益 而且其 溢出效应 还损害了全体东亚人民的利益 只有透过中国和平发展的参照系考察中日关系的过去 现在和未来 才能把握当前中日关系困难的本质并找到解决问题的办法 当前中日两国的综合国力基本处于同一层次

More information

职 位 类 别 : 测 试 工 程 师 工 作 经 验 或 实 习 经 历 : 不 限 岗 位 要 求 : 1. 本 科 及 其 以 上 学 历, 计 算 机 相 关 专 业 2014 届 毕 业 生 ; 2. 实 习 时 间 要 求, 尽 量 一 周 五 个 工 作 日 ; 3. 熟 悉 Wind

职 位 类 别 : 测 试 工 程 师 工 作 经 验 或 实 习 经 历 : 不 限 岗 位 要 求 : 1. 本 科 及 其 以 上 学 历, 计 算 机 相 关 专 业 2014 届 毕 业 生 ; 2. 实 习 时 间 要 求, 尽 量 一 周 五 个 工 作 日 ; 3. 熟 悉 Wind 企 业 信 息 表 公 司 名 称 : 中 铁 信 安 ( 北 京 ) 信 息 安 全 技 术 有 限 公 司 公 司 性 质 : 国 企 控 股 公 司 规 模 : 100 人 左 右 所 属 行 业 : 互 联 网 计 算 机 软 件 招 聘 人 数 :12 工 作 地 点 : 北 京 市 海 淀 区 公 司 能 够 提 供 的 福 利 : 五 险 一 金 晋 升 旅 游 节 假 日 礼 物 加

More information

SiteView技术白皮书

SiteView技术白皮书 SiteView ECC V6.2 技 术 白 皮 书 游 龙 网 络 科 技 ( 中 国 ) 有 限 公 司 DragonFlow Networks(China),Inc. 目 录 第 一 章 产 品 概 述... 3 第 二 章 系 统 结 构... 6 一 系 统 架 构... 7 1 用 户 管 理 模 块... 7 2 Web Server... 8 3 存 储 加 密 模 块... 8

More information

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc 在 VMWare-5.5+RedHat-9 下建立 本机 QTopia-2.1.1 虚拟平台 张大海 2008-5-9 一 资源下载 1. 需要以下安装包 : tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.gz qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qt-x11-free-3.3.4.tar.gz

More information

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S 一 個 SQL Injection 實 例 的 啟 示 頁 1 / 6 你 的 網 站 在 裸 奔 嗎? 一 個 SQL Injection 實 例 的 啟 示 作 者 : 李 明 儒 SQL Injection( 資 料 隱 碼 攻 擊 ) 問 題 早 就 不 是 什 麼 新 聞, 但 前 陣 子 在 一 個 頗 具 知 名 度 的 活 動 網 站 上, 赫 然 發 現 它 大 刺 刺 地 現 身!

More information

HP and Canon 单色通用芯片表 SCC 芯片 图片 HP 700 M712, 700 M725 CF214X (14X) 17.5 HP 5200 Q7516A U16-2CHIP SSS 846 芯片记号 (U16-2) Canon LBP-3500, LBP-3900, LBP-392

HP and Canon 单色通用芯片表 SCC 芯片 图片 HP 700 M712, 700 M725 CF214X (14X) 17.5 HP 5200 Q7516A U16-2CHIP SSS 846 芯片记号 (U16-2) Canon LBP-3500, LBP-3900, LBP-392 HP and Canon 单色通用芯片表在线访问我们的网站, 可以得到更多的信息 : www.scc-inc.com/chipcenter 全部开始都是专利通用芯片一个芯片, 多个不同型号的硒鼓 注意 : 当在这个文档上要寻找一个特殊的 或打印机的型号时, 在你的键盘上同时按 CTRL 键和 F 键就能搜索到 HP and Canon 单色通用芯片表 SCC 芯片 图片 HP 700 M712, 700

More information

数字带通 带阻 高通滤波器的设计 把一个归一化原型模拟低通滤波器变换成另一个所需类型的模拟滤波器, 再将其数字化 直接从模拟滤波器通过一定的频率变换关系完成所需类型数字滤波器的设计 先设计低通型的数字滤波器, 再用数字频率变化方法将其转换成所需类型数字滤波器

数字带通 带阻 高通滤波器的设计 把一个归一化原型模拟低通滤波器变换成另一个所需类型的模拟滤波器, 再将其数字化 直接从模拟滤波器通过一定的频率变换关系完成所需类型数字滤波器的设计 先设计低通型的数字滤波器, 再用数字频率变化方法将其转换成所需类型数字滤波器 数字带通 带阻 高通滤波器的设计 把一个归一化原型模拟低通滤波器变换成另一个所需类型的模拟滤波器, 再将其数字化 直接从模拟滤波器通过一定的频率变换关系完成所需类型数字滤波器的设计 先设计低通型的数字滤波器, 再用数字频率变化方法将其转换成所需类型数字滤波器 模拟原型方法 : 模拟低通 - 模拟带通 H ( j) H ( j) 3 3 3 模拟原型方法 : 模拟低通 - 模拟带通 H ( j) 模拟低通

More information

建模与图形思考

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

More information

99年度报告全文.PDF

99年度报告全文.PDF 1 1 2 3 4 5 6 1 (1). a. b. c. d. (2). a. b. c. d. 3). 2 199 199 199 2 ( ) ( ) % 199 199 ( ) ( ) % 2 1999 35 3 49 199 199 199 199 199 199 3 () 88124313.20 47,490,245.94 23,721,359.31 8,775,754.36 9,865,750.21

More information

目 录 第 五 部 分 第 六 部 分 第 七 部 分 第 八 部 分 投 标 邀 请 投 标 人 须 知 附 表 评 标 方 法 和 评 分 细 则 项 目 需 求 和 技 术 方 案 要 求 1

目 录 第 五 部 分 第 六 部 分 第 七 部 分 第 八 部 分 投 标 邀 请 投 标 人 须 知 附 表 评 标 方 法 和 评 分 细 则 项 目 需 求 和 技 术 方 案 要 求 1 政 府 采 购 招 标 文 件 ( 服 务 类 ) 第 二 册 项 目 编 号 :SDGP2016-224 项 目 名 称 : 公 共 法 律 服 务 系 统 开 发 项 目 包 号 :A1 山 东 省 省 级 机 关 政 府 采 购 中 心 目 录 第 五 部 分 第 六 部 分 第 七 部 分 第 八 部 分 投 标 邀 请 投 标 人 须 知 附 表 评 标 方 法 和 评 分 细 则 项 目

More information

产品编号 : LEDARE 里代尔 LED 灯泡 :E27,5000 开, 球形 / 乳白色,600 流明 LED1420G8K5 供应商编号 : 信息 600 流明 5000 开 小于一秒 可调光 灯具尺寸 ( 单位 : 毫米 ) 120 x 60 8 瓦 600 流

产品编号 : LEDARE 里代尔 LED 灯泡 :E27,5000 开, 球形 / 乳白色,600 流明 LED1420G8K5 供应商编号 : 信息 600 流明 5000 开 小于一秒 可调光 灯具尺寸 ( 单位 : 毫米 ) 120 x 60 8 瓦 600 流 LEDARE 里代尔 LED 灯泡技术规格 产品编号 : 00301423 LEDARE 里代尔 LED 灯泡 :E27,600 流明, 可调光 / 球形透明 LED1423G9/LED1427G9 供应商编号 : 22858/21633 信息 600 流明 小于 1 秒 可调光 灯具尺寸 ( 单位 : 毫米 ) 120 x 60 8.6 瓦 600 流明 灯具功率因素 0.7 显色 87 产品编号

More information

VB控件教程大全

VB控件教程大全 Datagrid DataGrid1.Columns.Remove(0) ' 0 DataGrid1.Columns.Add(0).Caption= ' DataGrod1.Columns(0).DataField= Name ' Adodc1.Refresh DataGrid BackColor Font DataGrid CellPadding HTML CellSpacing HTML Width

More information

¼ ½ ¾ ¼ ½ ¾

¼ ½ ¾ ¼ ½ ¾ 回归传统 历史学视野中的资本主义 刘光临 虽然明清资本主义萌芽研究和西方现代史学都使用了资本主义一词 但双方并无相同的理论背景 资本主义作为一个成熟的学科概念是由 世纪末 世纪初的历史学家和强调历史面向的政治经济学家 可简称为 德国历史学派 一起创造出来的 强调从历史而不是从抽象的理论中寻求社会变化的原因 资本主义萌芽这一概念的启用 实际上是对欧洲近代历史的严重误读 有鉴于此 在今后的中国历史研究中应该用资本主义来取代资本主义萌芽

More information

# # # # # # # # #

# # # # # # # # # 实现政治问责的三条道路 马 骏 建立一个对人民负责的政府是现代国家治理的核心问题 实现这一目标 需要解决两个最基本的问题 谁来使用权力 如何使用权力 选举制度是解决前一问题相对较好的制度 而预算制度是解决第二个问题最好的制度 通过历史比较分析 可以总结出三条实现政治问责的道路 世纪的欧洲道路 从建国到进步时代改革的美国道路以及雏形初现的中国道路 这意味着 西方经验并不是唯一的实现政治问责的道路 相对于西方经验来说

More information

教 务 信 息 教 学 日 常 运 行 工 作 4 月 6 日, 教 务 部 高 丽 琴 老 师 参 加 南 昌 市 教 育 局 2016 年 中 小 学 教 师 资 格 认 定 工 作 培 训 会 2016 年 教 师 资 格 认 定 工 作 是 从 省 考 向 国 考 过 渡 后 的 第 一 次

教 务 信 息 教 学 日 常 运 行 工 作 4 月 6 日, 教 务 部 高 丽 琴 老 师 参 加 南 昌 市 教 育 局 2016 年 中 小 学 教 师 资 格 认 定 工 作 培 训 会 2016 年 教 师 资 格 认 定 工 作 是 从 省 考 向 国 考 过 渡 后 的 第 一 次 教 学 动 态 江 西 农 业 大 学 南 昌 商 学 院 教 务 部 主 办 2016 年 第 3 期 ( 总 第 45 期 ) 本 期 导 读 教 务 信 息 系 部 动 态 督 导 之 声 联 系 电 话 : 0791-83901432 电 子 邮 箱 :18251930216@163.com ( 本 期 共 印 18 份 2016 年 5 月 17 日 ) 教 务 信 息 教 学 日 常 运

More information

计算机网络与经济(二).doc

计算机网络与经济(二).doc 400................................. 3.COM 60... 4%... I 400 3.Com

More information

Microsoft PowerPoint - 2012?????????3 [Compatibility Mode]

Microsoft PowerPoint - 2012?????????3 [Compatibility Mode] 叶 师 傅 教 你 2012 龙 年 家 居 风 水 招 财 布 局 出 行 注 意 事 项 精 点 十 二 生 肖 龙 年 运 程 方 法 简 单 实 用 一 看 便 会 智 贤 庄 命 理 风 水 网 叶 沛 明 奇 门 遁 甲 为 你 运 筹 帷 幄 创 先 机 http://www.zhixianzhuangfs.com 简 介 古 人 有 学 识 奇 门 遁 能 把 天 下 论 之 说 法,

More information

派遣公司人力資源管理措施對派遣人員離職傾向之影響:

派遣公司人力資源管理措施對派遣人員離職傾向之影響: 96 李 公 達 (2014) 實 務 報 告 [ 稿 件 來 源 ]: 大 陸 地 區 [ 文 獻 引 用 ]: 李 公 達 (2014) 大 力 發 展 職 業 教 育 培 訓, 提 升 農 村 勞 動 者 轉 移 就 業 能 力 就 業 與 勞 動 關 係,4(1), 96 100 就 業 與 勞 動 關 係 季 刊 尊 重 人 的 無 限 潛 能 大 力 發 展 職 業 教 育 培 訓 提

More information

IIS Web FTP

IIS Web FTP 1... 1 1... 1 2... 1 3... 2 6 C/S... 2 4... 4 7... 5 8... 5 9... 6 10 Web... 7 11 CORBA... 8 12... 8 2... 9 1... 9 2... 9 3... 10 4 BSP Business System Planning... 11 5... 13 6... 15 7... 15 8... 16 9...

More information

引言 从古至今, 人们一直梦想着拥有点石成金的能力 其实在现实生活中, 从来不乏这样的例子 人们都认为过时的 PC 电脑配件是积压废品, 迈克尔戴尔却低价收购改装升级后转手卖出, 赚得了自己的第一桶金 人们都认为免费聊天工具是赔本赚吆喝, 腾讯却从草根出身的 QQ 起家, 成为亚洲市值最高的互联网公司 人们都认为常旅客里程是航空公司的成本, 航空公司却通过常旅客里程销售获得超过 50% 的附加收入

More information

RunPC2_.doc

RunPC2_.doc PowerBuilder 8 (5) PowerBuilder Client/Server Jaguar Server Jaguar Server Connection Cache Thin Client Internet Connection Pooling EAServer Connection Cache Connection Cache Connection Cache Connection

More information

RunPCPB8 new feature.PDF

RunPCPB8 new feature.PDF Client/Server Web N-Tier PowerBuilder 8.0 PowerBuilder 8.0 IDE Client/Server Web PowerBuilder / Web-based IT IDE PowerBuilder PowerBuilder 8.0 PowerBuilder 8.0 PowerBuilder 8.0 PowerBuilder Sybase PowerBuilder

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

Microsoft PowerPoint - WinCC V7.0典型架构选型指南.PPT

Microsoft PowerPoint - WinCC V7.0典型架构选型指南.PPT SIMATIC v7.0 架构样例 单用户系统例如 PanelPC 677C S7 控制器 未安装 的 PC 冗余 IDB DB Conni- Pack 选件 外部数据库例如 SQL, Oracle, Acss 标准客户端例如 PanelPC 477C CAS 分布式客户机例如 PanelPC 477C 相应站上所需的软件包 SIMATIC v7.0 架构样例单用户系统 单用户系统 Basic 例如

More information

!

! 孙文凯 肖 耿 杨秀科 本文通过对中国 美国和日本资本回报率及其影响因素的计算 认为 中国居高不下的投资率是由于中国具有非常可观的投资回报 由于中国资本回报率显著高于其他大国 因此带来了 的较快速增长 三国资本回报率在过去三十年尚未出现收敛 这意味着投资率差异会持续 将持续涌入中国 资本回报率受经济周期影响 长期资本回报率遵从一个递减的趋势 由于中国的劳动者份额及资本 产出比仍处于较低的水平 中国的高资本回报率将会维持相当长一段时间

More information

社会科学战线 年第 期跨学科研究 ( ),, (, ),,, 1 ( ), ( -, ),,,,,,,,, (, ) ( ),,,,,,,,,,,, ( ) ( ),,,, ;,,,,,,, ( ),,,,,,,, ( ), ( ),,,,, :,,, (,, ),,, :,, ( % ),,,,,

社会科学战线 年第 期跨学科研究 ( ),, (, ),,, 1 ( ), ( -, ),,,,,,,,, (, ) ( ),,,,,,,,,,,, ( ) ( ),,,, ;,,,,,,, ( ),,,,,,,, ( ), ( ),,,,, :,,, (,, ),,, :,, ( % ),,,,, : 汪丁丁贾拥民 (, ) 本文是一个从理论出发, 最终又回到理论的 案例研究 在特定的社会网络中, 人与人之间的交互作用形成习俗 习俗如果能够经受住不断发生的独僻性冲击, 就可以成为传统 这是对梅纳德史密斯的演化稳定策略概念的拓展 独僻性相当于变异或者突变, 演化稳定策略只经受了一次独僻性的冲击, 只有在随机地不断出现的冲击下保持稳定的习俗, 才能成为培顿杨所定义的传统, 这就是随机稳定均衡 义乌市场的发展,

More information

2009 年第 6 期 高清总动员 35

2009 年第 6 期 高清总动员 35 要说 08 年最成功的高清机, 非三合一 F1/F2 莫属 它集中了国内不同的高清接收需求, 整合了当时能想到的各种功能, 为欣赏高清奥运, 满足高端发烧人士, 做出了贡献 F1/F2 的成功, 说明不依赖进口, 我们也有能力打造顶级的高清机, 并且更适合国内的使用习惯 不过, 即使 F1/F2 的终极版, 也不兼容 ABS-S 或 ISDB-S, 没有网络功能, 不能 USB 录像等等, 有一定的局限性

More information

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品

Autodesk Product Design Suite Standard 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品 Autodesk Product Design Suite Standard 20122 系统统需求 典型用户户和工作流 Autodesk Product Design Suite Standard 版本为为负责创建非凡凡产品的设计师师和工程师提供供基本方案设计和和制图工具, 以获得令人惊叹叹的产品设计 Autodesk Product Design Suite Standard 版本包包括以下软件产产品

More information

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 簡介 Java 10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 10-3 Java Java SCJD 7 Swing RMI 10.1.1 The Assignment The Essay 9 10 10-4 SCJP SCJD 90 10.1.2 SCJP Java 90 120 Swing 10

More information

epub 61-2

epub 61-2 2 Web Dreamweaver UltraDev Dreamweaver 3 We b We b We Dreamweaver UltraDev We b Dreamweaver UltraDev We b We b 2.1 Web We b We b D r e a m w e a v e r J a v a S c r i p t We b We b 2.1.1 Web We b C C +

More information

sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al

sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al RMAN sql> sqlplus / as sysdba 查看数据库版本 sql> select * from v$version; 查看数据库名称 sql> show parameter db_name; 一 使用 RMAN 时, 需要将数据库设置成归档模式 sql> conn / as sysdba; sql> show user 查看数据库是否为归档模式 sql> archive log list

More information

<4D6963726F736F667420576F7264202D20C9CFBAA3CAD0BCC6CBE3BBFAB5C8BCB6BFBCCAD4C8FDBCB6BFBCCAD4B4F3B8D95FBDA8D2E9B8E55F5F303632352E646F63>

<4D6963726F736F667420576F7264202D20C9CFBAA3CAD0BCC6CBE3BBFAB5C8BCB6BFBCCAD4C8FDBCB6BFBCCAD4B4F3B8D95FBDA8D2E9B8E55F5F303632352E646F63> 上 海 市 高 等 学 校 计 算 机 等 级 考 试 ( 三 级 ) 考 试 大 纲 -- 建 议 稿 -- 2007-6-25 25 目 录 上 海 市 高 等 学 校 计 算 机 等 级 考 试 三 级 总 体 说 明 -----------------1 三 级 ( 计 算 机 系 统 与 网 络 技 术 ) 考 试 大 纲 ---------------------2 三 级 ( 管 理

More information

F515_CS_Book.book

F515_CS_Book.book /USB , ( ) / L R 1 > > > 2, / 3 L 1 > > > 2 + - 3, 4 L 1 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 ( ) GSM 手机已连接到 GSM 网络 指示条越多, 接收质量越好 2 ...........................4.............................. 4 Micro SD (

More information