`
zy77612
  • 浏览: 286008 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

设计异常管理系统

阅读更多

2009-06-30 作者:Jean-Pierre Norguet 来源:http://www.uml.org.cn/zjjs/200906301.asp

在面向对象的应用程序中,由于代码重载、错误的问题处理方式,导致异常有越来越多的趋势。在这篇文章中,作者Jean-Pierre Norguet介绍了如何设计异常,来实现一个简单的、可读的、健壮的、灵活的、面向调试的及用户友好的错误处理系统。在本文中,作者提出了简单异常集合的设计,并且给出了Java实现的源代码。最后,作者介绍了如何将这样的设计集成到一个Java的企业应用程序中。

在一个面向对象的项目中,设计异常处理的最好途径从来也没有如我们期待的那样清晰。在旧的大的系统中,异常的发生有激增的趋势,最终达到几百行的代码。对于一些常见的编程场景,异常检查是必须的,但是也会带来可观的处理开销。虽然安静的异常捕获可以找到问题的源头,但是避免不了它的一些缺点(虽然这些缺点不是致命的);比如你必须熟悉这些代码。

本文将介绍如何通过有限的异常集合来满足一个错误处理的需求。在建立起一个好的错误处理系统框架之后,将会指出异常处理设计中常见的错误,这些错误将会逐渐损害应用程序的性能;然后将会给出一个异常集合的例子,这个例子支持本文讨论的异常处理设计的基本功能:异常系统应该被设计成能够帮助外部系统(用户)处理未知情况(在运行时发生),而不是设计成能够帮助编程人员处理已知情况;还会介绍本文给出例子中的各个类的含义以及如何在一个特定的Java企业应用程序体系中使用它们;最后给出这个例子的Java实现。

错误处理需求

什么是一个好的错误处理系统?抛开审美角度的考虑,一个好的错误处理系统通常要符合下面的条件:

1、任何异常都不会导致应用系统的崩溃。

2、在发生异常时,允许应用程序进行相应的处理。

3、显示给用户的错误信息要清晰的描述发生了什么错误以及应该采取什么样的处理。

4、如果需要辅助信息,错误信息还要帮助用户与帮助部门交互,为帮助部门团队提供必要的信息, 使他们能够快速的容易的重现错误。

5、日志信息能为开发团队人员在识别错误、在应用程序代码中定位错误产生的位置以及修正错误提供必要的信息。

6、错误处理代码不会降低应用程序代码的可读性。必要的时候,错误处理仅仅是一个安全网,它对应用程序的核心功能具有较低的访问权限。

一个错误处理系统的设计符合这些条件才能被认为是完整的。对于大多数Java开发人员来说接下来的问题就是:如何灵活的使用异常类来设计一个错误处理系统,而不是通过简单的重载它们来实现。

应该避免的常见用法

可以通过一个有限的异常类集合来满足上面提到的需求。当设计这样的一个异常类集合时,你应该避免一些常见的用法,例如:

1、对每个问题都定义的异常类,这样会导致系统中异常类的激增。

2、对每个包定义一个异常类集合,这没什么用处而且也会导致系统中异常类的激增。

3、对每个异常都提供checked和non-checked两个版本,引入了检测异常开销。异常语义的后续副本也会混淆异常处理的设计。

4、最后,抛出和捕获通用异常在很多方面也是错误倾向。

本文下面提到的异常类集合按照错误处理语义分类,避免了异常处理相关的常见问题。尤其是在应用程序的规模和复杂程度增长是,这种方式更值得推荐。

异常处理设计

图1展示了异常类集合的设计,这个设计避免了异常类激增、检测异常开销和异常的安静捕获。

设计异常管理系统 - 果果 - 果果的博客

图1.一个异常类集合的例子

在这个图中你会发现有些异常是checked,而有些是runtime。为了避免异常抛出声明的开销,checked异常基于下面两个目的被保留下来:

  • 告诉调用方法,在这个处理过程中发生了一个可预见的意外情况。在这种情况下,问题的语义已经被处理方法定义了,直接捕获会更好。
  • 告诉外部系统发生了一个未解决的问题,需要根据异常语义来处理这个问题。

 

理解异常语义

在这里阐明本文对异常语义的定义。在作者看来,设计对象的类需要根据它们在现实世界中的等价物。一个水果或者一个人很容易设计成一个Java对象类。但是异常设计却不同:因为一个水果或者一个人在现实世界中非常直观,异常却不同。实际上,上面的两类异常中,只有第一类在现实世界中存在;而第二类异常模拟了系统执行过程中会发生什么错误,因此在系统之外就不存在了。直接捕获因此也只对第一类异常适合。

作者的设计建议就是异常应该根据它们的目的来设计。系统内部的、自我调整的异常就意味着是帮助系统来处理不可预见的情况。这些异常的目的也就不是模拟系统中的问题,而是给一个系统需要采取什么措施的指示。

一个异常类集合的例子

在图1中你可以看到四类异常对应四类处理,如下:

  1. BusinessException:一种异常情况发生。这种情况是可预见的,也可以被调用方法检测到并立即采取措施。
  2. ParameterException:输入的数据对处理过程不合法。用户被要求重新输入有效数据或者修改处理过程的条件。
  3. TechnicalException:技术问题,如无效的SQL语句。这种情况下,请求操作未完成。用户需要和帮助部门联系,调查问题的原因;或者尝试其它的服务。对使用系统的其它用户没有影响。
  4. CriticalTechnicalException:技术问题,如数据库崩溃。用户被建议稍后重试。在问题修复前,所有的用户都不能使用系统。

 

这个异常类集合只是一个例子;很多异常类集合都可以参照它来定义。例如,TechnicalException和CriticalTechnicalException可以被设计成一个类,这个类声明一个severity布尔属性。重要的是关注采取什么处理措施而不是什么问题引起异常。

异常日志记录

虽然异常语义关注采取的措施,但是出现的问题也很重要。例如,开发团队人员可以使用这些信息调试代码。在异常处理设计中,导致异常的信息能够在以用程序的错误日志中发现。在适当的位置使用一个好的日志记录框架,这个框架能够有效的从异常信息和堆栈跟踪中记录问题信息。

剩下的唯一问题就是怎么样设计异常类使之能够方便的返回信息。一个解决方案就是为异常类声明一个id属性来代表遇到的问题的种类。另外,问题自身可带有通用异常,也就是把通用异常内嵌到应用程序异常中。在捕获的时候,原始的信息和堆栈跟踪信息能够通过内嵌的异常得到。id属性和内嵌异常是包装问题的两种途径。

异常处理流程的设计

一旦你已经设计好异常类本身了,下一步需要思考的就是它在应用程序中的处理流程。一个标准的JEE应用程序体系通常包括四个部分:展现、业务、集成、持久。异常经常在集成和持久部分被抛出。在业务部分,里层的捕获checked异常,而外层捕获runtime异常并根据它们的类型来采取相应的处理措施。也可以在业务部分抛出一些checked异常并且捕获它们。在这种模式下,集成和持久部分,包括业务部分的里层都将runtime异常转化成具体的处理措施。图2展示的就是一个典型的JEE应用程序异常处理流程。

设计异常管理系统 - 果果 - 果果的博客

图2.标准JEE包体系中异常的处理流程

异常抛出路径是指从持久部分(假设)发生问题到问题被解决所经历的流程。如果持久层的调用方法能够解决这个问题,那么这个异常就直接被捕获并采取相应的处理措施,业务流程一切照常;如果问题不能被解决,异常将内嵌到一个runtime异常中经过业务部分的中间层传递到应用程序的上层中,在这里,典型的处理方法就是使用一些应用程序控制器来捕获这些runtime异常并采取相应的处理措施,展现层显示相应的错误信息给用户。直接捕获checked异常和推迟捕获runtime异常是异常处理设计中的两种主要方案,如图3所示。

设计异常管理系统 - 果果 - 果果的博客

图3.直接捕获checked异常和推迟捕获runtime异常

扩展java.lang.Exception

文中提到的异常处理设计方案在任何的面向对象语言中都可以很容易的实现,包括Java。一个相似的异常类树已经在标准Java库中提供了。在这个库中异常被设计为java.lang.Throwable,ckeched异常被设计为java.lang.Exception,runtime异常被设计为java.lang.RuntimeException。

在java.lang.Exception下,有大量泛语义的业务异常。运行时应用程序异常,如ParamterException、TechnicalException、CriticalTechnicalException(见图1)各自都设计成相应的概要异常,如IllegalArgumentException、MissingResourceException、IllegalStateException。

在应用程序中,重用Java标准异常是一个不错的主意,但是由Java标准类抛出的异常也会导致一些混乱。你可以通过扩展java.lang.Exception自定义异常类树来避免这样的混乱。通过自定义的异常类树,你还可以实现内嵌异常和问题ID。列表1给出了文中例子的Java代码实现。注意,它包括内嵌异常和问题ID。

列表1.通过Java代码实现内嵌异常和问题ID

public class NestedException extends RuntimeException {

protected Exception nestedException;

protected int issueId;

public NestedException(String msg, Exception e, int id) {

super(msg);

this.nestedException = e;

this.issueId = id;

}public Exception getNestedException() {

return this.nestedException;

}

public int getIssue() {

return this.issueId;

}

}

public interface Issue {

public final static int UNDEFINED = 0;

public final static int EXTERNAL_SERVICE_1_DOWN = 1;

public final static int EXTERNAL_SERVICE_2_DOWN = 2;

public final static int SQL_STATEMENT_ERROR = 3;

// ...

}

总结

设计一个满足好的错误处理系统需求的异常类树非常简单。简单的秘诀就是将设计的主要精力集中在系统应该采取什么样的处理措施,而不是关注会出现的什么样的问题。在本文的设计当中,问题的信息封装在异常类里面。通过在处理措施和问题之间分配异常语义,让你将异常类树限制在一个有限的异常类集合中(可能就六七个左右)。这种设计不仅限制了异常类激增,保证代码的可读性,使你在以后的开发中以最佳的清晰度来关注应用程序的业务逻辑的编码。

分享到:
评论

相关推荐

    基于javaweb的学生宿舍管理系统.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用

    最新更新!!国家农业龙头企业数量(2010-2022年)

    ## 1、数据简介 国家农业龙头企业数量主要指的是经过国家相关部门认定,并在农业产业化方面发挥重要引领作用的企业的总数。这些企业通常以农产品加工或流通为主业,通过各种利益联结机制与农户相联系,带动农户进入市场,实现农产品生产、加工、销售的有机结合和相互促进。 数据名称:国家农业龙头企业数量 数据年份:2010-2022年 ## 02、相关数据 省份、年份、龙头企业数量。

    基于struts2+spring+mybites的二手车交易信息网站(毕设&课设&实训&大作业&竞赛&项目)

    这是一个二手车交易信息网站,用struts2+spring+mybites写的,数据库放在webContent目录下的。.zip项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款

    集工单统计、任务钩子、权限管理、灵活配置流程与模版等工单系统

    本系统是集工单统计、任务钩子、权限管理、灵活配置流程与模版等等于一身的开源工单系统,当然也可以称之为工作流引擎。 致力于减少跨部门之间的沟通,自动任务的执行,提升工作效率与工作质量,减少不必要的工作量与人为出错率。

    Qt5.12Linux+Win安装包-压缩分卷00(共10卷)

    第00卷,密码在对应的文章内。

    Linux Mint-15.zip

    目录: linuxmint-15-cinnamon-dvd-32bit linuxmint-15-cinnamon-dvd-64bit linuxmint-15-kde-dvd-32bit linuxmint-15-kde-dvd-64bit linuxmint-15-mate-dvd-32bit linuxmint-15-mate-dvd-64bit linuxmint-15-xfce-dvd-32bit linuxmint-15-xfce-dvd-64bit 网盘文件永久链接

    chromedriver-win32-135.0.7031.0(Canary).zip

    chromedriver-win32-135.0.7031.0(Canary).zip

    STM32开发:IIR带阻滤波器设计与实现,含巴特沃斯和切比雪夫滤波器MATLAB程序,STM32开发中IIR带阻滤波器的实现与巴特沃斯滤波器设计详解:附MATLAB程序,STM32开发 IIR带阻滤

    STM32开发:IIR带阻滤波器设计与实现,含巴特沃斯和切比雪夫滤波器MATLAB程序,STM32开发中IIR带阻滤波器的实现与巴特沃斯滤波器设计详解:附MATLAB程序,STM32开发 IIR带阻滤波器 STM32实现IIR无限冲击响应带阻滤波器设计,巴特沃斯滤波器,代码工整,自编代码,注释详细,赠送巴特沃斯和切比雪夫IIR带阻滤波器MATLAB程序 ,STM32开发; IIR带阻滤波器; 无限冲击响应; 巴特沃斯滤波器; 自编代码; 注释详细; MATLAB程序,STM32中IIR带阻滤波器设计与实现

    遵循HTTP协议,编写HTML生成器生成前端界面,完成简单的博客系统.zip(课设&实训&大作业&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款

    基于ssh&acegi的简单b2c电子商务网站.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用

    纯电动汽车仿真研究:基于Matlab Simulink与Simscape的车辆模型动力性、经济性及续航里程分析,基于Matlab Simulink与Simscape的纯电动汽车动力、经济性及续航里程仿

    纯电动汽车仿真研究:基于Matlab Simulink与Simscape的车辆模型动力性、经济性及续航里程分析,基于Matlab Simulink与Simscape的纯电动汽车动力、经济性及续航里程仿真模型探究,纯电动汽车仿真、纯电动公交、纯电动客车、纯电动汽车动力性仿真、经济性仿真、续航里程仿真。 模型包括电机、电池、车辆模型。 有两种模型2选1: 1 完全用matlab simulink搭建的模型。 2用simscape搭建的车辆模型。 ,纯电动汽车仿真; 纯电动公交; 纯电动客车; 动力性仿真; 经济性仿真; 续航里程仿真; 模型(电机、电池、车辆模型); MATLAB Simulink模型; Simscape车辆模型。,纯电动交通工具仿真模型研究:基于Matlab Simulink与Simscape的电池、电机及车辆性能分析

    MATLAB代码:电转气P2G与碳捕集设备在热电联供综合能源系统中的优化调度模型研究:融入碳交易机制的非线性模型高效求解 ,MATLAB环境下结合P2G技术与碳捕集设备的综合能源系统优化调度模型,包括

    MATLAB代码:电转气P2G与碳捕集设备在热电联供综合能源系统中的优化调度模型研究:融入碳交易机制的非线性模型高效求解。,MATLAB环境下结合P2G技术与碳捕集设备的综合能源系统优化调度模型,包括热电联产与低碳调度,借鉴碳交易机制实现高效求解。,MATLAB代码:考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型 注意:店铺内有大量考虑碳交易代码,欢迎咨询 关键词:碳捕集 综合能源系统 电转气P2G 热电联产 低碳调度 参考文档:《Modeling and Optimization of Combined Heat and Power with Power-to-Gas and Carbon Capture System in Integrated Energy System》完美复现 仿真平台:MATLAB yalmip+gurobi 主要内容:代码主要做的是一个考虑电转气P2G和碳捕集设备的热电联供综合能源系统优化调度模型,模型耦合CHP热电联产单元、电转气单元以及碳捕集单元,并重点考虑了碳交易机制,建立了综合能源系统运行优化模型,模型为非线性模型,采用yalmip

    课程设计 二手商城 基于springboot后台管理.zip(课设&实训&大作业&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用,资源为网络商品(电子资料类)基于网络商品和电子资料商品的性质和特征不支持退款,质量优质,放心下载使用

    19考试真题最近的t37.txt

    19考试真题最近的t37.txt

    (参考项目)MATLAB交通道路标识识别.zip

    MATLAB交通标志识别系统可以通过图像处理和机器学习技术来识别道路上的不同交通标志。这个系统可以通过以下步骤来实现: 1. **数据收集**:收集具有不同交通标志的图像作为训练集,可以使用公开的交通标志数据集或者自己创建一个数据集。 2. **图像预处理**:对采集到的图像进行预处理,比如去噪、调整大小、灰度化等操作,以便更好地进行特征提取。 3. **特征提取**:从预处理后的图像中提取特征,例如颜色、形状、纹理等特征,以便训练分类器。 4. **分类器训练**:使用机器学习算法(如支持向量机、人工神经网络等)对提取的特征进行训练,以建立交通标志的分类模型。 5. **标志识别**:使用训练好的分类器对新的图像进行识别,并输出识别结果。 MATLAB提供了丰富的图像处理工具箱和机器学习工具箱,可以帮助实现交通标志识别系统。可以使用MATLAB编写代码来处理图像、提取特征、训练分类器和进行识别。同时,也可以借助深度学习工具箱来构建卷积神经网络(CNN)等深度学习模型进行交通标志的识别。 需要注意的是,在实际应用中,还需要考虑系统的实时性、准确性和稳定性等因素,以确保该系统在不同场景下能够有效地识别交通标志。

    双有源桥扩展技术:100kHz高频率、最小电流应力优化的3kw功率开关控制系统,双有源桥扩展技术:100kHz高频率、375-48V宽电压范围下的3kw功率控制与优化,双有源桥扩展移相控制 开关频率

    双有源桥扩展技术:100kHz高频率、最小电流应力优化的3kw功率开关控制系统,双有源桥扩展技术:100kHz高频率、375-48V宽电压范围下的3kw功率控制与优化,双有源桥扩展移相控制 开关频率100k,375-48V,功率3kw 控制方式为最小电流应力优化控制 参数可定制 ,双有源桥;扩展移相控制;开关频率100k;功率3kw;最小电流应力优化控制;参数可定制,双桥移相控制,最小电流应力优化——100k开关频率功率控制技术

    基于粒子群算法的IEEE30节点输电网最优潮流研究:以系统发电成本最小化为目标的二次函数关系优化求解,基于粒子群算法的输电网最优潮流控制研究:以IEEE30节点系统为例,探讨发电成本最小化及机组出力优

    基于粒子群算法的IEEE30节点输电网最优潮流研究:以系统发电成本最小化为目标的二次函数关系优化求解,基于粒子群算法的输电网最优潮流控制研究:以IEEE30节点系统为例,探讨发电成本最小化及机组出力优化,基于粒子群算法的最优潮流 以IEEE30节点的输电网为研究对象 以系统发电成本最小为目标函数 以机组出力为优化变量 其中出力与成本的关系是经典的二次函数关系 通过优化求解得到最佳机组出力 ,最优潮流;粒子群算法;IEEE30节点输电网;系统发电成本;机组出力优化;二次函数关系;优化求解。,基于粒子群算法的IEEE30节点输电网最优潮流研究:成本最小化与机组出力优化

    Abaqus管中管系统深水管非线性动力分析:Tube-to-Tube ITT单元的应用研究,Abaqus软件在管中管系统深水管非线性动力分析中的应用:基于Tube-to-tube ITT单元的数值模拟

    Abaqus管中管系统深水管非线性动力分析:Tube-to-Tube ITT单元的应用研究,Abaqus软件在管中管系统深水管非线性动力分析中的应用:基于Tube-to-tube ITT单元的数值模拟研究,abaqus 管中管系统 深水管非线性动力分析 Tube-to-tube ITT单元 ,Abaqus; 管中管系统; 深水管非线性动力分析; ITT单元; 节点分析; 仿真建模。,Abaqus深水管非线性动力分析中管中管系统的ITT单元应用

    springboot在线知识管理平台类智慧交通调度平台源码+论文+视频1.zip

    springboot在线知识管理平台类智慧交通调度平台源码+论文+视频1

    punkt包,加tokenizers路径

    punkt包

Global site tag (gtag.js) - Google Analytics