首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 数据库 第二书店 程序员

seven2000/ 


共148个网摘 [ 1  2  3  4  5 ]  下一页  |  访问seven2000的个人空间

比较JavaScript中的集合及其检索效率 - 鸟食轩 - 博客园

seven2000收录,使用标签:JS,时间:2008-9-26 10:49:18 | 相关网摘我也收藏

比较JavaScript中的集合及其检索效率
数组是JavaScript提供的一个内部对象,它是一个标准的集合,我们可以添加(push)、删除(shift)里面元素,我们还可以通过for循环遍历里面的元素,那么除了数组我们在JavaScript里还可以有别的集合吗?

由于JavaScript的语言特性,我们可以向通用对象动态添加和删除属性。所以Object也可以看成是JS的一种特殊的集合。下面比较一下Array和Object的特性:

Array:

新建:var ary = new Array(); 或 var ary = [];
增加:ary.push(value);
删除:delete ary[n];
遍历:for ( var i=0 ; i < ary.length ; ++i ) ary[i];

Object:

新建:var obj = new Object(); 或 var obj = {};
增加:obj[key] = value; (key为string)
删除:delete obj[key];
遍历:for ( var key in obj ) obj[key];

从上面的比较可以看出Object完全可以作为一个集合来使用,在使用Popup窗口创建无限级Web页菜单(3)中我介绍过Eric实现的那个__MenuCache__,它也就是一个模拟的集合对象。

如果我们要在Array中检索出一个指定的值,我们需要遍历整个数组:

var keyword = ;
for ( var i=0 ; i < ary.length ; ++i )
{
if ( ary[i] == keyword )
{
// todo
}
}
而我们在Object中检索一个指定的key的条目,只需要是要使用:

var key = '';
var value = obj[key];
// todo
Object的这个特性可以用来高效的检索Unique的字符串集合,遍历Array的时间复杂度是O(n),而遍历Object的时间复杂度是O(1)。虽然对于10000次集合的for检索代价也就几十ms,可是如果是1000*1000次检索或更多,使用Object的优势一下就体现出来了。在此之前我做了一个mapping,把100个Unique的字符mapping到1000个字符串数组上,耗时25-30s!后来把for遍历改成了Object模拟的集合的成员引用,同样的数据量mapping,耗时仅1.7-2s!!!

对于集合的遍历效率(从高到低):var value = obj[key]; > for ( ; ; ) > for ( in )。效率最差的就是for( in )了,如果集合过大,尽量不要使用for ( in )遍历。


CSDN论坛,一个比较全面的onbeforeunload case

seven2000收录,使用标签:JS,时间:2008-9-26 10:47:54 | 相关网摘我也收藏

<%@ Page Language="C#" debug="true"%>
<%@ Import Namespace="System.IO" %>

protected void Page_Load(object sender, EventArgs e)
{
string data=(Request.Form["txt"]+"").Trim();//获取数据
if(data!="")//如果不为空则保存数据
{
//一个简单的例子,就是提交时在当前目录生成一个文本文件,内容为提交的信息
StreamWriter sr = new StreamWriter(Server.MapPath("ttttttttttttttttttttttttt.txt"));
sr.Write(data);
sr.Close();
}

}





/*只能结合onbeforeunload和unload事件一起来处理,因为在onbeforeunload中无法获取是点了“是”或者“否”,不能在onbeforeunload中进行表单提交什么的操作,但是在unload中提交的话,第1种onbeforeunload可以判断是否为关闭需要提交(仅适用于ie),第2种无法进行判断(适用所有浏览器)。*/

//1)======================================
//这个版本只适合ie,判断事件的位置是否为关闭(此关闭只对点右上角的关闭按钮及任务栏右键点关闭时有用,通过菜单或者任务管理器关闭无效)
var NeedPost=false;
window.onbeforeunload=function()
{
NeedPost=false;//注意要先把是否需要提交置为false
if(event.clientY>document.body.clientHeight||event.clientX>document.body.clientWidth)
{
NeedPost=true;
return "是/否关闭?";
}
}
//========================================


//2)======================================
/*//这样处理的适合ie及w3c浏览器,但是刷新,点连接离开该页面,而非关闭页面时也会提示
window.onbeforeunload=function()
{
return "是/否关闭?";
}
*/
//========================================

window.onunload=function()
{
alert(NeedPost)
if(NeedPost)//判断是否需要提交,这个是防止通过点连接,刷新页面离开本页面时不需要提交,如果你需要提交,把这个判断去掉,并且可以使用第2种onbeforeunload事件处理
{
var f=document.forms[0];
f.target="SaveIF";//注意要设置target属性,提交到隐藏的ifame中,要不会提示2次
f.submit();
}
}







使用onbeforeunload属性后的副作用 - 鸟食轩 - 博客园

seven2000收录,使用标签:JS,时间:2008-9-26 10:38:27 | 相关网摘我也收藏

使用onbeforeunload属性后的副作用
在使用博客园的编辑器编辑文章时,有一个挺体贴用户的功能,就是如果用户进入编辑器后,不是执行"POST"操作而要退出当前编辑器页面,我们会得到一个Alert窗口提示(如下图)。这个功能其实很简单,就是通过处理window、body或frameset对象或元素的onbeforeunload事件实现的。



这个unbeforeunload的具体用法我就不说了,反正几乎能引起当前页面发生跳转的任何动作,都会触发这个事件。并且它先于unload事件被触发,如果在其的事件处理函数里面向event.returnValue属性赋值非空字符串,就会出现一个如上图的窗口(代码如下)。

window.onbeforeunload = function ()
{
// . . .
event.returnValue = "You will lose any unsaved content";
// . . .
}
至于这个窗口是做什么用的,窗口上系统提示的文字(第1行和第3行)已经说的非常清楚了。那么使用这个事件到底有什么问题呢?

我们知道引起当前页面发生条转主要3类事件:
1、对浏览器窗口的操作,比如关闭浏览器、go home、backward、forward和refresh等;
2、对于网页的Navigatie操作,比如点击链接、在地址栏中执行新的地址、页面表单提交到非当前页面等;
3、脚本代码引起的页面Navigate操作,比如执行navigate、locatoin方法(replace, reload, assign)和修改location属性(href, search)等。

以上的1-2类操作引起onbeforeunload的事件,使用起来基本没有任何的问题,可是执行第3类页面条转操作却有点小问题。就是在上图的窗口出现后,如果点选"OK",确实就OK,页面正确跳转了。可是如果这个时候,我们点选"Cancel",却会出现一个脚本异常,如下图:



解决方法就是把脚本调用try一下,但这似乎是IE的一个bug的说。

try
{
//
event.returnValue = "You will lose any unsaved content";
//
}
catch(e){}


【整理】无法定制onbeforeunload中弹出的对话框 - Niko�weblog(Tech, Memo || Niko Series)

seven2000收录,使用标签:JS,时间:2008-9-26 10:35:46 | 相关网摘我也收藏

【整理】无法定制onbeforeunload中弹出的对话框 作者:Niko 日期:2008-06-19
字体大小: 小 中 大
/**
* 在和老外同事的邮件中整理了一点关于 onbeforeunload 的东东~
* 如果要定制 onbeforeunload 中弹出的对话框那是不可能的,因为那是系统级的原生对话框
* 图例中虽然用的是英文,不过都是些比较简单的单词,其实我也写不出什么复杂的词句
*/



/**
* Related Remarks
*/
When a string is assigned to the returnValue property of window.event, a dialog box appears that gives users the option to stay on the current page and retain the string that was assigned to it. The default statement that appears in the dialog box, "Are you sure you want to navigate away from this page? ... Press OK to continue, or Cancel to stay on the current page.", cannot be removed or altered.

/**
* 相关链接
*/

[1] MSDN - onbeforeunload Event

[2] ExtJS Forum - window beforeunload SOLVED


关闭浏览器弹出对话框事件onbeforeunload - JAVA技�?- BlogJava

seven2000收录,使用标签:JS,时间:2008-9-26 10:35:10 | 相关网摘我也收藏

关闭浏览器弹出对话框事件onbeforeunload
在点击浏览器关闭按钮关闭浏览器的时候,有时不希望它直接关闭,希望弹出对话框提示客户,这个时候就需要用到事件onbeforeunload,用法如下:







不过这种用法不支持firefox,因为firefox不支持window.event,所以本人改了一种方式,应用如下:
window.onbeforeunload = function() {
if(g_blnCheckUnload){
return("if close the window,the auto task will complete with document no update version!");
}
}

这样几种浏览器都支持了,弹出对话框如下:


但这里有个问题,本来还没有解决的,我用的浏览器是中文版,但我做的系统是英文版,这个事件弹出来的窗口所显示的语言随浏览器,没有办法自己在javascript里设置。


中国将发生经济危机?_谈股论金_新浪论坛_新浪网

seven2000收录,使用标签:经济,时间:2008-9-20 12:46:17 | 相关网摘我也收藏

中国决不能成为美元泄洪的重灾区
2008-02-28 11:33:31 新华网
今天的中国是一个开放的国家,在开放的过程中我们获得了发展的机遇,同时我们也面临着新的风险。在资本市场,我们面临的风险尤为突出。在一些领域,海外资本正逐步主导或者已经主导了中国的诸多产业部门,相对应的,中国国内生产和消费结构出现严重失衡,环境恶化,民生问题突出。而这一切的核心问题就是中美之间的汇率之战。

中美的汇率之战本质上是一场国与国之间的货币战争,是美国货币政策、双方的汇率政策、中国货币政策之间的较量。实行弱势美元政策、持续降息、推动人民币升值是美国在这场战争中的主要行为方式。这场金融攻势的目的是以温和的方式,逐步削弱中国经济,从而瓦解中国成为美国竞争对手的能力。

在这场货币政策的较量中,我国是选择被动地迎合美国开出来的政策清单,还是选择主动出击、保卫国家的经济安全和经济成果,这是关系到中国经济未来命运的问题,也是关系到中国的政治稳定和社会稳定的问题。中国的宏观经济决策机构必须从开放的、系统的角度重新评估目前的国际和国内经济形势,牢牢把握中国经济发展的主导权和主动权。

目前,中国位居世界第一的1.53万亿美元外汇储备已经成为美国的猎物。中国巨额的美元储备如同中国交易员在国际外汇市场上做了一笔大额的不当交易,让国际猎手们感到极度的兴奋,但是,我们还没有闻到捕杀的血腥。从人民币升值的那一天起,中国财富就开始了国际化的转移:从中国本土转移到海外,主要是美国。人民币加速升值的政策只是加速这种财富的国际转移,并没有解决中国面临的其它问题。

从美国利益的立场看,美联储降息、美元贬值、甚至宣称无限量地提供流动性是对美国民众和美国金融机构的最好保护,是完全正确的,体现出美国人高明而自私的金融智慧。但是,美联储的做法能否达到预期的目的,这需要中国中央银行制定并执行与美联储完全相反的货币政策给予充分的配合。事实上,中国央行对应的货币政策就是升息、人民币升值、紧缩货币。中国的货币政策在美元的攻势之下疲于奔命,完全丧失了货币主导权,但是,中国并没有在讨好美元的博弈中达到自身的目的。中美央行之间不同选择的结果是:美国通过持续降息、美元贬值甚至宣称无限量地提供垃圾美元,逐步摆脱了次级贷款危机,却维持了物价稳定,避免了通货膨胀;中国正好相反,中国央行采取持续加息、不断提高准备金率、加大人民币升值幅度、甚至采取窗口指导等行政手段来紧缩银根,逼得基层企业难以生存和发展,却仍然抑制不了物价上涨的趋势。面对通胀压力和严重的经济结构失衡,社会舆论和政府政策几乎一边倒地倾向于进一步提高存款准备金率、进一步加快人民币的升值,而根本不顾这一系列政策可能产生的严重后果,也不论证这一系列政策能否达到预期的目的。

今天,中国经济所处的国内外环境与二十年前大不相同,但是,经济理论界和经济管理部门对中国经济格局的判断、宏观调控的思路和手段还是停留在二十年前的水平上。如果沿用传统的思路和手段调控经济,不仅会事与愿违,而且代价惨重。采取加速人民币升值、提高存款准备金率、简单机械地加息等调控政策将会导致中国的宏观经济形势进一步恶化:

第一、 加剧人民币升值的压力

当今的中国经济是一个过度开放的经济体,对外经济依存度很高,外汇储备超过1.53万亿美元,并且主要投资于美国国债市场。美元资本可以通过各种投资的方式不断流入中国。地方政府和国家部委出于本位主义,阻止美元资本流入的防线已经形同虚设,这是中国经济政策制定者必须面对的现实。这是二十年前不存在的情况。面对这样的国内经济现实,美联储一旦采用泛滥的美元政策,那么,中国的紧缩货币政策必然成为美元泄洪的重灾区。中国紧缩的货币政策意味着提高准备金率和加息,意味着减少人民币的投放数量,意味着人民币吸引力的提高,结果只能是美元更加汹涌地涌向境内,人民币被迫升值。

目前,国内外众多专家学者在呼吁政府加大人民币升值的幅度,希望2008年度人民币升值10%,同时进一步加息和提高存款准备金率,以便抑制国内的通货膨胀。这种政策组合事实上很可能制造经济灾难。

中国一年期活期存款利率已从3.87%上调到4.14%,如果人民币升值10%,海外热钱进入中国的无风险收益率高达14.14%,而美国减息之后的基准利率是3%,这是境外热钱的基本成本,海外资金的套利空间达到11.14%,对冲基金可以利用资金杠杆放大10倍以上进行投机,资金的年化收益率可以高达111.40%以上。巨大的利益诱惑导致海外热钱涌入中国。2007年度是人民币大幅升值的一年,却同时又是外汇储备同比大幅增加43%的一年。个别专家指出通过人民币升值来抑制热钱流入的政策,犯了抱薪救火的错误,已经得到验证。

第二、 人民币升值的过程是酝酿潜在金融危机的过程

人民币升值幅度与人民币存款利息之和一旦大于美元资金成本,就意味着人民币升值的过度和存款加息的过度。人民币升值的直接损失不是出口商品减少、没有换到美元,而是中国的1.53万亿美元外汇储备像冰雪一样每天在融化、是国民财富在被弱势美元所蚕食。人民币升值意味着大量海外在华资产在完成增值之后可以换取更多的美元,可以在不久的将来轻易地兑换走国家的外汇储备,从而把中国依靠消耗资源和劳动力挣得的财富瞬间消失在人民币与美元的这场较量之中。这就是人民币升值的代价。

主张人民币快速升值的观点遗忘了中国有1.53万亿美元的外汇储备,也忽略了海外资本已经掌握了巨额的人民币资产,这些已经增值数倍的人民币资产需要在人民币升值之后更快地、更多地消耗掉中国外汇储备。中国经济对外依存度已经达到70%,这是一个极其危险的比例,它意味着在出现大规模兑换美元的紧急情况下,中国增加出口的能力十分有限。人民币的大幅度升值将把中国经济逼进没有回旋余地的死角,届时,金融危机的爆发、各类企业股权、债券贱卖给外资机构就成为必然的结局。其实,中国正在重复着发生过金融危机的国家和地区的初期道路。

与美国财长保尔森的观点相反,“欧元之父”罗伯特·蒙代尔认为人民币快速升值是“很糟糕的事情”,他说:“现在有人提出人民币应该快速升值,我认为不能这样做,中国可能面临人民币被高估的情况。如果人民币快速升值,那对中国来说是很糟糕的事情,人民币兑美元应稳定在7.5左右。”(详见《 蒙代尔:快速升值很糟糕 人民币汇率应稳定在7.5》,《证券时报》2007年09月17日)

第三、 人民币升值不仅不能抑制中国的通货膨胀,而且会使通货膨胀进一步恶化

根据西方经济学的教条,货币升值可以抑制出口、增加进口,从而可以抑制通货膨胀。但是,这个教条在今天的中国已经不适用,相反,人民币升值不仅不会抑制通货膨胀,反而成为推动通货膨胀的元凶。这是因为中国已经不是一个封闭的经济体,而是一个过度开放的经济体。中国当前的通货膨胀是发生在人民币持续升值之后,而不是发生在人民币升值之前。事实胜于雄辩。中国经济的现实可以推翻所有的经济学教条。西方经济学的教条只有在中国经济没有过度开放、或者美国没有制造美元泛滥的前提下才能成立。

本次中国通货膨胀的形成过程是:

第1阶段,海外资本大量进入中国并主导了对外出口,外商企业的出口额占中国总出口额的60%,同时,海外资本以低廉的价格购买了大量的国内企业股权,此时,逼迫人民币升值既有借口,又十分有利。

第2阶段,在美国的压力之下,人民币开始升值,并形成持续升值的预期,大量投机性热钱通过各种途径涌向中国房地产市场、企业股权市场和股票二级市场。

第3阶段,中央银行通过发行票据对冲美元,希望维持人民币升值的节奏。这种公开市场的对冲操作,本质上是把国内企业手中的人民币收上来交给了持有美元的海外机构,中国本土企业减少了这部分人民币所对应的发展机会,而以美元换取这部分人民币的海外机构取得了相应的投资机会。中国类似东盛集团这样的民营企业为什么不得不把“盖天力”“白加黑”这样的优质资产卖给外资?原因就在这里。换个角度看,这种对冲操作相当于中国人民银行把自己掌控的一部分权利转移给了美联储。这是一种货币发行权的转移。廉价美元初战告捷,尝到甜头,于是,美联储开足印钞机的马力,不辞昼夜,而中国央行收紧内资企业的银根、紧缩了内资企业的发展空间,而把收上来的人民币资金通过对冲的方式交给了美元持有者,让这些美元持有者在中国收购金融股权和产业股权、收购土地、金矿、煤矿、高速公路、自来水设施等等。

从2007年初到12月12日,央行全年共发行央票3.93万亿;扣除央行所作的回购交易,2003年至2007年,发行央行票据净对冲流动性约4万亿;截至2007年10月份,外汇占款已达到12.72万亿人民币,这意味着人民币升值10%,我方的汇兑损失就达到1.272万亿人民币。在这场对冲交易中,美联储通过发行美元扩大了自己的经济版图,把美元符号变成了实物资产和资源,同时坐拥人民币升值的收益,而人民币丢失了自己的经济版图,并把美元变成了美国国债,接受着持续的贬值。

第4阶段,美联储推行的减息、贬值、宣称提供无限流动性的美元政策没有导致美国出现通货膨胀,却制造了中国的通货膨胀。央行发行票据对冲美元的公开市场操作,本质上是把国内生产经营机构的资金搬运给了海外机构。由此,一方面造成国内生产经营单位营运资金紧张,民间拆借利率高达30%,另一方面海外机构持有充裕的人民币热钱,可以进行大举投资和收购,抬高了资源和产品的价格。中国金融体系中人民币资源配置的失衡既制造了有效供给不足的通货膨胀,又制造了成本推动型的通货膨胀。当前,中国的通货膨胀是这二种通货膨胀交叉作用的产物。美元泛滥、人民币升值、公开市场操作误配人民币资源是本次通货膨胀的根源。

人民币升值和紧缩货币政策将对中国经济产生巨大的伤害,却可以完美地配合美联储的宏观经济调控目标:继续维持弱势美元、维持低利率和低通胀、承诺提高无限流动性以便顺利度过次贷危机,同时,为未来实行强势美元政策、吸干中国的外汇储备而作准备。

截至2007年12月27日,央行总计回笼资金量达到6.94万亿元,其中,通过发行央票和正回购回笼资金5.14万亿元;十次上调存款准备金率回笼资金约1.8万亿元。对冲到期释放的资金量后,央行净回笼资金高达2.63万亿元,比去年增加了约1.38万亿元,相当于每天从市场回笼资金190亿元。在央行加强资金回笼力度的同时,外汇占款却迅猛增加,仅以三季度末的外汇储备量估算,今年新增外汇占款量将比去年多出一倍(《央行今年净回笼2.63万亿元》,详见《上海证券报》2007年12月28日)。

第四、人民币升值趋势和升值预期导致国内货币调控手段陷于极度被动的局面

在人民币升值趋势保持不变的情况下,如果降低利率、增加货币供给量,那么,会导致负利率的情况加剧,国内企业和居民的存款会受到更大的损失,通货膨胀将进一步恶化;相反,如果提高利率、减少货币供给量,那么,会导致海外热钱套利空间加大、内资企业的发展机会受到进一步挤压、给外资收购中国企业和国内资源提供更大的机会,中国经济拉美化趋势更加严重。采取后者的政策尽管可能暂时减轻通货膨胀压力,但是,通货膨胀会在未来伴随着金融危机以更加强烈的方式爆发出来。各国经济危机爆发的历史事实已经使上述结论成为常识。

第五、汇率和利率是主要的收入再分配工具,人民币加速升值将导致国内外收入分配格局的进一步失衡

在加速人民币升值的情况下,国内加息的空间是有限的,居民和企业的存款可能长期维持在负利率的水平上,使得存款者利益受到损失,从而促使部分存款离开银行形成现实购买力,增大通货膨胀压力。2007年度CPI达到4.8%,银行一年期定期存款利率是4.14%,活期存款利率是0.72%,居民和企业存款利率是-0.66%以上,以10月份38万亿存款余额计算,负利率使得存款者的损失在2500亿元以上。人民币兑美元是从2005年7月开始升值,此前,人民币汇率基本维持在8.27左右,之后开始一路升值,并显现加速之势,截止到1月底的中间价达到7.20,升值幅度为12.94%,中国的汇兑损失超过1500亿美元,相当于损失1.2万亿人民币,超过2006年全年中央财政收入2万亿人民币的一半以上。

如果2008年度人民币继续升值10%,中国近1.5万亿美元外汇储备相应地贬值1500亿美元,相当于国民财富再次损失1万多亿人民币。企业和居民的存款损失与外汇储备的汇兑损失之和在1.3-1.5亿人民币之间,相当于2006年度中央财政收入2万亿人民币的65-75%,也大幅超过了2007年度中央企业创造的利润的总和。上述二项损失的区别在于:负利率造成的存款损失属于国内财富的再分配,美元储备的贬值属于国民财富的国际再分配,属于国民财富流失。这将是我们推行以人民币升值为主的宏观紧缩政策的代价,同时,也将构成了美元输出国的重大利益来源。

面对泛滥的美元,英国央行选择了抵抗,而不是迎合。英国11月份生产者指数产出价格较上年同期上升4.5%,为过去16年以来的最大升幅,PPI投入价格较上年同期上涨10.2%。英国银行没有采取紧缩政策、没有加息、没有为泛滥的美元提供纵深推进的货币空间和利益诱导,相反,英国央行选择了对抗,采取了与美联储相同的放松货币的政策,在12月6日下调基准利率25个基点,至5.50%,这是该行自2005年8月以来的首次降息(见《市场静待美国利率决定》上海建行冯威威,《新闻晨报》12月12日)。全球性通货膨胀的根源在于美国、在于美联储的垃圾美元政策,而不在于中国央行货币政策本身,因此,英国央行的操作思路值得我们借鉴和反思。(作者余云辉 德邦证券总裁、经济学博士、厦门大学金融系客座教授)


经济危机?社会危机?_★流々星☆花园_新浪博客

seven2000收录,使用标签:经济,时间:2008-9-20 12:33:16 | 相关网摘我也收藏

经济危机?社会危机? (2006-10-28 13:08:01)


中国是个怪异的国家。很多海外的学者用西方经济学的眼光来看中国,觉得很不可思议。中国用透支的方式维持经济的快速增长,为什么积累了20多年仍然没有爆发恶性的通货膨胀进而演化成一场深重的经济危机的呢?
  
  唱某经过一段时间的苦心研究,终于得出了中国为什么不会爆发经济危机的原因。
  
  下面我将通过分析中国改革开放以来经济统计数据来详细讲解(所有数据都来源于中华人民共和国统计局)。
  
  让我们先来分析中国GDP的构成。以2003年中国GDP统计数据来看,当年中国GDP总值为117251.9 亿元。从产出均衡来计算,GDP应等于投资+消费+政府支出(ONLY购买性支出)(不包括政府转移性支出与政府债务和利息支出)+对外贸易顺差+库存投资。后两项份额很小,几乎可以忽略不计(当如当年中国对外贸易顺差为人民币2092 亿元)。当年中国全社会投资总额为55566.61 亿元,社会消费品零售总额为45842.0亿元,政府支出为13751亿元。分别占GDP比例为47.4%、39.1%、11.8%。而同年美国的GDP 构成则投资18%,消费68%,政府支出15%。可见,中国是一个主要依靠投资带动的高速增长的经济体,其模式与之前亚洲四小龙主要是泰国、韩国等增长模式如出一辙。是典型的亚洲增长模式。
  
  但是,与其他亚洲经济体不同的是,中国的投资来源主要是透支国内储蓄,而泰国、韩国当年的投资来源主要是对外负债。这一点非常重要,这也是中国能够避免东南亚危机那种模式的经济危机的主要原因。这一点将在下文仔细讲述。
  
  其实GDP的结构并不重要,重要的是,作为中国GDP主体的投资的来源是什么?这个是我们管窥中国经济发展特质的关键!
  
  让我们从另一个角度来分析GDP。从中可以推导出中国经济的一个特色。总供给==总需求,GDP又等于收入+利润+政府收入(间接性财政税收)。我们再来看2003年中国经济数据。当年全社会工资总额仅14743.5亿元,当年财政收入21715.25亿元。难以想像当年中国全社会生产的利润总额能达到近8万亿元。从这个角度可以看出,中国人的收入绝大多数是隐性收入。
  
  从另一个角度也能推出上述结论。当年全社会消费总额45842.0亿元,私人储蓄增加额16707亿元。居民可支配收入应该等于消费+储蓄,两者相加为62549万亿元人民币,比统计数据上的工资收入高出四倍。所以灰色收入或称隐性收入是中国人收入的主要来源。....
  
  下面我们主要来探索中国的投资。即用以维系中国经济增长神话的主要缘由——投资,是从什么地方来的呢?毋庸置疑,按区域来划分,投资来源于国内资金和国外资金,按性质来划分,投资有直接投资、间接投资(对外或对内举债)。那么,不管是什么样的投资,其最终都要演化为储蓄(公共储蓄和私人储蓄),所以宏观经济学有一个非常重要的等式,投资==储蓄。让我们来看中国改革开放以来,截止2003 年,中国的储蓄总额是多少呢?是137104.3亿元(主要是定期存款和储蓄存款,即公共储蓄和私人储蓄余额之和)。而截止2003年,中国历年投资总额是多少呢?这个数据我没找到,但粗略相加,大约在20万亿元左右。可见,中国的投资已经透支了中国的储蓄。(20 VS 13)所以几乎可以否定,中国的高储蓄不足以成为中国高投资的支撑。事实上,我们已经透支了。
  
  透支储蓄来投资,其后果无疑是严重的。它会带来太多的不确定性。除非新增的投资能快速地,及时地并且是有效地转化为更多的储蓄。然而反观中国的投资,由于其主要是由政府直接投资(国有投资)和由政府来主导的间接性政府投资(自筹资金),其投资效率是非常糟糕的。纵观中国20年来的国有投资,几乎100%的重大项目都会超预算,并且有超过20%的投资项目最终流产(或盖到一半停建,或盖完了废弃,等等),所以中国的投资效率是非常低下的。因此,投资所带来的赤字是中国经济发展的大隐患。
  
  如果放到任何一个正常的市场经济国家,这么高比例的透支,一定会引起剧烈的通货膨胀。我们知道,恶性通货膨胀主要是由巨大的债务导致的,譬如巨额的政府财政赤字和债务,以及国家整体的对内对外债务,一当它遭遇偿债高峰,而国家缺乏足够的资产去偿还时,政府会被迫无奈地要求中央银行增加铸币收入,从而增发货币,而进入剧烈通货膨胀的恶性循环。80年代南美的阿根廷、墨西哥以及90年代的东南亚都演绎了这种悲剧。然而奇特的是,同样的巨额透支,却对中国无可奈何。
  
  下面我们就来分析,为什么这个悲剧,从表象上来看,没有在中国发生?
  
  我们看中国历年的投资总额,都要远远超过去年至当年的储蓄增加。2003年投资55567亿元,而当年公共储蓄与私人储蓄增加不过23000亿元,有3万2千多亿的投资,来自于增加货币发行量。我发现一个有趣的现象,即中国每年的投资总额大体总等于当年M2的增长值加上储蓄增长值。我不知道这有没有经济学的理论依据,但是,从中我们总可以得出结论,即维系中国高速增长的投资,大部分是来自于货币发行的高增长。
  
  这个结论似乎可以解释为什么中国十余年来M2的增长率总在15%——25%,远高于中国7%——9%的GDP增长率。而相比美国等成熟的市场经济国家,其M2的增长率一般都在GDP增长率上浮5%下浮2%以内。
  
  通过超高的货币增长来增加投资,进而演绎GDP的高增长率。这就是中国经济增长的本质。而过量增加货币发行,换句话,也就是对内举债。由此依然验证了我上文的推述,即中国的经济增长终究是建立在债务的基础上的,只不过这个债务是隐性的,一般人看不出来。
  
  通过世界上几乎所有爆发过经济危机的市场经济国家的经验来看,其通货膨胀的缘由主要是显性债务引发的。或者是巨额的政府赤字和债务,或者是巨额的对外债务。上世纪80年代的美国经济衰退来自于政府财政赤字,而上世纪80年代的南美经济危机浪潮来自于财政债务与外债,上世纪90年代的东南亚经济危机则来源于巨额的对外债务(其中主要是短期债务)。而反观中国目前的债务状况,以2003年的数据来看,则始终控制在良性的范畴内——即中国的显性债务是良性的。
  
  2003 年,中国的财政累计债务大约略超过2万亿一点,而当年外债余额仅1936亿美元,相比较经济危机国家往往政府累计债务超过GDP的500%以上或者外债余额超过GDP300%以上(97年的韩国与泰国即是如此),中国的显性债务显然不足以对中国的金融构成极大的威胁。而且中国的外债有60%属于长期债务,根本不会遭遇偿债高峰。这就是乐观派认为中国经济不会崩溃的主要立足点。
  
  中国显然主要是通过债务进行投资的,同时中国的显性债务状况又良好,说明中国的增长支撑主要来源于隐性债务。那么,中国的隐性债务是怎么样实现的呢?同时,为什么这样的隐性债务不会酿成偿债高峰从而导致国家陷入通货膨胀的泥潭的呢?
  
  答案是,中国是通过一种极残忍的方式,来化解了隐性债务的偿还危机,进而继续演绎GDP高速增长的神话。
  
  中国的投资资金主要来源于国内的银行资金,而银行资金的来源主要是存款,银行存款包括定期存款(公共储蓄)、储蓄存款(私人储蓄)以及其他储蓄(包括存在证券公司、期货公司保证金以及各种债券资金等)。其中公共储蓄主要是各种公益资金和养老、医疗等保险资金。显然,属于私人储蓄的存款是必须要即时兑付的,也就是说,这个债务是刚性的。而其余部分的公共储蓄和其他储蓄,则相比较没有那么刚性,其即时兑付的要求没有那么高。结论是,中国债务来源,主要是从公共储蓄和其他存款中来的。说的再直白一点,中国的投资来源,主要是中国人的医疗养老资金和大家去投资金融的资金。
  
  答案已经很明显了,中国经济高增长的来源主要是投资的高增长,而投资主要来源于对社会公共储蓄和其他定期存款的举债,因为中国GDP 高增长是建立在相当大部分中国人医疗养老等保障资金与用于投资金融的资金的丧失之基础上的。由于中国的政权机构可以轻易地消掉这种债务(通过强行将工人从岗位上裁退以及通过证券市场没有法律约束地圈钱)。而这一点,正常的市场经济国家是做不到的。它们必须对所有的债务予以偿还,所以它们要么只能维持低增长,要么周期性地爆发经济危机以支付一段时间高增长带来的代价。
  
  同时,正由于中国可以轻易地消掉这笔债务,所以中国也不必面临偿债高峰而被迫增发货币从而陷入恶性通货膨胀的泥潭。因此,以这样的模式发展经济,在中国,通货膨胀简直是不可想像的。
  
  中国向市场经济转型所必须支付的所谓“改革代价”,将不会通过经济危机表现出来,其危机已由经济领域转移到了社会领域。而显然,以中国庞大的集权国家机器,其应付社会危机的能力还是绰绰有余的。
  
  这,就是中国经济社会发展的本质!


2008,中国可能发生经济危机_老杨的教与学

seven2000收录,使用标签:经济,时间:2008-9-20 12:33:04 | 相关网摘我也收藏

2008,中国可能发生经济危机2007-03-22 18:50 注:这是一篇有深度的文章,转贴过来,题目是我加的。来源不可查了,向作者致歉!作者的有些话正是我想说的。金融掠夺已经成为垄断资本掠夺他国的主要手段!中国股市、楼市、物价上涨,跟人民币汇率升值有着密切关系。这篇文章形象地说明了它们之间的关系。要知道,美国人不是侠盗罗宾汉,他们高喊的自由是他们控制世界的自由。金融战使我们看到了资本最卑鄙、最恶劣、最肮脏的一面。中国必须加强宏观调控,狠狠打击腐败分子,整顿市场秩序,十分关注民生,才能够保证我们改革开放和人民辛辛苦苦得来的果实不被人掳略。如果做得不好,2008年,奥运会开始的时候,也就是中国经济危机开始的时候!

股市你挣了钱,楼市你挣了钱。请先不要乐,你只是在为自己挖坑。说白了,你就是你的掘墓人。有钱,大家谁不盼望,但,钱是相对的,也是最靠不住的。东南亚金融危机时,有多少人哭着喊着卖出本币,兑换美元。所以你今天挣了钱,你只不过是在享受摇头丸带来的快感。还是想想如何配合国家,做一些保住胜利果实的事情吧。

美金融战争早已开打,中国处境艰难!

现在很多国人都很关心人民币升值这个话题,但又不了解美国迫使人民币升值的真正意图何在,现在鄙人就此浅薄的发表一下我的个人看法!

相信大家对80年代的“日本经济衰退”和90年代的“亚洲金融风暴”及“香港的香港金融保卫战”吧!也许有人会说那是国际投机集团“美国索罗斯财团”搞的,但是,你就没有想过它背后难道就没有美国政府的支持了吗?下面,我仔细分析一下这些事件的前因后果你就会明白了。

从1980开始的,特别在1990年和1995年,第一名的美国和第二名的日本之间的GDP差距是多少?日本GDP超过美国GDP的一半!这也是目前为 止唯一一次其它国家和美国的经济差距缩小到一半的程度。日本人在欢呼:只要超过美国的GDP,日本就可以恢复“正常国家”了!美国人没有吭声。

按理说,日本还是美国的盟国,其经济也是美国扶持起来的,美国也没有分裂日本的必要(要分裂,二战时就分裂了,也不用等到80-90年代)。美国也不可 能对盟国日本使用“颠覆性煽动”,眼看着美国是阻挡不了日本经济的发展前景的了!世界各国都在兴奋的期待着日本GDP超过美国GDP的那个“历史性时 刻”!日本企业更加疯狂,美国经济的象征——洛克菲勒广场被日本人买下了!美国的精神象征——好莱坞被日本人买了!美国人民的心情一下子掉到了谷底。“世 界第一”就快保不住了!美国人民的荣耀感在急剧下滑,民间开始蔓延仇日情绪。

1980年,日本的GDP就快到美国的一半了。有一件事情在 1985年发生了,1985年美国拉拢其它五国(7国集团)逼迫日本签署了广场协议,以“行政手段”迫使日元升值。中心思想就是日本央行不得“过度”干 预外汇市场。日本当时手头有充足的美元外汇储备,如果日本央行干预,日元升不了值。可惜呀,日本是被去了势的太监。美国驻军、政治渗透、连宪法都是美国人 帮它度身定做的,想不签广场协议都不可能。

日本最后的结局大家也知道了。1985年9月的广场协议至1988年初.美国要求日元升值。根据协 议推高日元,日元兑美元的汇率从协议前的1美元兑240日元上升到1986年5月时的1美元兑160日元。由于美国里根政府坚持认为日元升值仍不到位,通 过口头干预等形式继续推高日元。这样,到1988年年初,日元兑美元的汇率进一步上升到1美元兑120日元,正好比广场协议之前的汇率上升了一倍。

美国人满足了吗?没有。接着看下去,从1993年2月至1995年4月,当时克林顿政府的财政部长贝茨明确表示,为了纠正日美贸易的不均衡,需要有 20%左右的日元升值,当时的日元汇率大致在1美元兑120日元左右,所以,根据美国政府的诱导目标,日元行情很快上升到1美元兑100日元。以后,由于 克林顿政府对以汽车摩擦为核心的日美经济关系采取比较严厉的态度。到了1995年4月,日元的汇率急升至1美元兑79日元,创下历史最高记录。

日元升值的后果是什么?洛克菲勒广场重新回到了美国人手中,通用汽车在这个广场的一卖一买中净赚4亿美元!日资在艰难度日中大规模亏本退出美国。美国人 民胜利了!成功的击退了日本的经济进攻!我们可以从事例中看看1995年之后,日本和美国的GDP之比重新拉开了距离,而且越来越大!

可能有些网友还是没有明白,日元升值怎么啦?跟我们的谈论有什么关系?日元升值,就是美国对日本的一次经济阻击战!成功的把日本20多年的发展财富大转移到了美国去了。

下面我给个例子大家就清楚了。假设我是美国财团,我当然知道1985会发生什么,假设我在1983年吧,我用100亿美元兑换成24000亿日元,进入日本市场,购买日本股票和房地 产,日本经济的蓬勃导致股市和房地产发疯一样的上涨,1985年广场协议签订,日元开始升值,到1988年初,股市和房地产假设我已经赚到了一倍(5年才 翻一倍是最低假设了),那就是48000亿日元。

这时,日元升值到1:120。我把日本的房地产和股票在一年中抛售完,然后兑换回美元,那 么,就是400亿美元!在5年时间中,我净赚300亿美元!(还是最低假设)。那么日本呢?突然离开的巨额外资就导致了日本经济的崩溃!经济学用词叫“泡 沫经济破灭”。这就是日本常说的:“失去的十年”。而我连本带利的400亿美元回到美国,你想一想,美国经济能不旺盛吗?!!日本“失去的十年”,却正是 美国“兴旺的十年”!看看我的上表就知道了。

我只是美国财团中的一个,其它财团呢?嘿嘿,而且我的假设还只是到1988年,如果是到1995年,日元升值到1:79,你我能想象美国在这场经济战争的胜利中,到底从日本刮走了多少财富?

美国赚够了,日元现在又重新回到了1:140的位置上,美元的坚挺依然和30年前一样!美元暂时性的贬值,并没有损害到美元的国际地位。这场美日的经济战争,以美国完胜而告终!!

美国人玩上瘾了。1998年,同样的手法在东南亚四小龙四小虎身上又来了一次,这就是亚洲金融风暴!唯一不同的,这次不需要广场协议了。因为亚洲这些小 虎小龙的外汇储备们直接阻击就可以大获全胜!但是,还是没有战胜财大气粗、军事强盛、奉行霸权主义的美国,结局大家也看到了,东南亚货币在先升后跌中,经 济发展的成果被美国抢掠一空!!

唯一市场硬挺住了索罗斯的进攻而没有经济崩溃的就只有回归后的香港,保住了香港几十年的发展果实。当时索罗 斯发动世界舆论(包括香港舆论),大肆攻击香港政府(中国政府)“行政干预市场”,违反市场经济规则、没有民主自由,要是当时中国屈服于世界的舆论压力而 不运用“宏观调控”进行入市干预,那将酿成大祸,又不知道要有多少国人向当年的日本那样因破产而跳楼自杀了!

当时的曾荫权后来说过:“决定 政府入市干预的前一晚,我坐在床头哭了,不是为我自己,而是怕这个决定如果错误了,害了香港,我怎么向中央政府向市民们交代。”大家现在知道为什么美国一 再要求他国“新闻自由”、“市场经济”、“民主人权”是建立在自己利益的基础上了吧,知道我国的“宏观调控”政策的正确性和优势所在了吧。

美国停手了吗?没有,因为我国综合实力的增长、国力的增强威胁到了美国的根本利益和“世界第一”的权威,近来“中国公开支持因儿子丑闻陷入困境的安南,指责 美国故意借题发挥进行人生攻击。”就是最好的证明。所以美国心里就不痛快了,就要整人了,现在强迫人民币升值就是削弱中国的第一步,各位明白了吗?知道为 什么中央政府突然狂力打压上海和北京的房地产市场?知道为什么中国股市那么惨了吗?央行行长周小川在3月还是4月曾说了一件事情:“有一个40亿美元的外 资在上海炒房地产,已经退出中国了这样的外资,不要也罢!”明白了吗?中国股市是一个弱势股市,很容易被美国财团利用。

中央不可能放松对股 市的控制,否则中国经济将会在外资的攻击中崩溃!前段时间,也就是今年的12月初又有一个240亿美元的外资财团撤离中国上海。现在,大家对国家的宏观调 控的优势有所理解了吧,知道了国家出台那么多针对房地产的政策是多么的明智和及时了吧!

现在各位知道为什么中国要实行国家外汇管制、汇率控制、打压房地产、控制股市、知道为什么中国要保持巨额外汇储备,为什么最近央行又出台了新的房地产贷款规定,为什么中国政府一直要求进出口贸易平衡,为什么要扩展东南亚贸易市场和欧盟市场,为什么要加WTO了。

其实中美之间的经济战争,早就已经开场了,而且来来回回过了几百招了。我们大多数网友还懵懵懂懂的只盯着台海,盯着中亚美军又多了一个军事基地。要知道 经济崩溃的灾难远比一场军事战争的后果更严重。军事战争不外乎两种:即“侵略战争”和“卫国战争”。而军事上的“侵略战争”的最终目的就是打垮对方的一切 (军事力量和经济实力)达到占领对方领土,进行资源掠夺和控制奴役和剥削对方的国民。

这样的事情中国历史上没有少发生,这里我就不例举事例 了。而如今的美国就是以军事上的侵略战争为手段,达到奴役和剥削对方为目的的真实意图(对实力弱小的国家而言),看看如今的“伊拉克”就明白了,美国实际 上是侵略占领了伊拉克,控制了伊拉克的石油,以此来满足美国国内巨大的需求量;而对实力强的原苏联(原苏联拥有制对方死地的核力量),美国就只有发动经济 进攻来拖垮他们,苏联的分裂就是最好的例子。

也许有的人要说,那是冷战时期的军备竞赛和当时苏联国内政策导致了原苏联因经济崩溃而解体的。 但是,你有没有想过,进行军备竞赛是以经济实力为基础的。当时的美国经济实力比苏联强,所以,美国胜利了而苏联解体了。现在轮到我们了,我国现在的经济和 军事实力都没有冷战时期的苏联强大,相同点是我国同样也拥有毁灭美国的核武器,只是数量少了一点而已。那在这一轮中,就要看我国领导人的智慧了,建立合理 的政策来规避风险,保护自己是当务之急(可喜的是,现在我国已经在这样做了)。

可是,美国也没有闲着,而且,作为经济进攻的第一步他们已经 早早的迈出了,向美国“凯雷财团”这样的世界性投机财团收购中国的“徐州重工”这样的事情已经发生了很多了,在这里我就不一一例举了。他们的目的很明确, 控制中国的核心技术,进行世界性的技术垄断,同时乘汇率没有变化之前以美元套取人民币,迫使中国央行大量发行人民币以应付大量的货币兑换需 求,为拖垮中国经济打下伏笔。这还是明的进入,暗地里的就更无法统计了。

说到这里,也许有很多人不明白大量美元兑换人民币的行为与拖垮中国经济有什么关系。在这里,我解释一下:在正常情况下,在没有大量美国财团恶意涌入中国用大量美元换取人民币之前,我国的经济形式是相对稳定的,我国发行的人民币数量应等于我国人民积累的财富数量。

而大量的恶意的国外财团的资金涌入中国,需要兑换大量的人民币,使得国内人民币的流通数量大大超过我国人民所积累的财富数量。而这些人民币全部投入少数领域,表面上是拉动了我国的经济,使国内的消费量变大,实际上也使得资产价格大幅上升。

据统计,目前在国际上金融市场上的投资有136万亿美元。其中只要有1%即1.36万亿美元涌入中国进行投机经营,按现在的汇率,我国就要发行10.6万亿元人民币。

如 果人民币升值15%,他们再用手头的人民币套取美元,他们将换回1.56万亿美元,而中国外汇储备是0.2万亿美元,也就是说一进一出,这些投资资金多了 2000亿美元,而中国这么多年充当血汗工厂所挣来存在国库中的2000亿美元一分不剩,留给中国的是当初为应付这1.36万亿美元而发行的10.6万亿 的人民币。2006年中国GDP是20万亿,物品是这么多,而钱却多了10.6万亿,那就意味着所有商品都要打折到原来的2/3。恐慌情绪将在社会上蔓 延,炒房者为了变现到时可能会出七折、六折、甚至三折出手手中的房子。大批市民破产,牵涉到银行破产,整个国家经济崩溃,我们手中的财富一文不值了。

到时国人乃至世界将会对中国失去信心,不再储备和使用甚至抛售手中储备的人民币,使中国的外贸活动受挫,最终导致中国国内的通货膨胀,对外导致信誉危机 从而导致金融危机。就向40年代的通货膨胀那样一盒火柴要卖几百块。如果我国政府在这次的人民币汇率这件事上决策错误,那么到时中国近30年来改革开放的 经济成果就可能就可能落入他人之手。 (进一步,就会政治动荡,国家分裂,民族复兴大业毁于一旦)

最近,国内的经济形式来看,客观的讲,形式是不容乐观的。按理说,人民币升值了,也就是说钱值钱了,应该是以前1块钱的东西现在只要9毛甚至是8毛就可以买到了;可是现在的国内形式,除了工资没有涨外其余的都涨了。

新华网报道说:自8月份开始,北京市场食用油价格震荡上扬。进入11月份,米价、面价、菜价及副食价格均有不同程度的攀升。报道认为,是受国际大豆市场 价格上扬的影响,导致食用油价格上升。但是,米面跟风而涨,25公斤装的富强粉涨幅达12%以上,500克大米上涨了6分钱。据了解,在上海、广州、深圳 粮油等生活必需品已是涨升一遍,并持续一个多月,其中面粉、食用油的最高涨幅分别已达一成和二成。 (本人有过分析)
农副产品涨价说明了我国经济在发展和提高。同时,以农副产品的涨价来增加农民的收入,维护社会的稳定,给国家的发展提供了一个良好的国内环境,对国家的发展是有好处的,因为中国农民的数量毕竟占了总人口比例的70%以上嘛。

但是,中国的这四大城市生活必需品的涨价绝非偶然。持续7个多月的宏观调控并没有稳定房价,相反,导致房价的节节攀升。早有经济学家警告说,地产泡沫将导致通货膨胀,通货膨胀将引发经济危机。然而,这种声音太微弱,现如今的种种迹象表明,通货膨胀正在步步逼近我们。

对比1996年的东京,1997年的香港,北京、上海、广州,深圳这四大房价居高不下的城市,地产泡沫破灭前的迹象已经显现。试图为了一已私利而继续哄 抬房价的地方政府,将迎来经济规律的无情惩罚。因为这一轮的通货膨胀是在毫无防备的情况下发出的,可能还不被官方承认,但它实实在在已经来临了。这种处在 萌芽状态的通货膨胀选择了一个导致经济危机的最好时机——2007年的元旦和春节前。因此,危害性和破坏性更大。如果有一天方便面也开始涨价时,这场经济 危机已无法遏制了。

柴米油盐、水电油汽的轮番涨价和全面涨价,对中国的富豪阶层的正常生活不构成任何影响,但是千千万万的普通市民将要付出 更多的财富以维持和原来一样的生活水准,也就是说,中国的高房价,间接地是由普通城市居民来买单,日本的国民是花了15年的时间,香港的市民就是花了14 年。那么,中国的城市居民要花多少年呢?

应对即将到来的通货膨胀,国家自然有金融的手段。可是,中国的人民币在国际市场受到美元的攻击,一 年之内升值达5%,而且,还有继续升值的空间。中国的贸易顺差将在人民币的升值中逐渐缩小,国际市场的风险已在加剧。而国内市场生活必需品的全面涨价,将 直接影响消费。最后,逼迫央行加大人民币的发行量,中国的通货膨胀就此爆发。这种危机也可能近在眼前。

人民币目前在国际货币市场的遭遇是中 国汇制改革以来没有过的事,我们目前已经知道美元要干什么?但是,还由不得我们把国际市场的问题解决好,人民币在国内又是这样的尴尬。在不动产涨价的带动 下,生活必需品全面涨价,形成了国际与国内两种迥然不同的市场。从某种意义上来说,这样的市场将走向资本的过度投机。说白了,对内将加剧中国社会的贫富分 化,对外给资本大鳄可乘之机。

如果更深层次的分析,人民币似乎是遭遇来自不同方面的围攻,试图将中国30来年经济发展的成果逐步蚕食。接下 来,生活必需品的涨幅将进一步加剧,市民的购买力进一步下降,国内市场进一步缩小,中国的产能将进一步过剩,最后,必然导致大量的中小企业破产,经济危机 说来就来。

真正要化解这场危机,对目前的经济局势来说,进一步加大宏观调控的力度,理顺房地产市场的管理体制,采取有力措施,坚决把房价降 下来,让城市居民在房价下降的过程中感受中国经济的力量,从而增强对未来的信心。也许,这是目前最应该做的一件事,尽管已经做了一些表面工作。

我们要清醒地看到高房价的危害性,尤其是对中国社会的破坏更是史无前例。也许现在还不必过于悲观,一切都应该有转机。谁都知道中国经济发生了重大问题, 就象一辆出现明显故障的高速列车,轰轰隆隆往前飞奔,不知何时将会出轨或者颠覆。有经济学家预言,2008年中国经济将会硬着陆,届时,社会动荡不可避 免。

那么,出了这么大的问题,而问题的症结究竟何在呢?

发改委专家马晓河指出:我国正在由某一方面的过剩向全面过剩演变。由 于产能过剩,内需不旺,中国产品被迫出口,又导致了大量的贸易摩擦,过分依赖国际市场的风险越来越大。马晓河举例说:中国人向世界上的每一个人提供了一双 鞋子,可见鞋的产能过剩多少。11月23日,央行副行长苏宁也表示,中国最终消费占GDP比重已从上世纪80年代超过62%下降到2005的52.1%, 居民消费率也从1991年的48.8%下降到2005年的38.2%,均达到历史最低水平。而在中国居民消费率持续下降的同时,世界平均消费率达78%— 79%,比较起来差别之大就如天上和地下。

上面两位,一位是宏观经济的专家,一位是金融权威,但指出的是一个共同问题,就是因为内需不旺而导致产能过剩,一旦国际市场出现大的风险,中国将有成千上万工业企业面临生存的危险。

让我们再来看看近几年推动中国经济高速发展的动因是什么:如果总揽中国经济全局就可以发现,推动中国经济高速增长的一是投资,二是消费,三是出口,可以 说这是并驾齐驱的“三驾马车。”但是,在我国的实践中是“重投资、重出口、轻消费,”这是问题的表象。为什么中国人会“重投资、重出口、轻消费,”呢?明 知消费是生产力,没有消费就没有生产力,这是一个浅显的经济学常识,但是在宏观经济发展的布局上,连马克思的剩余价值理论都不顾及了?

再仔 细分析,就会发现很有趣的现象:一是地方政府重投资,前几年表现的是“开发区”热,后来是“基本建设”热,再后来就是现在的“房地产”热;二是大中型企业 重工业产品出口,不管是上市公司还是民营企业,只要形成了生产规模,眼光都瞄准了国际市场,大到汽车,家电,小到鞋子,袜子,打火机,一古脑出口。就“投 资”热而言,高房价圈走了老百姓甚至两代人的财富(现在买房子都想父母要钱),还有一代人背上了沉重的债务;就“出口”热而言,贸易顺差继续加剧,贸易摩擦不断增多,人民币升值压力 越来越大。

有经济学家分析,人民币自汇率改革以来升值了5%,现在的状况是有可能2007年一年就要升值5%,相当于前10多年的升值总幅 度。那么这个后果是什么呢?许多经济学家讳莫如深,我可以大胆的告诉大家,后果就是人民币大量从不同渠道流出境,国际洗黑钱的势力乘机介入,甚至可以把中 国贪官的钱都洗白了。

可以说,在2007年之前,只听说外国人到中国来洗钱,这个局面也将因此而改变,中国人终于到外国去洗钱了。再说得深 入一点,就是中国人民创造的财富被别人悄悄地“盗走”了,而“盗匪?发改委专家马晓河先生的话头上,看看如何解决产能过剩的问题。其实,很简单,产能过剩 的解决之道是刺激消费,而刺激消费的唯一办法就是降低房价。房价不降,中国人对未来的预期必将产生较大的压力而不敢消费,还有一部分成了房奴无钱消费。马 晓河先生说,中国工业品利用率有半数低于50%,所以,为了减少风险,必须扩大内需。

而内需如何才能扩大呢?

中国居民的消费率是38.2%,世界平均消费率是78%—79% ,中国居民平均房价收入比是一比十,世界平均房价收入比是一比 五。两相对照,中国经济问题的症结就暴露出来,是高得离谱的房价将中国居民的财富搜刮一空,还拿什么去消费呢?所以中国人的消费率创下了历史新低。有专家预 测,中国房价每下降一个点,将为市场一年增加100亿以上的消费,而中国房价从2006年前三季度的综合平均价位上,至少有30%以上的下降空间,也就是 说,只要中国房价下降30%,中国市场一年将增加3000亿的消费总额,中国经济的问题也迎刃而解,中国民众也从此能过上好日子。 (当然,扩大内需仅仅是一方面,还包括增加人们的收入,特别是广大农民的收入,有了更多的收入,才能够进行消费,如果不扩大就业,增加收入,扩大内需做不到;另外还有调节收入分配,加强税收征管等)

相反,我国要是领导人的决策事物就控制不好这个局面,我国的经济将会崩溃。我们都清楚我们现在身处的国际环境有多恶劣。面对当前复杂的国际形势,中国一定要具备打赢两场战争的能力,一是军事战争,二是经济战争。

用战争手段夺取别国别人的财富在人类历史上是很常见的。即使在21世纪的今天也还能看到。为了保护中国人民的生命财产,以及可能爆发的军事冲突,中国一定要建设强大的陆军,强大的海军,强大的空军和强大的天军(太空部队)。

在人类进入21世纪的今天,谁占领了太空这个制高点,谁就掌握了未来战争的主动权。任何太空非军事化的想法,只能是白日做梦!

圣人说得好:落后是要挨打的!中国只有具备了彻底摧毁对手的实力,别人才不敢欺负中国。

同时,在人类进入21世纪的今天,由于国际交流和贸易的全球化,一场新的战争——经济战争,已经取代军事战争,成为当今世界一部分人夺取另一部分人财产的主要手段 。
1997年东南亚的金融风暴就是经济战争的一个例子。落后的东南亚国家经济受到了重大打击。国际金融炒家以经济手段达到了以往要用战争手段才能达到的目标。

在少迟一点的香港金融保卫战中,时任香港政务司司长的曾荫权和财政司司长任志刚,在中国中央政府的支持下,用大量外汇储备干预了香港的股票市场。中国中 央政府派出了两名央行副行长到香港,要求香港的全部中资机构,全力以赴支持香港政府的扶盘行动。经过几个月的较量,香港政府成功击退了国际金融炒家把香港 当作提款机的企图。那次的斗争是非常激烈的,香港恒指变动1点,期货的买卖就会相差2.3亿港币。

香港金融保卫战虽然过去好多年了,我一直在想,如果没有强大中国做后盾,会不会发生“八国联军”攻打香港的可能呢?毕竟香港政府干预香港股票市场违反了当今国际主流社会的“规矩”。

中国航油(新加坡)在国际石油期货市场损失5亿美元和一位中国国资委职员在伦敦同期投资再次被吃表明中国在金融市场方面还有很多东西要学。

就石油这一项价格对中国经济的危害并不是最严重的。真正可能对中国经济的造成严重危害是人民币汇率体系和不断高涨的房地产市场 。

我总觉得有人要以人民币汇率为突破口,搞垮中国的经济,夺取中国人民的经济成果。从要人民币升值和自由浮动的叫喊声中,我好像闻到了军事战争的火药味。

现在有一个说得比唱得还好听得说法,让人民币汇率自由浮动,由市场来决定。难道市场是有鬼决定的吗?由市场来决定,听起来挺公平的,大家都有权。但仔细分析一下,世界上有哪个市场不是由少数人操中的呢?让人民币汇率由市场来决定,说穿了就是由他们来决定。

中国政府和人民一定不要忘记1997年东南亚的金融风暴。现在外资的相当一部分是埋下的伏兵。它们就等美国把中国的门撞开(人民币汇价自由浮动),把人民币捧上天,牟取暴利。

总之,中国一定要建设具有一不怕苦,二不怕死精神的强大的陆军,强大的海军,强大的空军和强大的天军(太空部队)以应对可能军事战争。同时中国一定要建 设热爱国家,具有国际视野,精通国际竟争规则的金融“铁军”以应对经济战争。只有这样,中国的安全,人民的财富才会得到保护!


程序员怎样学数学:半路出家也能让编程是小菜一碟 , 数学,math,程序员,代数,ll,teaching,know,learning,algebra,school,dotnet频道, , - CSDN 新闻

seven2000收录,使用标签:程序员怎样学数学,时间:2008-9-11 17:43:09 | 相关网摘我也收藏

程序员怎样学数学:半路出家也能让编程是小菜一碟
2007.10.30 来自:yeeyan  共有评论(113)条 发表评论 收藏
除了概率和离散数学外,还有不少其他的数学分支,可能对程序员相当的有用,学校通常不会教你的,除非你的辅修科目是数学.这些数目列表包括: Statistics, some of which is covered in my discrete math book, but it‘s


自从我读了Johnny von Neumann的传记,我已经为弥补我糟糕的数学技能花了15个月了.读了大量的数学书籍,不过呢,似乎我还有更多没有读.当然我会接着做的.
现在我就来告诉你这些.

这并不包括传统的智慧

首先:程序员不认为他们需要了解数学.我常常听到这样的话;我不知道还有会不同意这个的.甚至于以前是主修数学的程序员也告诉我他们真的不是常常使用到数学!他们说 更重要的是要去了解设计模式,面向对象原理,软件工具,界面设计,以及一些类似的东西.

你了解吗?他们完全正确.你不需要了解很多数学你就能做个很棒,很专业的程序员.

但是呢,同时你也不是真的需要知道如何来编程.我们要面对的是:有很多专业的程序员,他们认识到他们不是非常擅长数学,但他们还是寻找方法去提升.

如果你突然觉得自己好烂,周围的人都远远的超过你,你会怎么想呢?好,你可能会发现自己善于项目管理,或者人事管理,或者界面设计,或技术写作,或者系统管理,还有许多其他程序员不必去精通的.你会开始堆积那些想法(因为工作永远干不完),当你发现一些你能掌握的东西时,你很可能会转移去全职的做这个工作.

实际上,我认为有些东西你不需要了解,当目前你还能够赖以生存.

所以他们是对的:你不需要了解数学,并且没有她你也能过的很好.

但是最近我学到一些东西可能会让你也感到惊喜:

在你知道如何编程之后,数学更容易学会.实际上,如果你先学数学,然后半路出家做程序员的话,你会发现编程简直就是小菜一碟.

学校里教数学的方式都错了.仅仅是教学的方法错了,不是教数学本身错.如果你以正确 的方式学习数学的话,你会学的更快,记住这会更长,但对你作为一个程序员来说也更有价值.

哪怕了解一点点相关的数学知识就能让你写出可爱有趣的程序,否则会有些小难度.换 句话讲,数学是可以慢慢学的,只要你有时间.

没人能了解所有的数学,就是最棒的数学家也不是.数学领域正不断的扩展,当人们发明 新的形式去解决自己的问题时.一些给出的数学问题,也正如编程,不止一种方法可以去 解决他.你可以挑个你最喜欢的.

数学是......嗯,请别告诉别人我说过这个哈;当然我也不指望谁能邀请我参加这样的 派对,当我还活着的时候.但是,数学其实就是......我还是小声的说吧,听好了:(她其 实就是一种乐趣啦!)

The Math You Learned (And Forgot)
你学到的数学(和你忘了的)

这儿是我能记得在学校学到的数学:

初中:数,数数,算术知识,初级代数("问题故事")

高中:代数,几何,高等代数,三角学,? (圆锥和极限)

大学:微积分,微分公式,线性代数,概率和统计,离散数学

上面那个关于高中数学课程单子上所列的,怎么来着?美国高中几乎都是这样的课程设置.我认为其他国家也会很相似的,除了那些在9岁之前就掌握了这些课程的学生.(美国人同时却在热衷于玩魔鬼卡车竞赛,虽然如此,整个来说也算不上什么大损失.)

代数?是的.没问题.你需要代数.和一些理解解析几何的知识.那些很有用,并且在以后 几个月里,你能学到一切你想要的,十拿九稳的.剩下的呢?我认为一个基本的介绍可能 会有用,但是在这上面花整个学期或一年就显得很荒谬了.

我现在意识到那个书单列表原是设计来准备给那些以后要当科学家和工程师的学生的.他们在高中里所教的数学课程并不是为你的编程生涯做准备的,简单的事实是多数的编程工作相比其他的工程师角色更加要求快速.

甚至于你打算当一名科学家或者一名工程师,我会发现这更加容易去学习和欣赏几何学和三角在你理解了什么是数学之后-- 数学它如何而来,如何而去,为何而生.不必去专研记住几何上的证明和三角恒等式.但是那确实是高中学校要求你必须去做的.

所以这样的书单列表不再有什么用了.学校教了我们不是最合适的数学,并且方式也不对.不奇怪程序员认为他们不再需要数学:我们学的大部分数学知识对我们的工作没什么大的帮助.

The Math They Didn't Teach You
他们没有教到你的那部分数学

在真实的生活中,计算机科学家有规则的使用数学,对于上面单子里列的有点小小超过. 举个例子,你在中学里学的大部分数学是连续性的:也就是说,数学是真实的数字.而对于计算机科学家来说,他们所感兴趣的部分是占95%也许更多的离散性的:比如,关于整数的数学.

我打算在我以后blog中再谈一些在计算机科学,软件工程,编程,hacking,和其他常常迷惑的管理的之间的关键差异.我已经从Richard Gabriel的软件的模式这本书中洞察到一个无关细节的基本框架.如果你明显的等不下去的话,去读吧.是本不错的书.

到现在为止,不要让"计算机科学家"这个词困扰到你.它听上去很可怕,其实数学不是计算机科学家所独有的领域,你也能作为一个黑客自学它,并且能做的和他们一样棒.你作为一个程序的背景将会帮助你保持只关注那些有实践性的部分.

数学,我们用来建立计算模型的,大体上是离散的整数.这是普遍化的做法.如果正好今天你在看这篇博客,从现在起你正了解到更多的数学,并且你会认识到那样的普遍化是不对的.更多的,你将有信心认为可以忽略所有这些,并以你想要的方式自学.

对程序员来说,最有效的离散数学的分支是概率理论.这是你在学校学完基本算术后的紧接着的课.你会问,什么是概率理论呢?你就数啊,看有多少次出现满堂彩?或者有多次是同花顺. 不管你思考什么问题如果是以"多少种途径..."或"有多大几率的...",那就是离散问题.当他发生时,都转化成"简单"的计数.抛个硬币看看...? 毫无疑问在他们教你基本的计算用法后他们会教你概率理论.

我还保存着大学里的离散数学课本.可能他只占了三分之一的课程,但是它却涵盖了我们几乎每天计算机编程工作大部分所使用到的数学.

也真是够奇怪的,我的教授从没告诉我数学是用来干吗的.或者我也从来没有听说过.种种原因吧.所以我也从没有给以足够的注意:只是考试及格然后把他们都忘光,因为我不认为她还和编程有啥关系.事情变化是我在大学学完一些计算机科学的课程之后,也许是25%的课程.可怜的人!我必须弄明白什么对于自己来说是最重要的,然后再是向深度发展.

我想,如果每门数学课都花上整整一周的时间,而只是介绍让你如何入门的话,那将非常不错,这是最有意思的一种假设,那么你知道了你正学习的对象是哪种怪物了.怪物,大概对每一门课都合适.

除了概率和离散数学外,还有不少其他的数学分支,可能对程序员相当的有用,学校通常不会教你的,除非你的辅修科目是数学.这些数目列表包括:

统计学,其中一些包括在我的离散数学课里,她的某些训练只限于她自身.自然也是相当重要的,但想学的话不需要什么特别的入门.

代数和线性代数(比如,矩阵).他们会在教完代数后立即教线性代数.这也简单,这但相当多的领域非常有用,包括机器学习.

数理逻辑.我有相当完整的关于这么学科的书没有读,是Stephen Kleene写的,Kleene closure 的发明者,我所知道的还有就是Kleenex.这个就不要读了.我发誓我已经尝试了不下20次,却从没有读完第二章.如果那位牛掰有什么更好的入门建议的话可以给我推荐,给个回复.虽然,这明显是非常重要的一部分.

信息理论和柯尔莫戈洛夫复杂性理论.真不可思议,不是么?我敢打赌没哪个高中会教你其中任何一门课程.她们都是新兴的学科.信息理论是(相当相当相当相当难懂)关于数据压缩,柯尔莫戈洛夫复杂性理论是(同样非常难懂)关于算法复杂度的.也就是说,你要把它压缩的尽量小,你所要花费的时间也就变的越长,同样的,程序或数据结构要变得多优雅也有同样的代价.他们都很有趣,也很有用.

当然,也有其他的一些因素,某些领域是重复的.也拿来说说吧:你所发现有用的那部分数学,不同于那些你在学校里认为有用的数学.

那微积分呢?每个人都学它,所以它也一定是重要的,不对吗?

好吧,微积分实际上是相当容易的.在我学习它之前,它听上去好像是世界上最难的一件事,好像和量子力学差不多.量子力学对我来说真的不是那么容易理解,但是微积分却不是.在我意识到程序员能够快速的学习数学时,我拿起一些微积分课本用一个月通读了整本书,一个晚上读一小时.

微积分都是关于连续统的 -- 变化的比率, 曲线的面积, 立体的体积.是些有用的东西,但是实际细节却包含大量的记忆量并且枯燥,作为一个程序员来说根本不需要这些. 更好的方法是从整体上了解那些概念和技术,在必要的时候再去查询那些细节.

几何,三角,微分,积分,圆锥曲线,微分方程,和他们的多维和多元 -- 这些都有重要的应用.不过这时候不需要你去了解它们.这大概不是个好注意让你年复一年的去做证明和它们的练习题,不是吗?如果你打算花大量的时间去学习数学,那也是和你生活相关的部分.

学习数学的正确方法

正确学习数学的方法是广度优先,而非深度优先.你需要生存在空间里,学习事物的名字,区分出什么是什么.

以透视的方法来对待的话,考虑用用长整除.(汗一个,感觉译的不准确)现在就举起你的手如果你能在纸上做长整除.手吗?谁呢?我可不这么认为.

回头看看在学校里学过的长除法,要是不让你觉得烦恼和愤怒才怪.当然,这是显然的,但你不一定要自己亲自去做,因为很容易用计算器来做,即使你不幸在一座没有电力的荒无人烟的小岛上.你起码还有个计算器,在的手表上,补牙的什么东东,或其他什么上面.

为什么他们还教你这些呢?为什么我们感到含混心虚讷,如果我们不能记住怎样去做?这不是好像我们需要再次知道她.除此以外, if your life were on the line,你可以运用任意大的数来做长除法.相象你被囚禁在第三世界的地牢里,那儿的独裁者是 不会放你出来的,除非你计算出 219308862/103503391.你会怎么做呢?好吧,很容易.你开始从分子减去分母,直到不能再减 只剩余数为止.if pressed,你可以想个办法估计好作为十进制的余数反复来减(这种情况下,0.1185678219,Emacs M-x calc 告诉我的.够精确了! )

你也许能明白因为你知道除法就是反复的减.对除法概念的直觉是根深蒂固的.

学习数学的正确方法是忽略实际的算法和证明,对于大部分情况来说, ...:他们的名字,他们的作用,他们计算的大致步骤, (有时是)谁发明了他们,发明了多久了,他们的缺陷是什么,和他们相关的有什么.把数学当文科来学.

为什么讷?因为第一步应用在数学上的是问题的确定.如果你有一个问题去解决,并且如果你没有头绪如何开始, 这将花费你很长的时间来弄明白.但如果你知道这是个变异的问题,或者是一个凸优化问题,或者一个布尔的逻辑问题, 然后你起码能知道从哪着手开始寻找解决方案.

现在有许许多多的数学技术和整个的学科分支.如果你不知道组合逻辑是什么,甚至连听都没听说过, 那么你是不可能意识到在组合逻辑中可以找到的解决答案的问题的,难道你会么?

但那实在是个大新闻哪,因为阅读这些领域,学习实际算法,建模和计算结果的方法,记住这些名字都是容易的.在学校里他们教你链式法则,你也能回忆起他们并能运用在考试题上,但有多少学生能真正的了解他们到底意味着什么呢? 所以当他们遇到变种的链式问题时他们就不懂得如何运用公式了.让人感到讽刺的是,了解这是什么比记住如何运用公式更为容易.链式法则仅仅是如何对链式函数求导的意思,函数 x() 引用函数 g() ,你要求导 x(g()) .好,程序员知道所有和函数相关的;我们每天都使用他们,所以现在这比过去在学校更加容易能够相象出问题.

这就是为什么我认为他们以错误的方式在教数学. 对大多数高中毕业生来说,他们专门教授的内容不是可以靠经验来证明数学是如何有用的,他们教的那些恰恰是非经验式的内容.在你学习如何求导和做积分之前,你将要学习如何计数,怎样编程.

我认为学习数学最好的方法是每天花15到30分钟逛维基百科.那上面有数千数学分支的相关文章. 可以从一些你感兴趣的文章着手(比如,炫理论,或者,傅立叶变换,或者张量理论,就是能冲击你相象力的东西) 阅读.如果有什么你不理解的,就去了解那些链接.如此这般直到你累到不行.

几个月后,这么做会纵向扩展你的数学知识面.比如,你会发现一些模式--比如,数学的每个分支看上去都包括了一个有着复杂的多元版本的变量,所以线性代数将会琢建爬满你的 书单列表,直到你强迫自己学会他实际上是怎样工作的,你要下载个电子书或买本书,直到你 能从中找到乐趣.

藉着维基百科,你也能快速的找到一条了解数学基本原理的途径,条条大道通罗马.在某些领域,数学几乎总是形式化我们的"常识",所以我们能减少或证明那些领域里的新事物.对数学本身的研究就是无止境而且令人着迷的:构造形式模型本质的能力,证明,自明的系统, 规则表示,信息,和计算.

符号是个很重大的但很快被放弃的东西.数学符号是关闭你通往另一个世界的符咒.即使你熟悉累加,积分,多项式,指数,等等,如果你看到一堆符号堆彻的异常复杂时,你就把他实现的功能简单的当成一个原子操作好了,不要深究太多.

然而,从观察数学来说,尝试着明白人们正在试图解决的问题(那些已被证明了的问题某天也许会对你有实际用途), 你会开始在符号中看到相同的类型,你也不再排斥他们.比如,累加符号(大写符号-西格马)或者 product sign(大写符号-pi)起初看上去让人心里没底,即时你了解了他们的基本原理.但如果你是个程序员,你会认识到他仅仅是个循环:一个累加值,一个累乘.积分是一段连续曲线的相加,所以那不会让你郁闷太久.

一旦你习惯了数学的许多分支,和许多不同的符号的格式,你就走在了解许多数学知识的 路上了.因为你不再害怕,你将会发现问题,其实他们会自动跳到你面前."嗨,"你会思索,"我 了解这个.这是乘法符号!"

这样你就能扔掉计算器了.有一个充满相象的计算器比如 R,Matlab,Mathematica,甚或是 支持向量机的C语言库.但几乎所有有用的数学都是重型自动机,所以你能够让一切都变的自动化.
When Are Exercises Useful?
练习有啥用处呢?

在做了几年的业余数学爱好者之后,你打算做更多的数学,甚至你从没碰过铅笔和纸.比如, 你会一直看到多项式,所以最后你会耳濡目染的做起多项式的运算.同样的,对数,根,超越数,和其他到处出现的基本数学原理.

我还是得到了一种感觉我要亲手做许多的练习题.我正在寻找一种能够跟着证明步骤的方法,比如使用一种"貌似可信的测试",如果他们的结果看上去或多或少是对的,然后我就会拍拍屁股过去了.但如果我看着的那个说明我从来没听说过,亦或看上去是错的或不可能的情况,我就会挖更多的东西了.

这很像读程序源代码,不是么?当你读某人的代码你不需要手动模拟整个程序状态;如果你知道计算过程大致会发生什么情形,你能理智简单检测出结果.举个例子,如果结果是个列表,他们返回一个标量,可能你会挖的更深一点.但正常情况下你能扫描源代码几乎是以你阅读英文文本的速度(有时仅仅是速度上),并且你自信你理解了全部状态,同时你也许会发现任何真正令你震惊的错误。

我认为那就是数学爱好者(数学家和真正的数学迷)怎样读数学论文的,或者任何包含了许多数学的旧论文.他们做了同样的分类检查,正如在你读代码的时候所做的,但是不只是这些,除非他们不想把作者的观点扳倒.

照那样说法,我还是偶尔做数学练习.如果那些(比如代数和线性代数)又不停的跑过来,然后我就开始做些练习去确定我是真正的理解她了.

但我要强调这点:不要让练习使你分心.如果一个练习(甚或是一篇特别的文章或章节)开始让你烦恼,那就暂时丢一边继续前进.该跑路就坚决跑路.让你的直觉引导你.你会学的更多,更快,你的信心也会随之增长.

这些怎样才能帮到我?

也许不是--不能立刻奏效.但确实能帮助提升你的逻辑推理能力;好比是在体育馆做练习,你整体的能力会提升如果你每天都做一点的话.

对我来说,我已经注意到一些我已经感兴趣的领域(包括人工智能,机器学习,自然语言处理,和模式识别)大量的使用到数学.如我已经挖的有点深度的领域,我已经发现他们使用的数学不再比我在中学的学到的数学还要更难;大部分来说仅仅是不同领域.不是更难了, 并且学习使我能写(或者是在我自己的代码里使用)神经网络,基因算法,贝页斯分类器,集群算法,图像识别,和其他时髦的东西能产生很酷的应用.我常向我的朋友显宝.

我已经渐渐意识到这点,当别人给我看一篇包含了数学符号的文章我不再像突然冒了一身冷汗:组合,微分,真值表,定列式,无限系列,等等.那些数学符号现在变得容易相处了,但(像编程语言的语法)一开始的话多少还是有点让人感到有些怪异.现在我能更好的理解了,当我一点不知道正在说什么时,也不再感到自己是个不懂数学的人了.因为我知道自己是能够弄明白的.

那很好.

我会继续加油做的更好滴.我还有不少活头,有好多书和文章要读.有时我会花整个周末来读数学书,有时会数周都不再思索她.也和其他兴趣一样,如果你单纯的信任她你就会有兴趣,也能更容易的消磨时光,你可以经常一点点的尝试应用你觉得有趣的并且从中获益.

好好学习,天天数学!


原作者: Steve Yegge 译者: puto 原文链接



JavaScript多线程编程简介

seven2000收录,使用标签:js,时间:2008-8-20 1:11:14 | 相关网摘我也收藏

JavaScript多线程编程简介
作者 Daisuke Maki译者 张凯峰 发布于 2008年8月6日 下午12时29分

社区 Java 主题 JavaScript 标签 AJAX, 多线程
虽然有越来越多的网站在应用AJAX技术进行开发,但是构建一个复杂的AJAX应用仍然是一个难题。造成这些困难的主要原因是什么呢?是与服务器的异步通信问题?还是GUI程序设计问题呢?通常这两项工作都是由桌面程序来完成的,那究竟为何开发一个可以实现同样功能的AJAX应用就这么困难呢?

相关厂商内容
免费迷你书下载:深入浅出Struts 2

活动:体验基于OpenSolaris的Web/企业应用(8.30 杭州)

SOY Framework:Java富客户端快速开发框架

Hadoop中的集群配置和使用技巧

免费迷你书下载:Grails入门指南

相关赞助商

InfoQ中文站Java社区,关注企业Java社区的变化与创新,通过新闻、文章、视频访谈和演讲以及迷你书等为中国Java技术社区提供一流资讯。 AJAX 开发中的难题
让我们通过一个简单的例子来认识这个问题。假设你要建立一个树形结构的公告栏系统(BBS),它可以根据用户请求与服务器进行交互,动态加载每篇文章的信息,而不是一次性从服务器载入所有文章信息。每篇文章有四个相关属性:系统中可以作为唯一标识的ID、发贴人姓名、文章内容以及包含其所有子文章ID的数组信息。首先假定有一个名为getArticle()的函数可以加载一篇文章信息。该函数接收的参数是要加载文章的ID,通过它可从服务器获取文章信息。它返回的对象包含与文章相关的四条属性:id,name,content和children。例程如下:

function ( id ) { var a = getArticle(id); document.writeln(a.name + "" + a.content); }
然而你也许会注意到,重复用同一个文章ID调用此函数,需要与服务器之间进行反复且无益的通信。想要解决这个问题,可以考虑使用函数 getArticleWithCache(),它相当于一个带有缓存能力的getArticle()。在这个例子中,getArticle()返回的数据只是作为一个全局变量被保存下来:

var cache = {}; function getArticleWithCache ( id ) { if ( !cache[id] ) { cache[id] = getArticle(id); } return cache[id]; }
现在已将读入的文章缓存起来,让我们再来考虑一下函数backgroundLoad(),它应用我们上面提到的缓存机制加载所有文章信息。其用途是,当读者在阅读某篇文章时,从后台预加载它所有子文章。因为文章数据是树状结构的,所以很容易写一个递归的算法来遍历树并且加载所有的文章:

function backgroundLoad ( ids ) { for ( var i=0; i < ids.length; i++ ) { var a = getArticleWithCache(ids[i]); backgroundLoad(a.children); } }
backgroundLoad ()函数接收一个ID数组作为参数,然后通过每个ID调用前面定义过的getArticldWithCache()方法,这样就把每个ID对应的文章缓存起来。之后再通过已加载文章的子文章ID数组递归调用backgroundLoad()方法,如此整个文章树就被缓存起来。

到目前为止,一切似乎看起来都很完美。然而,只要你有过开发AJAX应用的经验,你就应该知晓这种幼稚的实现方法根本不会成功,这个例子成立的基础是默认 getArticle()用的是同步通信。可是,作为一条基本原则,JavaScript要求在与服务器进行交互时要用异步通信,因为它是单线程的。就简单性而言,把每一件事情(包括GUI事件和渲染)都放在一个线程里来处理是一个很好的程序模型,因为这样就无需再考虑线程同步这些复杂问题。另一方面,他也暴露了应用开发中的一个严重问题,单线程环境看起来对用户请求响应迅速,但是当线程忙于处理其它事情时(比如说调用getArticle()),就不能对用户的鼠标点击和键盘操作做出响应。

如果在这个单线程环境里进行同步通信会发生什么事情呢?同步通信会中断浏览器的执行直至获得通信结果。在等待通信结果的过程中,由于服务器的调用还没有完成,线程会停止响应用户并保持锁定状态直到调用返回。因为这个原因,当浏览器在等待服务器响应时它不能对用户行为作出响应,所以看起来像是冻结了。当执行 getArticleWithCache()和backgroundLoad()会有同样的问题,因为它们都是基于getArticle()函数的。由于下载所有的文章可能会耗费很可观的一段时间,因此对于backgroundLoad()函数来说,浏览器在此段时间内的冻结就是一个很严重的问题——既然浏览器都已经冻结,当用户正在阅读文章时就不可能首先去执行后台预加载数据,如果这样做连当前的文章都没办法读。

如上所述,既然同步通信在使用中会造成如此严重的问题,JavaScript就把异步通信作为一条基本原则。因此,我们可以基于异步通信改写上面的程序。 JavaScript要求以一种事件驱动的程序设计方式来写异步通信程序。在很多场合中,你都必须指定一个回调程序,一旦收到通信响应,这个函数就会被调用。例如,上面定义的getArticleWithCache()可以写成这样:

var cache = {}; function getArticleWithCache ( id, callback ) { if ( !cache[id] ) { callback(cache[id]); } else { getArticle(id, function( a ){ cache[id] = a; callback(a); }); } }
这个程序也在内部调用了getArticle()函数。然而需要注意的是,为异步通信设计的这版getArticle()函数要接收一个函数作为第二个参数。当调用这个getArticle()函数时,与从前一样要给服务器发送一个请求,不同的是,现在函数会迅速返回而非等待服务器的响应。这意味着,当执行权交回给调用程序时,还没有得到服务器的响应。如此一来,线程就可以去执行其它任务直至获得服务器响应,并在此时调用回调函数。一旦得到服务器响应, getArticle()的第二个参数作为预先定义的回调函数就要被调用,服务器的返回值即为其参数。同样的,getArticleWithCache ()也要做些改变,定义一个回调参数作为其第二个参数。这个回调函数将在被传给getArticle()的回调函数中调用,因而它可以在服务器通信结束后被执行。

单是上面这些改动你可能已经认为相当复杂了,但是对backgroundLoad()函数做得改动将会更复杂,它也要被改写成可以处理回调函数的形式:

function backgroundLoad ( ids, callback ) { var i = 0; function l ( ) { if ( i < ids.length ) { getArticleWithCache(ids[i++], function( a ){ backgroundLoad(a.children, l); }); } else { callback(); } } l(); }
改动后的backgroundLoad()函数看上去和我们以前的那个函数已经相去甚远,不过他们所实现的功能并无二致。这意味着这两个函数都接受ID数组作为参数,对于数组里的每个元素都要调用getArticleWithCache(),再应用已经获得子文章ID递归调用backgroundLoad ()。不过同样是对数组的循环访问,新函数中的就不太好辨认了,以前的程序中是用一个for循环语句完成的。为什么实现同样功能的两套函数是如此的大相径庭呢?

这个差异源于一个事实:任何函数在遇到有需要同服务器进行通信情况后,都必须立刻返回,例如getArticleWithCache()。除非原来的函数不在执行当中,否则应当接受服务器响应的回调函数都不能被调用。对于JavaScript,在循环过程中中断程序并在稍后从这个断点继续开始执行程序是不可能的,例如一个for语句。因此,本例利用递归传递回调函数实现循环结构而非一个传统循环语句。对那些熟悉连续传送风格(CPS)的人来说,这就是一个 CPS的手动实现,因为不能使用循环语法,所以即便如前面提到的遍历树那么简单的程序也得写得很复杂。与事件驱动程序设计相关的问题是控制流问题:循环和其它控制流表达式可能比较难理解。

这里还有另外一个问题:如果你把一个没有应用异步通信的函数转换为一个使用异步通信的函数,那么重写的函数将需要一个回调函数作为新增参数,这为已经存在的APIs造成了很大问题,因为内在的改变没有把影响限于内部,而是导致整体混乱的APIs以及API的其它使用者的改变。

造成这些问题目的根本原因是什么呢?没错,正是JavaScript单线程机制导致了这些问题。在单线程里执行异步通信需要事件驱动程序设计和复杂的语句。如果当程序在等待服务器的响应时,有另外一个线程可以来处理用户请求,那么上述复杂技术就不需要了。

试试多线程编程
让我来介绍一下Concurrent.Thread,它是一个允许JavaScript进行多线程编程的库,应用它可以大大缓解上文提及的在AJAX开发中与异步通信相关的困难。这是一个用JavaScript写成的免费的软件库,使用它的前提是遵守Mozilla Public License和GNU General Public License这两个协议。你可以从他们的网站 下载源代码。

马上来下载和使用源码吧!假定你已经将下载的源码保存到一个名为Concurrent.Thread.js的文件夹里,在进行任何操作之前,先运行如下程序,这是一个很简单的功能实现:

Concurrent.Thread.create(function(){ var i = 0; while ( 1 ) { document.body.innerHTML += i++ + ""; } });
执行这个程序将会顺序显示从0开始的数字,它们一个接一个出现,你可以滚屏来看它。现在让我们来仔细研究一下代码,他应用while(1)条件制造了一个不会中止的循环,通常情况下,象这样不断使用一个并且是唯一一个线程的JavaScript程序会导致浏览器看起来象冻结了一样,自然也就不会允许你滚屏。那么为什么上面的这段程序允许你这么做呢?关键之处在于while(1)上面的那条Concurrent.Thread.create()语句,这是这个库提供的一个方法,它可以创建一个新线程。被当做参数传入的函数在这个新线程里执行,让我们对程序做如下微调:

function f ( i ){ while ( 1 ) { document.body.innerHTML += i++ + ""; } } Concurrent.Thread.create(f, 0); Concurrent.Thread.create(f, 100000);
在这个程序里有个新函数f()可以重复显示数字,它是在程序段起始定义的,接着以f()为参数调用了两次create()方法,传给create()方法的第二个参数将会不加修改地传给f()。执行这个程序,先会看到一些从0开始的小数,接着是一些从100,000开始的大数,然后又是接着前面小数顺序的数字。你可以观察到程序在交替显示小数和大数,这说明两个线程在同时运行。

让我来展示Concurrent.Thread的另外一个用法。上面的例子调用create()方法来创建新线程。不调用库里的任何APIs也有可能实现这个目的。例如,前面那个例子可以这样写:

var i = 1; while ( 1 ) { document.body.innerHTML += i++ + ""; }
在script 标签内,很简单地用JavaScript写了一个无穷循环。你应该注意到标签内的type属性,那里是一个很陌生的值(text/x- script.multithreaded-js),如果这个属性被放在script标签内,那么Concurrent.Thread就会在一个新的线程内执行标签之间的程序。你应当记住一点,在本例一样,必须将Concurrent.Thread库包含进来。

有了Concurrent.Thread,就有可能自如的将执行环境在线程之间进行切换,即使你的程序很长、连续性很强。我们可以简要地讨论下如何执行这种操作。简言之,需要进行代码转换。粗略地讲,首先要把传递给create()的函数转换成一个字符串,接着改写直至它可以被分批分次执行。然后这些程序可以依照调度程序逐步执行。调度程序负责协调多线程,换句话说,它可以在适当的时候做出调整以便每一个修改后的函数都会得到同等机会运行。 Concurrent.Thread实际上并没有创建新的线程,仅仅是在原本单线程的基础上模拟了一个多线程环境。

虽然转换后的函数看起来是运行在不同的线程内,但是实际上只有一个线程在做这所有的事情。在转换后的函数内执行同步通信仍然会造成浏览器冻结,你也许会认为以前的那些问题根本就没有解决。不过你不必耽心,Concurrent.Thread提供了一个应用JavaScript 的异步通信方式实现的定制通信库,它被设计成当一个线程在等待服务器的响应时允许其它线程运行。这个通信库存于 Concurrent.Thread.Http下。它的用法如下所示:

var req = Concurrent.Thread.Http.get(url, ["Accept", "*"]); if (req.status == 200) { alert(req.responseText); } else { alert(req.statusText); }
get()方法,就像它的名字暗示的那样,可以通过HTTP的GET方法获得指定URL的内容,它将目标URL作为第一个参数,将一个代表HTTP请求头的数组作为可选的第二个参数。get()方法与服务器交互,当得到服务器的响应后就返回一个XMLHttpRequest对象作为返回值。当get()方法返回时,已经收到了服务器响应,所以就没必要再用回调函数接收结果。自然,也不必再耽心当程序等待服务器的响应时浏览器冻结的情况了。另外,还有一个 post()方法可以用来发送数据到服务器:

var req = Concurrent.Thread.Http.post(url, "key1=val1&key2=val2"); alert(req.statusText);
post()方法将目的URL作为第一个参数,要发送的内容作为第二个参数。像get()方法那样,你也可以将请求头作为可选的第三个参数。

如果你用这个通信库实现了第一个例子当中的getArticle()方法,那么你很快就能应用文章开头示例的那种简单的方法写出getArticleWithCache(),backgroundLoad ()以及其它调用了getArticle()方法的函数了。即使是那版backgroundLoad()正在读文章数据,照例还有另外一个线程可以对用户请求做出响应,浏览器因此也不会冻结。现在,你能理解在JavaScript中应用多线程有多实用了?

想了解更多
我向你介绍了一个可以在JavaScript中应用多线程的库:Concurrent.Thread。这篇文章的内容只是很初级的东西,如果你想更深入的了解,我推荐您去看the tutorial。它提供有关Concurrent.Thread用法的更多内容,并列出了可供高级用户使用的文档,是最适合起步的材料。访问他们的网站也不错,那里提供更多信息。

有关作者
Daisuke Maki:从International Christian大学文科学院自然科学分部毕业后(取得文学学士学位),又在Electro-Communications大学的研究生院信息专业攻读硕士学位。擅长Web开发和应用JavaScript的AJAX。他开发了Concurrent.Thread。2006财政年度在日本信息技术促进机构(IPA)指导的项目Explatory Software Project中应用了这个设计。

目前已经拥有一个工学硕士学位的他正在Electro-Communications大学的研究生院注册攻读博士学位。


J2SE基础复习之琐碎 - igogogo9 - JavaEye技术网站

seven2000收录,使用标签:java,时间:2008-8-19 23:34:43 | 相关网摘我也收藏

J2SE基础复习之琐碎
关键字: java
1.javac:在编译时使用的程序,其中的c指的是compile-编译。
2.注意一个专业程序员的细节:
快捷键的使用;
文件夹选项的配置;
面试的时候很有可能是用笔写代码。
3.println:是printline-输出一行的意思。
4.在配置环境变量的时候在classpath的指定路径后加一个“.”,表示当前路径也是class文件目录。
5.IDE:intergrated development environment
6.在java里称全局变量为成员变量。
7.GBK:国标码,中国大陆的汉字编码;
unicode分为utf8和utf16;java采用的是utf16,每个字符占用两个字节,包括中文。 (如‘A’和‘我’在unicode中都是占用两个字节)
8.注意在基本数据类型中long和float在赋值时必须要在数值后分别加上'l'和'f'.
例子:float ftest = 1.0f;long ltest = 5l;
9.整型的默认类型是int;浮点数的默认类型是double;所以在运算中整数视作int类型;小数视作double类型。
10.字符型的数据可以转换为数值类型,其值参照asc码;
11.在不超出其表述范围的情况下可以直接把int类型的数值赋值给byte,short,char等类型,但byte和char类型在做运算的时候首先转换为int类型,例子:
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;//错误,因为系统会自动先将b1和b2转换为int类型,所以相加的结果也是int类型,要转换为容量小的byte必须强制转换。
byte b3 = (byte)(b1 + b2);//正确。
12.float f = 1.23f//为什么要加‘f’--因为不加f表示的1.23是double类型。
13.把浮点数转换为整数采用的是去掉小数,而不是四舍五入。
14.回车、换行也是属于char类型。
15.格式比算法还要重要。
16.“短路与”和“短路或”:只需进行左边表达式的判断就可判断整个语句的结果是true或false。
17.面试的时候很多时候会考递归。
18.方法的本质目的是为了增加程序块的复用性;方法只有在被调用的时候才会执行。
19.实例和对象指的是同一回事儿。
20.继承关系的描述:什么是一种什么
21.首先定义类才会有对象
22.局部变量在使用前必须先初始化(先声明然后赋值)才能使用;成员变量在没有初始化的情况下会被系统初始化为默认的值。
23.引用类型相当于指针。引用类型在内存里面占有两个区域(一小块内存指向一大块内存)。其中一个实实在在的new出来的区域,一个是引用这个实实在在的区域的区域;
字符窜是引用型的变量。
24.例子:Object o = new Object();//这里称创建了 一个对象,o其实指的是对象的引用(即o是该对象的引用名),是引用型的数据类型;o是一个局部变量存储在内存的
stack块部分,它指向的是位于内存heap部分中的new出来的对象(也就是这个局部变量知道new出来的对象在heap中的地址,但在java中这个地址不一定是物理地址),在这个对象中存储有相关的属性(成员变量)。
25.使用new创建一个对象的时候实际上调用了构造函数;所以没有构造数无法实例化一个对象。
26.在带有参数的构造函数里面,当创建对象调用构造方法并将实参传递给构造函数的形参之后(也就是调用构造方法完成之后)构造函的参数就在内存就消失了。
27.构造方法没有返回值,并且不能在构造方法前加“void".
28.驼峰标识。
29.返回值在stack内存里类似于局部变量在方法调用完之后消失。
30.重载方法的意义:当重载多个方法分别考虑到不同的可选情况时,方便对方法的调用--调用同一个方法实现可以有“不定的参数”。 
31.String不是基本类型而是API上存在的一个类。
32.main 方法不需要对象就能够执行;main方法是一个静态方法,不能在其中访问成员变量。
33.约定俗成的包的命名:倒公司域名+项目名+其它。例子:package com.javaeye.trelow。因为域名唯一,避免了。。。
34.在jdk1.5版本以后注意源文件对class文件的影响。
35.在一个类中在没有使用import引入类的情况下,可以使用完整的"包名.类”来使用其它包的 类。
36.在没有设置classpath环境变量的情况下,类A可以访问同级目录下的包com.trelow.testpackage,但是com.trelow.testpackage下面的类不能访问com.trelow包下面的类。
37.z注意:无论是cmd下 还是ediplus在修改或设置过环境变量后都需要重新启动才能生效。
38.好习惯:每一项目应该有自己的classpath,不要和其它的项目共享。
39.在运行的时候需要把包名写全,所以在edeplus下不能直接运行含有包的class文件。
40.在已经设置了classpath的情况下可以不在class文件所在路径下运行class文件,但必须写全包名。
41.java.lang里的类可以不用引入就能使用。
42.把包打包成jar文件:在要打包的“顶级文件夹”的上层文件目录下在cmd中执行:jar -cvf jarname.jar *.* -----把当前目录下的所有文件(*.*)打包成名为jarname.jar的jar文件;输入jar可查看其它用法。
43.把jar包设置到classpath的方法:只需要在指明jar包所在目录的同时指明jar包的名字即可。
44.注意区分两个概念:方法的重载(overload)和子类对父类方法的重写(override/overwrite)---重写方法可以有相同的名字和参数。
45.当父类的方法不能满足子类对该方法的需求时使用方法的重写;重写直接copy父类的方法声明行可避免烦语法错误。
46.一个子类对象含有父类对象,因此在创建子类构造方法的时候必须现调用父类的构造方法这样才能保证父类的成员变量被初始化。
47.在创建对象时会调用构造方法,注意如果构造方法不为空则其中的语句会执行;如果有父类的话创建对象还会先调用父类的构造方法然后调用子类的构造方法。
47.System.out.println("my name is"+objectname);实际上等同于System.out.println("my name is"+objectname.toString());
-----在打印输出时,自动调用object类的toString方法先把非字符窜对象转换为字符窜然后再有加号连接前面的字符窜最后输出。
48.注意'.'在设在环境变量classpath中的用途,把它写在前面则在寻找class的时候先从当前目录开始找。
49.当在一个类中创建另外一个 类的对象如在类A中创建类B的对象B b = new B();则类A会从classpath中去寻找这个类,无论类B是否是在哪个目录下。注意当设置有多个classpath并且有同类名存在的时候要想到这一点来排除问题。
50.“==”用于两个对象之间用于比较两个对象是否引用于同一heap地址;作用和Object类的equals方法一样。但是在String,Date等类中已经重写 了Object类的equals方法。在String中如果两个字符窜不为空并且字符序列相同则返回true。
51.a instance of A ----a是不是类A的一个实例;
52.引用类型变量的强制转换:将父类对象A强制转换为子类对象后把该引用指向另外一个新命名的子类对象。
53.父类对象可以指向之类对象的引用增强了程序的可扩展性。
54.多态存在的三个条件:要有继承;要有重写;父类引用指向子类对象。
55.方法的定义和方法的空实现的区别:方法的定义只有方法的标志-括号;方法的空实现除了方法的定义外还需要用一对没有任何代码的大括号。
56.方法 void method(final int i){}表示该方法中的形参局部变量一旦被传递了值就不能在方法中被改变。
57.接口可实现它的类之间有多态性,可以看作是一种特殊的抽象类。
58.类与类之间有继承关系;类和接口之间有实现关系;接口和接口之间有实现关系。当一个类或接口实现或继承 了已经继承或实现了 接口饿接口那这个类或接口必须同时实现所有接口中的抽象方法。
59.子类的构造方法必须调用父类的构造方法;super可以用来解决子类方法和变量和父类方法变量同名时候的调用。
60. 父类可以指向子类的引用但是如果要访问子类自己定义的方法和变量必须强制转型。
61.printStackTrace():打印输出引起错误的堆栈信息-错误引起的关联错误-错误A由错误B引起,错误B由错误C引起。使用这种方法方便程序员调试程序。
62.可以创建没有指明变量名称的引用类型变量来调用方法,如在TestEx类中有new TestEx().m(0);
63.非RuntimeException的Exception(例如在API类中的方法后写有throws()...方法)必须抛出异常,不然会有编译错误:必须对其捕获或声明以便抛出。
64.面试的时候要求手动写代时书写的习惯非常重要。
65.声明 一个引用类型的对象时栈空间出现一个变量但是是空值(它没有指向对空间的地址)直到new出时候这个变量才不为null(有了指向堆内存的地址),此时已经为该引用类型的对象分配了空间但堆内存中的参数在未分配值的时候如果数据是引用类型则默认为null
66.数组本身是一个引用类型的变量集合,数组中的每个元素又可以指向一个引用类型的数据成为引用类型的对象-引用集合中的引用。
67.在数组里的length是一个属性而不是方法。
68.在println中输出双引号要用转义字符“\"”.
69.把字符串类型转换为基本类型可以使用基本类型中的包装类中的方法parse..每个基本类型都有与之对应的包装类。这种方法是静态方法通过类调用。例如:Double d1 = Double.parseDouble("9");
70.System.exit(-1)-系统非正常退出;System.exit(0)-系统正常退出。
71.不同的算法可以实现相同的功能,但是它们的效率是不同的。在实现相同的功能基础上考虑效率问题。
72.x ? y : z-其中的x,y,z 都可以是表达式
73.在数组中如果使用arraycopy进行完全拷贝则相当于把一个对象的引用让另外一个对象也指向它,在内存中只有一份该引用,两者任意一个改变其中的元素将影响到另一个。
74.字符窜常量存储在data区域,字符串变量存放在heap区域。
75.String是不可改变的字符串类,指的是如果字符串内容改变后该字符串的引用会发生改变,而指向另外一个改变后的字符串对象引用。StringBuffer是可变的字符串类,指的是该字符串内容可以在原来的内存空间上进行改变。StringBuffer对字符串的改变操作效率比String高。
76.在进行基本数据类型的相关操作时可以查看基本数据的包装类中提供的系列方法。
77.String类中的replace方法在使用后被替换的字符串内容不变,替换后的字符应该用另外一个字符串对象来存储。
78.String类中将基本数据类型转换为字符串类型-方法valueOf()的一个简单应用:计算位数-调用字符串的length方法。
78.String类常用方法总结:
索引(String或int):-根据位置索引出字符charAt();
-根据字符索引位置indexOf();
-截取从指定位置开始的字符串substring(int beginIndex)/substring(int beginIndex;endstringIndex)
判断(Boolean):-比较内容忽略大小写equalsIgnoreCase();
-是否以前缀开头/后缀结尾startsWith(String prefix)/endsWith(String sufix);
更改(String):-替换字符串中的某个字符replace(char oldChar,char newChar);
-改变为大写形式/小写形式toUpperCase()/toLowerCase();
-去掉字符串开头和结尾的空格trim()
类型转换:-对象(包括基本数据类型)转换为字符串类型 public static valueOf(Double/Int...);
分割(String[]):-按照字符串中出现的子字符窜对字符串进行分割split(String regex);
构造方法:-String(String str);
-String(char[]value);
-String(char[]value,int offset,int count);
78.能把字符串变量赋值给String但是不能赋值给StringBuffer;
79.在StringBuffer类方法参数中出现的offset的意思是“偏移量”字符串表示的字符序列的以位置计算;而int表示的是根据字符数组下标计算。如“TRELOW”offset 1 是T,而int 1 指的是R。
80.注意String类的valueOf方法和各种包装类的valueOf方法区别:前者将基本数据类型转换为字符串;后者将包装类型转换为基本数据类型。
81.StringBuffer类中的常用方法:除了类似于String中的上面提到的方法外还有:
构造方法:-创建一个不包含字符序列的空字符串对象StringBuffer();
-创建一个包含字符序列的字符串对象String(String str);
改变(StringBuffer):-在原字符串对象后面追加字符串/基本数据类型数据/字符数组append(String/Int/char[].....)
-在元字符串中插入一段字符序列包括基本数据类型insert(int offset,String str/int i/.......)
-倒序原字符串reverse();
82.在枚举类型enum中enum类似class,enum中的对象类似于类的静态属性,可以通过enum类型的“类”来调用。
80.包装类的常用方法(以Integer为例,其它类似):
构造方法:Integer(String/int);
类型转换:-返回封装类型的指定基本类型值:public static intValue(Double/Integer/Character.....);
-转换字符串为基本数据类型:public static int parseInt(String s);
81.为常量起名用大写。
82.当java文件声明了包,则在方法getParentFile()方法中的ParentFile指的是该文件的包的父目录,而不是文件本身的父目录。
83.如果一个错误非要产生的话尽量让它提前产生--编译时。
84.switch..case也可以用来判断枚举类型。
85.auto-boxing在Map类中的应用:在jdk1.5后可以直接写基本类型而不用new出对象。
86.在使用泛型时如果在api中发现某个类后面有“<>”,则这个类可以使用泛型的语法在尖括号内指定类型。
87.在用到集合的时候尽量使用泛型。
88.对象也能被打印:自动调用object类的toString方法。但是打印出的对象如果没有在该类中重写过toString方法,打印出来的是“类名"+"@hashcode”的十六进制编码。
89.Iterator对象的remove方法是在迭代过程中删除元素的唯一安全方法,并且容器的remove方法在Iterator出现时会被Iterator的remove方法锁定。
90.在容器中根据使用的容器功能选择不同的容器;根据程序扩展性的考虑使用不同的声明,但都有父类引用指向子类对象。如:
c只能使用Collection中的方法:Collection c = new HashSet();
s只能使用Set中的方法:Set s = new HashSet();
91.区分Collections类和Collection接口:Collection接口是容器的基类,Collections类是提供用于操作容器的类。
91.iso8859-1也叫lanin-1,此外还有latin-2到latin-9,iso8859是计算机网络早期ISO组织西欧国家指定的文字标准;中国自己的文字标准有gb2312,gbk(国标码)。 Unicode是ISO后来制定国际标准编码,缩写是UTF有unicode-8和unicode-16
92.System类位于java.lang.
93.先写的先读-队列;先写的后读-栈。
94.Serializable是标记性的接口里面没有方法。实现这个接口可以让jdk自动控制序列化。在实现Serilalizable的同时实现External接口可以自己控制序列化。
95.进程是一个静态的概念,实际中执行的是动态的线程。一个进程有一个主线程(main方法)或主分支,还有别的分支。
96.往Map容器里面添加对象的方法是put,往Collection容器里添加对象的方法是add.
97.在不使用处理流读取/写入文件时需要一个字节或者一个字符的读取,如果要读取全部文件或复制所有全部文件内容可以使用while循环。
98.在多线程中cpu的分配不是均匀的,所以执行的时间也不平均。
99.实现接口runnable和继承Thread类都能创建一个线程,两种方式的选择:尽量使用实现接口的方法,因为继承了Thread类就不能在继承别的类,选择实现接口能更灵活的进行。
100.在run方法中不能使用throws IterruptedException,因为run是重写了的方法,重写的方法不能抛出和被重写的方法