- 浏览: 853466 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
贝塔ZQ:
读取excel文件,插件pageoffice也可以实现。
POI读写Excel文件(转)- - -
springmvc-freemarker:
java开源项目源码实例下载
java开源项目源代码 -
xuning2516:
第一种方法是个死循环啊。。。
Java NIO 拷贝文件(使用compact) -
u012046856:
...
SessionFactory.getCurrentSession与openSession的区别 -
Season_Wang:
赞一个呀,挺实用的
java swing 中的FileDialog
http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0708ahadian/index.html
大多数业务都建立在信息管理系统的基础上,而这些信息管理系统主要的底层基础设施又是基于存储在一个或多个关系数据库中的数据。这些系统由一些软件程序组成,这些软件程序专门用于信息处理,并且是以 Java 之类的托管语言实现的。
作为一种以封装、继承和多态为特征、易于使用、基于面向对象的语言,Java 一方面用于实现信息处理程序的计算和逻辑方面,另一方面则用于访问和操纵关系数据。Java 按照对象 来定义信息,而数据库则使用 行 。对象是其所属类的惟一实例,在物理上,对象之间互有区别。同样,关系数据库中的行也是惟一的,它们由主键值标识。另一方面,对象是独立的,只要还被一个或多个其它对象引用,它就继续存在着。而行被包含在表当中,当被从表中删除时,也就随之消失。
因此,虽然对象与行在很多方面相似,但对象对于模块化编程的内在价值在于可伸缩性、可扩展性和高效的代码维护,这是通过 对象化(objectization) 抽 象关系行的设计基础。我们把对象化定义为这样一种过程:将面向对象的基本概念(封装、继承和多态)引入到使用 SQL 执行的指令式的、内联的数据查询实践。简言之,对象化就是创建无缝对象的过程,使用的方法可以通过纯面向对象范例执行数据库操作(包括创建、替换、更新和 删除)。
对于通过对象化来编程式地访问和操纵关系数据,最流行的方式是通过一些 API 和包装器,这些 API 和包装器提供了一个或多个编写为文本字符串的 SQL 语句。整个关系数据处理都是基于这些封装的 SQL 语句的,它们是程序逻辑的重要组成部分。但是,这些 SQL 语句对于 Java 语言不是透明的,不能享受编译时优化和语义及语法验证的好处 —— 更不用说诸如内容辅助之类可以在底层设计和实现过程中节省大量时间的设计时特性了。
因此,在提高程序员的效率和生产率时,一个主要的挑战是将关系数据转换为可通过自然的面向对象方式无缝使用的对象,从而编写底层代码。要实现这种转换,需 要很好地理解如何安排数据访问 API 调用的顺序,并从技术上理解底层的数据访问编程模型(例如 JDBC),此外,还需要具备优秀的编程技能并能够将软件(尤其是它的数据访问层)拆分成多个模块化部分。
pureQuery 项目为数据库应用开发人员提供了一套基于 GUI 且易用的方法,它能够显著提高应用程序的设计和实现阶段的生产效率。通过将关系数据自动转换为 Java 对象的实现方式,方便了用户对数据的访问和操纵。将关系数据转换为 Java 对象后,就可以很自然的通过面向对象编程范例无缝地利用这些对象来编写业务逻辑和底层代码。通过将查询语言与 Java 本身相集成,pureQuery 可以代替传统的 JDBC 编程。
本文对 pureQuery 进行了概述,并提供一个详细的场景,以展示 pureQuery 如何显著提高程序员的生产率。
![]() ![]() |
![]()
|
pureQuery 是一个基于 Eclipse 的、可插拔的组件,它可以与 Eclipse 集成开发环境(IDE)无缝集成。它自动提供设计和运行时方式,可将关系数据作为对象管理。这种设计使开发人员可以指定一个数据库连接(例如使用 DB2®),然后使 Eclipse Java 项目能够识别底层的数据库工件(例如表、存储过程等)。在建立连接并完成所有数据库工件的自动发现之后,用户可以通过 GUI 直观地将任何底层关系表实体转换成 Java 对象。这是通过自动生成相关 SQL 语句和自动创建封装这些语句的父 Java 对象来实现的。然后,还可以在一个自然的 Eclipse IDE 编程环境中,使用充分集成的 SQL 和 Java 编辑功能对生成的 Java 对象和其中包含的 SQL 语句进行进一步定制。
Java 编辑器与 SQL 的紧密集成可以提高编程生产率,提供无缝的设计时体验,并在编写 Java 代码时简化 SQL 编码。编辑器集成包括设计时编译过程中完全支持的语义和语法验证、内容辅助、语法着色以及在 Java 中动态、选择性执行 SQL,当出错时,像处理 Java 错误一样在错误面板中进行标记。
而且,设计和运行时之间的紧密联合,使得 SQL 语句可在设计时运行。运行 SQL 语句时,将考虑所使用的全部主机变量和参数,以预览结果集,并自动回滚执行 SQL 语句导致的副作用。
此外,在设计时,可通过启动 Visual Explain 对选择的 SQL 语句进行性能分析,为查询请求的优化器实现提供可视化表示。查询请求被拆分成不同的部分,每个部分用图标表示。Visual Explain 还包括关于查询优化器所考虑和选择的数据库对象的信息。Visual Explain 提供了对查询实现的详细表示,在设计时就可以从集成的 SQL-Eclipse Java 编辑器中轻松找到造成昂贵成本的原因。
pureQuery 系统提供三种不同的方式来将关系访问层转换成基于对象的模型。
-
数据库驱动的对象化(Database-driven objectization,DDO):
pureQuery 的最常见用法是选择一个表,然后生成用于数据访问和操纵(即创建、替换、更新、删除)的对象。此时,pureQuery 生成基于面向对象的类和接口,用于在所选表上执行 CRUD 操作。它还生成一个特殊的类,这个类可用于对创建的对象进行单元测试。实际上,这是一个表到 Java 的转换,其中,根据底层表的特征生成以 Java 为中心的 CRUD 操作。在 概览 小节中我们将对此作详细讨论。 -
查询驱动的对象化(Query-driven objectization,QDO):
通常,需要从一组已有的数据库查询语句(SQL)实现应用程序构建。这时就需要基于已有的查询语句生成对象层次,这些查询语句又可用于构建底层的应用程 序。实际上,这是一个 SQL 到 Java 的转换,此转换过程将查询语句无缝地转换为以 Java 为中心的对象。在 pureQuery 系统中,只需单击选中一个查询语句,利用直观的 GUI 方式(弹出的上下文菜单),就可以很容易地生成相关的对象类层次。该系统实际上利用作为解析查询语句的结果的元数据(或者通过它所维护的来自底层数据库连 接的元数据)自动生成所需的对象类。 -
对象-关系映射(ORM):
有 时候已经存在表示一个关系表的 bean 类,但是还不存在该类与所需的数据库表之间的实际链接。pureQuery 凭借其丰富的内容辅助基础设施提供了一种直观的机制,可以执行类名到底层数据库中给定表名之间的一对一映射,并能够将类的受保护(或公共)变量映射到表中 的列。实际上,这是一个 Java 到 SQL 的转换,此转换过程将以 Java 为中心的实体无缝地转换成基于 SQL 的 CRUD 操作。
有时候,已经存在一个 bean 类,其中包含所有需要的关系映射元数据,但是这个类所映射的底层物理表却丢失了。pureQuery 提供了直观的 GUI 方式来根据 bean 类生成所需的 DDL 语句,以创建所需的底层数据库工件(即表和列)。
![]() ![]() |
![]()
|
接下来的小节将介绍 pureQuery 的最常见用法,包括 pureQuery 对象化过程 小节中介绍的 DDO 过程、QDO 过程和 ORM 过程 。最后,对 pureQuery 与 Eclipse Java Editor 的紧密集成和它所提供的附加特性作一个概述。这包括设计与运行时之间的联合,从而测试 SQL 语句的运行。
在尝试下面的场景之前,应确保已安装以下软件:
- DB2 for Linux®, UNIX®, and Windows® Version 8.0 或更高版本,以及附带的 SAMPLE 数据库
- Developer Workbench Version 9.5
- pureQuery plug-in Version 1.0
在本文 参考资料 小节中可以找到用于下载 DB2 和 IBM Viper Developer V9.5 Open Beta (含 Developer Workbench 和 pureQuery 插件)的链接。
在本节中,我们研究一个简单的雇员场景,该场景的目的是以面向对象范例编程式地访问和操纵雇员数据。
下面的步骤将创建一个可感知 pureQuery 的 Java 项目,该项目将 DB2 SAMPLE 数据库中的 Employee 表转换成一个对象模型,后者可在任何 Java 应用程序中以一种自然的、面向对象的方式使用。
使用 pureQuery 开发数据库应用程序的设计模式由以下基本步骤组成:
- 创建一个 Eclipse Java 项目
- 将 Java 项目连接到一个数据库连接上
- 通过自动 pureQuery 代码生成功能将底层连接中的所有给定数据库表工件转换成 Java 对象
- 通过直观的编辑、测试运行和调试进一步定制
步骤 1. 在 Eclipse IDE 中创建 Java 项目
在创建 Java 项目时,应确保创建 source 和 bin 文件夹。将项目命名为 “Personnel”。
步骤 2. 为 Personnel Java 项目启用 pureQuery 支持
- 右键单击 Personnel
Java 项目,在弹出菜单中选择
Add pureQuery Support
。
图 1. 为 Eclipse Java 项目启用 pureQuery 支持
要查看放大后的图像,请单击 这里 。
这时会打开 Add pureQuery Support 向导,通过该向导可以为 Java 项目启用 pureQuery。
- 该向导的第一页包括一些常规选项。可以保留默认值。最重要的是,要确保选中 Import required pureQuery JAR files into project
旁边的复选框。这是因为 pureQuery 有它自己特定的设计和运行时 JAR 文件,必须将这些文件包括在 Java 项目中。
图 2. Add pureQuery Support 向导:pureQuery 常规选项页面
单击 Next 进入 Add pureQuery Support 向导的下一个页面。
- 接下来创建数据库连接。该页面显示所有已发现的数据库连接。从列表中选择一个数据库连接。如果不存在连接,该向导将指导您创建一个新的连接。对于这个例子,选择 SAMPLE
数据库,Employee 表就在这个数据库中。
图 3. Add pureQuery Support 向导:pureQuery 数据库连接页面
- 单击 Finish 按钮关闭该向导,进入提供 pureQuery 支持的 Personnel Java 项目。
步骤 3. 将关系工件转换为 Java 对象并自动生成 pureQuery 代码
建立数据库连接后,这个 Java 项目就可以感知数据库了。这将导致特定连接上的所有数据库工件都会在 IDE 的 Database Explorer 树型视图中自动显示,如图 4 所示。
图 4. 包含 SAMPLE 数据库中所有工件的 Database explorer
要查看放大后的图像,请单击 这里 。
pureQuery 的威力在于,它能够自动生成将底层关系数据库表工件转换成 Java 对象所需的代码。只需选中所需的数据库工件,然后启动 pureQuery Code Generation 向导,就可以自动生成代码。
下面的步骤将关系工件转换成 Java 对象,并自动生成 pureQuery 代码:
- 对于本例,从数据库浏览器树型视图中选择 Employee
表节点,然后在该节点上单击鼠标右键,如图 5 所示。
图 5. 将 Employee 表转换为 Java 对象:自动生成 pureQuery 代码
要查看放大后的图像,请单击 这里 。
- 从弹出菜单中选择 Generate the pureQuery code
选项。
这时会打开 Generate pureQuery Code 向导,如图 6 所示。
图 6. pureQuery Code Generation 向导
- 指定 Java Bean General 选项。
如 图 6 所示,Generate pureQuery Code for a Table 向导的第一页包含一些用于描述一个表示 Employee 表的 bean 类的属性。可以保留其中的默认值。我们来研究其中一些属性:
- Source folder :该字段指定用于保存生成的 Java 文件的物理位置。可以保留默认值: Personnel/Src 。
-
Name
:
该字段表示生成的 Java Bean 的名称。默认情况下,这个 bean 的名称与之前在 Database Explorer
中选择的、为之生成 pureQuery 代码的数据库表工件(在此即为
Employee)的名称相同。可以更改这个名称,但最后生成的文件中会有一个标注,以表明这个 bean 与相应的数据库表工件之间的映射。
对于这个例子,将这个名称改为 MyEmployee 。于是,生成的标注为:
@Table(name="EMPLOYEE", schema="DB2ADMIN")
- Generate annotated-method interface for table : 这将导致生成一个 Interface 文件,该文件包含数据库 Create/Update/Delete/Insert 方法。这些方法实际上为前面 1.0 小节描述的数据库行的对象化提供了便利。当构建项目时,还会生成该接口的一个默认的实现,其中包含所有需要的 SQL 语句。注意,默认的接口名称也是可以更改的。
- Generate test class for annotated-method interface for table :这将导致生成一个特殊的类,这个类可用于对 bean 接口进行单元测试。这个测试类的名称可以更改。
-
Generate test class for Inline-method style
:
这将导致生成一个包含显式的内联 SQL 语句的文件,默认情况下,这些 SQL 语句将被生成为接口实现的方法。通过一个简化的
API,可以以一致的方式使用 SQL 来查询各个数据源。可以对应用程序进行配置,使其静态地运行数据库
SQL,而不会影响编程或用户体验。测试类的名称也可以修改。
- 注意,无论出现上述哪一种情况,都可以通过选择 Generate JUnit test cases 复选框,请求系统自动生成一组 JUnit 测试实例。
- Include Connection information and user name :该选项可以将连接字符串和用户名包括在所有生成的测试类中。
- 指定如何定义生成的 bean 变量。
在该向导的第二个页面(如图 7 所示),可以指定生成 public 还是 protected 字段,是否包含 public 访问方法。
图 7. 定义 bean 字段
还可以更改 bean 变量的名称(默认情况下,bean 变量的名称与 Employee 表列的名称相同)。注意,对于变量名与其所映射的列的名称不相同的每个变量,会生成一个专门的标注。标注的格式如下所示:
@Column(name="name of the table column")
该标注被放在变量声明之前。例如,在这个例子中,将 Bean 字段名称 firstnme 改为 firstnme_new 。于是,Java 文件中生成的、放在声明之前的标注为:@Column(name="FIRSTNME") protected string firstnme_new
对于其他所有不同于表列名的变量名也是如此(见 图 9 )。
对于这个例子,确保选中 Protected Fields with Public accessor methods 。还可以将变量类型改为与其映射的列数据的类型不相同的类型。
- 指定所生成的 SQL 语句的风格。
在该向导的最后一个页面中(见图 8),可以选择生成不同风格的 SQL 语句。对于这个例子,选择 Generate all SQL statements 。
图 8. 生成不同风格的 SQL 语句
- 单击 Finish 生成 pureQuery 代码。
单击 Finish 按钮时,该向导除了生成以下 5 个完成 pureQuery 对象化过程 小节中描述的 DDO 过程的主要文件以外,还生成一个实用包。我们来看看生成的工件有哪些:
-
构成对象层次的文件
-
MyEmployee.java
(见图 9):这是主 bean 类。这个类包含一些变量及其相应的访问方法,这些变量与 Employee 表中的列存在 1 对 1 的映射。
图 9. 表示 Employee 表的 Java bean 类
要查看放大后的图像,请单击 这里 。
-
MyEmployeeData.java
(见图 10):这是抽象数据库访问层的文件,用于数据查询和操纵。它包含一些抽象方法,实现这些方法的惟一目的是在底层表上执行 CRUD 操作。
图 10. 包含用于 CRUD 操作的接口的 MyEmployeeData.java
要查看放大后的图像,请单击 这里 。
-
MyEmployeeDataImpl.java
(见图 11):这是前面提到的 MyEmployeeData 接口的默认实现。该实现包含封装所有用于数据访问和操纵的 SQL 语句的方法。
请注意: 该文件当且仅当项目构建时生成。可以通过从主 Eclipse IDE 菜单中设置 Build Automaticallyoption of the Project 来构建项目,或者由开发人员手动构建项目。
图 11. 包含接口方法实现的类
要查看放大后的图像,请单击 这里 。
-
MyEmployeeDataTest.java
(见图 12):这是由 pureQuery 系统生成的默认类,这个类可用于单元测试。它包含一个 static main 函数,该函数实际上用于测试实现类(即 MyEmployeeDataTest.java)中所有方法的运行。
图 12. 生成的类可用于单元测试
要查看放大后的图像,请单击 这里 。
-
MyEmployeeInLineSample.java
(见图 13):当且仅当 Generate Sample Class With Inline method call syntax
选项被选中时,才会生成该文件。实际上,这将通过 pureQuery 的运行时 API 使用内联风格的方法调用测试所有生成的 SQL 语句。
图 13. 自动生成的测试类可以内联运行生成的 SQL 语句
要查看放大后的图像,请单击 这里 。
-
MyEmployee.java
(见图 9):这是主 bean 类。这个类包含一些变量及其相应的访问方法,这些变量与 Employee 表中的列存在 1 对 1 的映射。
-
实用包
除了前一小节提到的那些文件以外,pureQuery 系统还生成一个实用包,其中包含一个名为 SampleUtil.java 的文件(见图 14)。该文件包含很多常见的静态实用函数(例如获取连接、打印等),例如,生成的测试类(即 MyEmployeeDataTest.java)可以使用这些函数打印输出结果,以及创建底层数据库连接。
图 14. 自动生成的示例类包含很多常见的静态实用函数
要查看放大后的图像,请单击 这里 。
![]() ![]() |
![]()
|
给定一个或多个 SQL 语句,通过 pureQuery 可以直观地为关系数据访问层自动创建对象层次。下面的逐步讲解将演示 pureQuery 仅根据给定的 SQL 语句创建对象模型的功能。
- 打开 DDO 案例场景 小节中创建的 Eclipse Java Personnel 项目。
- 在项目中添加一个新的 Java 文件,并在其 Main 方法中包括以下 SQL 语句:
SELECT BIRTHDATE, BONUS, COMM, EDLEVEL, EMPNO, FIRSTNME, HIREDATE, JOB, LASTNAME, MIDINIT, PHONENO, SALARY, SEX, WORKDEPT from EMPLOYEE
- 在 SQL 语句中的任何位置单击鼠标右键,从弹出的上下文菜单中选择
pureQuery Assist -> Generate SQL Bean
选项。这将打开
Create Bean for a SQL Result Set
向导。
图 15. 根据 SQL 语句创建 bean
要查看放大后的图像,请单击 这里 。
- 在第一个页面中,为生成的 Bean 类指定一个名称。对于这个例子,输入 “MySQLEmployee” 并单击 Next
按钮。
图 16. 指定根据 SQL 语句生成的 Bean 类的名称
- 在该向导的第二个页面中,可以指定如何定义 bean 字段。对于这个例子,可以保留默认值。还可以将变量类型改为与它所映射的列的数据类型不同的类型(见图 17)。
图 17. 指定 bean 字段
- 单击 Finish 按钮。这将生成 bean 文件 MySQLEmployee.Java。
为了创建接口和默认实现类,可以像下一小节描述的那样使用 pureQuery 的 ORM 过程。
![]() ![]() |
![]()
|
给定一个 Java bean 类,通过 pureQuery 可以直观地将该类的成员映射为底层数据库表中的任何给定的关系实体。
注意需要根据表模式和相关规则 来进行设计时映射。例如,虽然在运行时可以将 double 类型的变量映射到 XML 类型的表列,但是这可能导致不可预测的运行时结果,并因此而产生错误。下面的例子演示了这种映射。
- 打开 DDO 例子 中创建的 Eclipse Java Personnel 项目。
- 为了演示 ORM 特性,可以使用一个已有的 bean,也可以使用表示数据库中某个表的 Java 用户定义类。在这个例子中,我们使用一个已有的 bean,所以删除 MyEmployee.Java 之外的所有生成的 Java 文件。
图 18. 将一个 bean 映射到一个关系表
要查看放大后的图像,请单击 这里 。
- 在编辑器中打开 MyEmployee.Java 类,在类名的上面添加以下标注:
@Table (name = "EMPLOYEE", Schema = "DB2ADMIN")
该标注执行类名与底层数据库表之间的实际映射。
- 在要映射的每个字段/变量的上面添加以下注释。在这个例子中,我们只映射 BIRTHDAY 和 FIRSTNME 字段,因此在 BIRTHDAY 变量名之上添加
@Column (name = "BIRTHDAY")
,在 FIRSTNME 变量名之上添加@Column (name = "FIRSTNME")
(见图 19)。
图 19. 标注创建主机变量与表列之间的映射
要查看放大后的图像,请单击 这里 。
- 在编辑器中,在 MyEmployee 类中的任何地方单击鼠标右键,从弹出的上下文菜单中选择 pureQuery Assist -> Generate pureQuery CODE 选项。这将打开 Generate pureQuery Code for a Table 向导,该向导最终将生成相关的 pureQuery 代码(包括接口文件、测试类、实现代码等)。
注意,由于 Java bean 类已经存在,该向导的 Bean Field 页面被省略,没有提供给用户。
![]() ![]() |
![]()
|
pureQuery 的内容辅助以及与 Java 编辑器的紧密集成
pureQuery 提供的最强大的一个特性是 SQL 与 Java 在同一个编辑器中的无缝集成。这种紧密集成为 Java 和 SQL 提供了一组相同的设计时特性,包括代码辅助、语法验证和着色,以及 SQL 语句的语义验证。
代码辅助提供:
-
SQL 语句完成(SQL statement completion )
当输入 SELECT 之类的 SQL 关键字时,或者在期望一个操作符时,就会出现一个上下文窗口,其中显示用于完成语句的可能的方式。
图 20. 语句完成
要查看放大后的图像,请单击 这里 。
-
内容辅助(Content Assist)
显示一组可能的实体名称,与一个给定的关系工件(例如一个表、模式等)相关,或者当需要在一个语句中指定参数时显示一组 Java 主机变量(见图 21 和 22)。
图 21. 内容辅助
要查看放大后的图像,请单击 这里 。
图 22. 主机变量内容辅助
要查看放大后的图像,请单击 这里 。
-
快速修复(Quick Fix)
提供一种内联动态语法验证机制,通过这种机制可以检测并快速修复拼写错误之类的错误。
图 23. 快速修复:Select 关键字被误拼为 Selct
要查看放大后的图像,请单击 这里 。
-
自动发现数据库定义
(见图 24 和 25),通过该特性,只需点击选择任何一个 bean
成员名称,就可以快速跳转到数据库浏览器中的数据库定义(例如,点击映射一个表名的类名就会跳转到数据库浏览器中的表节点,点击映射列名的变量名就会跳转
到数据库浏览器中的列节点,依此类推)。
图 24. 点击选择 bean 类中的成员名称
要查看放大后的图像,请单击 这里 。
图 25. 点击选择将跳转到数据库浏览器
要查看放大后的图像,请单击 这里 。
![]() ![]() |
![]()
|
pureQuery 的设计时功能当中最优越的一个特性是它能在编辑器中动态地运行任何给定的 SQL 语句。这个独特的特性使得在设计时能够动态执行 SQL 语句并允许回滚。
在 Java 编辑器中,要查看这个特性,只需在任何生成的 SQL 语句上单击鼠标右键。从上下文菜单中选择 pureQuery Assist -> Run SQL (见图 26)。 这将执行该 SQL 语句,并在 Eclipse IDE 的 Data View 中显示结果集(见图 27)。
要查看放大后的图像,请单击 这里 。
图 27. Data View 中显示在设计时执行 SQL 的结果
要查看放大后的图像,请单击 这里 。
相关推荐
根据提供的IBM软件产品清单及其描述,我们可以总结出以下关键知识点: ### 1. IBM Passport Advantage Program IBM的Passport Advantage计划是一种为客户提供软件许可、支持和技术服务的方式。在这个列表中,所有的...
电动汽车充电站选址定容优化:基于MATLAB建模求解与成本最小化策略,电动汽车充电站选址定容优化:基于MATLAB的最优规划模型及初学者指南,电动汽车充电站的最优选址定容MATLAB程序 以规划期内充电站的总成本 (包括投资、运行和维护成本)和网损费用之和最小为目标,考虑了相关的约束条件,构造了电动汽车充电站最优规划的数学模型。 从34个位置中,选取7个充电站地址,进行选址优化 关键词:电动汽车;充电站;选址和定容 程序注释清晰,适合初学者学习 ,电动汽车; 充电站选址定容; MATLAB程序; 规划模型; 成本优化; 网损费用; 初学者学习; 程序注释清晰,基于MATLAB的电动汽车充电站选址定容优化程序:成本最小化与约束条件下的选址策略
基于源荷双重不确定性的虚拟电厂日前鲁棒经济调度优化模型基于MATLAB+CPLEX仿真平台求解,基于源荷双重不确定性的虚拟电厂日前鲁棒优化经济调度策略,MATLAB代码:计及源-荷双重不确定性的电厂日前鲁棒优化调度 关键词:电厂 微网调度 鲁棒调度 源荷不确定性 日前经济调度 参考文档:《含电动汽车和风电机组的发电厂竞价策略_杨甲甲》参考其鲁棒模型的化简求解部分,即附录中的鲁棒问题化简求解的全过程; 《Virtual power plant mid-term dispatch optimization》参考燃气轮机、储能部分模型 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个电厂或者微网单元的日前鲁棒经济调度的模型,考虑了光伏出力和负荷功率的双重不确定性,采用鲁棒优化法处理不确定性变量,构建了电厂鲁棒优化调度模型。 具体来看,不确定性考虑的是目标函数以及约束条件中均含有不确定变量,设置鲁棒系数可以调节多重不确定结果,化简的过程也很清晰,程序实现效果良好,一行一注释。 ,关键词:虚拟电厂; 鲁棒优化调度; 源荷不确定性; 日前经济调度; 微网调度; 光伏出力
基于遗传算法的储能优化配置研究:成本模型分析与最优运行计划求解(含风光机组),基于遗传算法的储能优化配置:成本模型分析与最优运行计划求解(含风光机组),MATLAB代码:基于遗传算法的储能优化配置(可加入风光机组) 关键词:储能优化配置 遗传算法 储能充放电优化 参考文档:无明显参考文档,仅有几篇文献可以适当参考 仿真平台:MATLAB 平台采用遗传算法实现求解 优势:代码注释详实,适合参考学习,非目前烂大街的版本,程序非常精品,请仔细辨识 主要内容:建立了储能的成本模型,包含运行维护成本以及容量配置成本,然后以该成本函数最小为目标函数,经过遗传算法求解出其最优运行计划,并通过其运行计划最终确定储能容量配置的大小,求解采用的是遗传算法,求解效果极佳,具体可以看图 ,关键词:MATLAB代码;遗传算法;储能优化配置;储能充放电优化;成本模型;运行维护成本;容量配置成本;最优运行计划;求解效果。,基于遗传算法的储能优化配置MATLAB代码:精细优化与成本最小化研究
如本文所描述,设计模式经典实现、三种其他实现方式以及六个方向的问题优化的详细代码
高性能DSP28335驱动的移相全桥同步整流技术:高效电源输出与轻量级结构设计,基于DSP28335的高效同步整流电源系统:移相全桥驱动,低损耗输出近94%效率,铝基板+平面变压器设计挑战与低成本方案探索,自研DSP28335+移相全桥+纯程序实现同步整流。 目前在DSP固有损耗2W的情况下,输出120W效率接近94%。 就是铝基板+平面变压器玩起来太贵,不好做小批量,335现在也很贵。 基于035的低成本版本近期开始设计~~~ 数字电源demo,输入18-32V,输出12V15A,伍尔特电感+平面变压器+板上平面变压器辅助电源,隔离半桥驱动+隔离采样,用于技术交流和样机平台搭建。 采用上下叠板架构,上板为4层DSP控制板,下板为单层功率铝基板,散热极佳。 ,自研DSP28335; 移相全桥; 纯程序同步整流; 效率接近94%; 低成本版本设计; 数字电源demo; 上下叠板架构; DSP控制板; 散热。,自研DSP28335控制下的同步整流技术优化:效率接近94%的电源解决方案
PPT模板 -星际郎中:守护星际生命.pptx
19考试真题最近的t41.txt
Xilinx公司推出的7系列FPGA中的GTX/GTH收发器是用于高速串行通信的收发器模块,能够实现数据的高速串行传输。本资料为Xilinx提供的用户手册ug476_7Series_Transceivers
GearTrain 提供了灵活的推理框架, 支持视频、图片推理方式。基于 GearTrain 用户可像齿轮一样自由组合各种Pipeline,实现各种推理任务
一个测试的网页布局,作为备份
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用
内蒙古自治区公共数据资源登记管理暂行办法.docx
MATLAB下基于遗传算法的有序充放电优化策略:实现电动汽车充电费用最低与负荷峰谷平衡,基于遗传算法的电动汽车有序充放电优化策略:精英自适应混合算法实现负荷均衡与费用最小化,MATLAB代码:基于遗传算法的电动汽车有序充放电优化 关键词:遗传算法 电动汽车 有序充电 优化调度 参考文档:《精英自适应混合遗传算法及其实现_江建》算法部分;电动汽车建模部分相关文档太多,自行搜索参考即可; 仿真平台:MATLAB 主要内容:代码主要做的是利用遗传算法对电动汽车有序充电进行优化;优化目标包括充电费用最低,充电时间达到要求(电动汽车充到足够的电)考虑电动汽车充电对电网负荷的影响,使负荷峰谷差最小。 分别利用传统、精英和变异遗传算法进行对比算法优劣,比较迭代结果,优化变量为起始充电时刻 ,关键词:MATLAB代码; 遗传算法; 电动汽车; 有序充电; 优化调度; 充电费用; 充电时间; 电网负荷; 精英自适应混合遗传算法; 迭代结果; 优化变量。,基于遗传算法的电动汽车有序充放电优化调度策略研究
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款
STM32开发:IIR带阻滤波器设计与实现,含巴特沃斯和切比雪夫滤波器MATLAB程序,STM32开发中IIR带阻滤波器的实现与巴特沃斯滤波器设计详解:附MATLAB程序,STM32开发 IIR带阻滤波器 STM32实现IIR无限冲击响应带阻滤波器设计,巴特沃斯滤波器,代码工整,自编代码,注释详细,赠送巴特沃斯和切比雪夫IIR带阻滤波器MATLAB程序 ,STM32开发; IIR带阻滤波器; 无限冲击响应; 巴特沃斯滤波器; 自编代码; 注释详细; MATLAB程序,STM32中IIR带阻滤波器设计与实现
项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用
包含输入输出,可视化案例。聚类算法
基于PLC的地铁排水控制系统设计:梯形图程序、接线图与IO分配组态全解析,基于PLC的地铁排水控制系统设计:梯形图程序、接线图与IO分配组态全解析,No.505 基于PLC的地铁排水控制系统设计电气控制程序 带解释的梯形图程序,接线图原理图图纸,io分配,组态画面 ,505; PLC地铁排水控制; 电气控制程序; 梯形图程序; 接线图原理图; IO分配; 组态画面,PLC驱动的地铁排水系统设计:电气控制程序详解及图解