JAVA学习札记

人生起航点!
posts - 18, comments - 0, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2011年7月7日

一.DWR概述   
    DWR是Direct Web Remoting 的缩写。
    DWR 是一个开放源码的使用 Apache 许可协议的解决方案,它包含服务器端 Java 库、一个 DWR servlet 以及 JavaScript 库。虽然 DWR 不是 Java 平台上唯一可用的 Ajax-RPC工具包,但是它是最成熟的,而且提供了许多有用的功能。
    从最简单的角度来说,DWR 是一个引擎,可以把服务器端 Java对象的方法公开给 JavaScript 代码。使用 DWR 可以有效地从应用程序代码中把 Ajax 的全部请求-响应循环消除掉这意味着客户端代码再也不需要直接处理 XMLHttpRequest 对象或者服务器的响应。不再需要编写对象的序列化代码或者使用第三方工具才能把对象变成 XML。甚至不再需要编写 servlet 代码把 Ajax 请求调整成对 Java 域对象的调用。 ]
    DWR 是作为 Web 应用程序中的 servlet 部署的。把它看作一个黑盒子,这个 servlet 有两个主要作用:首先,对于公开的每个类,DWR 动态地生成包含在 Web 页面中的 JavaScript。
成的JavaScript包含存根函数,代表Java类上的对应方法并在幕后执行 XMLHttpRequest。这些请求被发送给 DWR,这时它的第二个作用就是把请求翻译成服务器端 Java 对象上的方法调用并把方法的返回值放在 servlet 响应中发送回客户端,编码成 JavaScript。DWR 还提供了帮助执行常见的用户界面任务的 JavaScript 工具函数。
二.使用方法
    DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
 它包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容. DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)一样;但是Java代码运行在WEB服务器端而且可以自由访问WEB 服务器的资源.出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用.
2.1、dwr.xml的配置
1   <dwr>
2     <allow>
3       <create creator="new" javascript="testClass" >
4          <include method="testMethod1"/> 
5     </create>
6    </allow>
7  </dwr>
8 

<allow>标签中包括可以暴露javascript访问的东西。

<create>标签中指定javascript中可以访问的java类,并定义DWR应当如何获得要进行远程的类的实例。creator="new"属性指定java类实例的生成方式,new意味着DWR应当调用类的默认构造函数来获得实例,其他的还有spring方式,通过与IOC容器Spring进行集成来获得实例等等。javascript=" testClass "属性指定javascript代码访问对象时使用的名称。标签指定要公开给javascriptjava类名。

<include>标签指定要公开javascript的方法。不指定的话就公开所有方法。

<exclude>标签指定要防止被访问的方法。

入门视频:

http://www.verycd.com/groups/@g1897244/737357.topic

 

拓展阅读:

http://baike.baidu.com/view/73492.htm

http://blog.csdn.net/zhaizhanpo/archive/2008/09/27/2988512.aspx

 

http://blog.csdn.net/caterpillar_here/archive/2006/09/06/1186566.aspx

 

三.实例

先下载DWR的JAR包,下载地址:

 

 

http://getahead.ltd.uk/dwr/

将demo(dwr-3.0.0.116.rc1-src\core\impl\demo\web\WEB-INF\lib)实例下的jar文件导入新建项目的web-inf/lib目录下,另外还要加入dwr.jar.

(注意:要加入commons-logging-1.0.4.jar,缺少有时候会报错.)

1.在web.xml文件中注册DWRServlet:负责处理客户端的请求,并呼叫Java物件的是DWRServlet

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
 5     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">    
 6     <servlet>
 7         <servlet-name>dwr-invoker</servlet-name>
 8         <servlet-class>
 9             org.directwebremoting.servlet.DwrServlet
10         </servlet-class>
11         <init-param>
12             <param-name>debug</param-name>
13             <param-value>true</param-value>
14         </init-param>
15     </servlet>
16     
17     <servlet-mapping>
18         <servlet-name>dwr-invoker</servlet-name>
19         <url-pattern>/dwr/*</url-pattern>
20     </servlet-mapping>    
21 </web-app>

2.编写Java物件,即业务Bean:

1 package helloWorld;
2 
3 public class Service {
4     
5     public String sayHello(String yourName) { 
6         //可以是访问数据库的复杂代码
7         return "Hello World " + yourName;
8         }
9 }

3.编写dwr.xml:客户端要呼叫这个Java物件,传给它参数,而返回一個字串,客戶端再展示这个字串,很神奇吧?其实就是是要告訴DWRServlet这件事情:

1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">
3 <dwr>
4     <allow>
5         <create creator="new" javascript="service">
6             <param name="class" value="helloWorld.Service" />
7         </create>
8     </allow>
9 </dwr>

4.测试DWR

将代码放入应用服务器(比如Tomcat),启动。然后在地址栏输入http://localhost:8080/你的工程/dwr

5.编写一个jsp
接下来最后一步就是创建一个jsp文件
1) 要引用几个dwr的js,其中engine.js必须要,如果需要用到dwr提供的一些方便的工具要引用util.js
2) 然后还要引用dwr自动生成的js,dwr/interface/service.js,注意js名字要和dwr.xml配置的一样
 3) js里的service.sayHello和java类的那个有一点区别,多了个参数,用来callback返回的数据
index.jsp
 1 <%@ page language="java" pageEncoding="UTF-8"%>
 2 <html>
 3     <head>
 4         <title>testDWR</title>
 5         <script type='text/javascript' src='dwr/util.js'> </script>
 6         <script type='text/javascript' src='dwr/engine.js'> </script>
 7         <script type="text/javascript" src="dwr/interface/service.js"></script>
 8         <script type="text/javascript">
 9             function firstDwr() {
10                 service.sayHello("Jorwen", callBackHello);
11             }
12             function callBackHello(data) {
13                 alert(data);
14             }
15         </script>
16     </head>
17     <body>
18         <input type="button" name="button" value="测试" onclick="firstDwr();">
19     </body>
20 </html>
6.地址栏输入http://localhost:8080/你的工程/index.jsp 显示的结果如下:

 


 



posted @ 2011-10-10 16:07 簡簡單單 | 编辑 收藏

本文介绍了几乎所有关于对象的基本概念,什么是对象,如何创建对象,对象的属性的设置和读取,删除属性的方法,构造函数,对象原型,父类,子类,继承等等。
1.对象
* 对象是一种复合数据类型,它们将多个数据值集中在一个单元中,而且运行使用名字来存取这些值。解释对象的另一种方式是,对象是一个无序的属性集合,每个属性都有自己的名字和值。存储在对象中的已命名的值可以是数字和字符串这样的原始值,也可以是对象。
*/
var o = new Object();


2.对象直接量创建对象
* 对象直接量由属性说明列表构成,列表包含在大括号中,其中的属性说明由逗号隔开。
* 对象直接量中的每个属性说明都由属性名加上冒号和属性值构成。
*/
var zhangsan = {name:”zhangsan”, age:34, married:true};
window.alert(typeof zhangsan); //输出object

3.属性的读取和设置
* 对象的属性通过点号运算符读取和设置。对象的新属性可以通过直接创建。
*/
window.alert(zhangsan.car); //输出undefined
zhangsan.car=”BMW”; //直接赋值
window.alert(zhangsan.car); //输出BMW

 4.属性的枚举
* 通过for循环枚举每一个属性,顺序不能保证固定。
* 注意枚举出的是属性名称,并不是属性值。
*/
var values = “”;
for(var v in zhangsan)values += v+”\n”; //枚举每一个属性
window.alert(values);

5.属性的删除使用delete,如delete zhangsan.car
*/

6.构造函数
* 构造函数是具有两个特性的javascript函数:
* (1)它由new 运算符调用;
* (2)传递给它的是一个对新创建的空对象的应用,将该引用作为关键字this的值,而且它还要对新创建的对象进行适当的初始化。
* 记住:构造函数只是初始化对象,并不返回新创建的对象。
*/
function Rectangle(w, h){
this.width = w;
this.height = h;
}
var ret1 = new Rectangle(2, 1);
//注意构造函数是如何使用它的参数来初始化this关键字所引用的对象的属性

7.对象的方法
* 所谓方法,就是通过对象调用的javascript函数。我们知道,函数就是数值,它们所使用的名字没有任何特殊之处,可以将函数赋给任何变量,甚至赋给一个对象的任何属性,那么这个属性就是对象的方法了。
* 在对象的方法体内,关键字this的值就成了调用该方法的对象。
*/
function print(){}
ret1.print = print;

 8.关于this的讨论
* 任何一个用作方法的函数都会得到一个额外的实际参数,即调用该函数的对象。由于方法通常是对那个对象执行某种操作,所以要表达函数作用于对象这一事实,最好采用方法的调用语法。
* 如rect.setSize(width, height);
* setSize(rect, width, height);
* 虽然这两行代码对对象rect执行相同的操作,但是第一行代码在表达对象rect是操作的焦点(或者说操作的目标)这一观点时显然清楚得多。
*
* 虽然有区别地对待函数和方法比较有用,但实际上它们之间的差别并不大。回忆一下,函数是存储在变量中的值,而那个变量也不过是全局对象的一个属性。因此,当你调用一个函数时,实际上调用的是全局对象的一个方法。
* 在这样的函数中,关键字this引用的是全局对象。所以函数和方法之间在技术上没有差别,真正的差别在于设计和目的上,方法是用来对this对象进行操作的,而函数通常会是独立的,并不需要使用this对象。
*/
(function f(){
var values = “”;
for(var v in this)values += v + ” “;
window.alert(values);
})(); //返回window对象的所有属性和方法名称

9.原型对象和继承
* javascript每个对象都有原型对象,每个对象都继承原型对象的所有属性。
* 一个对象的原型是由创建并初始化该对象的构造函数定义的。javascript中的所有函数都有prototype属性,它引用了一个对象。虽然原型对象初始化时是空的,
* 但是你在其中定义的任何属性都会被该构造函数创建的所有对象继承。
*
* 构造函数定义了对象的类,并初始化了类中状态变量的属性,如width和height。因为原型对象和构造函数关联在一起,所以类的每个成员都从原型对象继承了相同的属性。
* 这说明原型对象是存放方法和其他常量属性的理想场所。

* 注意,继承是在查询一个属性值时自动发生的。属性并非从原型对象复制到新的对象的,它们只不过看起来像是那些对象的属性。这其中有两点重要的含义。
* 一是使用原型对象可以大量减少每个对象对内存的需求量,因为对象可以继承许多属性。二是即使属性在对象被创建之后才添加到它的原型对象中,对象也能够继承这些属性。
*
* 每个类都有一个原型对象,这个原型对象都具有一套属性。但是实际上却有大量的类实例,每个实例都能继承原型对象的属性。由于一个原型对象能够被多个对象继承,所以javascript
* 必须强化读写属性值之间的不对称性。在读对象o的属性p时,javas会首先检查o是否具有一个名为p的属性。如果o没有这个属性,javascript就会再检查o的原型对象是否具有这个属性。这样才使得以原型为基础的继承机制起作用。
*
* 但是当写一个属性的值时,javascript并不会检查原型对象中是否有这个属性的值。因为,如果允许改变原型对象的这一属性,那就改变了整个对象类的p值,包括其他new出来的对象变量的属性值。
*
* 因此,属性的继承只发生在读属性值时,而不会发生在写属性值时。如果你设置的对象o的属性p是对象o从它的原型对象继承而来的,那么结果就是你直接在对象o中创建了一个新属性p。现在o已经有了一个自己的名为p的属性,它就不会再从它的原型对象继承p的值了。当你读p的值时,java首先查询o的属性。
* 由于它发现了o中定义的p,就不必再查询原型对象,也就不会再发现原型对象中定义的p值了。我们称之为o中的p”遮蔽”了或者说”隐藏”了原型对象中的属性p。
*
* 因为原型对象的属性被一个类的所有对象共享,所以通常只用它们来定义类中所有对象的相同的属性。这使得原型对象适用于方法定义和常量的定义。
*/

10. 实例属性、实例方法、类属性、类方法
* 每个对象都有它自己单独的实例属性的副本。我们说javas中的实例属性是那些在对象中用构造函数创建的或初始化的属性。
*
* 实例方法是由特定对象或实例调用的。实例方法使用了关键字this来引用它们要操作的对象或实例。虽然一个类的任何实例都可以调用实例方法,并不意味着每个对象都像实例属性那样含有自己专有的方法副本。相反,每个实例方法都是由类的所有实例共享的。在javascript中,给类定义一个实例方法,是通过把构造函数的原型对象中的一个属性设置为函数值来实现的。
* 这样,由那个构造函数创建的所有实例都会共享一个已继承的对函数的引用。
*
* 类属性表示在所有类实例中只有一个副本。在javascript中,类属性本质上就是全局变量。但是它们与一个类关联在一起,在javascript的名字空间中拥有一个逻辑位置,这样它们就不会被其他的同名属性覆盖。
* 如Circle.PI=3.14。虽然Circle是一个构造函数,但是由于javascript函数是对象,所以我们可以创建函数的属性,就像创建对象的属性一样。
*
* 类方法与类属性相似。在javascript中,要定义一个类方法,只需要用合适的函数作为构造函数的属性即可。
*/

11. 父类和子类
* 在javascript中,Object类所有类的父类,处于类层次图的最上层。所有的类都继承了Object类的所有方法。
*
* 我们已经学会了对象如何从它们构造函数的原型对象中继承属性,那么它们又是如何继承类Object的属性哪?我们知道,原型对象本身就是一个对象,它是由构造函数Object()创建的。
* 这就意味着原型对象继承了Object.prototype属性。因此,ret1会继承Rectangle.prototype的属性,还会继承Object.prototype的属性。整因为所有对象的prototype属性会继承Object.prototype属性,
* 所以所有javascript子类都继承了Object的所有属性,也即Object类是javascript的根类,处于类层次图的最顶层。
*/

 12.使用[]读取和设置对象的属性
* 通常会采用点号运算符访问对象的属性,但是点号后面的属性是标识符。在javascript中,标识符必须逐字输入,它们不是一种数据类型。如果程序中属性是动态的、不确定的,那么我们将无法访问。
* 前面解释过,对象是一群属性的集合,也就是数组。那么可以使用数组访问成员的运算符[]来访问对象的属性。[]中是属性名称,是字符串类型,我们就可以动态的确定对象属性名称了。
*
* 使用[]运算符的对象我们也称之为关联数组。关联数组是一种数据结构,允许你动态地将任意值和任意字符串关联在一起。实际上,javascript对象在内部就是用关联数组实现的。使用点号运算符只是为了是他们看起来更像C++和Java的静态对象而已。
*
* 前面的for/in循环实际上是对数组的操作。
*
* 我们通常意义说的数组是将任何值和非负整数关联在一起的数据结构。
*
* 数组实际上是一个具有额外功能层的对象。如var a = new Array();window.alert(typeof a);输出Object。
*/

13. Object类的属性和方法
* constructor属性表示初始化该对象的构造函数。因此,可以使用该属性来判断对象的类型。
*/
function A(){return “aaaaaaaaa”};
var a = new A();
window.alert(a.constructor); //输出的是A的函数定义
window.alert(a.constructor==A); //结果是true
window.alert(a.constructor()); //输出aaaaaaaaaa

/**
* toString()方法没有任何实际参数,它返回的是一个字符串,该字符串代表了调用它的对象的类型或值。当javascript需要将一个对象转化成字符串时就调用这个对象的toString方法。
* 例如,当用运算符”+”把一个字符串和一个对象连接到一起时,或者把一个对象传递给alert()或document.write()方法时,就会调用toString()方法。
*/

 

posted @ 2011-10-10 16:06 簡簡單單 | 编辑 收藏

     摘要: 一.概述:Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP. dom4j是一个Ja...  阅读全文

posted @ 2011-10-10 15:44 簡簡單單 阅读(653) | 评论 (0)编辑 收藏

     摘要: 一.数据库连接池的概念及作用     数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超...  阅读全文

posted @ 2011-10-10 15:38 簡簡單單 阅读(1014) | 评论 (0)编辑 收藏

现在越来越多的外国企业在中国开设分公司,很多人有很强的技术和能力,但是英语不行进不了外企。这是因为中国糟糕的英语教育导致的,我们大家都是学英语学了几十年到头来都是英语聋哑人。

本方法是笔者多年国内外学习英语的经历并结合语言专家们的教学经验总结出来的,只是提高口语和听力,适合那些有一定英语基础,想提高口语,但不想花钱留学又不想上昂贵的英语培训班的人。另外其中有些方法会比较特别,颠覆传统的学习方法,可能不适合所有人,一般来说每天坚持本方法练习3到6个月就会有效果,如果仍然没有,那很可能本方法不适合你。

首先在介绍方法之前,我先给英语口语水平分3个级别。level0,level1和level2。无论刚开始学ABC还是大学过了四,六级,大部分人的口语level都是0,是的别不服气。什么是level1,0和1的区别就是当你说英语时候可以脱口而出,不用先在脑海里把要表达的中文翻译成英文。虽然句子说的慢,只要没有过多过长的停顿,没有想中文没有翻译的过程,那么恭喜你,你已经属于level1了,下面的文字也不需要再看了。什么是 level2,当你说英语的时候,别人把你当成了在国外长大的人,说明你的口语已经和母语是英语的人几乎没有区别,这是level2。

0到1的改变很难很难,除了时间和适合自己的方式方法还需要有语言环境。出国留学工作一两年,或者有外国朋友经常一起交流,一般都能到达 level1。1到2的改变更难,对于大部分人来说,永远都不可能达到。我在国外工作了快5年,只看见过一个人达到了level2。如果你觉得自己是 level0,想升级到1,但是苦于国内没有语言环境,可以试试本方法。因为没有翻译的过程,1比0说起来更连贯自然,说英语的时候,可以从关注英语本身转变到有效交流上来。这是口语的一个飞跃,也是外企所要求的英语流利的标准。

方法取名EasySpeaking,就是因为它简单易学,随时随地都可以练,口语提高的同时,听力也能提高,以说带听。方法总结为3条规则:Forget Grammar;Thinking In English;Spontaneous Speaking。

1)Forget Grammar 忘掉语法

这一条是本方法的核心,颠覆了我们中国式英语教育。中国式英语教育永远把语法放在第一位,因为它是面向考试的。这违背了语言诞生的本来目的,语言就是交流的工具,有效交流才是最重要的。想想我们小时候是怎么学说话的?是先学主语谓语的吗?我敢保证你3,4岁时的中文肯定比你学了十几年的英文说的好。为什么,因为我们小的时候为了交流,模仿大人们说话,而不是先学语法。同样很多语言专家都教导我们,学语言的时候尽量忘掉我们的母语。说的简单,怎么忘呀。其实就是像幼儿学说话一样把交流放在第一位,跳出语法的限制,让说英语没有翻译的过程,没有中文母语的干扰。有人说语法说错了,老外会听的懂吗会笑话我吗?想想一个老外跟你说中文,主谓语颠倒了,你肯定也能听得懂,还会夸他中文说的好。同样老外也能听得懂我们,如果你每次说一句话都要花1,2分钟在脑子里想过去式还是过去分词,再加个定语从句什么的,老外肯定受不了,美国总统讲演还有语法错误呢。

等有朝一日,你到达了level1,你就会发现好像中文和英文是两套不同系统在你的脑子里,可以自由切换而不再会互相干扰。多么牛X的一件事!

另外忘掉语法,并不会使你的语法变差,下面要讲的第二条规则教你如何检查语法。

2)Thinking In English 用英语思维

这条规则可以让你在任何时间,任何地点,任何场合下练英语。说的简单点就是自己想象一些话题,场景对话,心里感受或者将要干的事情,然后用英语自言自语,不发出声音,在心里默念。比如,当你上班在地铁里的时候,用英语描述一下今天的工作计划;当你走在街上看到一件有趣的事情,用英语描述一下什么事情;晚上睡觉前用英文想想今天干了什么事,遇到了什么人,说了什么话。这就是在没有封闭的语言环境下,创造自我封闭的语言环境,随时随地的训练。有时候需要强迫自己把心里想的和要表达的话用英语再复述一遍。

注意第一条规则,把我们以前先想语法再说话的顺序颠倒,先说话再检查刚才的语法错误。发生了的事情应该用过去式,复数应该加s,代词应该用she 不是he等等。久而久之你会发现你犯的语法错误会越来越少。只有在一个人的时候才可以发出声音,在公共场合只要“想”就可以了,切记。

口头英语和书面英语有不一样的表达方式,我以前经常把书面英语的表达方式用到口语中,比如说一句话,加上各种从句,自己觉得还挺牛,其实这是错误的。我在国外多年,听老外们说话都是很简单的句子,很少人用从句。还有避免使用生晦的单词,尽量多的使用短语。以上几点都是有助于口语的快速表达。

3)Spontaneous Speaking

Spontaneous有自发的,自然而然的意思,此规则翻译过来就是:无准备演讲和对话。上一条规则是无声训练,现在就是有声训练了,这是非常非常关键的一步。Spontaneous Speaking来自于我在国外的英语老师,他叫Mike,在爱尔兰出生,有40多年英语教学经验。我们每天英语课的开始,都要先做30分钟无准备英语演讲的训练。他有一个盒子,里面有上百个话题的纸条,他会叫一个学生从盒子里随机抽出一个话题,让他站在讲台前演讲。大概5分钟后,他会叫你停止,逐字逐句的指出你的语法错误。然后再指定台下另外一个同学,对刚才演讲的内容提问,台上的同学回答。话题有难有易,比如描述你上个周末去哪玩了;聊聊你最好的朋友;假如你现在改变了性别,什么事情会发生^_^!。因为随机抽取话题,你的讲演是无准备的(相对于第二条规则的有准备训练)也是最真实体现你口语水平的。因为站在台上,你肯定是紧张的,大脑高速运转,注意力高度集中在讲演内容上,而不是英语表达上,这可以强迫你忘掉母语对表达的干扰。台上5分钟的效果胜于自己一周英语练习的效果。每个人一周会被叫到两次演讲,后来因为工作的原因(朋友内部推荐的没有面试)我只上了一个多月的课,但是效果太明显了,我从几乎说不出完整句子到可以和老外自如的交流。不过那个时候我还没有达到level1,还是需要先翻译。

下面讲讲我是如何到达level1。工作了一年,虽然有语言环境但是IT工作说的机会不是很多,口语一直没有突破。有一天我决定跳槽,网站贴出简历以后,平均每天都有两个电话面试,每周都有面对面的面试。一开始接电话很多都听不懂,自己表达也是磕磕绊绊,技术没问题,就是语言有问题,浪费了很多机会。但并没有灰心,就这样不停的接电话,面试,听力,口语和面试技巧都提高了。直到两个月后,终于找到了一家自己满意的公司。进了新公司和同事们一交流,发现自己的口语水平比以前提高了一大块,交流的时候流利了很多,不再想中文了,回家打开电视,所有的新闻都能听懂了。感觉突然开窍了一样,当时比找到新工作还高兴。回想这两个月发生的事情,其实我一直都在做Spontaneous Speaking的训练,也就是无准备对话。我永远不知道面试官的下一个问题,所以是无准备的,面试肯定会紧张,注意力全集中在如何回答问题上。就这样两个月大量Spontaneous Speaking的训练,让我达到了level1。

Spontaneous Speaking的特点:无准备,适度紧张,专注交流内容而不是语言表达。因为国内没有语言环境,这个规则的训练也是整个方法中最难的,不是所有人都有这样的机会和勇气进行Spontaneous Speaking的训练。我说几个可以进行这种训练的地方和方式:外国人聚集的地方,比如北京的三里屯,用恰当的方式和老外交流,可以假装自己是个记者,想了解一下他来中国的感受;英语角,找比自己水平稍微高一点的人对话,有的英语角有演讲的环节(比如北京的朝阳区文化馆,以前我每周都去),一定要把握住这样的机会;在家里用电话打国外的免费客服,听说有人这么练过;还有就是花钱上有外教的英语培训班。每周至少有两次Spontaneous Speaking的训练,一般3个月就会感觉到效果了。

三条规则都说完了,其实还有一条最重要的规则没有说,那就是学习英语的意愿,或者说动力。为什么把一个人放到国外他英语就学的快,除了语言环境,还有就是学习的意愿。大家常说那是生存英语,是的,打工的不学英语就找不到工作没饭吃,上学的不学英语就听不懂讲课毕不了业。在国内英语口语用的很少,大部分人都没有这样的压力,所有也没有强烈的口语学习意愿。怎么办?要学会自我激励和暗示。拿出一张纸,写上至少十个学习口语的理由,比如周游世界,结交外国朋友……当你想偷懒的时候拿出来看看。总而言之让学习成为生活的一部分,一天不学就感觉缺点什么,有这样的意愿,想不提高都难。

posted @ 2011-07-07 09:15 簡簡單單 | 编辑 收藏

1. Absolutely not. 绝对不是。
2. Are you coming with me? 你跟我一起去吗?
3. Are you sure? 你能肯定吗?
4. As soon as possible. 尽快。
5. Believe me. 相信我。
6. Buy it . 买下来!
7. Call me tomorrow. 明天打电话给我。
8. Can you speak slowly? 请您说得慢些好吗?
9. Come with me. 跟我来。
10. Congratulations. 恭喜恭喜。
11. Do it right! 把它做对。
12. Do you mean it ? 你是当真的吗?
13. Do you see him often? 你经常见到他吗?
14. Do you see it? = Do you understand? 你明白了吗?
15. Do you want it? 你要吗?
16. Do you want something? 你想要些什么?
17. Don’t do it . 不要做。
18. Don’t exaggerate. 不要夸张。
19. Don’t tell me that. 不要告诉我。
20. Give me a hand . 帮我一下。
21. Go right ahead. 一直往前走。
22. Have a good trip. 祝旅途愉快。
23. Have a nice day. 祝你一天过得愉快。
24. Have you finished? 你做完了吗?
25. He doesn’t have time. 他没空。
26. He is on his way. 他现在已经在路上了。
27. How are you doing? 你好吗?
28. How long are you staying ? 你要呆多久?
29. I am crazy about her. 我对她着迷了。
30. I am wasting my time . 我在浪费时间。
31. I can do it . 我能做。
32. I can’t believe it . 我简直不能相信。
33. I can’t wait . 我不能再等了。
34. I don’t have time . 我没时间了。
35. I don’t know anybody. 我一个人都不认识。
36. I don’t like it . 我不喜欢。
37. I don’t think so .  我认为不是。
38. I feel much better. 我感觉好多了。
39. I found it .  我找到了。
40. I hope so . 我希望如此。
41. I knew it .  我早知道了。
42. I noticed that. 我注意到了。
43. I see. 我明白了。
44. I speak English well. 我英语说得很好。
45. I think so . 我认为是这样的。
46. I want to speak with him. 我想跟他说话。
47. I won. 我赢了。
48. I would like a cup of coffee, please. 请给我一杯咖啡。
49. I’m hungry. 我饿死了。
50. I’m leaving. 我要走了。
51. I’m sorry. 对不起。
52. I’m used to it . 我习惯了。
53. I’ll miss you. 我会想念你的。
54. I’ll try. 我试试看。
55. I’m bored. 我很无聊。
56. I’m busy. 我很忙。
57. I’m having fun. 我玩得很开心。
58. I’m ready. 我准备好了。
59. I’ve got it . 我明白了。
60. I’ve had it . 我受够了。
61. It’s incredible! 真是难以置信!
62. Is it far? 很远吗?
63. It doesn’t matter. 没关系。
64. It smells good. 闻起来很香。
65. It’s about time . 是时候了。
66. It’s all right. 没关系。
67. It’s easy. 很容易。
68. It’s good. 很好。?
69. It’s near here. 离这很近。
70. It’s nothing. 没什么。
71. It’s time to go . 该走了。
72. It’s different. 那是不同的。
73. It’s funny. 很滑稽。
74. It’s impossible. 那是不可能的。
75. It’s not bad. 还行。
76. It’s not difficult. 不难.
77. It’s not worth it .  不值得。
78. It’s obvious. 很明显。
79. It’s the same thing. 还是一样的。
80. It’s your turn. 轮到你了。
81. Let me see . 让我想想。
82. Let me know . 告诉我。
83. Me too. 我也一样。
84. Not yet. 还没有。
85. Relax! 放松。
86. See you tomorrow.  明天见。
87. She is my best friend . 她是我最好的朋友。
88. She is so smart. 她真聪明。
89. Show me .  指给我看。
90. Tell me . 告诉我。
91. Thank you very much.  多谢。
92. That happens. 这样的事情经常发生。
93. That’s enough. 够了。
94. That’s interesting. 很有趣。
95. That’s right. 对了。
96. That’s true. 这是真的。
97. There are too many people here. 这里人很多。
98. They like each other. 他们互相倾慕。
99. Think about it . 考虑一下。
100. Too bad! 太糟糕啦!
101. Wait for me . 等等我。
102. What did you say? 你说什么?
103. What do you think? 你认为怎样?
104. What is he talking about? 他在说些什么?
105. What terrible weather! 多坏的天气。
106. What’s going on/ happening / the problem? 怎么啦?
107. What’s the date today?今天几号?
108. Where are you going ? 你去哪里?
109. Where is he? 他在哪里?
110. You are impatient. 你太性急了。
111. You look tired. 你看上去很累。
112. You surprise me. 你让我大吃一惊。
113. You’re crazy. 你疯了。
114. You’re welcome. 别客气。
115. You’re always right. 你总是对的。
116. You’re in a bad mood. 你的心情不好。
117. You’re lying. 你在撒谎。
118. You’re wrong. 你错了。

posted @ 2011-07-07 09:14 簡簡單單 | 编辑 收藏