当前位置:文档之家› Esper学习之十二:EPL语法(八)

Esper学习之十二:EPL语法(八)

Esper学习之十二:EPL语法(八)
Esper学习之十二:EPL语法(八)

为了能更好的方便大家学习Esper,我向csdn申请了Esper的专栏,并且很荣幸的成为第一个Esper专栏的作者。在此也非常感谢各位童鞋对本专栏的支持,我会一如既往的将本专栏完善下去。

今天的内容十分重要,在Esper的应用中是十分常用的功能之一。它是一种事件集合,我们可以对这个集合进行增删查改,所以在复杂的业务场景中我们肯定不会缺少它。它就是Named Window。

由于本篇篇幅较长,希望各位童鞋慢慢阅读,并仔细研究文档中或者我给出的例子。

1.Create Named Window

本篇的开头有说过named window是一种事件集合,它可以存储一种类型或多种类型的事件。如果我们不移除named window中的事件,那么事件应该存在生命周期,否则事件过多会有内存溢出的风险。所以我们在创建named window的时候会附带事件的过期策略,而各种过期策略就是用view来表达。named window的创建方式有三种:a.用已有的事件结构创建;b.自定义named window存放的事件格式;c.将已有的named window中包含的事件写入到新的named window中,即复制named window。

a.Creation by Modelling after an Existing Type

语法如下:

[plain]view plaincopy

1.[context context_name] create window window_name.view_speci

fications [as] [select list_of_properties from] event

1)context是关键字,后面跟着之前定义的context的名称。关于context的内容,请参看《Esper学习之三:Context》

2)create window后跟着要创建的named window的名字,且具有唯一性。名字后面紧跟着的“.”是用来连接事件过期策略的,即view。常用的view有

win:length,win:length_batch,win:time,win:time_batch,std:unique,std:groupwin 及自定义view等等,并且特定的view可以连用。PS:view的相关内容我打算在EPL语法讲解完之后就为各位呈上,以免影响其他章节的学习。3)select子句表示将某个事件定义中的全部或者某些属性作为named window 所维护的事件属性。如果将某个事件的所有属性都加入到named window中,则可以通过select子句前的as连接事件名称,并且省略select子句。这个将在

接下来的例子进行说明。

举几个例子说明下:

[plain]view plaincopy

1.// FruitWindow保持最近10分钟的Apple事件

2.create window FruitWindow.win:time(10 min) as Apple

3.

4.// FruitWindow保持最近5分钟的Apple事件,但只包含size和price

属性

5.create window FruitWindow.win:time(5 min) as select size,

price from Apple

b.Creation By Defining Columns Names and Types

和上一种创建方式不同,Esper允许自己指定named window能维护哪些属性,而不是通过别的事件定义来指定。语法如下:

[plain]view plaincopy

1.[context context_name]

2.create window window_name.view_specifications [as] (column_

name column_type[,column_name column_type [,...]])

column_name表示属性名称,column_type表示属性类型。属性可以是一个,也可以是多个,多个用逗号分隔。示例如下:

[plain]view plaincopy

1.// 创建包含普通属性的named window

2.create window SecurityEvent.win:time(30 sec) (ipAddress st

ring, userId String, numAttempts int, properties String[] )

3.

4.// 创建包含事件类型属性的named window

5.create schema SecurityData (name String, roles String[])

6.create window SecurityEvent.win:time(30 sec) (ipAddress st

ring, userId String, secData SecurityData, historySecData SecurityData[])

c.Populating a Named Window from an Existing Named Window

这一节在文档中并没有放到create named window里,不过我认为这也是一种创建方式,所以就放在这里讲解了。这种创建方式很容易懂,就是将已经存在的named window中的event写到新的named window中。语法如下:[plain]view plaincopy

1.[context context_name] create window window_name.view_speci

fications as windowname insert [where filter_expression]

windowname后面紧跟insert,表示将该window中的事件插入到新建的named window中。where filter_expression表示过滤插入的事件。实例如下:[plain]view plaincopy

1.create window ScratchBuyOrders.win:time(10) as OrdersNamedW

indow insert where side = 'buy'

以上就是三种创建方式,另外还有一个注解的使用,可以使触发时往Listener

中传入的事件是数组或者map形式。这个需要各位自己调试的时候才能看到效果。实例如下:

[plain]view plaincopy

1.// 以数组形式反馈给UpdateListener

2.@EventRepresentation(array=true)create window FooWindow.win:t

ime(5 sec) as (string prop1)

3.

4.// 以Map形式反馈给UpdateListener

5.@EventRepresentation(array=false)create window FooWindow.win:

time(5 sec) as (string prop1)

6.... equals ...

7.create window FooWindow.win:time(5 sec) as (string prop1)

2.Inserting Into Named Windows

创建好named window以后,我们就可以往里面插入事件了。插入的语法很简单,基本上和insert into语法一样。关于insert into,请参见《Esper 学习之八:EPL语法(四)》。下面直接举几个例子:

[plain]view plaincopy

1.1)

2.// create named window with some properties of OrderEve

nt

3.create window OrdersWindow.win:keepall() as select symbol,

volume, price from OrderEvent

4.

5.// insert into events to named window

6.insert into OrdersWindow(symbol, volume, price) select na

me, count, price from FXOrderEvent

7.... equals ...

8.insert into OrdersWindow select name as symbol, vol as

volume, price from FXOrderEvent

9.

10.2)

11.// create named window with POJO

12.create window OrdersWindow.win:time(30) as com.mycompany.Or

derEvent

13.

14.// insert into events to named window

15.insert into OrdersWindow select * from com.mycompany.Orde

rEvent(symbol='IBM')

16.

17.3)

18.// create named window

19.create window OrdersWindow.win:time(30) as select *, pric

e as derivedPrice from OrderEvent

20.

21.// insert into events to named window with custom func

tion

22.insert into OrdersWindow select *, MyFunc.func(price, per

cent) as derivedPrice from OrderEvent

23.

24.4)

25.// create named window

26.create window OrdersWindow.win:time(30) as select *, pric

e as priceTotal from OrderEvent

27.

28.// insert into events to named window

29.insert into OrdersWindow select *, price * unit as pri

ceTotal from ServiceOrderEvent

30.

31.5)

32.// create a named window for the base class

33.create window OrdersWindow.std:unique(name) as select * f

rom ProductBaseEvent

34.

35.// The ServiceProductEvent class subclasses the ProductBa

seEvent class

36.insert into OrdersWindow select * from ServiceProductEven

t

37.

38.6)

39./**

40. * interface InterfaceEvent {

41. * public int getPrice();

42. * public String getName();

43. * }

44. */

45.// create a named window for the inteface

46.create window InterfaceWindow.win: time(2 sec) as select

* from InterfaceEvent

47.

48.// The InterfaceEventImpl is the implements for Interfac

eEvent

49.insert into InterfaceWindow select * from InterfaceEventI

mpl

从以上几个例子可以看得出,创建named window时用的事件类型只是用了该事件类型的属性定义,只要insert的事件列出了对应的属性名称就可以,当然属性的数据类型也得对应。如果属性名不对应,可以用as来重命名,就像例3和例4那样。第5个例子表明子类可以插入到父类定义的named window 中。第六个例子表明实现类可以插入到用接口定义的named window中。

3.Selecting From Named Windows

这一节主要讲解如何查询named window中的事件。准确来说这并不是一种无条件的查询方式,监听器监听查询语句以后,必须发送对应的事件(创建window时指定的事件类型),然后先看是否满足named window的输出条件,再看是否满足查询语句的输出条件,所以并不是named window中的事件都会发给监听器。咱们先看一个例子:

[plain]view plaincopy

1.// first, you should create the AllOrdersNamedWindow

2.create named window AllOrdersNamedWindow.win:length_batch(3)

as OrderEvent

3.

4.select * from AllOrdersNamedWindow

这个select句子看似很简单,实际上并不是查询AllOrdersNamedWindow中的事件。实际过程是这样的:首先引擎检查AllOrdersNamedWindow中有多少事件,因为过期策略是length_batch(3),意思是当 AllOrdersNamedWindow中包含3个事件,才会将这3个事件同时输出,然后再等待新的3个事件,然后再一起输出这3个事件。。。所以当输入某一

个事件时,若不满足3个数量,则select语句不会返回任何内容。若满足3个数量,则监听select语句的监听器会得到 AllOrdersNamedWindow中的最新的3各事件。

下面的几个句子都只有在length_batch(3)满足条件时才能有事件输

出。

如果想查到上一次过期的3个事件,则查询语句改成下面的样子:

[plain]view plaincopy

1.select rstream * from AllOrdersNamedWindow

如果只想查询AllOrdernamedWindow里面的某几个属性,并且加上一些限制条件查看特定的事件,则查询语句改成下面的样子:

[plain]view plaincopy

1.select symbol, avg(price) from AllOrdersNamedWindow(sector=

'energy') group by symbol

因为上面所说的特点,所以查询语句可以在事件发送后再建立,也就是说我什么时候想查什么时候再建句子,named windows里有多少事件就如实返回多少。下面举个完整的例子总结一下:

[java]view plaincopy

1.package example;

2.

3.import com.espertech.esper.client.EPAdministrator;

4.import com.espertech.esper.client.EPRuntime;

5.import com.espertech.esper.client.EPServiceProvider;

6.import com.espertech.esper.client.EPServiceProviderManager;

7.import com.espertech.esper.client.EPStatement;

8.import com.espertech.esper.client.EventBean;

9.import com.espertech.esper.client.UpdateListener;

10.

11./**

12. * Created by Luonanqin on 3/19/14.

13. */

14.class SelectEvent {

15.

16. private int price;

17. private String name;

18.

19. public int getPrice() {

20. return price;

21. }

22.

23. public void setPrice(int price) {

24. this.price = price;

25. }

26.

27. public String getName() {

28. return name;

29. }

30.

31. public void setName(String name) {

32. https://www.doczj.com/doc/72907683.html, = name;

33. }

34.

35. @Override

36. public String toString() {

37. return "name="+name+", price="+price;

38. }

39.}

40.

41.class SelectNamedWindowListener implements UpdateListener{

42.

43. public void update(EventBean[] newEvents, EventBean

[] oldEvents) {

44. if (newEvents != null) {

45. System.out.println("There is "+newEve

nts.length+" events to be return!");

46. for (int i = 0; i < newEvents.

length;i++) {

47. System.out.println(newEvents[i]

.getUnderlying());

48. }

49. }

50. }

51.}

52.public class SelectNamedWindowTest{

53.

54. public static void main(String[] args) {

55. EPServiceProvider epService = EPServiceProvi

derManager.getDefaultProvider();

56. EPAdministrator admin = epService.getEPAdmin

istrator();

57. EPRuntime runtime = epService.getEPRuntime()

;

58.

59. String selectEvent = SelectEvent.class.getNa

me();

60.

61. String epl1 = "create window SelectNamedWi

ndow.win:length_batch(3) as " + selectEvent;

62. admin.createEPL(epl1);

63. System.out.println("Create named window: cre

ate window SelectNamedWindow.win:length_batch(3) as "+selec tEvent);

64. String epl2 = "insert into SelectNamedWind

ow select * from " + selectEvent;

65. admin.createEPL(epl2);

66.

67. SelectEvent se1 = new SelectEvent();

68. se1.setName("se1");

69. se1.setPrice(1);

70. System.out.println("Send SelecEvent1 " + se

1);

71. runtime.sendEvent(se1);

72.

73. SelectEvent se2 = new SelectEvent();

74. se2.setName("se2");

75. se2.setPrice(2);

76. System.out.println("Send SelecEvent2 " + se

2);

77. runtime.sendEvent(se2);

78.

79. // Can't create "select * from Selectamed

Window.win:time(3 sec)"

80. String epl3 = "select * from SelectNamedW

indow(price>=2)";

81. EPStatement state3 = admin.createEPL(epl3);

82. state3.addListener(new SelectNamedWindowListen

er());

83. System.out.println("Register select sentence:

select * from SelectNamedWindow(price>=2)");

84.

85. SelectEvent se3 = new SelectEvent();

86. se3.setName("se3");

87. se3.setPrice(3);

88. System.out.println("Send SelecEvent3 " + se

3 + "\n");

89. runtime.sendEvent(se3);

90. }

91.}

执行结果:

[plain]view plaincopy

1.Create named window: create window SelectNamedWindow.win:l

ength_batch(3) as example.SelectEvent

2.Send SelecEvent1 name=se1, price=1

3.Send SelecEvent2 name=se2, price=2

4.Register select sentence: select * from SelectNamedWindow

(price>=2)

5.Send SelecEvent3 name=se3, price=3

6.

7.There is 2 events to be return!

https://www.doczj.com/doc/72907683.html,=se2, price=2

https://www.doczj.com/doc/72907683.html,=se3, price=3

上面的例子有一段注释“select * from

SelectamedWindow.win:time(3 sec)”,实际上是因为win:time(3 sec)这个东西,之前create named window的时候,已经使用了一个win的view,所以这里就不能再使用win的view了。这个与view相关,就一笔带过了。另外还有一点,在 select句子中的filter如果使用了variable,当变量的值在句子创建后改变了,引擎不会读取新的值,这个需要额外注意。

4.Triggered Select on Named Windows:On Select

上一节说到的查询方式实际上并不是很好用,而这一节就提供了一个非常简单的查询办法。他是通过发送一个触发事件即可得到当前window里有些什么事件,你还可以设置这个触发事件满足什么要求才可触发,或者这个触发事件和window中的事件达到某种关联后输出符合这个关联的事件或事件的部分属性。先来看看语法:

[plain]view plaincopy

1.on event_type[(filter_criteria)] [as stream_name]

2.select select_list from window_name [as stream_name]

3.[where criteria_expression] [group by grouping_expression_l

ist] [having grouping_search_conditions] [order by order_b

y_expression_list]

event_type表示用来触发的事件,可以是任何一种事件类型,也可以是pattern(用来表达较为复杂的触发条件)。后面用括号括起来的包含了触发事件的限制条件,必须满足这个里面约定的条件才可用来触发查询。as stream_name为可选参数,主要用于具体的查询语句或者与window做关联用。select语句就不说了,和普通的没太大区别。后面的 where条件限制了查询结果,满足结果的才可返回给监听器。group by、having、order by和之前说的用法一样,这里不做说明了。我们先来看几个简单的例子:

[plain]view plaincopy

1.// QueryEvent作为触发事件,查询OrderNamedWindow中的所有事件,

并附带触发的事件作为结果返回(什么意思?)

2.on QueryEvent select * from OrdersNamedWindow

3.

4.// QueryEvent作为触发事件,查询OrderNamedWindow中的所有事件作

为结果返回(懂了吧)

5.on QueryEvent select win.* from OrdersNamedWindow as win

6.

7.// volume 大于0的QueryEvent作为触发事件,查询OrderNamedWindow

中的事件,且事件的symbol要与QueryEvent的 symbol一样,返回满足条件的window事件的symbol值,以及QueryEvent的symbol和volume

8.on QueryEvent(volume>0) as query

9.select query.symbol, query.volume, win.symbol from OrdersN

amedWindow as win

10.where win.symbol = query.symbol

11.

12.// group by, having, order by的用法与前面所讲无差别,都是

针对查询出来的事件

13.on QueryEvent

14.select symbol, sum(volume) from OrdersNamedWindow as win

15.group by symbol having volume > 0 order by symbol

16.

17.// 每一次OrderNamedWindow有变化并满足限制条件即可触发监听器返

回window中的事件。

18.on OrdersNamedWindow as trig

19.select onw.symbol, sum(onw.volume) from OrdersNamedWindow

as onw

20.where onw.symbol = trig.symbol

前两个例子我相信大家已经明白了。如果select子句里是*,则返回的不仅仅是window中的事件,还会返回触发查询的事件,并且返回的多行结果中每行都会包含这个触发事件。第三个例子可以看出as的用法。最后一个例子有些特别,触发的事件就是named window本身,目的就是为了named window 变化了就能返回变化后的结果。但是这里的“变化”不是简单的事件有增加或者减少,而是指named window定义时指定的view达到触发条件有输出了,你才能真的看到查询结果。下面列一个完整的例子来概括一下上面说到的几点内容:[java]view plaincopy

1.package example;

2.

3.import com.espertech.esper.client.EPAdministrator;

4.import com.espertech.esper.client.EPRuntime;

5.import com.espertech.esper.client.EPServiceProvider;

6.import com.espertech.esper.client.EPServiceProviderManager;

7.import com.espertech.esper.client.EPStatement;

8.import com.espertech.esper.client.EventBean;

9.import com.espertech.esper.client.UpdateListener;

10.

11./**

12. * Created by Luonanqin on 3/29/14.

13. */

14.class OnSelectTrigger {

15. private int trigger;

16.

17. public int getTrigger() {

18. return trigger;

19. }

20.

21. public void setTrigger(int trigger) {

22. this.trigger = trigger;

23. }

24.

25. public String toString() {

26. return "trigger=" + trigger;

27. }

28.}

29.

30.class OnSelectEvent {

31. private String name;

32. private int size;

33.

34. public String getName() {

35. return name;

36. }

37.

38. public void setName(String name) {

39. https://www.doczj.com/doc/72907683.html, = name;

40. }

41.

42. public int getSize() {

43. return size;

44. }

45.

46. public void setSize(int size) {

47. this.size = size;

48. }

49.

50. public String toString() {

51. return "name=" + name + ", size=" + siz

e;

52. }

53.}

54.

55.class OnSelectWindowListener implements UpdateListener {

56.

57. public void update(EventBean[] newEvents, EventBean

[] oldEvents) {

58. if (newEvents != null) {

59. System.out.println("Trigger On Select

:");

60. System.out.println("There is " + ne

wEvents.length + " OnSelectEvent in OnSelectWindow!"); 61. for (int i = 0; i < newEvents.le

ngth; i++) {

62. System.out.println(newEvents[i]

.getUnderlying());

63. }

64. }

65. }

66.}

67.

68.public class OnSelectWindowTest {

69.

70. public static void main(String[] args) {

71. EPServiceProvider epService = EPServiceProvi

derManager.getDefaultProvider();

72. EPAdministrator admin = epService.getEPAdmin

istrator();

73. EPRuntime runtime = epService.getEPRuntime()

;

74.

75. String triggerEvent = OnSelectTrigger.class.

getName();

76. String selectEvent = OnSelectEvent.class.get

Name();

77.

78. // win:keepall()使named window中的事件一直保

79. // String epl1 = "create window OnSelectW

indow.win:keepall() as select * from " + selectEvent;

80. String epl1 = "create window OnSelectWindo

w.win:length(2) as select * from " + selectEvent;

81. String epl2 = "insert into OnSelectWindow

select * from " + selectEvent;

82. String epl3 = "on " + triggerEvent + "(

trigger>=2) select osw.* from OnSelectWindow as osw";

83.

84. System.out.println("Create Window:" + epl1);

85. System.out.println("Trigger sentence: " + e

pl3);

86. System.out.println();

87.

88. admin.createEPL(epl1);

89. admin.createEPL(epl2);

90. EPStatement state3 = admin.createEPL(epl3);

91. state3.addListener(new OnSelectWindowListener(

));

92.

93. OnSelectEvent ose1 = new OnSelectEvent();

94. ose1.setName("ose1");

95. ose1.setSize(1);

96. runtime.sendEvent(ose1);

97. System.out.println("Send OnSelectEvent 1: "

+ ose1);

98.

99. OnSelectEvent ose2 = new OnSelectEvent();

100.ose2.setName("ose2");

101.ose2.setSize(2);

102.runtime.sendEvent(ose2);

103.System.out.println("Send OnSelectEvent 2 : " + ose2);

104.

105.OnSelectEvent ose3 = new OnSelectEvent ();

106.ose3.setName("ose3");

107.ose3.setSize(3);

108.runtime.sendEvent(ose3);

109.System.out.println("Send OnSelectEvent 3 : " + ose3);

110.

111.OnSelectTrigger ost1 = new OnSelectTri gger();

112.ost1.setTrigger(1);

113.System.out.println("Send OnSelectTrigger " + ost1);

114.runtime.sendEvent(ost1);

115.

116.OnSelectTrigger ost2 = new OnSelectTri gger();

117.ost2.setTrigger(2);

118.System.out.println("Send OnSelectTrigger " + ost2 + "\n");

119.runtime.sendEvent(ost2);

120.

121.System.out.println();

122.

123.String epl4 = "on OnSelectWindow sele ct osw.* from OnSelectWindow as osw";

124.EPStatement state4 = admin.createEPL(ep l4);

125.state4.addListener(new OnSelectWindowList ener());

126.

127.System.out.println("Trigger sentence: "

+ epl4 + "\n");

128.

129.OnSelectEvent ose4 = new OnSelectEvent ();

130.ose4.setName("ose4");

131.ose4.setSize(4);

132.System.out.println("Send OnSelectEvent 4 (also a Trigger): " + ose4 + "\n");

133.runtime.sendEvent(ose4);

134.

135.System.out.println();

136.OnSelectEvent ose5 = new OnSelectEvent ();

137.ose5.setName("ose5");

138.ose5.setSize(5);

139.System.out.println("Send OnSelectEvent 5 (also a Trigger): " + ose5 + "\n");

140.runtime.sendEvent(ose5);

141.}

142.}

执行结果:

[plain]view plaincopy

1.Create Window:create window OnSelectWindow.win:length(2) as

select * from example.OnSelectEvent

2.Trigger sentence: on example.OnSelectTrigger(trigger>=2) se

lect osw.* from OnSelectWindow as osw

3.

4.Send OnSelectEvent 1: name=ose1, size=1

5.Send OnSelectEvent 2: name=ose2, size=2

6.Send OnSelectEvent 3: name=ose3, size=3

7.Send OnSelectTrigger trigger=1

8.Send OnSelectTrigger trigger=2

9.

10.Trigger On Select:

11.There is 2 OnSelectEvent in OnSelectWindow!

https://www.doczj.com/doc/72907683.html,=ose2, size=2

https://www.doczj.com/doc/72907683.html,=ose3, size=3

14.

15.Trigger sentence: on OnSelectWindow select osw.* from On

SelectWindow as osw

16.

17.Send OnSelectEvent 4(also a Trigger): name=ose4, size=4

18.

19.Trigger On Select:

20.There is 2 OnSelectEvent in OnSelectWindow!

https://www.doczj.com/doc/72907683.html,=ose3, size=3

https://www.doczj.com/doc/72907683.html,=ose4, size=4

23.

24.Send OnSelectEvent 5(also a Trigger): name=ose5, size=5

25.

26.Trigger On Select:

27.There is 2 OnSelectEvent in OnSelectWindow!

https://www.doczj.com/doc/72907683.html,=ose4, size=4

https://www.doczj.com/doc/72907683.html,=ose5, size=5

5.Triggered Delete on Named Windows:On Delete

除了可以用on select语句查询named window,还可以用on delete语句删除named window中的事件。语法和on select基本一样,同样能够设置一定条件限制触发事件,以及删除符合特定条件的事件。语法如下:

[plain]view plaincopy

1.on event_type[(filter_criteria)] [as stream_name] delete f

rom window_name [as stream_name]

2.[where criteria_expression]

和on select不同的是,delete后面不跟属性什么的,因为删除的就是事件,

不存在删除事件中的某些属性这种情况。filter_criteria用来限制触发事件,where criteria_expression用来限制要删除的事件。而且没有group by, having, Order by。举例如下:

[java]view plaincopy

1.package example;

2.

3.import com.espertech.esper.client.EPAdministrator;

4.import com.espertech.esper.client.EPRuntime;

5.import com.espertech.esper.client.EPServiceProvider;

6.import com.espertech.esper.client.EPServiceProviderManager;

7.import com.espertech.esper.client.EPStatement;

8.import com.espertech.esper.client.EventBean;

9.import com.espertech.esper.client.UpdateListener;

10.

12. * Created by Luonanqin on 3/30/14.

13. */

14.

15.class OnDeleteTrigger {

16. private int trigger;

17.

18. public int getTrigger() {

19. return trigger;

20. }

21.

22. public void setTrigger(int trigger) {

23. this.trigger = trigger;

24. }

25.

26. public String toString() {

27. return "trigger=" + trigger;

28. }

29.}

30.

31.class OnDeleteEvent {

32. private String name;

33. private int size;

34.

35. public String getName() {

36. return name;

37. }

38.

39. public void setName(String name) {

40. https://www.doczj.com/doc/72907683.html, = name;

41. }

42.

43. public int getSize() {

44. return size;

45. }

46.

47. public void setSize(int size) {

48. this.size = size;

49. }

50.

51. public String toString() {

52. return "name=" + name + ", size=" + siz

e;

53. }

55.

56.class OnDeleteWindowListener implements UpdateListener {

57.

58. public void update(EventBean[] newEvents, EventBean

[] oldEvents) {

59. if (newEvents != null) {

60. System.out.println();

61. System.out.println("Trigger On Delete

:");

62. System.out.println("There is " + ne

wEvents.length + " OnDeleteEvent to be deleted in OnDel eteWindow!");

63. for (int i = 0; i < newEvents.le

ngth; i++) {

64. System.out.println(newEvents[i]

.getUnderlying());

65. }

66. }

67. }

68.}

69.class OnSelectListener implements UpdateListener{

70.

71. public void update(EventBean[] newEvents, EventBean

[] oldEvents) {

72. if (newEvents != null) {

73. System.out.println();

74. System.out.println("Trigger On Select

:");

75. System.out.println("There is " + ne

wEvents.length + " OnDeleteEvent in OnDeleteWindow!"); 76. for (int i = 0; i < newEvents.le

ngth; i++) {

77. System.out.println(newEvents[i]

.getUnderlying());

78. }

79. }

80. }

81.}

82.

83.public class OnDeleteWindowTest {

84. public static void main(String[] args) {

85.

86. EPServiceProvider epService = EPServiceProvi

derManager.getDefaultProvider();

87. EPAdministrator admin = epService.getEPAdmin

istrator();

88. EPRuntime runtime = epService.getEPRuntime()

;

89.

90. String triggerEvent = OnDeleteTrigger.class.

getName();

91. String deleteEvent = OnDeleteEvent.class.get

Name();

92.

93. String epl1 = "create window OnDeleteWindo

w.win:keepall() as select * from " + deleteEvent;

94. String epl2 = "insert into OnDeleteWindow

select * from " + deleteEvent;

95. String epl3 = "on " + triggerEvent + "(

trigger>0) as odt delete from OnDeleteWindow as odw whe re odt.trigger=odw.size";

96. String epl4 = "on " + triggerEvent + "(

trigger=0) select odw.* from OnDeleteWindow as odw";

97.

98. System.out.println("Create Window: " + epl1

);

99. System.out.println("Delete Trigger: " + epl

3);

100.System.out.println("Select Trigger: " + epl4);

101.System.out.println();

102.

103.admin.createEPL(epl1);

104.admin.createEPL(epl2);

105.EPStatement state3 = admin.createEPL(ep l3);

106.state3.addListener(new OnDeleteWindowList ener());

107.EPStatement state4 = admin.createEPL(ep l4);

108.state4.addListener(new OnSelectListener() );

109.

110.OnDeleteEvent ose1 = new OnDeleteEvent ();

111.ose1.setName("ose1");

112.ose1.setSize(1);

113.runtime.sendEvent(ose1);

114.System.out.println("Send OnDeleteEvent 1 : " + ose1);

115.

116.OnDeleteEvent ose2 = new OnDeleteEvent ();

117.ose2.setName("ose2");

118.ose2.setSize(2);

119.runtime.sendEvent(ose2);

120.System.out.println("Send OnDeleteEvent 2 : " + ose2);

121.

122.OnDeleteEvent ose3 = new OnDeleteEvent ();

123.ose3.setName("ose3");

124.ose3.setSize(3);

125.runtime.sendEvent(ose3);

126.System.out.println("Send OnDeleteEvent 3 : " + ose3);

127.

128.OnDeleteTrigger ost1 = new OnDeleteTri gger();

129.ost1.setTrigger(0);

130.System.out.println("\nSend OnSelectTrigge r " + ost1);

131.runtime.sendEvent(ost1);

132.

133.OnDeleteTrigger ost2 = new OnDeleteTri gger();

134.ost2.setTrigger(2);

135.System.out.println("\nSend OnDeleteTrigge r " + ost2);

136.runtime.sendEvent(ost2);

137.

138.OnDeleteTrigger ost3 = new OnDeleteTri gger();

139.ost3.setTrigger(0);

140.System.out.println("\nSend OnSelectTrigge r " + ost3);

141.runtime.sendEvent(ost3);

142.}

143.}

每天学英语

每天学习英语 It pays to invest in education. 投资教育是有利的。 Once you begin,you must continue.一旦开始,你就得继续。 A good beginning makes a good ending.善始者善终。 Custom is a second nature.习惯是后天养成的。 All I have to do is learn English.我所要做的就是学英语。 Let's take over the dinner.我们边吃边谈。 It's up to date. 这个很时兴。 A friend is easier lost than found. 得友难失友易。 He doesn't care about me.他并不在乎我。 Happy Valentine's Day.情人节快乐。['v?l?ntain] He could hardly contain[k?n'tein] his excitement/anger.他抑制不住内心的激动/气愤。 If I were in your shoes.如果我站在你的立场。 Caution is the parent of safety.小心驶得万年船。 That couldn't be better.那再好不过了。 He was charged with smuggling.他被控告走私。 Have you got a backup plan?你有二手准备吗? We will have to go in rain or fine.无论晴天下雨,我们都得去。 I'm occupied.我走不开。occupy英音:['?kju,pai] What are your plans for the weekend?你周末的计划是什么? He never touches alcohol. 他滴酒不沾。 It worths a shot. 值得一试。We were able to fix the computer blindfolded.我们轻松搞定计算机(闭眼都能做)。 Are you kidding me?你在耍我。 Break the news to somebody. 委婉地把坏消息告诉某人。 Make a hole.让开道/闪开。 Go right back to the beginning.直接回到起始位置。 We are in the same boat.我们是一根藤上的瓜。 He can hardly speak.他几乎说不出话来。 With clothes the new are best;with friends the old are best.衣服越新越好,朋友越老越好。 The scalded cat fears cold water.一朝被蛇咬,十年怕井绳。scald:[sk?:ld] I was intemperate[in'temp?rit] in my youth.我年少轻狂。[注:intemperate a. 1.不节制的;过度的2.酗酒的3.(天气)酷烈的(寒冷的、酷热 的)] We should learn to be temperate in eating and drinking.我们须注意控制饮食。 It's been a long time.好久不见 It never rains,it pours.不鸣则已,一鸣惊人 Footsteps announced his return.听脚步声就知道他回来了 May I ask for quarter?能不能请你高抬贵手? What took you so long?怎么那么久 Do you have matches?你需要帮忙吗? Do you take money?你们收钱吗? You need a thick skin.你需要经得住批评。 - 1 -

英语学习之名词短语

英语句子的核心组成部分——名词短语(noun phrase,简称NP)。从一开始就搞清楚名词短语的构造规则,对于今后的英语学习将是非常重要的。 一、名词短语the core element of a sentence 英语中,短语有很多类,比如动词短语(have been doing)、介词短语(for you)、名词短语(my best friend)等等。其中名词短语最为重要,它是英语造句中不可或缺的元素。 1、名词短语的功能 名词短语的简单定义:名词与它的修饰语一起即构成名词短语。先来看几个简单的例子: ①These red roses are for you . 译:这些红玫瑰是送给你的。 名词短语these red roses在句中充当主语。 ②I have three close friend . 译:我有三个要好的朋友。 名词短语three close friend在句中充当宾语。 ③He is my best friend . 译:他是我最好的朋友。 名词短语my best friend在句中充当表语。 ④There are some red roses on that small table .

译:在那张小餐桌上有一些红玫瑰。 名词短语some red roses在句中充当主语; 名词短语that small table在句中充当介词on的宾语。 以上例句中的名词短语,都包含在英语句子和文章中。可以充当句子中的各个成分。 ※注意:英文中的介词不能单独使用,其后面必须接宾语,所接的宾语往往是名词短语(如例句4)。 the bird in the tree树上的那只小鸟 the map on the wall墙上的地图 the development of China中国的发展 the standard of living生活水平 the south side of the Changjiang river长江南岸 the way to the hotel去旅馆的路 the life in the future未来的生活 名词短语有如此重要的作用,那么这么重要的句子构成要素是怎样构成的呢?下面来详细总结它的构造规律。 2、名词短语的构造 名词短语由名词与它的修饰语一起构成。

初中英语语法和词汇教学心得体会

初中英语词汇和语法教学心得体会 在初中英语教学中,词汇和语法的学习是一个重要的组成部分。因此在教学中应该加强语法、词汇教学,否则,学生的语言能力将难以提高。 初中词汇和语法教学中,首先学生在读音方面感觉困难很大,难以读准单词,有相当一部分学生往往还用汉语为英语单词注音。其次,在拼写方面,学生没有意识到字母在单词中的读音与单词的拼写有着一定的规律。在记忆单词的时候,没有通过读音和字母的关系来记忆单词,常常是死记硬背单词字母的组合。第三,在记忆单词的意义的时候,过分注意该单词所对应的汉语意义的记忆,学生完全靠死记硬背掌握单词。在初中一年级时,由于内容较少,词汇和语法简单,学生尚能应付,但随着年级的增高,英语内容的深化,词汇量的增加,学生越来越感觉到词汇的记忆和语法的学习已成为学习英语的最大障碍。于是,逐渐对英语产生厌学情绪,有的甚至于放弃这门学科。 如何解决教学中存在的这些问题呢? 在词汇教学方面,首先,词汇教学也一定要贯彻“听说领先”的原则,在初中年级,特别是一年级,要贯彻“听说领先”的教学原则。因此,词汇教学也一定要首先是“听”。即教师在教单词时,先让学生听,让学生去“辨音”,教师所展示的不是课本里的文字,而是每个词是由几个音素、几个音节构成,重音在什么地方,这样才能

从听的意义上掌握词汇。同时,又能为学生学好语音、语调打好基础,真正地培养学生的听能,为以后更好地接收英语的输入做准备。 其次,在听的基础上加强读音规则的教学,以培养学生的拼读能力这是因为,英语属于拼音文字,虽然字母的名称音和字母在单词中的读音不同,但是,字母在单词中的读音还是有一定的规律可循。我们在词汇教学中,先让学生通过听英语单词分辨出单词的读音之后,再进行读音规则的教学,使学生能够根据字母在单词中的读音规律把单词拼写出来。 培养学生的拼读能力应该从最简单的拼读抓起,采取循序渐进的原则,通过归类和比较,使学生掌握单词中字母及组合的读音规律,能够听词能写,见词会读。 第三,教师在平时上课时,就有意先读一些词汇,或读课文,让学生先不要去看书,跟老师读这些词,然后再让学生拼写,和学生讨论如何去拼写,看这些词是由哪些字母组成的。特别是一些规律性的东西,需要反复进行训练。对于一些没有规律的单词构成,进行比较,以促进记忆。老师还可以先写出单词或句子,让学生根据已有的拼读知识试着去读出这些单词或句子。 第四,拼读训练是一个长期的过程,教师首先要了解学生的拼读能力,从最基础开始,循序渐进,掌握有规律的单词读音,比较无规律的单词读音,从而达到记忆词汇,培养读写能力的目的。 而语法教学只是一种手段,其最终目的不是让学生简单地记住语言规则,而是让其将语言的形式、意义和功能有机地结合起来,使其

英语语法大全(完整版)

【学英语必看】 《英语语法手册》 在实用英语备受青睐的现在,大家在学习英语和准备各种考试时,总是把 听说读写放在首位,诚然,学习语言重在实践。但是,请不要忽视语法的作用,特别是在阅读和写作中,他能帮助你分析清楚句子结构,准确抓住句子的要点,更能帮你写出复杂而优美的长句。 以下为你整理《英语语法手册》全集,不需背诵记忆,只要静下心阅读一遍,就能有所收获! 宝宝更希望你能把他们融在平时的阅读写作里. [英语语法手册]关于词类和句子成分 根据词的形式、意义及其在句中的功用将词分为若干类,叫做词类。一个 句子由各个功用不同的部分所构成,这些部分叫做句子成分。 学一个词,要学它的发音、拼法、意义,也要记它的词类;更重要的是要 了解它和其他词的关系,及其在句中作什么句子成分。如China is in East Asia(中国位于东亚)一句中的China这个单词所属的词类是名词,在句子中作主语。 词类(parts of speech) 英语的词通常分为十大类: 1)名词(noun,缩写为n.)是人和事物的名称,如pen(钢笔),English(英语),life(生活)。 2)代词(pronoun,缩写为pron.)是用来代替名词的词,如we(我们),his(他的),all(全部)。 3)形容词(adjective,缩写为adj.)用来修饰名词,如great(伟大的),honest(诚实的),difficult(困难的)。 4)数词(numeral,缩写为num.)是表示"多少"和"第几"的词,如four(四),eighteen(十八),first(第一),eighth(十八),hundred(一百)。

自考现代英语语法学习笔记--名词和名词短语

名词和名词短语(2) 限定词和属格 4.1 限定词 Determiner 在名词词组中对名词中心词起特指,类指以及表示数量等限定的词。 Determiners refer to the words which are used in the pre-modification of a noun phrase which typically precede any adj. that pre-modify the head word. 限定词和形容词区别 Difference between Determiner and Adjective 1.前置限定, 限定词在形容词前面.Determiner usually precede adj. in pre-modification. 2.限定词的选择受中心词影响而形容词不受。The choice of Determiner is determined by the head word but not that of adj. 3.形容词表明中心词的特征,而限定词限定中心词的意义数量。Adj. describe the head word by showing its characteristic while determiner determine the head word by identifying or quantifying. 4.形容词可位于中心词后,而限定词不可。 Adj. can post-modify the head word but not Determiner. 5.形容词有比较级而限定词没有(除few, little, many much 外) 。 Adj. has comparative form but not Determiner (except few, little, many much ). 4.1.2 Co-occurrence of Determiners Determiner may co-occurrence in the pre-modification of a noun phrase: two or more determiner may modify one and the same head word. Each determiner takes a fixed position , we identify their relative positions in the case of co-occurrence. 定义 考点1 定义

初中英语语法易错知识点

初中英语语法易错知识点 中考将近,很多学生在面对中考英语还是有一些恐惧,其实英语很简单,很多学生把自己拘泥与语法的世界不可自拔,却忽略了英语作为一门语言的实质,它是一种用于交流的工具,只是单纯的学语法,记单词是无法在中考中取得高分的,根据最近几年的中考英语的考点趋势,可以明显发现单选题越来越简单,而完形和阅读C篇有明显变难的趋势,如何面对以及解决这个问题呢?根据多年所带中考学生的经验,总结如下:首先,要将学生从语法的世界里解放出来,这并不是说语法不重要,只是要把语法融入句法中去学习,让语法具有生命力,让学生在学习语法的同时,能够把握住完形和阅读中的难句和长句,并在阅读过程中,记忆单词,掌握句型,这实在是一种一本万利的方法。再次,有了句法意识之后,就需要学生大量的进行泛读和精读练习,只有这样学生才能积累一定的词汇量,能够培养不错的语感,并且在考试中,遇到难题不再有畏惧心理,但有一点要特别注意,就是很多学生都没有良好的学习习惯,不知道温故而知新,所以每次看完之后就将其丢在一边,这样就会导致其不停在学习新的内容,但是又将学过的只是很快忘掉,相信说到这里,我们就会想到熊掰玉米棒子的故事,其实很多学生拥有和熊一样的毛病,现在就需要学生能够特别具有耐心和意志力,不停的进行复习,将短期记忆化为长期记忆,变成自己东西。最后,在进行阅读过程中,要养成做笔记的习惯,将难句和带有生词的句子抄下来,要注意永远都不要只是抄下单词,这样的单词是没有生命的力的,单词只有在句子里才有意义。从此时此刻开始行动吧,叔本华说过:“现在是人存在的唯一形态。”用阅读来攻克英语绝对是决战中考英语的捷径。 中考将近,很多学生在面对中考英语还是有一些恐惧,其实英语很简单,很多学生把自己拘泥与语法的世界不可自拔,却忽略了英语作为一门语言的实质,它是一种用于交流的工具,只是单纯的学语法,记单词是无法在中考中取得高分的,根据最近几年的中考英语的考点趋势,可以明显发现单选题越来越简单,而完形和阅读C篇有明显变难的趋势,如何面对以及解决这个问题呢?根据多年所带中考学生的经验,总结如下:首先,要将学生从语法的世界里解放出来,这并不是说语法不重要,只是要把语法融入句法中去学习,让语法具有生命力,让学生在学习语法的同时,能够把握住完形和阅读中的难句和长句,并在阅读过程中,记忆单词,掌握句型,这实在是一种一本万利的方法。再次,有了句法意识之后,就需要学生大量的进行泛读和精读练习,只有这样学生才能积累一定的词汇量,能够培养不错的语感,并且在考试中,遇到难

现代汉语语法知识精讲知识讲解

现代汉语语法知识精 讲

【现代汉语语法知识系列讲座】 语法词性 词分虚词、实词两类。 实词有:名词、动词形容词、数词、量词、代词虚词有:副词、介词、连词、助词、叹词、拟声词名词 一、名词的意义:表示人或事物名称的词叫名词。 二、名词的分类: (一)表示人:老师、学生、作家、工人、鲁迅(二)具体事物:天、地、花、草、天空、海洋(三)抽象概念:方法、科学、法律、事业

(四)处所:北京、青岛、黄河、长江、三味书屋 (五)方位:东、西、南、北、上、下、前、后、左、右、里、外、内、中、间、旁、以前、以南、之下、之后、东边、西面、里头。 (六)时间:早晨、正午、晚上、半夜、上午、白天、夏天、立秋、今天、星期二 动词 一、动词的定义: 表示人或者事物的动作行为、发展变化、心理活动等意义的词叫动词。 二、动词的分类: 1. 动作行为:穿、跳、走、纪念、朗诵。 2. 存在变化:有、增加、缩小、扩大、发生。

3. 心理活动:想、懊悔、喜欢、担心。 4. 可能意愿:应该、应当、能够、愿意、必须、敢、肯、会、能、要、可以。 5. 趋向:上、下、来、去、上去、下去、进来、进去、起来、上来。 6. 判断:是、就是、正是 7. 使令:使、让、派、请、叫、要求、命令、推举、允许、鼓动、鼓励。 形容词 一、形容词的定义: 表示事物的形状、性质或状态的词叫形容词。 二、形容词的分类: 1. 形状:大、小、高、圆、长、短、高大、肥胖。

2. 性质:好、坏、镇定、勇敢、乐观、伟大、优秀 3. 状态:愉快、慌张、急躁、迅速、朦胧、桔红 数词 一、数词的意义:表示数目的词叫数词。 二、数词的分类: 1. 基数(确数)一、二、千、万、亿 2. 序数:第一、三叔、三年级、六楼、初五、老三。 3. 分数:三分之一、九成 4. 倍数:三倍、十倍、翻一番 5. 概数:十几概数、十余人、三十多岁、两三个、成千上万、很多人

英语四级必看英语语法(全)

all the same 仍然,照样的as regards 关于,至于anything but 根本不as a matter of fact 实际上 apart from 除...外(有/无) as a rule 通常,照例 as a result(of) 因此,由于as far as ...be concerned 就...而言as far as 远至,到...程度as for 至于,关于 as follows 如下as if 好像,仿怫 as good as 和...几乎一样as usual 像平常一样,照例 as to 至于,关于all right 令人满意的;可以 as well 同样,也,还as well as 除...外(也),即...又

aside from 除...外(还有) at a loss 茫然,不知所措 at a time 一次,每次at all 丝毫(不),一点也不 at all costs 不惜一切代价at all events 不管怎样,无论如何at all times 随时,总是at any rate 无论如何,至少 at best 充其量,至多at first 最初,起先 at first sight 乍一看,初看起来at hand 在手边,在附近 at heart 内心里,本质上at home 在家,在国内 at intervals 不时,每隔... at large 大多数,未被捕获的 at least 至少at last 终于 at length 最终,终于at most 至多,不超过

at no time 从不,决不by accident 偶然 at one time 曾经,一度;同时at present 目前,现在 at sb’s disposal 任...处理at the cost of 以...为代价 at the mercy of 任凭...摆布at the moment 此刻,目前 at this rate 照此速度 at times 有时,间或back and forth 来回地,反复地 back of 在...后面before long 不久以后 beside point 离题的,不相干的beyond question 毫无疑问by air 通过航空途径by all means 尽一切办法,务必 by and by 不久,迟早by chance 偶然,碰巧

现代汉语语法基础知识

现代汉语语法基础知识 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

现代汉语语法基础知识 实词:意义较实在,能独立充当句子成分;加上一定的语气语调,一般可独立成句。 名词、动词、形容词、数词、量词、代词 虚词:不能独立充当句子成分;除了个别副词,一般不能独立成句。 副词、介词、连词、助词、语气词 一、实词 1.名词:表示人或事物名称的词。 有人物名词: 如学生、群众、老头、妇女、同志、叔叔、维吾尔族、酒鬼等; 有事物名词: 如笔、杉木、蜗牛、猎豹、奥托、棒球、战斗机、冥王星、思想、中学、物理、过程等; 有时间名词: 如上午、过去、将来、午夜、三更、甲戊、世纪等; 有方位名词: 如东南、上面、前方、内部、中间等。 2.动词:表示动作行为及发展变化的词。 有行为动词:如跑、唱、喝、敲、吆喝、盯、踢、闻、听、摸; 有发展动词:如生长、枯萎、发芽、结果、产卵; 有心理动词:如喜欢、恨、气愤、觉得、思考、厌恶; 有存现动词:如消失、显现、有、丢失、幻灭;

有使令动词:如使、让、令、禁止、勒令; 有能愿动词:如会、愿意、可以、能够、宁可; 有趋向动词:如来、去、上、下; 有判断动词:如是、为、乃。 3.形容词,表示事物性质、状貌特征的词。 有表形状的:如大、高、胖、瘪、细、壮; 有表性质的:如甜、好、香、漂亮、圆滑、机智、单调; 有表示状态的:如快、浓、满、多、迅速、静悄悄。 4.数词,表示事物数目的词。 有确数:如1、2、3、一、二、三、壹、贰、叁、二分之一、; 有概数:如几、一些、左右、以下、余; 有序数:如第一、第二、老大、老三、初九、初十。 5.量词,表示事物或动作的单位。 有名量词:如尺、寸、里、公里、斤、两、辆、角、元; 有动量词:如把、次、趟、下、回、声、脚、座。 6.代词,能代替事物名称的词。 有人称代词:如我、你、它、她们、大家、咱们; 有疑问代词:如谁、什么、怎么、哪里、为什么、何以; 有指示代词:这、那、那里、那边。 二、虚词 1.副词,经常用在动词、形容词前面,表示程度、范围、时间、否定、语气、频率等。

现代英语语法笔记整理

现代英语语法笔记整理 下面是我整理出来经常错误的题目 其中选择题20‘填空题30‘改错题8’句型转换题28‘其余名词解释和问答14‘ 要想及格那么选择题、填空题和句型转换题一定得拿55分以上,此三种题型也较容易拿分 注:名词解释题和简单题不再详述,我会在以上4道题中谈到。 一、选择题(20‘)此节还适合于综合英语二 选择题的题型以及考点: 1.关于by the time 用法 By the time 表示“当…的时候” Eg. By the time the course ends, we will have learnt a lot about market money 像此类题我们通常会做成过去完成时,但这样是错误的 记住这句话: 从句用一般时,主句用将来时。 2.need 的用法 记住它有三种方法 “need”作为实义动词时,通常用法是: 人+need +to do 物+need +doing 物+need +to be done Eg. The recorder needs repairing. Or, The recorder needs to be repaired。 此题考法简单,通常会给出这两个答案中的一个,比如要么给出repairing 要么给出 to be repaired。题目可能会变但这三种用法不会变 3.关于a large number of a large amount of a great deal of a large number of a lot of plenty of numerous much many few little 修饰名词的:a large number of 、numerous、many、 few 修饰不可数名词:a large amount of 、a great deal of、much、 little 既修饰可数和不可数:a lot of plenty of 个人认为只要知道修饰可数的和不可数的就行了,黑体字表示容易错的一定要记住。 4.see的用法,此题型经常考 see 有两种用法 such as: 1. see sb doing sth. 强调看见某人正在做某事,着重动作过程 eg, I saw him drawing by the river then.说明他正在看他画画,强调看画画的过程。 2. see sb do sth. 是看见某人做某事,着重于看见这件事的发生 eg. I saw Dr. Smith enter the operating room a moment ago. 说明他看到过Smith进了手术室了. 5.考倒装: 考倒装的范围相当广,一般有这些词需要倒装 1.虚拟语气的倒装

初中英语语法总结一览表学习啊

学英语简单吗?肯定会有许多学生说:“难死了”。 为什么有好多学生对英语的学习都感到头疼呢?答案只有一个:“不得法。” 英语与汉语一样都是一种语言,为什么你说汉语会如此流利?那是因为你置身于一个汉语环境中,如果你在伦敦呆上半年,保准说起英语来会非常流利。但很多中学生没有很好的英语环境,那么你可以自己设置一个英语环境,坚持“多说”、“多听”、“多读”、“多写”,那么你的英语成绩肯定会很出色。 一、多“说”。 自己多创造机会与英语教师多讲英语,见了同学,尤其是和好朋友在一起时尽量用英语去问候,谈心情……这时候你需随身携带一个英汉互译小词典,遇到生词时查一下这些生词,也不用刻意去记,用的多了,这个单词自然而然就会记住。千万别把学英语当成负担,始终把它当成一件有趣的事情去做。 或许你有机会碰上外国人,你应大胆地上去跟他打招呼,和他谈天气、谈风景、谈学校……只是别问及他的年纪,婚史等私人问题。尽量用一些你学过的词汇,句子去和他谈天说地。不久你会发现与老外聊天要比你与中国人谈英语容易的多。因为他和你交谈时会用许多简单词汇,而且不太看重说法,你只要发音准确,准能顺利地交流下去。只是你必须要有信心,敢于表达自己的思想。 如果没有合适的伙伴也没关系,你可以拿过一本书或其它什么东西做假想对象,对它谈你一天的所见所闻,谈你的快乐,你的悲伤等等,长此坚持下去你的口语肯定会有较大的提高。 二、多“听” 寻找一切可以听英语的机会。别人用英语交谈时,你应该大胆地去参与,多听听各种各样人的发音,男女老少,节奏快的慢的你都应该接触到,如果这样的机会少的话,你可以选择你不知内容的文章去听,这将会对你帮助很大,而你去听学过的课文的磁带,那将会对你的语言语调的学习有很大的帮助。 三、多“读”。 “读”可以分为两种。一种是“默读”。每天给予一定时间的练习将会对你提高阅读速度有很大的好处,读的内容可以是你的课本,但最好是一些有趣的小读物,因为现在的英语高考越来越重视阅读量和阅读速度。每道题的得分都与你的理解程度有很大关系,所以经过高中三年阅读的训练后,你必定会在高考中胜券在握。另一种是“朗读”这是学语言必不可少的一种学习途径。 四、多“写” 1 / 11

学英语必看英语语法手册(全)

【学英语必看】《英语语法手册》(全) 在实用英语备受青睐的现在,大家在学习英语和准备各种考试时,总是把听说读写放在首位,诚然,学习语言重在实践。但是,请不要忽视语法的作用,特别是在阅读和写作中,他能帮助你分析清楚句子结构,准确抓住句子的要点,更能帮你写出复杂而优美的长句。 以下为你整理《英语语法手册》全集,不需背诵记忆,只要静下心阅读一遍,就能有所收获! 宝宝更希望你能把他们融在平时的阅读写作里. [英语语法手册]关于词类和句子成分 根据词的形式、意义及其在句中的功用将词分为若干类,叫做词类。一个句子由各个功用不同的部分所构成,这些部分叫做句子成分。 学一个词,要学它的发音、拼法、意义,也要记它的词类;更重要的是要了解它和其他词的关系,及其在句中作什么句子成分。如China is in East Asia(中国位于东亚)一句中的China这个单词所属的词类是名词,在句子中作主语。 词类(parts of speech) 英语的词通常分为十大类: 1)名词(noun,缩写为n.)是人和事物的名称,如pen(钢笔),English(英语),life(生活)。 2)代词(pronoun,缩写为pron.)是用来代替名词的词,如we(我们),his(他的),all(全部)。 3)形容词(adjective,缩写为adj.)用来修饰名词,如great(伟大的),honest(诚实的),difficult(困难的)。 4)数词(numeral,缩写为num.)是表示"多少"和"第几"的词,如four(四),eighteen(十八),first(第一),eighth(十八),hundred(一百)。 5)动词(verb,缩写为v)表示动作和状态,如write(写),walk(行走),think(想)。 6)副词(adverb,缩写为。adv.)是修饰动词、形容词和副词的词,如quickly(快),often(经常),very(很)。 7)冠词(article,缩写为art.)说明名词所指的人或物的词,如a,an(一个),the(这,那)。 8)介词(preposition,缩写为prep.)表示名词(或代词)与句子里其它词的关系,如from(从),in(在…内),between(在…之间)。 9)连词(conjunction,缩写为conj.)是连接词、短语、从句和句子的词,如and(和),because(因为),if(假如)。 10)感叹词(interjection,缩写为int.)表示感情,如。oh(噢),aha(啊哈),hush(嘘)。 [注一]属于前六类(名、代、形、数、动、副等词)的词都有实义,叫做实词(notional word)。属于后四类(冠、介、连、感等词)的词没有实义,叫做

自考英语语法问答题总结

自考《现代英语语法》总结 Chapter One 1.What are the four major types of sentence and what discourse functions are they normally associated with? Statements are normally associated with declaratives and primarily concerned with giving information. Questions are associated with interrogatives and primarily concerned with requiring information. Commands are associated with imperatives and primarily concerned with requiring actions. Exclamations are associated with exclamatives and primarily concerned with expressing the speaker’s impression of something. 2.What are the verbs which transferred negation often occurs with? What is their shared semantic feature? The verbs which transferred negation often occurs with are: think, believe, suppose imagine and expect. They are the verbs that express “opinion”. 3.Explain the differences between a tag question with a final rising tone and one with a final falling tone. With a rising tone, the question expresses the speaker’s neutral expectation of the hearer’s response and invites the hearer to verify the truth of the proposition in the statement. With a falling one, the speaker asks for the hearer’s confirmation of the statement. It can be regarded as similar to an exclamation. Chapter 4 4.Can the definite article be used for generic reference and the indefinite article for specific reference? If they can, give one example for each use. The definite article can be used for generic reference. For example, the panda is a rare animal. The panda here still denotes the whole species. The indefinite artic le can also be used for specific reference. For example, a dog chained at me when I was on my way home last night. Here a dog points to a particular, actual example of the class. Here “a”shows indefinite specific reference. 5.What are some of the constraints that the double genitive is subject to? The second noun in the double genitive almost always refers to persons, never to objects, and the first noun usually has indefinite reference (typically premodified by the indefinite article and the second noun is always definite.) Chapter 5 6.Why do most contemporary English grammarians adopt a two-tense system? Because tense is a verb form. Morphologically only present tense and past tense have their forms of verbs. A language which has no verb forms has no tense. 7.If tense is related to time, what is aspect related to? When ten points to the temporal location of an event or a state of affairs, aspect “reflects the way in which the verb action is regarded or experienced with respect to time.” 8.Why is the past tense often used for politeness? Because the past tense can make a question or a statement or a suggestion less direct. It is more polite to use the past tense on the part of the speaker.

(完整版)现代汉语语法知识

现代汉语语法知识 一、语法知识概述 (一)词类 汉语的词可以分为12类。名词、动词、形容词、数词、量词和代词是实词,副词、介词、连词、助词、拟声词和叹词是虚词。 名词:表示人和事物的名称的实词。如:"黄瓜、白菜、拖拉机、计算机"。 表示专用名称的叫做"专用名词",如"云南、上海、李白、白居易"。 表示抽象事物的名称的叫做"抽象名词",如"范畴、思想、质量、品德、友谊、方法"。表示方位的叫做"方位名词",如"上""下""左""右""前""后""中""东""西""南""北""前面""后边""东边""南面""中间"等。 动词:动词表示人或事物的动作、行为、发展、变化。 有的动词表示一般的动作,如:来、去、说、走、跑、学习、起飞、审查、认识"等。 有的动词表示心理活动,如"想、重视、注重、尊敬、了解、相信、佩服、惦念"等,这样的动词前面往往可以加上"很、十分"。 有的动词表示能够、愿意这些意思,叫做"能愿动词",它们是"能、要、应、肯、敢、得(dei)、能够、应该、应当、愿意、可以、可能、必须",这些能愿动词常常用在一般的动词前面,如"得去、能够做、可以考虑、愿意学习、应该说明、可能发展"。 还有一些动词表示趋向,叫做"趋向动词",如"来、去、上、下、进、出、上来、上去、下来、下去、过来、过去、起,它们往往用在一般动词后面表示趋向,如"跳起来、走下去、抬上来、跑过去"。 "是""有"也是动词,跟动词的用法一样。 形容词:形容词表示事物的形状、样式、性质等,如"多、少、高、胖、死板、奢侈、胆小、丑恶"。 数词:数词是表示事物数目的词。如"一、二、两、三、七、十、百、千、万、亿、半"。 量词:量词是表示事物或动作单位的词。汉语的量词分为名量词和动量词。 名量词表示事物的数量,又可以分为单位量词和度量量词。 单位量词表示事物的单位,如"个、张、只、支、本、台、架、辆、颗、株、头、间、把、扇、等; 度量量词表示事物的度量,如"寸、尺、丈、斤、两、吨、升、斗、加仑、伏特、欧姆、立方米"。 动量词表示动作的数量,用在动词前后表示动作的单位,如"次、下、回、趟、场"。

必看小学阶段所有英语语法整理!

必看小学阶段所有英语语法整理! 今天和大家整理一下小学阶段所有的英语语法,系统地做个概述。让爸爸妈妈了解一下孩子该掌握的内容,也能对症更好地辅导孩子。 英语语法是分类的,分为词法和句法。小学英语语法和初中以及高中相比较,只是在语法数量和难易程度上有差别。英语有些方面是有一些规律可循的,但是英语还有它另外一个显著的特点,那就是知识点零碎、分散。万丈高楼从地起,想要学好英语,那就需要注重英语基础。基础打牢才会越学越轻松。 以下对于小学语法的讲解将会从词法和句法两个方面开始 展开: 【词法】 八大词法:名词形容词副词代词动词数词介词冠词【名词】:名词是表示人、动物、物品以及抽象概念的词. 考察点:名词分类,单复数,以及名词所有格 【形容词】:形容词是用来修饰或描述名词(或代词),表示人或事物的性质、状态和特征的词. 考察点:形容词的位置、形容词的排列顺序、形容词的比较级最高级

【副词】:副词是用来修饰动词、形容词、其它副词或全句的词,表示时间、地点、程度、方式等. 考察点:副词的位置、副词的比较急最高级 【代词】:代词就是代替名词以及起名词作用的短语、分句和句子的词 考察点:人称代词:主格以及宾格;物主代词:形容词性物主代词和名词性物主代词;反身代词;指示代词还有疑问代词人称代词 物主代词主格(句首做主语) 宾格(句尾做宾语) 形容词性(名首做主语) 名词性(句尾做宾语) I me my mine you you

yours he him his his she her her hers it it its its

us our ours they them their theirs

高中现代汉语语法基础知识讲解实词

现代汉语语法常识复习 第一讲词语 汉语词语分类: 实词:实词能充任句子成分,具有实在的词汇意义, 名词、动词、形容词、代词、数词、量词 虚词:一般不能充任句子成分,主要表达各种语法意义或语气、感情。 副词、介词、连词、助词、叹词、拟声词 实词 一、名词 表示人或事物(包括空间、方位和时间)名称的词。 名词可以分为 普通名词:老师、学生、作家、工人、天、地、花、草、天空、海洋 专有名词:云南、上海、李白、白居易、鲁迅、联合国、太阳、地球 抽象名词:方法、科学、法律、事业、理想 方位词:东、西、南、北、上、下、前、后、左、右、里、外、内、中、间、旁、以前、以南、之下、之后、东边、西面、里头 处所词:北京、青岛、黄河、长江、三味书屋 时间词:早晨、正午、晚上、半夜、上午、白天、夏天、立秋、今天、星期二 练习:请把下列句子中的名词找出来。 1、北京是我们的首都。 2、明天是劳动节。 3、满树浅黄色的小花,并不出众。 4、那壮丽的柱廊,淡雅的色调,以及四周层次繁多的建筑立面,组成了一幅庄严绚丽的画图。 5、一张简陋的大竹床铺着厚厚的稻草。 二、动词 表示动作、行为、存在、心理活动或发展变化的词。 动词可以分为: 一般动词:走、看、说、进行、开始 心理动词:想、爱、恨、喜欢、担心 能愿动词:能、会、可以、愿意、应该 趋向动词:来、去、上、进、出、回过、上来、起来 特殊动词:有、无、没、没有、是(判断动词) 练习:请把下列句子中的动词找出来 1、现在人们叫它故宫。

2、我给她一本书。 3、他走出去了。 4、这时我看见他的背影,我的泪很快地流下来了。 5、可我,总还是怀念那长在野地里的荠菜,就像怀念那些与自己共过患难的老朋友一样。 6、老远就看见镶嵌在正门顶上的国徽的闪闪金光。 7、李四光这一生中还从来没有过一次这样舒畅和快乐的谈话。 三、形容词 表示性质或状态、能够受程度副词修饰、不能带宾语的词。 形容词的分类: 形状:大、小、高、圆、长、短、高大、肥胖。 性质:好、坏、镇定、勇敢、乐观、伟大、优秀 状态:愉快、慌张、急躁、迅速、朦胧、桔红 例:整洁、宽阔、干净、漂亮、聪明、伶俐、老实、泼辣、共同、慢性、万能、大型、新式、初级、高速、天然 练习:请把下列句子中的形容词找出来 1、人人都过幸福生活是我们美好的心愿。 2、他们是一切伟大人民的优秀之花。 3、我们的祖国给科学开辟了广阔的前途。 4、这支部队的先头连就匆匆占领了汽车路边一个很低的光光的小山冈。 5、徐悲鸿以愤激的感情,用两年的时间,创作了巨幅油画《奚我后》。 6、他的魁梧的身形,温和的脸,明净的额,慈祥的目光时时出现在会场上,课堂上,杨家岭山下的大道边。 四、代词 具有指称、代替作用的词。 根据其意义和功能,可分三类: 1、人称代词(代替人或事物的名称) 大家、人家、你、我、他们、我们、自己 2、疑问代词(用来提出问题) 谁、什么、怎样、哪、哪里 3、指示代词(用来区别人或事物) 这、那、这里、那里、这么、那么、每、各 五、数词 表示数目或次序先后的词。 分类: 基数(确数)一、二、千、万、亿 序数:第一、三叔、三年级、六楼、初五、老三。

相关主题
文本预览
相关文档 最新文档