文档库 最新最全的文档下载
当前位置:文档库 › inverse和cascade的具体用法

inverse和cascade的具体用法

inverse和cascade的具体用法
inverse和cascade的具体用法

Hibernate 级联关系说明-关于cascade和inverse的用法

Hibernate 级联关系说明-关于cascade和inverse的用法收藏

在hibernate中一对多关联时会经常用到inverse和cascade属性 ,

inverse 有两个值 true ,false ;如果设置为true 则表示当前对象不负责讲级联对象的状态变化同步到数据库 ;设置false则相反,其默认值为false;

cascade 有五个选项分别是: all ,delete ,none,save-update,delete-orphan ;

all : 所有情况下均进行关联操作。

none:所有情况下均不进行关联操作。这是默认值。

save-update:在执行save/update/saveOrUpdate时进行关联操作。

delete:在执行delete时进行关联操作。

delete-orphan: 当save/update/saveOrUpdate时,相当于save-update ;当删除操作时,相当于delete ;

all的意思是save-update + delete

all-delete-orphan 的意思是当对象图中产生孤儿节点时,在数据库中删除该节点

all比较好理解,举个例子说一下all-delete-orphan:

Category与Item是一对多的关系,也就是说Category类中有个Set类型的变量items. 举个例子,现items中存两个Item, item1,item2,如果定义关系为all-delete-orphan

当items中删除掉一个item(比如用remove()方法删除item1),那么被删除的Item类实例将变成孤儿节点,当执行category.update(),或session.flush()时

hibernate同步缓存和数据库,会把数据库中item1对应的记录删掉

测试Hibernate中的三个属性:lazy,inverse,cascade

【测试环境】

一对多关系的两张表:boy、girl(一个男孩可以多个女朋友)

boy表结构

Field Type

------ -----------

name varchar(50) pk

age varchar(50)

girl表结构

Field Type

------ -----------

name varchar(50) pk

bf varchar(50) fk

【保存时:Inverse与cascade】

创建三个girl对象和一个boy对象,让这是三个girl都是boy的女朋友

---------创建对象的代码片段-----------

Boy boy = new Boy("tom","23", null);

Set girls = new HashSet();

Girl g[] = new Girl[]{

new Girl("Alice1", boy),

new Girl("Alice2", boy),

new Girl("Alice3", boy)};

girls.add(g[0]);

girls.add(g[1]);

girls.add(g[2]);

boy.setGirls(girls);

在Boy.hbm.xml中设置,然后对boy对象进行保存。

1.Inverse = true,不指定cascade

cascade的默认值为none, 当对boy进行保存操作时,girl什么都不做. 所以只保存了boy对象, 没有保存girl对象

2.Inverse = true,cascade=all

boy与girl对象,包扩外键都成功保存。

(生成3条SELECT语句和4条INSERT语句,一下简称SELECT 3, INSERT 4)

3.Inverse = false,不指定cascade

报错。因为boy为主控方,负责维护关系,所以在插入boy对象后,会尝试修改并不存在的girl对象。

4.Inverse = false,cascade=all

boy与girl对象,包扩外键都成功保存。

(SELECT 4, INSERT 4, UPDATE 3)

分析:除了4条INSERT语句之外,其他的6条语句是我们为了图方便付出的代价:3条SELECT语句用来判断girl对象是否在数据表中已经存在,3条UPDATE语句是为了维护外键关系

高效率的做法:在Boy.hbm.xml中设置Inverse=true,在Girl.hbm.xml中设置

Inverse=false, cascade=all,然后保存三个girl对象

(SELECT 1, INSERT 4)

高效率的代价就是保存的时候比较麻烦

【删除时:Inverse与cascade】

希望通过删除boy,也将3个girl对象删除。程序中先查出boy对象,然后进行删除

-----------------------------------------

Boy boy = (Boy) s.get(Boy.class, "tom");

s.delete(boy);

-----------------------------------------

同样在Boy.hbm.xml中进行设置

1.Inverse = true

可以猜到结果是出错。原因:外键约束错误

2.Inverse = false

boy删除,girl表中外键变为null,没有删除记录 ;

(UPDATE 1, DELETE 1)

3.Inverse = false, cascade = all

全部删除 ;在删除有外键的从表时,先把从表外键置为null,然后删除主表记录,最后根据从表主键删除所有相关从表记录

(UPDATE 1, DELETE 4)

4.Inverse = true, cascade = all

全部删除

(DELETE 4)

Inverse是hibernate双向关系中的基本概念,当然对于多数实体,我们并不需要双向关联,更多的可能会选择单向关联,况且我们大多数人一般采用一对多关系,而一对多双向关联的另一端:多对一的inverse属性是不存在,其实它默认就是inverse=false.从而防止了在一对多端胡乱设置inverse也不至于出错。但是inverse设置不当确实会带来很大的性能影响,这点是我们必须关注的。

这篇文章已经详细分析了inverse设置不当带来的影响:

https://www.wendangku.net/doc/0811121496.html,/155.html

看了这篇文章,还是很有必要再写下一些总结的:

1)inverse中提及的side其实是指一个类或者表的概念,双向关联其实是指双方都可以取得对方的应用。

2)维护关系这个名词还是稍显模糊或者晦涩。我们一般说A类或者A表(这里的表的是指多对多的连接表)有责任维护关系,其实这里的意思是说,我在应用在更新,创建,删除(读就不用说了,双向引用正是为了方便读而出现)A类或者A表时,此时创建的SQL语句必须有责任保证关系的正确修改。

3)inverse=false的side(side其实是指inverse=false所位于的class元素)端有责任维护关系,而inverse=true端无须维护这些关系。

4)我们说inverse设立不当会导致性能低下,其实是说inverse设立不当,会产生多余重复的SQL语句甚至致使JDBC exception的throw。这是我们在建立实体类关系时必须需要关注的地方。一般来说,inverse=true是推荐使用,双向关联中双方都设置 inverse=false的话,必会导致双方都重复更新同一个关系。但是如果双方都设立inverse=true的话,双方都不维护关系的更新,这也是不行的,好在一对多中的一端:many-to-one默认是inverse=false,避免了这种错误的产生。但是对多对就没有这个默认设置了,所以很多人经常在多对多的两端都使用inverse=true,结果导致连接表的数据根本没有记录,就是因为他们双分都没有责任维护关系。所以说,双向关联中最好的设置是一端为inverse=true,一端为inverse=false。一般inverse=false会放在多的一端,那么有人提问了,many-to-many两边都是多的,inverse到底放在哪儿?其实hibernate建立多对多关系也是将他们分离成两个一对多关系,中间连接一个连接表。所以通用存在一对多的关系,也可以这样说:一对多是多对多的基本组成部分。

看下面的多对多的定义大家更会清楚”多对多“与“一对多”的关系:其中我们注意

标签的特点就知道,它是定义了一个多对多关系,而不是

"-//Hibernate/Hibernate Mapping DTD 2.0//EN"

"https://www.wendangku.net/doc/0811121496.html,/hibernate-mapping-2.0.dtd">

dynamic-update="true" dynamic-insert="true" >

update="true" insert="true" column="name" />

dynamic-update="true" dynamic-insert="true" >

insert="true" column="name" />

在对多对中,因为一端维护关系另一端不维护关系的原因,我们必须注意避免在应用中用不维护关系的类建立关系,因为这样建立的关系是不会在数据库中存储的。基于上面的映射文件代码给出一个例子:

package org.hibernate.auction;

import java.util.*;

/**

* @author Administrator

*

* To change the template for this generated type comment go to

* Window>Preferences>Java>Code Generation>Code and Comments

*/

public class TestA {

int id;

String name;

Set testBs=new HashSet();

public TestA(){

}

public TestA(int id){

setId(id);

}

public int getId(){

return id;

}

public void setId(int id){

this.id=id;

}

public String getName(){

return name;

}

public void setName(String name){

https://www.wendangku.net/doc/0811121496.html,=name;

}

public Set getTestBs(){

return testBs;

}

public void setTestBs(Set s){

testBs=s;

}

public void addTestB(TestB tb){

testBs.add(tb);

}

public static void main(String[] args) { }

}

public class TestB {

int id;

String name;

Set testAs=new HashSet();

public TestB(){

}

public TestB(int id){

setId(id);

}

public int getId(){

return id;

}

public void setId(int id){

this.id=id;

}

public String getName(){

return name;

}

public void setName(String name){

https://www.wendangku.net/doc/0811121496.html,=name;

}

public Set getTestAs(){

return testAs;

}

public void setTestAs(Set s){

testAs=s;

}

public void addTestA(TestA ta){

testAs.add(ta);

}

public static void main(String[] args) { }

}

测试代码:

public void doTest() throws Exception{ TestA a1=new TestA(1);

TestA a2=new TestA(2);

TestA a3=new TestA(3);

TestB b1=new TestB(1);

TestB b2=new TestB(2);

TestB b3=new TestB(3);

a1.addTestB(b1);

a1.addTestB(b2);

a1.addTestB(b3);

b2.addTestA(a1);

b2.addTestA(a2);

Session s = factory.openSession();

s = factory.openSession();

Session session = factory.openSession(); session.save(a1);

session.flush();

session.close();

}

测试后连接表的数据为:

testa testb

1 1

1 2

1 3

根据inverse规则,对这些代码:b2.addTestA(a1); b2.addTestA(a2); 建立的关系,数据库并没有存储下来,因为TestB没有责任维护这些关系,所以产生的sql语句自然不会有针对Testa_testB表的操作了。假设应用中真的需要这些方法,那么我们可以修改TestB的方法,让他们注意在维护端类中执行相应的操作以使得关系能够在数据库中保存下来,更改TestB如下:

/*

* Created on 2004-7-25

*

* To change the template for this generated file go to

* Window>Preferences>Java>Code Generation>Code and Comments

*/

package org.hibernate.auction;

import java.util.*;

/**

* @author Administrator

*

* To change the template for this generated type comment go to

* Window>Preferences>Java>Code Generation>Code and Comments

*/

public class TestB {

int id;

String name;

Set testAs=new HashSet();

public TestB(){

}

public TestB(int id){

setId(id);

}

public int getId(){

return id;

}

public void setId(int id){

this.id=id;

}

public String getName(){

return name;

}

public void setName(String name){

https://www.wendangku.net/doc/0811121496.html,=name;

}

public Set getTestAs(){

return testAs;

}

public void setTestAs(Set s){

testAs=s;

}

public void addTestA(TestA ta){

testAs.add(ta);

ta.addTestB(this);

}

public static void main(String[] args) {

}

}

那么测试执行后连接表的数据为:

testa testb

1 2

1 3

1 1

2 2

测试通过。

附 hibernate cascade备忘:

当关联双方存在父子关系,就可以在 set 处设定 cascade 为 all-delete-orphan

所谓父子关系,即指由父方控制子方的持久化圣明周期,子方对象必须和一个父方对象关联。如果删除父方对象,应该级联删除所有关联的子方对象;如果一个子方对象不再和一个父方对象关联,应该把这个子方对象删除。

all-deleteorphan 的能力:

1. 当保存或更新父方对象时,级联保存或更新所有关联的子方对象,相当于 cascade 为save-update

2. 当删除父方对象时,级联删除所有关联的子方对象,相当于 cascade 为 delete

3. 删除不再和父方对象关联的所有子方对象

解除父子关系的 java 语句例如:

customer.getOrders().remove(order);

order.setCustomer(null);

https://www.wendangku.net/doc/0811121496.html,mit();

如果 cascade 属性取默认值 null,当解除父子关系时,会执行如下 sql:

update ORDER set CUSTOMER_ID=null where ID=2

inverse 设定的原则:

1. 在映射一对多双向关联关系时,应该设定 many 方的 inverse 为 true,以提高性能

2. 在建立两个对象的双向关联时,应同时修改关联两端的对象的相应属性:

1)customer.getOrders().add(order);

2)order.setCustomer(customer);

如果不执行 1)而仅执行 2),由于 set 元素的 inverse 为 true,因此 hibernate 不会按照 CUSTOMER 对象的状态变化来同步数据库。

inverse 解决性能问题的例子:

1. 建立 Order 到 Customer 的多对一关联关系

order.setCustomer(customer);

相应执行的 SQL 为:

update ORDERS set ORDER_NUMBER='Jack_Order001', CUSTOMER_ID=2 where ID=2;

2. 建立 Customer 到 Order 的一对多关系

customer ORDERS set CUSTOMER_ID=2 where ID=2;

相应 SQL 为:

update ORDERS set CUSTOMER_ID=2 where ID=2;

显然 1 和 2 的 SQL 功能重复了,反复执行这样的 SQL 语句会引起性能下降,因此:

inverse 设定为 true 时,声明 Customer 端的关联只是 Order 端关联的镜像。当两者状态发生变化时,Hibernate 仅按照 Order 对象状态变化来同步数据库。即仅会执行以下SQL:

update ORDERS set ORDER_NUMBER='Jack_Order001', CUSTOME_ID=2 where ID=2; Customer.hbm.xml 片段如下:

name="orders"

cascade="all-delete-orphan"

inverse="true"

>

串级控制系统

习题六 1.什么叫串级控制系统?画出一般串级控制系统的典型方块图。 答:串级控制系统是由其结构上的特征而得名的。它是由主、副两个控制器串接工作的。 主控制器的输出作为副控制器的给定值,副控制器的输出去操纵控制阀,以实现对变量的定值控制。 2.串级控制系统有哪些特点?主要使用在哪些场合? 答串级控制系统的主要特点为: (1)在系统结构上,它是由两个串接工作的控制器构成的双闭环控制系统; (2)系统的目的在于通过设置副变量来提高对主变量的控制质量} (3)由于副回路的存在,对进入副回路的干扰有超前控制的作用,因而减少了干扰对主变量的影响; (4)系统对负荷改变时有一定的自适应能力。 串级控制系统主要应用于:对象的滞后和时间常数很大、干扰作用强而频繁、负荷变化大、对控制质量要求较高的场合。 3.串级控制系统中主、剧变量应如何选择? 答主变量的选择原则与简单控制系统中被控变量的选择原则是一样的。 副变量的选择原则是:. (1)主、副变量间应有一定的内在联系,副变量的变化应在很大程度上能影响主变量的变化; (2)通过对副变量的选择,使所构成的副回路能包含系统的主要干扰; (3)在可能的情况下,应使副回路包含更多的主要干扰,但副变量又不能离主变量太近; (4)副变量的选择应考虑到主、副对象时间常数的匹配,以防“共振”的发生 4.为什么说串级控制系统中的主回路是定值控制系统,而副回路是随动控制系统? 答串级控制系统的目的是为了更好地稳定主变量,使之等于给定值,而

主变量就是主回路的输出,所以说主回路是定值控制系统。副回路的输出是副变量,副回路的给定值是主控制器的输出,所以在串级控制系统中,副变量不是要求不变的,而是要求随主控制器的输出变化而变化,因此是一个随动控制系统。5.怎样选择串级控制系统中主、副控制器的控制规律? 答串级控制系统的目的是为了高精度地稳定主变量,对主变量要求较高,一般不允许有余差,所以主控制器一般选择比例积分控制规律,当对象滞后较大时,也可引入适当的微分作用。 串级控制系统中对副变量的要求不严。在控制过程中,副变量是不断跟随主控制器的输出变化而变化的,所以副控制器一般采用比例控制规律就行了,必要时引入适当的积分作用,而微分作用一般是不需要的。 6.如何选择串级控制系统中主、副控制器的正、反作用? 答副控制器的作用方向与副对象特性、控制阀的气开、气关型式有关,其选择方法与简单控制系统中控制器正、反作用的选择方法相同,是按照使副回路成为—个负反馈系统的原则来确定的。 主控制器作用方向的选择可按下述方法进行:当主、副变量在增加(或减小时),如果要求控制阀的动作方向是一致的,则主控制器应选“反”作用的;反之,则应选“正”作用的。 从上述方法可以看出,串级控制系统中主控制器作用方向的选择完全由工艺情况确定,或者说,只取决于主对象的特性,而与执行器的气开、气关型式及副控制器的作用方向完全无关。这种情况可以这样来理解:如果将整个副回路看作是构成主回路的一个环节时,副回路这个环节的输入就是主控制器的输出(即副回路的给定),而其输出就是副变量。由于副回路的作用总是使副变量跟随主控制器的输出变化而变化,不管副回路中副对象的特性及执行器的特性如何,当主控制器输出增加时,副变量总是增加的,所以在主回路中,副回路这个环节的特性总是“正”作用方向的。由图可见,在主回路中,由于副回路、主测量变送这两个环节的特性始终为“正”,所以为了使整个主回路构成负反馈,主控制器的作用方向仅取决于主对象的特性。主对象具有“正”作用特性(即副变量增加时,主变量亦增加)时,主控制器应选“反”作用方向,反之,当主对象具有“反”作用特性时,主控制器应选“正”作用方向。

人教版英语英语现在完成时的用法大全含解析

人教版英语英语现在完成时的用法大全含解析 一、初中英语现在完成时 1.—They say there is a new restaurant near here. —Yes, and it ______ for more than a week. A. has been open B. open C. is opening D. opens 【答案】 A 【解析】【分析】句意:——他们说在这附近有一个新的餐馆。——是的,它已经开了一个多星期了。根据 for more than a week ,可知用现在完成时,have/has been done,故选A。 【点评】考查现在完成时,注意识记其标志词。 2.Mike used to be a top student, but he behind since he lost himself in computer games. A. fell B. has fallen C. was D. has been 【答案】 D 【解析】【分析】句意为“Mike过去是尖子生,但自从迷上电子游戏以来成绩落后了”。由since可知but后的主句用现在完成时,瞬间动词fall不能和since引导的时间状语从句连用,故用延续性动词be。故选D。 【点评】本题考查现在完成时中非延续性动词和延续性动词的转换。 3.—Hi, Tom! you ever the Bird's Nest? —Yes, I have. It's fantastic. A. Have, been to B. Have, gone to C. Did, go to 【答案】 A 【解析】【分析】句意:——你好,Tom!你曾经去过鸟巢吗?——是的,我去过。它是极好的。根据答语—Yes, I have.可知是以have开头的现在完成时的一般疑问句,排除C。have been to+地点名词,去过某地,去了并且回来了;have gone to+地点名词,去了某地,去了还没有回来,在去或者回来的路上。根据It's fantastic.可知去了并且回来了,故选A。 【点评】考查短语辨析,注意平时识记其区别,理解句意。 4.——Where is Mr. Wang? ——He together with his students ________ Zhuyuwan Park. A. has gone to B. have gone to C. has been to D. have been to 【答案】 A

一般过去时与现在完成时的用法区别

一般过去时与现在完成时区别专题 一、前言: 初一下学期同学们学习了一般过去时态的相关知识,即将到来的初二上学期英语学习中,现在完成时是重要的学习内容。本文通过对比一般过去时和现在完成时,对现在完成时进行初步讲解,希望使同学们读新学期的学习有所准备。 二、现在完成时 1. 现在完成时的构成 现在完成时是由助动词have (has)+动词的过去分词构成。助动词说明该谓语是属于现在时范围。它和主语的人称、数要保持一致。过去分词是主要的谓语动词,说明句子的意义。 2. 现在完成时的用法 现在完成时表示过去某时发生的行为对主语目前产生的影响。即用过去发生的某个行为来说明现在的某种情况。 We are good friends.(现在的情况) I knew him in 1997.(过去的动作) We have known each other since 1997. (现在完成时把过去的动作和现在联系起来并着眼于现在) (1)表示动作发生在过去某个不确定的时间,但对现在留下了某种影响和结果。常被just、already、yet 等副词修饰。如: -Have you had lunch yet? -Yes, I have. I've just had it. 你(已经)吃午饭了吗?我刚刚吃过。(现在我不饿了) (2)表示从过去某一时刻开始一直持续到现在的动作或状态。这个动作可能刚停止,可能仍然在进行。常带有for和since等表示一段时间的状语。 如:He has taught here since 1981 他自1981年就在这儿教书。(可能还要继续教) I haven't seen her for four years. 我有四年没见到她了。 (3)表示说话前发生过一次或多次的动作,现在成为一种经验,一般译为汉语“过”,常带有twice,ever, never,three times等时间状语。 如:I have been to Beijing twice.我去过北京二次。 3.现在完成时的时间状语 (1)现在完成时属于现在时范围,故不能和过去的时间状语连用。如:yesterday,last Sunday,in1990,three years ago等。但是,在强调动作产生的后果和影响时,可以和一些表示不确定的时间状语连用。 a. 用副词already和yet。already一般用于肯定句中,yet一般用于否定句和疑问句中。 如:We have already finished our homework.我们已完成作业了。 They haven't finished their homework yet.他们还没有完成作业。 b.用ever 和never。多用于否定或疑问句中,表示“曾经”或“从未“等。 如:-Have you ever been to the Great Wall? 你曾经去过长城吗? -I have never been to the Great Wall.我从未去过长城。 c.用表示到说话为止的过去时间状语,如just, before, up to now, the past few years等。 例如:I have seen her before, but I can not remember where. 我以前见过她,但记不起在哪里见过。

现在完成时的基本用法

现在完成时讲解与练习 (一)现在完成时的基本用法 (1)强调动作是从过去持续到现在,并有可能继续持续下去。 (2)强调对现在的影响或结果,此用法容易和一般过去时混淆。两者的区别是:一般过去时有动作发生的时间点,即过去某一时间发生某一动作;现在完成时则没有,即不强调是哪个时间点发生的动作,而强调过去的动作对现在造成的影响和结果。 (3)在过去不确定的时间里发生的动作,但是结果对现在有影响。一、现在完成时的构成 (一)肯定式 主语+助动词have /has +过去分词+其它 说明:这里的have /has是助动词,没有什么具体意义。当主语是第三人称单数时助动词用has,其余人称一律用have。has,have的缩略式分别为's或've。规则动词过去分词的构成与过去式的构成方式一样,不规则动词可参看不规则动词表。实例: 1)I've just copied all the new words .我刚抄写了所有的生词。(表示不要再抄了) 2)She has lost her books .她丢失了她的书。(表示到目前为止还没有找到) (如果用过去时:She lost her books . 则强调书是过去丢的这一动作,而不知现在有没有找到) 3)We've just cleaned the classroom .我们刚好打扫了教室。(表明现在教室是干净的) (二)否定式 主语+助动词have /has+not+过去分词+其它 说明:现在完成时构成否定句时,只需在助动词have /has后面加not就行。have not,has not的缩略式分别为haven't ,hasn't。另外,肯定句中有some,already时,改为否定时要分别改成any,yet。实例: 1)I haven't finished my homework yet.我还没有完成我的作业。 2)She hasn't travelled on a train .她没有坐火车旅行过。 3)We have never spoken to a foreigner.我们从来没有和外国人说过话。注:有时not可以用never代替,表示“从来没有”的意思。又如:

英语现在完成时的用法大全附解析百度文库

英语现在完成时的用法大全附解析百度文库 一、初中英语现在完成时 1.Nancy for five years. A. was dying B. has died C. died D. has been dead 【答案】 D 【解析】【分析】句意:南西去世五年了。A. was dying过去进行时态;B. has died现在完成时态;C. died一般过去时态; D. has been dead现在完成时态。句子强调的是过去开始的动作或状态一直延续到现在,句子用现在完成时态;die是一个非延续性动词,不能与表示一段时间的状语for…连用,用成be dead。故选D。 【点评】本题考查时态辨析。某人去世了多少年就用延续性动词的现在完成时,has been dead。 2.Mike used to be a top student, but he behind since he lost himself in computer games. A. fell B. has fallen C. was D. has been 【答案】 D 【解析】【分析】句意为“Mike过去是尖子生,但自从迷上电子游戏以来成绩落后了”。由since可知but后的主句用现在完成时,瞬间动词fall不能和since引导的时间状语从句连用,故用延续性动词be。故选D。 【点评】本题考查现在完成时中非延续性动词和延续性动词的转换。 3.— Hobo and Eddie the cinema to watch the film Zootopia. — Oh, that's why I can't find them now. A. have gone to B. have been to C. has gone to D. has been to 【答案】 A 【解析】【分析】考查主谓一致。句意:——侯博和埃迪去了电影院看电影《疯狂动物城》。——哦,这就是为什么我现在找不到他们的原因。have gone to去了;been to去过。Hobo and Eddie作主语,谓语动词要用复数形式。所以选A。 4.—What _______ you just now? —Don't worry. Nothing _______.

现在完成时用法84576

现在完成时(1) 基本结构: 肯定句: have/has+过去分词(done)+其他 否定句:have+not/haven’t +过去分词(done) +其他 has+not/ hasn’t+过去分词(done) +其他 一般疑问句及回答:Have/Has+主语+过去分词+其他 Yes, 主语+have/has.(肯定) No, 主语+haven't/hasn't.(否定) 一、表示在过去不确定的时间里发生的对现在造成影响的动作或结果。 I have already spent all of my money.(含义是:现在我没有钱花了) Guo zijun has just come. (含义:郭子君现在在这儿) My father has gone to work.(含义是:我爸爸现在不在这儿) 过去分词 1 、规则动词:规则动词的过去分词的构成规则与规则动词的过去式的构成规则相同。四点变化规则: (1)、一般动词,在词尾直接加“ ed ”。 work---worked---worked ,visit---visited---visited (2)、以“ e ”结尾的动词,只在词尾加“ d ”。 live---lived---lived , (3)、以“辅音字母+ y ”结尾的动词,将 "y" 变为 "i" ,再加“ ed ”。 study---studied---studied ,cry---cried---cried (4)、重读闭音节结尾,末尾只有一个辅音字母,先双写该辅音字母,再加“ ed ”。 stop---stopped---stopped , drop---dropped--dropped 2、不规则动词: do---did---done go---went---gone come---came---come have---had---had see---saw---seen be---was/were---been

什么叫串级控制系统

1.什么叫串级控制系统?画出一般串级控制系统的典型方块图。 答:串级控制系统是由其结构上的特征而得名的。它是由主、副两个控制器串接工作的。 主控制器的输出作为副控制器的给定值,副控制器的输出去操纵控制阀,以实现对变量的定值控制。 2.串级控制系统有哪些特点?主要使用在哪些场合? 答串级控制系统的主要特点为: (1)在系统结构上,它是由两个串接工作的控制器构成的双闭环控制系统; (2)系统的目的在于通过设置副变量来提高对主变量的控制质量} (3)由于副回路的存在,对进入副回路的干扰有超前控制的作用,因而减少了干扰对主变量的影响; (4)系统对负荷改变时有一定的自适应能力。 串级控制系统主要应用于:对象的滞后和时间常数很大、干扰作用强而频繁、负荷变化大、对控制质量要求较高的场合。 3.串级控制系统中主、剧变量应如何选择? 答主变量的选择原则与简单控制系统中被控变量的选择原则是一样的。 副变量的选择原则是:. (1)主、副变量间应有一定的内在联系,副变量的变化应在很大程度上能影响主变量的变化; (2)通过对副变量的选择,使所构成的副回路能包含系统的主要干扰; (3)在可能的情况下,应使副回路包含更多的主要干扰,但副变量又不能离主变量太近; (4)副变量的选择应考虑到主、副对象时间常数的匹配,以防“共振”的发生 4.为什么说串级控制系统中的主回路是定值控制系统,而副回路是随动控制系统? 答串级控制系统的目的是为了更好地稳定主变量,使之等于给定值,而主变量就是主回路的输出,所以说主回路是定值控制系统。副回路的输出是副变量,副回路的给定值是主控制器的输出,所以在串级控制系统中,副变量不是要求不变的,而是要求随主控制器的输出变化而变化,因此是一个随动控制系统。 5.怎样选择串级控制系统中主、副控制器的控制规律?

现在完成时的基本用法

现在完成时的基本用法 1、现在完成时表示影响 Hehasleftthecity.他已离开这个城市。(结果:他不在这个城市。) Someonehasbrokenthewindow.有人把窗户打破了。(结果:窗户 仍破着。) Ihavelostmypen.我把钢笔丢了。(结果:我现在无钢笔用。) Hehasfinishedhiswork.他把工作做完了。(结果:他现在可以做其他的事了。) 2、现在完成时表示持续 该用法的现在完成时表示一个过去发生的动作或开始的状语在过去并未完成或结束,而是一直持续到现在,并且有可能继续下去(也 可能到此结束),如汉语说“他在我们学校教书已有30年了”,显 然“他在我们学校教书”是从30年前开始,并且一直教到现在,已 经持续了30年;又如汉语说“自上个星期以来他一直很忙”,显然“忙”是从上个星期开始的,并且这一“忙”就一直忙到现在。如: Hehastaughtinourschoolfor30years.他在我们学校教书已有30 年了。 Hehasbeenbusysincelastweek.自上个星期以来他一直很忙。 Hehasworkedforuseversinceheleftschool.他离开学校以后就一直为我们工作。 3、现在完成时表示重复

即表示从过去某个时间直到现在的这个时间范围内不断重复发生的动作或情况,并且这个不断重复的动作有可能继续下去,也有可能到现在就结束。如: Howoftenhaveyouseenher?你隔多少见她一次? Myfatherhasalwaysgonetoworkbybike.我父亲一向骑车上班。 4、现在完成时表示将来 同一般现在时可以表示将来一样,现在完成时也可以在时间状语从句里表示将来。如: I’llwaituntilhehaswrittenhisletter.我愿等到他把信写完。 Whenyouhaverested,I’llshowyouthegarden.等你休息好之后,我领你看我们的花园。 二、现在完成时的基本定义和句型构成 基本定义 现在完成时有两种用法 1.过去发生的某一动作对现在造成的影响或结果。到现在为止已经发生或完成的动作。 2.表示过去发生的、持续到现在的动作或状态。 句型构成 基本结构:主语+have/has+动词的过去分词(p.p) 现在完成时用法 现在完成时用法 ①肯定句:主语+have/has+动词的过去分词(p.p)(V-ed)+宾语(或者其他). ②否定句:主语+havenot/hasnot+动词的过去分词(p.p)(V-ed)+宾语.

现在完成时的用法解析

Lead in 一般过去时导入:一般过去时的概念 一般过去时表示过去某个时间发生的动作或存在的状态。 I lost my pen.(过去时) I have lost my pen.(现在完成时) 过去时一般表示过去所发生的动作或存在的状态。“我把笔丢了”,说话人只是想告诉对方在过去的某一个时间里他的笔丢了,仅此而已。(仅仅是在陈诉过去的一个事实,与现在没有关系) New lesson 一.现在完成时的构成: 助动词have/has(not) +动词过去分词 She has turned on the lights. 肯定式:have/ has+过去分词 否定式:haven’t/hasn’t+过去分词 疑问式:把have/has 提到主语前面 肯定回答:Yes,…have/has 否定回答:No,…..haven’t/hasn’t 二.用法 1.表示过去发生的动作对现在造成的影响或结果. 例如:She has gone. 她走了. She went in the past.(She is not here

now.) I have just cleaned my hands. 我刚洗过手。(“洗手”是发生在过去的动作,对现在造成的结果是“手干净了”) I have closed the door. (The door is close now.) She has turned on the lights. (The lights are on now.) He has written his name on the blackboard. (The name is on the blackboard now.) Mother has cooked the dinner. (We can have dinner now.) You have seen the film. (You know what the film is about.) We have cleaned the classroom. (The classroom is clean now.) 2. 表示动作发生在过去,并且一直延续到现在,甚至还可能继续延续下去。这时常和since所引导的短语或从句或for引导的短语连用(for有时可以省去)。以及so far, by now, these days, in the last/past … years/days…等连用。 I have lived here for over ten years. (表示他现在还在这里居住,并且还有可能继续住下去)比较:I lived here ten years ago.(仅仅说明了他十年前在这里记住过的事实,不代表现在他还住在这里) He has studied here since 2006. 都用How long 提问,例: We have learned English for three years. We have learned English since three years ago.

现在完成时的用法

现在完成时的用法 一、概念 现在完成时主要强调过去发生的动作对现在造成的影响,或过去发生的动作还未结束,一直持续到现在或将来,重点在于对现在的影响。 二、理解: 现在完成时用来表示之前已发生或完成的动作或状态,其结果的确和现在有联系。动作或状态发生在过去但它的影响现在还存在;也可表示持续到现在的动作或状态。 四、基本用法: 1.已完成用法(影响性用法)。该用法的现在完成时表示一个过去发生的动作 在过去已经完成,并且这个过去发生并完成的动作对现在有影响或结果,同时 说话强调的或感兴趣的就是这个影响或结果。如:

He has left the city. 他已离开这个城市。(结果。如:他不在这个城市) Someone has broken the window. 有人把窗户打破了。(结果。如:窗户仍破着) Have you seen my bag? 你看到我的手提包了吗?(结果。如:你知道它在哪里吗?) I have bought two apples.我买了两个苹果。(“买”这一动作发生在过去,对现在造成的结果是:拥有两个苹果。) 【注】现在完成时“完成用法”的特点是动作不延续,因此,该时态只能与表示不定的过去时间状语(如:already,just, yet,before,recently等)、频度时间状语(如:never,ever,once等)、包括现在时刻在内的时间状语(如:this morning/month /year..., today等)连用。already,just多用于肯定句中,ever,yet,never多用于疑问句和否定句中。 如:I have already finished my homework.我已经做完家庭作业了。 He has just had his meal.他刚吃过饭。 Have you ever sung this English song?你曾唱过这首英文歌吗? They haven't started yet.他们还没有动身。 We have never heard of it.我们从来没有听说过这件事。 2.未完成用法(持续性用法)。如:该用法的现在完成时表示一个过去发生的动作并未在过去完成,而是一直持续到现在,并且有可能继续下去(也可能到此结束)。此种用法的句中常需一个表示一段时间的状语(由since或for引导),或表示与现在时刻相连的时间状语(如:up to now,so far到目前为止)等。如: He has lived here since 1971. 自从1971年以来,他一直住在这儿。 (动作起始于1971年,一直住到现在,可能还要继续住下去。) We have been in the army for more than 5 years. 我们在部队已经呆了五年多了。 (动作开始于5年前,一直延续至今,有可能还要继续下去。) Have you waited long? 你等了很久吗? We have been busy this afternoon. 今天下午我们一直很忙。 The temperature has stayed hot this week. 这星期天气一直很热。

现在完成时延续性与暂短性动词用法

现在完成时(短暂性动词与延续性动词)的用法 基本结构:主语+have/has+过去分词(done) ①肯定句:主语+have/has+过去分词+其他 ②否定句:主语+have/has+not+过去分词+其他 ③一般疑问句:Have/Has+主语+过去分词+其他 ④特殊疑问句:特殊疑问词+一般疑问句(have/has+主语+过去分词+其他)(1)现在完成时用来表示现在之前已发生过或完成的动作或状态,但其结果却和现在有联系,也就是说,动作或状态发生在过去但它的影响现在还存在. I have spent all of my money.(含义是:现在我没有钱花了.) Jane has laid the table.(含义是:现在桌子已经摆好了.) Michael has been ill.(含义是:现在仍然很虚弱) He has returned from abroad. (含义是:现在已在此地) (2)现在完成时可以用来表示发生在过去某一时刻的,持续到现在的动作(用行为动词表示)或状态(be动词表示)常与for(+时间段),since(+时间点或过去时的句子)连用. Mary has been ill for three days. I have lived here since 1998. 注(超重要):瞬间动词(buy,die,join,lose……)不能直接与for since 连用。要改变动词 come-be go out-be out finish-be over open-be open die-be dead 1.have代替buy My brother has had(不能用has bought) this bike for almost four years. 2、用keep或have代替borrow I have kept(不能用have borrowed) the book for quite a few days. 3、用be替代become How long has your sister been a teacher? 4、用have a cold代替catch a cold Tom has had a cold since the day before yesterday. 5、用wear代替put on b)用“be+形容词”代终止性动词 1、be+married代marry 2、be+ill代fall (get) ill 3、be+dead代die 4、be+asleep代fall (get) asleep 5、be+awake代wake/wake up 6、be+gone代lose,die,sell,leave 7、be+open代open 8、be closed代close/shut 9、be+missing(gone,lost)代lose c)用“be+副词”代终止性动词 1“be+on”代start,begin 2“be+up”代get up 3“be+back(to)”代return to,come back to,go back to 4“be here (there)”代come(arrive,reach,get) here或go (arrive,reach,get) there等等

现在完成时的构成和用法教学提纲

现在完成时的构成和用法 I. 现在完成时 1.概念:过去发生或已经完成的动作对现在造成的影响或结果,或从过去已经开 始,持续到现在的动作或状态。 2.时间状语:yet,already,just,never,ever,so far,by now,since+时间点,for+时间段, recently, lately, in the past few years, etc. 3.基本结构:主语+have/has +p.p(过去分词)+其他 4.否定形式:主语+have/has + not +p.p(过去分词)+其他 5.一般疑问句:have或has。 6.例句:I've written an article. The countryside has changed a lot in the past few years. II.现在完成时 1. 现在完成时的构成:助动词have/has + 过去分词 2. 现在完成时的主要用法 ⑴表示从过去某一时刻开始并一直延续到现在的动作或事情,但动作或事情现在 已经结束。 Someone has just turned off the light. 有人刚把灯关了。 I have already finished my homework. 我已经完成了家庭作业。 ⑵表示从过去某一时刻开始并一直延续到现在的动作或事情,但动作或事情可能 仍在继续。 I want to see how much the place changed since I saw it last. 我想看看从上次见到那地 方以来它发生了多大变化。 I have learnt English for more than ten years. 我已经学了10多年的英语。 ⑶表示人曾有过或到目前为止从未有过的经历. Have you ever been to the Summer Palace? 你曾去过颐和园吗? I have never had a car. 我从未有过汽车。 ⑷现在完成时还常与句型This is the first time…,It’s the first time …连用。 This is the first time he has driven a car. 这是他第一次开车。 ⑸现在完成时和最高级连用表示到现在为止是最…的。 It’s the most boring film I’ve ever seen.这是我看过的最令人厌烦的电影。 3. 现在完成时的时间状语 ⑴常与不确定的时间状语连用,如:already, never, ever, just, yet, before, up to now, so far, for the last few weeks等,表示“到目前为止”所发生的动作. ⑵还可以和包括现在在内(到说话时仍未结束)的,表示一段时间的状语连用, 如:now, today, this morning (afternoon, evening, week, month, year), these days, since, for a long time等. ⑶since短语或从句表示过去的动作延续至今,since之后的时间为一点。 Mr. Smith has worked here since 1984. 1984年以来,史密斯先生一直在这工作。

英语中现在完成时的基本用法讲解

英语中现在完成时的基本用法讲解 (含义:我对他有所了解了,现在能够谈谈他的情况了。 )Have you been to Paris?你去过巴黎吗?(含义:如果你去过,你可以谈谈巴黎的情况。 如果你没有去过,我建议你去看看,或者我现在给你介绍一下巴黎的情况。 )We have never heard of such a man.我们从来没有听说过这样的人。 (含义:因此我们对“他一无所知,你问我们也是白问。 )模仿造句:1.因此,我们以前参观莫斯科(Moscow)。 2.你弟弟去去印度(India)吗? 3.这些孩子从未用过电脑。 2.现在完成时,表示过去某种行为的结果对现在有直接的影响Tom has lost his pen.汤姆的钢笔已经丢了。 (含义:结果是现在没笔用,必须借一支笔,或者买一支笔。 )Dad, I have finished my homework.爸爸,我已经做完家庭作业了。 (含义:现在应该可以让我出去玩会或者看下电视了。 )He has gone to Hong Kong.他已经去香港了。 (含义:结果是他不在这里,你在这儿见不到他了。 )模仿造句:1.杰克已把铅笔弄断了。 2.妈,我已经吃过中饭了。 3.玛丽已经去广州了。 3.现在完成时,表示某经历的时间长度(一般用for引导的时间状

语)Mr. Smith has been in China for 10 years.史密斯先生在中国待过10年了。 (含义:他待的时间够长的了,他对中国的情况很熟了,或者他的中文自然讲得很棒了。 )Jane has stayed in Shanghai for 3 days.珍妮在上海待了两天。 (含义:珍妮待在上海的时间短,对这里的情况还很不熟悉,或者她不应该马上离开,应该多玩几天。 )I have taught English for 10 years.我已经教英语10年了。 (含义:我教英语的时间已经非常长了,有丰富的教学经验了。 )模仿造句:1.简(Jane)已经在杭州住了8年了。 2.我妈已经在这家公司工作20年了。 3.今天我已经练英语口语2个小时了。 本文作者:丹丹英语(公众号:英语语法学习)本文已获转载授权,版权归作者所有,如需转载,请联系原微信公众号“英语语法学习。

英语现在完成时用法总结含答案解析百度文库

英语现在完成时用法总结含答案解析百度文库 一、初中英语现在完成时 1.—What _______ you just now? —Don't worry. Nothing _______. A. has happens to; has happened B. happened; happened C. happened; has happened D. happened to; has happened 【答案】D 【解析】【分析】句意:---刚才你发生了什么事?---别担心,没什么事发生。固定句式What happened to……发生了什么?第二空是回答之前并没有发生任何事情,所以不必担心,用现在完成时,has happened,故答案为D。 【点评】考查动词时态,一般过去时表示过去某个时间发生的动作;现在完成时表示过去的动作对现在造成的结果或影响。 2.—How do you like Beijing, Miss Read? —I've no idea. I _____ there. A. have gone B. have been C. haven't been D. haven't gone 【答案】 C 【解析】【分析】句意:---你觉得北京怎么样,瑞得小姐?---我不知道,我没有去过那儿。短语:have been to去过某地(已经返回);have gone to去了某地(尚未返回),根据句意,故答案为C。 【点评】考查短语辨析,区分have been to与have gone to,理解句子,根据语境判断答案。 3.This museum here for over 80 years. It one of the oldest buildings in this city. A. is; was B. had been; is C. was; has been D. has been; is 【答案】 D 【解析】【分析】考查动词的时态。句意:博物馆在这儿有八十多年了。它是这座城市最古老的建筑之一。前句表示从过去一直延续到现在的状态,用现在完成时态;后句表示的是现在的状态,用一般现在时态。故选D。 4.My mother a good example for me since I was young. A. was B. has been C. will be D. is 【答案】 B 【解析】【分析】句意:打小以来,妈妈就是我的好榜样。根据时间状语“since l was young”可知,主句应用现在完成时,表示动作从过去一直持续到现在。故选B。

串级控制系统的原理及设计

串级控制系统的原理及设计中应注意的问题 摘要:介绍了串级控制系统的基本原理,性能和设计中应注意的几个问题。 关键词:内环;外环;增益;时间常数;对象;共振现象;积分饱和现象。 1、概述 1.1串级控制系统介绍 单回路控制系统只用一个调节器,调节器只有一个输入信号,即只有一个闭环,在大多数情况下,这种简单系统能够满足工艺生产的要求。但是也有一些另外的情况,譬如调节对象的动态特性决定了它很难控制,而工艺对调节质量的要求又很高;或者对调节对象的控制任务要求特殊,则单回路控制系统就无能为力了。另外,随着生产过程向着大型、连续和强化方向发展,对操作条件要求更加严格,参数间相互关系更加复杂,对控制系统的精度和功能提出许多新的要求,为此,需要在单回路的基础上,采取其他措施,组成复杂控制系统。串级控制是改善调节过程的一种极为有效的方法,并且在实际中得到了广泛的应用。我厂的生产过程自动控制系统中,串级控制系统是应用最为广泛的复杂控制系统。 1.2 (简单控制系统) 图1.1是精馏塔底部示意图,在再沸器中,用蒸汽加热塔釜液产生蒸汽,然后在塔釜中与下降物料流进行传质传热。为了保证生产过程顺利进行,需要把提馏段温度t保持恒定。为此,在蒸汽管路上装一个调节阀,用它来控制加热蒸汽流量。从调节阀动作到温度t发生变化,需要相继通过很多热容积。实践证明,加热蒸汽压力的波动对温度t的影响很大。此外,还有来自液相加料方面的各种扰动,包括他的流量、温度和组分等,它们通过提馏段的传质传热过程,以及再沸器中的传热条件(塔釜温度、再沸器液面等),最后也影响到温度t。当加热蒸汽压力较大时,如果采用图1.1所示的简单控制系统,调节质量一般都不能满足生产要求。如果采用一个附加的蒸汽压力控制系统,把蒸汽压力的干扰克服在入塔前,这样也提高了温度调节的品质,但这样就需要增加一只调节阀并增加了蒸汽管路的压力损失,在经济上很不合理。 比较好的方法是采用串级控制,如图1.2所示。

(完整word版)初中现在完成时讲解练习

现在完成时精讲和专练 I.定义: 表示过去发生或已经完成的动作对现在造成的影响或结果,也可以表示过去已经开始,一直延续到现在的动作或状态 II.现在完成时的结构 简略答语: 注意:表示短暂时间动作的词,如:come,go,die,marry,buy等的完成时不能与for,since等表示一段时间的词连用。用来持续的动作或状态或表过去重复的动作,如live,study,be,wait等,常和since(自从)或for(经历)引导的词语连用。 如:I have lived here for more than thirty years.我已在此住了30多年。 III.现在完成时的标志 1.现在完成时的含义之一是过去完成的动作对现在仍有影响, 现在完成时通常和,ever, never, twice(once…), so far(到目前为止), since,for,in the past/last few years(在过去几年), already(肯定句), yet(否定,疑问句), just(刚刚), before(以前), recently(近来)等词连用 说明:already与yet都有“已经”的意思,但already常用于肯定句,并用于句中。yet常用于否定句和疑问句,并用于句末。例如: I have already finished my homework. I haven’t finished my homework yet. Have you finished your homework yet? They have left. (他们已经离开了,也就是说现在他们人不在这里) I have had my lunch. (我已经吃过午饭了,也就是说我现在不饿) I can’t find my watch now. I think I have already lost it. 2.过去已经开始的动作一直延续到现在, 甚至有可能继续延续下去,我们可以从动作“延续”的特性和“时间”点段的区分入手。 ①for+时段②since+过去一个时间点(过去从句)为标志 注意:1)现在完成时不能单独与过去的时间状语连用, 如yesterday, last week, three years ago 等; 2)不能与when连用 IV.现在完成时的用法

串级控制系统参数整定

实验三:串级控制系统参数整定 PID 控制器由于自身具有的相对容易理解和实现的特点而被广泛应用于过程控制工业中。 在实践中,它经常被融入一个复杂的控制结构中,以达到一个更好的控制效果。在这些复杂的控制结构中,通常利 用串级控制组合来减小干扰引起的最大偏差和积分误差。容易实现的优点和潜在的大控制性能的提高导致串级控制广泛应用达数十年。它已经成为一个由工业过程控制器提供的标准应用。 串级控制系统由两个控制回路构成:一个可以快速动态消除输入干扰的内部回路,和一个可以调节输出效果的外部 回路。通常,他们是通过一个连续的方式来整定的。首先,外部回路控制器设置为手动,对内部回路进行整定。随后, 启用内部回路的整定结果,接着整定外部回路。如果控制效果不理想,应该调换整定的顺序。所以,整定串级控制系统 是一项相当笨重耗时的任务,特别是具有大时间常数和时间延迟的系统。 PID 自整定解除了手动整定控制器的烦恼,并且已经成功的应用于很多工业领域中。但是,到目前为止,却很少有关于串 级系统自整定技术的发展的文学报道。其中,Li et al 利用模糊逻辑进行串级控制器的自整定。Hang et al. 应用一个重复的延迟自动整定方法来整定串级控制系统,延迟反馈测试被验证了两次,一次在内部回路,另一次在外部回路。虽然特 殊的控制器整定已经被自动化,但整定过程的自然顺序并没有改变。Tan 提出了一个在一个实验中实行整体整定过程的方法,但是这个实验需要过程的过去的信息。而且,外部回路设计时所用的极限频率是基于未考虑内部回路控制参数改 变的初始极限频率。这篇论文提供了串级控制系统自整定的一种新方法。通过利用串级控制系统的基本性能,在外部回 路中利用一个简单的延迟反馈测试来确定内部和外部回路过程模型参数。 一个基于Pade 系数和Markov 参数,匹配PID 控制器整定方法的模型,被提出来控制整体系统效果。两个例子来说明该方法的有效性。 2.串级控制系统的基本原理 图1 串级控制组合的结构如图1,内部回路嵌套于外部回路里,外部回路的输出变量是被控对象。控制系统由两个过程 和两个控制器组成。分别为外部回路传递函数1p G ,内部回路传递函数2p G ,外部回路控制器1c G 和内部回路控制器2c G 。 串级控制系统的两个控制器都是标准的反馈控制器。通常情况下,内部回路为一个比例控制器,当内部回路过程包 含基本时间延迟时需要用到积分作用,外部过程使内部回路增益是有限的。 为了在它影响到外部回路之前减小或消除内部回路干扰 d 2,内部回路比外部回路应该有一个更快的动态响应(工业经验法则里,至少应快5倍以上)。因此,内部闭环回路的相位滞后应该比外部回路小。这个特点就是应用串级控制的基本原理。内部回路的交叉频率比外部回路高,使内部回路控制器有更高的增益,能够在没有危及系统的稳定性的情况下

相关文档