预览模式: 普通 | 列表

透彻讲解风险投资游戏规则

【转载】幕后英雄-风险投资(《浪潮之巅》第十一章)
 
发表者:Google(谷歌)研究员 吴军

任何一个公司的创办都离不开资金。传统上创业资金的合法来源只有两种渠道:一种是靠积累(比如继承遗产或者是自己多年的积蓄),第二种是靠借贷(比如从家人、亲戚和朋友那里凑钱,或者从银行抵押贷款)。如果要求创业者将自己一辈子的积蓄全部拿出来创业,很多人可能会知难而退,更何况最喜欢创业的年轻人恰恰是积蓄最少的群体。从银行贷款必须要有财产可抵押,对于有房子的人来讲最值钱的就是房子,但是房子一旦抵押出去很可能赎不回来,自己便无家可归了,而且不是人人都有房子可抵押。因此,年轻人要通过这两种传统的方法获得创业资金很不容易。这样,资金就成了创业的瓶颈。在很多国家,包括几乎整个欧洲,很少能看到新的公司兴起,原因就是没有人愿意提供创业的资金。

美国是一个富于冒险精神的年轻的国度。二战后,尤其是六十年代后,一些愿意以高风险换取高回报的投资人发明了一种非常规的投资方式—风险投资(VentureCapital Investment,or VC),在中国又简称风投。风险投资和以往需要有抵押的贷款有本质上的不同之处。风险投资不需要抵押,也不需要偿还。如果投资成功,风投资本家将获得几倍、几十倍甚至上百倍的回报,如果不成功,钱就打水漂了。对创业者来讲,使用风险投资创业即使失败,也不会背上债务。这样就使得年轻人创业成为可能。几十年来,这种投资方式总的来讲非常成功,硅谷在创造科技公司神话的同时,也创造出另一种神话——投资的神话。

第一节 风投的起源
  
哲学家黑格尔讲:“凡是现实的都是合理的;凡是合理的都是现实的。”(All that is real is rational, and
all that is rational is real.)这句话在恩格斯的《反杜林论》中成为最有进步意义的话。任何事情都有它发生、存在和发展的理由,当然如果这个理由不成立了,它终究就会消亡。风投在六十年代后(而不是二战以前)在美国(而不是世界其它国家)蓬勃兴起有它的社会基础。

查看更多...

分类:网站运营 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 19

CSS hack:区分IE6,IE7,firefox

区别IE6与FF:
       background:orange;*background:blue;


区别IE6与IE7:

查看更多...

分类:前端开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 61

常见的80004005错误及其解决方法

在编写WEB应用程序的过程中,我们常常要跟数据库打交道,例如我们日常经常用的数据库ACCESS、SQL SERVER等。在连接这些数据库的时候,系统往往会给我们一些象这类“80004005”错误,这些五花八门的错误信息很另人头痛。为了方便网友解决这类问题,本文将详细的介绍和解答这类问题。
[错误信息]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet database
engine cannot open the file '(unknown)'. It is already opened exclusively

查看更多...

分类:后台开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 68

滚动条样式主要涉及到如下CSS属性:

overflow属性: 检索或设置当对象的内容超过其指定高度及宽度时如何显示内容

overflow: auto; 在需要时内容会自动添加滚动条
overflow: scroll; 总是显示滚动条
overflow-x: hidden; 禁止横向的滚动条
overflow-y: scroll; 总是显示纵向滚动条


width: 568px; width: 98%; 设置区域的宽度[像素/百分比等等]

查看更多...

分类:前端开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 158
问题描述:
windows2003 IIS6运行ASP,    http 500 - 内部服务器错误。asp程序不能浏览  但htm静态网页不受影响。将IE改为不显示友好错误如下时:出现“请求的资源在使用中”

错误原因:
1、服务器上安装的上单机版杀毒软件,如瑞星2005。服务器上使用单机版杀毒一般都不会稳定的。

查看更多...

分类:后台开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 115

六大策略保障跑赢大势

当前市场低估值个股抵抗震荡行情具有明显优势,目前金融、采掘、电子信息和医药等行业市盈率较低,而航运、高速、钢铁等则市净率较低

  ●稀缺性资源类股之所以能抵御市场震荡,主要在于资源稀缺性所蕴含的价值,一旦市场反弹,资源类股往往成为领涨板块

  ●前期表现异常强势的个股经过调整后没有转入下跌趋势,那么它们将有可能成为领涨股

查看更多...

分类:生活点滴 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 210

什么是市盈率?

拼音: shi ying lv 英语: Price to Earning Ratio
  题图公式说明:“P/E Ratio”表示市盈率;“Price per Share”表示每股的股价;“Earnings per Share”表示每股收益。[编辑本段]【基本介绍】
   市盈率(Price to Earning Ratio,简称PE或P/E Ratio)
   市盈率指在一个考察期(通常为12个月的时间)内,股票的价格和每股收益的比例。投资者通常利用该比例值估量某股票的投资价值,或者用该指标在不同公司的股票之间进行比较。市盈率通常用来作为比较不同价格的股票是否被高估或者低估的指标。然而,用市盈率衡量一家公司股票的质地时,并非总是准确的。一般认为,如果一家公司股票的市盈率过高,那么该股票的价格具有泡沫,价值被高估。然而,当一家公司增长迅速以及未来的业绩增长非常看好时,股票目前的高市盈率可能恰好准确地估量了该公司的价值。需要注意的是,利用市盈率比较不同股票的投资价值时,这些股票必须属于同一个行业,因为此时公司的每股收益比较接近,相互比较才有效[2]。[编辑本段]【计算方法】
  市盈率=普通股每股市场价格÷普通股每年每股盈利 

查看更多...

分类:生活点滴 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 194

什么是上证指数

http://www.zhuoda.org/STTTT/66686.html
上海证券交易所编制的指数共计四大类计16种
一、样本指数类 4种
1.沪深300
2.上证180

查看更多...

分类:生活点滴 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 245

如何跨数据导入导出操作?

本文讨论了如何通过Transact-SQL以及系统函数OPENDATASOURCE和OPENROWSET在同构和异构数据库之间进行数据的导入导出,并给出了详细的例子以供参考。

1. 在SQL Server数据库之间进行数据导入导出
(1).使用Select INTO导出数据  
    在SQL Server中使用最广泛的就是通过Select INTO语句导出数据,Select INTO语句同时具备两个功能:根据Select后跟的字段以及INTO后面跟的表名建立空表(如果Select后是*, 空表的结构和FROM所指的表的结构相同);将Select查出的数据插入到这个空表中。在使用Select INTO语句时,INTO后跟的表必须在数据库不存在,否则出错,下面是一个使用Select INTO的例子。

查看更多...

分类:数据库 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 258
解决win2003 iis6 的请求的资源在使用中(无法运行ASP程序)的解决方法

regsvr32 jscript.dll (命令功能:修复Java动态链接库)
regsvr32 vbscript.dll (命令功能:修复VB动态链接库)

查看更多...

分类:网站运营 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 236

男女都该看




1:能不抽烟最好不抽,它或许可以帮助你吸引一些女生,但不抽绝不会招来厌烦,表现男子气概的途径有很多,没必要拿健康做赌注。

查看更多...

分类:生活点滴 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 264

溃疡性结肠炎


【概述】

    溃疡性结肠炎是一种原因不明的慢性结肠炎,病变主要限于结肠的粘膜,表现为炎症或溃疡,多累及直肠和远端结肠,但可向近端扩展,以至遍及整个结肠。

查看更多...

分类:生活点滴 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 284

FCKeditor ASP版 在线编辑器终极使用指南

因为要写个能达到文章在线上传及修改的后台,原本准备自己写的,但时间比较匆忙,加上asp处于初级阶段,所以只能用现成的在线编辑器,网上逛一圈,找了好多好多,通过网友对多款的在线编辑器详细评论,锁定了FCKeditor和eWebEditor两个程序.
       经过半天的比较,觉得还是FCKeditor
比较适合我,只要因为他是免费的,呵呵.eWebEditor的界面不错,能自由修改,而且是国产软件以及很详细的说明,很容易上手,但他是商业软件,都到4.3版本了,还能免费用2.8版本,加上卡巴老提示木马,让我不是很放心,所以就选了FCKeditor.

        

查看更多...

分类:前端开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 336

firefox与ie 的javascript区别收藏

1. Document.form.item 问题
    现有问题:
       现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在 firefox下运行
    解决方法:
        改用 document.formName.elements["elementName"]

查看更多...

分类:前端开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 352

p系列是刚出的迅驰2的处理器,(P8600,P8400)不过T系列也有迅驰2平台的。(T9600,T9400)
性能上P系列总体上比T系列强,而且工艺更先进,功耗较低,不过迅驰2代的笔记本刚上市,价格比较高,T系列一般够用了,性价比较高

P的功耗发热控制的比较好

T 和 P是TDP的不同
还有SP U系列,P比T的热设计功耗低

T是35W的U,P是25W的U

查看更多...

分类:生活点滴 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 411
问题描述:

1) 快速上传,即"上传"标签页,上传成功之后弹出的对话框为乱码,(文件名重复时会弹出这个对话框)

(2) 快速上传后返回到"链接"页后,"链接"页的输入框为乱码

查看更多...

分类:后台开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 453
个人网站赚钱,还有什么新出路呢?大流量的网站有靠大流量赚钱的方法,小流量网站也有靠小流量赚钱的方法,最重要的,是你能否有创新意识,紧跟互联网的潮流,找到赚钱新出路!

  对于一部分大流量网站来说,流量可以做的非常大,可以赚广告费,也可以把站做了一段时间后,养大卖掉。但是对于大部分个人站长而言,是没有那么大量的流量,我们这里要说的就是,如果没有足够的流量去赚广告费,那么你就该如何来考虑。

  其实我们仔细分析一下就可以发现,赚钱的方式一版都逃不出这三类,就是我们经常所说的:卖服务、卖产品、搞投资。而对于我们个人站长来说,大部分都是在靠买产品和卖服务赚钱,至于搞投资,李兴平也不是一开始就奔着一定会有人来卖这个网站而做的hao123,所以你的网站想赚钱,你就要好好考虑考虑你要卖什么服务?你要卖什么产品?

查看更多...

分类:网站运营 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 385

逆向思维赚广告费策略

目前,大家到各大论坛、站长站,看到很多站长都赚不了钱,他们赚不了钱,不是因为不够勤奋,而是因为思路不对。

一般的站长赚广告费都是这个思路:
第一步、做网站
第二步、搞流量

查看更多...

分类:网站运营 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 387

做网络必须掌握的80句话

1,网络的成功,是可以复制的。

2,自己做不了的事情,找别人来完成。

3,交际是网络创业成功的捷径。

查看更多...

分类:网站运营 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 383

解密验证码技术

目前,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。这不,我们军团论坛,也搞这个把戏了.搞得昨天晚上,我都不能发帖,运行了几次补丁,然后重新启动ie依然看不见验证码,怀疑我的机器安全措施太高,果然发现我禁止修改注册表.改禁后,问题依然,没有办法,只好手工了.问题得解.
  很多朋友对验证码有疑问,各大论坛的用户也对验证码十分讨厌,觉得麻烦,下面我们来解密这个东东.还是我的风格,通俗透彻,一分为几,逐步解答.下面我们开始:
     最初的验证码,只是几个随机生成的数字。但是道高一尺魔高一丈,很快就有能识别数字的软件了,“收藏家”们利用这种软件批量获取帐号,或是探测密码,因为软件可以不知疲倦地不断submit。于是,出现了图片形式的验证码,还要加上无规则的背景,既然人眼都难以分辨,想来软件分辨起来就有一定的难度。但是腾讯开始采用汉字图片做验证码,是不是意味着破解验证码的技术又有了新进展,带背景的数字或字母图片形式的验证码,也可以被软件分辨了?
    值得说明的是:验证码不同于注册码,注册码是软件作者根据提交的机器码通过特殊算法算出的,能让软件正常运行的密码。

查看更多...

Tags: 验证码

分类:后台开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 383
今天朋友碰到这个问题,好像说过很多遍了,那就发布出来以免每次都说。
    一、现象
    一般出现这种现象都是适用sql文件在查询分析器里建库的时候,现象一般都是提示:

查看更多...

Tags: 最大字节数(8060)

分类:数据库 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 480

零起点学通C++

本教程作者:范磊,山东泰安科技大学教师,联系信箱:najiushifeng#126.com。擅长VC、MFC、DELPHI、J2SE开发手机游戏,VC编写数据库,VC游戏开发等。本教程为书籍配套教程,书籍名称:《零起点学通C++》

  基于这个理念,我完成了该书的创作,其中的艰辛自不必说,不过令人欣慰的是,该书确实能够行之有效地帮助后来人少走许多弯路。这是由于该书不会象其他书一样首先讲述理论知识,然后讲语言特征,在概括完语言特征后再去讲解语言的基本知识,结果往往使读者纠缠于编程底层的实现,而忽略了他应该掌握的内容。

  本书不再按照以往的模式,而是首先以一个最简短的C++程序讲起,通过对这个完整的程序的实际编写引申出一些相关的知识,然后在后面的教程中对该程序不断地扩大和完善,这样方才使读者不至于一上来就被C++吓坏,同时也能深刻地理解C++的各个特性的设置目的。

 

第一章 初识C++
1 C++简介 2 C++的发展过程 3 C与C++的区别
4 学习C++应该先学C吗? 5 C++的版本以及安装问题
第二章 从一个最简短的C++程序讲起
1 简单的屏幕输出小程序 2 输出语句的使用 3 std::是什么?
4 iostream与iostream.h区别 5 重名冲突 6 注释
第三章 初步了解函数
1 函数演示 2 函数的传参 3 函数的返回值、参数与变量.swf
4 函数的声明与定义 5 局部变量 6 全局变量
第四章 C++数据类型
1 C++数据类型 2 什么是变量 3 变量及数据如何存储在内存上
4 布尔型 5 字符型 6 双字节型
7 整型概述 8 为什么使用补码 9 整型变量的定义
10 浮点型变量 11 常量 12 枚举型常量
第五章 IF语句与逻辑运算符
1 什么是语句? 2 什么是块? 3 什么是表达式?
4 什么是运算符? 5 赋值运算符与数学运算符的联合 6 什么是自加与自减
7 表达式的优先级 8 关系运算符 9 if语句
10 else语句 11 else if语句 12 if语句的嵌套
13 带括号的嵌套语句 14 逻辑“与”运算符 15 逻辑“或”运算符
16 逻辑“非”运算符 17 逻辑运算符的优先级 18 运算式的真假关系
21 三目运算符的使用问题 19 三目运算符 20 三目运算符的优先问题
22 三目运算符的型别问题 23 三目运算符在字符型变量中的使用 24 复杂的嵌套if语句
第六章 面向对象
1 什么是面向对象程序语言 2 面向对象程序语言主要特征 3 什么是类、对象和成员
4 声明一个类 5 命名习惯 6 定义一个对象
7 定义类或对象容易犯的错误 8 公有与私有 9 成员函数的声明和定义
10为什么将成员函数的声明和定义分开 11将类声明和定义部分存放在头文件中 12const成员函数
13构造函数 14默认构造函数 15析构函数
16析构对象数组
第七章 循环语句
1 循环语句的老祖宗--Goto语句 2 while语句 3 while语句的其他用法
4 continue和break语句 5 永不休止的while循环 6 do… while循环
7 for循环 8 灵活的for循环 9 条件为空的for循环
10嵌套的for循环 11switch语句 12switch语句常见错误
13switch的菜单功能
第八章 指针
1 什么是地址 2 用指针来保存地址 3 空指针
4 指针与类型 5 用指针来访问值 6 指针地址、指针保存地址和该地址值
7 指针对数值的操作 8 更换指针保存的地址 9为什么使用指针1
10为什么使用指针2 11为什么使用指针3 12指针与堆
13为什么使用指针 14内存泄露 15在堆中创建对象
16在堆中删除对象 17访问堆中的数据成员 18在构造函数中开辟内存空间
19对象在栈与堆中的不同 20this指针 21指针的常见错误
22指针的加减运算 23.指针的赋值运算 24指针的相减运算
25指针运算4指针的比较运算 26.常量指针 27指向常量的指针
28指向常量的常指针
第九章 引用
30什么是引用? 31引用的地址 32引用就是别名常量
33引用对象 34空引用 35通过值来传递函数参数
36通过指针来传递函数参数 37通过引用来传递函数参数 38利用指针返回多值
39利用引用返回多值 40按值传递对象 41使用指针来传递对象
42使用const指针来传递对象 43使用引用来传递对象 44到底是使用引用还是指针
第十章 深入函数
45普通函数的重载 46成员函数的重载 47函数的缺省参数
48重载构造函数 49成员变量的初始化 50成员变量初始化与构造函数1
51成员变量初始化与构造函数2 52成员变量初始化与构造函数3 53复制构造函数
54构造函数和NEW运算符 55再谈默认构造函数 56析构函数和delete运算符
57默认析构函数 58调用构造函数进行类型转换 59浅层复制构造函数1
60浅层复制构造函数2 61深层复制构造函数
第十一章 运算符重载
62运算符重载 63在成员函数中实现自加 64重载前置自加运算符
65重载前置自加运算符 66创建临时对象 67创建无名临时对象
68取消创建临时对象 69取消创建临时对象 70重载后置自加运算符
71重载加法运算函数operator+ 72重载加法运算函数operator+ 73重载赋值运算函数operator=
74重载赋值运算函数operator= 75重载赋值运算函数operator= 76重载赋值运算函数operator=
77重载赋值运算函数operator= 78重载赋值运算函数operator= 79转换类型运算符
80转换类型运算符 81转换类型运算符 82重载限定
第十二章 继承
83什么是继承和派生 84复杂的继承和派生 85继承和派生如何在C++中实现
86单一继承1 87单一继承2 88保护成员
89公有型、保护型和私有型 90公有派生的公有成员 91公有派生的保护成员
92公有派生的私有成员 93公有派生的赋值问题 94私有派生
95多重继承1 96多重继承2 97继承的构造与析构
98继承的构造与析构 99向基类构造函数传递参数1 100向基类构造函数传递参数2
101向基类构造函数传递参数3 102多重继承容易产生两义性 103两义性在重载时的一些问题
104两义性的归属问题1 105两义性的归属问题2 106减少两义性产生的混淆问题
107虚基类不会产生两义性 108虚基类与指针(选学)
第十三章 虚函数
1 指向对象的指针1 2 指向对象的指针2 3 虚函数
4 拳击游戏1 5 拳击游戏2 6 拳击游戏3
7 拳击游戏4 8 拳击游戏5 9 继承是否可以实现多态性
10继承是否可以实现多态性 11在编译时的静态联编 12在运行时的静态联编
13在编译时的动态联编 14在编译时的动态联编 15三种调用虚函数的方式比较1
16三种调用虚函数的方式比较2 17三种调用虚函数的方式比较3 18系统是如何调用虚函数的
19在虚函数中使用成员名限定 20虚构造函数和析构函数1 21虚构造函数和析构函数2
第十四章 数组
1什么是数组 2数组元素 3数组下标越界
4倒序输出 5将数组下标定义为常量以便于修改 6手动操作数组元素
7.1数组的初始化 7.2数组的初始化 8.1求平均考试成绩
8.2求平均考试成绩 9.1兔子繁殖问题 9.2兔子繁殖问题
9.3兔子繁殖问题 10.1数字排序问题 10.2数字排序问题
10.3数字排序问题 10.4数字排序问题 11.1数组在内存中的分布
11.2数组在内存中的分布 12数组名 13.1数组名与函数
13.2数组名与函数 14.1传递与接收 14.2传递与接收
15.1将数组传递给函数 15.2将数组传递给函数 15.3将数组传递给函数
16求数组所有元素的和 17.1用递增法查找数据 17.2用递增法查找数据
17.3用递增法查找数据 18.1用二分法来查找数据 18.2用二分法来查找数据
18.3用二分法来查找数据 19判断数组是否按照顺序排列 20.1判断数组排列方式然后执行不同函数
20.2判断数组排列方式然后执行不同函数 21数组在对象中的传参 22数组对象
23.1在数组对象中初始化成员变量 23.2在数组对象中初始化成员变量 24.1指针数组
24.2指针数组 25.1堆中数组对象 25.2堆中数组对象
26容易混淆的概念 27枚举常量与数组 28多维数组
29多维数组的初始化 30定义字符数组 31二维数组输出图形
32字符串数组 33字符串的输入问题 34strcat函数
35strcpy函数 36strcmp函数 37strups函数
38strlwr函数 39strlen函数 40.1打印杨辉三角形
40.2打印杨辉三角形 41.1重载数组下标操作符 41.2重载数组下标操作符
41.3重载数组下标操作符
第十五章 链表
1什么是链表 2.1结构体链表 2.2结构体链表
3静态链表 4动态链表 5.1动态链表的建立
5.2动态链表的建立 6.1解决输入字符造成死循环的问题 6.2解决输入字符造成死循环的问题
6.3解决输入字符造成死循环的问题 7动态链表的显示 8.1动态链表的删除
8.2动态链表的删除 8.3动态链表的删除 9动态链表的插入
10演示尾插法 11前插法 12.1中间插法
12.2中间插法 13链表统计 14.1使用链表.swf
14.2使用链表.swf 14.3使用链表.swf 14.4使用链表.swf
14.5使用链表.swf 14.6使用链表.swf 14.7使用链表.swf
15.1链表使用案例之走迷宫 15.2设置项目 15.3创建派生类
15.4定义应用程序对象 15.5初始化函数 15.6创建窗口
15.7显示窗口 15.8更新窗口 15.9 GDI类
15.10加载位图 15.11LoadImage函数 15.12句柄是什么
15.13显示图片 15.14显示图片 15.15显示图片
15.16显示图片 15.17显示图片 15.18显示图片
15.19小知识点 15.20动画1 15.21动画2
15.22动画3 15.23动画4 15.24键盘控制人物移动
15.25键盘控制人物移动 15.26键盘控制人物移动 15.27键盘控制人物移动
15.28迷宫墙壁 15.29迷宫墙壁 15.30迷宫墙壁
15.31迷宫墙壁 15.32走迷宫 15.33用链表记录行走路线
15.34用链表记录行走路线 15.35用链表记录行走路线
第十六章 多态性
1.为什么要使用多重继承 2.在派生类中增加函数 3.使用多重继承
4.模拟抽象类 5.纯虚函数与抽象类 6.抽象类实例
7.复杂的抽象结构 (1) 7.复杂的抽象结构 (2) 8.慎用多重继承

Tags: 学通C++

分类:Java | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 498
口疮(口腔溃疡)是一种最常见的口腔粘膜疾病,在人群中患病率一般认为超过10%,可以发生于男女老幼,以中青年最多见。
口疮是一种以周期性反复发作为特点的口腔粘膜局限性溃疡损害,可以自愈,可发生于口腔粘膜的任何部位,以唇、颊、舌部多见,严重者可以波及咽部粘膜。不少患者随着病程的延长,溃疡面积增大,数目增多,疼痛加重,愈合期延长,间隔期缩短等,影响食和说话。
对口腔溃疡的治疗方法虽然很多,但基本上都是对症治疗,目的主要是减轻疼痛或减少复发次数,但不能完全控制复发,所以预防本病尤为重要。

平常应注意保持口腔清洁,常用淡盐水漱口,戒除烟酒,生活起居有规律,保证充足的睡眠。坚持体育锻炼,饮食清淡,多吃蔬菜水果,少食辛辣、厚味的刺激性食品,保持大便通畅。妇女经期前后要注意休息,保持心情愉快,避免过度疲劳,饮食要清淡,多吃水果、新鲜蔬菜,多饮水等等,以减少口疮发生的机会。

查看更多...

Tags: 口腔溃疡 舌根部溃疡

分类:生活点滴 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 402

Private Members in JavaScript

Private Members in JavaScript

 

Douglas Crockford
www.crockford.com

 

JavaScript is the world's most misunderstood programming language. Some believe that it lacks the property of information hiding because objects cannot have private instance variables and methods. But this is a misunderstanding. JavaScript objects can have private members. Here's how.

Objects

JavaScript is fundamentally about objects. Arrays are objects. Functions are objects. Objects are objects. So what are objects? Objects are collections of name-value pairs. The names are strings, and the values are strings, numbers, booleans, and objects (including arrays and functions). Objects are usually implemented as hashtables so values can be retrieved quickly.

查看更多...

Tags: javascript

分类:javascript | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 423

Javascript 动画初探(实现)

http://www.gracecode.com/Archive/Display/2808

说完了理论,我们来做点实事。这篇文章将介绍使用 Javascript 实现的动画组件。

下面记录下当时编写这个组件的考虑的些问题,对技术细节感兴趣的朋友,可以到这里参看源代码

  1. 需要几个回调函数控制初始化、动画运行时、动画完成的情况
  2. 将动画精确到运行了几帧
  3. 使用 setInterval 还是 setTimeout,最后还是选择了 setInterval(详细
  4. 不管元素需要更改那些属性,提供相应公式即可,但这可能带来性能问题
  5. 要可扩展、而且稳定

这个动画组件的用法简要的说明下,首先我们要确定元素从哪里移动(begin)到哪里(final),我们可以将两个信息绑定到一起,比如

var position = {from: 0, to: 100};

查看更多...

分类:javascript | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 433

Javascript 动画初探(原理)

哲学上有种说法,“运动是绝对的,静止是相对的”。我们在编写各样的效果时,时常会碰到动画。下面的章,将讨论动画的原理以及实现。

动画,简而言之就是物体在某时间段内,不断的改变自身的属性。这些属性有可能是位置、大小等。为了方便说明,在这里统一认定为位置(position)。

那么,动画就有了两个基本的变量,时间和位置。用直角坐标系来表示,将 x 轴定为时间(time),将 y 轴定为位置(position),就可以得到这样的坐标系

查看更多...

分类:javascript | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 492

Javascript 全局空间的“污染”哲学

八卦文章,所以标题党下,见笑。期前编写 JavaScript 框架的规则,玉伯在他的 Blog 已有提到。而今天看见 Ajaxian 上收集的目前主流 JavaScript 框架占用的全局空间变量数目,我也忍不住八卦下。

大家或许都知道,使用全局空间要格外的谨慎,如果滥用全局空间会造成诸多问题。随着 Javascript 的框架越来越多,不同的设计哲学相互碰撞,形成很有趣的局面:

其实,从上面几个图就能看出 Javascript 框架能分成几个流派,就我使用过的几个典型的框架,谈下我的看法:

查看更多...

分类:javascript | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 471

JSONP的起源(转)

原文

http://www.cn-cuckoo.com/2008/09/13/the-origin-of-jsonp-262.html

作者:Bob Ippolito /原文链接

浏览器安全模型规定,XMLHttpRequest、框架(frame)等只能在一个域中通信。从安全角度考虑,这个规定很合理;但是,也确实给分布式(面向服务、混搭等等本周提到的概念)Web开发带来了麻烦。

查看更多...

Tags: JSONP

分类:前端开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 447

悟透JavaScript (转)

原文:http://www.cnblogs.com/leadzen/archive/2008/02/25/1073404.html

 

引子


    编程世界里只存在两种基本元素,一个是数据,一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。

    数据天生就是文静的,总想保持自己固有的本色;而代码却天生活泼,总想改变这个世界。
 
   你看,数据代码间的关系与物质能量间的关系有着惊人的相似。数据也是有惯性的,如果没有代码来施加外力,她总保持自己原来的状态。而代码就象能量,他存在的唯一目的,就是要努力改变数据原来的状态。在代码改变数据的同时,也会因为数据的抗拒而反过来影响或改变代码原有的趋势。甚至在某些情况下,数据可以转变为代码,而代码却又有可能被转变为数据,或许还存在一个类似E=MC2形式的数码转换方程呢。然而,就是在数据和代码间这种即矛盾又统一的运转中,总能体现出计算机世界的规律,这些规律正是我们编写的程序逻辑。

    不过,由于不同程序员有着不同的世界观,这些数据和代码看起来也就不尽相同。于是,不同世界观的程序员们运用各自的方法论,推动着编程世界的进化和发展。
 
    众所周知,当今最流行的编程思想莫过于面向对象编程的思想。为什么面向对象的思想能迅速风靡编程世界呢?因为面向对象的思想首次把数据和代码结合成统一体,并以一个简单的对象概念呈现给编程者。这一下子就将原来那些杂乱的算法与子程序,以及纠缠不清的复杂数据结构,划分成清晰而有序的对象结构,从而理清了数据与代码在我们心中那团乱麻般的结。我们又可以有一个更清晰的思维,在另一个思想高度上去探索更加浩瀚的编程世界了。

    在五祖弘忍讲授完《对象真经》之后的一天,他对众弟子们说:“经已讲完,想必尔等应该有所感悟,请各自写个偈子来看”。大弟子神秀是被大家公认为悟性最高的师兄,他的偈子写道:“身是对象树,心如类般明。朝朝勤拂拭,莫让惹尘埃!”。此偈一出,立即引起师兄弟们的轰动,大家都说写得太好了。只有火头僧慧能看后,轻轻地叹了口气,又随手在墙上写道:“对象本无根,类型亦无形。本来无一物,何处惹尘埃?”。然后摇了摇头,扬长而去。大家看了慧能的偈子都说:“写的什么乱七八糟的啊,看不懂”。师父弘忍看了神秀的诗偈也点头称赞,再看慧能的诗偈之后默然摇头。就在当天夜里,弘忍却悄悄把慧能叫到自己的禅房,将珍藏多年的软件真经传授于他,然后让他趁着月色连夜逃走...

    后来,慧能果然不负师父厚望,在南方开创了禅宗另一个广阔的天空。而慧能当年带走的软件真经中就有一本是《JavaScript真经》!

回归简单

    要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原。前面说过,编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系。JavaScript就是把数据和代码都简化到最原始的程度。

    JavaScript中的数据很简洁的。简单数据只有 undefined, null, boolean, number和string这五种,而复杂数据只有一种,即object。这就好比中国古典的朴素唯物思想,把世界最基本的元素归为金木水火土,其他复杂的物质都是由这五种基本元素组成。

    JavaScript中的代码只体现为一种形式,就是function。

    注意:以上单词都是小写的,不要和Number, String, Object, Function等JavaScript内置函数混淆了。要知道,JavaScript语言是区分大小写的呀!

    任何一个JavaScript的标识、常量、变量和参数都只是unfined, null, bool, number, string, object 和 function类型中的一种,也就typeof返回值表明的类型。除此之外没有其他类型了。

    先说说简单数据类型吧。

    undefined:   代表一切未知的事物,啥都没有,无法想象,代码也就更无法去处理了。
                      注意:typeof(undefined) 返回也是 undefined。
                              可以将undefined赋值给任何变量或属性,但并不意味了清除了该变量,反而会因此多了一个属性。

    null:            有那么一个概念,但没有东西。无中似有,有中还无。虽难以想象,但已经可以用代码来处理了。
                      注意:typeof(null)返回object,但null并非object,具有null值的变量也并非object。

    boolean:      是就是,非就非,没有疑义。对就对,错就错,绝对明确。既能被代码处理,也可以控制代码的流程。

    number:      线性的事物,大小和次序分明,多而不乱。便于代码进行批量处理,也控制代码的迭代和循环等。
                      注意:typeof(NaN)和typeof(Infinity)都返回number 。
                              NaN参与任何数值计算的结构都是NaN,而且 NaN != NaN 。
                              Infinity / Infinity = NaN 。

    string:         面向人类的理性事物,而不是机器信号。人机信息沟通,代码据此理解人的意图等等,都靠它了。

     简单类型都不是对象,JavaScript没有将对象化的能力赋予这些简单类型。直接被赋予简单类型常量值的标识符、变量和参数都不是一个对象。

    所谓“对象化”,就是可以将数据和代码组织成复杂结构的能力。JavaScript中只有object类型和function类型提供了对象化的能力。

没有类

    object就是对象的类型。在JavaScript中不管多么复杂的数据和代码,都可以组织成object形式的对象。

    但JavaScript却没有 “类”的概念!

    对于许多面向对象的程序员来说,这恐怕是JavaScript中最难以理解的地方。是啊,几乎任何讲面向对象的书中,第一个要讲的就是“类”的概念,这可是面向对象的支柱。这突然没有了“类”,我们就象一下子没了精神支柱,感到六神无主。看来,要放下对象和类,达到“对象本无根,类型亦无形”的境界确实是件不容易的事情啊。

    这样,我们先来看一段JavaScript程序:

    var life = {};
    
for(life.age = 1; life.age <= 3; life.age++)
    {
        
switch(life.age)
        {
            
case 1: life.body = "卵细胞";
                    life.say 
= function(){alert(this.age+this.body)};
                    
break;
            
case 2: life.tail = "尾巴";
                    life.gill 
= "";
                    life.body 
= "蝌蚪";
                    life.say 
= function(){alert(this.age+this.body+"-"+this.tail+","+this.gill)};
                    
break;
            
case 3delete life.tail;
                    
delete life.gill;
                    life.legs 
= "四条腿";
                    life.lung 
= "";
                    life.body 
= "青蛙";
                    life.say 
= function(){alert(this.age+this.body+"-"+this.legs+","+this.lung)};
                    
break;
        };
        life.say();
    };

查看更多...

Tags: 悟透JavaScript

分类:javascript | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 399

Microsoft JScript 功能 - ECMA JScript .NET

51js资源地址

http://bbs.51js.com/viewthread.php?tid=75453&extra=page%3D1

http://msdn.microsoft.com/zh-cn/library/cc435636(VS.71).aspx

JScript .NET
Microsoft JScript 功能 - ECMA

JScript .NET 包含了 ECMAScript Edition 3 语言规范的几乎所有功能。另外,JScript .NET 正在结合 ECMAScript Edition 4 进行开发,并且也包含了该语言的许多建议功能。下表列出了 ECMAScript 3 的功能以及 JScript .NET 所支持的 ECMAScript 4 建议功能。

类别ECMAScript 3 功能/关键字
数组处理 Array
concat,
join, length, reverse, slice, sort
赋值 赋值 (=),
加法赋值 (+=),
按位“与”赋值 (&=),
按位“或”赋值 (|=),
按位“异或”赋值 (^=),
除法赋值 (/=),
左移赋值 (<<=),
取模赋值 (%=),
乘法赋值 (*=),
右移赋值 (>>=),
减法赋值 (-=),
无符号右移赋值 (>>>=)
布尔值 Boolean, true, false
注释 /*...*/ 或 //
常数/标识符 NaN
null,
Infinity
undefined
控制流 break
continue
do...while
for
for...in
if...else
Labeled
return
switch
while
日期和时间 Date
getDate, getDay, getFullYear, getHours, getMilliseconds, getMinutes, getMonth, getSeconds, getTime, getTimezoneOffset, getYear,
getUTCDate, getUTCDay, getUTCFullYear, getUTCHours, getUTCMilliseconds, getUTCMinutes, getUTCMonth, getUTCSeconds,
setDate, setFullYear, setHours, setMilliseconds, setMinutes, setMonth, setSeconds, setTime, setYear,
setUTCDate, setUTCFullYear, setUTCHours, setUTCMilliseconds, setUTCMinutes, setUTCMonth, setUTCSeconds,
toGMTString, toLocaleString, toUTCString, parse, UTC
声明 Function
new
this
var
with
错误处理 Error, description, Number, throw, Try...Catch
函数创建 caller, Function
arguments, length
全局方法 Global
escape, unescape
eval
isFinite, isNaN
parseInt, parseFloat
数学 Math
abs, acos, asin, atan, atan2, ceil, cos, exp, floor, log, max, min, pow, random, round, sin, sqrt, tan,
E, LN2, LN10, LOG2E, LOG10E, PI, SQRT1_2, SQRT2
数字 Number
MAX_VALUE, MIN_VALUE
NaN
NEGATIVE_INFINITY, POSITIVE_INFINITY
对象创建 Object
new
constructor, instanceof, prototype, toString, valueOf
运算符 加法 (+), 减法 (-)
取模算法 (%)
乘法 (*), 除法 (/)
取反 (-)
相等 (==), 不等 (!=)
小于 (<), 小于或等于 (<=)
大于 (>)
大于或等于 (>=)
逻辑“与”(&&), 或 (||), Not (!)
按位“与”(&), 或 (|), Not (~), Xor (^)
按位左移 (<<), 右移 (>>)
无符号右移 (>>>)
条件 (?:)
逗号 (,)
delete, typeof, void
递减 (--), 增量 (++),
严格相等 (===), 严格不等 (!==)
对象 Array
Boolean
Date
Function
Global
Math
Number
Object
RegExp
正则表达式
String
正则表达式和模式匹配 RegExp
index, Input, lastIndex, $1...$9, source, compile, exec, test
正则表达式语法
字符串 String
charAt, charCodeAt, fromCharCode
indexOf, lastIndexOf
split
toLowerCase, toUpperCase
length
concat, slice
match, replace, search
anchor, big, blink, bold, fixed, fontcolor, fontsize, italics, LINK, small, strike, Sub, sup
类别建议的 ECMAScript 4 功能/关键字
基于类的对象 class, extends, implements, interface,
function get, function set, static,
public, private, protected, internal,
abstract, final,
hide, override,
static
声明 const
枚举 enum

请参见

查看更多...

Tags: JScript .NET

分类:javascript | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 428

关于23种设计模式的有趣见解

创建型模式

1、FACTORY —追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory

工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

查看更多...

Tags: 设计模式

分类:javascript | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 373

解剖JavaScript中的null和undefined.

原址:http://blog.csdn.net/leadzen/archive/2009/02/17/3899392.aspx


正文开始:
在JavaScript开发中,被人问到:null与undefined到底有啥区别?

查看更多...

Tags: null undefined.

分类:前端开发 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 387

两个不错的JavaScript压缩工具

来源:http://www.spacespace.cn/read.php?203
今天试用了两个JavaScript压缩工具,一个是dojo shrinksafe( http://shrinksafe.dojotoolkit.org/ ),还有一个是yui compressor( http://developer.yahoo.com/yui/compressor/ ),感觉还不错。我压缩了一下prototype-1.6.0.js,源文件差不多122K,dojo shrinksafe压缩后,文件变成86K,yui compressor压缩后,文件变成72K,看起来yui compressor效果更好。测试了一下,压缩后的文件也没有出现什么问题。

其实两个工具都是基于Rhino(http://mozilla.org/rhino) 这个开源项目的,不同于其他压缩工具是基于正则表达式来进行JavaScript代码匹配来进行压缩,Rhino是一个JavaScript的解析器,是 解释需要压缩的JavaScript代码后再进行比如变量替换,消除空行,消除注释等压缩方法。Rhino是一个jar包,运行他需要在你的机器上安装 JDK,我安装的是j2sdk1.4.2_17,安装完成后,便可以使用了。

dojo shrinksafe基本上没有在Rhino基础上在进行封装,直接用Rhino即可,而yui compressor是基于Rhino的基础上,再进行了封装,使压缩效率更高。

使用方法:

安装jdk


dojo shrinksafe:

cd /root/

wget http://svn.dojotoolkit.org/src/util/trunk/shrinksafe/custom_rhino.jar

/usr/java/j2sdk1.4.2_17/bin/java -jar custom_rhino.jar -c infile.js > outfile.js 2 > &1


其中infile.js 即是你需要压缩的JavaScript文件,outfile.js 是压缩后的输出文件

yui compressor:

cd /root/

wget http://www.julienlecomte.net/yuicompressor/yuicompressor-2.3.4.zip

unzip yuicompressor-2.3.4.zip

cd yuicompressor-2.3.4/build/

/usr/java/j2sdk1.4.2_17/bin/java -jar yuicompressor-2.3.4.jar --preserve-semi -o outfile.js infile.js


类 似,其中infile.js 即是你需要压缩的JavaScript文件,outfile.js 是压缩后的输出文件,另外那个参数,--preserve-semi ,表示保留代码中的分号,为了压缩后的程序的正确性,我在这保留了分号。其他还有一些参数,具体可参见这:http://www.julienlecomte.net/yuicompressor/README

值得一提的是,yui compressor还支持css文件的压缩,但是对于css文件的压缩就是基于正则表达式的了,效果怎么样我没有测试,有兴趣的朋友可以自己测试一下。

done! 你可能会感兴趣的内容
Google Chrome中Ajax应用从URL载入xmlDocument对象的方法
不一样的javascript逻辑操作符
Javascript中的闭包(closure)
【转】一个满足实际开发需要的Ajax组件库需要哪些内容?

Tags: dojo shrinksafe yui compres

分类:javascript | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 439
来源:http://hi.baidu.com/momoca/blog/item/997ff21fa124f661f624e40d.html
怎么压缩Js?为什么要压缩Javascript? Javascript compressed/crunched
开发Ajax除了自己要写js代码外,同样也免不了要使用其它第三方js库,是否该为JavaScript减肥?
当你提高了用户体验,做出了很绚丽的效果而欣喜的时候,是否想过优化一下JS的效率,比如微软的live,其中的js做了压缩处理。JS的速度分为两种, 下载速度和执行速度。今天就先来说说下载速度。要想js的下载速度快,就需要尽量减小js文件的大小。这里我们可以使用一个工具 ESC(ECMAScript cruncher)来帮我们完成这个工作,不过这个工具只能在Windows下使用。到
http://www.saltstorm.net/depo/esc/introduction.wbm?pod=js下载ESC.zip,解压后看看它的帮助文档。很简单。

ESC Introduction
ESC is an ECMAScript pre-processor written in JScript, enabling an unlimited number of external scripts to be compressed/crunched into supertight, bandwidth-optimized packages. Featuring several compression-techniques such as comment removal, whitespace stripping, newline stripping and variable substitution ESC can reduce the overall size of your code with up to ~45%. Single, multiple scripts and even directories with scripts can be merged together at the compression level you decide. The processed output can later be appended or written to a file, or piped to another application for further processing via STDOUT.
  
ESC do NOT support crunching of inline scripts. So any attempt passing HTML, ASP, JSP, PHP or other equivalent documents to ESC is done at your own risk.  
  
ESC supports four levels of compression, where a higher level equals higher compression. Beware though that levels >2 requires your code to be syntaxically perfect or ESC will punish you by producing a broken and useless output.  
  
The compression ratio should hit around 25% using the default compression level on a vanilla looking script, but results as high as ~45% can be achieved depending on the script's design / your style of writing code.  
  
ESC's compression engine is intelligent in the meaning that it has language syntax, statement and keyword awareness and it *knows* about native objects and members provided by the most common scripting hosts. This knowledgebase can easily be extended by pluggin in userdefined maps with additional information to further gain control of the crunching procedure. During processing following things are taken into account :  
  
String and RegExpression read-ahead
Jscript Conditional compilation statements and variables
ECMA-262 Core language definitions (ECMAScript)
Intermediate DOM's (level 0) and DOM level 1
MS Jscript specific objects/methods
Netscape/Mozilla/Opera specific objects/methods/properties
MS WSH (Windows Scripting Host) 1+ native objects  

压缩级别分为5种,从0到4

Level 0 :: No compression

Level 1 :: Comment removal

Level 2 :: Whitespace removal

Level 3 :: Newline removal

Level 4 :: Variable substitution

在WINDOWS命令行下执行

cscript ESC.wsf -ow menu2.js menu.js将会把menu.js按照js压缩级别2来压缩(默认js压缩级别为2)为menu2.js

cscript ESC.wsf -l 3 -ow menu3.js menu.js将会把menu.js按照js压缩级别3来压缩为menu3.js

需要注意的是,js压缩级别4会把变量名修改,如果你的js中用到了全局变量或者类的话,就不能使用该压缩级别了,否则其它使用你的js的文件可能会无法正常运行。

试了一下,把yui的menu.js压缩了一下,对应的级别和压缩率分别如下:

js压缩级别1:压缩率44.41%

js压缩级别2:压缩率62.82%

js压缩级别1:压缩率64.93%

原来130多K的js文件压缩后也就40多K,看来还是挺有用处的。


另外还有一个小工具
jsmin也可以压缩,不过没有ESC的level选项,看了一下好像压缩效果类似于ESC的level3.济南大学的一些老师写了个jsmin的图形界面程序JsMinGUI,使用起来更加方便。:-)

Dojo项目组也提供了一个工具,shrinksafe可以通过
http://alex.dojotoolkit.org/shrinksafe/在线的上传要压缩的文件,处理完毕后可以保存到本地,另外shrinksafe还提供了一个本地运行的版本,需要jre1.4的支持。

Ps:对于一些压缩的代码,在阅读时可以用
JavaScript Code Improver来进行格式化。看看它主页上的一个例子:
javascript压缩代码示例
原来的代码:
程序代码 程序代码
<script language="JavaScript">var i=0,s="",k=0;function foo(){for(j=0;j<10;j++){for(i=0;i<10;i++){s="string1";k=Math.floor(Math.random()*10);}for(i=20;i>9;i--){s="string2";k=I;}}}</script>


格式化后:
程序代码 程序代码
<script language="JavaScript">
var I = 0, s = "", k = 0;
function foo()
{
for(j = 0; j < 10; j++)
{
for(I = 0; I < 10; i++)
{
s = "string1";
k = Math.floor( Math.random()*10 );
}
for(I = 20; I > 9; i--)
{
s = "string2";
k = I;
}
}
}
</script>



js压缩,巨NB的dHTML特效. 来自:
http://hometown.aol.de/_ht_a/memtronic/MemTronic_CruncherCompressor_v09g.html

JS压缩示例样本:JS压缩示例样本


更多的JS压缩器以及混淆器
http://dean.edwards.name/packer/   在线Js压缩
A Online JavaScript Compressor/Obfuscator version 2.0.2
Also available as a .NET application
开源下载:http://dean.edwards.name/download/#packer
JS压缩器帮助:http://dean.edwards.name/packer/usage/
http://dean.edwards.name/packer/usage/sample.html

http://hometown.aol.de/_ht_a/memtronic/

JavaScript Compressor/Obfuscator Demo:
http://www.brainjar.com/js/crunch/demo.html

JavaScript Code Improver:
JavaScript Code Improver Download


前面提到的Javascript压缩,都是采用删除注释,删除多余空格,替换字符等方式进行的,还有一种通过服务器的配置来实现Js静态压缩的方法:
关于JavaScript的gzip静态压缩方法
传统的JS压缩(删除注释,删除多余空格等)提供的压缩率有时还是不尽不意,幸亏现在的浏览器都支持压缩传输(通过设置http header的Content-Encoding=gzip),可以通过服务器的配置(如apache)为你的js提供压缩传输,或是appfuse中使 用的GZipFilter使tomcat也提供这种能力

现在的问题是这种动态的压缩会导致服务器CPU占用率过高,现在我想到的解决辨法是通过提供静态压缩(就是将js预先通过gzip.exe压缩好)

一.下面描述在tomcat中的应用

1.将prototype.js通过gzip.exe压缩保存成prototype.gzjs
2.设置header,我编写了一个简单的AddHeadersFilter来将所有以gzjs结尾的文件增加设置header Content-Encoding=gzip
web.xml中的配置
引用内容 引用内容
<filter>  
     <filter-name>AddHeaderFilter</filter-name>  
     <filter-class>  
         badqiu.web.filter.AddHeaderFilter   
     </filter-class>  
     <init-param>  
         <param-name>headers</param-name>  
         <param-value>Content-Encoding=gzip</param-value>  
     </init-param>  
</filter>  
  
<filter-mapping>  
     <filter-name>AddHeaderFilter</filter-name>  
     <url-pattern>*.gzjs</url-pattern>  
</filter-mapping>


测试prototype.js是否正常的代码
程序代码 程序代码
<html>  
<head>  
<!-- type="text/javascript"不可少,有的浏览器缺少这个不能运行 -->  
<script src="prototype.gzjs" type="text/javascript"></script>  
</head>  
<body>  
     <input id="username" name="username" value="badqiu"/><br />  
     <input id="email" value="badqiu@gmail.com"/>  
<script>  
     <!-- 测试prototype的方法是否正常-->  
     alert($F('username'))   
</script>  
</body>  
</html>


在Apache httpd中可以直接通过在httpd.conf增加AddEncoding x-gzip .gzjs来映射.gzjs文件的header

二.相关压缩率数据
1. prototype.js 1.5.0_rc0原始大小56KB,未经任何处理直接使用gzip压缩为12KB,总压缩率79%
2. 通过js压缩工具压缩过的protytype.js为20KB,使用gzip压缩为10KB,总压缩率为83%
3. 实际项目中的多个js合并成的文件 439KB,直接通过gzip压缩为85KB,总压缩率81%
4. 439KB经过js压缩为165KB,再经过gzip压缩为65KB,总压缩率86%

基本上你都可以忽略js压缩工具的压缩率,直接使用gzip压缩

gzip下载地址 http://www.gzip.org
tomcat的压缩配置示例下载地址: http://www.blogjava.net/Files/badqiu/gziptest.rar

其主要是利用服务器自带的动态压缩功能 传输时压缩数据流.

Javascript compressed,Js压缩,javascript压缩,js压缩工具,js压缩合并,js文件压缩

Tags: compressed Js压缩

分类:javascript | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 341