2009年8月31日星期一
网络编程之同步,阻塞,异步,非阻塞
阻塞:没有收完数据函数不返回,线程也被挂起
异步:函数立即返回,通过事件或是信号通知调用者
非阻塞:函数立即返回,通过select通知调用者
这样看来异步和非阻塞有什么区别呢?
异步=非阻塞?
同步是在操作系统层面上,阻塞是在套接字上?
Reactor是同步 Proactor是异步?
回答:
同步、异步、阻塞和非阻塞的概念
在进行网络编程时,我们常常见到同步、异步、阻塞和非阻塞四种调用方式。这些方式彼此概念并不好理解。下面是我对这些术语的理解。
同步
所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其
实绝大多数函数都是同步调用(例如sin,
isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是
SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的
LRESULT值返回给调用者。
异步
异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用
的部件在完成后,通过状态、通知和回调来通知调用者。以
CAsycSocket类为例(注意,CSocket从CAsyncSocket派生,但是起功能已经由异步转化为同步),当一个客户端通过调用
Connect函数发出一个连接请求后,调用者线程立刻可以朝下运行。当连接真正建立起来以后,socket底层会发送一个消息通知该对象。这里提到执行
部件和调用者通过三种途径返回结果:状态、通知和回调。可以使用哪一种依赖于执行部件的实现,除非执行部件提供多种选择,否则不受调用者控制。如果执行部
件用状态来通知,那么调用者就需要每隔一定时间检查一次,效率就很低(有些初学多线程编程的人,总喜欢用一个循环去检查某个变量的值,这其实是一种很严重
的错误)。如果是使用通知的方式,效率则很高,因为执行部件几乎不需要做额外的操作。至于回调函数,其实和通知没太多区别。
阻塞
阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。有人也许
会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同
步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。例如,我们在CSocket中调用Receive函数,如果缓冲区中没有数
据,这个函数就会一直等待,直到有数据才返回。而此时,当前线程还会继续处理各种各样的消息。如果主窗口和调用函数在同一个线程中,除非你在特殊的界面操
作函数中调用,其实主界面还是应该可以刷新。socket接收数据的另外一个函数recv则是一个阻塞调用的例子。当socket工作在阻塞模式的时候,
如果没有数据的情况下调用该函数,则当前线程就会被挂起,直到有数据为止。
非阻塞
非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
对象的阻塞模式和阻塞函数调用
对象是否处于阻塞模式和函数是不是阻塞调用有很强的相关性,但是并不是一一对应的。阻塞对象上可以有
非阻塞的调用方式,我们可以通过一定的API去轮询状
态,在适当的时候调用阻塞函数,就可以避免阻塞。而对于非阻塞对象,调用特殊的函数也可以进入阻塞调用。函数select就是这样的一个例子。
阻塞通信
--------------------------------------------------------------------------------
通过重叠通信和计算在许多系统能提高性能。由一个智能通信控制器自动地执行通信的系统是真实的。轻-重线索是取得这种重叠的一种机制。导致好性
能的
一个可选的机制是使用非阻塞通信。一个阻塞发送开始调用初始化这个发送操作,但不完成它。在这个消息被从这个发送缓存拷出以前,这个发送开始调用将返回。
需要一个独立的"发送完成"调用完成这个通信,例如,检验从发送缓存拷出的数据。用适当的硬件,在发送被初始化后和它完成以前,来自发送者存储的数据转换
可以和在发送者完成的计算同时进行。类似地,一个非阻塞"接收开始调用"初始化这个接收操作,
但不完成它。在一个消息被存入这个接收缓存以前,这个调用将返回。须要一个独立的"接收完成"调用完成这个接收操作,并检验被接收到这个接收缓存的数据。
用适当的硬件,在接收操作初始化后和它完成以前,到接收者存储的数据转换可以和计算同时进行。非阻塞接收的使用虽着信息较早地在接收缓存位置被提供,也可
以避免系统缓存和存储器到存储器拷贝。
非阻塞发送开始调用能使用与阻塞发送一样的四种模式: 标准, 缓存,
同步和准备好模式。这些具有同样的意义。无论一个匹配接收是否已登入,能开始除"准备好"以外的所有模式的发送;只要一个匹配接收已登入,就能开始一个非
阻塞"准备好"发送。在所有情况下,发送开始调用是局部的:无论其它进程的状态如何,它立刻返回。如果这个调用使得一些系统资源用完,那么它将失败并返回
一个错误代码。高质量的MPI实现应保证这种情况只在"病态"时发生。即,一个MPI实现将能支持大数量挂起非阻塞操作。
当数据已被从发送缓存拷出时,这个发送完成调用返回。它可以带有附加的意义,这取决于发送模式。
如果发送模式是"同步的",那么只有一个匹配接收已开始这个发送才能完成。即,一个接收已被登入,并已和这个发送匹配。这时,这个发送完成调用
是非
局部的。注意,在接收完成调用发生以前,如果一个同步、非阻塞发送和一个非阻塞接收匹配,
它可以完成。(发送者一"知道"转换将结束,它就能完成,但在接收者"知道"转换将结束以前)。
如果发送模式是"缓存",并没有挂起接收,那么消息必须被缓存。这时,发送完成调用是局部的,而且无论一个匹配接收的状态如何,它必须成功。
如果发送模式是标准的,同时这个消息被缓存,那么在一个匹配接收发生以前,发送结束调用可以返回。另一方面,发送完成直到一个匹配接收发生才可以完成,并且这个消息已被拷到接收缓存。
非阻塞发送能被用阻塞接收匹配,反过来也可以。
给用户的建议. 一个发送操作的完成, 对于标准模式可以被延迟,
对于同部模式必须延迟,
直到一个匹配接收登入。这两种情况下非阻塞发送的使用允许发送者提前于接收者进行,以便在两进程的速度方面,计算更容忍波动。
缓存和准备好模式中的非阻塞发送有一个更有限的影响。一可能一个非阻塞发送将返回,而一个阻塞发送将在数据被从发送者存储拷出后返回。只要在数据拷贝能和计算同时的情况下,非阻塞发送的使用有优点。
消息发送模式隐含着由发送者初始化通信。当发送者初始化通信(数据被直接移到接收缓存,
并不要求排队一个挂起发送请求)
时,如果一个接收已登入,这个通信一般将有较低的额外负担。但是,只在匹配发送已发生后,一个接收操作能完成。当非阻塞接收等待发送时,没有阻塞接收,它
的使用允许得到较低的通信额外负担。(给用户的建议结束)。
Dr. Douglas C. Schmidt的回答:
They are very different, as follows:
AIO is "asynchronous I/O", i.e., the operation is invoked
asynchronously and control returns to the client while the OS kernel
processes the I/O request.?When the operation completes there is
some mechanism for the client to retrieve the results.
Non-blocking I/O tries an operation (such as a read() or write())
and if it the operation would block (e.g., due to flow control on a
TCP connection or due to lack of data in a socket), the call returns
-1 and sets errno to EWOULDBLOCK.
Dr. Douglas C. Schmidt
linux库文件编写入门
我们在实际编程工作中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同,
实现代码也相同,也是我们所说的重复代码。比如,很多项目里都有一个用户验证的功能。
代码段如下:
//UserLogin.h文件,提供函数声明
int IsValidUser(char* username, int namelen);
//UserLogin.c文件,实现对用户信息的验证
int IsValidUser(char* username, int namelen)
{
int IsValid = 0;
/*下面是具体的处理代码,略去*/
return IsValid
}
如果每个项目都保存着这两个UserLogin.h和UserLogin.c文件,会有以下几个
弊端:
1、每个项目里都有重复的模块,造成代码重复。
2、代码的重用性不好,一旦IsValidUser的代码发生了变化,为了保持设计的一致性,
我们还要手工修改其他项目里的UserLogin.c文件,既费时又费力,还容易出错。
库文件就是对公共代码的一种组织形式。
为了解决上面两个弊端,就提出了用库文件存放公共代码的解决方案,其要点就是
把公共的(也就是可以被多次复用的)目标代码从项目中分离出来,统一存放到库文件中,
项目要用到这些代码的时候,在编译或者运行的时候从库文件中取得目标代码即可。库文件
又分两种:静态库和动态库。
二、静态库与动态库
如果程序是在编译时加载库文件的,就是使用了静态库。如果是在运行时加载目标代码,
就成为动态库。换句话说,如果是使用静态库,则静态库代码在编译时就拷贝到了程序的代码段,
程序的体积会膨胀。如果使用动态库,则程序中只保留库文件的名字和函数名,在运行时去查找
库文件和函数体,程序的体积基本变化不大。
静态库的原则是"以空间换时间",增加程序体积,减少运行时间;
动态库则是"以时间换空间",增加了运行时间,但减少了程序本身的体积。
下面我们就以实际例子来看看如何使用这两种库.
三、静态库的编写和使用
1、概述
静态库文件的扩展名一般为.a,其编写步骤很简单。
⑴编写函数代码
⑵编译生成各目标文件
⑶用ar文件对目标文件归档,生成静态库文件。
注意归档文件名必须以lib打头。
使用要点:
⑴在gcc 的-I参数后加上静态库头文件的路径。
⑵在gcc 的-L参数后加上库文件所在目录
⑶在gcc 的-l参数后加上库文件名,但是要去掉lib和.a扩展名。
比如库文件名是libtest.a 那么参数就是 -l test
2、编写最简单的静态库文件
编写如下两个文件,注意放在同一目录中
myalib.h //静态库头文件
myalib.c //静态库实现文件
//myalib.h 文件的内容
void test();
//myalib.c 文件的内容
#inlcude <stdio.h>
void test()
{
printf("test\n");
}
3、制作库文件
⑴生成目标文件
gcc -c myalib.c
执行完后会生成一个myalib.o文件
⑵用ar命令归档,格式为ar -rc <生成的档案文件名> <.o文件名列表>
再次提醒,归档文件名一定要以lib打头, .a结尾。
ar -rc libtest.a myalib.o
执行完后会生成一个libtest.a文件
4、使用库文件
⑴编写一个测试程序main.c,内容为
//main.c 测试静态库调用的程序
#include "myalib.h" //要把函数的头文件包含进来,否则编译时会报错
int main(int argc,char* argv[])
{
test();
return 0;
}
⑵编译目标文件,注意要把静态库头文件的路径加到-I参数里面
gcc -I /root/exercise -o main.o -c main.c
现在生成了一个main.o文件
⑶生成可执行文件,注意要把静态库文件的路径加到-L参数里面,
把库文件名(去掉打头的lib和结尾的.a)加到-l参数后面。如下面所示
gcc -o main -L/root/exercise main.o -ltest
此时就会生成一个名为main的可执行文件
另外,注意- l参数好象应该加到输入文件名的后面,否则会报错。
比如gcc -o main -L/root/exercise -ltest main.o就会提示
main.o(.text+0x11): In function `main':
: undefined reference to `test'
collect2: ld returned 1 exit status
原因我还不清楚:-)
⑷执行可执行文件查看效果
执行./main, 输出
test
说明执行成功。
四、动态库的编写
1、概述
动态库一般以.so结尾,就是shared object的意思.
其基本生成步骤为
⑴编写函数代码
⑵编译生成动态库文件,要加上 -shared 和 -fpic 选项 ,
库文件名以lib开头, 以.so 结尾。
使用方式分为两种: 隐式调用和显示调用
隐式调用类似于静态库的使用,但需修改动态链接库的配置文件/etc/ld.so.conf;
显示调用则是在主程序里使用dlopen、dlsym、dlerror、dlclose等系统函数。
具体的调用方式会在 "五、动态库的调用" 中详细说明.
2、编写最简单的动态库文件
为了便于对照, 我们仍然采用静态库中的文件做例子.
编写如下两个文件,注意放在同一目录中
myalib.h //静态库头文件
myalib.c //静态库实现文件
//myalib.h 文件的内容
void test();
//myalib.c 文件的内容
#inlcude <stdio.h>
void test()
{
printf("test\n");
}
3、编译生成动态库 ,库文件名以lib开头, 以.so 结尾。
gcc -fpic -shared -o libtest.so myalib.c
此时就生成一个libtest.so文件
五、动态库的隐式调用
隐式调用的含义是代码里不出现库文件名,就是说这个代码和
调用静态库的代码是类似的。
1、编写测试文件
//main.c 测试动态库隐式调用的程序
#include "myalib.h" //要把函数的头文件包含进来,否则编译时会报错
int main(int argc,char* argv[])
{
test();
return 0;
}
2、 编译测试程序,与静态库类似,要把头文件的路径加到-I参数里面
gcc -I /root/exercise -o main.o -c main.c
现在生成了一个main.o文件
3、连接生成测试程序
gcc -o main -L/root/exercise main.o -ltest
现在生成了一个main文件
4、执行测试程序
./main
此时出现提示
./main: error while loading shared libraries: libtest.so: cannot open
shared object file: No such file or directory。
这个原因就是程序运行时并不知道动态库所在的路径,因此自然找不到。
解决这个问题的办法有三种。见下节
六、使动态库被系统共享的三种办法
(再次说明: 本节参考了计算机世界网雨亦奇的文章"LINUX动态链接库高级应用"
地址http://www.ccw.com.cn/htm/center/prog/02_3_13_3_2.asp)
(1)拷贝动态链接库到系统共享目录下,或在系统共享目录下为该动态链接库
建立连接(硬连接或符号连接均可,常用符号连接).这里说的系统共享目录,
指的是LINUX动态链接库存放的目录,包括
/lib,/usr/lib以及/etc/ld.so.conf文件内所列的一系列目录.
实例:执行
# cp libtest.so /lib
# ldconfig
或:
# ln -s `pwd`/libtest.so /lib
# ldconfig
注意pwd前后有两个反引号`,其目的是取得pwd命令的输出,即当前目录.
此时再执行main,即可成功.
(2)将动态链接库所在目录名追加到动态链接库配置文件/etc/ld.so.conf中.
# pwd >> /etc/ld.so.conf
# ldconfig
此时再执行main,即可成功.
(3)利用动态链接库管理命令ldconfig,强制其搜索指定目录,并更新缓存文件,便于动态装入.
# ldconfig `pwd`
此时再执行main,即可成功.
要注意,第三种方法虽然有效,但效果是暂时的,供程序测试还可以,一旦再度运行ldconfig,
则缓存文件内容可能改变,所需的动态链接库可能不被系统共享了.
而且无论哪种办法,其实质都是用ldconfig命令把动态库文件
所在路径加入到系统库列表中,(前两种永久,第三种临时)
七、动态库的显式调用
显式调用的含义是代码出现库文件名,用户需要自己去
打开和管理库文件。其要点为:
⑴把dlfcn.h系统头文件包含进来
⑵用dlopen函数打开库文件,并指定打开方式
dllope的的第一个参数为共享库的名称,将会在下面位置查找指定的共享库。
①环境变量LD_LIBRARY_PATH列出的用分号间隔的所有目录。
②文件/etc/ld.so.cache中找到的库的列表,由ldconfig命令刷新。
③目录usr/lib。
④目录/lib。
⑤当前目录。
第二个参数为打开共享库的方式。有两个取值
①RTLD_NOW:将共享库中的所有函数加载到内存
②RTLD_LAZY:会推后共享库中的函数的加载操作,直到调用dlsym()时方加载某函数
⑶用dlerror()函数测试是否打开成功,并进行错误处理;
⑷用dlsym获得函数地址,存放在一个函数指针中
⑸用获得的函数指针进行函数调用。
⑹程序结束时用dlclose关闭打开的动态库,防止资源泄露。
⑺用ldconfig工具把动态库的路径加到系统库列表中
1、编写测试文件
//main.c 测试动态库显式调用的程序
#include<dlfcn.h> //用于动态库管理的系统头文件
#include "myalib.h" //要把函数的头文件包含进来,否则编译时会报错
int main(int argc,char* argv[])
{
//声明对应的函数的函数指针
void (*pTest)();
//加载动态库
void *pdlHandle = dlopen("libtest.so", RTLD_LAZY);
//错误处理
if(pdlHandle == NULL ) {
printf("Failed load library\n");
return -1;
}
char* pszErr = dlerror();
if(pszErr != NULL)
{
printf("%s\n", pszErr);
return -1;
}
//获取函数的地址
pTest = dlsym(pdlHandle, "test");
pszErr = dlerror();
if(pszErr != NULL)
{
printf("%s\n", pszErr);
dlclose(pdlHandle);
return -1;
}
//实现函数调用
(*pTest)();
//程序结束时关闭动态库
dlclose(pdlHandle);
return 0;
}
2、编译测试文件 使用-ldl选项指明生成的对象模块需要使用共享库
gcc -o main -ldl main.c
执行完后就生成了一个main文件
3、执行测试程序
执行 ./main
输出
test
说明成功。
六、使用动态库时应注意的其他问题
1、无论是动态库的显式调用还是隐式调用,都需要用
ldconfig工具将动态库的路径加到系统库列表中,否则运行时会出错。
2、可以用ldd命令检查程序都使用到哪些共享库
ldd命令行用法如下:
ldd [--version] [-v|--verbose] [-d|--data-relocs] [-r|--function-relocs]
[--help] FILE...
各选项说明如下:
(1) --version : 此选项用于打印出ldd的版本号.
(2) -v 或 --verbose :
此选项指示ldd输出关于所依赖的动态链接库的尽可能详细的信息.
(3) -d 或 --data-relocs : 此选项执行重定位,并且显示不存在的函数.
(4) -r 或 --function-relocs :
此选项执行数据对象与函数的重定位,同时报告不存在的对象.
(5) --help : 此选项用于打印出ldd的帮助信息.
我们一般用-v选项.
现在看几个实例
⑴用静态库连接时的结果
#ldd main
libc.so.6 => /lib/tls/libc.so.6 (0xb74ad000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb75eb000)
可见使用静态库时,由于库已经被编译成程序的一部分,因此ldd的输出中就只有用到的
系统库。
⑵用动态库隐式连接时的结果
libtest.so => /root/exercise/libtest.so (0xb75e2000)
libc.so.6 => /lib/tls/libc.so.6 (0xb74ab000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb75eb000)
可见隐式使用动态库时,所有用到的动态库(包括系统和用户的)都会被显示出来。
⑶动态库显式连接时的结果
ldd main
libdl.so.2 => /lib/libdl.so.2 (0xb75e1000)
libc.so.6 => /lib/tls/libc.so.6 (0xb74aa000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb75eb000)
可见显式使用动态库时,程序中不再保存运行时打开动态库的信息,只保留用到的系统库的信息.
这个与使用静态库时的输出是类似的.
什么是存款准备金和利率及利率政策
存款准备金,是限制金融机构信贷扩张和保证客户提取存款和资金清算需要而准备的资金。法定存款准备金率,是金融机构按规定向中央银行缴纳的存款准备金占其存款的总额的比率。
换句话说,存款准备金是指中央银行强制要求商业银行,将其存款按照一定比率作为准备金,不得随意动用。打比方说,存款准备金率达到10%,相当于老百姓在商业银行每存一百元,就有10元被放进了央行,商业银行不得动用这10元去放贷。
存款准备金率变动对商业银行的作用过程如下:
当中央银行提高法定准备金率时,商业银行可提供放款及创造信用的能力就下降。因为准备金率提高,货币乘数就变小,从而降低了整个商业银行体系创造信用、扩大信用规模的能力,其结果是社会的银根偏紧,货币供应量减少,利息率提高,投资及社会支出都相应缩减。反之,亦然。
1984年,中国人民银行开始建立存款准备金制度。十多年来,经历了四次调整,在当时都起到了积极作用——抑制经济过热、物价上涨过快、货币投放过多的 状况。目前,中央银行对存款准备金制度改革方向是要逐步恢复存款准备金支付清算和作为货币总量调控工具的功能,改变原来主要功能不在调控货币总量而在发挥 集中资金,调整信贷结构的作用。
利率及利率政策
利率,是一定时期内利息额与借贷资金的比率,通常分为年利率、月利率和日利率。根据资金借贷关系中诸如借贷双方的性质、借贷期限的长短等,可把利率划分为不同的种类——法定利率和市场利率、短期利率和中长期利率、固定利率和浮动利率、名义利率和实际利率。
改革开放以来,中国人民银行加强了对利率手段的运用,通过调整利率水平与结构,改革利率管理体制,使利率逐渐成为一个重要杠杆。1993年5月和7月, 中国人民银行针对当时经济过热、市场物价上涨幅度持续攀高,两次提高了存、贷款利率,1995年1月和7月又两次提高了贷款利率,这些调整有效控制了通货 膨胀和固定资产投资规模。1996年5月和8月,1997年10月和1998年3月,针对我国宏观经济调控已取得显著成效,市场物价明显回落的情况,央行 又适时四次下调存、贷款利率,在保护存款人利益的基础上,对减轻企业、特别是国有大中型企业的利息负担,促进国民经济的平稳发展产生了积极影响。
二者关系
一般地,存款准备金率上升,利率或会有上升压力,都是金融紧缩政策的信号。存款准备金率是针对银行等金融机构的,对最终客户的影响是间接的;利率是针对最终客户的,比如你存款的利息,影响是直接的。
CVBS、S-Video、YPbPr、模拟RGB、DVI和HDMI
RCA接头来连接的。它将亮度、色度、同步和色彩脉冲信息整合到一根电
缆内。
CVBS
是被广泛使用的标准,也叫做基带视频或RCA视频,是全国电视系统委员会(NTSC)电视信号的传统图像数据传输方法,它以模拟波形来传输数据。复合视频包含色差(色调和饱和度)和亮度(光亮)信息,并将它们同步在消隐脉冲中,用同一信号传输。
快速扫描的NTSC电视中,甚高频(VHF)或超高频(UHF)载波是复合视频所使用的调整振幅,这使产生的信号大约有6MHz宽。一些闭路电视系统使用同轴电缆近距离传输复合视频,一些DVD播放器和视频磁带录像机(VCR)通过拾音插座提供复合视频输入和输出.
S-Video(Y/C):可以分别传送亮度和色度内容。将亮度信息与色差信号分离
开来,可以大幅改善图像质量,这也正是S-Video连接在当今的家庭影院
系统中流行的原因。连接器是S端子。
分量视频,也称为YPbPr,这是YCbCr数字视频的的模拟版本。在这种视频中,
每个亮度与色度通道都是单独提取、输出的,每路都带有自己的时序。这就
保证了模拟传输后图像的高品质。分量连接在家用影院系统组件,如DVD播
放器和A/V接收机中。
模拟RGB(VGA):具有分离的红、绿、蓝信号通道。这可以提供类似于分量视
频的图像质量,但它一般用于计算机图形图像领域,而分量视频则主要应用
于消费类电子方面。RGB连接器是DB15连接器。
DVI(Digital Visual Interface)接口,即数字视频接口。
目前的DVI接口分为两种:
一个是DVI-D接口,只能接收数字信号,接口上只有3排8列共24个针
脚,其中右上角的一个针脚为空。不兼容模拟信号。
另外一种则是DVI-I接口,可同时兼容模拟和数字信号。兼容模拟信号并
不意味着模拟信号的接口D-Sub接口可以连接在DVI-I接口上,而是必须通过
一个转换接头才能使用,一般采用这种接口的显卡都会带有相关的转换接头。
HDMI,英文全称是High Definition Multimedia Interface,中文名称是高清晰
多媒体接口的缩写。专用接口,现在新品影视产品基本都有此接口。
肯尼迪家族
一从哈佛大学毕业,约瑟夫·肯尼迪就下决心尽快挣钱,争取在30岁前成为百万富翁。1914年约瑟夫·肯尼迪与时任波士顿市长的女儿Rose Fitzgerald(1890–1995)结婚,到哪儿去挣钱?约瑟夫有自己的看法:“如果你想挣钱,你就必须弄 清钱在哪里。”他选择了银行业作为生财的方向。在父亲的支持下他成为一家银行的董事长,约瑟夫·肯尼迪25岁即担任波士顿银行总裁,是一位非常成功的商人,并自称为是全美国最年轻的银行董事长。后来的一段历史是肯尼迪家族 的发家史,约瑟夫从事各种投机买卖赚了不少钱。为了儿女们以后更容易进入社交界,他还把家迁到了纽约。
在积聚了几亿美元的资产后,约瑟夫开始留心政治活动,他特别关注着一个很有潜力的总统候选人。此人就是后来大名鼎鼎的富兰克林·罗斯福。约瑟夫以前 就认识罗斯福,认定他就是国家所需要的领袖,而帮助他竞选也有助于自己进入政坛。于是约瑟夫开始帮助罗斯福筹集资金,还多次陪罗斯福去竞选旅行。不知什么 原因在罗斯福当选总统后并没有委以他重任,只是任命他出任新成立的证券管理委员会主席,而约瑟夫看中的位子是财政部长。尽管如此约瑟夫忠心不减,1935 年他“写”了一本关于竞选的书《我支持罗斯福》(实际是请一个记者执笔写成),然后再把书寄给罗斯福过目。罗斯福只回了一封短信:“书不错,我很高兴。” 约瑟夫把这个只是张条子的回信当作至宝,装裱好挂在家中,一有客人来就夸耀一番。对约瑟夫的忠诚罗斯福给了他回报,1937年任命他出任驻英国大使。这对 一个爱尔兰天主教徒的后裔来说以前是连想都不敢想的事。但是,约瑟夫虽然精于赚钱,在政治上还很笨拙,当了不到三年外交官就被召回国,罗斯福没再任命他担任什么职务,他在政治上从此销声匿迹。但他并不甘心,他要让自己的四个儿子进入政界;在仕途上登上顶峰。
约瑟夫·肯尼迪和Rose Fitzgerald共育有9个孩子,他对他们的期望非常大,管教也非常严苛,希望他们之间有人能够走到美国政治的巅峰,成为美国总统。可以说他是肯尼迪家族的奠基人。
照片为1930年肯尼迪一家在麻省布鲁克林合影。前排从左至右:小约瑟夫,母亲罗丝,罗伯特,爱德华,父亲大约瑟夫,帕特里夏,简。后排从左至右:尤妮丝,约翰,凯瑟琳,罗丝马丽。肯尼迪家族有一个长久怀有的梦想:总统之梦,这个家族中一定要有人成为美国的总统。约瑟夫有一次在教堂里祈祷时就暗暗发誓:我已登上了财富的最高 峰,我要让儿子登上权力的最高峰。他们夫妇有9个孩子,在政治上有潜力的自然是4个男孩。这4个男孩是大儿子小约瑟夫·肯尼迪、二儿子约翰·肯尼迪、三儿 子罗伯特·肯尼迪、四儿子爱德华·肯尼迪。根据他自己的经验,约瑟夫知道要让儿子有地位,必须先有钱,让他们永远不必为生活担忧。他设立了一些信托基金, 提供给孩子们和妻子每人2000万美元。
老肯尼迪与家人在父亲的心目中,四个儿子中最有资格成为总统的是大儿子小约瑟夫。但无情的战争打碎了他的如意算盘。在对德战争中小约瑟夫参军成为飞行员,1944 年奉命去炸毁纳粹德国的V-1飞弹发射架。在执行任务时,他驾驶的飞机因故障在英国上空爆炸,他和副驾驶被炸得粉身碎骨。这是以后多灾多难的肯尼迪家族所 遇到的第一个灾难。两个星期后又传来噩耗。二女儿凯瑟琳新婚不久的丈夫英国人哈廷顿勋爵在法国作战时遭德国枪手狙击中弹身亡。几年后孀居的凯瑟琳有了新的 男友英国人菲茨威廉伯爵。1948年5月13日两人租用一架小飞机去法国度假,在山区遇大风双双坠机身亡。
照片摄于1939的罗马,从左至右分别是罗伯特(Robert)、尤妮丝(Eunice)、珍妮(Jean)、帕特莉西亚(Patricia)、罗丝玛丽 (Rosemary)和爱德华•肯尼迪(Ted Kennedy),那时正值肯尼迪家族参加教皇庇护十二世(Pope Pius XII)的加冕典礼。在长子遇难后,家中的希望更多地寄托在二儿子约翰·肯尼迪身上。按照约翰·肯尼迪后来的说法,“我的哥哥约瑟夫是一家中从政的当然人选。如果他活着,我会继续当作家。如果我死了,我弟弟会当参议员。如果他出事,我的另一个弟弟会为我们去竞选。”子承父业,弟承兄业,就像一幅前仆后继的从政序列图。
全家福:中间的小男孩就是爱德华,他是家中9个孩子中最小的。这张照片是1939年在伦敦拍摄的,当时老肯尼迪是驻英大使,爱德华挤在父母之间。那曾经是个多么幸福的家庭。可惜的是三个儿子最后都死于非命,只有照片正中最小的儿子,爱德华•肯尼迪得尽天年。除此之外,他的一个姐姐 (Rosemary)精神失常,另一个姐姐(Kathleen)死于飞机失事。肯尼迪总统唯一的儿子也死于飞机失事,爱德华•肯尼迪也曾遭遇飞机失事,但神奇的生还了。约翰·肯尼迪政治上最大的成功是在1960年当选美国总统。他的父亲约瑟夫是实现总统梦的总策划、总导演,他拿出大量的金钱调动新闻界、出版界,狂 轰滥炸般地宣传他的儿子。他儿子终于成为美国历史上最年轻的总统。在约翰·肯尼迪组阁时,老父亲让他把弟弟罗伯特安排到内阁中去,罗伯特如愿以偿地得到了 司法部长一职。这是肯尼迪家族政治上的巅峰时刻。
1960年肯尼迪一家的合影。后排站立从左至右分别是埃瑟尔-斯考克尔(Ethel Skakel)、史蒂芬-史密斯(Stephen Smith)和妻子珍妮-肯尼迪、约翰-肯尼迪总统、罗伯特-肯尼迪、帕特西亚-肯尼迪、萨金特-施莱佛(Sargent Shriver)、简-班奈特(Joan Bennett)、皮特?罗福特(Peter Lawford)。前排左侧就座的人分别是尤妮丝-肯尼迪-施莱佛和她的父母罗丝和乔。前排右侧就座的人是约翰-肯尼迪的夫人杰奎琳-布维尔(Jacqueline Bouvier)和爱德华-肯尼迪。在当选总统没多久,杰奎琳为新总统生了个儿子,他就是小约翰·菲茨杰拉德·肯尼迪。肯尼迪总统在飞机上得到这个喜讯,一时沉浸在中年得子和入主白宫的双重喜悦之中。
时间过得真快,不到三年肯尼迪又要为竞选连任奔忙。1963年11月22日,他们夫妇到达拉斯城为连任拉选票。中午12点30分,从街旁一座大楼射出的子弹击中了肯尼迪的头部,打碎了他的脑壳,肯尼迪被刺身亡。三天后是小肯尼迪的三岁生日,人们不断祝福地:“生日快乐!”“长命百岁!”又有谁能预测到他会在20世纪的最后一年死于非命。
1963年11月,约翰·肯尼迪遇刺身亡,罗伯特、杰奎琳以及爱德华等家人在华盛顿参加他的葬礼。据说开枪打死肯尼迪的凶手是个叫奥斯瓦尔德的美国人,可是他在被审时总是一遍又一遍地重复说:“我是替罪羊。”两天后在押解途中奥斯瓦尔德被一个名 叫鲁比的夜总会老板开枪打死,鲁比被逮捕后在狱中又死于癌症。为调查这一谋杀事件,美国政府任命了一个调查委员会(即“沃伦委员会”)试图弄清真相。沃伦 委员会的调查结论认为谋杀行为是奥斯瓦尔德一人所为,并没有其他特殊的背景。30多年来许多人不满意这一结论,对肯尼迪的死因作出种种猜测。有人认为在行 刺时另有枪手埋伏在附近射击,击中了肯尼迪的头部。至于背后的操纵者,说法就更多了,有古巴流亡者、古巴特工人员、中央情报局、黑手党。苏联情报机构等各 种说法。好莱坞的大导演奥利弗·斯通1993年还拍了部叫《肯尼迪》的电影,暗示是美国政府内部的权力人物策划了这一阴谋。这部电影居然还获得了奥斯卡提 名奖。看起来肯尼迪被刺的谜团短时期内还理不出个头绪。
肯尼迪总统遇刺后,担任司法部长的罗伯特·肯尼迪成了肯尼迪家族的当家人。他的妈妈轻声对他说:“孩子,现在轮到你了” 1968年罗伯特决定参加总统竞选,肯尼迪家族似乎有可能再产生一位总统。不幸的是再一次公众集会上,有个年轻人对他头部开枪,罗伯特死在医院中。凶手是 个叫瑟汉的巴勒斯坦难民,他讨厌罗伯特强烈的亲犹倾向。
爱德华•肯尼迪(中)和兄弟罗伯特(左)、约翰•肯尼迪在1950年代合影。约翰•肯尼迪于1963年总统在任期间被刺杀,罗伯特于1968年参与民主党总统候选人提名竞选时被刺杀。三个哥哥死于非命,爱德华·肯尼迪颀果仅存,他也在努力向政治巅峰冲刺,1969年当选为参议院民主党副领袖,有希望成为1972年总统竞选的热门 人物。但在1969年7月发生的一件意外事件断送了他的前程。一天晚上他开车带着漂亮的金发姑娘科佩克内小姐回旅馆,在过一座小桥时汽车冲入河中。爱德华逃生,姑娘却死在车中,而且爱德华报案还很不及时。这一事件损害了肯尼迪家族的名誉,也使得爱德华不得不放弃竞选总统。
在肯尼迪家族的下一代中情况也相当不妙,有好几个人是疯狂吸毒的“瘾君子”,罗伯特·肯尼迪的儿子博比1983年还因吸毒被判刑。他的弟弟戴维更糟糕,第二年因吸毒送命。
本来这个家族最后的希望都寄托在小约翰·菲茨杰拉德·肯尼迪身上。他仪表堂堂,很有人缘,有在政治上振兴肯尼迪家族的实力。甚至有人估计,只要他宣 布出山竞选,能与他抗衡的人不会多。可是那次的空难事故差不多是断绝了肯尼迪家族最后的指望。或许多灾多难的肯尼迪家族要把重新崛起的希望寄托在下一代的身上。
小肯尼迪,3岁,在父亲肯尼迪总统的葬礼上,1963年。老肯尼迪夫妇四个儿子简介:
1、小约瑟夫·肯尼迪(Joseph Patrick Kennedy, Jr. ,1915–1944)
作为一名美军B-24“解放者”重型轰炸机飞行员参加二战,1944年在英格兰萨福克上空,因飞机发生故障爆炸,小约瑟夫·肯尼迪阵亡。小约瑟夫·肯尼迪死时是单身,因为没有子女。他死后,成为总统希望自然而然的顺延到第二个儿子约翰·肯尼迪身上。
2、约翰·肯尼迪(John Fitzgerald Kennedy ,1917–1963)
1960年约翰·肯尼迪当选为美国第35任总统,也是至今美国历史上最年轻的当选总统。(最年轻的总统是西奥多·罗斯福,42岁继任总统,前总统麦金莱被刺身亡。)是美国历史上唯一信奉罗马天主教的总统和唯一获得普利策奖的总统。
约翰·肯尼迪当选总统后,其弟弟罗伯特·肯尼迪进入内阁,担任司法部长,另一个弟弟爱德华·肯尼迪接替他的空缺,1962年成为来自马萨诸塞州的一名国会参议院议员。这是肯尼迪家族最为辉煌的时刻。
1963年约翰·肯尼迪为竞选连任四处演讲,在达拉斯遇刺身亡,时年46岁。遇刺真相至今依然是个谜。
1953年,约翰·肯尼迪与纽约名花杰奎琳(Jacqueline Lee Bouvier, 1929-1994)结婚,4个孩子中,一个流产(1956),一个出生两天后就去世(1963),另两个孩子是老大Caroline Kennedy (1957-),和老二(John F. Kennedy, Sr., 1960-1999)。
1968年6月,肯尼迪的弟弟总统竞选人罗伯特·肯尼迪被暗杀,杰奎琳认为肯尼迪家族已经成为暗杀的目标,为了保护儿女,她决定离开美国,她于1968年10月20日嫁给了希腊船王亚里士多德·奥纳西斯。
值得一提的是约翰·肯尼迪唯一的儿子小约翰·菲茨杰拉德·肯尼迪,《乔治》杂志的创办人,仪表堂堂,曾被评为“美国最性感的男人”,一度被寄予厚望,可是在1999年7月16日,他驾机出行时,坠毁在大西洋,同机的还有他33岁的妻子及她的姐姐,35岁的劳伦·贝塞特。飞机失事的原因至今不明。
3、罗伯特·肯尼迪(Robert Francis Kennedy, 1925-1968)
他在他哥哥约翰·肯尼迪的内阁中担任司法部长,约翰·肯尼迪遇刺后,他成了肯尼迪家族的当家人。他的妈妈轻声对他说:“孩子,现在轮到你了”, 随后1964年他成为纽约州的一名国会参议院议员,1968年罗伯特·肯尼迪决定参加总统竞选,肯尼迪家族似乎有可能再产生一位总统。
1964年罗伯特·肯尼迪从纽约州被选为参议员,成为越南战争的一个重要的批评者和自由主义民主党人的代言人。1968年3月16日他宣布自己的民主党提名总统候选人身份,两天后对美国的越南政策进行尖锐的抨击。两星期后,林顿·约翰逊总统宣布他不再参加竞选。
1968年6月初,他刚赢得了民主党加利福尼亚预选的胜利,便于6月5日凌晨在洛杉矶一家旅馆内遭到枪击,在医院身亡。这是美国历史上,第一次有总统候选人在竞选时遇刺身亡。
罗伯特·肯尼迪与妻子Ethel Skakel(1928-)共育有11个孩子,两个已经去世。
4、爱德华·肯尼迪(Edward Moore Kennedy 1932–2009)
1962-2009年担任美国参议院议员,2009年8月25日因脑癌去世,他是民主党内和美国参议院最有影响力的人物之一,被称为美国历史上最伟大的参议员之一。
1964年,他在一次飞机坠毁事故中摔伤了背部;1973年,他12岁的儿子因癌症不得不截去一条腿。
在三个哥哥都去世后,肯尼迪家族最后的希望就落在了爱德华·肯尼迪的身上,1969年当选为美国参议院副领袖,有希望成为1972年总统竞选的热门人选。但在1969年7月的一次事故中,他在麻省的查帕奎迪克(Chappaquiddick)开车冲过桥梁跌入河中,导致车上同伴Mary Jo Kopechne溺水身亡——这次车祸的阴影了伴随肯尼迪的余生,一个至今仍无法解释的事实是:他从车祸现场走开并在10个小时内仍未报警,爱德华·肯尼迪的个人声望和处理危机能力都受到了人们的极大怀疑,他被迫放弃参选总统的计划。1980年当他再次准备参选总统,因为此事的影响,他终究失败了。
关于Chappaquiddick这次事件,有很多版本流传,其中一个就是他是被陷害的(the Economist中的评论很多都说到此事),就像他的哥哥们那样。
此后的政治生涯中,爱德华·肯尼迪致力于民权、教育、移民、残疾人和妇女权利等各方面的立法活动,积极推动美国国内的改革,是在任总统奥巴马医改方案的坚定拥护者。
“如果你看看肯尼迪三兄弟——约翰、罗伯特和爱德华——的政治遗产,你会发现爱德华是最伟大的。他的影响更宽广,更重要也将持续更长的时间。”哈佛大学肯尼迪政治学院研究公共政策的教师理查德·帕克(Richard Parker)认为肯尼迪横跨了五个十年的参议院经历可与富兰克林·罗斯福在白宫掀起的改革相媲美。“他最终成为20世纪美国自由主义经典风格的化身,而那要归功于他成长过程中所形成的罗马天主教的责任感。”
奥巴马说:“我们历史上最重要的一章结束了。我们国家失去了一名伟大领袖,他从倒下的哥哥手中接过火炬,成为我们时代最伟大的美国参议员。”
爱德华·肯尼迪有两次婚姻,第一婚姻给他带来了3个孩子,第二任妻子带来了2个继子。
最近流行的暴寒经典语句
2. 低头要有勇气,抬头要有底气。
3. 上天决定了谁是你的亲戚,幸运的是在选择朋友方面它给你留了余地。
4. 人生就像一杯茶,不会苦一辈子,但总会苦一阵子。
5. 傻与不傻,要看你会不会装傻。
6. 女人用友情来拒绝爱情,男人用友情来换取爱情。
7. 幸福是可以通过学习来获得的,尽管它不是我们的母语。
8. 不要见一个爱一个,爱的太多,你的爱就要贬值。
9. 想完全了解一个男人,最好别做他的恋人,而做他的朋友。
10. 朋友就是把你看透了,还能喜欢你的人。
11. 当我们搬开别人架下的绊脚石时,也许恰恰是在为自己铺路。
12. 痛苦来临时不要总问: " 为什么偏偏是我? "
因为快乐降临时你可没有问过这个问题。
13. 如果说我懂的道理比别人多一点,那是因为我犯的错误比别人多一点。
14. 不是每句 " 对不起 " ,都能换来 " 没关系 " 。
15. 世界上只有想不通的人,没有走不通的路。
16. 地球是运动的,一个人不会永远处在倒霉的位置。
17. 走的最急的是最美的景色,伤的最深的是最真的感情。
18. 在事实面前,我们的想象力越发达,后果就越不堪设想。
19. 当别人开始说你是疯子的时候,你离成功就不远了 ……
20. 你永远看不见我眼里的泪,因为你不在时我才会哭泣。
21. 时间就像一张网,你撒在哪里,你的收获就在哪里。
22.
如果我能够看到自己的背影,我想它一定很忧伤,因为我把快乐都留在了前面。
23. 理想和现实总是有差距的,幸好还有差距,不然,谁还稀罕理想?
24. 说有上辈子的人是在骗自己;说有下辈子的人是在骗别人。
25. 任何人都可以变得狠毒,只要你尝试过嫉妒。
26. 常常告诫自己不要在一棵树上吊死,结果 …… 在树林里迷路了。
27. 爱情就像攥在手里的沙子,攥的越紧,流失的越快。
28.
人生有两大悲剧:一个是得不到想要的东西,另一个是得到了不想要的东西。
29. 成熟不是心变老,而是眼泪在眼里打转却还保持微笑。
30. 问候不一定要郑重其事,但一定要真诚感人。
31. 做与不做的最大区别是:后者拥有对前者的评论权。
32. 人,长得漂亮不如活的漂亮。
33.
有些事,明知是错的,也要去坚持,因为不甘心;有些人,明知是爱的,也要去放弃,因为没有结局;有时候,明知没路了,却还在前进,因为习惯了。
34. 同样的一瓶饮料,便利店里 2 块钱,五星饭店里 60
块,很多的时候,一个人的价值取决于所在的位置。
35. 每个人出生的时候都是原创,可悲的是很多人渐渐都成了盗版。
36. 真坏人并不可怕,可怕的是假好人。
37. 浪漫是一袭美丽的晚礼服,但你不能一天到晚都穿着它。
38. 把一切平凡的事做好即不平凡,把一切简单的事做好即不简单。
39. 把不忙不闲的工作做的出色,把不咸不淡的生活过得精彩。
40. 情侣间最矛盾的地方就是幻想彼此的未来,却惦记着对方的过去。
41.
忙碌是一种幸福,让我们没时间体会痛苦;奔波是一种快乐,让我们真实地感受生活;疲惫是一种享受,让我们无暇空虚。
42. 理想很丰满,现实很骨感。
43. 女人吻男人是一种幸福,男人吻女人是一种口福。
44. 爱情永远比婚姻圣洁,婚姻永远比爱情实惠。
45. 探索的旅程不在于发现新大陆,而在于培养新视角。
46.
一个人能走多远,要看他有谁同行;一个人有多优秀,要看他有谁指点;一个人有多成功,要看他有谁相伴。
47. 叹气是最浪费时间的事情,哭泣是最浪费力气的行径。
48. 不是人人都能活的低调,可以低调的基础是随时都能高调。
49. 谈恋爱就像剥洋葱,总有一层会让你流泪。
50.
年轻时候,拍下许多照片,摆在客厅给别人看;等到老了,才明白照片是拍给自己看的。
51. 就算不快乐也不要皱眉,因为你永远不知道谁会爱上你的笑容。
52.
当大部分人都在关注你飞的高不高时,只有少部分人关心你飞的累不累,这就是友情。
53. 绝口不提不是因为忘记,而是因为铭记。
54. 让未来到来,让过去过去。
55. 微小的幸福就在身边,容易满足就是天堂。
56. 成功有个副作用,就是以为过去的做法同样适应于将来。
57. 天使之所以会飞,是因为她们把自己看得很轻 ……
58. 试金可以用火,试女人可以用金,试男人可以用女人。
59.
喜欢一个人,就是在一起很开心;爱一个人,就是即使不开心,也想在一起。
60. 幽默就是一个人想哭的时候还有笑的兴致。
61.
咖啡苦与甜,不在于怎么搅拌,而在于是否放糖;一段伤痛,不在于怎么忘记,而在于是否有勇气重新开始。
62. 人之所以活得累,是因为放不下架子,撕不开面子,解不开情节。
63. 漂亮只能为别人提供眼福,却不一定换到幸福。
64. 美丽让男人停下,智慧让男人留下。
65. 人生最精彩的不是实现梦想的瞬间,而是坚持梦想的过程。
66. 人生的冷暖取决于心灵的温度。
67. 如果你为自己定的所有目标都已达到,那么说明你定的目标还不够远大。
68. 生活可以将就,生活也可以讲究。
69. 女人的眼泪是没用的液体,但你让女人流泪说明你很没用。
70. 忍无可忍,就重新再忍。
71. 睡觉说明明天还要起来。
72.
付出真心,才会得到真心,却可能伤的彻底;保持距离,才能保护自己,却注定永远寂寞。
73. 让梦想成真的最好办法就是醒来。
74. 说真话的最大好处就是你不必记得你都说些什么。
75. 有时候,不是对方不在乎你,而是你把对方看的太重。
76. 废话是人际关系的第一句


