0%

这篇笔记摘选自张满胜老师的《英语语法新思维中级教程通悟语法第2版》,以及其他网上知识点收集,只是我自己的个人复习笔记,禁止转载,如有侵权,请联系我删除。

1) Your eyes are red. You’ve been crying, haven’t you?
2) Her eyes were red. It was obvious she had been crying.
在例句1)中,由are可以知道,这里说话语境的时间是现在,所以后面用现在完成进行时have been crying来表达一个在“现在”说话时刻之前在延续的事件,即“现在刚刚”结束的事件,
在例句2)中,由were可以知道,这里说话语境的时间是过去,此时要表达一个在“过去”说话时刻之前在延续的事件,即“过去刚刚”结束的事件就要用过去完成进行时had been crying。
1)你的眼睛红红的,你刚才一直在哭吧?
2)她的眼睛当时红红的,很明显,她之前一直在哭。

过去时刻在延续的事件

过去完成进行时表示开始于过去某个时刻之前的动作持续到过去这一时刻,并继续持续下去。
When I arrived in Inner Mongolia, it had been snowing for half a month.
这里的arrived确立了过去的坐标时间,然后谈论在此之前发生的一个延续活动“下雪”,所以用过去完成进行时had been snowing。
那次在我到内蒙古之前,雪已经下了整整半个月了。

图示如下:

类似于现在完成进行时,过去完成进行时的延续事件同样包括长期延续、近期延续、说话时刻在延续以及在说话时刻之前在延续的事件。

过去的长期延续事件

The police had been looking for the murderer for two years before they caught him.
警察抓住这个杀人犯之前,已经找了他两年了。
I had been looking for jobs for nearly half a year before I finally got a position in this dot-com company.
我找工作找了将近半年,最后得到了一家网络公司的聘用。

过去的近期延续事件

He looked so tired. I knew he had been studying for the final exams.
他当时看起来很累,我知道他一直在忙着准备期末考试。

过去说话时刻在延续的事件

Read more »

这篇笔记摘选自张满胜老师的《英语语法新思维中级教程第2版》,以及其他网上知识点收集,只是我自己的个人复习笔记,禁止转载,如有侵权,请联系我删除。

简单句与名词从句

何谓名词从句?

在英语中,名词或名词短语主要充当四种句子成分:主语、宾语、表语和同位语,如果把句子当作名词来用,分别充当另一句话的主语、宾语、表语或同位语。
构成了四种从句:主语从句、宾语从句、表语从句和同位语从句,因为这四种从句在本质上相当于名词,所以将其统称为名词从句。

相当于名词的句子有三类:陈述句、一般疑问句以及特殊疑问句。

陈述句作句子成分

要在陈述句句首加上that

当把一个完整的陈述句当作名词来使用时,需要在陈述句句首加that,然后可使“that+陈述句”这一结构分别充当另一个句子的主语、宾语、表语或同位语等四种成分,即构成主语从句、宾语从句、表语从句或同位语从句。

为什么要加that?

That English is important(主语从句)is an undoubted fact(谓语部分).
假如把that去掉,上句就变成“English is important is an undoubted fact.”。
这句话就有两个中心谓语部分,即is important和is an undoubted fact。但是,在英语中,句子的核心意思主要是靠谓语部分来表达的,一个句子只表达一个核心意思(因为我们说话要一句一句地说),也就只能有一个谓语部分。现在这个句子有两个谓语部分,读者就会纳闷:你要表达的意思到底是“某个东西重要(something is important)”,还是要说“某个东西是事实(something is an undoubted fact)”?
为了避免混淆,在句首加上一个标志that,这里的that就相当于一个指路牌,它的出现就等于是在告诉读者:that后面紧接着的句子是要作为另一个句子的某一个成分来使用的,不是要表达的核心意思。因此,当读者读到“That English is important…”,他就会知道这个句子的核心意思并没有讲出来,他一定会期待着句子接下来的中心意思。当他读到“…is an undoubted fact”时,他知道了,句子要表达的意思是“英语很重要,这是一个毋庸置疑的事实”,而不是要说“英语很重要”。
英语很重要,这是一个毋庸置疑的事实。

Read more »

这篇笔记摘选自张满胜老师的《英语语法新思维中级教程通悟语法第2版》,以及其他网上知识点收集,只是我自己的个人复习笔记,禁止转载,如有侵权,请联系我删除。

过去完成时就是站在“过去时间”的角度回顾更远的另一个过去,表示一个事件从这个更远的过去持续到离现在较近的过去。

在“过去”回顾“更远的过去”

现在完成时态的参照时间“现在”往往潜含在语境中,并不需要明确地表达出来。但是,对于过去完成时态,其参照时间“过去”则一般是要明确地在上下文中给出
说得更具体点,就是必须先有一个过去时,然后以这个过去时作为参照的时间点,来谈论更远的过去,此时这个更远的过去才能用过去完成时态。因此,过去完成时态可以说是一个不能独立使用的时态,它必须依附于一个在上下文中出现的一般过去时。

At the hotel she asked immediately for Dr. Barrett, of St. Louis. He had left for home that morning and would not be back, she was told.
这里的had left是发生在过去的动作asked之前的,所以用了过去完成时。
另外值得注意的是,这里还有一个具体的过去时间that morning。对于这样一个具体的过去时间,句子若采用一般过去时态是没有问题的, 而这里用了过去完成时态。由此可见,过去完成时态可以与具体的过去时间状语连用。这不同于现在完成时态,因为现在完成时态是绝对不可以与具体的过去时间连用的
一到酒店,她就立即打听从圣路易斯市来的巴雷特医生的消息。但被告知他在那天一早就动身回家了,将不会再回来了。

另外,by the time常常可以与过去完成时搭配使用,具体结构是:“过去完成时+by the time+一般过去时”
A: It was my grandmother’s birthday yesterday.
B: Is she old?
A: Well, by the time we lit up the last candle on her birthday cake, the first one had gone out!
因为by the time本身的意思是“在……之前”,所以过去的动作lit之前发生了had gone out的动作,故用过去完成时态。

延续事件、重复事件和单一事件的过去完成时

过去完成时里同样涉及两个时间点:一个事件从更远的过去开始发生,然后“延续”到另一个较近的过去,或者“重复”到另一个较近的过去,或者在过去的某一时刻已经结束,这就分别构成了延续事件、重复事件和单一事件,类似于现在完成时,区别只是“坐标时间”由“现在”移至“过去”。

  • 在该过去时刻仍然在继续,或在该过去时刻刚刚停止(延续事件);
  • 在该过去时刻之前的一段时间内重复的动作(重复事件);
  • 在该过去时刻之前的某一时刻停止的动作(单一事件)。

过去完成时表示“延续事件”

Read more »

这篇笔记摘选自张满胜老师的《英语语法新思维中级教程通悟语法第2版》,以及其他网上知识点收集,只是我自己的个人复习笔记,禁止转载,如有侵权,请联系我删除。

完成进行时态的构成

以动词work为例,三种完成进行时态的构成形式如下:

  1. 现在完成进行时:have been working
  2. 过去完成进行时:had been working
  3. 将来完成进行时:will have been working

完成进行时态的意义

从结构(structurally)的角度来看,完成进行时态是由完成时态与进行时态复合而成的,这种结构上的复合也必然会反映到意义上,因此完成进行时兼备“完成体”和“进行体”这两种时体的意义。
比如,对于现在完成进行时而言,一方面,完成体赋予了它“始于现在之前”的概念,即表示一个动作或状态是从过去持续或重复到现在;另一方面,进行体赋予它暂时的、不间断的延续性。所以,结合这两者的特点,现在完成进行时的核心意义是表示:被描述的事件开始于现在之前,而且是有限地(不会无限期地)持续下去。简言之,完成进行时的核心含义是表示“有限的延续性”。

延续事件

现在完成进行时强调动作的持续性,表示一个到目前为止尚未完成的活动。具体来说,它表示开始于过去的活动持续到现在,并且活动往往还没有结束,将继续持续下去。此时的完成进行时常与“for+时间段”“since+时间点”,all morning,all day,all week 等这样的表示一段时间的时间状语连用,以强调在这一段期间内,某项活动正在持续。

I’ve been studying English for over ten years now, but I still can’t speak it well.
该句的谓语have been studying采用了现在完成进行时态,表示学习英语这一动作从10年前开始,一直持续到目前说话的时候,并且还将继续持续下去。

你妈妈看到你正在看电视,不高兴地说:
A: Hey, you’re watching TV again.
B: I’ve been studying for the whole morning. I need to relax now.
该句的谓语have been studying采用了现在完成进行时态,但“学习”这个活动在说话时并没有在持续,而是在说话之前的一段时间内持续进行。

Read more »

Leetcode哈希表专题

哈希表(散列表)

散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。

散列函数

线程安全的java.util.Hashtable的散列函数是基于除留余数法的方式来计算,其计算代码如下:

1
2
3
Entry<?,?> tab[] = table; // 表存储是采用数组来实现的
int hash = key.hashCode();
int index = (hash & 0x7FFFFFFF) % tab.length;

如果单单只是通过取模来计算映射地址的话,可能会出现冲突问题。

冲突

散列函数可能会把不同的Key值映射到同一个数组下标。

散列函数的要求

Read more »