`
agile_boy
  • 浏览: 562832 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Grails 1.1 正式版发布

阅读更多
  在比较漫长的期待之后(期间经历了Grails被SpringSource收购和Groovy1.6助速的利好消息),Grails 1.1终于跟我们广大的Grailers见面了,正如Grails的Roadmap所描述,此次的发布新增不少的人性化的特性,闲话少说,让我们一起来对Grails 1.1的新特性,先睹为快,以下只是主要内容的摘录和简译,详细请参考原文:http://www.grails.org/1.1+Release+Notes

GORM--期待已久了:)

独立的GORM
GORM现在不再依赖Grails 1.1了,只需要带有命名空间的Spring配置来设置必要的Hibernate SessionFactory就好了:
<gorm:sessionFactory base-package="org.grails.samples" 
                     data-source-ref="dataSource"
	             message-source-ref="messageSource">
   <property name="hibernateProperties">
        <util:map>
             <entry key="hibernate.hbm2ddl.auto" value="update"/>
         </util:map>
   </property>
</gorm:sessionFactory>

上述示例将扫描"org.grails.samples"包,只要每个GORM实体被grails.persistence.Entity注释(annotation)就可以了:
@Entity
class Book {
    String title
}

更多信息参考在GRAILS_HOME/samples/petclinic-mvcSpring MVC petclinic示例。

更好的GORM事件支持
在以前的版本中,GORM已经支持beforeInsert, beforeUpdate和beforeDelete事件了,现在相对应的afterInsert, afterUpdate and afterDelete也完全支持了。

持久化原生类型集合(Persistence of Collections of Basic Types)
现在,GORM通过关联表(join table)的方式支持原生类型集合的持久化,象String, Integer等集合:
class Person {
   static hasMany = [nicknames:String]
}

持久化枚举类型集合
GORM提供对枚举类型集合的持久化:
enum VehicleStatus { OFF, IDLING, ACCELERATING, DECELARATING }
class Truck {
   static hasMany = [statuses:VehicleStatus]
}

只读的对象实例
通过read方法,领域对象实例可以以只读的方式加载:
def book = Book.read(1)

缺省的排序
关联关系(Associations)可以在类级别中声明一个缺省的排序:
class Book {
  String title
  static mapping = {
     sort "title"
  }
}

或者在关联级别(association level):
class Author {
    static hasMany = [books:Book]
    static mapping = {
              books sort:"title"
    }
}

批量读取(Batch Fetching)
GORM支持在类级别中使用ORM DSL来配置批量读取(优化的延迟加载):
class Book {
  String title
  static mapping = {
     batchSize 15
  }
}

或者在关联级别(association level):
class Author {
    static hasMany = [books:Book]
    static mapping = {
              books batchSize:15
    }
}

更好的动态查找器(Dynamic Finders)
现有的动态查找器中新增了InList后缀:
def groovyBooks = Book.findByAuthorInList(['Dierk Koenig', 'Graeme Rocher'])

动态查找器还可以使用查询缓存:
def books = Book.findByTitle("Groovy in Action", [cache:true] )

并且还支持悲观锁(pessimistic lock):
def books = Book.findByTitle("Groovy in Action", [lock:true] )

支持遗留系统的单向一对多映射
单向的One-to-many关联可以通过joinTable参数来更改映射到基础数据库的方式:
class Book {
 String title
 static belongsTo = Author
 static hasMany = [authors:Author]

static mapping = {
             authors joinTable:[name:"mm_author_books",  key:'mm_book_id' ] } 
} 

class Author { 
     String name static hasMany = [books:Book] 
     static mapping = { books joinTable:[name:"mm_author_books", key:'mm_author_id'] }
 }
更好的枚举类型支持
枚举类型现在可以通过特定的getId()方法来确定要持久化的状态信息。这是除了枚举名称或者顺序值(Enum name or the ordinal value)之外的另外一种持久化的机制。
enum Country {
   AUSTRIA('at'),
   UNITED_STATES('us'),
   GERMANY('de');

final String id

Country(String id) { this.id = id } }


插件(Plugins)--确实比以前便利了很多
全局插件
可以插件插件为所有应用所全局共享:
grails install-plugin webtest -global

多个插件仓库
现在,Grails支持配置多个插件存储仓库的能力,你只需要在USER_HOME/.grails/settings.groovy或者grails-app/conf/BuildConfig.groovy文件中包含要配置的仓库信息就可以了:
grails.plugin.repos.discovery.myRepository="http://svn.codehaus.org/grails/trunk/grails-test-plugin-repo" 
grails.plugin.repos.distribution.myRepository="https://svn.codehaus.org/grails/trunk/grails-test-plugin-repo"

Grails发现插件的命令(plugin discovery commands)比如list-plugin和install-plugin将会自动的根据所配置的仓库去工作,要发布一个插件到特定的仓库,你可以用repository参数来指定特定的仓库:
grails release-plugin -repository=myRepository

自动的解决插件依赖传递(Automatic Transitive Plugin Resolution)
插件将不再需要检测SVN,在应用第一次加载的时候,会根据插件的元数据自动的被安装。
此外插件的依赖也将会通过类似传递来解决

插件的范围和环境(Plugin Scopes and Environments)
Plugins可以通过指定环境(environment)或者预定义的构建来标识范围:
def environments = ['dev', 'test']
def scopes = [excludes:'war']

插件就会只加载那些environments中定义的,并将不会被打包到WAR文件中,这样开发类插件("development-only" plugins)就不会被打包到产品中.使用而不再产品中.

插件资源的排除(Plugin Excludes)
你可以在插件中描述那些要排除的某些资源:
def pluginExcludes = [
    'grails-app/controller/DemoController.groovy',
    'grails-app/domain/DemoDomain.groovy'
]

这将在最后打包插件的时候,排除那些test/demo的资源很有用.

使用插件进行模块化应用开发(Modular Application Development with Plugins)
一个应用可以从任何地方进行加载,甚至都没有安装都可以,要达到如此,你只需要在你的BuildConfig.groovy 文件中指定位置即可:
// Useful to test plugins you are developing.
grails.plugin.location.jsecurity = "/home/dilbert/dev/plugins/grails-jsecurity"

// Useful for modular applications where all plugins and // applications are in the same directory. 
grails.plugin.location.'grails-ui' = "../grails-grails-ui"

这样做在以下两处地方有好处:
   1. 你正在开发一个插件,但是想在真正的应用中测试,却又不想先打包再安装.
   2. 你将一个应用拆分成一系列插件和一个应用,而且这些都在同样的"super-project" 目录中

测试
测试框架
新的测试框架已经被集成到Grails 1.1了
测试框架增加了模仿所有通用类型比如controllers, domain class, tag libraries and url mappings,这样就可以更少更快的运行单元测试.
class SongTests extends grails.test.GrailsUnitTestCase {

void testMinimumDuration() { 
mockDomain(Song)
 def song = new Song(duration: 0) 
assertFalse 'validation should have failed', song.validate() 
assertEquals "min", song.errors.duration } 
}

数据绑定(Data Binding)--更灵活了
绑定属性的一个子集
更简单的绑定属性子集,以前的语法是:
person.properties = params

这将请求参数中所有数据绑定到person中。如果你不期望这样的行为,你可以使用bindData,而现在你要帮定属性的子集,只需要使用下标操作符(subscript operator)就可以了:
person.properties["firstName","lastName"] = params

要访问领域类属性的子集也是同样的语法:
person.properties["firstName","lastName"].each { println it }

集合类型的帮定
Grails支持象lists, sets和maps集合类型的绑定.
<g:textField name="books[0].title" value="the Stand" />
<g:textField name="books[1].title" value="the Shining" />
<g:textField name="books[2].title" value="Red Madder" />

Grails会根据指定的索引自动的初始化领域对象实例并且赋予相应的关联对象的值

脚手架(Scaffolding)
模板和动态脚手架
通过install-templates命令,可以安装模板,动态脚手架现在使用此模板来运行

支持更多的关联类型
脚手架支持多对多和单向的一对多关联关系

控制器(Controllers)--新特性还不错
更好的RESTful映射
你可以使用如下的REST URLs:
"/books"(resource:"book")

上述示例中URI "/books"将会自动的映射到BookController. 而HTTP的GET, PUT, POST 和DELETE 将会相应地被"show", "save", "update" and "delete"所处理.

处理重复的提交
通过同步令牌模式("Synchronizer Token Pattern"),Grails内建了对重复提交的处理。不过首先你要在form中声明一个令牌:
<g:form useToken="true">

然后通过withForm方法你可以检测出是重复的还是无效的请求:
withForm {
   // good request
}.invalidToken {
   // bad request
}

转发请求(Forwarding Requests)
作为重定向的一个替代,你可以通过forward方法来转发你的一个请求:
forward controller:"home", action:"index"

声明式的错误处理
你可以在你的UrlMappings文件中声明一个特定类型的异常处理:
"500"(controller:"errors", exception:IllegalArgumentException)


视图(Groovy Server Pages)--兼容性更好
在GSP中支持JSP的标签
GSP支持重用JSP的能力:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:formatNumber value="${10}" pattern=".00"/>

在GSP中也支持方法式的JSP标签调用 :
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
${fmt.formatNumber(value:10, pattern:".00")}

模板的命名空间(Template Namespace)
对于模板的使用来说,增加了一个特定的命名空间,因此一个如下所示的_tableRow.gsp模板:
<tr>
    <td class="prop">${label}</td>
    <td class="value">${value}</td>
</tr>

可以通过使用tmpl命名来调用:
<tmpl:tableRow label="one" value="two" />

服务器端的包含
新增了一个<g:include>标签在当前的视图中来引入另外一个controller, action 或者 view的响应:
<g:include controller="book" action="list"></g:include>

此标签也可以在 controller 或者 另外的tag library中使用:
def content = include(controller:"book", action:"list")

工程基础架构(Project Infrastructure)--更多更好的构建集成
maven集成
Grails 1.1 comes with an associated Maven plugin and archetype that allows you to build your Grails project easily using Maven. Follow the instructions here and either use the archetype to create a new Grails project, or run:
mvn grails:create-pom

to create a Maven POM for an existing project.

Ant + Ivy 集成
Grails now creates an Ant build.xml and corresponding ivy.xml file for each project allowing you to build a Grails project on any build server that supports Ant (like CruiseControl and Hudson) without needing Grails installed on the target server.

在BeanBuilder中支持Spring的命名空间
Grails' Spring DSL has been extended to include access to the Spring namespace APIs allowing you to easily use Spring advanced AOP support (among other things):
beans = {
   xmlns aop:"http://www.springframework.org/schema/aop"

fred(Person) { name = "Fred" age = 45 } birthdayCardSenderAspect(BirthdayCardSender)

aop { 
config("proxy-target-class":true) { 
aspect( id:"sendBirthdayCard",ref:"birthdayCardSenderAspect" ) { 
after method:"onBirthday", pointcut: "execution(void ..Person.birthday()) and this(person)" } } } }


Environment and Metadata API
There is a new API to access the current Environment:

import grails.util.Environment

...

switch(Environment.current) { case Environment.DEVELOPMENT: configureForDevelopment() break case Environment.PRODUCTION: configureForProduction() break }

There is also a new class for easily accessing application meta-data:
def metadata = grails.util.Metadata.current
println metadata.applicationName
println metadata.applicationVersion

Log4j DSL
A new Log4j DSL is available that replaces the old way of configuring Log4j:

log4j = {
    appenders {
        rollingFile name: 'fileLog', 
        fileName: 'logs/full.log', 
        maxFileSize: 26214400, 
        maxBackupIndex: 10, 
        layout: pattern(conversionPattern: '%d{yyyy-MM-dd HH:mm:ss,SSS} %p %c{2} %m%n')
    }
    root {
         error()
         additivity = true
    }
    error  'org.codehaus.groovy.grails.web.servlet',  //  controllers
	       'org.codehaus.groovy.grails.web.pages' //  GSP

debug fileLog:'grails.app'

warn 'org.mortbay.log' }

Full documentation for the Log4j DSL is available in the user guide.

Flexible Build Configuration
A new grails-app/conf/BuildConfig.groovy file is available that allows you to configure different aspects of the Grails build including output paths and servers used for resolution of plugins:
grails.work.dir="/tmp/work"
grails.plugins.dir="/usr/local/grails/plugins"
grails.project.test.reports.dir="/usr/local/grails/test-reports"


Non-interactive mode
Grails now supports a --non-interactive flag at the command line that can be passed in order to disable any user prompts:

grails run-app --non-interactive


This is useful for continuous integration servers.

Encrypted Data Sources
DataSource passwords can now be encrypted using a supplied codec class:

dataSource {
       username = "foo"
       password = "438uodf9s872398783r"
       passwordEncryptionCodec="my.company.encryption.BlowfishCodec"
}


The supplied codec uses Grails' existing codec mechanism


升级注意事项--有必要专门写个blog总结一下
Grails 1.1 是发生很多重要的变化,但是大部分还是向后兼容的。以下是已知的一些会影响升级的东东:
  • 现在插件默认是存储在你的USER_HOME目录,因此你需要重新安装你的那些插件,或者你通过以下的方式来运行:

grails -Dgrails.project.plugins.dir =./plugins run-app
         或者在BuildConfig.groovy中定义grails.project.plugins.dir =./plugins
  • 枚举类型现在缺省将String类型的名称映射到数据库,而不是以前的ordinals
  • jsession id被放弃掉了,详细查看GRAILS-3364
  • GSP的空格处理比以前更胜,现在你可以比以前写更多的空格,详细参考GRAILS-3277
  • grails.testing.reports.destDir配置参数已经被grails.project.test.reports.dir替代
  • PreInit.groovy现在已经变成BuildConfig.groovy
  • 控制器的allowedMethods属性现在需要被定义为static.

8
5
分享到:
评论
4 楼 热带翎羽 2010-10-09  
博主没说重点...
3 楼 agile_boy 2010-10-09  
热带翎羽 写道
发现你这里很多都是项目上很需要的技巧,很好奇你是如何学习到的呢?

不抱怨,不折腾。经历越多,收获越多。
2 楼 热带翎羽 2010-10-01  
发现你这里很多都是项目上很需要的技巧,很好奇你是如何学习到的呢?
1 楼 Arden 2009-04-21  
查询缓存好象很多问题,我用hibernate的查询缓存,会把数据库搞死。~

相关推荐

    springsource-tool-suite-3.4.0.RELEASE-e4.3.1-updatesite

    版本号3.4.0.RELEASE表明这是一个正式发布版,而不是测试版或预览版。 #### 2.2 支持的Eclipse版本 此版本的STS是针对Eclipse 4.3.1平台进行构建的,这意味着它与Eclipse 4.3.1版本兼容。Eclipse 4.3.1是Eclipse ...

    ABB常用机器人技术参数.pdf

    ABB常用机器人技术参数.pdf

    西门子1200 PLC FB284功能块实现多设备控制:V90伺服、相机角度调整及FANUC机器人DP通讯

    内容概要:本文详细介绍了如何利用西门子1200 PLC及其FB284功能块实现对3台V90伺服电机、相机角度调整以及FANUC机器人的控制。主要内容涵盖FB284功能块的基础参数设置、多台伺服电机的具体控制方法、相机角度调整的实现、DP通讯配置FANUC机器人控制,以及PLC程序注解和触摸屏程序的设计。通过具体代码示例和实际操作步骤,帮助读者理解和掌握这一系列控制技术。 适合人群:具备一定PLC基础知识的工控初学者和技术人员。 使用场景及目标:① 学习并掌握FB284功能块的使用方法;② 实现多台V90伺服电机的协同控制;③ 掌握相机角度调整的技术细节;④ 完成FANUC机器人通过DP通讯的控制配置;⑤ 提高PLC程序的可读性和易维护性。 其他说明:文中提供了丰富的代码片段和配置示例,便于读者实践操作。此外,还分享了一些实际项目中的经验和技巧,有助于提高项目的稳定性和效率。

    《计算机常用工具软件(第3版)》第6章--图形图像工具.ppt

    《计算机常用工具软件(第3版)》第6章--图形图像工具.ppt

    未来产业全球未来产业新赛道布局与发展策略分析:涵盖人工智能、量子科技、氢能等关键技术领域

    内容概要:本文由《未来产业新赛道研究报告》整理而成,涵盖了未来产业在全球范围内的发展态势和竞争形势。报告指出,引领型国家通过全方位体制机制创新,在先进制造、人工智能、量子科技、新一代通信等领域建立了全面领先优势。文中引用了麦肯锡和GVR的数据,预测了人工智能和人形机器人等未来产业的巨大经济潜力。报告还详细介绍了国外和国内对未来产业赛道的重点布局,如量子科技、人工智能、先进网络和通信技术、氢能与储能、生物技术等。此外,报告列举了中国重点省市如北京、上海等的具体发展方向,以及知名研究机构对未来产业热点的分析。最后,报告提出了构建我国未来产业重点赛道目录的建议,包括通用人工智能、高级别自动驾驶、商业航天、人形机器人、新型储能、低空经济、清洁氢、算力芯片、细胞与基因治疗和元宇宙等十大重点赛道。 适用人群:对科技趋势和未来产业发展感兴趣的政策制定者、投资者、企业家和研究人员。 使用场景及目标:①帮助政策制定者了解全球未来产业发展动态,为政策制定提供参考;②为企业提供未来产业布局的方向和重点领域;③为投资者提供投资决策依据,识别未来的投资机会;④为研究人员提供未来科技发展趋势的全景图。 其他说明:报告强调了未来产业在全球经济中的重要性,指出了中国在未来产业布局中的战略定位和发展路径。同时,报告呼吁加强国家顶层设计和行业系统谋划,探索建立未来产业技术预见机制,深化央地联动,推动未来产业高质量发展。

    《网络设备安装与调试(神码版)》2交换机的配置.pptx

    《网络设备安装与调试(神码版)》2交换机的配置.pptx

    自动驾驶路径规划:Lattice算法中的参考线、Frenet坐标系及多项式拟合的Matlab与C++实现

    内容概要:本文详细介绍了自动驾驶路径规划中Lattice算法的基础部分,主要包括三个关键概念和技术实现:参考线生成、Frenet坐标系转换和五次多项式拟合。首先解释了参考线的作用及其生成方法,如三次样条插值和平滑曲线生成。其次探讨了Frenet坐标系的优势,展示了如何将笛卡尔坐标系下的车辆位置投影到参考线上,从而简化路径规划问题。最后讨论了五次多项式的应用,强调其能够确保轨迹的光滑性和舒适性,并提供了详细的Matlab和C++代码实现。 适合人群:对自动驾驶技术感兴趣的开发者、研究人员以及有一定编程基础并希望深入了解路径规划算法的人群。 使用场景及目标:适用于研究和开发自动驾驶系统,特别是进行路径规划模块的设计与实现。主要目标是帮助读者掌握Lattice规划的基本原理和技术细节,以便应用于实际工程项目中。 其他说明:文中不仅有理论讲解,还附带了大量的代码实例,便于读者理解和实践。此外,作者提醒了一些常见的陷阱和注意事项,如避免过拟合、选择合适的插值算法等。

    《网络操作系统(Linux)》项目4-磁盘管理.pptx

    《网络操作系统(Linux)》项目4-磁盘管理.pptx

    《计算机应用基础实训指导》实训十八-PowerPoint-2010的动画和切换.pptx

    《计算机应用基础实训指导》实训十八-PowerPoint-2010的动画和切换.pptx

    安川机器人DX100使用说明书.1.pdf

    安川机器人DX100使用说明书.1.pdf

    《计算机专业英语》Unit-3-What-is-Hardware.ppt

    《计算机专业英语》Unit-3-What-is-Hardware.ppt

    汇川H5U-A16自动贴布网胶机的PLC与威纶通触摸屏集成及优化

    内容概要:本文详细介绍了汇川H5U-A16自动贴布网胶机的PLC控制系统及其与威纶通触摸屏的集成方法。主要内容涵盖伺服轴控制、气缸动作、矩阵托盘管理、OEE统计等方面的编程技巧和优化措施。文中展示了如何将复杂的硬件动作抽象为可复用的功能块(FB),并通过参数配置实现灵活的系统控制。此外,还讨论了如何利用威纶通触摸屏进行实时监控和数据分析,以及如何通过合理的IO表管理和注释提高系统的可维护性和扩展性。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是熟悉PLC编程和触摸屏应用的专业人士。 使用场景及目标:适用于需要开发或优化自动贴布网胶机及其他类似自动化设备的企业。主要目标是提升设备的可靠性和效率,降低维护成本,缩短开发周期。 其他说明:本文不仅提供了具体的编程示例,还分享了许多实战经验和技巧,如如何避免常见的错误和陷阱,如何应对特定硬件特性的挑战等。这些内容对于理解和掌握工业自动化系统的开发非常有价值。

    电力系统暂态稳定性分析:基于Matlab/Simulink的故障仿真与优化

    内容概要:本文详细介绍了利用Matlab和Simulink进行电力系统暂态稳定性分析的方法和技术。首先构建了一个单机无穷大系统的仿真模型,涵盖了同步电机、无穷大电网、输电线路等基础模块的搭建。接着深入探讨了不同类型故障(如短路、断线)的配置方法及其对系统稳定性的影响。针对常见的暂态问题,提出了多种解决方案,包括并联补偿器的应用、自动重合闸的设计以及仿真加速技巧。同时,通过具体案例展示了如何调整关键参数来优化系统性能,确保暂态过程中系统的稳定性和可靠性。 适合人群:从事电力系统研究与开发的技术人员,尤其是对电力系统暂态稳定性感兴趣的工程师和研究人员。 使用场景及目标:适用于需要评估电力系统在突发故障情况下的稳定性的场合,帮助用户掌握故障仿真技术,优化系统设计,提高电力系统的可靠性和安全性。 其他说明:文中提供的代码片段和仿真技巧均经过实际验证,能够显著提升仿真的效率和准确性。建议读者结合自己的项目需求灵活应用相关技术和方法。

    FPGA电机控制:基于Verilog与Nios2的永磁同步电机SVPWM控制系统设计

    内容概要:本文详细介绍了利用FPGA实现永磁同步电机(SPM)的SVPWM控制系统的具体实现方法。系统采用Verilog进行底层硬件时序控制,包括SVPWM模块中的扇区判断、PWM生成以及死区时间控制等;Nios2软核处理器则用于执行控制算法,如磁场定向控制(FOC)、Clarke变换和PID调节器。两者通过Avalon总线连接,实现高效的软硬件协同工作。此外,文中还讨论了一些常见的调试技巧和优化方法,如定点数运算、硬件CRC校验模块的应用等。 适合人群:具备一定FPGA开发经验和电机控制理论基础的技术人员,尤其是从事嵌入式系统开发、自动化控制领域的工程师。 使用场景及目标:适用于需要高精度、高性能电机控制的应用场合,如工业自动化设备、机器人关节控制等。目标是通过软硬件协同设计提高系统的实时性和可靠性,降低电流谐波失真,增强抗干扰能力。 其他说明:文中提供了完整的工程源码和技术细节,有助于读者深入理解和实践。同时,作者分享了许多实用的经验教训,帮助读者避开常见陷阱,提高开发效率。

    《移动商务网页设计与制作》第11章--Web-Worker-处理线程.ppt

    《移动商务网页设计与制作》第11章--Web-Worker-处理线程.ppt

    chromedriver-win64-135.0.7049.114.zip

    chromedriver-win64-135.0.7049.114.zip

    《计算机系统维护》第14章--硬盘分区的调整.ppt

    《计算机系统维护》第14章--硬盘分区的调整.ppt

    这篇文章详细探讨了交错并联Buck变换器的设计、仿真及其实现,涵盖了从理论分析到实际应用的多个方面(含详细代码及解释)

    内容概要:本文深入研究了交错并联Buck变换器的工作原理、性能优势及其具体实现。文章首先介绍了交错并联Buck变换器相较于传统Buck变换器的优势,包括减小输出电流和电压纹波、降低开关管和二极管的电流应力、减小输出滤波电容容量等。接着,文章详细展示了如何通过MATLAB/Simulink建立该变换器的仿真模型,包括参数设置、电路元件添加、PWM信号生成及连接、电压电流测量模块的添加等。此外,还探讨了PID控制器的设计与实现,通过理论分析和仿真验证了其有效性。最后,文章通过多个仿真实验验证了交错并联Buck变换器在纹波性能、器件应力等方面的优势,并分析了不同控制策略的效果,如P、PI、PID控制等。 适合人群:具备一定电力电子基础,对DC-DC变换器特别是交错并联Buck变换器感兴趣的工程师和技术人员。 使用场景及目标:①理解交错并联Buck变换器的工作原理及其相对于传统Buck变换器的优势;②掌握使用MATLAB/Simulink搭建交错并联Buck变换器仿真模型的方法;③学习PID控制器的设计与实现,了解其在电源系统中的应用;④通过仿真实验验证交错并联Buck变换器的性能,评估不同控制策略的效果。 其他说明:本文不仅提供了详细的理论分析,还给出了大量可运行的MATLAB代码,帮助读者更好地理解和实践交错并联Buck变换器的设计与实现。同时,通过对不同控制策略的对比分析,为实际工程应用提供了有价值的参考。

    基于单片机的秒表计时器设计(程序+仿真+电路)(51+SEG4+BZ+KEY5) #0400

    包括:源程序工程文件、Proteus仿真工程文件、电路原理图文件、配套技术手册 1、采用51/52单片机(通用)作为主控芯片; 2、数码管前两位显示分钟,后两位显示秒; 3、可以切换正计时/倒计时; 4、可设置倒计时时间,倒计时结束蜂鸣器报警; 5、计时过程中可记录时刻点 (存储十组记录数据),可翻看记录的数据。

    《计算机应用基础实训指导》实训一-文字录入.pptx

    《计算机应用基础实训指导》实训一-文字录入.pptx

Global site tag (gtag.js) - Google Analytics