最好的特点分析和flex3和flex4版本比

最好的特点分析和flex3和flex4版本比
最好的特点分析和flex3和flex4版本比

flex4 读书笔记chapter 3,最好的特点分析和flex3和flex4版本比较学习教程

2011-06-01 18:11:30| 分类:flex | 标签:|字号大中小订阅

源地址:https://www.360docs.net/doc/6f16230193.html,/selina_1113/blog/item/20030438084a3bf814cecbc9.html

1、默认情况下,swf文件只能向swf文件所在的域提出http或其它网络请求。如果要仿问swf文件所在的不同的域,即要在目标域的根目录中放置一个crossdomain.xml文件,设置当前服务器接受的域。

2、mxmlc可以把mxml、as、swc、rsl等文件打包成一个swf文件,而compc可以把mxml、as等编译成swc或rsl文件。

3、部署文件时,请确保rsl等资源文件是否存在于服务器中以及swf文件指向的rsl的路径。

4、flashbuilder使用swfobject2类库把swf放在html中。

5、在网络安全沙箱内,flash除了ShareObjects外,不能访问本地的磁盘及资源。在得不到用户允许的情况下,不能从摄像头或耳麦中获取信息并发送到网络。

6、swf只能访问网络或本地资源两种中的一种。也就是说要么你把swf设置为只能访问网络,要么把swf设置为只能访问本地资源。设置的选项为编译时的use-network=true/false。默认为true。

7、flex只持基于组件的开发模型。常规的开发方法是先扩展一些基本的UI组件并把你需要的功能封装在上面,然后再在UI中组装起来。

8、在开发过程中,你会使用自已开发的自定义组件或外部的自定义组件。默认情况下flashbuilder 在项目src及其子目录下寻找自定义组件。如果你需要使用别的地方的自定义组件,你可以设置source path。flashbuilder除了在src目录下寻找组件外,还会在source path下寻找自定义组件寻找的顺序按source path顺序寻找。在as中引用组件,使用import语句。在mxml中,使用命名空间。

9、swc文件是flex的打包文件,常用的as/mxml通用组件会打包成swc文件。通过library-path可以加载swc文件。

10、swf文件被客户端下载后只保存在浏览器的缓存中,浏览器关闭后,swf文件可能会被删除。从swf文件中分离出swc文件以rsl的形式加载可以减swf的体积以及减小每次的下载量。在编译时可以使用runtime-shared-libraries选项指定rsl的位置。

11、可以把flex应用分成多个模块(modules)。编译后,原来的一个swf文件变成多个swf文件,主swf文件在需要时才加载或卸载模块。

12、在flashbuilder中你可以通过修改配置文件或直接设置command-line argument给编译器。

13、flex编译器是区分大小写的。

14、swf只能访问自已域保存的ShareObject文件。默认情况下ShareObject的大小为每个域100k。如果要使用大于100k,程序需要弹出询问对话框。另外当大于100k时,fp会自动弹出对话框,询问用户是否允许超过100k的大小。

15、fp会自动监控程序占用内存及cpu的情况。如果要长时间占用大量资源,fp会自动询问用户,是否需要关闭应用。

16、fp不会把客户端的一些私密信息提供给app,例如:帐户、电话、mail等。但为了提高app的用户体验,fp会提供user agent,系统兼容性(语言,mp3编码),是否有摄像头,麦克风。另外fp还可以设置剪帖板的信息,但不会提供获取剪帖板信息的方法。

17、flash有四种沙箱类型。同一个swf文件在不同的沙箱中有不同的安全限制。

18、远程沙箱(remote)。所有来自非本地URL的文件(html,swf2html脚本)被放到远程沙箱中。swf 按不同的域被分到不同的沙箱中。

19、本地文件系统沙箱(local-with-filesystem)。本地文件系统沙箱是本地swf文件的默认沙箱。在此沙箱中的swf文件不能访问远程主机。

20、本地网络沙箱(local-with-networking)。本地文件系统沙箱是本地的swf文件具有仿问网络的权限,但不具备访问本地文件的能力。

21、本地信任沙箱(local-trusted)。在这个沙箱中的swf没有权限限制。所有本地的swf文件都可以设置成这种沙箱。设置这种沙箱可以通过交互的方式设置(Settings Manager)或能过非交互方式设置(通过安装程置增加配置文件)。

22、可以使用编程的方式读取Security中的sandboxType属性查看沙箱类型。

23、编译时的use-network参数及swf下载的地方可以决定沙箱类型。本地的swf文件的use-network 设置为ture是,沙箱类型为local-with-network,设置为false时为local-with-filesystem。远程下载的swf 文件的use-network设置为true时,沙箱类型为remote,设置为false时会报错。

24、fp客户端有四种类型。分别为浏览器嵌入式的正式版及调试版和独立版的正式版及调试版。

25、fp的浏览器嵌入式客户端在不同的浏览器中以不同的技术实现,在IE中以ActiveX,在其它浏览器中以plug-in实现。在浏览器嵌入式客户端时可以使用一些浏览器技术,例如form及ssl。

26、DisableLocalSecurity打开时,swf处于本地信任(local-tursted)安全沙箱中。EnforeLocalSecurity 打开时,swf处于其它的三种沙箱中。默认情况下,ActiveX控件是DisableLocalSecurity,plug-in默认为EnforeLocalSecurity。

27、交互脚本(cross-scripting)。两个不同的swf文件需要相互访问时需要使用cross-scripting。只有处于同一个安全沙箱中的swf文件才能使用交互脚本。也就是说当swf处理不同类型的安全沙箱,或处于同一类安全沙箱,但swf文件来自不同域时都不能使用cross-scriptin。

28、来自不同域的两个swf文件需要cross-script时,可以通过设置

Security.allowDomain/allowInsecureDomain方法设置swf文件可以被哪些域仿问。

29、https://www.360docs.net/doc/6f16230193.html,.Externallnterface是调用外部js(call)及设置被js调用接口(addCallback)的主要类。ExternalInterface的调用权限由包装它的html设置,主要参数有:allowScriptAccess和allowNetworking。默认情况下,externalInterface被允许调用同域的js。

30、navigateToURL()主要用于打开或替换当前窗口,也可以用于调用外部js。它同样受限于allowScriptAccess和allowNetworking参数的限制。

31、由浏览器打开的swf文件以及在swf中的图片相关资源会存放于浏览器的缓存中。这些文件在浏览器关闭后也有可能同样保留在缓存中。所以你可以通过http报头设置当浏览器关闭时清空这些缓存:cache-control:no-cache,no-store,must-revalidate,max-age=-1 pragma:no-cache,no-store expires:-1

32、可信任的网页及目录。浏览器本身有一个安全模型。fp会与浏览器的安全模型交互,如果浏览器把一个网页设为可信任的网页,即fp会把该网页下的swf文件处于可信任的安全沙箱(local-trusted)中。另外用户通过fp的User Settings Manager或增加一个FlashPlayerTrust Configuration文件指一个可信任目录,然后把swf文件放到该目录下。当打开该swf文件时,该文件也处于可信任安全沙箱中。

33、部署过程中,如果你的swf及资源文件发布在不同的域中。你除了需要增加crossdomain.xml

文件以及在app中调用allowdomain等外。最好还需要把一些通配符(*)设置成具体的域和端口。

34、fp是区分获取内容(Content)与获取数据(Data)的。Content与Data的区别是Content一般只用于显视,而Data可被as处理。获取内容会比获取数据的限制小一点。在不同域中获取的数据或swf 文件会被放到不同的沙箱中。

35、向远程读取图片用于显视时,一般不受限制。但从远程读取数据时例如xml时,需要得到远程的授权及html的受权。

36、LocalConnection可以让在同一客户端电脑上的各个swf之间进行方法调用。在调用过程中,一个swf称为sender,另一个称为listener。最简单的情况是同一个域中的两个swf之间的调用。在不同域之间调用需要调用LocalConnection.allowDomain()/allowInsecureDomain()方法。

37、swf是一种开发格式。所以它可能被反编译,里面的信息会被别人看到。所以发布产品前应该放在里面的敏感信息去调。

38、为了做到安全,你应该注意以下几点:一,不要把敏感信息,例如帐户放在swf内。二、用户授权验证、sql等应放在服务端完成。三,如果在使用过程中,swf与server之间传递敏感信息,可以考虑使用ssl。

39、安全相关的错误事件并不是由目标对像发出来的。所以并不能用常规的.addEventListener方法去处理错误而是使用try{}catch(e){}方法是铺捉。

40、当你使用TextArea或TextInput来输入密码时,请把里面的displayAsPassword属性设置为true。

41、在浏览器中打开一个flash后,可以右击-设置。然后对一些权限进行设置。

42、模块(Module)是一个SWF文件。它可以被一个或多个app调用,但不能单独运行。

43、模块比RSL更灵活。它是否被加载由app决定,并且在编译时不需要被引用。

44、模块域(Module Domains)。默认情况下,模块被加载到主app的子域中。这样出现的问题所有模块所在域都从属于主域,但模块间的域就不相同而且没有从属关系。当一个模块调用一些Manager

类后,例如(PopoupManager、DragManager),另一个模块再调用这些管理类时将出错。因为那些管理类属于它们被第一次调用的域。要解决这个问题的做法是在主app中,初始化这些管理类,然后这些管理类就可以被各模块共用。

45、如果要获取最好的交互性,主app与所有模块最好处于相同的安全沙箱中。

46、创建模块的步骤。一、mxml:根元素为,as:继承Module/ModuleBase。二,像一般应用一样编译它。三、通过标签或ModuleLoader/ModuleManager类去加载模块。

47、每个模块都有它自已的IStyleManager2实例,也就是说每个模块都有它自已的样式。各模块之间的样式不会相互影响。在主app加载完模块后,模块的样式会与主app的样式合并,合并的最终结果是模块的样式优先级高于主模块。

48、当你在编译模块时使用了isolate-style=false选项时,各模块间将会共用一个样式。如果模块间有相同的样式,即先被加载的样式的优先级会高于后加载的模块样式的优先级。使用该选项后,可能会出现卸载模块后模块不被GC回收等一些情况,因为有些模块的样式可能被其它模块引用。

49、getStyleDeclarations()只返回定义的样式,要获取合并后的样式需要调用getMergedStyleDeclaration()。运行间设置样式定义只会影响定义的样式,该样式是否起作用取决于合并样式。

50、StyleManager可用于设置所有元素的样式。语法如下:

StyleManager.getStyleDeclaration("https://www.360docs.net/doc/6f16230193.html,ponents.Button").setStyle("fontSize",15);

51、模块的开发方法就像app开发方法一样,可以使用mxml或as。模块可以被模块或app加载。

52、ModuleLoader提供了高层次的加载接口,而ModuleManager提供了加载模块的底层接口。

53、当你的模块要用于显视或用到framework的类,你可以用标签或继承Module类。如果你的模块不用显视和framework类,你可以考虑用as继承ModuleBase类。这样的模块体积会减小。

54、默认情况下Module编译后会包含所有它依赖的类:框架及自定义的类库。结果就是主类加模块的体积远比单独的app大。

55、在flashbuilder中可以选择项目-属性-module然后选择模块所属主类,这样flashbuilder可以优化模块的大小。

56、当一个模块中的类想用另外一个模块中的类,那就要把模块中的类的模块域提高到app中。

57、如果在air中使用模块。那模块必需和主类在同一目录或在主类的子目录中。

58、ModuleLoader语法。。你需要设置的主要是url。你可以在需要时才设置url,设置后fp才会去加载它。当你设置或重新设置url

时会触发ModuleLoader的loadModule()方法,当你把url设置为“”,ModuleLoader会卸载模块。另外你也可以手动调用ModuleLoader的loadModule/unloadModule方法。

59、无论你调用多少次loadModule(),fp保证对一个module,一个ModuleLoader只会加载一个实例。

60、ModuleManager提供了低层次的加载module的接口。在用ModuleManager加载接口时要注意,module对像要放在类属性中,以免被GC回收。

61、如果模块分散在不同的服务器中。你需要解决一些权限问题。

Security.allowDomain("remoteservername");Security.loadPolicyFile("Http://remoteservername/crossdom ain.xml");new URLLoader(new

URLRequest("http://remoteservername/crossdomain.xml"));loader.load(request);

62、把一个app分开多个module的一个好处是主app的尺寸变小了,第一次加载app的时间缩短。但另一个问题是当用户使用到模块时,模块加载也需要时间。解决这个问题的一个途径是预加载模块。预加载模块的

代码:var

info:IModuleInfo=ModuleManager.getModule("url");info.addEventListener(ModuleEvent.READY,fun);info .load();

63、ModuleLoader就很多事件。你可以扩展它实现自定义的加载类,例如增加一些显视加载进度,图片等效果。让整个系统有一个统一的加载效果。

64、通过相关属性引用实现app与module间方法相互调用。这种方法会造成app与module的强耦合和因为代码的引用使得app与module的尺寸增大。但好处是简单直接。方法如下:一,ModuleLoader.child属性。代码:(moduleloader1.child as ChildModule1).fun。二,如果你用ModuleManager加载模块,可以通过以下代码获取模块module.factory.create() as MyModule。三,通过module.parentApplication方法引用父应用。四,模块间调用,先用module.parentApplication得到父应用再调用相应的child或factory属性。

65、通过模块的url参数传递数据。module中有一个loaderInfo属性,里面可以获取调用它的url。你可以从字符串中找到信息。

66、模块与app间的相互调用最灵活的方式是让app或module实现自已定义的接口,然后把app 或module转型为接口后调用。这样app与module间处于低耦合状态。

67、使用子应用(sub-applications)有以下好处:减小主应用的体积;按功能封装代码;增加可重用性;整合第三方子应用。

68、对主应用来说,子应用分为可信子应用和不可信子应用。当主应用与子应用基于相同版本的库架构建时具有良好的交互性。如果子应用的库版本较主版本的低,即交互性有一定的限制。

69、子应用的可信级别及版本取决于应用域(application domain)及安全域(security domain)。

70、有三种类型的子应用:1,单版本应用。2,多版本应用。3,沙箱应用。

71、应用域(application domain)是存放类定义的一个容器【类似于java的classloader】。一个应用有一个顶层应用域-system domain。应用域是system domain的一个子域。当你载入一个子应用时,你可以选择把它载入三种域:兄弟域(sibling application domain),子域(child application domain),当前域(current application domain)。

72、默认情况下SWFLoader/Loader控件把子应用载到子域中。如果当前应用与子应用所基于的类库版本不同时,载入后会出现错误。如果主与子应用基于不同的库版本,你应该把子应用载入到兄弟域中。

73、使用SWFLoader加域子应用时,把loadForCompatibility属性设置为true时,SWFLoader会把子应用加载到兄弟域中,反之,加载到子域中。

74、system domain是最顶层的域。共用的域(playerglobal.swc)被加载到此域中。父域已经存放的类定义,子类不会重复加载。

75、基于不同版本类库的应用应加载到兄弟域中,否则会出错。

76、一般RSL与编译时的资源会被加载到当前域中,SWFLoader一般不会把子应用加到当前域。

77、安全域定义了应用的可信级别。多个应用的可信程序越高,它们的交互性越强。

78、如果子应用与主应用属于相同域名下载的,默认情况下它们处于同一个安全域。反之,需要设置SWFLoader的trustContent为true让两者处于相同的安全域。

79、沙箱应用(sendboxed applications)之间有很多限制。包括不能仿问state对像,不能接收mouse 事件,不能调用其它app的画图,不能访问访问其它app的一部份属性。

80、大应用、混合编程、一些工具类都会使用子应用的方式加载。

81、沙箱应用(sandboxed application)。当你需要加载一些不可信的第三方swf文件,且主swf与子swf所依赖库的版本不一致。这种情况下把子swf以兄弟域的型式加载到主swf中。我们把这种情况叫沙箱应用。

82、上面所提及到的所有类型的子应用都应符合条件:主应用依赖的库要比子应用依赖的库新或相同。

83、主app加载来自不同域名的子app的情况,我们称为import loading。

84、采用模块与子应用有以下区别:因为模块与主应用共享类定义,所以文件尺寸会小一点。模块与主应用的耦合性高一点。模块与主应用要使用同一版本的库而子应用没这个要求。模块一般会在主应用的子应用域中,所以管理类共享。模块只能加载到主应用的子应用域中,而子应用可以载进主应用的兄弟应用域或子域。模块只能放进安全模,而子模块既可放进安全域也可放进不安全域。

85、SWFLoader与Loader的区别。SWFLoader是Loader上的一个封装,使用起来更简单,且提供了一些额外功能,例如支持样式与效果,可以监控加载进度,被加载的swf文件可以是多版本的。

86、夸域交互时,建议采用事件机制进行。

87、沙箱应用与多版本应用在编译时应加上以下参数:

-include=mx.managers.systemClasses.MarshallingSupport。

88、子应用可以独立运行。它不应依赖主应用以及兄弟应用。

89、设置SWFLoader时可以单独设置loadContext或直接设置loadForCompatibility和trustsContent。loadContext的优先级要高于后者。以上属性应SWFLoader加载前设置。

90、LoadContext对像有两个属性,一个为securityDomain另一个为applicationDomain。如果不设置securityDoamin时,子应用会采用它自已的的安全域。如果要把子应用设置成可信域,即使用以下语句:context.securityDomain=SecurityDomain.currentDomain。设置applicationDomain时可以设置三个值:new ApplicationDoamin():兄弟域,new ApplicationDomain(ApplicationDomain.currentDomain):子域。application.currentDomain:当前域。最后要注意的是同一个LoadContext不要用于加载多个应用。

91、卸载子app时可以使用loader.unloadAndStep(true)或loader.source=null。另外,当loader再load一

个子app时,上一个app会被自动卸载。

92、在可信任的单版本的子app中,子app可能通过application或parentDocument访问主app。

93、主app访问子app的方法:(contentLoader.content as SystemManager).application as SubApp2。

94、如果主应用要加载子应用中的类,那子应用一定要和主应用处在同一个安全域及相同的版本。加载的方法为new UIComponent(new

(loader.loaderContext.applicationDoamin.getDefinition('ClassName') as Class)());。访问相关属性

obj['property']。

95、在sandboxed application中,除了FocusManager外,其它的Manager,例如DragManager、ToolTip、Alert、指针等的效果都只在子app中出现,主app不受这些效果的影响。

96、相同安全域的主从应用可弹出框、ToolTip、鼠标不限于子应用区域。

97、Bootstrap 是一个轻量级的类容器。它先于主应用被加载,所以由它加载的类可以在各应用在共享。一般情况下,一个安全域可以用一个bootstrap。因为bootstrap加载的类不能在不同的安全域间共享。

98、如果子应用需要使用rpc,那rpc相关类一般会由Bootstrap加载。

99、BABridge(Flex Ajax Bridge)是一个简单的类库,用于js与as间的相互调用。利用ExternalInterface类也可以实现相关功能,但需要编写复杂的代码及限制比较多。

100、BABridge的地址在sdk_installation_dir/frameworks/javascript/fabridge下。如果你使用FlashBuilder,你可以直接右击项目,选择:Create Ajax Bridge。你需要在mxml中加入

。完成后,你就可以在js中直接使用FABridge.flash.root()引用flash 的主类。

101、获取加载swf人url人代码:mx.core.FlexGlobals.topLevelApplication.url。

102、获取客户端信息的类:flash.system.Capabilities。从中可以获取客户端操作系统,播放器,语言等。

103、ExternalInterface是as与js互相调用的主要类。其中主要方法有两个:call()/addCallback()。ExternalInterface受安全沙箱的限制,它受限于swf的引入代码中allowScriptAccess/allowNetworking属性的值。

104、在初始化阶段,我们一般需要向swf文件传一些参数。我们可以通过htmlwraper中的flashVars、swf的url参数、swf初始化后通过ExternalInterface调用js获取页面中的参数。三者相比,通过url传参比较简单。

105、通过静态方法ExternalInterface.call(funName,para... paras)调用js。

106、https://www.360docs.net/doc/6f16230193.html,.navigateToURL()可用于调用js,也可用于打开新窗口。

107、URLLoader用于后台向服务器发出请求,而navigateToURL()用于调用浏览器的窗口加载页面。

108、navigateToURL(req:URLRequest,window:String)用法。window的值所代表的意思:_self:在本窗口打开,_blank:本窗口之上弹出,_parent:在父窗口打开,_top:最顶层窗口打开。

109、navigateToURL调用js:navigateToURL(new URLRequest("javascript:fun()","_self");

110、在swf的html包装器中allowScriptAccess的选项有三个:never,sameDoamin,always.

111、一些公用的类加、资源可以打包成RSL(Runtime Shared Libraries)。RSL被下载到客户端后可以被多个应用共享使用。

112、有三种类型的RSL:Framework:官方标准库,可被任意应用使用。Standard:自已打包的应用,可被相同域的应用使用。Cross-domain:在Standard的基础上可被任意域使用。Framework与后两者的另一个区别在于签名的Framework(swz)存放在fp相关目录下,而后两者存放在浏览器的缓存中。另外要注意的是非签名的framework(swf)也存放在浏览器缓存中。

113、flex编译时分静态链接与动态链接两种。如果使用静态链接,flex在编库时把相关库和应用打包成一个文件。静态链接的特点是文件很大。与静态链接相关的编译参数为有四个

library-path,include-libraries,includes,source-path。前面四个参数中包含include关键字的参数是把关联的所有库打包进主应用中,而没有include的是把相关联的类打包进主应用中。动态链接是让应用在需要用

到相关类时才加载。模块、运行时样式表、RSL都使用动态链接技术。在flash builder中你可以从Project-Properties-Flex Build Path-Library Path中设置link Type。

114、使用动态链接时,需要在编译中加入参数:

runtime-shared-library-path,runtime-shared-libraries,external-library-path,externs,load-externs。

115、sdk/frameworks/libs下以swc结尾的库为编译时使用的。sdk/frameworks/rsls下以swf结尾的为unsign库,swz结尾的为sign库。

flex4 读书笔记chapter 4,最好的特点分析和flex3和flex4版本比较学习教程

2011-06-01 18:07:33| 分类:flex | 标签:|字号大中小订阅

源地址:https://www.360docs.net/doc/6f16230193.html,/selina_1113/blog/item/589069050191f969020881d6.html

1、flex包含一个基于组件的开发模型,你只需要按需求继承现有的组件并扩展相关的方法就可开发你的应用。

2、可视化组件包括以下主要特性:尺寸、事件、样式、效果、皮肤。

3、flex定义了两套组件。一套为Spark,放在spark.*包下。一套为MX,放在mx.*包下。Spark是在flex4中新添加的,mx为旧版本中定义的。两套组件的主要不同点在于样式及皮肤的使用。另外对于容器组件,布局的方式也改变了。

4、有些组件在两套UI中都存中,例如按钮,在这种情况下adobe建议你使用Spark中的组件。有些组件是某套UI特有的。例如Spark中的3d效果。mx组件中的数据可视化组件,例如DataGrid、AdvancedDataGrid。所以你的应用会包含两套UI中的组件。

5、可视化组件的继承层次结构:

Object-EventDispatcher-DisplayObject-InteractiveObject-DisplayObjectContainer-Sprite-FlexSprite-UICo mponent。flex中所有的可视化对像都继承自UIComponent。

6、UIComponent中需要注意以下属性。doubleClickEnabled:flex默认是不支持双击的,如果要开启双击,请把该属性设为true;height:在mxml中你可以设置值为数字,这时默认单位为pix。你也可以设置为70%这种比例。在as中,如果要设置百分比,你需要用percentHeight这个属性。x,y:这组属性只在layout 为绝对布局时才有效。

7、每一个flex组件都有对应的mxml接口和as接口。两者之间是相等的。

8、每个一可视化组件都包含以下三个生命周期事件:preInitialize:组件刚被创建,还没有添加子节点,且不可见。initialize:把子节点初始化好,并尺寸也设置好,但仍然处于不可见状态。creationComplete:组件已经被放在父容器中而且可见。你可以使用上面三个事件对组件做一些初始化工作。

9、flex提供了多种设置组件大小和布局的机制。默认大小:如果你不指定组件的大小或布局,flex 会自动设置一个适合的值。显式设置大小:你可以显式地设置组件的height/width大小。基于比例的设置大小:例如在mxml中设置height/width=70%或在as中设置percentHeight/percentWidth=70。基于约束

的布局:你可通过组件中的样式属性:top,buttom等设置组件的布局及大小。这种设置方式只可以使用在父组件为绝对布局的情况。

10、flex应用是基于事件驱动的。事件可以让程序员知道用户与UI的交互、组件的生命周期及外观变化。当一个组件分发事件,所以对该组件进行监听的监听器都会被通知。

11、除了用选择器设置组件的外观外,还可以直接调用元素的setStyle("proName","value")设置外观。

12、flex4中的类选择器需要使用命名空间。例子代码:@namespace s

"library://https://www.360docs.net/doc/6f16230193.html,/flex/spark"; s|BorderContainer{borderColor:red;}。

13、效果(effect)是组件在一段时间内的视觉或听觉上的变化,例如退色,位移等。

14、数据绑定是源属性(source)发生变化时,目的(destination)属性会自动产生变化。

15、flex提供了三种数据绑定的方式。第一种是在mxml中使用{}括号在目的属性中对源属性进行绑定。第二种是在mxml中使用标签对源属性与目标属性进行绑定。第三种是在as中使用BindingUtils方法对源属性与目标属性进行绑定。

16、数据绑定符{}可以直接对属性进行引用,也可以对方法进行引用。例如:{obj.text.toUperCase()}

17、数据绑定符{}和两种方式对数据进行绑定是从编译时就开始的。而BindingUtils即在运行时才开始绑定。

18、可绑定符[]的意思是当对应的属性变化时,会触发数据绑定事件,通知绑定的目标属性。

19、当源对像分发initialize事件以及在源对像变化时都会触发数据绑定事件。

20、如果你创建一个对像,并想让它可以成为数据绑定的源,那属性前面必需加上

[Bindable]/[Bindable("eventname")]/[Bindable(event="eventname")]标签。当你直接使用[Bindable]标签时,实质上等价于[Bindable("propertyChange")]。当属性发生改变时,flex会分发propertyChange事件给绑定于此属性的绑定目标对像。

21、通过标签或BindingUtils可以把多个源属性绑定到一个目标对像。绑定后,任意一个源发生改变时,目标对像都会被更新。

22、双向绑定,数据的任意一方发生变化时,另一方都会被通知并改变。数据绑定表达式:@{}。数据绑定标签:。另外样式、效果、RPC中的request和arguments对像都不支持双向绑定。

23、使用方法作为数据绑定的源。当方法的参数为[Bindable]时,参数的改变会触发数据绑定事件,让目标属性的值更新为方法的结果。如果方法中没有[Bindable]参数,即目标属性只会在开始时被更新一次。

24、如果你想绑定一个方法作为源数据,但该方法又没有可绑定的参数时可以使用

[Bindable(event="evenname")]标签,当该对像分发dispatchEvent(new Event("eventname"))时,绑定到方法的目标属性就会被更新。

25、在类定义的地方便用[Bindable]标签等价于在该类中的所有public属性以及有对应的set/get方法的属性中加上[Bindable]标签。

27、在定义一个属性的地方使用[Bindable]标签的作用是当该属性被替换成另一个值时,目标属性会接收到通知事件,并更新值。这里要注意的是只有被替换时才更新,如果只是该属性中的某个属性被改变的情况,目标对像是不会被更新的。

28、在数组(ArrayCollection)中使用[Bindable]标签时,无论是数组被替换还是数组中的元素改动,都会触发更新事件。

29、如果只绑定数组中的某个元素时,应使用getItemAt()。这样该元素被替换时会触发更新事件去更新目标对像。但如果使用[num]的形式进行绑定时,不会触发更新事件。

30、在数据绑定符({})和数据绑定标签()中,你可以使用as表达式。例如

{Number(obj.text)*6/7}和ex4表达式。但不能在BindingUtils.bingProperty()/bindSetter()中使用。

31、as中的方法绑定接口。

BindingUtils.bindSetter(funToCall,sourceObj,sourceObj.property):ChangeWatcher。

32、你可以使用ChangeWatcher.watch("sourceobj","sourceobj.property",listener);方法添加一个监听器,当绑定时件触发时,listener会被调用。

33、如果源属性被替换,但被替换的对像与原对像是同一个对像,这种情况下更新更件不会被触发。如果你想自已控制事件触发,你可以在[Bindable("eventname")]中指定事件名,然后在想更新时通过dispatchEvent(new Event("eventname"))的方式触发。

34、数据绑定源中的整个属性链(chain)中的每一个节点都需要[Bindable],如果只有最未端属性是Bindable,那链中的其它层属性被更改时,不会触发更新事件。

35、如果你把对像绑定到dataProvider的话,当你需要改变其中一个对像的一个属性时,你需要以下代码obj.dataprovider.editField(index,"propername","value");这样更新对像才会同时更新到显视组件中。

36、如果你把Array绑定到显视组件中时,该组件只在初始化时更新一次值。初始化后,当Array

中的项改变时,不会触发更新。

37、容器提供了一个层次结构让你去布局组件。

38、flex最顶层持容器叫application。

39、flex容器有两种,一种是布局容器(layout container),另一种为导航容器(navigator container)。布局容器用于布局子组件/子容器的大小和位置。导航容器用于多个容器的导航。导航容器只能够到mx容器及spark的NavigatorContent容器。

40、mx组件容器只能存放继承自UIComponent对像的组件,而spark容器可以放下实现IVisualElement接口的组件。IVisualElement在UIComponent对像的继承层次中被实现。

41、mx容器与spark容器的主要区别在于mx组件的布局是固定的,而spark组件的布局是可以被替换的。

42、创建策略(Creation Policy)。创建策略指定了容器对子组件的初始化进程。创建策略有三个选项:ContainerCreationPolicy.AUTO/NONE/ALL。all:开始时初始化所有容器。NONE:不初始化所有子容器。AUTO:子组件在被需要时才创建,例如如果设置了AUTO选项,导航容器中除首页外,其它页的子组件在点击后才会被创建。

43、如果把一个容器的layout属性设为null,即该容器会采用它父容器的布局。

44、初始化事件顺序:preinitialize(自外向内),contentCreationComplete(容器特有,自内向外),initialize(自内向外),cteationComplete(自内向外)。

45、容器中有一个enabled属性,如果该属性设为false,即所有节组件都处于enabled=false状态。

46、容器中的defaultButton属性。设置该属性后,当用户在该容器上按回车键时,该按钮被触发。

47、spark中的四种布局:BasicLayout(绝对定位或约束布局),HorizontalLayout(单行水平布

局),VerticalLayout(单身垂直布局),TileLayout(多行表格布局)。

48、spark容器中如果放置一个大于该容器的组件,默认情况下该组件会越过容器显视。

49、如果要把组件的显视限制在容器内,可以使用viewport和scrollbar。

50、viewport定义了两个区域,一个为逻辑区域(logical content),另一个为可视窗口(visible window)。逻辑区域包括所有的子组件。显视区域是用户能看见的,是逻辑区域的一个子集。

51、veiwport的contentHeight/contentWidth是逻辑区域的大小,它的大小由子组件决定。

52、height/width是可视窗口的大小。

53、verticalScrollPosition/horizontalScrollPosition是可视化窗口相对于逻辑窗口的坐标。坐标为负时,可视化窗口向左上移。为正时向右下移。

54、viewport中的clipAndEnableScrolling属性默认为false,即如果子组件的大小大于容器,那子组件将越过容器边界显视。如果设置为true,即超出容器部份将不显视。

55、可以通过三种方法为容器增加滚动功能:1,增加HScrollBar/VscrollBar。2,把容器放到Scroller 中。3,在容器使用的皮肤中加入Scroller。

56、在H/VScrollerBar中设置viewport中指定该bar的目标容器。当滑动滚动条时,滚动条会改变容器的verticalScrollPosition/HorizontalScrollPosition的值。

57、放在scroller中的容器的clipAndEnableScrolling的值为true。

58、只有实现了viewport接口的容器都才能使用scroller。如果容器没实现viewport,例如BorderContainer、SkinnableContainer,即可以在此容器内放置scroller然后再放实现了viewport的容器。也可以先在scroller内先放置group,然后再放置没实现viewport接口的容器。

59、mx组件容器默认就支持滚动,当clipContent为true而且子组件超出容器边界时,滚动条自动出现。如果需要滚动条一直出现,可以设置horizontalScrollPolicy和verticalScrollPolicy属性为true。

60、显视列表中对节点的操作方法,在Spark与mx组件中是不同的。主要的不同点是spark组件的方法名中大部份含有Element,而mx组件中则以Child代替。

61、在显视列表中调用numElements/numChildren方法得到的是直接子节点的数目。

62、flex/flash有三个坐标系统:全局(global),本地(local),内容(content)。

63、全局坐标是以舞台(stage)的左上角为坐标原点的坐标系统。在MouseEvent中有stageX和stageY属性就是全局坐标系统中的坐标轴。

64、本地坐标是相对于组件左上角的坐标。所有组件都有的mouseX与mouseY属性指的是本地坐标系统的值。MouseEvent中的localX与localY也是本地坐标系统的值。而拖放操作中的xOffset与yOffset 也是。

65、内容坐标是是相对于组件内容的左上角。与全局和本地坐标不同的是内容坐标包括组件的内容区域。组件中的contentMouseX/contentMouseY属性是内容坐标的值。

66、在鼠标事件中的内容坐标与本地坐标是针对事件的目标对像,而目标对像并不是一定是你操作的对像。所以一般情况下你需要把本地坐标转化为全局坐标然后再把全局坐标转化为内容坐杆。

67、所有的可视化组件中有关坐标的属性。contentMouseX/contentMouseY:鼠标在组件中的内容坐标。

68、所有的可视化组件中有关坐标的方法:

contentToGlobal/contentToLocal,globalToContent/globalToLocal,locatToContent/localToGlobal。

69、布局(layout)分两部份,一部份为尺寸(sizing)另一部份是定位(positioning)。

70、布局管理器(layout manager)通过三个阶段去布局你的组件。保证阶段(Commitment pass),测量阶段(Measurement Pass),布局阶段(Layout Pass)。在保证阶段,管理器先确认你设置的组件的一些与布局有关的值。此时管理器会调用各组件的commitProperties()。在测量阶段,管理器为各组件设置或计算一些尺寸相关的属性的默认值。此阶段管理器会调用各组件的measure()方法。在布局阶段,管理器会移动和设置组件以及相关的画图方法。此时管理器会调用各组件的updateDisplayList()。

71、flex在程序初始化时(initializes)时或在一些与布局相关的属性改变时会自动进行布局。

72、在某些时候你需要手动调用组件的validateNow()方法强制进行重新布局。但此方法是计算集中型的计算,所以要确宝在需要时才调用。

73、布局中常用的属性。x/y:相对于父容器的左上角坐标。在绝对布局中有效。height/width:调用像素值或百分比。top,bottom,left,right:该组件相对于父容器的上下左右距离。在约束布局/流布局中常常用到。这几个属性只在绝对布局中有效。

74、flex布局是不考虑组件是否处于可视状态。也就是说不论组件是否可视,它都会在区域中占空间。但你可以通过includeInLayout设置组件是否参与布局。要注意的是includeInLayout只影响组件是否处于容器的布局中而不影响组件是否处于可视状态。

75、布局中,adobe建议采用百份比的方式设置组件和容器的尺寸。

76、在自动布局容器中,x/y属性的设置是不起作用的。

77、Spacer是一个参与布局但不可见的控件。在一些规则布局的容器中Spacer可以起到占位的作用。另外如果把spacer的宽设为100%可以起到把左边元素各左布局,把右边的元素向右布局的作用。

78、虽然在自动布局容器中,设置组件的x和y不会起作用。但你可以通过效果(effects)暂时改变组件的位置和大小。典型,例如当用户鼠标移动组件中,组件大小变化原来的两位并移动到容器的最前面。

79、在自动布局容器中,如果你把autoLayout属性设置为false,即容器不会自动布局。但此属性在mx容器中有一些情况会失效。

80、组件的visible控制是否可见,而includeInLayout控件组件是否参与布局。

81、基于约束布局常用的属性top/bottom/left/right这四个属性分别代码该组件相对于父容器的上下左右的距离。baseline代表组件中文字(标题)的底线与容器顶的距离。verticalCenter/HorizontalCenter 是指组件中心与容器中心的距离。这些属性常与一些比例的尺寸使用,做到流性布局的效果。这些属性中有一些是有冲突的,例如left/right与horizontalCenter。

82、Application中有两个独特的事件:applicationComplete和error。applicationComplete在所有初始化工作完成后被调用。error即在httpservice调用失败后被触发。

83、你可以在application标签中增加一个viewSourceURL属性,并指向一个文件。在运行过程中,在应用的任何一个空白地方右击都会出现一个查看源码的菜单。

84、在application中还有一些属性可以设置。frameRate:帧率,帧/秒。默认值为24。pageTitle:作用和html中的title一样。preloader:指向一个自定义进度条的swc或一个类。scriptRecursionLimit:定义as调用栈的深度,默认为100。scriptTimeLimit:在fp强制停止操作前,监听器能操作的时间。默认值也是最大值为60秒。usePreloader:是否使用默认的进度条。要使用进度条,app的宽度要大于160px。另外要注意的是上面的属性只能在mxml中被设置。

85、flex中有两个进度条。一个为DownloadProgressBar(MX),另一个为SparkDownloadProgressBar(Spark)。你可以通过扩展以上类去实现自定义的进度条,也可以通过继承Sprite,并实现IPreloaderDisplay接口。另外需要注意一个问题,进度条应尽量小地引用类库中的类,这样可以减小进度条的大小。

86、为了改善性能和减小程序的大小,有一部份spark容器是不支持皮肤的。一般情况下,你使用Group和DataGroup去管理布局。使用SkinnableContainer/SkinnableDataContainer去管理布局及自定义皮肤。

87、关于VerticalLayout/HorizontalLayout中的verticalAlign/HorizontalALign属性。除了常规的top/bottom等对齐方式外,还有justify:设置子组件的高/宽和容器的高/宽一样。conentJustify:把全部子组件的高度设为各子组件中的最高组件的高度,或容器内容高度。

88、VerticalLayout.variableRowHeight:设置每一行的高度是否由各子组件确定。HorizontalColumnWidth:设置每一行的宽度是否由子组件确定。两者的默认值为ture。如果设置为false,则每一行的宽度由rowHeight决定。如果rowHeight没决定,则由VerticalLayout.typicalLayoutElement 决定。如是要各元素都很小,则宽度由第一个元素的高度决定。

89、控制栏(Control bar)的好处是当容器出现滚动时,控制栏的绝对位置始终不变。默认情况下,在Panel中的控制栏在panel的底部。如果需要改变控制栏的位置可以修改默认的PanelSkin。

90、TitleWindow是Panel的一个子类,只要用于弹出窗的使用。TitleWindow被设计为可拖放,右上角有默认的关闭按钮等。

91、可以使用

PopUpManager.createPopUp(parent:DisplayObject,class:Class,modal:Boolean=false):IFlexDisplayObje ct。弹出窗口并不会阻止主窗口脚本的执行。使用removePopUp()方法移除弹出窗口。使用TitleWindow 的常规流程为新建一个继承自TitleWindow的自定义组件。然后在上面定义一些事件处理。移除方法一般为PopUpManager.removePopUp(this)。的

92、mouseDownOutside事件是用户在弹出窗口外点击时触发的事件。你可以使用该事件来关闭窗口。

93、TitleWindow与应用之间的数据交互。方法一:把在调用PopUpManager.createPopup时返回的结果转型为你的自定义组件titlewindow组件类型,然后直接调用里面的方法或属性传入相关的小组件或变量。方法二、另外也可以使用一个通用的方法。把过程信息放在一个单例或静态变量中。方法三、通过事件的方式传递数据。方法五:在组件内直接用parentApplication等属性引用父组件。上面五个方法的耦合程序不同,可重用性不同,易用性也不同。在不同的情景中可以按需求选择合适的方法传输数据。

94、客户端编程与服务端编程不同。服务端是多线程,多用户,所以一个类通常有多个实例。但客户端的一个类在同一时间内通常只有一个实例,此时如果用静态变量或单例可以让编程模型更简单。

95、dataprivider需要一个实现了IList接口的对像作为数据来源。实现了IList接口的对像有:ArrayList,ArrayCollection,XMLListCollection。

96、DataGroup/SkinnableDataContainer需要条目渲染器(item renderer)来显视条目。你需要配置默认的或自定义的条目渲染器来显视数据。flex提供两个默认的条目渲染器:

spark.skins.spark.DefaultItemRenderer/DefaultComplexItemRenderer。

97、DefaultItemRenderer:对应每一个数据条目用一个label来显视。对于简单的String/Number数据可以使用DefaultItemRenderer。

98、DefaultComplexItemRenderer:把每一个条目放在一个单独的DataGroup中。如果数据项全是可视化组件时,可以使用这个条目渲染器。

99、可以通过dataProvider直接增加/删除数据。

100、在DataGroup/SkinnableDataContainer中使用虚拟化技术。每条数据的显视都需要一个对应的条目渲染器。当数据多时,性能会大幅下降。

101、使用虚拟布局(virtual layout),只为可视化的元素建立条目渲染器然后重用而不是为每个条目都建立渲染器,这种做法可以提升性能。使用虚拟布局需要把容器的useVirtualLayout设为ture。只在DataGroup/SkinnableDataContainer中的V/H/TLayout布局中支持useVirtureLayout。

102、可以用itemRenderer属性指定一个数据容器的条目渲染器,另外也可以使用itemRendererFunction动态决定每一个条目的渲染器。

103、数据容器采用条目渲染器的优先级从高到低如下:

itemRendererFunctin->itemRenderer->item(如果实现了IVisualElement或DisplayObject本身。如果上面的都没有或不符合,那会报错。

104、可以用一个独立的文件自定义itemRender也可以直接在数据容器内实现itemRender。

105、List类型的控件,如果dataPrivider的数据是简单类型,如String/Number时,List会直接显视该对像。如果是复杂类型,你需要指定labelField/labelFunction或重写itemToLabel()方法。

106、list类组件的事件。caretChange:焦点从一个选项到另一个选项。change:选择项由手动触发变化。changing:选择项改变前发出的事件,此事件发生时可调用preventDefault()阻止选择项的变化。valueComit:编程方式触发选择项变化。以上的事件都是spark.events.IndexChangeEvent的子类。

107、List系统组件中支持布局的设置。这样使原来只支持垂直布局的List系列组件可以变为水平或方格布局。

108、List系列组件中的一些属性。requireSelection:如果为true,即List默认会把第一个选项设为被选项。如果为false,第一个选项为空。默认为false。selectedIndex:当前被选择的项的顺序,从零开始。如果requireSelecttion为false,可以把selectedIndex设为-1,表示不选中。selectedItem:当前被选中的项。

109、caret item意思是当前聚焦项。它可能与selectedItem为同一项,也可能不是。

110、List系列组件是SkinnableDataContainer的子类。SkinnableDataContainer没有默认的itemRenderer,但List系列组件有。下面是List系列组件所对应的itemRenderer。

ButtonBar:ButtonBarButton;ComboBox:DefaultItemRenderer;DropDownList:DefaultItemRenderer;List:D efaultItemRenderer;TabBar:ButtonBarButton。

111、在List组件中,你可以把allowMultipleSelection设为true,这样用户按着ctrl键可以选择多个项。

112、List组件中的selectedIndices/selectedItems为被选中的序号和项,它们均为Vector对像。

113、ButtonBar和TabBar的作用类似于单选按钮,被点击时会发出itemClick事件。

114、ButtonBar/TabBar可以把一个数组付值给dataprivider。这样就是一组简单的按钮,也可以把一个mx的ViewStack付给dataPrivider。这样ButtonBar/TabBar就会直接控制这组ViewStack。

115、DropDownList和ComboBox的区别:ComboBox是DropDownList的子类。DropDownList 就是一个纯单选的。而ComboBox除了选择外还可以手填。DropDownList中的prompt属性是没被选中时显视的文件。DropDownList的主要事件有:close/open。

116、在ComboBox中,如果你写入的值与集合中的不匹配,在change事件中,那selectedIndex 的值为-3,对应的变量为:ComboBox.CUSTOM_SELECTED_ITEM。然后会调用

https://www.360docs.net/doc/6f16230193.html,belToItemFunction方法把这个值转化为对像。所以如果你的集合为非简单元素,那你需要重写labelToItemFunction方法。

117、在一个导航容器中可以使用WideRight效果在creationCompleteEffect中。然后在各子容器中的showEffec中使用WideUp,hideEffect中使用WideDown。这样的效果比较生动。

118、DateChooser可以通过selectableRange设定可选日期范围,disabledRanges设置不可选日期范围,disableDays设置不可选的天。另外可以通过dayNames属性设置显视星期的文字。通过formatString可以设置日期的格式,例如:MM/DD/YYYY。另外可以通过parseFunction方法或inputFormat 把输入的文字转化为日期对像。

119、运行时加载图片支持以下格式:GIF/JPEG/PNG/SWF。在编译时加载支持

GIF/JPEG/PNG/SVG/SWF。也就是说SVG文件只支持编译时加载。另外SVG文件会受一些限制,例如不支持滤境、脚本等。

200、image控件中,如果想运行时加载图片,可以在source里指定路径,例如:source="url"。如果想在编译时加载图片,可以使用Embed,代码如下:source="@Embed(source='assets/logo.jpg')"。对于同一张图片,无论你引入多小次,图片也只会被加载一次。

201、如果不设置width/height,image默认下会以图片的大小来显视。在设置width/height的情况下,根据scaleContent的值来决定是否放大或缩小图像到width/height的大小,另外根据maintainAspectRatio来决定是否改变横宽比例。

202、在一幅图片中的rollOverEffect/rollOutEffect使用Reside效果会起到移到放大,离开缩小的效果。

203、PopUpAnchor是一个弹出控件。它的作用是把它里面的控件显视在应用的最前端而它本身没有任何外观。一般在以下几种情景中会用到:一、在页面的某个地方显视操作回馈信息。二、类似搜索引擎中的相关提示框。双击某控件时,弹出的编辑小窗口。

204、PopUpAnchor的displayPopUp控制它是否可见。PopUpAnchor里面组件的高宽先由popUpWidthMatchesAnchorWidth属性决定,然后是里面组件的宽度。另外可以通过popUpPosition设置组件弹出时处于PopUpAnchor的位置。如果PopUpAnchor与Effect一起使用,效果会更好。

205、进度条(ProgressBar)有两种,一种是显视具体进度的(Determinate),另一种是不显视具体进度的(Indeterminate)。

206、ProgressBar有三种模式event(默认),polled,manual。event模式会通过source属性中对应对像的progress/complete转变状态。polled模式会通过bytesLoaded/bytesTotal转变状态。manual模式会通过手动设置maxinum/mininum转变状态。

207、ProgressBar有一个label属性,默认值为LOADING xx%。这个属性可以手动设置,其中有四个占位符%1:已读字节数,%2:总字节数,%3:已完成的百份比,%%:%符串。

208、单选按钮(RadioButton),可以通过设置groupName属性把相同组的单选按钮归为一组。另外也可以定义一个,然后在单选按钮中设置group指定。后者的好处在于可以把相关事件设置统一设在group中。另外,RadioButtonGroup如果在mxml中定义,那要定义在中。

209、NumericStepper是一个数字控件,Spinner是NumericStepper的父类,可以用click事件联合Spinner配合其它控件使用。

210、VideoDisplay是播放多媒体的控件,它没有边框及相关按钮。控制尺寸的属性有:maintainAspectRatio/height/width。按制播放的方法有:close/load/pause/play/stop。在VideoDisplay中可放入cuePoints(name/time)元素,同时在VideoDisplay中注册cuePoint事件,每当影片播放到指定点时,将触发cuePoint事件。如果是播放影片,可以在source属性在设置路径,如果是摄像头,可以调用attachCamera(cam)方法。

211、VideoPlay是拥用默认按钮的视频播放器。

212、flex的文件控件有五个Label、RichText、RichEditableText、TextArea、TextInput。其中前四个为多行,最后一个为单行。前两个为只读,后三个为可编辑。

213、MX文字控件的格式主要通过style和htmlText控制,而spark的文件控件格式主要通过

FTE(Flash Text Engine)和TLF(Text Layout Framework)。

214、用于显视文字的主要控件有三个:Label,RichText,RichEditableText。三者中,左边最轻量级同时功能也最少,右边的相反。

215、在支持tlf的控件中,可以直接在控件的textFlow节点中放一下TextFlow节点。TextFlow节点下可以放置类html的标签(标签的命外空间为等标签。如果你使用content属性,TLF会解悉并转化为TextFlow对像。另外你也可以使用html标签文本放在一个xml对像中,然后使用TextFlowUtil.importFromXML(xml:XML)或TextConverter.importToFlow(str:String,type:String)转化为TextFlow对像。

216、在mxml中相关的TLF元素如果包含一些特殊字符例如<,>等,你可以使用相关的转义字符代替,否则,你需要在相关标签中使用,在as中需要使用转义符\或转义。

217、当你需要在一个容器中放置多个相同类型的组件时,可以使用Repeater。用法是在一个容器内放置一个Repeater,然后在Repeater内放置一个组件,例如。Repeater需要设置一个dataprivider。而里面的组件可以通过repeater的ID.currentItem来引用当前组件代表的dataPrivider中的当前对像。

Java分布式架构

介绍 1. 项目核心代码结构截图 jeesz-utils jeesz-config jeesz-framework jeesz-core-cms jeesz-core-gen jeesz-core-bookmark

jeesz-core-act jeesz-core-oa jeesz-core-test jeesz-core-scheduler jeesz-core-task jeesz-web-admin jeesz-web-service jeesz-web-scheduler jeesz-web-task jeesz-web-bookmark jeesz-facade-bookmark jeesz-service-bookmark jeesz-facade-task jeesz-service-task jeesz-web-mq-task 特别提醒:开发人员在开发的时候可以将自己的业务REST服务化或者Dubbo服务化 2. 项目依赖介绍

澳洲维省高中课程VCE Mathematical methods与国内数学对比研究

关于Further Mathematics 与Mathematics Methods 注:11年级的课时计划会打乱书上章节的顺序 ●分析: 1) Further Mathematics内容覆盖广(6年级~大一),与现行高中数学教材接轨小,在内容上仅有不到20%相同的地方,且难度较小,但除应用性强外,对国内数学帮助不大;但国内高中数学对Math有较大帮助。 2) Mathematics Methods 内容与国内高中数学内容相近,大约有70~80%相同,尽管在要求上更重于应用,理论难度要略低于国内数学,但它与国内数学互相辅助程度较大。然而要考虑的是:学生的英语水平及难度会对学生的VCE总分产生影响。 3) 假设只学习Mathematical Methods,根据Mathematical Methods教学安排调整中文数学的教学顺序例如:中文数学中的数列、向量内容后置,将Mathematical Methods中的概率统计前移。 ●方向 1)为了保证学生VCE的总分,应该保留Further Mathematic; 2)而为了让学生在报考国外大学的专业时有更多的选择(尤其指理工科)或得到更高的分数,应该学习Mathematical Methods,且Methods与国内数学的关系更为紧密。只是在学科的课时上,外教的配置上,学生的学费改变与否上考虑。 ●建议: 1、鉴于学生水平的参差不齐,理想状态:所有学生必修Further Mathematic,数学不错的(将来可 能报国外理科专业)的同学选修Mathematical Methods。这将会增加学生的课时。 2、学生学Further Mathematic和Mathematical Methods,多增加一门Mathematical Methods。 ------- 11年级学生学习Further Mathematic的3,4单元;12年级学生学习Mathematical Methods的3,4单元,最后参加5个学科的VCE大考。若这样可行,则可在不增加课时的基础上,多学了一个VCE学科。 ●初拟结论: 1、Methods代表国内数学的课改趋势 2、Methods尽管难度提高了,但因为计算的是标准分(按标准分折算),故与Victoria省比较,应该占优,并不影响VCE总分。 3、Methods与国内数学接近,更利于二者的整合与互助。 4、Methods与国内数学接近,更利于学生对中外数学的统一认识------即:要学好Math,就必须将国内数学学好,反之亦然。尽管它们在内容和深度上还各有特点。

activeMQ消息中间件

消息中间件分布式 说明书 中间件选型 1.1 Kafka Kafka是linkedin开源的MQ系统,主要特点是基于Pull的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输,0.8开始支持复制,不支持事务,适合产生大量数据的互联网服务的数据收集业务。 1.2 RabbitMQ RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量级,更适合于企业级的开发。结合erlang语言本身的并发优势,性能较好,但是不利于做二次开发和维护。1.3 RocketMQ 阿里巴巴的MQ中间件,在其多个产品下使用,并能够撑住双十一的大流量,他并没有实现JMS规范,使用起来很简单。部署由一个命名服务(nameserver)和一个代理(broker)组成,nameserver和broker以及producer都支持集群,队列的容量受机器硬盘的限制,队列满后可以支持持久化到硬盘(也可以自己适配代码,将其持久化到NOSQL数据库中),队列满后会影响吞吐量,可以采用主备来保证稳定性,支持回溯消费,可以在broker端进行消息过滤.

1.4 ActiveMQ ActiveMQ是Apache下的一个子项目。历史悠久的开源项目,已经在很多产品中得到应用,实现了JMS1.1规范,可以和spring-jms轻松融合,实现了多种协议,如Ajax,REST,Stomp等,支持持久化到数据库,少量代码就可以高效地实现高级应用场景,可以很好的运行在任何JVM上,而不只是集成到JBoss的应用服务器中,对spring有很好的支持,支持大量的跨语言客户端。 1.5 ZeroMQ ZeroMQ号称最快的消息队列系统,尤其针对大吞吐量的需求场景。ZMQ能够实现RabbitMQ不擅长的高级/复杂的队列,但是开发人员需要自己组合多种技术框架,技术上的复杂度是对这MQ能够应用成功的挑战。扩展性好,开发比较灵活,采用C 语言实现,实际上他只是一个socket库的重新封装,如果我们做为消息队列使用,需要开发大量的代码。 ActiveMQ消息中间件的选择从以下方面进行考虑: (1)activemq可以很好的运行在任何JVM上,而不只是集成到JBoss的应用服务器中; (2)activemq支持大量的跨语言客户端; (3)activemq支持许多不同的协议,如Ajax,REST,Stomp,OpenWire,XMPP (4)activemq支持许多高级功能,例如MessageGroups,ExclusiveConsumer,CompositeDestinations (5)activemq支持可靠连接并且具有可配置的自动重连接

vce教程

VCE题库打开软件Visual CertExam详细使用教程 VCE题库打开软件-Visual Certexam Suite免费版 https://www.360docs.net/doc/6f16230193.html,/thread-36170-1-1.html 发现论坛有的会员对VCE软件使用不熟悉,影响做题效率,现在给大家奉上一个详细的使用教程。感谢各位会员对鸿鹄论坛的支持,我们一直在努力做到更好! 1.打开Visual CertExam软件

2.选择Add按钮添加.VCE格式后缀题库文件

3.选择start直接可以做题,但是该软件不仅仅有这些功能,请往下看吧,选择Exam按钮 4.如上图所示选择history,对了,这就是每次做题的历史记录,可以看到自己历次的成绩。

5.再回到3中选择Operation选项,如图所示 Randomize questions--勾选表示随机抽题,不勾选表示从题库的第一题开始做,建议刚开始接触题库的同学不用勾选,先熟悉一遍题目,等熟悉了再勾选随机抽题选项。 Randomize choices where enable-勾选表示题目的ABCD等选项也是随机出现的,不勾选表示选项跟题库给的顺序一样。

6.回到2中,选strat开始做题,可以选择做所有题目或者自己选择题目的类型,这样便于重点练习自己不熟悉的知识点,查漏补缺,底部Time on选项,默认考试时间是120分钟,可以根据自己的情况适当设置做题时间。 7. 点击上图的OK按钮,会有题库的介绍和相关说明如下图所示,按Begin按钮正式开始答题。

8. 选择题有单选跟多选,题干会题库该题有几个选项,注意下图左上角的Mark按钮,勾选表示对该题做了标记。黄色M即表示标记的题目。

ACTIVEMQ大总结

ACTIVEMQ大总结 1. 背景 当前,CORBA、DCOM、RMI等RPC中间件技术已广泛应用于各个领域。但是面对规模和复杂度都越来越高的分布式系统,这些技术也显示出其局限性:(1)同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果后才能继续执行;(2)客户和服务对象的生命周期紧密耦合:客户进程和服务对象进程都必须正常运行;如果由于服务对象崩溃或者网络故障导致客户的请求不可达,客户会接收到异常;(3)点对点通信:客户的一次调用只发送给某个单独的目标对象。 面向消息的中间件(Message Oriented Middleware,MOM)较好的解决了以上问题。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者。这种模式下,发送和接收是异步的,发送者无需等待;二者的生命周期未必相同:发送消息的时候接收者不一定运行,接收消息的时候发送者也不一定运行;一对多通信:对于一个消息可以有多个接收者。 已有的MOM系统包括IBM的MQSeries、Microsoft的MSMQ和BEA的MessageQ 等。由于没有一个通用的标准,这些系统很难实现互操作和无缝连接。Java Message Service(JMS)是SUN提出的旨在统一各种MOM系统接口的规范,它包含点对点(Point to Point,PTP)和发布/订阅(Publish/Subscribe,pub/sub)两种消息模型,提供可靠消息传输、事务和消息过滤等机制。 2.JMS概述 2.1 JMS规范 JAVA 消息服务(JMS)定义了Java 中访问消息中间件的接口。JMS 只是接口,并没有给予实现,实现JMS 接口的消息中间件称为JMS Provider,例如ActiveMQ。 2.2 术语 JMS Provider:实现JMS 接口的消息中间件; PTP:Point to Point,即点对点的消息模型; Pub/Sub:Publish/Subscribe,即发布/订阅的消息模型; Queue:队列目标; Topic:主题目标; ConnectionFactory:连接工厂,JMS 用它创建连接; Connection:JMS 客户端到JMS Provider 的连接; Destination:消息的目的地; Session:会话,一个发送或接收消息的线程; MessageProducer:由Session 对象创建的用来发送消息的对象;MessageConsumer:由Session 对象创建的用来接收消息的对象; Acknowledge:签收; Transaction:事务。 2.3 JMS编程模型 在 JMS 编程模型中,JMS 客户端(组件或应用程序)通过 JMS 消息服务交换消息。消息生产者将消息发送至消息服务,消息消费者则从消息服务接收这些消息。这些消息传送操作是使用一组实现 JMS 应用编程接口 (API) 的对象(由 JMS Provide提供)来执行的。

ActiveMQ实践入门指南

ActiveMQ 实践入门指南

ActiveMQ 实践入门指南
ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个 完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现,尽管 JMS 规范出台已经是很久的 事情了,但是 JMS 在当今的 J2EE 应用中间仍然扮演着特殊的地位。下面我们将分四部分来 介绍 ActiveMQ 的相关内容。
ActiveMQ 实践:松耦合和 ActiveMQ
回到 2003 年,一群开源开发者聚在一起组成了 Apache Geronimo。他们发现没有一个 很好的使用 BSD 风格许可证的消息中间件可用。因为 Geronimo 需要一个 JMS 实现 J2EE 兼 容性,所以一些开发者开始探讨这种可能性。
? ActiveMQ 实践:松耦合和 ActiveMQ
ActiveMQ 实践:特性列表和安装
这一部分,我们将介绍 ActiveMQ 的特性列表和如何进行安装和如何对其进行测试。
? ActiveMQ 实践:特性列表和安装
ActiveMQ 实践:使用场景
在系统架构中,有很多场景 ActiveMQ 和异步消息都会产生深远的影响。这部分中, 我们将介绍一些使用 ActiveMQ 的场景实例。
TT SOA 技术专题之“ActiveMQ 实践入门指南”
Page 2 of 19

? ActiveMQ 实践:使用场景
ActiveMQ 实践:ActiveMQ 使用入门
开始使用 ActiveMQ 并不是很难,你只需要启动代理,确保它能够接受连接和发送消 息。这部分中,我们将介绍如何开始使用 ActiveMQ。
? ActiveMQ 实践:ActiveMQ 使用入门
TT SOA 技术专题之“ActiveMQ 实践入门指南”
Page 3 of 19

activeMQ操作手册

一、安装部署 1、下载 https://www.360docs.net/doc/6f16230193.html,/activemq-5100-release.html,下载5.10.0 WindowsDistribution版本 2、安装 直接解压至任意目录(如:D:\Software\apache-activemq-5.10.0) 3、启动ActiveMQ服务 cmd到bin目录下直接运行:activemq.bat start 启动成功: 4、ActiveMQ消息管理后台系统: http://localhost:8161/admin(随包附带jetty、可直接启动)

默认用户名:admin 默认密码:admin ※在conf/jetty-realm.properties里可以修改用户和密码 创建一个Queue 二、Queue与Topic 的比较 1、JMS Queue 执行load balancer语义:

一条消息仅能被一个consumer(消费者) 收到。如果在message 发送的时候没有可用的consumer,那么它将被保存一直到能处理该message 的consumer 可用。如果一个consumer 收到一条message 后却不响应它,那么这条消息将被转到另一个consumer 那儿。一个Queue 可以有很多consumer,并且在多个可用的consumer中负载均衡。注: 点对点消息传递域的特点如下: ?每个消息只能有一个消费者。 ?消息的生产者和消费者之间没有时间上的相关性。无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。 2、Topic 实现publish和subscribe 语义: 一条消息被publish时,它将发到所有感兴趣的订阅者,所以0到多个subscriber将接收到消息的一个拷贝。但是在消息代理接收到消息时,只有激活订阅的subscriber能够获得消息的一个拷贝。 注: 发布/订阅消息传递域的特点如下: ?每个消息可以有多个消费者。 ?生产者和消费者之间有时间上的相关性。订阅一个主题的消费者只能消费自它订阅之后发布的消息。JMS 规范允许客户创建持久订阅,这在一定程度上放松了时间上的相关性要求。持久订阅允许消费者消费它在未处于激活状态时发送的消息。 3、分别对应两种消息模式: Point-to-Point (点对点),Publisher/Subscriber Model (发布/订阅者) 其中在 Publicher/Subscriber 模式下又有Nondurable subscription(非持久订阅)和durable subscription (持久化订阅)2种消息处理方式(支持离线消息)。 注: 在点对点消息传递域中,目的地被成为队列(queue);在发布/订阅消息传递域中,目的地被成为主题(topic)。 三、Point-to-Point (点对点)消息模式开发流程 1、生产者(producer)开发流程(ProducerTool.java): 1.1 创建Connection: 根据url,user 和password 创建一个jms Connection。 Java代码 1.ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory (user, password, url);

Visual CertExam(VCE)试题制作教程

制作方案一:将PDF制作成VCE文件 制作相关软件: 1、Exam Formatter (把PDF转成RTF) 2、Visual CertExam Suite (主要用designer把RTF转成VCE) 具体操作步骤: 1、打开exam formatter软件 2、选择file->import导入相应PDF文件 3、自动导入后,exam formatter如下 4、选择file->save as,保存成rtf文件 5、运行visual certexam designer->import导入刚才保存的rtf文件 6、next->选择rtf格式(刚才保存的为rtf格式)) 8、next,选择刚才保存的rtf文件 9、next,选择第三项 10、next,进行导入预览 11、next->import导入完成 12、file->save as保存成vce文件 详情请参阅:https://www.360docs.net/doc/6f16230193.html,/s/blog_6c991f270101a7bj.html 感谢@明旭2010分享的制作方案 制作方案二:将PDF转换成TXT后,制作成VCE文件 用第一种方案制作,依赖于Exam Formatter 对PDF的OCR识别,但事实上Exam Formatter并不是一款专业的OCR识别软件,它对PDF的文字识别效果很差。通过方案一制作出来的.VCE文件通常是这样的:

上面图片所属题库里面有280多道题,用方案一只识别出来9道题,而且题目标题,不同的题目也不能识别开来,所以方案一只适用于Exam Formatter 能对PDF完全识别的少部分情况。 VCE题库文件制作2种方法:一种是PDF文件导入(方案一),另一种就是直接将TXT文件导入designer 制作。既然Exam Formatter对PDF的文字识别效果不好,那我们可不可以先用专业的PDF文字识别软件现将题库文字识别出来,再用TXT来制作VCE题库呢? 制作相关软件: 1、CAJViewer 7.2 :中国知网的专用浏览器,文字识别效果尚可。(免费) 2、ABBYY_FineReader:一家俄罗斯软件公司开发的OCR识别软件,识别准确率可以达到95% 以上。(收费) 3、Visual CertExam Suite (主要用designer把TXT转成VCE) 具体操作步骤: 1、用CAJViewer 7.2 打开你要识别的PDF文件 2、选择文件->另存为,在弹出的选项框里面,保存类型选择TXT 3、打开你识别好的TXT文件: 将QUESTION 替换成Q ,比如QUESTION1=Q1,QUESTION2=Q2以此类推 将Correct Answer 替换成Answer

ActiveMQ面试题及答案

ActiveMQ面试题及答案 1、什么是ActiveMQ? activeMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。 2、Activemq的瓶颈值 根据网上一般评测文档上来看,每秒的消息吞吐在2000以上, acticemq 也可以集群化部署,也是使用zookeeper来搭建。 3、ActiveMQ服务器宕机怎么办? 这得从ActiveMQ的储存机制说起。在通常的情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的,它们的最大限制在配置文件的节点中配置。 但是,在非持久化消息堆积到一定程度,内存告急的时候,ActiveMQ会将内存中的非持久化消息写入临时文件中,以腾出内存。虽然都保存到了文件里,但它和持久化消息的区别是,重启后持久化消息会从文件中恢复,非持久化的临时文件会直接删除。 那如果文件增大到达了配置中的最大限制的时候会发生什么?我做了以下实验: 设置2G左右的持久化文件限制,大量生产持久化消息直到文件达到最大限制,此时生产者阻塞,但消费者可正常连接并消费消息,等消息消费掉一部分,文件删除又腾出空间之后,生产者又可继续发送消息,服务自动恢复正常。 设置2G左右的临时文件限制,大量生产非持久化消息并写入临时文件,在达到最大限制时,生产者阻塞,消费者可正常连接但不能消费消息,或者原本慢速消费的消费者,消费突然停止。整个系统可连接,但是无法提供服务,就这样挂了。 具体原因不详,解决方案:尽量不要用非持久化消息,非要用的话,将临时文件限制尽可能的调大。 4、AcitveMQ的作用、原理?(生产者、消费者。p2p、订阅实现流程) Activemq的作用就是系统之间进行通信。当然可以使用其他方式进行系统间通信,如果使用Activemq的话可以对系统之间的调用进行解耦,实现系统间的异步通信。原理就是生产者生产消息,把消息发送给activemq。Activemq 接收到消息,然后查看有多少个消费者,然后把消息转发给消费者,此过程中生产者无需参与。消费者接收到消息后做相应的处理和生产者没有任何关系 5、activemq在项目中如何应用的

ActiveMq-JMS简单实例使用tomcat

ActiveMq初级操作 (工具:tomcat6.0、activeMq5.3.2、Myeclipse7.0,java1。5) 这是本人第一次发表个人使用ActiveMq,如有错误,请指出。只为与众人共享我的心得。 activeMq是一个开源的支持JMS的框架:(以下为考录他人的信息,如有版权问题,请联系) 一、特性及优势 1、实现JMS1.1规范,支持J2EE1.4以上 2、可运行于任何jvm和大部分web容器(ActiveMQ works great in any JVM) 3、支持多种语言客户端(java, C, C++, AJAX, ACTIONSCRIPT等等) 4、支持多种协议(stomp,openwire,REST) 5、良好的spring支持(ActiveMQ has great Spring Support) 6、速度很快,JBossMQ的十倍(ActiveMQ is very fast; often 10x faster than JBossMQ.) 7、与OpenJMS、JbossMQ等开源jms provider相比,ActiveMQ有Apache的支持,持续发展的优势明显。 二、下载安装 1、下载 https://www.360docs.net/doc/6f16230193.html,/download.html,在这个页面里有你所需要的各个版本,我用的是最新的版本-ActiveMQ 5.3.2。 2、安装 直接解压至任意目录(如:d:\ apache-activemq-5.1.0),但是我用的时候是解压到D盘的根目录下,我建议各位也这样,不用对它的一些bat进行修改。 3、启动ActiveMQ服务器 方法1: 直接运行bin\activemq.bat 方法2(在JVM中嵌套启动):(这个我没用过,你可以试试) cd example ant embedBroker 4、ActiveMQ消息管理后台系统:http://localhost:8161/admin 打开主页后,你可以看到activeMq中带的一些实例, 三、详细实例 以下为本人的一个简单的实例,希望对各位有所帮助, 我是利用网上的资料,将tomcat和activeMq整合在一起做的一个发送接受的发布订阅的例子(我用的是tomcat6.0,activeMq5.3.2): 首先整合tomcat和activeMq: 1、准备jar包: 将ActiveMQ lib目录下的5个jar包复制到Tomcat lib目录下: activemq-core-5.1.0.jar activemq-web-5.1.0.jar geronimo-j2ee-management_1.0_spec-1.0.jar geronimo-jms_1.1_spec-1.1.1.jar geronimo-jta_1.0.1B_spec-1.0.1.jar 2、修改配置文件: 2.1 修改Tomcat的conf/context.xml文件:

activeMQ面试题

1. activeMQ默认配置下启动会启动8161和61616两个端口,其中8161是mq自带的管理后台的端口,61616是mq服务默认端口。 8161是后台管理系统,61616是给java用的tcp端口 2. MQ的两个队列模式: 点对点:Queue,不可重复消费(消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。) 发布/订阅:Topic,可以重复消费(消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。) 在点对点的消息传递域中,目的地被称为队列queue 在发布订阅消息传递域中,目的地被称为主题topic 1》发布主题生产者 2》订阅主题消费者 3》先启动订阅,再启动生产,不然发送的消息时废消息 4》控制台 3. 两个队列模式的区别: 1.工作模式: topic 没有订阅者,消息被丢弃,如有多个订阅者,都会收到消息 queue 负载均衡模式,如果没有消费者,消息也不会丢弃;如果有多个消费者,那么一条消息只会发送一个消费者,并且要求消费者ack信息 2.有无状态:无状态 Queue数据默认会在mq服务器上以文件形式保存 3.传递完整性: topic没有订阅者,消息被丢弃 queue消息不会丢弃 4.处理效率 topic处理性能会随着订阅者的数量逐渐降低 queue 由于一条消息只发送给一个消费者,就算消费者再多,性能也不会明显降低 javaee 是一套应用java进行企业级应用开发的大家一致遵循的13个核心规范工业标准 JMS java消息服务 JMS 规范:Java官方提供的一种要求各OMO厂商遵守的一个规范(API),以便开发者能够用一套API使用所有厂商的MQ。 JMS组成:生产者、消息、中间件(MQ服务器)、消费者 JMS的可靠性:持久性、事物、签收 消息组成: 消息头(可以设置优先级、是否持久化、过期时间、消息id等)、 消息体: textMessage、map、byte、Stream、Object 消息属性:对消息体的补充,识别、去重、重点标注等,如 textMessage.setStringProperty(name:"C01", value:"VIP") activeMQ事务和签收方式 1.本地事务 2.分布式事务 三种签收方式】 [ Session.AUTO_ACKNOWLEDGE ] 当客户端从receiver或onMessage成功返回时,Sessi on自动签收客户端的这条消息的收条。 [ Session.CLIENT_ACKNOWLEDGE ] 客户端通过调用消息(Message)的acknowledge方法签收消息。在这种情况下,签收发生在Session层面:签收一个已经消费的消息会自动地签收这个Session所有已消费的收条。 [ Session.DUPS_OK_ACKNOWLEDGE ] Session不必确保对传送消息的签收,这个模式可能会引起消息的重复,但是降低了Session的开销,所以只有客户端能容忍重复的消息,才可使用。 传输协议:(默认支持五种协议,NIO性能高,可以单独配置activeMQ.xml,端口号 ) NIO协议和TCP协议类似但NIO更侧重于底层的访问操作。它允许开发人员对同一资源可有更多的client调用和服务端有更多的负载。 适合使用NIO协议的场景:(1)可能有大量的Client去链接到Broker上,NIO的实现比TCP需要更少的线程去运行,所以建议使用NIO协议。 (2)可能对于Broker有一个很迟钝的网络传输,NIO比TCP提供更好的性能。 NIO链接的URL形式:nio//hostname:port?key=value Active的持久化机制:JDBC、AMQ、KahaDB、LevelDB ActiveMQ默认使用异步发送的模式;除非明确指定使用同步发送的方式或者在未使用事务的前提下发送持久性的消息,这两种情况都是同步发送的。 不能有效的确保消息的发送成功; 高级投递:异步投递、延迟投递、定时投递理解 (MQ四大属性:延迟投递时间、重复投递的时间间隔、重复投递次数、Cron表达式) 如何防止消息重复发送? 解决方法:增加消息状态表。用来记录消息的处理状态,每次处理消息之前,都去状态表中查询一次,如果已经有相同的消息存在,那么不处理,可以防止重复发送。增加主键id。 幂等性,通俗点说,就一个数据,或者一个请求,给你重复来多次,你得确保对应的数据是不会改变的,不能出错。 丢消息怎么办? 用持久化消息,或者非持久化消息及时处理不要堆积,或者启动事务,启动事务后,commit()方法会负责任的等待服务器的返回,也就不会关闭连接导致消息丢失了。

E n i g m a 算 法 详 解

成为专业程序员路上用到的各种优秀资料、神器及框架 本文是鄙人工作这几年随手收集整理的一些自认为还不错的资料,成长的道理上需要积累,这么长时间了,是时候放出来分享下了,或许能帮助到你。 欢迎点赞,让更多人看到,让福利普照。 因为本文以后不会更新,但项目依旧会更新。 所以,更好的做法是,请到GitHub上Star:stanzhai-be-a-professional-programmer 成为一名专业程序员的道路上,需要坚持练习、学习与积累,技术方面既要有一定的广度,更要有自己的深度。 笔者作为一位tool mad,将工作以来用到的各种优秀资料、神器及框架整理在此,毕竟好记性不如烂键盘,此项目可以作为自己的不时之需。 本人喜欢折腾,记录的东西也比较杂,各方面都会有一些,内容按重要等级排序,大家各取所需。 这里的东西会持续积累下去,欢迎Star,也欢迎发PR给我。 技术站点必看书籍大牛博客GitHub篇工具篇 平台工具常用工具第三方服务爬虫相关(好玩的工具)安全相关Web服务器性能-压力测试工具-负载均衡器大数据处理-数据分析-分布式工具Web前端语言篇 https://www.360docs.net/doc/6f16230193.html,C 游戏开发相关日志聚合,分布式日志收集RTP,实时传输协议与音视频

技术站点 在线学习:Coursera、edX、Udacity?- way to explore国内老牌技术社区:OSChina、博客园、CSDN、51CTO 免费的it电子书:IT eBooks - Free Download - Big Library在线学习:Udemy Crowd-sourced code mentorship. and Practice coding with fun programming challenges - CodinGameDevStore:开发者服务商店MSDN:微软相关的官方技术集中地,主要是文档类必看书籍 SICP(Structure and Interpretation of Computer Programs)深入理解计算机系统代码大全2人件人月神话软件随想录算法导论(麻省理工学院出版社)离散数学及其应用设计模式编程之美黑客与画家编程珠玑The Little SchemerSimply Scheme_Introducing_Computer_ScienceC++ PrimeEffective C++TCP-IP详解Unix 编程艺术技术的本质软件随想录计算机程序设计艺术职业篇:程序员的自我修养,程序员修炼之道,高效能程序员的修炼《精神分析引论》弗洛伊德《失控》《科技想要什么》《技术元素》凯文凯利程序开发心理学天地一沙鸥搞定:无压力工作的艺术大牛博客 云风(游戏界大牛): 云风的 Tian (binghe)R大【干货满满】RednaxelaFX写的文章-回答的导航帖陈皓-左耳朵耗子:酷

澳州VCE高中课程

澳州VCE高中课程 什么是 VCE? ●澳大利亚维多利亚州授予的高中证书 ●一个单元是一门学科一学期的课程,需要通过至少16个单元以完成学业 ●成绩由学校内部考试和学校外部维州统一考试及综合评估组成,取得规定学 分,即获得澳大利亚高中VCE证书 谁认可VCE? ●VCE在世界范围内被广泛承认,尤其是英语国家 ●所有澳大利亚的大学认可VCE,录取取决于你的VCE评估成绩在澳洲的排名 有哪些VCE课程? ●VCE课程与澳大利亚维洲开设的完全一致 ●起初开设4至6门核心科目,通常是英语、数学、中文和商科或科学等科目●第一学期开设英语预备课程,以确保学生达到接受英语授课的能力 如果管理VCE项目? ●澳大利亚维州教育评估署官员每年都要对海外学校进行检查 ●澳洲半岛学校经常性派专业人士现场访问指导 ●澳洲半岛学校为在中国教授相同学科的老师提供指导老师 ●学生的成绩报告及学籍档案由澳洲半岛学校统一存档管理 VCE课程有哪些特色? ●VCE课程全部用英语教学 ●由维州教育评估署提供教学大纲和考试评估 ●由澳洲半岛学校提供课程计划,浦外参与整合设置 ●绝大多数教学和评估资源在澳洲准备并与澳洲同步 VCE课程有何益处? ●VCE课程为中国学生开辟了一条入读澳大利亚和其它国家大学的途径 ●学生可在自己的国家中学习得到世界承认的优质学历课程 ●节省了到国外就读高中所需的高额度的生活费用 ●学生可习得流利的英语,英语教学的经历为前去英语国家大学深造作好了充 分的准备 如果招生? ●VCE课程学制:全日制三年,全部在浦外校园学习。 ●今年9月开班,计划招生100名。本市具有较好英语水平的初中毕业生,通 过相应的考核,即可成为课程项目正式学生就读。

最详细最好的Multisim仿真教程

第13章Multisim模拟电路仿真本章Multisim10电路仿真软件,讲解使用Multisim进行模拟电路仿真的基本方法。 目录 1. Multisim软件入门 2. 二极管电路 3. 基本放大电路 4. 差分放大电路 5. 负反馈放大电路 6. 集成运放信号运算和处理电路 7. 互补对称(OCL)功率放大电路 8. 信号产生和转换电路 9. 可调式三端集成直流稳压电源电路 13.1 Multisim用户界面及基本操作 13.1.1 Multisim用户界面 在众多的EDA仿真软件中,Multisim软件界面友好、功能强大、易学易用,受到电类设计开发人员的青睐。Multisim用软件方法虚拟电子元器件及仪器仪表,将元器件和仪器集合为一体,是原理图设计、电路测试的虚拟仿真软件。 Multisim来源于加拿大图像交互技术公司(Interactive Image Technologies,简称IIT公司)推出的以Windows为基础的仿真工具,原名EWB。 IIT公司于1988年推出一个用于电子电路仿真和设计的EDA工具软件Electronics Work Bench(电子工作台,简称EWB),以界面形象直观、操作方便、分析功能强大、易学易用而得到迅速推广使用。 1996年IIT推出了EWB5.0版本,在EWB5.x版本之后,从EWB6.0版本开始,IIT对EWB进行了较大变动,名称改为Multisim(多功能仿真软件)。 IIT后被美国国家仪器(NI,National Instruments)公司收购,软件更名为NI Multisim,Multisim经历了多个版本的升级,已经有Multisim2001、Multisim7、Multisim8、Multisim9 、Multisim10等版本,9版本之后增加了单片机和LabVIEW虚拟仪器的仿真和应用。 下面以Multisim10为例介绍其基本操作。图13.1-1是Multisim10的用户界面,包括菜单栏、标准工具栏、主工具栏、虚拟仪器工具栏、元器件工具栏、仿真按钮、状态栏、电路图编辑区等组成部分。

activemq集群文档

Activemq集群支持配置说明书 2011年9月27日

修改历史

目录 1、引言 (3) 1.1编写目的 (3) 1.2背景 (3) 1.6参考资料 (4) 2、概述 (4) 2.1产品/模块简介 (4) 2.2功能列表 (4) 2.3核心流程 (5) 2.4关键算法 (7) 3、体系结构 (9) 3.1开发/运行环境 (9) 3.2体系结构图 (9) 4、数据描述[可选] (9) 1、引言 1.1编写目的 此文档为了描述activemq集群及持久化存储,监控配置。 1.2背景 Activemq Server为提供系统异步消息传递能力的构件; 为了支持更大量的消息分派,提供负载均衡及高服务质量,使用activemq提供的Network Of Brokers配置,部署三个activemq实例,每个activemq实例我们称它为broker,为客户端提供服务;此配置允许在一个activemq失败时少量的消息丢失,所以从严格意义上不是高可用性配置. 当前我们使用Network Of Brokers为业务消息提供服务;使用Master/Slave为Ehcache分布式缓存提供消息同步服务.

1.6参考资料 Home: https://www.360docs.net/doc/6f16230193.html, Network Of Brokers:https://www.360docs.net/doc/6f16230193.html,/networks-of-brokers.html Persistence:https://www.360docs.net/doc/6f16230193.html,/persistence.html KahaDB:https://www.360docs.net/doc/6f16230193.html,/kahadb.html Producer Flow Control:https://www.360docs.net/doc/6f16230193.html,/producer-flow-control.html Master/Slave:https://www.360docs.net/doc/6f16230193.html,/masterslave.html Failover Transport:https://www.360docs.net/doc/6f16230193.html,/failover-transport-reference.html ServerSide Transport:https://www.360docs.net/doc/6f16230193.html,/configuring-transports.html 2、概述 2.1产品/模块简介 Apache ActiveMQ ? is the most popular and powerful open source messaging and Integration Patterns server. Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols, comes with easy to use Enterprise Integration Patterns and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. Apache ActiveMQ is released under the Apache 2.0 License. Network Of Brokers: To provide massive scalability of a large messaging fabric you typically want to allow many brokers to be connected together into a network so that you can have as many clients as you wish all logically connected together - and running as many message brokers as you need based on your number of clients and network topology. This allows a client to connect to any broker in the network - and fail over to another broker if there is a failure - providing from the clients perspective a HA cluster of brokers. 2.2功能列表 1.业务消息的生产者发送持久的队列消息,消费者实现MessageListener接口监听队列. https://www.360docs.net/doc/6f16230193.html,work of brokers确保所有消息能够分派至消费者,即使生产者将消息发送至broker A,但消费者监听broker B. 3.为了提供分派速度,设置同一broker上的消费者在分派消息拥有较高权限,这样可以减少消

澳大利亚维州VCE会计课程教育与思考

摘要教育国际化引发越来越多的国际高中课程进入了中国学生的视野。中国学生在国内就能参加全球各国的大学入学考试,顺利进入世界各地的大学深造学习。本文将介绍澳大利亚维多利亚州的高中VCE课程体系中的会计学科,比较中澳两国在课程设计、教育目标以及评价体系中的差异,并对我国会计课程教学现状给出分析、建议和思考。关键词澳大利亚VCE会计高中教育评价体系Analysis and Reflection on VCE Accounting Curriculum Education in Australian State of Victoria//TangXiaominAbstractWiththeprocessofinternationalizationofeducation,moreandmoreinternationalhighschoolcurriculumgetintotheChinesestudents'horizons.Chinesestudentswillbeabletopar-ticipateintheglobalnationalcollegeentranceexams.Australianeducationenjoysahighinternationalreputation,thisarticlewilldetailtheAustralianstateofVictoriaHighSchoolVCEaccount-ingeducationcurriculumobjectives,curriculumdesign,teachingmethods,andevaluationsystem,andanalysisandgiverecom-mendationstoChineseeducation. Key wordsVCE;accounting;highschooleducation;evaluationsystem 随着教育国际化的进程,越来越多的国际高中课程进入了中国学生的视野。例如英联邦国际的A-level课程,澳大利亚VCE课程,美国的IB、GAT课程,德国课程等,中国学生在国内就能参加全球各国的大学入学考试,顺利进入世界各地的大学深造学习。本文将介绍澳大利亚维多利亚州的高中VCE课程体系中的会计学科,比较中澳两国在课程设计、教育目标以及评价体系中的差异,并对我国会计课程教学现状给出分析、建议和思考。 1澳大利亚VCE会计(Accounting)课程设置澳大利亚维多利亚州高中阶段VCE教育课程是指“theVictorianCertificateofEducation”教育证书,该教育证书既是学生高中毕业的证明,也是澳大利亚大学录取的重要指标,它得到全球认证,不仅仅可以申请澳大利亚大学,还可以申请世界范围内包括英国、美国、加拿大、中国香港、新加坡等一流大学。澳大利亚VCE的高中学习科目设置多元化。高中阶段学科设置有数学(专业数学、数学方法等)、社会学科(中文、会计、经济、地理、历史等)、自然科学(IT、物理、生物、化学等)以及语言学科(中文、法语、英语、英语文学、英语作为第二语言等)。在澳大利亚高中阶段就开设实用性很强的会计学对学生了解商业运营模式,很具有实践意义[1]。 澳大利亚维多利亚州VCE的高中阶段就开设了中国国内只有在本科教育中才有的会计课程(Accounting),供学生选择学习[2]。会计课程不仅是学生在大学阶段学习会计、商科、经济、金融等专业的必修课程,还为学生从中学起就了解社会商业运转,设定未来职业理想目标提供了良好的基础。 2澳大利亚VCE会计课程教学特点 澳大利亚VCE会计教学方法体现了自主性、灵活性和多样性。会计学科又具备其独特的特点,是知识性和实践性紧密结合的学科。 澳洲VCE会计教学的特点之一就是强调自主性。澳大利亚的高中更像国内的大学,学生没有固定的教室,可以自己挑选每年学习的科目。学校拥有先进的教学设备,老师在教学中使用电脑投影,学生们听课都使用电脑,每个人都有无线网络账号,能随时上网,这不论对老师的课堂控制力还是学生的学习自觉性都是一种考验。仔细研究校园网络系统,发现每个学生所选课程安排、上课内容、待完成的作业及时间安排等都有详细的模块分类,这也是每个学生每天必看的。首先上课前老师会把本堂课提纲通过学校网络发给每个同学,学生可以先作预习,在上课时在老师的提纲上将笔记补充完整,起到了提纲挈领的作用。既让学生明确了本节课学习的目标,又能进一步检查学生掌握程度,同时也锻炼了学生的动手能力,会计课程教学就注重学生的笔记的完善,条理的清楚,以便于抓住重点复习考试,而作业等也是直接在电脑上完成即可。当然有利也有弊,老师在讲课时就得有所要求,比如合上电脑等。会计这门学科教学要求中有计算机完成部分,例如运用OFFICE的软件Excel、现在国际通用的会计软件Quickbook进行操作练习等,多样性的教学让学生有更多的机会将会计教学融入到社会实践中。通过多种途径建构学生的会计知识,并且这部分的成绩在学校评价体系(SAC)中占到一定比重。 澳洲VCE会计教学的特点之二是强调计划性和目的性。通常每天只有四节课,每节课70分钟,早上9点开始, 澳大利亚维州VCE会计课程教育分析与思考 唐晓敏 (南京外国语学校仙林分校国际高中部江苏·南京210023)中图分类号:G424文献标识码:A文章编号:1672-7894(2013)21-0090-02 作者简介:唐晓敏(1982—),女,湖北荆州人,经济学硕士。 教改教法 90

相关文档
最新文档