玩了这么久的jive论坛了,以前一直沉迷于他在设计上那优雅的模式运用,但是对他处理自己的属性文件(jive_config.xml)却是一直没有怎么在意,可以说唯一的了解就是只知道他都是通过com.jivesoftware.forum包里面的JiveGlobals类来处理自己的配置文件里面的各种属性(其实是错误的),至于怎么处理的就不得而知了。
最近总感觉自己应该好好学习一下XML文件的处理了。有了想法就应该马上动手,所以马上就打开了那可爱的MyIE2,不管三七二十一,先Google一番再说。一下子眼前关于XML文件处理的技术资料看得我眼花缭乱。看来Google能当搜索老大是有道理的。在里面遨游一番后大概了解到现在主要的几种XMl处理解决方案:
一、 DOM
DOM是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准,以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。DOM 以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。
二、 SAX
这种处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。一般来说,SAX 还比它的替代者 DOM 快许多。
三、 JDOM
JDOM 的目的是成为 Java 特定文档模型,它简化与 XML 的交互并且比使用 DOM 实现更快。由于是第一个 Java 特定模型,JDOM 一直得到大力推广和促进。正在考虑通过“Java 规范请求 JSR-102”将它最终用作“Java 标准扩展”。从 2000 年初就已经开始了 JDOM 开发。JDOM 文档声明其目的是“使用 20%(或更少)的精力解决 80%(或更多)Java/XML 问题”(根据学习曲线假定为 20%)。JDOM 对于大多数 Java/XML 应用程序来说当然是有用的,并且大多数开发者发现 API 比 DOM 容易理解得多。
四、 DOM4J
虽然 DOM4J 代表了完全独立的开发结果,但最初,它是 JDOM 的一种智能分支。它合并了许多超出基本 XML 文档表示的功能,包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过 DOM4J API 和标准 DOM 接口具有并行访问功能。从 2000 下半年开始,它就一直处于开发之中。 为支持所有这些功能,DOM4J 使用接口和抽象基本类方法。DOM4J 大量使用了 API 中的 Collections 类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是,虽然 DOM4J 付出了更复杂的 API 的代价,但是它提供了比 JDOM 大得多的灵活性。 在添加灵活性、XPath 集成和对大文档处理的目标时,DOM4J 的目标与 JDOM 是一样的:针对 Java 开发者的易用性和直观操作。它还致力于成为比 JDOM 更完整的解决方案,实现在本质上处理所有 Java/XML 问题的目标。在完成该目标时,它比 JDOM 更少强调防止不正确的应用程序行为。 DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。
上面这些都是Google半天后得一些成果,后面就需要我自己来先选一个好好深入探个究竟了。在Google的时候还了解到自己一直爱不释手的JIVE就是用JDOM处理的XML文件,于是决定:不管谁优谁劣,先看看JDOM再说吧!
在JIVE中, JDOM主要是操作配置文件来对系统进行各种配置。比如系统的locale,字符集,数据库连接信息等等。先看看他具体怎么实现的吧:
这些属性全部是写在一个叫jive_config.xml的文件中.这个XML文件的排列方式和使用方式是这样:
CN
zh
Asia/Shanghai
GBK
其中是整个文档的根元素,所有的其他元素都必需在这个根元素里面
系统中处理此文档的一个关键类就是XMLProperties类,其中有以下几个主要的操作方法:
读取:getProperty(name) ;通过name参数来读取需要的属性,其中name其实就是元素名称,要读取的就是元素的值。
新增修改: setProperty(name, value);通过name参数和value参数来设置(修改和新增)属性,同getProperty(name)的name参数一样就是元素(也就是属性名),而value就是要设置的属性值。
删除: deleteProperty(name) ;通过给定的属性名name参数来删除此属性(包括名和值,其实就是在xml文件中删除此元素结点)
系统还有一个与XMLProperties相对应JiveGlobals类,在里面有与之对应的三个方法:getJiveProperty();setJiveProperty();deleteJiveProperty()。我们还是选一个方法看看其具体实现吧:
public static String getJiveProperty(String name) {
if (properties == null) {
loadProperties();//这里是先load出XML文件必要属性
}
return properties.getProperty(name);
}
我想大家一眼就能看明白这个方法的实现,在return 后的properties就是XMLProperties类的一个对象(这个可以在JiveGlobals的loadProperties方法中看出),这里就直接通过该对象调用XMLProperties的getProperty方法。相当于这里只是把XMLProperties类的方法通过JiveGlobals类来给“外界”使用,而不是直接通过XMLProperties来用。那这几个方法具体怎么用呢?其实非常简单。
先看看我怎么取language属性的值吧:JiveGlobals.getJiveProperty(“email.fromEmail”),简单吧,其实这都归功于XMLProperties中对JDOM的使用。
我们先看看XMLProperties:吧
public class XMLProperties {
private File file;
private Document doc;
private Map propertyCache = new HashMap();
public XMLProperties(String fileName) throws IOException {
this.file = new File(fileName);
…… //这里省略部分构造函数
try {
SAXBuilder builder = new SAXBuilder();
DataUnformatFilter format = new DataUnformatFilter();
builder.setXMLFilter(format);
doc = builder.build(file);
}
catch (Exception e) {
System.err.println("Error creating XML properties file: ");
e.printStackTrace();
throw new IOException(e.getMessage());
}
}
public synchronized String getProperty(String name) {
String value = (String)propertyCache.get(name);
if (value != null) {
return value;
}
String[] propName = parsePropertyName(name);
Element element = doc.getRootElement();
//根据解析名称字符串得到的名称结点数组寻找该属性值所在的结点.
for (int i = 0; i < propName.length; i++) {
element = element.getChild(propName[i]);
if (element == null) {
return null;
}
}
//通过JDOM中Element类非常简单就取得了需要的value值也就是属性值.
value = element.getText();
if ("".equals(value)) {
return null;
}
else {
//这里是将属性放到缓存里面,方便以后更快读取.
value = value.trim();
propertyCache.put(name, value);
return value;
}
}
/**
* 通过父元素查找他的所有子元素
* @param 父结点(元素)的名称.
* @return 所有子元素的名称组成的字符串数组.
*/
public String [] getChildrenProperties(String parent) {
String[] propName = parsePropertyName(parent);
Element element = doc.getRootElement();
for (int i = 0; i < propName.length; i++) {
element = element.getChild(propName[i]);
if (element == null) {
return new String [] { };
}
}
List children = element.getChildren();
int childCount = children.size();
String [] childrenNames = new String[childCount];
for (int i=0; i
childrenNames[i] = ((Element)children.get(i)).getName();
}
return childrenNames;
}
/**
* 修改属性. 如果不存在这个属性就再正确的位置添加一个
* @param name 需要修改的属性明称.
* @param value 修改后的值.
*/
public synchronized void setProperty(String name, String value) {
// 先将缓存里面的内容改过来.
propertyCache.put(name, value);
String[] propName = parsePropertyName(name);
Element element = doc.getRootElement();
for (int i=0; i
// 这里和getProperty方法有些区别了,如果找不到就添加一个结点
if (element.getChild(propName[i]) == null) {
element.addContent(new Element(propName[i]));
}
element = element.getChild(propName[i]);
}
// set属性值
element.setText(value);
// 将修改了的属性文件写到磁盘上
saveProperties();
}
/**
*删除属性.
* @param name 需要删除的属性名称.
*/
public synchronized void deleteProperty(String name) {
// 先把缓存里面的属性移除.
propertyCache.remove(name);
String[] propName = parsePropertyName(name);
Element element = doc.getRootElement();
for (int i=0; i
element = element.getChild(propName[i]);
// 找不到就直接返回.
if (element == null) {
return;
}
}
// 找到就移除...
element.removeChild(propName[propName.length-1]);
// .. 然后再写回磁盘.
saveProperties();
}
/**
* 将属性文件保存到磁盘. 方法中在写文件的进程时用到了临时文件.
*/
private synchronized void saveProperties() {
OutputStream out = null;
boolean error = false;
// 为防止写的时候出错,先将数据写进临时文件.
File tempFile = null;
try {
tempFile = new File(file.getParentFile(), file.getName() + ".tmp");
// 用 JDOM的 XMLOutputter 去做写和格式化的工作.
XMLOutputter outputter = new XMLOutputter(" ", true);
out = new BufferedOutputStream(new FileOutputStream(tempFile));
outputter.output(doc, out);
}
catch (Exception e) {
e.printStackTrace();
// 有错务,放弃覆盖原来的旧属性文件.
error = true;
}
finally {
try { out.close(); }
catch (Exception e) {
e.printStackTrace();
error = true;
}
}
// 下面主要就是一些文件方面的操作了。没有错误,我们就可以安全的替换旧的属性文件了
……………………
}
/**
* 将提交的用”.”分开的属性名称分解成一个字符串数组,以便在后面寻找结点的时候用
* @param name属性名称.
* @return返回的是一个数组,通过解析属性名称(通过分析”.”)得到.
*/
private String[] parsePropertyName(String name) {
//省略了分析属性名称的部分代码
……………………
}
}我们看看XMLProperties类中的实现吧,从头开始吧:
一开始就在构造函数里面开始就建立了一个JDOM的Document(xml文档类型)空对象doc,然后通过SAXBuilder build出来,不过还借助了DataUnformatFilter的帮助,后面将多次用到他。接着看看取得xml文档中的的属性吧(getProperty(String name)方法)。 关键代码从由属性名称取得结点数组后面开始,首先是通过doc取得文档根结点,然后就是通过JDOM的Element的getChild()来一层一层往里找需要读取的属性所在的结点, 然后就是很轻松的通过getText()来读取这个结点元素的value值了。这里还只是读取XML文件中特定结点元素的value值的操作,不过其他还有修改添加删除方面的操作其实也非常简单,下面的setProperty(String name,String value)和deleteProperty(String name)方法就是修改添加删除操作,很多地方和前面的getProperty(String name)差不多,setProperty里面也是先找名称为name的结点,找到就就用setText()来修改其value,找不到就先通过Element的addContent(String name)添加一个结点元素,然后再给他setText()。而deleteProperty(String name)也同样是先通过的Element找到需要删除的属性所在的结点元素的上一级结点,然后就是他的removeChild(String name)出场移除结点的了。这里有个地方需要注意的,就是对文档的改动其实都是再内存里面的改动,最后是需要将改动保存到磁盘上面的xml文件上面的,所以JIVE的setProperty(String name,String value)和deleteProperty (String name)方法最后都调用了一个saveProperties()方法,这就是保存文档数据的一个方法,大家应该看到了,这里JIVE用到了JDOM的XMLOutputter 的output(Document,OutputStream)去做写和格式化的工作.为了在遇到错误的时候不至于把数据丢失或损坏,先把数据写到临时文件上面去,如果没有什么错误,再删除原来的文件并把临时文件改成属性文件
到这里大家应该对JDOM有了一个大概的了解了吧?最后再总结一下吧,在JIVE的XMLProperties中,首先通过JDOM的SAXBuilder类型的builder来build出一个JDOM的Document类型的doc,后面就是对这个doc进行操作了,通过doc获取其根结点(元素),找到我们需要的element,然后再通过Element的setText(String)和getText()方法来对其value进行set、get,或者通过addContent(String)和removeChild()来add或remove其child ,仅此而已。
看到这里是不是觉得JDOM真的很简单呢?其实事实本就是如此,JDOM的特点就是简单易用。不过千万不要以为JDOM旧只有这么一点点功能,其实这还只是他很小的一点点功能,但是这些却是我们用到的比较频繁的一些功能,要知道JDOM文档中申明其目的就是“使用 20%(或更少)的精力解决 80%(或更多)Java/XML 问题”!至于其他的一些功能就留给读者自己钻研学习去吧,我在此只做个抛砖引玉,就不在此罗嗦了!
方法一
1.新建一个同名的数据库
2.再停掉sql server(注意不要分离数据库)
3.用原数据库的数据文件覆盖掉这个新建的数据库
4.再重启sql server
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
数据库的脚本创建一个新的数据库,并将数据导进去就行了.
USE MASTER
GO
SP_CONFIGURE ‘ALLOW UPDATES’,1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME=’置疑的数据库名’
Go
sp_dboption ‘置疑的数据库名’, ’single user’, ‘true’
Go
DBCC CHECKDB(‘置疑的数据库名’)
Go
update sysdatabases set status =28 where name=’置疑的数据库名’
Go
sp_configure ‘allow updates’, 0 reconfigure with override
Go
sp_dboption ‘置疑的数据库名’, ’single user’, ‘false’
Go
方法二
事情的起因
昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件XXX_Data.ldf文件已经增长到了3GB,于是我决意缩小这个日志文件。经过收缩数据库等操作未果后,我犯了一个自进入行业以来的最大最愚蠢的错误:竟然误删除了这个日志文件!后来我看到所有论及数据库恢复的文章上都说道:“无论如何都要保证数据库日志文件存在,它至关重要”,甚至微软甚至有一篇KB文章讲如何只靠日志文件恢复数据库的。我真是不知道我那时候是怎么想的?!
这下子坏了!这个数据库连不上了,企业管理器在它的旁边写着“(置疑)”。而且最要命的,这个数据库从来没有备份了。我唯一找得到的是迁移半年前的另外一个数据库服务器,应用倒是能用了,但是少了许多记录、表和存储过程。真希望这只是一场噩梦!
没有效果的恢复步骤
附加数据库
_Rambo讲过被删除日志文件中不存在活动日志时,可以这么做来恢复:
1,分离被置疑的数据库,可以使用sp_detach_db
2,附加数据库,可以使用sp_attach_single_file_db
但是,很遗憾,执行之后,SQL Server质疑数据文件和日志文件不符,所以无法附加数据库数据文件。
DTS数据导出
不行,无法读取XXX数据库,DTS Wizard报告说“初始化上下文发生错误”。
紧急模式
怡红公子讲过没有日志用于恢复时,可以这么做:
1,把数据库设置为emergency mode
2,重新建立一个log文件
3,把SQL Server 重新启动一下
4,把应用数据库设置成单用户模式
5,做DBCC CHECKDB
6,如果没有什么大问题就可以把数据库状态改回去了,记得别忘了把系统表的修改选项关掉
我实践了一下,把应用数据库的数据文件移走,重新建立一个同名的数据库XXX,然后停掉SQL服务,把原来的数据文件再覆盖回来。之后,按照怡红公子的步骤走。
但是,也很遗憾,除了第2步之外,其他步骤执行非常成功。可惜,重启SQL Server之后,这个应用数据库仍然是置疑!
不过,让我欣慰的是,这么做之后,倒是能够Select数据了,让我大出一口气。只不过,组件使用数据库时,报告说:“发生错误:-2147467259,未能在数据库 ‘XXX’ 中运行 BEGIN TRANSACTION,因为该数据库处于回避恢复模式。”
最终成功恢复的全部步骤
设置数据库为紧急模式
ü 停掉SQL Server服务;
ü 把应用数据库的数据文件XXX_Data.mdf移走;
ü 重新建立一个同名的数据库XXX;
ü 停掉SQL服务;
ü 把原来的数据文件再覆盖回来;
ü 运行以下语句,把该数据库设置为紧急模式;
运行“Use Master
Go
sp_configure ‘allow updates’, 1
reconfigure with override
Go”
执行结果:
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
已将配置选项 ‘allow updates’ 从 0 改为 1。请运行 RECONFIGURE 语句以安装。
接着运行“update sysdatabases set status = 32768 where name = ‘XXX’”
执行结果:
(所影响的行数为 1 行)
ü 重启SQL Server服务;
ü 运行以下语句,把应用数据库设置为Single User模式;
运行“sp_dboption ‘XXX’, ’single user’, ‘true’”
执行结果:
命令已成功完成。
ü 做DBCC CHECKDB;
运行“DBCC CHECKDB(‘XXX’)”
执行结果:
‘XXX’ 的 DBCC 结果。
’sysobjects’ 的 DBCC 结果。
对象 ’sysobjects’ 有 273 行,这些行位于 5 页中。
’sysindexes’ 的 DBCC 结果。
对象 ’sysindexes’ 有 202 行,这些行位于 7 页中。
’syscolumns’ 的 DBCC 结果。
………
ü 运行以下语句把系统表的修改选项关掉;
运行“sp_resetstatus “XXX”
go
sp_configure ‘allow updates’, 0
reconfigure with override
Go”
执行结果:
在 sysdatabases 中更新数据库 ‘XXX’ 的条目之前,模式 = 0,状态 = 28(状态 suspect_bit = 0),
没有更新 sysdatabases 中的任何行,因为已正确地重置了模式和状态。没有错误,未进行任何更改。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
已将配置选项 ‘allow updates’ 从 1 改为 0。请运行 RECONFIGURE 语句以安装。
ü 重新建立另外一个数据库XXX.Lost;
DTS导出向导
ü 运行DTS导出向导;
ü 复制源选择EmergencyMode的数据库XXX,导入到XXX.Lost;
ü 选择“在SQL Server数据库之间复制对象和数据”,试了多次,好像不行,只是复制过来了所有表结构,但是没有数据,也没有视图和存储过程,而且DTS向导最后报告复制失败;
ü 所以最后选择“从源数据库复制表和视图”,但是后来发现,这样总是只能复制一部分表记录;
ü 于是选择“用一条查询指定要传输的数据”,缺哪个表记录,就导哪个;
ü 视图和存储过程是执行SQL语句添加的。
这样,XXX.Lost数据库就可以替换原来的应用数据库了。
我想稍微对java的运行平台JVM(java虚拟机)有一点点了解的人都知道在一个应用程序启动的时候,虚拟机都要分配一个最的内存和最小内存给他的。对于内存吃内存狂的JAVA来说,这个初始内存和最大内存在一定程度会对应用程序的性能产生很大的影响。比如说在我们的应用程序用到JVM给的这个最大内存配额的时候,JVM就不得不先停下我们的应用程序的工作,去寻找可以回手的垃圾(释放已经无用的对象占用的内存),释放被占用的一些内存。
一般我们为了自己配额的这个最大值和最小值都是在启动java程序的时候加参数:-Xms -Xmx来调整应用程序的初始内存和最大内存,其中Xms代表最小配额,Xmx代表最大配额。
比如:java -Xms128 -Xmx512 sky000.java
这里就是在启动sky000这个java程序的时候让JVM给他分配最小128M内存最多512M内存。
在前段时间,我用resin的时候启动文件里面还好设置这两个参数,但是换了tomcat以后就不一样了,
tomcat的启动并不是普通的java程序那样,是经过了封装的,所以在设置这两个参数的时候还有写麻烦,不过只要是java程序,总有地方可以设置这个参数的。
在查找了一些资料以后终于搞定了,可以通过下面这两种方法来解决:
1. 就需要在环境变量中加上TOMCAT_OPTS, CATALINA_OPTS两个属性,
如 SET CATALINA_OPTS= -Xms64m -Xmx512m;
ms是最小的,mx是最大,64m, 512m分别是指内存的容量.
2. 修改Catalina.bat文件
在166行“rem Execute Java with the applicable properties ”以下每行
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs=”%JAVA_ENDORSED_DIRS%” -classpath “%CLASSPATH%” -Dcatalina.base=”%CATALINA_BASE%” -Dcatalina.home=”%CATALINA_HOME%” -Djava.io.tmpdir=”%CATALINA_TMPDIR%” %MAINCLASS% %CMD_LINE_ARGS% %ACTION% 中的%CATALINA_OPTS% 替换成-Xms64m -Xmx512m
[转者按] 当下的外语(特别是英语)教育和考试制度,就像政治腐败一样已对中华民族造成巨大的灾难,现在,是到了彻底反省并做出修正的关键时刻了。英语对于中华民族的灾难性后果,已有很多有识之士进行了深刻的反思,但,最有深度和说服力的当为我所转来的这一篇。我衷心地感谢作者!——希望所有关心我们民族前途和命运的人士做出充分的讨论,并希望最终能够影响我们国家的政策。
[http://ider.51.net/cgi-bin/bbs/bbs.cgi?menu=show&id=200212072259&slttitle=20030912205617&see=11]
《英语已成一个巨大的考试毒瘤》
正吞噬国家的巨大财富,并不断扩张
改革开放初期,为了学习外国的先进技术和管理经验,人们开始自觉地学习英语。然而,由于英语学习的升温,一些教育主管部门及人事主管部门开始头脑发热,在人才培养和选拔上,设置层层英语考试。现在英语考试已经完全变成了一种利益集团的赚钱工具,摧残年轻人是他们设计好的目的。学生在学习英语的过程中深受其害,浪费他们大量的时间,荒废正常的学业,使整个中国的教育质量遭到毁灭性的打击,同时也使国家每年数以百亿的巨大财富打水漂,真是祸国殃民啊。
一、 看看英语是什么东西
先看我们伟大的汉语,国家汉字的扫盲标准是1500个字,理工科大学生一般掌握2000个汉字就可以了。就凭这2000个字,再查查字典,大家可以读书、看报、搞科研。可以很顺利地读一些名著,如《红楼梦》等。
再看看英语,在英语世界里,没有2万个词汇别想读报,没有3万个词汇别想把周刊读顺,英语国家大学毕业10年后的职业人士一般都懂8万词汇。新事物的涌现,总伴随着英文新词的产生,例如火箭(ROCKET),计算机(COMPUTER)等,可汉语则无须,不就是用“火”驱动“箭”么,会“计算”的“机”么!可英文就不能这样,不能靠组词,否则“太长”了。如火箭将成为“FIRE-DRIVEN-ARROW”,计算机将成为“COMPUTAIONAL-MACHINE”等。太长的字会降低文章的可读性与读者的理解能力。从中大家可以看出英语是一种非常落后没有科学性的语言。是西方国家语言中最难学的一种。
在美国,高中毕业能看懂报纸就不错了,所以美国表意的动画片,漫画很发达,能看懂名著就可以吹大牛了,自以为高素质了,可是这样的人在中国只能算小学生的水平,是被认为没有多少文化的人。
由于英语词汇太多,因此容易忘记是很正常的,如果大家有兴趣拿沙士比亚的原著去考考现在国内所谓的英语专家,他们肯定不及格。美国9.11事件后,产生的很多新词汇,连美国自己的国民也有很多搞不清楚的。
目前,英文词汇已突破50万,预计下世纪中叶,将突破100万大关。
因此可以说学好英语是没有止境的,英语考试可以考倒一切人,不管你是一辈子学英语,也不管你是什么英语专家。
但话又要说回来,如果用于正常的英语交流又很容易,一般掌握1000-2000个单词就够了。美国的农民一般掌握的词汇不超2000个。
重要提示:英语只是一种学习和交流的工具。掌握一两千个单词、一些常用的语法、一些英语对话、学会查字典,再利用计算机的翻译软件,所有的人都可以在较短的时间内,快乐地掌握英语这个重要的学习工具,为自己以后的工作、科研服务。
下面我们看看无知的教育官僚们是如何利用英语考试手段来祸国殃民的。
二、 英语地位至高无上,教学质量与日俱下
看看我国目前的人才培养和选拔制度。不管你是搞中医、中药、古汉语、二十四史的,还是做教师、工程师、技术员、编辑、记者、搞企管的、做内贸的,一概不管你的专业能力,也不问对提高工作的业绩有多大帮助,只要你晋职、评职称、升中学、上大学、考研究生、攻博等等,如果你学不好英语,只有两个字:“没门”。
一句话,不会“考英语”,就不会是人才,可悲结论啊。
在这种无知的人才培养观的影响下,再加上我国加入WTO,2008北京奥运会,也许世间再也找不到如此壮观的场景了:一个14亿人口的泱泱大国,在进入21世纪的今天,几乎每个人都在为这门语言疯狂,好象不学好英语就会亡党亡国。
由于无知的“共识”,英语在大学中被推到至高无上的地位,过不了英语四级别想拿学位(更有个别头脑发烧的大学,要求英语过六级拿学位),由于英语决定自己的前途和命运,大学生们只能利用一切可以利用的时间学习英语。四级考过,就准备考六级,六级考过了,准备研究生考试,或准备考托福、考GRE、考雅思。
英语对我太重要了,专业课就对不起您了,因为我的时间和精力有限,专业课只要能考及格就行,如果运气不好,补考也能过。毕业论文,毕业设计也只能走走过场了。
我国人才的摇篮-高等的学府,培养出来的大学生就是多懂几个英语单词,而多懂的这几个单词本来可以通过查字典很方便地解决,哈哈,很可笑,也很伤心!由于大学生在大学里没有学到真正的知识,使他们就业更加严峻。
现在都是自费上学,如果你是学生家长,交了那么多的钱,学的就是这个东西,有何感想!
大家知道,学习语言有两个主要因素,一是外部的语言环境,二是年龄。一个美国的学生,从小到大,英语不离嘴,在这样的环境下,读到高中毕业,能看懂报纸就算高水平,中国的学生在外部的语言环境和年龄都很不利的情况下,如果要达到这个水平,大家算一下就知道,我们的学生需要花多大的精力和时间。
由于英语考试,浪费大量学生学习专业课的时间,使中国现在的大学教学质量与日俱下,已经接近世界高等教育的最低水平。
研究生培养,博士生培养也是唯英语论。对于考研者来说,英语具有一票否决的作用,它早已成为考研游戏的前提。而且,随着竞争者日众,它的难度也不断水涨船高。具体地说,一个报考中国现当代文学甚至中国古代文学专业的考生,如果英语不达所谓“国家线”的话,即便专业再优异也是白搭。相反,专业平庸,英语成绩突出的考生,却往往成了录取的亮点。每一年的硕士研究生录取结束之后,常常听到老师们十分遗憾的感叹:某某同学专业优异,此次英语稍差而无法招纳门下。即便有个别幸运者在英语距线一两分的情况下,经导师多方奔走“拉”了进来,但补那一两分之缺须数万元,穷学生背着沉重的债务,又如何专心学业?想招的学生因为英语赶不上要求的水准,招不进来;而英语能力强,对专业了解肤浅,也无心专业的学生却脱颖而出挤上门来,这是太多中国导师的尴尬。以至于,有些“迂执”的老先生们发出这样的牢骚:不用什么招考了,直接到英语系找两个来就是。老先生们的牢骚还没有说出之前,精明的考生们早就在利用他们的优势了。太多英语系的专科、本科毕业生,在对所报考的专业知之甚少,甚至此前一无所知的情况下,凭借英语专业优势挤进去堂皇读之。而以我所见,这种情况在博士生招生中更是见怪不怪。大学英语系讲师、副教授在没读一天中文的情况下,利用几本文学史考中文系博士似乎成了一种时髦。他们都即考即中,甚至个别人中文专业课程只有五十几分,但凭 “强大”的英语专业优势一样鹤立鸡群,真让那些在专业领域兀兀穷年者,羡慕、气愤、伤心、无奈。 哈哈,真可悲啊。
三、 不懂教育规律,人才选拔如同儿戏,这又是教育官僚们的“杰作”,诺贝尔奖只能与中国说byebye
大家都知道,美国中小学校的基础教育很差,为什么出了那么多诺贝尔奖获得者?
而中国政通人和,从上到下无不重视教育,加上中国人勤奋聪明,为什么出不了一个诺贝尔奖获得者呢?
原因在哪里呢?原因出在教育部,这班教育官僚们根本不懂人才培养的规律。
很多外国研究机构对世界上著名科学家的研究表明,科学家的思维水平和创造力水平随年龄的增长而呈加速度衰减。3/4的科学家所取得的重大成果是在35岁以前。正如物理学家爱因斯坦曾经说过的:“一个人如果在30岁时还没有发表科学见解,那么他一辈子就难以在科学界有所作为了”。大家可以用反推法就可以算出,只有在大学阶段学好现有的科学知识,注意个人能力的培养,善于调动个人学习研究的潜能,才有利于人才的发展和脱颖而出。这些脱颖而出的人才再经过几年专门深入的研究,恰好是出科学家的最佳年龄。而中国大学四年黄金时间,就是在学“中国人听不懂,外国人笑掉牙”的哑巴英语。错过了优秀人才脱颖而出的最佳时机,当然诺贝尔奖只能和中国人说byebye。如果目前的大学教育不改革,大家只能在梦中见到美丽的诺贝尔奖。
美国人非常重视大学教育原因也许就在这里,这些经验美国人是不会写在英文报纸上让你看的,能从英文报刊杂志上看到的只是一些零零碎碎的知识,真正的高技术,他是不会写给你看的,国家现在提倡科技发展和创新,创新的东西肯定与英语没有关系(在中国,英语最好的是外语系的学生,但他们的科学知识却是最差的,另外现在大家仅仅也是为了能找到一份好工作或为了自己提升而学习英语,肯定与学习外国的先进技术和管理经验无关),必须靠自己扎实的刻苦的研究才能取得。学别人的,永远是落后的。
下面我们来看看如同儿戏的职称评定,各大学都有学位评定委员会,所有博士论文和硕士论文都要经过学位评定委员会审议通过才行,他们都是各高校的著名教授,是各学科的专家。但由于扭曲的评价机制,他们变成了全能的教授。学经济的教授必须看计算机博士生的论文,看不懂怎么办,看看口袋里有没有字条,没有子条看看长像如何。结论可以随便写,即使写错了,你也别想看,是秘密,也没有地方可申诉,在这种机制下,学生大都只能靠走后门来过论文关,教授论文过关也是如此,这就是中国的高级人才选拔机制,本来大学应该是最讲科学最民主的地方,可现在这样的人才选拔制度能选出好人才,那天都会哭。
香港科技大学教授丁学良曾举了一个例子说明中国学者在国际学术界的地位:“我在美国读书的时候就听说,美国东海岸那些跟中国学术交流较多的著名大学里,有些研究中心的负责人,经常跟他们的成员(多半是访问学者和教授)说,你们到我们这儿来,许多事情都不用你们做,但有一件事情可要帮忙,就是一旦中国内地的教授学者来作报告,你们无论如何也要来凑个数。为什么?因为研究中心请人来作报告,讲得好人家坐下来听,讲得不好没人听。只是来自中国内地的教授学者来作报告的时候,无论你们愿意不愿意听,都要来帮忙凑个人数。就是说,相对于整个东亚高教界来说,中国内地教授们的水平都是最低或接近最低的。至少西方学术界这么认为。”
教育官僚们口口声声说,学好英语可以学习外国的先进管理经验和先进的科技知识,可自己对一些已知,很先进的管理经验就是不学,只能说明这帮人对教育一窍不通,没有一点责任心,也没有起码的职业道德。
四、 每年数百亿的国家巨大财富打水漂
据统计,英语教育市场已经成为中国的一大产业。年产值高达数百亿元人民币,为国民生产总值的百分之一,相当于中国一个较发达的中等城市的年产值。学习者数以几亿计。 英语教育市场的构成,包括,林林总总的培训学校,补习班;五花八门的考试、测验;种类繁多数以万计的英语课本、参考书、辞典,各式各样的教育器材,等等。
在英语教育市场中,收入最稳定的是各类考试的主办者,他们个个富的冒油,是权利变金钱的典型代表。以职称英语考试,每年的考试费,教材,参考书等加起来按200元算,400多万报考者,费用就有数十亿元。
托福、GRE、GMAT、雅思等国外机构主办的考试,费用还高得多。托福考试费800元,10万人报考,其收入也达到8000万元。
各类培训机构(个人),也是教育市场的主角。从每小时10元的家教,到费用超过2万元的高级培训,各色人等针对不同目标市场,各显神通瓜分蛋糕。
一个“新东方”英语培训学校,平均每年培训学员四、五万人,每年的教学收入达数亿元,据一项不完全统计,中国外语培训教育机构,目前超过3000家,学费根据培训内容、课程安排的不同,从几百元到几千元不等,平均收费标准为,每人每小时20元至30元。
数以万计各类英语教材,参考书。如果平均按10元/万册算,每年可达100亿,当然成为出版商最喜欢出版的书籍。
另外,以游戏机、学习机、语言复读机等代表的教育器材在市场上抢尽了风头。统计资料显示,中国每年的语言复读机销量为800万台、学习机为750万台、电子辞典为600万台。按一台复读机100多元的价格,800万台就在10亿元左右。
再看看大学考研英语培训的场面:随处张贴的花花绿绿的考研英语培训班广告,已是当下大学校园风景的一个重要组成部分,在校园里,其情形简直可以直比“文革”期间张贴满墙的大字报。2002年的硕士研究生录取工作刚刚结束,针对2003年的考研英语培训广告已是铺天盖地。广告上的授课“明星” 近十年间换了一拨又一拨。这些来自皇城脚下的“专家们”,每年自9月份开始,便在中国的上空飞来飞去,给各大城市带去广告上所标榜的“来自当年命题组的消息”。一次串讲门票往往高达数百元,但听众仍有数千之众。其盛况几乎可以直追二流影视歌星走穴。虽然太多听讲者也明白在那种狂热的气氛里,是难以学到什么新东西的,但他们认为,即便花费时间、金钱换来一种心理上的平衡也值得。
现在中国学习英语如同当年的“大炼钢铁”一样,最近路过南京,去了总统府,在参观大门时,看到铁门的介绍,说是原来的铁门在当年大炼钢铁中,拆去炼钢了,现在大家看到的铁门是根据原来的照片重新修的。在当年那场运动中,不知道有多少国家的财富化成好无实际价值的钢铁产量。我们经常听人说“那时的人为什么那么傻”,我倒要问:我们现在变聪明吗?哈哈,可悲啊,到了21世纪,我们又看到了这样的场面。
英语考试已经形成一个年达几百亿的产业,可以与三峡工程(头尾17年,三峡工程静态投资为900.9亿元人民币,考虑其间物价上涨会增加部分投资,另外资金来源中有一部分负债会发生一些利息费用,到竣工之时,累计总投资约2039亿元人民币,每年平均100亿左右)相抗衡,可笑又可悲是啊,这样一个巨无霸的工程,则是由教育部的个别官僚心血来潮随便说一下就执行了。没有看到任何人大议案,甚至连象样的研讨会和课题研究报告都没有。
英语考试已经变成一个巨大的毒瘤,正在吞噬着国家的巨大财富,并且不断地扩张。
每年100亿的钱如果用于资助经济困难学生,每人5000元,可以资助200万个大学生;如果用于小学教育扶贫,每人1000元,可以资助1000万小学生;如果用于建设希望小学,每所100万,可以新建小学1万所。如果用于西部扶贫,如果用于下岗职工的困难补助—–。
五、 考试英语已经变成一种利益集团赚钱的工具,摧残年轻人是他们已经设计好的目的。
看看博士生考试的英语卷子:卷面上那些卖弄似的找出一些连老外们也几乎早已不计较的语法问题和针对4到5篇断章取义的短文,设计一些谜语般的选择题等这些考试方式,与培养专业研究者英语水准已经没有多大的关系。华中师范大学英语系一位曾在美国做访问学者一年的副教授,在湖北省2001年度博士生入学英语考试中才取得了57分的成绩。表面上看是一份怎样坚决要把人考“倒”的英语试卷。实际上这班人是利用手中的权利,为自己巨大的利益集团服务,你们想想,如果英语大家都很好过关 ,他们怎么会有现在的地位,他们如何能赚到钱,因此英语考试已经变成一种地地道道利益集团的赚钱工具。摧残年轻人是他们已经设计好的目的。
由于考试的随意性,并且有意思地考倒学生,学生为了过关只能拼命去读,大家知道,英语如果在无意识环境(英语为母语的国家)中学习,是不用花太多的专门时间,而我们的学生没有这样的环境,只能靠自己来建立一个这样的英语环境,我们称为有意识的英语环境,这必须花费大量的专门时间,大学生如此,小学生也是如此(虽然有年龄优势)。当前的英语教育体制,已经向下扩展到少年儿童,强制要求数以亿计的少年儿童从他们哑哑学语就学习英语。这是在摧残祖国的花朵。
看看小学生是如何学英语的,由于小学生看国际音标简直如读“天书”,为此我国曾一度规定小学不准教国际音标,结果逼得小学生不得不死记硬背英语单词,不得不用方块字来标音。一会儿用本地话读音来标音,一会儿用普通话读音来标音。如果小学生让教国际音标,那如同“天书”,国际音标,对小学生又是一个难题。
原来小学生主门只读语文和数学,现在变成英语第一,这样下去汉语会慢慢成为一种弱势语言、一种第二阶级的语言,甚至说得不中听点是奴隶的语言。大家不要在一块巨大而时髦的“与国际接轨”的招牌下,对于许多其实极为关切到本民族文化生存前景的严重问题,失去了应有的警觉而习惯于麻木。记得中学时学过一篇课文叫《最后一堂课》,这篇课文讲道:灭绝一个民族最恶毒,也是有效率的手段,就是迫使该民族彻底放弃自己的母语。
中国高中分文科和理科,有它一定的合理性,因为有些人偏重记忆,有些人偏重思维,他们都是人才,偏重思维的人一般记忆的水平较差,而发明创造的他的强项。如果这些偏重思维,聪明的学生,花大量的时间学习英语,还学不好,这对他们的自信心是多么大的打击啊,这对国家又是多么大的损失啊!
看看大学生出国排名前十位的大学名单:1.清华大学,2.北京大学,3.中国科学技术大学,4.浙江大学,5.复旦大学,6.南开大学,7.南京大学,8.上海交通大学,9.华中科技大学,10.天津大学。这些优秀的学生在长期学习英语过程中,形成一种向往西方民主自由的思想,本来希望这些优秀人才毕业后来改变我们一些落后的现状,但他们为了自己,选择了逃避,虽然有些人会说,他们是去学习先进的技术,但有一个问题希望你们回答,如果我们国家还很落后、贫穷,他们中间有几个会回来啊,这是我们教育的失败。教育出来的学生没有多少爱国精神,这与长期学习英语也有很大的关系。
另外值的一提的是那些为了学好英语听力,经常听“美国之音”的学生,由于中毒太深,可以说对国家几乎没有多少感情。这不能完全归罪于学生本人啊。
不要过多地责怪科技界的水平低,后继乏人啊,他们是无米之吹,因为教育界培养的不出人才, 现在各行各业都在告急,汽车没有自己真正核心技术,手机没有自己真正的东西,计算机行业只能当组装厂—–。
更严重的这样学习英语还会形成一个可怕的怪圈,中国自己培养的人才与外国培养的人才差距大,人们就会引进更多的外国人才,由于羡慕就越显英语重要,自然就会花更多的时间学英语,这样中国自己培养的人才水平就更低,怪圈的结果是:中国与外国的人才培养差距越拉越大。
几点建议
1、凭心而论,教育部在大学扩招,高考计算机招生等方面做了一些成绩,但由于考试英语毒害太深,因此希望各位人大、政协代表,提个议案,对教育部关于大学生、研究生、博士生的英语考试提出质疑。
2、成立国家外语翻译研究院,主要从事国际著名杂志及书刊的及时翻译工作,以跟踪世界最新的科技前沿。中国需要精确的”翻译”,而不是像现在,几亿人在读英语,但真要找几本外文翻译书籍,找什么,没什么。
3、各省建设一个外国语学院,业有专攻,另外加入WTO,不仅仅需要英语人才。
4、以计算机考级为蓝本,制定国家英语一级考试,二级专业英语考试,严格控制词汇量。
大家知道,计算机比英语重要且有用的多,而计算机知识又比英语复杂的多,也许大家都知道这一点,因此在考计算机等级时,设计的非常合理,一般人考一级,高等教育需要掌握一种编程语言,那就考二级吧,虽然计算机也有三级,四级,但大家都不会提出过高的要求,因此,计算机考试,是一种对学生非常愉快的考试,人人都可以在较短的时间内过关,利国利民。从中我们可以看出,对事物如果认识的越清楚,越不会头脑发热,发热的东西往往是对事物的无知。英语考试应该好好总结教训,向计算机学习。
5、用英语国家一级考试取代所有的英语考试,包括小学,中考,高考。对于城市的小孩,可以在小学时过关,边远贫困地方的学生可以在大学过关。这体现了教育的公平性原则,因为英语毕竟是芝麻不是西瓜。不要捡了芝麻丢了西瓜。
6、如果我的结论是错误的,“英语不是芝麻是西瓜”,那就希望教育界的人大代表或政协代表,在开人大会议时提个提案,请求把英语列入第二母语,因为只有这样,才有可能真正学好英语,学生也可以在无意识环境中学好它。但当今世界,美国以其强大的经济、军事、科技成为世界的唯一超级大国,在其对外实行经济扩张、军事入侵的同时,一直在不断谋求文化入侵! 当然如果你们不怕汉语成为一种弱势语言的话。
7、理工科学生英语过级,改成学生过发明专利
一个国家如果没有创新。就没有希望,一个国家如果一直学习别人的东西,不可能有自己真正的知识产权,永远只能当二流,如果把理工科学生英语过级,改成学生过发明专利,那结果会是如何呢?全国上下都在发明创造,都在创新,如果按百份一专利转化率来算,平均一个新工厂提供50人的就业机会来算的话,学生自己就可以解决50%的就业,到处都是学生老板,这种效果的示范作用是任何说教都无法替代的,中国还怕没有自己的知识产权。还怕没有自己的品牌吗?中文系的学生英语过级可以改为写出一句象“山雨欲来风满楼”之类经典的话,或一篇小说,那我们的精神食粮会匮乏吗?我们的电视剧会那么无聊吗?音乐专业过级改开专场演唱会等等。
8、听说北京市为了迎接2008奥运会开展“市民讲英语活动”,还是不要搞为好,中国现在政策制定者最大的毛病在于,一个政策的制定不知道在执行的过程中有多大的变形量。看起来政策个个好,最后执行的时候都变了样,原因就在于政策制定者的前瞻性和定量分析的水平不够。迎接奥运会不是靠说多少英语就可以办好的,而必须扎实地做好各项工作,而不是表面文章。如果一定要叫大家说英语,我看三句就够了。
1、HELLO 。2、WELCOME TO BEIJING 。3、CAN I HELP YOU ?
9、大学主要的任务还是培养学生,最近北大在搞改革,如果外部大环境没有改变,靠自己改自己,永远是改不好的,最多只会小打小闹,清华,北大的学生脑袋是全世界一流的,可惜被他们培养成什么样子的人才啊,真是国家的悲哀。现在教育界是最不思进取的行业,因为没有一点压力,也是腐败最公开化的地方,看看那些学校领导,拿学生交的钱,整天吃喝玩乐,可以合理合法地报销。大量的钱可以随心所欲地花,不要经过任何程序。教育到了这个层次,如果再不改革,很难想象会发生什么。如果教育主管部门一下还不知道如何改,那就学习小平同志提倡的搞特区试验。首先选清华大学(只要以学生为中心,任何改革对学生都是有益的)。因为理工科的标准大家比较一致。全部清华大学的教师员工下岗,包括学校领导,在全世界公开竞争,实行全员聘任制,年工资20万不够,那就50万,每年20%教师淘汰制。一流的学生必须要有一流的教师。对于清华大学做到这一点并不难,教育部再给一点钱就够了,一部分的钱用于教师的安家费,每人20万不够,那就40万也可以。成立以两院院士为主的专门学科委员会,对教师的业务水平进行严格把关。如果改革做的好,真正的世界一流大学只是时间问题。
两条新闻:
(1)中国教育部官员透露,中学将推广英语考级制。教育部考试中心专家组组长张连仲教授近日在南京透露,中国将用3年左右的时间在中学建立英语考级制度,目前新的英语教材和英语考试等级标准己在酝酿中,今年暑假针对教师的培训也己启动。此次设立的英语等级标准最高为9级,要求掌握5000个英语词汇,是现在高中毕业生词汇标准的2倍多。它要求高中毕业生能熟练地用英语获得和处理信息,并用英语进行较复杂的思维和交流。椐悉,中国高中生在毕业时英语要求达到7级,高考要求达到8级,掌握3500个词汇。《新华日报》
(2)保护国语,法国政府封杀“E-mail”。法国人对母语的热爱,对英语的鄙视是众所周知的,日前,法国文化部刚刚宣布一项禁令,为了阻止英语的入侵,禁止国人使用电子邮件的英文单词“E-mail”而必须使用法语版的“Courriel”。作为国际大都市,在巴黎懂英语者大有人在,如果有人同他们用英语交流,他们大多不理不睬。只有在机场接待处或在象欧洲迪斯尼乐园等国际友人众多的公共场所,英语才派上用场。这倒不是法国人高傲,而是他们已把使用法语提高到民族形象和尊严的高度。《海峡都市报》
一点希望:
现在中国教育问题很多,改革阻力很大,必须要有强大的社会舆论,才能推动这项改革的进行。希望我这篇文章能在你的支持下成为这场改革的导火索,为国家尽一点义务。也希望在你的支持下,介绍给更多的读者。
后记:
(1)、做为一个公民,不为名,不为利,我尽到了义务,如果只是为了骂人,我还不如带小孩去运动。对于考试英语你肯定有话要说,那就说出来,也许会反对我的观点,这没有关系,说的人多了,对事物才会有更深刻的认识,对国家只有好处没有坏处。现在国家的领导人还是很执政为民的,不象那些教育官僚们,他们一不代表最广大人民的利益,二不与时俱进,当然更不会执政为民,他们是在执政害民。
(2)、孔子曰:“三十而立,四十而不惑,五十而知天命”。小平同志的改革开放给中国带来了翻天覆地的变化,大家也在这场大变革中受益非浅,特别是那些官员,已经不会为生活而担忧。但就是有些官员,都已经是知天命的年龄,还整天满脸杀气,当这些人私欲膨胀到一定程度时,道德就没有了,已经与动物没有多少区别。因此做人还是要有点良心,好事做一点,人善一点,钱多了,死了也带不走,这叫“五十而知天命”。