触发源头_从源头建造

Spring框架于2002年末发布,以简化J2EE(现为JavaEE)的开发。 在过去的八年中,Spring通过提供Java社区框架或功能(如易于理解和使用的Spring Security,Spring MVC,事务管理,Spring批处理和Spring集成)成功完成了此任务。 Spring希望使Java开发人员的生活更加轻松和高效。 为了实现这一目标,Spring创建了一个名为Spring Roo的开发工具。

Spring Roo(请参阅参考资料 )是用于Java技术的可扩展的,基于文本的开源RAD工具。 它是用于创建和管理基于Spring的应用程序的强大资源。 这是任务说明:

Roo的使命是从根本上可持续地提高Java开发人员的生产力,而又不损害工程的完整性或灵活性。

该任务被转换为基于Java技术的工具,该工具可在项目的整个生命周期中持续提高生产率,并且不会将开发人员锁定在特定的方法上。 Spring Roo使用流行,成熟的成熟库,例如Spring框架,Java Persistence API,Java Server Pages(JSP),Spring Security,Spring Web Flow,Log4J和Maven。 Roo生成的应用程序使用Bean验证(JSR-303)和依赖注入(JSR-330)之类的标准,并遵循SpringSource认证的最佳实践应用程序体系结构。

使用Spring Roo,您只需在Roo shell上键入命令,就可以添加和配置JPA,Spring MVC,Spring Security,使用Log4j进行日志记录,测试框架(如JUnit和Selenium,Solr,JMS,电子邮件)等功能。 使用Roo添加这些功能节省的时间提高了开发人员的工作效率。 Roo无法编写业务逻辑,但可以管理基础结构或应用程序的配置。

Roo是开发时工具,这意味着应用程序在运行时独立于Roo。 由于Roo在运行时不存在,因此它没有任何性能或内存开销。 这样可以确保您不受Spring Roo的束缚,并且可以随时通过几次按键将Roo从项目中删除。

本文讨论使用Roo Shell构建简单的Web应用程序,并演示如何在Windows或Ubuntu计算机上构建Spring Roo源代码。

Roo Shell入门

您可以通过加载Roo shell并使用命令与之交互来管理和配置应用程序。 Roo Shell是一个制表符完成,上下文感知,提示提供的命令Shell。 您可以使用hint命令向Spring Roo询问您的下一个逻辑操作。 Roo足够聪明,可以通过确定应用程序的上下文来建议下一步操作。 例如,假设您已经使用entity命令创建了一个实体。 然后,您键入hint命令。 Roo会告诉您应使用field将字段添加到实体中。 此功能减轻了Roo的概念重量,使其成为出色的学习工具。 您可以按照Roo helphint命令创建完整的应用程序,而无需参考其文档。

先决条件

在开始使用Roo之前,请确保已安装以下组件:

  1. Java V6 JDK
  2. Apache Maven V2.0.9或更高版本

安装Spring Roo

要安装独立的Spring Roo:

  1. 您可以下载Roo独立命令行外壳程序,也可以使用内置的Roo SpringSource工具套件(STS)插件。 我建议将两者下载并一起使用,因为STS为基于Spring的应用程序提供了超过Eclipse的许多附加功能。
    1. Spring Roo
    2. SpringSource工具套件
  2. 将Spring Roo解压缩到您选择的位置。
  3. 设置环境变量:
    1. 在Windows计算机上,将%ROO_HOME%/ bin添加到路径,其中ROO_HOME是解压缩后的Roo文件的路径。
    2. 在* nix机器上,创建指向$ ROO_HOME / bin / roo.sh的符号链接

      (例如sudo ln -s ~/spring-roo-1.xx/bin/roo.sh /usr/bin/roo

建立应用程式

为了向您展示Roo的强大功能,让我们创建一个简单的企业会议应用程序。 会议应用程序具有两个实体:“发言人”和“谈话”。 一位发言人可以发表一个或多个演讲,而演讲只能由一位演讲者进行。 简单的类图如图1所示。

图1.类图演讲者讲话
显示说话者元素(名字,姓氏等)的图与Talk元素(标题和描述)相关联

创建应用程序:

  1. 打开您的操作系统命令行外壳。
  2. 使用mkdir命令创建一个名为Conference的目录。
  3. 进入外壳中的会议目录。
  4. 输入roo 。 此命令将启动Roo shell,如清单1所示。
清单1.启动Roo shell
C:\Users\xebia\demo\conference>roo
    ____  ____  ____
   / __ \/ __ \/ __ \
  / /_/ / / / / / / /
 / _, _/ /_/ / /_/ /
/_/ |_|\____/\____/       1.1.B.RELEASE [rev 793f2b0]
Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo>

现在我们位于Roo Shell中,我们将使用Roo的hint命令来指导我们完成后续步骤。 hint建议使用project创建一个新的基于Maven的Spring project (请参见清单2)。

清单2.在Roo shell中使用hint
Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo> hint
Welcome to Roo! We hope you enjoy your stay!
Before you can use many features of Roo, you need to start a new project.

To do this, type ’project’ (without the quotes) and then hit TAB.

Enter a --topLevelPackage like ’com.mycompany.projectname’ (no quotes).
When you're finished completing your --topLevelPackage, press ENTER.
Your new project will then be created in the current working directory.

Note that Roo frequently allows the use of TAB, so press TAB regularly.
Once your project is created, type ’hint’ and ENTER for the next suggestion.
You're also welcome to visit http://forum.springframework.org`for Roo help.
roo>

hint命令所建议,我们将使用project命令创建一个项目。 此命令具有一个必需的属性topLevelPackage ,用于指定根软件包的名称。 除了必需的属性外,我们还将使用两个可选属性: java (用于指定Java版本)和projectName (用于指定项目的名称)。 输入以下内容:

project --topLevelPackage com.dw.roo.conference --java 6 --projectName conference

此命令将创建一个Maven V2管理的基于Spring的项目,如以下输出所示:

Created C:\Users\xebia\demo\conference\pom.xml
	Created SRC_MAIN_JAVA
	Created SRC_MAIN_RESOURCES
	Created SRC_TEST_JAVA
	Created SRC_TEST_RESOURCES
	Created SRC_MAIN_WEBAPP
	Created SRC_MAIN_RESOURCES\META-INF\spring
	Created SRC_MAIN_RESOURCES\META-INF\spring\applicationContext.xml
	Created SRC_MAIN_RESOURCES\log4j.properties

再次键入hint ,要求Roo进行下一步操作。 这次它建议建立持久性机制。 在外壳上键入persistence setup ,然后按三下Tab键 。 您将获得选项- provider 。 按H ,然后按Tab键以完成“ HIBERNATE”。 在提供程序之后,请按Tab键选择数据库,您将看到许多选项。 因为我们使用Hibernate作为提供程序,所以我们不能选择非关系数据库,例如Google App Engine。 现在,我们将使用HYPERSONIC_IN_MEMORY数据库。

persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY

还有其他可选属性,例如用户名和密码,我们目前不需要。

现在我们已经建立了持久性机制,我们将再次使用hint命令。 这次我们被告知要使用entity命令创建实体。 Entity用于创建实际的域对象,并具有一个必需的属性class ,用于指定实体的名称。 除了需要--class属性,我们将使用--testAutomatically属性,这对于一个域对象创建集成测试。 我们创建两个实体:Speaker和Talk。

entity --class ~.domain.Speaker –testAutomatically
	
	entity --class ~.domain.Talk --testAutomatically

我已经使用~作为项目顶级程序包的占位符。

Entity将创建一个灵活的,功能丰富的JPA实体。 创建的实体将具有JPA @Entity,其ID,版本,EntityManager和无参数构造函数。 生成的实体将具有诸如persist,merge,remove,flush,count,find和findById等方法。如果查看此命令的输出,除了创建Java文件(对于演讲者和谈话),还创建了以* Roo _ *。aj结尾的AspectJ文件。 这些* Roo _ *。aj称为“类型间声明(ITD)”,“ Mixins”或“简介”。 Roo使用ITD作为代码生成工件。 ITD允许Roo在单独的编译单元中生成代码,但是ITD在编译时被组合到同一个编译类中。 AspectJ类型间声明用于自动生成ID和版本字段,以及域类中持久性字段的获取器和设置器。

再次使用hint提供了使用field命令将字段添加到实体的建议。 让我们向Speaker实体添加一些字段:

field string --fieldName firstname --class ~.domain.Speaker --notNull 
	field string --fieldName lastname --notNull 
	field string --fieldName email --unique --notNull 
	field string --fieldName organization 
	field date --fieldName birthdate --type java.util.Date --past --notNull 
	field number --type java.lang.Long --fieldName age --min 25 --max 60

--class选项使我们可以指定要向其添加字段的类。

field命令可用于指定带有--max--min等选项的特定于JavaBean验证的注释。它还可用于指定带有--fetch ,-- --column--unique等。对于日期字段,您还可以指定日期是过去的日期还是将来的日期,如上所用。 使用field ,您不必记住这些注释。

现在让我们向Talk实体添加一些字段:

field string --fieldName title --class ~.domain.Talk --notNull 
	field string --fieldName description --notNull --sizeMax 4000

到目前为止,我们已经创建了实体并向其中添加了字段,但是我们尚未指定它们之间的关系。 演讲者和对话之间的关系为ONE_TO_MANY(即,一位演讲者可以进行任意数量的对话)。 这是使用field完成的,如下所示:

field set --fieldName talks --type ~.domain.Talk --class \
~.domain.Speaker --cardinality ONE_TO_MANY
	
	field reference --fieldName speaker --type ~.domain.Speaker \
--class ~.domain.Talk –-notNull

现在,我们将要为会议应用搭建一个Web层。 这是使用controller命令完成的。 生成控制器和所有相关Web工件的最便捷方法是使用controller all

controller all --package ~.web

首次使用controller命令还将为项目添加其他依赖项,例如Spring MVC和Tiles。 由于必须下载所有依赖项(如果您的Maven存储库中不存在这些依赖项),因此可能需要花费一些时间来运行。 此命令还显示了Roo的功能之一:仅在需要时才添加依赖项。

接下来,我们将使用logging命令设置log4j:

logging setup --level INFO --package ALL_SPRING

退出Roo shell之前,我们应该做的最后一件事是运行在我们使用entity命令指定--testAutomatically时生成的集成测试。 要从外壳中运行测试,请输入perform tests

Roo将调用委托给Maven来运行测试,因此perform tests等同于mvn test命令。 通过键入q退出shell或quit

这些命令将创建功能齐全的会议应用程序。 接下来,我们将运行此应用程序。

要运行该应用程序,请键入mvn tomcat:run ,它将启动码头服务器。 打开网络浏览器,然后转到http:// localhost:8080 / conference /。 您将看到图2所示的屏幕。

图2.会议应用程序主页
在浏览器中的会议应用程序的屏幕快照,菜单项在左侧下方,内容在右侧

您可以单击“ 创建新的发言人”来创建会议发言人。 您还可以通过单击列出所有发言人来查看,编辑和删除用户。 同样,您可以创建一个对话,但不能在创建发言人之前。

这是一个简单的应用程序,但是它显示了您可以在几分钟内轻松地从头开始创建一个新的基于Spring的Web应用程序。 在本系列的第二部分中,我将向您展示如何使用不同的Roo功能和附加组件来构建应用程序。

现在,我们已经创建了一个简单的应用程序,我将展示如何在Windows和Ubuntu上构建Spring Roo源代码。

从源代码构建Spring Roo

Spring Roo V1.1.0是最新的生产发行版,在V1.1.1发行版下正在进行积极的开发。 出于某些原因,您可能需要从源代码构建Spring Roo:

  1. Spring Roo不提供每夜构建,因此,如果您想要Spring Roo的最新功能,则需要构建Spring Roo的源代码。
  2. 您想为Spring Roo项目做任何形式的开发。
  3. 您想为Spring Roo编写一个附加组件。
  4. 您只想尝试一下Spring Roo代码,看看它是如何实现或编写的。

结果

在本节结束之前,您将能够在Windows和* nix系统上成功运行最新的Spring Roo源代码的Maven构建。 您将能够使用最新的Spring Roo,并能够在Eclipse或STS(SpringSource Tool Suite)中导入Spring Roo项目。

在Ubuntu上构建Spring Roo源代码的过程

在Ubuntu(和其他* nix系统)上构建源代码很容易。 只需遵循以下步骤:

  1. 安装Git ,一个分布式源代码控制管理系统。 要将其安装在Ubuntu系统上,请输入sudo apt-get install git-core gitk
  2. 通过键入git clone git://git.springsource.org/roo/roo.git使用Git签出Spring Roo。 您将在主目录中看到一个roo文件夹,其中包含所有Roo源代码。
  3. GnuPG允许对您的数据和通信进行加密和签名,并具有通用的密钥管理系统和用于各种公钥目录的访问模块。 Roo使用GPG自动签署构建输出。
  4. gpg --list-secret-keys命令gpg --list-secret-keys 。 输出应类似于清单3。
    清单3. gpg list命令的结果
    C:\dev\roo-sourcecode\roo>gpg --1ist-secret-keys
    C:/Users/xebia/AppData/Roaming/gnupg\secring.gpg
    sec 2048R/2F96093B 2010-07-03
    uid                shekhar (spring-roo) <shekhargu1ati84@gmai1.com>
    ssb 2048R/B77E5C63 2010-07-03
    C:\dev\roo-sourcecode\roo>_
  5. 如果看不到输出,则必须首先创建一个密钥。 使用gpg –gen-key ,它将gpg –gen-key您完成一系列创建密钥的步骤。 然后,验证使用gpg –list-secret-keys生成了新创建gpg –list-secret-keys
  6. 接下来,您需要将密钥发布到公共密钥服务器。 记下–list-secret-keys显示的sec密钥ID。 就我而言,它的密钥ID为2F96093B。 通过gpg –keyserver hkp://pgp.mit.edu –send-keys 2F96093B将您的公共密钥推送到密钥服务器(在末尾更改密钥ID)。
  7. 某些Roo模块要求使用OSGi形式的JAR。 也就是说,他们没有可识别OSGi的清单。 Roo有一个特殊的项目,称为wrapping ,可以将普通的JAR转换为OSGi JAR。 在尝试与Roo配合使用之前,您需要运行包装器。 没有包装,您将看到错误,指出Maven无法找到org.springframework.roo.wrapping.some_module 。 要创建包装的JAR,请在Roo检出根目录中键入:
    cd wrapping
    	mvn clean install 
    	cd..
  8. 接下来,运行mvn clean install命令。 (应该在系统上安装Maven V2。如果没有,请立即安装。)​​每次构建源代码时,Maven都会提示您输入密钥的密码/口令(在创建GPG密钥时输入了口令)。 输入密码,然后按Enter 。 构建源代码将花费几分钟。

在Windows上构建Spring Roo源代码的过程

与Ubuntu相比,在Windows上构建源代码要困难一些。 跟着这些步骤:

  1. 安装Git ,一个分布式源代码控制管理系统。 要开始该过程,您需要在Windows计算机上安装Git。 我在Windows计算机上安装了msysGit 。 如果您已经安装了Git,则可以跳过此步骤。 安装msysGit时,它将询问安装位置。 它将打开命令提示符并开始触发许多命令。 这将持续一分钟左右。 安装之后,您将看到一个清单4所示的屏幕。
    清单4.安装msysGit
    { test "$bindir/" = "$execdir/" || \
                   { rm -f "$execdir/git.exe" && \
                   test -z "" &amp;&amp; \
                   ln "$bindir/git.exe" "$execdir/git.exe" 2>/dev/null || \
                   cp "$bindir/git.exe" "$execdir/git.exe"; } ; } && \
            { for p in git-add.exe git-annotate.exe git-apply.exe git-archive.exe 
    git-bisect--helper.exe git-blame.exe git-branch.exe git-bundle.exe git-cat-file.exe 
    git-check-attr.exe git-check-ref
                    rm -f "$execdirf$p" && \
                    ln "Sexecdir/git.exe" "Sexecdir/$p" 2>/dev/null ll \
                    ln -s "git.exe" "$execdir/$p" 2>/dev/null || \
                    cp "Sexecdir/git.exe" "$execdir/$p" Il exit; \
             done; } && \
            { test x"git-renote-https.exe git-renote-ftp.exe \
    git-renote-ftps.exe" = x ll \
                    { for p in git-remote-https.exe git-remote-ftp.exe \
    git-remote-ftps.exe; do \
                    rm -f "$execdir{$p" && \
                    ln "Sexecdir/git-remote-http.exe" "$execdir/$p" 2>/dev/null ll \
                    ln -s “git-renote—http.exe" "$execdir/$p" 2>/dev/null || \
                    cp "Sexecdir/git-remote-http.exe" "Sexecdir/$p" ll exit; \
              done; } ; } && \
            ./check_bindir "z$bindir" "z$execdir" "Sbindir/git—add.exe"
    
    -------------------------
    Hello, dear Git developer.
    
    This is a minimal MSYS environment to work on Git.
    
    You are in the git working tree, and all is ready for you to hack.
    
    Welcome to msysGit
    
    Run 'git help git' to display the help index.
    Run 'git help <command>' to display help for specific commands.
    Run '/share/msysGit/add-shortcut.tcl' to add a shortcut to msysGit.
    
    It appears that you installed msysGit using the full installer.
    To set up the Git repositories, please run /share/msysGit/initialize.sh
  2. 设置Git环境变量。 必须在Windows路径中设置Git。 在Windows路径中添加$ {MSYSGIT} \ msysgit \ bin和{MSYSGIT} \ msysgit \ mingw \ bin,其中$ {MSYSGIT}是msysGit的安装位置。 打开一个新的命令提示符,然后输入git 。 您将在图7中看到输出。
    清单5. Git命令提示符
    C:\>git
    usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
               [-pl--paginate|I--no-pager] [--no-replace-objects]
               [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
               [-c name=value
               [--help] COMMAND [ARGS]
    The most commonly used git commands are:
       add        Add file contents to the index
       bisect     Find by binary search the change that introduced a bug
       branch     List, create, or delete branches
       checkout   Checkout a branch or paths to the working tree
       clone      Clone a repository into a new directory
       commit     Record changes to the repository
       diff       Show changes between commits, commit and working tree, etc
       fetch      Download objects and refs from another repository
       grep       Print lines matching a pattern
       init       Create an empty git repository or reinitialize an existing
       log        Show commit logs
       merge      Join two or more development histories together
       mv         Move or rename a file, a directory, or a symlink
       pull       Fetch from and merge with another repository or a local bra
       push       Update remote refs along with associated objects
       rebase     Forward-port local commits to the updated upstream head
       reset      Reset current HEAD to the specified state
       rm         Remove files from the working tree and from the index
       show       Show various types of objects
       status     Show the working tree status
       tag        Create, list, delete or verify a tag object signed with GPG
    
    See ’git help COMMAND’ for more information on a specific command.
    C:\>_
  3. 使用Git签出Spring Roo。 在此步骤中,您将通过使用Git签出最新的源来创建Spring Roo的本地克隆。 打开命令提示符,然后转到要检出Spring Roo的位置。 输入git clone git://git.springsource.org/roo/roo.git 。 等待直到完成。 这将在您签出Spring Roo的位置创建一个名为roo的新文件夹。
  4. 下载并安装Windows版GPG 。 GnuPG是GNU用于安全通信和数据存储的工具。 它可以用来加密数据和创建数字签名。 Roo使用GPG自动签署构建输出。 安装GPG后,请使用gpg –list-secret-keys 。 您应该看到类似于清单6的输出。
    清单6. gpg list命令的结果
    C:\dev\roo-sourcecode\roo>gpg --1ist-secret-keys
    C:/Users/xebia/AppData/Roaming/gnupg\secring.gpg
    sec 2048R/2F96093B 2010-07-03
    uid                shekhar (spring-roo) <shekhargu1ati84@gmai1.com>
    ssb 2048R/B77E5C63 2010-07-03
    C:\dev\roo-sourcecode\roo>_
  5. 如果看不到输出,则意味着您首先需要创建一个密钥。 使用gpg –gen-key 。 它将引导您完成一系列创建密钥的步骤。 然后,使用gpg –list-secret-keys验证是否生成了新创建gpg –list-secret-keys
  6. 将您的密钥发布到公共密钥服务器。 记下–list-secret-keys显示的sec密钥ID。 就我而言,它的ID为2F96093B。 通过gpg –keyserver hkp://pgp.mit.edu –send-keys 2F96093B将您的公钥推送到密钥服务器。 (最后更改密钥ID)。
  7. 首先构建包装项目。 某些Roo模块要求使用OSGi形式的JAR。 也就是说,他们没有可识别OSGi的清单。 Roo有一个特殊的项目,称为wrapping ,可以将普通的JAR转换为OSGi JAR。 在尝试与Roo配合使用之前,您需要运行包装器。 没有包装,您将看到错误,指出Maven无法找到org.springframework.roo.wrapping.some_module 。 要创建包装的JAR,请在Roo检出根目录中键入:
    cd wrapping
    	mvn clean install 
    	cd..
  8. 运行mvn clean install命令。 (应该在您的系统上安装Maven V2。如果没有,请立即安装。)​​每次生成源代码时,它都会提示您输入密钥的密码/口令(在创建GPG密钥时输入了口令)。 输入密码,然后按Enter 。 构建源代码将花费几分钟。
  9. 在系统设置中设置环境变量ROO-DEV,该环境变量应指向Roo项目中的bootstrap文件夹。 您还应该将此变量添加到PATH环境变量中,如图3所示。
图3.设置ROO-DEV变量
屏幕截图显示了“编辑系统变量”输入框

您现在可以使用Roo的最新开发版本。 打开命令提示符,创建一个名为mkdir roo_dev_demo的新文件夹,然后启动roo-dev命令。 您将看到清单7中所示的屏幕。

清单7. ROO-DEV外壳
C:\Users\xebia\demo\conference>roo
    ____  ____  ____
   / __ \/ __ \/ __ \
  / /_/ / / / / / / /
 / _, _/ /_/ / /_/ /
/_/ |_|\____/\____/       1.1.B.RELEASE [rev 793f2b0]
Welcome to Spring Roo. For assistance press TAB or type "hint" then hit ENTER.
roo>

您可能需要更新Spring Roo源代码,以便使用最新版本的Spring Roo。 打开命令提示符,然后转到Spring Roo的源代码位置。 触发git pull命令,该命令会将所有远程更改拉入本地克隆,然后执行mvn clean install以构建更新的源。

结论

至此,我们已经构建了一个简单的Web应用程序,甚至没有打开我们的编辑器或引用任何文档。 该应用程序使您可以对实体执行CRUD操作。 我希望您看到Roo为Java开发人员带来了可观的生产力提高。 它使用了大多数开发人员已经知道的成熟且稳定的技术。

第2部分中 ,我们使我们的应用程序更安全,添加国际化支持,添加消息传递支持(SMTP和JMS)以及自定义应用程序。 我们还将研究Roo的数据库反向工程功能,并将该应用程序转换为功能全面的企业应用程序。


翻译自: https://www.ibm.com/developerworks/java/library/os-springroo1/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
事件触发控制是指通过对事件的监测和判断,来实现对系统的最优控制。在某些特定的应用场景中,通过事件的触发来进行控制,可以提高系统的效率和性能。 事件触发控制主要包含两个方面的内容:事件的触发和最优控制。事件的触发是指通过对系统内部或外部事件的检测和判断,来确定何时触发相应的控制策略。系统中的事件可以是不同的触发条件,如时间、状态、信号等。当事件被触发时,系统会执行相应的控制策略,以达到最优控制目标。 最优控制是指通过对系统状态和事件的分析,采取最合适的控制策略,使系统在满足一定约束条件的情况下,达到最优的性能指标。最优控制可以通过数学建模和优化算法来实现,其中包括最优化问题的求解和优化算法的设计。 事件触发控制可以应用于各种领域,例如工业控制、交通管理、电力系统等。在工业控制领域,通过监测设备状态和生产过程中的事件,来调整生产参数和控制策略,可以提高生产效率和降低能耗。在交通管理领域,通过检测道路状况和交通流量,来调整信号灯设置和交通规划,可以改善交通拥堵和提升通行效率。在电力系统中,通过监测电网状态和负荷需求,来调整输电线路和发电机组的运行方式,可以提高电力系统的稳定性和响应速度。 综上所述,事件触发控制是一种通过对事件的触发和最优控制策略的实施来提高系统性能和效率的控制方法。通过合理设置事件触发条件和采取最优控制策略,可以在不同领域中实现系统的最优运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值