puremvc多核版生成器
来源:互联网 发布:icon设计软件 编辑:程序博客网 时间:2024/05/11 04:05
主文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- ======================================================================
2010-6-25 下午02:49:07
PuremvcMultiCoreDemo
description
黄记新
====================================================================== -->
<project name="${project.name}" default="main">
<tstamp prefix="build">
<format property="TimeSign" pattern="yyyy-MM-dd" />
</tstamp>
<property file="project.properties" />
<property file="build/config/puremvc.properties" />
<property file="build/config/log.properties" />
<taskdef name="foreach" classpath="build/libs/ant-contrib-1.0b3.jar" classname="net.sf.antcontrib.logic.ForEach" />
<taskdef name="if" classpath="build/libs/ant-contrib-1.0b3.jar" classname="net.sf.antcontrib.logic.IfTask" />
<loadresource property="copy">
<file file="build/templates/puremvc/file-header-copy.tpl" />
</loadresource>
<loadresource property="delegatefunctions">
<file file="build/templates/puremvc/functions.tpl" />
</loadresource>
<target name="main" depends="log,clean,createPuremvcProject">
</target>
<!-- =================================
target: insertTimstamp
================================= -->
<target name="insertTimstamp">
<echo>insert time</echo>
<copy file="${puremvc.templates.dir}/file-header-copy.tpl" tofile="${puremvc.templates.dir}/${puremvc.framework.name}/file-header-copy.tpl" overwrite="true">
<filterchain>
<replacetokens>
<token key="tstamp" value="${build.TimeSign}" />
</replacetokens>
</filterchain>
</copy>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/functions.tpl" tofile="${puremvc.templates.dir}/${puremvc.framework.name}/delegateFunctions.tpl" overwrite="true">
</copy>
</target>
<target name="log" depends="insertTimstamp">
<if>
<equals arg1="${log.output}" arg2="true" />
<then>
<record name="${log.file.name}.txt" action="start" append="${log.append.to.file}" />
</then>
</if>
</target>
<target name="clean" depends="log, create-puremvc-directories">
</target>
<target name="createPuremvcProject" depends="createConstance,createModuleInterface,createModuleFacade,createModuleScript,createModule,createPreModelCommand,createPreViewCommand,createStartUpCommand,createVo,createDelegate,createProxy,createMediator">
</target>
<target name="create-puremvc-directories">
<echo>${log.create.puremvc.directories.message}</echo>
<mkdir dir="${project-uri}/modules/${module.dir}" />
<mkdir dir="${project-uri}/modules/${module.dir}/${controller.dir}" />
<mkdir dir="${project-uri}/modules/${module.dir}/${model.dir}" />
<mkdir dir="${project-uri}/modules/${module.dir}/${model.dir}/${vo.dir}" />
<mkdir dir="${project-uri}/modules/${module.dir}/${view.dir}" />
<mkdir dir="${project-uri}/modules/${module.dir}/${view.dir}/${components.dir}" />
</target>
<target name="createConstance">
<echo>
${log.facade.constance.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/Constance.tpl" tofile="${project-uri}/modules/${module.name}/${Constance.name}.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="facade.name" value="${facade.name}" />
<token key="Constance.name" value="${Constance.name}" />
<token key="copy" value="${copy}" />
<token key="tstamp" value="${build.TimeSign}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createModuleInterface
================================= -->
<target name="createModuleInterface">
<echo>
${log.module.interface.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/IModule.tpl" tofile="${project-uri}/modules/IUnloadModule.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<!--<token key="module.dir" value="${module.dir}" />-->
<token key="IModule.name" value="${IModule.name}" />
<token key="copy" value="${copy}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createModuleFacade
================================= -->
<target name="createModuleFacade">
<echo>
${log.facade.moduleFacade.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/facade.tpl" tofile="${project-uri}/modules/${module.name}/${facade.name}.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="facade.name" value="${facade.name}" />
<token key="Constance.name" value="${Constance.name}" />
<token key="copy" value="${copy}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createModuleScript
================================= -->
<target name="createModuleScript">
<echo>
${log.facade.moduleScript.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/Module_Script.tpl" tofile="${project-uri}/modules/${module.name}/${module.name}_Script.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="facade.name" value="${facade.name}" />
<token key="Constance.name" value="${Constance.name}" />
<token key="copy" value="${copy}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createModule
================================= -->
<target name="createModule">
<echo>
${log.module.module.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/Module.tpl" tofile="${root.dir}/${module.name}.mxml" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="module.name" value="${module.name}" />
<token key="com.dir" value="${com.dir}" />
<token key="domain.dir" value="${domain.dir}" />
<token key="project.dir" value="${project.dir}" />
<token key="copy" value="${copy}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createDisposeCommand
================================= -->
<target name="createDisposeCommand">
<echo>
${log.facade.disposeCommand.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/DisposeCommand.tpl" tofile="${project-uri}/modules/${module.name}/${controller.dir}/DisposeCommand.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="module.name" value="${module.name}" />
<token key="Constance.name" value="${Constance.name}" />
<token key="copy" value="${copy}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createPreModelCommand
================================= -->
<target name="createPreModelCommand">
<echo>
${log.facade.preModelCommand.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/PreModelCommand.tpl" tofile="${project-uri}/modules/${module.name}/${controller.dir}/PreModelCommand.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="Proxy.name" value="${Proxy.name}" />
<token key="copy" value="${copy}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createPreViewCommand
================================= -->
<target name="createPreViewCommand">
<echo>
${log.facade.preViewCommand.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/PreViewCommand.tpl" tofile="${project-uri}/modules/${module.name}/${controller.dir}/PreViewCommand.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="copy" value="${copy}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createStartUpCommand
================================= -->
<target name="createStartUpCommand">
<echo>
${log.facade.startUpCommand.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/StartUpCommand.tpl" tofile="${project-uri}/modules/${module.name}/${controller.dir}/StartUpCommand.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="copy" value="${copy}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createVo
================================= -->
<target name="createVo">
<echo>
${log.facade.vo.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/Vo.tpl" tofile="${project-uri}/modules/${module.name}/${model.dir}/${vo.dir}/${Vo.name}.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="copy" value="${copy}" />
<token key="Vo.name" value="${Vo.name}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createDelegate
================================= -->
<target name="createDelegate">
<echo>
${log.facade.delegate.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/Delegate.tpl" tofile="${project-uri}/modules/${module.name}/${model.dir}/${Delegate.name}.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="copy" value="${copy}" />
<token key="Delegate.name" value="${Delegate.name}" />
<token key="destination.name" value="${destination.name}" />
<!--<token key="Delegate.function.name" value="${Delegate.function.name}" />
<token key="param" value="${param}" />
<token key="type" value="${type}" />
<token key="delegatefunctions" value="${delegatefunctions}" />-->
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createMultifunction.name
================================= -->
<target name="createfunction.name">
<echo>createFunction</echo>
<mkdir dir="${puremvc.templates.dir}/delegateFunctions" />
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/blank.tpl" tofile="${puremvc.templates.dir}/${puremvc.framework.name}/delegateFunctions/${Delegate.function.name}.txt" />
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/DelegateFunctions.tpl" tofile="${puremvc.templates.dir}/${puremvc.framework.name}/delegateFunctions/${Delegate.function.name}.txt">
<filterchain>
<replacetokens>
<token key="Delegate.function.name" value="${Delegate.function.name}" />
<token key="param" value="${param}" />
<token key="type" value="${type}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createMultifunction.name
================================= -->
<target name="createMultifunction.name">
<echo>${log.create.mulitple.sequences}</echo>
<foreach list="${Delegate.function.name}" target="createfunction.name" param="Delegate.function.name" delimiter="," />
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/blank.tpl" tofile="${puremvc.templates.dir}/${puremvc.framework.name}/delegateFunctions/functions.tpl">
</copy>
</target>
<!-- =================================
target: copyDelegateFunctios
================================= -->
<target name="copyDelegateFunctios" depends="createMultifunction.name" description="description">
<concat destfile="${puremvc.templates.dir}/${puremvc.framework.name}/functions.tpl">
<fileset dir="${puremvc.templates.dir}/${puremvc.framework.name}/delegateFunctions">
</fileset>
</concat>
</target>
<!-- =================================
target: createProxy
================================= -->
<target name="createProxy">
<echo>
${log.facade.proxy.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/Proxy.tpl" tofile="${project-uri}/modules/${module.name}/${model.dir}/${Proxy.name}.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="copy" value="${copy}" />
<token key="Proxy.name" value="${Proxy.name}" />
</replacetokens>
</filterchain>
</copy>
</target>
<!-- =================================
target: createMediator
================================= -->
<target name="createMediator">
<echo>
${log.facade.proxy.message}
</echo>
<copy file="${puremvc.templates.dir}/${puremvc.framework.name}/Mediator.tpl" tofile="${project-uri}/modules/${module.dir}/${view.dir}/${components.dir}/${Mediator.name}.as" overwrite="${overwrite.files}">
<filterchain>
<replacetokens>
<token key="namespace" value="${namespace}" />
<token key="module.dir" value="${module.dir}" />
<token key="copy" value="${copy}" />
<token key="Mediator.name" value="${Mediator.name}" />
</replacetokens>
</filterchain>
</copy>
</target>
</project>
项目属性文件:
project.properties
################################# PROJECT PROPERTIES ##################################
project.name =KingdeeEAS
root.dir =F:/workspace/KingdeeEAS/src
com.dir =com
domain.dir =kingdee
project.dir =eas
################################# CREATING SEQUENCES ##################################
sequence.name =Login, Logout, RegisterUser, UnregisterUser
################################### CREATING Project ######################################
module.dir =testmodule
module.name =TestModule
Vo.name =TestVo
facade.name =TestFacade
Constance.name =TestConstance
IModule.name =IUnloadModule
Delegate.name =TestDelegate
destination.name =TestService
Proxy.name =TestProxy
Mediator.name =TestModuleMediator
#################### ENABLE REGISTER REMOTE CLASS META-DATA IN VO #####################
vo.remoteClass =false
############################### READ / WRITE MANAGEMENT ###############################
overwrite.files =false
prompt.on.delete =true
################################## LOG MODIFICATIONS ##################################
log.output =true
################################ PROTECTED PROPERTIES #################################
namespace =${com.dir}.${domain.dir}.${project.dir}
project-uri =${root.dir}/${com.dir}/${domain.dir}/${project.dir}
config文件夹下面有两个属性文件:
log.properties:
################################### LOG PROPERTIES ####################################
log.file.name =puremvcgen-log
log.append.to.file =true
#################################### LOG MESSAGES #####################################
log.message =@Invoking Puremvcgen on [${project.name}]
log.generating.message =Generating file(s):
log.facade.constance.message =${log.message}--> ${log.generating.message} ${Constance.name}.as
log.module.interface.message =${log.message}--> ${log.generating.message} IUnloadModule.as
log.facade.moduleFacade.message =${log.message}--> ${log.generating.message} ${facade.name}.as
log.facade.moduleScript.message =${log.message}--> ${log.generating.message} ${module.name}_Script.as
log.module.module.message =${log.message}--> ${log.generating.message} ${module.name}.mxml
log.facade.disposeCommand.message =${log.message}--> ${log.generating.message} DisposeCommand.as
log.facade.preModelCommand.message =${log.message}--> ${log.generating.message} PreModelCommand.as
log.facade.preViewCommand.message =${log.message}--> ${log.generating.message} PreViewCommand.as
log.facade.startUpCommand.message =${log.message}--> ${log.generating.message} StartUpCommand.as
log.facade.vo.message =${log.message}--> ${log.generating.message} ${Vo.name}.as
log.facade.proxy.message =${log.message}--> ${log.generating.message} ${Proxy.name}.as
log.facade.delegate.message =${log.message}--> ${log.generating.message} ${Delegate.name}.as
log.create.puremvc.directories.message =${log.message}--> ${log.generating.message} generate dirs
puremvc.properties属性文件:
####################################### VERSION #######################################
cairngen.author =Jixin_Huang 2010.6.25
cairngen.uri =http://blog.csdn.net/xiaoxin888888/puremvcgen
################################ TEMPLATE PROPERTIES ##################################
puremvc.templates.dir =build/templates
################################ CAIRNGORM DIRECTORIES ################################
puremvc.framework.name =puremvc
controller.dir =controller
model.dir =model
vo.dir =vo
delegate.dir =business
view.dir =view
components.dir =components
########################### CAIRNGORM VALUE OBJECT TEMPLATE ###########################
vo.registerSuffix =RegisterClass
templates文件夹子文件夹puremvc下面的Constance.tpl模板文件:
@copy@
package @namespace@.modules.@module.dir@
{
public class @Constance.name@
{
//constance
public static const STARTUP:String="startup";
public static const NAME:String="@facade.name@";
public static const DISPOSE:String="dispose";
public function @Constance.name@()
{
}
}
}
Delegate.tpl:
@copy@
package @namespace@.modules.@module.dir@.model
{
import mx.rpc.IResponder;
import mx.rpc.remoting.RemoteObject;
public class @Delegate.name@
{
private var _iresponder:IResponder;
private var service:RemoteObject;
public function @Delegate.name@(iresponder:IResponder)
{
_iresponder=iresponder;
service=new RemoteObject();
service.destination="@destination.name@";
service.showBusyCursor=true;
}
}
}
DisposeCommand.tpl
@copy@
package @namespace@.modules.@module.dir@.controller
{
import @namespace@.modules.@module.dir@.@Constance.name@;
import org.puremvc.as3.multicore.interfaces.ICommand;
import org.puremvc.as3.multicore.interfaces.INotification;
import org.puremvc.as3.multicore.patterns.command.SimpleCommand;
public class DisposeCommand extends SimpleCommand implements ICommand
{
public function DisposeCommand()
{
//TODO: implement function
super();
}
override public function execute(notification:INotification):void
{
facade.removeCommand(@Constance.name@.STARTUP);
/*facade.removeCommand(UserConstance.LOGIN);
facade.removeMediator(LoginFormMediator.NAME);
facade.removeProxy(UserProxy.NAME);*/
}
}
}
Facade.tpl:
@copy@
package @namespace@.modules.@module.dir@
{
import @namespace@.modules.@module.dir@.controller.StartUpCommand;
import org.puremvc.as3.multicore.interfaces.IFacade;
import org.puremvc.as3.multicore.patterns.facade.Facade;
public class @facade.name@ extends Facade implements IFacade
{
public function @facade.name@(key:String)
{
//TODO: implement function
super(key);
}
public static function getInstance(key:String):@facade.name@
{
if (!instanceMap[key])
instanceMap[key]=new @facade.name@(key);
return instanceMap[key] as @facade.name@;
}
public function startUp(app:Object):void
{
sendNotification(@Constance.name@.STARTUP, app);
}
public function removeCoreMVC():void
{
removeCommand(@Constance.name@.STARTUP);
removeCore(@Constance.name@.NAME);
}
override protected function initializeController():void
{
super.initializeController();
registerCommand(@Constance.name@.STARTUP, StartUpCommand);
}
}
}
file-header-copy.tpl:
/************************************************************************
**
** 金蝶国际软件集团
** @author 记新
** @time 2010-07-21
**
************************************************************************
*/
functions.tpl:
IModule.tpl:
@copy@
package @namespace@.modules
{
public interface IUnloadModule
{
function dispose():void;
}
}
Mediator.tpl:
@copy@
package @namespace@.modules.@module.dir@.view.components
{
import org.puremvc.as3.multicore.interfaces.IMediator;
import org.puremvc.as3.multicore.interfaces.INotification;
import org.puremvc.as3.multicore.patterns.mediator.Mediator;
public class @Mediator.name@ extends Mediator implements IMediator
{
public static const NAME:String="@Mediator.name@";
public function @Mediator.name@(viewComponent:Object=null)
{
//TODO: implement function
super(NAME, viewComponent);
}
/************************************************************************
*
* We will add eventListener here and set defaults at the beginning
*
************************************************************************
*/
override public function onRegister():void
{
super.onRegister();
}
/************************************************************************
*
* List all notifications that you are interested in
*
************************************************************************
*/
override public function listNotificationInterests():Array
{
var array:Array=super.listNotificationInterests();
return array;
}
/************************************************************************
*
* Handle the notifications that you are interested in
*
************************************************************************
*/
override public function handleNotification(notification:INotification):void
{
switch (notification.getName())
{
default:
super.handleNotification(notification);
break;
}
}
}
}
Module_Script.tpl:
@copy@
import @namespace@.modules.@module.dir@.@Constance.name@;
import @namespace@.modules.@module.dir@.@facade.name@;
import mx.events.FlexEvent;
private var facade:@facade.name@;
protected function onCreateComplete(event:FlexEvent):void
{
facade=@facade.name@.getInstance(@Constance.name@.NAME);
facade.startUp(this);
}
public function removeAll():void
{
facade.removeCoreMVC();
}
public function dispose():void
{
removeAll();
}
Module.tpl:
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
layout="absolute"
width="100%"
height="100%"
creationComplete="onCreateComplete(event)"
implements="@namespace@.modules.IUnloadModule">
<!--@author Jixin_Huang -->
<fx:Declarations>
</fx:Declarations>
<fx:Script source="@com.dir@/@domain.dir@/@project.dir@/modules/@module.dir@/@module.name@_Script.as"/>
</mx:Module>
PreModelCommand.tpl:
@copy@
package @namespace@.modules.@module.dir@.controller
{
import @namespace@.modules.@module.dir@.model.@Proxy.name@
import org.puremvc.as3.multicore.interfaces.ICommand;
import org.puremvc.as3.multicore.interfaces.INotification;
import org.puremvc.as3.multicore.patterns.command.SimpleCommand;
public class PreModelCommand extends SimpleCommand implements ICommand
{
public function PreModelCommand()
{
//TODO: implement function
super();
}
override public function execute(notification:INotification):void
{
facade.registerProxy(new @Proxy.name@());
}
}
}
PreViewCommand.tpl:
@copy@
package @namespace@.modules.@module.dir@.controller
{
import org.puremvc.as3.multicore.interfaces.ICommand;
import org.puremvc.as3.multicore.interfaces.INotification;
import org.puremvc.as3.multicore.patterns.command.SimpleCommand;
public class PreViewCommand extends SimpleCommand implements ICommand
{
public function PreViewCommand()
{
//TODO: implement function
super();
}
override public function execute(notification:INotification):void
{
}
}
}
Proxy.tpl:
@copy@
package @namespace@.modules.@module.dir@.model
{
import mx.rpc.Responder;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import org.puremvc.as3.multicore.interfaces.INotification;
import org.puremvc.as3.multicore.interfaces.IProxy;
import org.puremvc.as3.multicore.patterns.proxy.Proxy;
public class @Proxy.name@ extends Proxy implements IProxy
{
public static const NAME:String="@Proxy.name@";
public function @Proxy.name@(data:Object=null)
{
//TODO: implement function
super(NAME, data);
}
}
}
StartUpCommand.tpl:
@copy@
package @namespace@.modules.@module.dir@.controller
{
import org.puremvc.as3.multicore.interfaces.ICommand;
import org.puremvc.as3.multicore.patterns.command.MacroCommand;
public class StartUpCommand extends MacroCommand implements ICommand
{
public function StartUpCommand()
{
//TODO: implement function
super();
}
override protected function initializeMacroCommand():void
{
addSubCommand(PreModelCommand);
addSubCommand(PreViewCommand);
}
}
}
Vo.tpl:
@copy@
package @namespace@.modules.@module.dir@.model.vo
{
[Bindable]
/*[RemoteClass(alias="")]*/
public class @Vo.name@
{
public function @Vo.name@()
{
}
}
}
- puremvc多核版生成器
- 多核puremvc
- 理解多核PureMVC的pipes
- 运用PureMVC多核技术和Module构建系统
- puremvc
- pureMVC
- pureMVC
- puremvc
- pureMVC
- PureMVC
- PureMVC
- pureMVC java版搭建流程
- 基于Pipe的PureMVC Flex框架的多核共享消息技术
- 基于Pipe的PureMVC Flex框架的多核共享消息技术
- 基于Pipe的PureMVC Flex框架的多核共享消息技术
- 多核
- 多核
- 初探PureMVC
- 第一篇
- Common Photo Star
- 循环遍历xml返回xml的方法
- 超级面板皮肤及其使用
- 倒影类
- puremvc多核版生成器
- java String之我见
- MD5加密算法
- jhk
- 通过url传参给flash
- [电子商务]支付网关如何启动运营的对话
- 初来乍到
- 修改MYSQL表类型
- 做人处事的原则--西点22条军规