小小

IT
数据加载中……

2008年9月20日

ORACLE中字符串split的一种方法

一种方法是用函数:这里转帖网上摘抄的一个函数

  CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000);

  CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)

  RETURN str_split

  PIPELINED

  AS

  v_length   NUMBER := LENGTH(p_string);

  v_start    NUMBER := 1;

  v_index    NUMBER;

  BEGIN

  WHILE(v_start <= v_length)

  LOOP

  v_index := INSTR(p_string, p_delimiter, v_start);

  IF v_index = 0

  THEN

  PIPE ROW(SUBSTR(p_string, v_start));

  v_start := v_length + 1;

  ELSE

  PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));

  v_start := v_index + 1;

  END IF;

  END LOOP;

  RETURN;

  END splitstr;

  这里提供另外一种方法,tbw利用oracle的正则相关函数实现:

  select dbms_lob.substr(regexp_substr('abc,def,ggg,1,2,3,4,5', '[^,]+', 1, x.n)) as player_guid

  from dual a, (select rownum n from dual connect by rownum < 100) x

  这里利用了函数 regexp_substr和connect by

  其中rownum < 100 会连接限制split的次数 '[^,]+'为split拆分的正则表达式,这里为【,】逗号

  上面sql语句结果是:

  abc

  def

  ggg

  1

  2

  3

  4

  5

posted @ 2010-02-24 05:22 小小it 阅读(3155) | 评论 (0)编辑 收藏
sql语句实现循环添加1000个数据

select * from ausertable order by userid;

  commit;  //执行 结束

  1:最近刚开始用oracle 数据库,很多东西都不怎么懂,要在tbw账号表添加 1000个账号,找了一些资料,经过测试可以使用,开始 我吧语法 都跟SqlServer  里面的混了,花了一个上午的时间,下面就是测试的数据的代码:特别注意的是:'01'||to_char(i)这里 一直meiyo

  DECLARE

  i number:=0;

  BEGIN

  for i in 1..100 loop

  insert into AUSERTABLE(USERID,USERPID,USERNAME)

  values('01'||to_char(i),'8','武汉');

  dbms_output.put_line(i);

  end loop;

  END;

posted @ 2010-02-24 05:21 小小it 阅读(834) | 评论 (0)编辑 收藏
教你如何Oracle数据导入

学习Oracle时,你可能会遇到Oracle数据导入问题,这里将介绍Oracle数据导入问题的解决方法,在这里拿出来和大家分享一下。Oracle数据导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文件。imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用法。

  1. 获取帮助

  imp help=y

  2. 导入一个完整数据库

  imp system/manager file=bible_db log=dible_db full=y ignore=y

  3. 导入一个或一组指定用户所属的全部表、索引和其他对象

  imp system/manager file=seapark log=seapark fromuser=seapark imp

  system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

  4. 将一个用户所属的数据导入另一个用户

  imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy

  imp system/manager file=tank log=tank fromuser=(seapark,amy)

  touser=(seapark1, amy1)

  5. 导入一个表

  imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

  6. 从多个文件导入

  imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)

  log=paycheck, filesize=1G full=y

  7. 使用参数文件

  imp system/manager parfile=bible_tables.par

  Import the sample tables used for the Oracle8i Database Administrator's

  Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import

  8. 增量导入

  imp system./manager inctype= RECTORE FULL=Y FILE=A

  Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。

  执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径,该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。oracle用java编写,SQLPLUS.EXE、EXP.EXE、IMP.EXE这两个文件有可能是被包装后的类文件。SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类,完成导入导出功能。
转载:http://www.mengbu.com/  地址:http://www.mengbu.com/news/56/

posted @ 2010-02-13 01:58 小小it 阅读(650) | 评论 (0)编辑 收藏
iis rewrite 规则收集整理 精华 推荐!

转载请注明来源:枫子整理并发布于:http://www.imfeng.com/iis-rewrite-rules-collect-isapi-rewrite/

二级域名:
RewriteCond Host: (?!/.|www|ww)(.*).gongluela.com
RewriteRule (.*) http/://www.gongluela.com/$1$2 [I,R]

防盗链:
ISAPI_Rewrite的httpd.ini内容写的是下面内容,如果你也遇到盗链的困扰,建议可以参考一下:

RewriteCond Host: (.+)
RewriteCond Referer: (?!http://(?:www\.gongluela\.com|www\.imfeng\.com|www\.goboyo\.com|www\.soso\.com|www\.google\.com|cache\.baidu\.com)).+
RewriteRule .*\.(?:jpg|kmz|kml|zip) /block.gif [I,O]

注释:第二行里面的域名是允许链接图片的网站列表,目前我允许我自己的两个站和另外bloglines、zhuaxia、google、baidu这四个网站引用我站文件,其他网站的引用被禁止。

  第三行是禁止引用的文件类型,包括jpg图片、Google Earth的kmz和kml、zip文件。当然,还可以增加其他类型,比如gif、rar等,因为我站没有那些文件,所以没有添加上去。

下面是转载的一点文章,特转给帅哥看的。

发这个帮助文件是因为在给朋友设置主机的时候发现他们的ISAPI Rewrite的设置都有些不正确,有些甚至阻碍了站点的正常运行。就把官方自带的英文帮助粗略的翻译了一下。大家可以自由使用和转载。但转载时如果你愿意请注明是 蓝色 翻译的版本。

===================
ISAPI Rewrite 配置简介:

在NT/2000/XP和2003平台上,ISAPI Rewrite在系统帐户下射入INETINFO进程与 IIS 以共存模式过滤器运行。所以系统帐户应该给予对ISAPI- REWIRITE DLLS Internet匿名访问组 可读可执行权限 和所有的 HTTPD。INI 文件可读权限,还应该给予系统帐户对于所有包括 HTTPD。INI 文件的文件夹的可写权限,这将允许产生 HTTP。 PARSE。ERRORS 日志文件,来记录配置文件语法错误。对于PROXY模块也需要额外的权限,因为它将运行于连接池或HIGH-ISPLATED 应用模式,IIS帐户共享池和HIGH-ISOLATION池应被给予对RWHELPERE。DLL的可读权限。缺省情况下IWAM-《计算机名》被用于所有的池,在相应的COM+应用设置中应借助COM+ADMINISTRATION MMC SNAP-IN建立池帐户

配置文件格式化:

配置文件分为两种: GLOBAL(服务器全局模式)和 INDIVIDUAL(站点独立设置模式)文件,GLOBAL(服务器端全局模式)配置文件应该被放在ISAPI-REWRITE 安装目录中,名为 httpd.ini 。这个文件可以通过开始菜单的快捷方式访问和配置,这个文件里面的映射规则为全局规则,将针对所有站点起效。INDIVIDUAL(站点独立设置模式)配置文件应该被放在虚拟站点的根目录内,也被命名为httpd.ini文件,这里面应该放置针对站点的映射配置设置,只针对被放置的虚拟站点有效。两种类型的 httpd.ini 都是标准的windows ini 文件。所有的映射规则应该被放置在 [ISAPI_Rewrite] 之后。之前的文件文本将被忽略。
HTTPD.INI文件示例

[ISAPI_Rewrite]

# This is a comment

# 300 = 5 minutes

CacheClockRate 300

RepeatLimit 20

# 设置其他人没有下载 httpd.ini 和 httpd.parse.errors 文件的权限

RewriteRule /httpd(?:\.ini|\.parse\.errors) / [F,I,O]

# Block external access to the Helper ISAPI Extension

RewriteRule .*\.isrwhlp / [F,I,O]

# 配置规则

RewriteCond Host: (.+)

RewriteCond 指令

Syntax:(句法) RewriteCond TestVerb CondPattern [Flags]

这一指令定义一个条件规则,在 RewriteRule 或者 RewriteHeader或 RewriteProxy指令前预行RewriteCond指令,后面的规则只有它的,模式匹配URI的当前状态并且额外的条件也被应用才会被应用。

TestVerb

Specifies verb that will be matched against regular expression.

特别定义的动词匹配规定的表达式

TestVerb=(URL | METHOD | VERSION | HTTPHeaderName: | %ServerVariable) where:

URL – returns Request-URI of client request as described in RFC 2068 (HTTP 1.1);

返回客户端在RFC2068中描述的需求的Request-URI

METHOD – returns HTTP method of client request (OPTIONS, GET, HEAD, POST, PUT, Delete or TRACE);

返回客户端需求(OPTIONS, GET, HEAD, POST, PUT, Delete or TRACE)的HTTP方法

VERSION – returns HTTP version;

返回HTTP版本

HTTPHeaderName – returns value of the specified HTTP header. HTTPHeaderName can be any valid HTTP header name. Header names should include the trailing colon “:”. If specified header does not exists in a client’s request TestVerb is treated as empty string.

返回特定义的HTTP头文件的值

HTTPHeaderName =

Accept:

Accept-Charset:

Accept-Encoding:

Accept-Language:

Authorization:

Cookie:

From:

Host:

If-Modified-Since:

If-Match:

If-None-Match:

If-Range:

If-Unmodified-Since:

Max-Forwards:

Proxy-Authorization:

Range:

Referer:

User-Agent:

Any-Custom-Header

得到更多的关于HTTP头文件的和他们的值的信息参考RFC2068

ServerVariable 返回特定义的服务器变量的值 。例如服务器端口,全部服务器变量列表应在IIS文档中建立,变量名应用%符预定;

CondPattern

The regular expression to match TestVerb

规则表达式匹配TestVerb

[Flags]

Flags is a comma-separated list of the following flags:

O (nOrmalize)

Normalizes string before processing. Normalization includes removing of an URL-encoding, illegal characters, etc. This flag is useful with URLs and URL-encoded headers

RewriteRule 指令

Syntax: RewriteRule Pattern FormatString [Flags]

这个指令可以不止发生一次,每个指令定义一个单独的重写规则,这些规则的定义命令很重要,因为这个命令在应用运行时规则是有用途的

I (ignore case)

不管大小写强行指定字符匹配(http://www.chnjc.com/),这个FLAG影响RewriteRule指令和相应的RewriteCond 指令

F (Forbidden)

对客户端做反应,停止REWRITING进程并且发送403错误,注意在这种情况下FORMATSTRING 是无用的并可以设置为任何非空字符串。

L (last rule)

不应用任何重写规则在此停止重写进程,使用这个FLAG以阻止当前被重写的URI被后面的规则再次重写

N (Next iteration)

强制REWRITINGENGINE调整规则目标并且从头重启规则检查(所有修改将保存),重启次数由RepeatLimit指定的值限制,如果这个数值超过N FLAG将被忽略

NS (Next iteration of the same rule)

以N标记工作不从相同的规则重启规则规则进程(例如强制重复规则应用),通过RepeatLimit指令指定一个反复实行某一规则的最大数目,

P (force proxy)

强制目的URI在内部强制为代理需求并且立即通过ISAPI扩展应付代理需求,必须确认代理字符串是一个有效的URI包括协议主机等等否则代理将返回错误

R (explicit redirect)

强制服务器对客户端发出重定向指示即时应答,提供目的URI的新地址,重定向规则经常是最后规则

RP (permanent redirect)

几乎和[R]标记相同但是发布301HTTP状态而不是302HTTP状态代码

U (Unmangle Log)

当URI是源需求而不是重写需求时记载URI

O (nOrmalize)

在实行之前标准化字符串。标准化包括URL-ENCODING,不合法的字符的再移动等,这个标记对于URLS和URLS-ENDODED头是有用的

CL (Case Lower)

小写

CU (Case Upper)

大写

RewriteHeader directive

Syntax: RewriteHeader HeaderName Pattern FormatString [Flags]

这个指令是RewriteRule的更概括化变种,它不仅重写URL的客户端需求部分,而且重写HTTP头,这个指令不仅用于重写。生成,删除任何HTTP头,甚至改变客户端请求的方法

HeaderName

指定将被重写的客户头(http://www.yaopinwang.org/),可取的值与 RewriteCond 指令中TestVerb参数相同

Pattern

限定规则表达式以匹配Request-URI,

FormatString

限定将生成新的URI的FormatString

[Flags]

是一个下列FLAGS的命令分隔列表

I (ignore case)

不管大小写强行指定字符匹配,这个FLAG影响RewriteRule指令和相应的RewriteCond 指令

F (Forbidden)

对客户端做反应,停止REWRITING进程并且发送403错误,注意在这种情况下FORMATSTRING 是无用的并可以设置为任何非空字符串。

L (last rule)

不应用任何重写规则在此停止重写进程,使用这个FLAG以阻止当前被重写的URI被后面的规则再次重写

N (Next iteration)

强制REWRITINGENGINE调整规则目标并且从头重启规则检查(所有修改将保存),重启次数由RepeatLimit指定的值限制,如果这个数值超过N FLAG将被忽略

NS (Next iteration of the same rule)

以N标记工作不从相同的规则重启规则规则进程(例如强制重复规则应用),通过RepeatLimit指令指定一个反复实行某一规则的最大数目,

R (explicit redirect)

强制服务器对客户端发出重定向指示即时应答,提供目的URI的新地址,重定向规则经常是最后规则

RP (permanent redirect)

几乎和[R]标记相同但是发布301HTTP状态而不是302HTTP状态代码

U (Unmangle Log)

当URI是源需求而不是重写需求时记载URI

O (nOrmalize)

在实行之前标准化字符串。标准化包括URL-ENCODING,不合法的字符的再移动等,这个标记对于URLS和URLS-ENDODED头是有用的

CL (Case Lower)

小写

CU (Case Upper)

大写

 

要重移动头,FORMAT STRING模式应该生成一个空字符串,例如这一规则将从客户请求中重移代理信息

RewriteHeader User-Agent: .* $0

并且这一规则将把OLD-URL HEADER 加入请求中。

RewriteCond URL (.*)RewriteHeader Old-URL: ^$ $1

最后一个例子将通过改变请求方法定向所有的WEBDAV请求到/WEBDAV。ASP

RewriteCond METHOD OPTIONS

RewriteRule (.*) /webdav.asp?$1

RewriteHeader METHOD OPTIONS GET

RewriteProxy directive

Syntax: RewriteProxy Pattern FormatString [Flags]

强制目的URI在内部强制为代理需求并且立即通过ISAPI扩展应付代理需求,这将允许IIS作为代理服务器并且重路由到其他站点和服务器

Pattern

限定规则表达式以匹配Request-URI,

FormatString

限定将生成新的URI的FormatString

[Flags]

是一个下列FLAGS的命令分隔列表

D (Delegate security)

代理模式将试图以当前假冒的用户资格登陆远程服务器,

C (use Credentials)

代理模式将试图一在URL或基本授权头文件中指定的资格登陆远程服务器,用这个标记你可以使用http://user:password@host.com/path/ syntax 作为URL

F (Follow redirects)

缺省情况下ISAPI_Rewrite 将试图将MAP远程服务器返回的重定向指令到本地服务器命名空间,如果远程服务器返回重定向点到那台服务器其他的某个位置,ISAPI_Rewrite 将修改这一重定向指令指向本服务器名,这将避免用户看到真实(内部)服务器名称

使用F标记强制代理模式内部跟踪远程服务器返回的重定向指令,使用这个标记如果你根本不需要接受远程服务器的重定向指令,在WINHTTP设置中有重定向限制以避免远程重定向循环

I (ignore case)

不管大小写强行指定字符匹配

U (Unmangle Log)

当URI是源需求而不是重写需求时记载URI

O (nOrmalize)

在实行之前标准化字符串。标准化包括URL-ENCODING,不合法的字符的再移动等,这个标记对于URLS和URLS-ENDODED头是有用的

CacheClockRate directive

Syntax: CacheClockRate Interval

这个指令只在GLOBAL配置内容中出现,如果这个指令在SITE-LEVEL内容中出现将被忽略并把错误信息写入httpd.parse.errors 文件

ISAPI_Rewrite caches每次在第一次加载时配置(http://www.mshuba.com/),使用这个指令你可以限定当一个特定站点从缓存中清理的不活动周期,把这个参数设置的足够大你可以强制 ISAPI_Rewrite 永不清理缓存,记住任何配置文件的改变将在下次请求后立即更新而忽略这个周期

Interval

限定特定配置被清理出缓存的不作为时间(以秒计),缺省值3600(1小时)

EnableConfig and DisableConfig directives

Syntax:

EnableConfig [SiteID|"Site name"]

DisableConfig [SiteID|"Site name"]

对所选站点激活或不激活SITE-LEVEL配置或者改变缺省配置,缺省SITE-LEVEL配置不激活,这个指令只出现在GLOBAL配置内容中

SiteID

Numeric metabase identifier of a site

Site name

Name of the site as it appears in the IIS console

不用参数使用这个命令将改变缺省配置到ENABLE/DISABLE配置进程

例子

下面例子将使配置仅作用于ID=1(典型是缺省站点)名字是MY SITE的站点

DisableConfig

EnableConfig 1

EnableConfig”My site”

下边例子将激活名称为SOMESITE配置因为它分割设置重载了缺省设置

EnableConfig”Some site”

DisableConfig

EnableRewrite and DisableRewrite directives

Syntax:

EnableRewrite [SiteID|"Site name"]

DisableRewrite [SiteID|"Site name"]

对所选站点激活或不激活重写或者改变缺省配置,缺省重写配置激活,这个指令只出现在GLOBAL配置内容中

SiteID

Numeric metabase identifier of a site

Site name

Name of the site as it appears in the IIS console.

不使用参数这个命令将全部激活或者不激活

RepeatLimit directive

Syntax: RepeatLimit Limit

这个指令可以出现在GLOBAL和SITE-LEVEL配置文件中,如果出现在GLOBAL配置文件中竟改变GLOBAL对于所有站点的限制,出现在SITE-LEVEL配置中竟只改变对于这个站点的限制并且这个限制不能超过GLOBAL限制

ISAPI_Rewrite在实行规则时允许循环,这个指令允许限制最大可能循环的数量,可以设置为0或1而不支持循环,

LIMIT

限制最大循环数量,缺省32

RFStyle directive

Syntax: RFStyle Old | New

Configuration Utility

ISAPI_Rewrite Full包括配置功用(可以在 ISAPI_Rewrite 程序组中启动),它允许你浏览测试状态并输入注册码(如果在安装过程中没有注册),并且调整部分与代理模式操作相关的产品功能,UTILITY是由三个页面组成的属性表

Trial page允许你浏览TIRAL状态并输入注册码(如果在安装过程中没有注册)

Settings page

这页包含对下列参数的编辑框

Helper URL

这个参数影响过滤器和代理模块之间的联系方式,它即可以是以点做前缀的文件扩展名(如 .isrwhlp)也可以是绝对路径,

第一种情况下扩展名将追加在初始请求URI上并且代理模块竟通过SCRIPT MAP激活,缺省扩展名isrwhlp在安装进程中加在global script map 中,如果你改变这个扩展名或者你的应用不继承global script map 设置你应该手动添加向script map 所需求的入口。这个应该有如下参数

Executable: An absolute path to the rwhelper.dll in the short form

Extension: Desired extension (.isrwhlp is default)

Verbs radio button: All Verbs

Script engine checkbox: Checked

Check that file exists checkbox: Unchecked

我们已经创建了一个WSH script proxycfg.vbs ,可以简单在一个a script maps中注册,她位于安装文件夹并且可以在命令行一如下方式运行

cscript proxycfg.vbs [-r] [MetabasePath]

Optional -r 强制注册扩展名

Optional MetabasePath parameter allows specification of the first metabase key to process. By default it is “/localhost/W3SVC”.

要在所有现存的 script maps 中注册你可以以如下命令行激活 script

cscript proxycfg.vbs -r

 

第二种情况下你应该提供一个URI作为’Helper URL’的值(http://www.gongluela.com/),你也应该map 一个 ISAPI_Rewrite的安装文件夹作为美意个站点的虚拟文件家

注意:根据顾客反应,IIS5(也许包括IIS4)对长目录名有问题。所以我们强烈推荐使用短目录名

Worker threads limit

这个参数限制在代理扩展线程池中工作线程数,缺省为0意味着这个限制等于处理器数量乘以2

Active threads limit

这个参数限制当前运行线程数,这个数量不可大于”Worker threads limit”. 缺省0意思是等于处理器数量

Queue size 这个参数定义最大请求数量,如果你曾经看到Queue timeout expired” 信息在 the Application event log中你可以增加这个参数

Queue timeout

这个参数定义你在内部请求队列中防止新请求的最大等待时间,如果你曾经看到Queue timeout expired” 信息在 the Application event log中你可以增加这个参数

Connect timeout

以毫秒设定代理模块连接超时

Send timeout

以毫秒设定代理模块发送超时

Receive timeout

以毫秒设定代理模块发送超时

About page.

It contains copyright information and a link to the ISAPI_Rewrite’s web site.

Regular expression syntax

这一部分覆盖了 ISAPI_Rewrite规定的表达句法

Literals

所有字符都是原意除了 “.”, “*”, “?”, “+”, “(”, “)”, “{”, “}”, “[", "]“, “^” and “$”.,这些字符在用“\”处理时是原意,原意指一个字符匹配自身

Wildcard

The dot character “.” matches any single character except null character and newline character

以下为句法

Repeats

A repeat is an expression that is repeated an arbitrary number of times. An expression followed by “*” can be repeated any number of times including zero. An expression followed by “+” can be repeated any number of times, but at least once. An expression followed by “?” may be repeated zero or one times only. When it is necessary to specify the minimum and maximum number of repeats explicitly, the bounds operator “{}” may be used, thus “a{2}” is the letter “a” repeated exactly twice, “a{2,4}” represents the letter “a” repeated between 2 and 4 times, and “a{2,}” represents the letter “a” repeated at least twice with no upper limit. Note that there must be no white-space inside the {}, and there is no upper limit on the values of the lower and upper bounds. All repeat expressions refer to the shortest possible previous sub-expression: a single character; a character set, or a sub-expression grouped with “()” for example.

Examples:

“ba*” will match all of “b”, “ba”, “baaa” etc.

“ba+” will match “ba” or “baaaa” for example but not “b”.

“ba?” will match “b” or “ba”.

“ba{2,4}” will match “baa”, “baaa” and “baaaa”.

Non-greedy repeats

Non-greedy repeats are possible by appending a ‘?’ after the repeat; a non-greedy repeat is one which will match the shortest possible string.

For example to match html tag pairs one could use something like:

“<\s*tagname[^>]*>(.*?)<\s*/tagname\s*>”

In this case $1 will contain the text between the tag pairs, and will be the shortest possible matching string.

Parenthesis

Parentheses serve two purposes, to group items together into a sub-expression, and to mark what generated the match. For example the expression “(ab)*” would match all of the string “ababab”. All sub matches marked by parenthesis can be back referenced using \N or $N syntax. It is permissible for sub-expressions to match null strings. Sub-expressions are indexed from left to right starting from 1, sub-expression 0 is the whole expression.

Non-Marking Parenthesis

Sometimes you need to group sub-expressions with parenthesis, but don’t want the parenthesis to spit out another marked sub-expression, in this case a non-marking parenthesis (?:expression) can be used. For example the following expression creates no sub-expressions:

“(?:abc)*”

Alternatives

Alternatives occur when the expression can match either one sub-expression or another, each alternative is separated by a “|”. Each alternative is the largest possible previous sub-expression; this is the opposite behaviour from repetition operators.

Examples:

“a(b|c)” could match “ab” or “ac”.

“abc|def” could match “abc” or “def”.

Sets

A set is a set of characters that can match any single character that is a member of the set. Sets are delimited by “[" and "]” and can contain literals, character ranges, character classes, collating elements and equivalence classes. Set declarations that start with “^” contain the compliment of the elements that follow.

Examples:

Character literals:

“[abc]” will match either of “a”, “b”, or “c”.

“[^abc] will match any character other than “a”, “b”, or “c”.

Character ranges:

“[a-z]” will match any character in the range “a” to “z”.

“[^A-Z]” will match any character other than those in the range “A” to “Z”.

Character classes

Character classes are denoted using the syntax “[:classname:]” within a set declaration, for example “[[:space:]]” is the set of all whitespace characters. The available character classes are:

alnum Any alpha numeric character.

alpha Any alphabetical character a-z and A-Z. Other characters may also be included depending upon the locale.

blank Any blank character, either a space or a tab(http://www.xbszgs.com/).

cntrl Any control character.

digit Any digit 0-9.

graph Any graphical character.

lower Any lower case character a-z. Other characters may also be included depending upon the locale.

print Any printable character.

punct Any punctuation character.

space Any whitespace character.

upper Any upper case character A-Z. Other characters may also be included depending upon the locale.

xdigit Any hexadecimal digit character, 0-9, a-f and A-F.

word Any word character – all alphanumeric characters plus the underscore.

unicode Any character whose code is greater than 255, this applies to the wide character traits classes only.

There are some shortcuts that can be used in place of the character classes:

\w in place of [:word:]

\s in place of [:space:]

\d in place of [:digit:]

\l in place of [:lower:]

\u in place of [:upper:]

Collating elements

Collating elements take the general form [.tagname.] inside a set declaration, where tagname is either a single character, or a name of a collating element, for example [[.a.]] is equivalent to [a], and [[.comma.]] is equivalent to [,]. ISAPI_Rewrite supports all the standard POSIX collating element names, and in addition the following digraphs: “ae”, “ch”, “ll”, “ss”, “nj”, “dz”, “lj”, each in lower, upper and title case variations. Multi-character collating elements can result in the set matching more than one character, for example [[.ae.]] would match two characters, but note that [^[.ae.]] would only match one character.

Equivalence classes

Equivalenceclassestakethegeneralform[=tagname=] inside a set declaration, where tagname is either a single character, or a name of a collating element, and matches any character that is a member of the same primary equivalence class as the collating element [.tagname.]. An equivalence class is a set of characters that collate the same, a primary equivalence class is a set of characters whose primary sort key are all the same (for example strings are typically collated by character, then by accent, and then by case; the primary sort key then relates to the character, the secondary to the accentation, and the tertiary to the case). If there is no equivalence class corresponding to tagname, then [=tagname=] is exactly the same as [.tagname.].

To include a literal “-” in a set declaration then: make it the first character after the opening “[" or "[^", the endpoint of a range, a collating element, or precede it with an escape character as in "[\-]“. To include a literal “[" or "]” or “^” in a set then make them the endpoint of a range, a collating element, or precede with an escape character.

Line anchors

An anchor is something that matches the null string at the start(http://www.jiamengku.com/) or end of a line: “^” matches the null string at the start of a line, “$” matches the null string at the end of a line.

Back references

A back reference is a reference to a previous sub-expression that has already been matched, the reference is to what the sub-expression matched, not to the expression itself. A back reference consists of the escape character “\” followed by a digit “1″ to “9″, “\1″ refers to the first sub-expression, “\2″ to the second etc. For example the expression “(.*)\1″ matches any string that is repeated about its mid-point for example “abcabc” or “xyzxyz”. A back reference to a sub-expression that did not participate in any match, matches the null string. In ISAPI_Rewrite all back references are global for entire RewriteRule and corresponding RewriteCond directives. Sub matches are numbered up to down and left to right beginning from the first RewriteCond directive of the corresponding RewriteRule directive, if there is one.

Forward Lookahead Asserts

There are two forms of these; one for positive forward lookahead asserts, and one for negative lookahead asserts:

“(?=abc)” matches zero characters only if they are followed by the expression “abc”.

“(?!abc)” matches zero characters only if they are not followed by the expression “abc”.

Word operators

The following operators are provided for compatibility with the GNU regular expression library.

“\w” matches any single character that is a member of the “word” character class, this is identical to the expression “[[:word:]]”.

“\W” matches any single character that is not a member of the “word” character class, this is identical to the expression “[^[:word:]]”.

“\<” matches the null string at the start of a word.

“\>” matches the null string at the end of the word.

“\b” matches the null string at either the start or the end of a word.

“\B” matches a null string within a word.

Escape operator

The escape character “\” has several meanings.

The escape operator may introduce an operator for example: back references, or a word operator.

The escape operator may make the following character normal, for example “\*” represents a literal “*” rather than the repeat operator.

Single character escape sequences:

The following escape sequences are aliases for single characters:

Escape sequence Character code Meaning

\a 0×07 Bell character.

\t 0×09 Tab character.

\v 0×0B Vertical tab.

\e 0×1B ASCII Escape character.

\0dd 0dd An octal character code, where dd is one or more octal digits.

\xXX 0xXX A hexadecimal character code, where XX is one or more hexadecimal digits.

\x{XX} 0xXX A hexadecimal character code, where XX is one or more hexadecimal digits, optionally a unicode character.

\cZ z-@ An ASCII escape sequence control-Z, where Z is any ASCII character greater than or equal to the character code for ‘@’.

Miscellaneous escape sequences:

The following are provided mostly for perl compatibility, but note that there are some differences in the meanings of \l \L \u and \U:

Escape sequence Meaning

\w Equivalent to [[:word:]].

\W Equivalent to [^[:word:]].

\s Equivalent to [[:space:]].

\S Equivalent to [^[:space:]].

\d Equivalent to [[:digit:]].

\D Equivalent to [^[:digit:]].

\l Equivalent to [[:lower:]].

\L Equivalent to [^[:lower:]].

\u Equivalent to [[:upper:]].

\U Equivalent to [^[:upper:]].

\C Any single character, equivalent to ‘.’.

\X Match any Unicode combining character sequence, for example “a\x 0301″ (a letter a with an acute).

\Q The begin quote operator, everything that follows is treated as a literal character until a \E end quote operator is found.

\E The end quote operator, terminates a sequence begun with \Q.

What gets matched?

The regular expression will match the first possible matching string, if more than one string starting at a given location can match then it matches the longest possible string. In cases where their are multiple possible matches all starting at the same location, and all of the same length, then the match chosen is the one with the longest first sub-expression, if that is the same for two or more matches, then the second sub-expression will be examined and so on. Note that ISAPI_Rewrite uses MATCH algorithm. The result is matched only if the expression matches the whole input sequence. For example:

RewriteCond URL ^/somedir/.* #will match any request to somedir directory and subdirectories, while

RewriteCond URL ^/somedir/ #will match only request to the root of the somedir.

Special note about “pathological” regular expressions

ISAPI_Rewrite uses a very powerful regular expressions engine Regex++ written by Dr. John Maddock. But as any real thing it’s not ideal: There exists some “pathological” expressions which may require exponential time for matching; these all involve nested repetition operators, for example attempting to match the expression “(a*a)*b” against N letter a’s requires time proportional to 2N. These expressions can (almost) always be rewritten in such a way as to avoid the problem, for example “(a*a)*b” could be rewritten as “a*b” which requires only time linearly proportional to N to solve. In the general case, non-nested repeat expressions require time proportional to N2, however if the clauses are mutually exclusive then they can be matched in linear time – this is the case with “a*b”, for each character the matcher will either match an “a” or a “b” or fail, where as with “a*a” the matcher can’t tell which branch to take (the first “a” or the second) and so has to try both.

Boost 1.29.0 Regex++ could detect “pathological” regular expressions and terminate theirs matching. When a rule fails ISAPI_Rewrite sends “500 Internal Server error – Rule Failed” status to a client to indicate configuration error. Also the failed rule is disabled to prevent performance losses

Format string syntax

In format strings, all characters are treated as literals except: “(”, “)”, “$”, “\”, “?”, “:”.

To use any of these as literals you must prefix them with the escape character \

The following special sequences are recognized:

Grouping:

Use the parenthesis characters ( and ) to group sub-expressions within the format string, use \( and \) to represent literal ‘(’ and ‘)’.

Sub-expression expansions:

The following perl like expressions expand to a particular matched sub-expression:

$` Expands to all the text from the end of the previous match to the start of the current match, if there was no previous match in the current operation, then everything from the start of the input string to the start of the match.

$’ Expands to all the text from the end of the match to the end of the input string.

$& Expands to all of the current match.

$0 Expands to all of the current match.

$N Expands to the text that matched sub-expression N.

Conditional expressions:

Conditional expressions allow two different format strings to be selected dependent upon whether a sub-expression participated in the match or not:

?Ntrue_expression:false_expression

Executes true_expression if sub-expression N participated in the match, otherwise executes false_expression.

Example: suppose we search for “(while)|(for)” then the format string “?1WHILE:FOR” would output what matched, but in upper case

Escape sequences:

The following escape sequences are also allowed:

\a The bell character.

\f The form feed character.

\n The newline character.

\r The carriage return character.

\t The tab character.

\v A vertical tab character.

\x A hexadecimal character – for example \x0D.

\x{} A possible unicode hexadecimal character – for example \x{1A0}

\cx The ASCII escape character x, for example \c@ is equivalent to escape-@.

\e The ASCII escape character.

\dd An octal character constant, for example \10

Examples例子

Emulating host-header-based virtual sites on a single site

例如你在两个域名注册www.gongluela.comwww.jiamengku.com,现在你可以创建两个不同的站点而使用单一的物理站点。把以下规则加入到你的httpd.ini 文件

[ISAPI_Rewrite]

#Fix missing slash char on folders

RewriteCond Host: (.*)

RewriteRule ([^.?]+[^.?/]) http\://$1$2/ [I,R]

#Emulate site1

RewriteCond Host: (?:www\.)?site1\.com

RewriteRule (.*) /site1$1 [I,L]

#Emulate site2

RewriteCond Host: (?:www\.)?site2\.com

RewriteRule (.*) /site2$1 [I,L]

现在你可以把你的站点放在/site1 和 /site2 目录中.

或者你可以应用更多的类规则:

[ISAPI_Rewrite]

#Fix missing slash char on folders

RewriteCond Host: (.*)

RewriteRule ([^.?]+[^.?/]) http\://$1$2/ [I,R]

RewriteCond Host: (www\.)?(.+)

RewriteRule (.*) /$2$3

为站点应该命名目录为 /somesite1.com, /somesite2.info, etc.

Using loops (Next flag) to convert request parameters

假如你希望有物理URL如 http://www.myhost.com/foo.asp?a=A&b=B&c=C 使用请求如 http://www.myhost.com/foo.asp/a/A/b/B/c/C 参数数量可以从两个请求之间变化

至少有两个解决办法。你可以简单的为每一可能的参数数量添加一个分隔规则或者你可以使用一个技术说明如下面的例子

ISAPI_Rewrite]

RewriteRule (.*?\.asp)(\?[^/]*)?/([^/]*)/([^/]*)(.*) $1(?2$2&:\?)$3=$4$5 [NS,I]

这个规则将从请求的URL中抽取一个参数追加在请求字符的末尾并且从头重启规则进程。所以它将循环直到所有参数被移动到适当的位置,或者直到超过RepeatLimit

也存在许多这个规则的变种。但使用不同的分隔字符,例如。使用URLS如http://www.myhost.com/foo.asp~a~A~b~B~c~C 可以应中下面的规则:

ISAPI_Rewrite]

RewriteRule (.*?\.asp)(\?[^~]*)?~([^~]*)~([^~]*)(.*) $1(?2$2&:\?)$3=$4$5 [NS,I]

Running servers behind IIS

假如我们有一个内网服务器运行IIS而几个公司服务器运行其他平台,这些服务器不能从INTERNET直接进入,而只能从我们公司的网络进入,有一个简单的例子可以使用代理标记映射其他服务器到IIS命名空间:

[ISAPI_Rewrite]

RewriteProxy /mappoint(.+) http\://sitedomain$1 [I,U]

Moving sites from UNIX to IIS

这个规则可以帮助你把URL从 /~username 改变到 /username 和从 /file.html 改变到 /file.htm. 这个在你仅仅把你的站从UNIX移动到IIS并且保持搜索引擎和其他外部页面对老页面的连接时是有用的

[ISAPI_Rewrite]

#redirecting to update old links

RewriteRule (.*)\.html $1.htm

RewriteRule /~(.*) http\://myserver/$1 [R]

Moving site location

许多网管问这样的问题:他们要重定向所有的请求到一个新的网络服务器,当你需要建立一个更新的站点取代老的的时候经常出现这样的问题,解决方案是用ISAPI_Rewrite 于老服务器中

[ISAPI_Rewrite]

#redirecting to update old links

RewriteRule (.+) http\://newwebserver$1 [R]

Browser-dependent content

Dynamically generated robots.txt

robots.txt是一个搜索引擎用来发现能不能被索引的文件,但是为一个大站创建一个有许多动态内容的这个文件是很复杂的工作,我们可以写一个robots.asp script

现在使用单一规则生成 robots.txt

[ISAPI_Rewrite]

RewriteRule /robots\.txt /robots.asp

Making search engines to index dynamic pages

站点的内容存储在XML文件中,在服务器上有一个/XMLProcess.asp 文件处理XML文件并返回HTML到最终用户,URLS到文档有如下形式

http://www.mysite.com/XMLProcess.asp?xml=/somdir/somedoc.xml

但是许多公共引擎不能索引此类文档,因为URLS包含问号(文档动态生成),

ISAPI_Rewrite可以完全消除这个问题

[ISAPI_Rewrite]

RewriteRule /doc(.*)\.htm /XMLProcess.asp\?xml=$1.xml

现在使用如同http://www.mysite.com/doc/somedir/somedoc.htm的URL进入文档,搜索引擎将不知道不是somedoc.htm 文件并且内容是动态生成的

Negative expressions (NOT

有时当模式不匹配你需要应用规则,这种情况下你可以使用在规则表达式中称为Forward Lookahead Asserts

例如你需要不使用IE把所有用户移动到别的地点

[ISAPI_Rewrite]

# Redirect all non Internet Explorer users

# to another location

RewriteCond User-Agent: (?!.*MSIE).*

RewriteRule (.*) /nonie$1

Dynamic authentification

例如我们在站点上有一些成员域,我们在这个域上需要密码保护文件而我们不喜欢用BUILT-IN服务器安全,这个情况下可以建立一个ASP脚本(称为proxy.asp),这个脚本将代理所有请求到成员域并且检查请求允许,这里有一个简单的模板你可以放进你自己的授权代码

现在我们要通过配置 ISAPI_Rewrite 通过这个页面代理请求:

[ISAPI_Rewrite]

# Proxy all requests through proxy.asp

RewriteRule /members(.+) /proxy.asp\?http\://mysite.com/members$1

保护图片 防止盗链
Blocking inline-images (stop hot linking

假设我们在http://www.mysite.com/下有些页面调用一些GIF、jpg、png图片,不允许别人盗链引用到他们自己的页面上,因为这样大大增加了服务器流量。
当然我们不能100%保护图片,但我们至少可以在得到浏览器发出的HTTP Referer header的地方限制这种情况,因为这个可以判断是否我们自己的站点调用了我们自己的图片。

[ISAPI_Rewrite]

RewriteCond Host: (.+)

RewriteCond Referer: (?!http://\1.*).*

RewriteRule .*\.(?:gif|jpg|png) /block.gif [I,O]

注:ISAPI_Rewrite分精简(Lite)和完全(Full)版.精简版不支持对每个虚拟主机站点进行重写,只能进行全局处理.不过对于有服务器的朋友,精简版也就够啦.精简版下载地址:http://www.helicontech.com/download/,就是那Lite Version (free)啦。

posted @ 2010-02-04 03:31 小小it 阅读(1236) | 评论 (0)编辑 收藏
一路读心情小记

一路读心情小记

转载:小说一路读:http://www.yiludu.cn/

    想起友人说起,他愿意花很多钱去买回一年的青春。我想我并不愿意过多地徘徊于生涩年华之中。我那些已逝的年青时代,于同龄人而言,显得那般无力与苍白。很多时候,我甚至害怕回忆。害怕面对记忆中那个内心填满颓靡的少女,徘徊在无人的十字路口,试图让自己找一个出发点,却跌跌撞撞了好些时候。那些活在自我世界里的时间,把一个本应芬芳的年华,变得萎靡。让我同样想起了生活在北京的一个文友。她把大把大把的青春全耗在了北京郊区租住的小平房里,每天在昏暗的屋内用纤细的指头敲着一个又一个虚构却唯美的生活故事。文字落幕,回到现实生活中的她却得依靠香烟来麻醉自己。而谁都不知道这样一个女人,其实她最大的梦想仅仅是当一个木匠。就像魔杰座唱的那样所以她说自己也是失败的。因为青春的日子过得不着梦想的边际。或许,没法深入到文海中央只能徘徊于潜水湾的所谓的文人们,就只能打着爱好写作的旗号招摇。而在旁人的眼中,这些人其实是疯子。当然,这疯子,也包括我。否则,收录文学怎么会在看了“不繁华的旅途是孤寂且无聊的”这样一句话后,便很不信邪的又给自己制造了一个理想。将来,我要拉着我的王子,背着画板和笔记本去荒芜人烟的燎原跋涉,去幽静古老的小镇徒步,而小镇的街头有流浪歌手在唱着苏打绿的小情歌……
  
  正所谓的理想,应该也就是想想罢了。回到现实生活当中,因受台风的影响,感觉这个城市今年的秋天来得有点早。

posted @ 2008-10-12 04:04 小小it 阅读(133) | 评论 (0)编辑 收藏
两只小羊一点收录文学

两只小羊一点收录文学

转载:收录文学http://www.sluwx.cn/

乡政府响应上级号召搞对口扶贫,党委秘书艾妮左想右想花一百元买了两只小山羊。两只小山羊一公一母,毛茸茸的。艾妮把两只小山羊拴在一条绳上,牵到了包扶的李老汉家。

  李老汉用一种怪怪的眼光看了看爱妮,以为他是用UUSee网络电视呢?无声的接过两只小羊。李老汉并不老,只是胡子长了些相貌老了些,人其实才五十出头。李老汉从来对乡政府的扶贫工作就不配合,但绝不反抗。比方早些年政府号召大家种药,李老汉硬是不种。乡政府工作人员亲自给他种上,李老汉不管不问,后来地荒的成了乱坟冈。再比方说,乡政府号召大家搞袋料香菇,他把柴禾弄好放在院子里,就是不粉碎。不粉碎就装不成袋料,装不成袋料他的任务就完不成。结果政府就免费给他粉碎,并装上了袋。可再来检查时,李老汉的袋料还是原样----李老汉把袋料蒸过了,但就是不点菌。类似这样的事发生在李老汉身上的还有几起。乡政府总结了,李老汉的行为类似于印度独立时的甘地,搞的是不合作运动。

  爱妮包扶李老汉,收录文学还是真动了脑筋的。李老汉总不至于把两只小羊放在圈里活活饿死吧!

  其实李老汉还有几只羊,可就是繁殖不起来。爱妮送李老汉两只羊,这次他没有向以前那样不合作。把两只小羊侍弄的精神焕发,膘肥体壮,子孙成群。李老汉想,这群羊是我的了,我风里来雨里去的,如果爱妮来要羊,就把两只长大了的羊给她。可是,没有过几天,他的想法就发生了变化。为什么给她两只羊?羊是我喂大的还她两只小羊就不错了。可是又过了几天,他的想法又发生了变化,为什么还他两只小羊,他的两只小羊不是我喂,早就死了。

  乡政府离城远,还翻山。艾妮在一次出差时车翻人亡。

  艾妮一死,李老汉开始还有点伤悲。可不久他就高兴起来了一路读着一部小说。爱妮一死,就不会要羊了。

  艾妮的丈夫在一个阳光明媚的早上来到了老李的家。此时的李老汉今非昔比,羊群里的已经一百多头了。艾妮的丈夫递给李老汉一只香烟:“当年爱妮送给你的两只羊,是她自己花钱买的,我想看看那两只小羊……”

  李老汉抽着艾妮丈夫发的黄金叶,拿眼斜瞅着艾妮的丈夫说:“你家艾妮送过我两只羊吗?”

  李老汉干脆脖子一歪:“想要我的羊?没门!就是掏钱也不卖给你!”

  李老汉放出了狗,艾妮的丈夫撒腿就跑,可狗的速度好像比他更快,他只好加快速度……

  后来,乡书记对李老汉说,艾妮的丈夫是来给你的羊圈消毒的,你怎么放狗咬人呢?

posted @ 2008-10-12 04:04 小小it 阅读(158) | 评论 (0)编辑 收藏
国内博客营销是如何的

本来这篇准备写几个博客营销做的比较好的案例,不过欣欣提醒我说除了广告商之外,部分博客的不认真对待是更主要的问题,因此我这里从参与话题广告的博客的角度再谈一谈自己的一些看法。

       在我所见的话题广告文章中,的确有部分用户只是敷衍了事,比如把广告的相关介绍抄上,然后随便写两句无关痛痒的评价了事。我在上一篇文章中强调广告主应该努力去与博客交流与对话,不过前提是建立在博客认真了解并使用相关产品,表达自己独到的见解与观点之后。只有这样,广告主与博客之间的交流与对话才有产生的条件。那怎么成为一个合格的参与话题广告的博客,个人觉得应该注意以下几点:

1、选择自己感兴趣的广告。不用接受一个自己毫不了解的广告然后无病呻吟一番,那样不但你写着不舒服,让你的读者看着也不舒服。

2、认真了解与使用产品。至少你应该看看产品的 FAQ,帮助文档,了解该产品到底有些什么功能与特点,然后试用每一项功能。因为只有这样,你的评论才是有价值的。

3、写文章之前先用搜索看看其他人怎么说。当然这并不是要求每一个博客都有独到的见解,不过当你尽可能多的了解其他人的评论,对自己的评论质量也是有帮助的。

4、按照广告要求完成文章。其实这一点是很多博客忽视的,比如加相关的申明图片和链接,达到字数要求等等,而最终导致文章得不到通过。永远记住,你参与的是一场商业活动,既然参与,你就得遵守游戏规则。

       博客与广告商应该做的我都说到了,那让我们再来看看夹在中间的 Feedsky 做得怎样。前段时间 Feedsky 对所有参与话题广告的博客进行了重新定价并开始收取 50% 的手续费,很多定价降低的博客表达了强烈的不满,特别是那些数据很高,唯独在 Feedsky 中订阅数很少的博客影响最大。

       我在前面提到广告商不要关心博客营销中的点击数据,而要重视与博客的交流与对话。从另一方面讲,博客的各项数据不应该成为对博客定价的唯一标准。广告商需要的是一个典型的用户,有见解的用户,能提供有价值意见的用户,而对产品的传播是次要的。而 Feedsky 应该将博客在每次参与话题广告中的表现加入到定价的考虑因素之内,而且权重要高才行。简单点说,就是写得好的,不管博客的其他数据怎样,定价会越来越高;写得差的,即便博客其他数据高,定价也会调低。而 Feedsky 已经投放了不少的话题广告,相信在这一点上也是有条件做到的。

       我始终都是看好话题广告的,不过这需要在这条关系链上的各方共同完善,哪一个环节出了问题影响都会很大。当然以上不管对广告商、博客还是 Feedsky 提出的意见都是个人不成熟的看法,如有不妥之处,还请大家多多指证。

转载:UUSee下载http://www.uusee5.org.cn/

posted @ 2008-10-12 04:03 小小it 阅读(1040) | 评论 (0)编辑 收藏
魔杰座和玫瑰的年华

魔杰座和玫瑰的年华

当少年站在河边,魔杰座河水仿佛流逝的时光。而他看见了一路读http://www.yiludu.cn/)的影子,它们不断被冲刷和更改,直至变成一首首精致的诗风干在岸上潮湿的季雨里。

  当少女站在香樟树下,夏天仿佛她的恋人。而她看见了未来的影子,它们在斑驳的树荫下一直蔓延,直至消散在那渐远的单车和白色的衬衣里。

  对于每一个我所喜欢的歌手,他们的歌都会在我的脑海里形成一种幻觉。水木年华给我的幻觉便是这样的一个男孩和女孩的组合。他和她构成了我们的象征,他们是一幅画,一幅清晰素描着我们青春那水中与树下的往事的图画,让所有人有所念亦有所伤。而在此后不断的深入里,水与木这两种不同的元素便紧紧地在意识里结合,从未有过半点的分离。

  水木年华的歌总是带着很强的画面感,属于干净淳朴的那种,于是所有的歌便成了一个个短小而丰富的故事,短小的是篇幅,丰富的却不仅仅只是一个过程,更有这个过程里的情感。最早接触他们的一首歌是《爱春秋》——“我摘一朵带着露水的玫瑰花/要送给我最爱的她”。这种信手拈来的唯美绝非一个不具备诗人气质的艺术家所能达到。在这里,我更愿意把玫瑰理解成青春的心事,娇嫩而高贵,只配为心爱之人所拥有。正如他们之前的《一生有你》——“多少人曾爱慕你年轻时的容颜,可知谁愿承受岁月无情的变迁”。在那年,水木年华凭借这首歌完美地将叶芝的诗用流行元素加以诠释,也因此唤醒了多数青年内心卡徒酒吧http://www.katu98.cn/)的旧梦。

来源:魔杰座-周杰伦新专辑魔杰座 http://www.imfeng.com/post/mojiezuo.html

posted @ 2008-09-27 03:14 小小it 阅读(135) | 评论 (0)编辑 收藏
有助于你编程而立即要做的10件事

中午看到这篇文章,觉得道理的,推荐给大家看看。
很多IT人,都在忙碌着搞代码,却不知道,除了单纯的写代码,还要关注很多相关的东西。不然,你的代码,本身就是一个问题。
转载自:http://www.yiludu.cn/ 

1.升级单元测试

你的编程没有测试?你应当随时进行测试,即TATFT ( testing all the fucking time )。当然你应当选择比仅是单元测试更好的方式。RSpec和Shoulda是两个可以选来使用的工具。

2.试用TDD

既然你在测试,那你就应当记录下这些测试。不要记录代码并用后来的测试覆盖它,而应当是方法的记录。TDD ( Test Drive Development ) 可以使你编出更好的代码,TATFT最重要的基础就是 TDD。进行TATFT并不难,首先你写下你所能做的最简单的测试并运行,观察测试的失败,然后写出执行语句以便使测试通过,不停地重复这样的过程就可以了。

3.自动化部署

自动化是你最好的朋友,想要实现自动Capistrano是相当好用的工具。在你配置部署好你的项目后,第一个要装的东西就应当是Capistrano。从第一天起就可以自动化部署将会节约你大量的时间。

4.安装 SCM

安装 SCM并学习使用它,这样做的好处是可以使那些超重的库中的代码不再那么冗繁,目前有大量的工具可以选择,我每天使用的是Git。Git是一款很特别的分布式SCM,即DSCM。DSCM是很有前景的,它可以同有其他库的用户们协同工作。

5.审查持续集成

现在我们已经测试了代码并将其安全的存放在库内。比起不停地测试,什么是更好的方式?自动测试是个不错的选择。很感激有cruisecontrol.rb的存在,这个应用工具自动运行了那些琐碎的测试。

6.了解你的代码

写代码是一回事,但是更重要的事情是了解代码。可以用四种自动化工具来帮助你了解代码:flog、 tarantula、rcov 和saikuro。这些工具分别有其独到之处,我很乐意向你介绍它们。
Flog,可以按字母排列的顺序来记录复杂的结果。

Tarantula,根据相关性原则和一些灵活的创意设计的。它所做的是spider 你的Rail应用以便去搜索坏链接。这真是令人得到解脱,使我受益匪浅。

Rcov,这是一个在Ruby界相当受欢迎的工具。它是一个C0范围工具,换言之,它精确的测定出你的代码中哪些部分在被测试,哪些部分没被测试。唯一的缺陷是它不能测试诸如:“if condition_a && condition_b || condition_c”. 这样的语句。

Saikuro,可以测量出你代码环的复杂性,即可以计算出你代码branche 和path的数量。当然你代码的复杂性越低,它运行的越容易。

7.升级你的Fixtures

Fixtures 是看起来很有创意的事物之一,但有诸多的弊端。对于Fixtures,只有极少的替代,我选择使用Rails Scenarios,原因是它在测试中工作起来像Fixtures一样,但是允许我做比YAML更好的DSL。我也可以在一个文件内指定多重的 Scenarios,这将使事情变得更有组织性。

8.收集分析对象

在Rail平台上搭建新的系统。每周都会有新的监控工具出现,这样我们有很多的选择,在这里我介绍我已经使用过的工具:HopToad 和 TuneUp。

HopToad对于异常报文有不错的能力,它可收集间断应用并用简便的方式显示收集结果。还有,这是一个免费软件~

TuneUp用另外一种方式获取数据,它计算每一处分别花费多长时间去组合自身。你的页面是不是花费了很长时间去组建?但你又不知道是因为什么缘故花费了这么久,使用TuneUp来查一下吧,你会发现一些你以前从未想到过的事情。另外,TuneUp是一款开源软件,你可以登陆进他们的托管服务分享你的结果。

9.阅读其他人的代码

你想成为更优秀的程序员吗?那一定要多读代码,这包括好的、坏的、你自己的、其他人的代码等。阅读代码是一项很多程序员都不重视的技能,但其实能够快速阅读他人的代码并理解其中的含义是一种极其需要的能力。

10.写博客的习惯

就我个人来说,当我阅读博客的时候我可以找到所有的信息。大部分时候我是会撰写跟技术相关的要点,偶尔讨论点轻松的话题。写博客是出于分享的原因,你可以写下能够帮你节约时间的技术技巧,也可以是一些你想要记住的技术难点和命令之类。

posted @ 2008-09-24 23:58 小小it 阅读(148) | 评论 (0)编辑 收藏
有关BIOS的二十四个解答

文章来源:一路读 www.yiludu.cn

1. 什么是可擦写(Flash)的BIOS ? 

BIOS的发音是"bye-ose," 是基本输入/输出系统的缩写。BIOS是机器的硬件自带的、

在电脑没有访问磁盘上程序之前决定机器基本功能的软件系统。就PC而言,BIOS 包含了

控制键盘、显示屏幕,磁盘驱动器,串行通讯设备和很多其它功能的代码。

一般地,BIOS存储在主板上的ROM 芯片(所以通常叫 ROM BIOS),这确保了BIOS的

一般可用性和不会因为磁盘的问题而损坏。它也确保了机器能够启动。因为RAM 比ROM的

速度快, 很多的机器制造商设计的BIOS在机器启动时能从ROM被拷贝到RAM去运行,这项技

术也叫shadowing。

当今,很多PC的主板都有flash BIOS, 意味这BIOS 是存储在可重新改写的flash 内

存芯片, 如果需要的话改写毫不费力。

PC机的BIOS是标准化的,所有的PC在BIOS这一级别上是类似的(尽管因为生产商不同

,BIOS的版本非常多)。而常说DOS功能是通过磁盘上的软件实现的, 所以不用更换BIOS

,你可以很简单地升级你的DOS系统。

能够处理Plug-and-Play (PnP) 设备的BIOS叫 PnP BIOS, 或PnP-aware BIOS。一般

而言,flash BIOS都是PnP BIOS。


2. 怎么确定我的系统里是可擦写的BIOS(Flash Bios chip) ? 

很简单,把机箱打开,揭开BIOS 芯片上(一般是28 或 32脚的双列直插式集成电路,

上面是贴的是印有BIOS生产商的封条)的封条,可以看到芯片的型号。对照下面,你就可

以确定系统里是否包含可擦写的BIOS。

Am29F010: AMD 5 伏的 flash ROM 
Am28F010, Am28F010A: AMD 12 伏的 flash ROM 
AT28C010, AT28MC010, AT29C010, AT29LC010, AT29MC010: Atmel 5 伏的 flash ROM 
CAT28F010V5, CAT28F010V5I: Catalyst 5 伏的 flash ROM 
CAT28F010, CAT28F010I: Catalyst 12 伏的 flash ROM 
28F010: Fujitsu(富士通) 12 伏的 flash ROM 或 ISSI 12 伏的 flash ROM 
HN58C1000: Hitachi(东芝) 5 伏的 flash ROM 
HN28F101, HN29C010, HN29C010B, HN58C1001, HN58V1001: 
Hitachi (东芝)12 伏的 flash ROM 
A28F010, 28F001BX-B, 28F001BX-T, 28F010: Intel 12 伏的 flash ROM 
M5M28F101FP, M5M28F101P, M5M28F101RV, M5M28F101VP: 
Mitsubishi 12 伏的 flash ROM 
MX28F1000: MXIC 12 伏的 flash ROM 
MSM28F101: OKI 12 伏的 flash ROM 
KM29C010: Samsung 5 伏的 flash ROM 
DQ28C010, DYM28C010, DQM28C010A: SEEQ 5 伏的 flash ROM 
DQ47F010, DQ48F010: SEEQ 12 伏的 flash ROM 
M28F010, M28F1001: SGS-Thomson 12 伏的 flash ROM 
28EE011, 29EE010: SST 5 伏的 flash ROM 
PH29EE010: SST ROM Chip - 可擦写(Flashable) 
TMS29F010: Texas-Instr. 5 伏的 flash ROM 
TMS28F010: Texas-Instr. 12 伏的 flash ROM 
W29EE011: Winbond 5 伏的 flash ROM 
W27F010: Winbond 12 伏的 flash ROM 
X28C010, X28C010I, XM28C010, XM28C010I: XICOR 5 伏的 flash ROM 
29LVxxx - 3V Flash memory (较少见) 
28Cxxx - EEPROM, 和Flash memory 相似
27Cxxx - With window. EPROM: 只读, 一次性写入。

其它型号开头的字母不是28或29的芯片可能就是普通的ROM。
3. 我需要升级BIOS吗 ? 

升级BIOS有很多的理由,其中有重要的,也有不太重要的。就我们PC用户而言,最重

要的原因就是和Windows 有关。如果在一台机器上的BIOS过时了,Windows 的配置就不会

达到最佳状态。

现在市场上出售的硬盘容量都会远大于528M,为了支持这些大容量硬盘,BIOS必须支

持LBA (Logical Block Addressing,逻辑块寻址) 的技术。如果你的 BIOS 不支持,而

你又想使用硬盘的全部容量,就必须使用能“欺骗”BIOS的专用软件。而这些专用软件的

使用会让Windows访问硬盘时采用兼容模式,造成性能的降低。

为了让Windows能充分支持Plug 'n Play 的设备,你也需要 PnP-BIOS。这也是升级

BIOS的重要原因。

第三个重要原因就是升级BIOS可以解决以前BIOS的错误(bugs)。

其它不太重要的原因包括:BIOS有新的设置,从光驱启动机器,从SCSI设备上启动等

等。

4. 从哪儿下载Flash BIOSs ? 

a、各大主板厂商的BIOS更新数据相关网址 

1)华硕ASUShttp://www.asus.com.tw 

486电脑BIOS升级程序网址( http://www.asus.com.tw/Products/Bios/bios-486.html ;


Pentium电脑BIOS升级程序网址( http://www.asus.com.tw/Products/Bios/bios-

p54.html )
Pentium pro和PentiumⅡ电脑BIOS升级程序网址( 

http://www.asus.com.tw/Products/Bios/bios-p6.html)

2)技嘉GIGABYTEhttp://www.giga-byte.com ;)

Beta BIOS系列http://www.giga-byte.com/gigabyte-web/sw_bata.htm)
AGP BIOS系列( http://www.giga-byte.com/gigabyte-web/swagp.htm ;)
Intel 440GX 系列( http://www.giga-byte.com/gigabyte-web/swgx.htm ;)
Intel 440BX 系列( http://www.giga-byte.com/gigabyte-web/swbx.htm ;)
Intel 440ZX 系列( http://www.giga-byte.com/gigabyte-web/swzx.htm ;)
Intel 440EX 系列( http://www.giga-byte.com/gigabyte-web/swex.htm ;)
Intel 440LX 系列( http://www.giga-byte.com/gigabyte-web/swlx1.htm ;)
Intel 430TX 系列( http://www.giga-byte.com/gigabyte-web/swtx.htm ;)
VIA 系列( http://www.giga-byte.com/gigabyte-web/swvia.htm ;)
ALi 系列( http://www.giga-byte.com/gigabyte-web/swali.htm ;)
SiS 系列( http://www.giga-byte.com/gigabyte-web/swsis.htm ;)
其他旧型号主板( http://www.giga-byte.com/gigabyte-web/swother.htm ;)

3)微星MSIhttp://www.ecs.com.tw)

MS-41系列主板( http://www.msi.com.tw/chinese/bios/486.htm ;)
MS-51系列主板( http://www.msi.com.tw/chinese/bios/51.htm ;)
MS-61系列主板( http://www.msi.com.tw/chinese/bios/61.htm ;)

4)升技 [ABIT] http://www.abit.com.tw/html/cload.htm) 

5)联尚 [AIR] http://www.airwebs.com/download.html) 

6)浩鑫 [SHUTTLE] ( ftp://ftp.spacewalker.com/bios/) 

7)建基 [AOPEN] http://w3.aopen.com.tw/tech/biosdrv.htm) 

8)映泰 [BIOSTAR] http://192.72.144.27/service.htm) 

9)艾崴 [IWILL] http://www.iwill.com.tw/csupport/index_bios.html) 

10)捷邦 [J-BOND] http://www.jbond.com/companyf.html) 

11)迈科 [MICRONICS] http://www.micronics.com/) 

12)梅捷 [SOYO] http://www.soyo.com.tw/chinese/product/biosup.htm) 

13)丽台 [SUPERMICRO] http://www.supermicro.com/download/dlframe.htm) 

14)磐英 [EPOX] http://www.epox.com/support/bios.html) 

15)忆华 [EFA] http://www.efa.com.tw/elec/efa/c-service.html) 

16)友通 [DFI ] http://components.dfiweb.com/support/downloads.asp) 

17)精英 [ECS] http://www.ecs.com.tw/ecs/ecs/spp-m.htm) 

18)大众 [LEO] http://www.fic.com.tw/techsupport/bios/index.htm) 

19)迈肯 [MYCOMP] http://www.mycomp-tmc.com/BIOS.htm) 

20)福扬 [FYI] http://www.fyi.com.tw/download-c.htm) 

21)中凌 [ATREND] http://www.atrend.com.tw/download/frame-bios.html) 

22)海洋 [OCTEK] http://www.oceanhk.com/drivers/others/biso) 

23)宏基 [ACER] http://www.aopenamerica.com/tech/mainbd/default.htm) 

24)联想 [QDI] http://www.qdigrp.com/driver.htm) 

25)宏鹰 [PCCHIPS] http://www.pcchips.com.tw/BIOS.html) 

26)捷波 [JETBOARD] http://www.jetway.com.tw/evisn/jwd/jwd01/index.html) 

27)联讯 [DATAEXPERT] http://www.dataexpert.com.tw/service/) 

28)皇朝 ( http://megastar.kamtronic.com  

29)承启( http://www.chintech.com.tw  

30)钻石( http://www.dfiweb.com  

31)致福( http://www.gvc.com.tw 

32)英特尔( http://www.intel.com  

33)华基( http://www.zida.com  

34)麒麟( http://www.pcchips.com  

b、主要 BIOS 生产公司网站

Award BIOS 公司 (美国) http://www.award.com/)
Award BIOS 公司 (台湾) http://www.award.com.tw/)
Award 技术咨询中心 (只限email,mailto:support@unicore.com )
AMI BIOS 公司 http://www.amibios.com/)
Microid Research http://www.mrbios.com/)
Micro Firmware , 开发并发行Phoenix BIOS及升级BIOS数据文件 

http://www.firmware.com/)
Phoenix BIOS 公司 http://www.phoenix.com/)
Unicore (提供BIOS升级数据文件 ,只限Award BIOS。 http://www.unicore.com/
5. 主板的名称不知道怎么办 ? 

如果你的BIOS是Award BIOS, 你可以向award888@ms1.hinet.net或

support@unicore.com发封邮件,里面附上你的BIOS的1) 版本号 2) 系列号(part 

number) 3) 发布日期。award的系列号包含了它所支持芯片的信息。这个信息出现在机器

启动后,屏幕显示正在进行内存检验的时刻。这时按PAUSE键,就可以读系列号,BIOS的

日期和版本了。不过,有的主板生产商把这个信息去除了,你只有向他们查询。

6. 如何升级我的BIOS ? 

升级BIOS需要1) BIOS的读写程序( flasher) 和 2) BIOS的最新数据文件。读写程

序将把这个数据文件写入到BIOS的芯片里。下面是不同BIOS的升级命令:

awdflash xxx.bin (对 Award BIOSs)
amiflash xxx.bin (对 AMI BIOSs)
mrflash xxx.bin (对 MRBIOSs)

注意:

a、 在读写器要求你存储当前的BIOS时,选“YES”,这样在升级BIOS时如果出现问

题了还可以恢复原来的BIOS。

b、有些主板生产商提供自己的升级软件程序(一般不能拷贝),注意在升级前在

BIOS里把“System BIOS Cacheable”的选项设为NO。

c、千万不要使用错误的BIOS数据文件,否则你的机器就不能启动了。

7. 升级Award BIOS时出现提示“Insufficient memory (内存不足)”怎么办?

解决方法有:

a. 在CMOS 的“Chipset Features”的设置里, Disable掉“ Video Bios 

Cacheable”。

b. 按 Esc,F10,存储退出。

c. 重启动,在出现"Windows Starting" 时按Ctrl+F5,这可以不加载Drvspace.bin,

省了大约108K 的内存空间。

d. 开始升级BIOS ,重启动。

e. 重进入CMOS的“Chipset Features”的设置里, Enable“ Video Bios 

Cacheable”。按 Esc,F10,存储退出。

9. 如何恢复损坏的BIOS ? 

方案一:利用根区BIOS(Boot-block BIOS)

当今大多数基于AWARD BIOS的主板里都有根区BIOS,这是个在升级BIOS时不会被覆盖

的一小部分BIOS。它只支持很基本的硬件如:软盘等。如果你的显卡是PCI的,在BIOS被

损坏后你的屏幕将是漆黑一片,因为根区BIOS只支持ISA 的显卡。

根区BIOS 可以执行可引导软盘上的AUTOEXEC.BAT。这样我们可以把Award flasher 

和正确的 BIOS 文件(*.bin )放在软盘上并在AUTOEXEC.BAT 里加入BIOS升级命令。

方案二: 得到新的BIOS芯片

a、联系主板生产商,看是否他们能提供BIOS芯片。有些生产商是免费提供的。

b、联系卖相关芯片的电脑公司,如Unicore Softwarehttp://www.unicore.com/) 

或 Midco Computers (以前的 RC Systems公司http://www.midcocomputers.com/)。下

面是Midco的一段广告: 
"我们向公众提供BIOS的更换芯片。请访问 www.midcocomputers.com ,我们将乐意帮助

你。 "

方案三:热交换

注意:本人不对本方法导致的任何问题负责,风险自负。

用另外一块可以正常使用的BIOS芯片来更换当前损坏的芯片,而正常BIOS芯片的主板

必须尽量和损坏的一致。在正常芯片的机器上先把“System BIOS cacheable”设为

ENABLE,进入DOS后,把正常的芯片拔掉,用损坏的芯片来替代,然后正确地升级BIOS即

可。

注意:建议使用MRBIOS的读写程序,他们的产品名声最好。可以访问

ftp://ftp.mrbios.com找相关软件。

方案四: (适用于INTEL主板) 

把Flash Recovery 的跳线放在recovery mode的位置,把可启动的BIOS升级软盘放入

,启动机器。
因为没被覆盖的根区BIOS不支持PCI的显卡,这时屏幕上什么都没有。你可以通过鸣笛声

和软盘LED来观察。当机器响了一下,接着软盘的LED亮时,系统就正在升级你的BIOS。当

软盘的LED灯灭时,说明恢复已完成,关机。把跳线恢复到缺省位置,重启动继续恢复。

10. 如果我的BIOS有问题而目前又找不到升级文件怎么办?

可以试着找到主板型号不同但BIOS生产商相同的BIOS。下面的文字是从新闻组里摘录

的:

“最近我在本人的Triton 芯片组的主板上进行了一系列的BIOS的测试,是为了检验

一种主板能否使用不同主板生产商提供的BIOS。结论是:大多数是可以的。所以,即使是

不同生产商提供的BIOS也可以一定限度地通用。

实验内容:我想升级我的Amptron PM7700B 主板的BIOS,版本号从v4.50PG BIOS 到

v4.51PG,希望能纠正电源管理方面的错误(显示器随机空白,硬盘老处于“睡眠”状态

)。我的机器配置是:Maxtor 1.6GB 硬盘(IDE0的master模式), Aztech的 4x CD-ROM 

(IDE1的Slave模式), SB16声卡, AMD 5x86-75 超频到90MHz (老式的SSA-5 版本). 

实验里所使用的BIOS有:ASUS(华硕)460FX主板使用的Award v4.51PG,FIC的PT-

2003 430FX主板使用的Award v4.50PG,ECS TR5510主板使用的 Award v4.51PG,还有

Shuttle HOT-541 主板使用的Award v4.51PG。

请注意,如果主板生产商提供的BIOS升级程序和其他的不同(比如华硕),它就不能

被用来升级别的主板的BIOS。所以,除了华硕的主板,AWDFLASH v5.2 都能顺利地升级其

他主板BIOS。

笔者还发现,MR-BIOS的29C010.EXE (请使用和你的主板芯片组相符合的软件)能更

新所有主板的BIOS。ftp://ftp.mrbios.com里你可以找到29C010.EXE 和 28F010.EXE 

,在那里长度大于60k的zip文件里有不少好的东西。

结果:

a、华硕( ASUS )BIOS 工作正常, 但内存只检测到8MB(实际上有16MB),因为内

存的原因, Win95还“发现”了不少新的设备。

b、升级了FIC 430FX BIOS, 机器不能访问软盘(尝试后,系统死机),但硬盘正常

启动和工作。

c、ECS TR5510 BIOS 表现最好,最终我也采用了它。它解决了电源管理的错误,还

解决了以前按SHIFT-F5不能直接进入纯DOS模式的问题。(该问题估计是Amptron的 BIOS

和AMD 5x86 CPU不兼容的缘故)同时,在WinTune96的测试下内存和硬盘的访问速度也增

加了几个MB/S。

d、Shuttle HOT-541 BIOS和ESC的BIOS一样,解决了同样的问题。但在win95下,不

能直接检测到光驱。

结论:

a、所有实验用的BIOS都没有导致永久性的、不可恢复性的错误,90-100% 的功能都

正常(ECS的甚至解决了原Amptron BIOS的问题)。

b、如果你也想尝试这样的作法,请记住一定要使用相同芯片组的BIOS升级文件,输

入/输出(I/O)的芯片也要和你自己的相同。我主板上所使用的I/O 芯片是UM8669 。如

果你的I/O芯片不同,升级后可能会导致串口不工作或更糟的结果。

c、在硬盘里保存一份完好的BIOS文件和升级软件。避免如果软盘不能启动,恢复不

了BIOS的情况。 

d、实验用的BIOS没有一种让我的机器变得彻底毁坏,不过你的运气就不一定这么好

了。

e、一般初学者不要使用不同生产商提供的BIOS,除非

1) 你有EPROM烧录器,写片BIOS芯片对你来说非常容易。
2) 你有同种类型的芯片,能非常熟练地*作“热插拔”技术。
3) 你有冒险的勇气。

11. 在Award或AMI的网站里为何没有我的BIOS的升级文件 ? 

Award 和AMI会为特定的主板生产商提供符合特定主板和芯片组的BIOS升级文件,然

后生产商再利用Award/AMI提供的工具, 对这些BIOS文件作出最后的修改和优化。

也就是说,生产商比Award/AMI更了解他们的主板,能提供更好的BIOS升级。

注意:http://www.award.com.tw/download/bios/里包括了好多主板如ali、cyrix 

、intel、opti、sis 、via的BIOS升级文件。不过你最好先在主板生产商自己的网页里找

升级文件,如果没有的话,才来此处下载。

12. 在哪儿能找到我的BIOS的技术帮助 ? 

在你主板的网站上(如果有的话),有问题也可以向他们发电子邮件。

13. PROM, EPROM, EPROM 这些名词代表什么 ? 

PROM (可编程只读存储器 programmable read-only memory) 是数据只可写入一次的

存储器芯片。一旦数据写入到PROM, 就永久保存。不象PC系统里的内存,PROM在关机时里

面的信息依然保存。

PROM 和 ROM (只读存储器) 的差异是PROM 生产出来后是空白的存储器,而ROM在生

产出来后就已经被写入信息了。要想写入到PROM ,需要特殊的设备--PROM 编程器或PROM 

烧录器。

EPROM (可擦除可编程只读存储器erasable programmable read-only memory)属于特

殊的一种 PROM,内部的信息可以用紫外线来擦除。一旦擦除后,就可以被写入信息。

而EEPROM和PROM类似, 但擦除时需要电而不是紫外线。EEPROM(电擦除可编程只读存

储器 electrically erasable programmable read-only memory)和PROM一样,关机后信

息不会消失,没有RAM快。

一种特殊的EEPROM, 称之为flash EEPROM, 在电脑里可以被重写,不再需要特殊的烧

录器。我们常说的可读写式BIOS的芯片就是有它们构成的。

14. Award Flasher 5.33 有什么新的功能? 

Award BIOS 的二进制数据文件的文件名一般是和BIOS系列号一致的。因为文件名的

类似,用户可能偶然失误使用错误的数据文件。

为了避免这个问题,在新版的 AWDFLASH.EXE version 5.33增加了检测的功能,如果

它发现用户使用的数据文件和主板的型号不符就报警,报警信息是:“The program 

file's part number does not match with your system ”

如果你认为自己不会犯这样的错误,可以用“/Py”PASS掉检测功能:Awdflash 

2Axxxxxx.BIN /Py 

15. 为何在网站里不再有MRBIOS 的软件 ? 

因为他们不再属于共享软件了,需要请ftp://ftp.mrbios.com里找找。最新MRBIOS

的版本是3.42 。

16. 在DEBUG里如何恢复BIOS的出厂值?

a、针对AMI/Award BIOS:

C:\DEBUG (在纯DOS下,不是windows里的DOS窗口)
-O 70 17
-O 71 17
Q

b、针对Phoenix BIOS:

C:\DEBUG (在纯DOS下,不是windows里的DOS窗口)
-O 70 FF
-O 71 17
Q

17. 我的密码忘了,如何破解BIOS里的密码保护? 

a、针对 Award BIOS:

试试下面的密码: AWARD_SW, j262 , HLT, SER, SKY_FOX, BIOSTAR, ALFAROME, 

lkwpeter, 
j256, AWARD?SW, LKWPETER, Syxz, aLLy, 589589, 589721, awkward, CONCAT

也可在网上下载有关的破解程序。

b、针对AMI BIOS:

试试下面的密码:AMI, BIOS, PASSWORD, HEWITT RAND, AMI?SW, AMI_SW, LKWPETER, 

A.M.I.

也可在网上下载有关的破解程序。

18. AMI BIOS 的鸣笛有何含义?

除去8声鸣笛,其他的都会造成机器不能启动:

1 声鸣笛 刷新失败
2 声鸣笛 奇/偶校验错误
3 声鸣笛 基本64K 内存错误
4 声鸣笛 定时器失效
5 声鸣笛 处理器错误
6 声鸣笛 8042 的 A20信号错误
7 声鸣笛 处理器特殊中断错误
8 声鸣笛 显存读/写错误
9 声鸣笛 ROM 校验错误
10 声鸣笛 CMOS 关闭寄存器读/写错误
11 声鸣笛 Cache 内存损坏

19. 如何解决上述的鸣笛错误?

对1 、 2、3 声鸣笛,可以试着重安装内存条,如果错误仍然存在,更换好的内存条



对4、5、7 、10声鸣笛,到经销商处更换主板。

对6声鸣笛,重新安装键盘控制器芯片。如果错误继续,更换该芯片。如果错误继续

,检查和键盘有关的部件,如更换好的键盘,检查主板上是否有键盘保险丝。

对8声鸣笛, 更换显卡或显存。

对9声鸣笛,更换BIOS芯片。

如果没有任何鸣笛,而显示器上漆黑一片,先检查电源,连接主板上的POWER LED到

LED上,如果LED亮,而驱动器有转动的声音就说明电源是好的。

接着,检查主板上有没有松动的部件。松动的处理器,BIOS芯片,晶振或芯片组都能

导致主板不工作。

接着,除了显卡,把所有的插卡都拔掉。这时系统至少能加电并出现显卡信息。然后

,再一次一个地插卡,直到问题出现。

上述方法失效的话,只有到经销商更换主板了。

20. 如何在MRBIOS里插入NCR SCSI BIOS v3.07 或 4.03 ?

其实很简单,不过针对不同版本的mr bios方法也不同。

首先,到Windows95.com 下载'Hex Workshop',它能在二进制状态下编辑文件。插入

SCSI BIOS的原理就是把 mr bios前面没用的空间删除,在附加上NCR 的flash BIOS,然

后存储文件。

尽管mr bios 网站上说它的BIOS大小是92k,可下载后文件长度要大于这个值。用上

述的二进制编辑软件把它前面的空格删除,以保正长度为92k。再将NCR v3.07 的BIOS 追

加上,这样文件长度就是108k (92k + 16k NCR v3.07 ), 也可追加32k的 NCR v4.03,

长度是124k. 


21. 如何对INTEL OEM主板升级它的Intel AMI BIOS? 

比如:想把1.00.xx.CB0H 升级到1.00.xx.CB0。"1.00.xx.CB0H"里的H表示这是INTEL

为其他主板生产商(此处代表VOBIS公司)制造的OEM主板,所以下面的方法也适用于任何

使用AMI BIOS的INTEL OEM主板 ,比如从1.00.xx.BC0R升级到1.00.xx.BC0。

背景资料:

"1.00.xx.CB0"的BIOS是AMI为Intel的主板芯片组特制的(也叫"Advanced-E/V"主板)

,然后主板生产商VOBIS再对它作稍微的修改,称之为"1.00.xx.CB0H"。很可能字母"H"代

表 他们生产PC上标注的"HIGHSCREEN" 。所以,我们可以使用常见的AMI的BIOS来升级它



你可以ftp://download.intel.nl/design/motherbd/ev/里下载"1.00.xx.CB0"的

BIOS版本,版本号为02, 03, 04, 05 和 06 。如果你现在试着用这些BIOS,就会有错误

信息: "the data are corrupt or you are using a wrong BIOS"(数据错误或BIOS文

件有误)。原因就是INTEL提供的BIOS的ID字符串只是1.00.02.CB0,与机器中现有的

1.00.02.CB0H不符,所以升级程序不执行,升级失败。

解决方法:

a. 下载和目前机器里版本号相同的1.00.02.CB0 和最新版本号的1.00.06.CB0。

b. 按照网页"http://developer.intel.com/design/motherbd/genbios.htm";的指令

,创建2张启动盘,一个版本号一个。

c. 在1.00.02.CB0的软盘里,有文件"1002cb0_.bio" 和"1002cb0_.bi1"。用文本编

辑器把里面的"CB0 " (注意CB0后面的空格不能省略) 替换为 "CB0H"。每个文件只有一个

,只能替换一处。

d. 用修改的启动盘引导机器,令人惊奇的是现在机器的BIOS-ID 变成了1.00.02.CB0 

,而不是1.00.02.CB0H。

e. 用另一张启动盘(1.00.06.CB0)引导,并升级成功,当前的BIOS版本是

1.00.06.CB0。

注意:

a. Intel提供的升级软件有保存当前BIOS的功能,应该使用它并创建一启动盘。这样

升级出现问题时,可以利用主板提供的BIOS-recovery跳线,来恢复原来的BIOS。

b. 有可能直接修改06版本号的启动盘,而升级成功。

c. 如果VOBIS不仅往BIOS里添加了他们的公司名,还作了功能性的修改,上述的*作

就有一定的风险。

22. 如何对INTEL OEM主板升级它的Intel Phoenix BIOS ?

a、到INTEL的网站上下载针对该主板的最新的BIOS,把它放在一张可启动的软盘里。

b、进入BIOS, enable选项'Check for User Flash ROMS' ,并关机。

c、把主板上的BIOS跳线设置为RECOVERY模式。将启动盘放入引导机器,它将自动进

入恢复程序,并加载软盘里最新的BIOS。

d、关机,恢复BIOS跳线到正常模式,开机即可。

23. 如何更换Award BIOS启动时的EPA logo 画面?

a、首先,要有BIOS数据文件( *.BIN )用来先编辑再写入BIOS里,要确认该文件和

你主板是对应的。

b、http://members.aol.com/mrosenb257/下载BMPtoEPA, BMPtoEPA是个自由软件

,运行于Windows9x下,能把BMP 文件转换为EPA 。

c、有了需要的EPA 文件后,要找到专用软件CBROM 或 CBROM6,它能把EPA文件放在

*.BIN文件里,格式为:cbrom *.BIN /EPA savedEPA.epa (*.BIN 是BIOS数据文件,

savedEPA.epa是需要的EPA文件)。另外,CBROM 适用于Award V4.51 ,而CBROM6适用于

Award V6.0 。

d、现在就可以升级你的BIOS了,成功后EPA logo画面就变成你需要的了。

24. 如何在windows里避免“IRQ Routing Table errors”?

如果你主板使用的是VIA芯片组,就需要安装最新的VIA IRQ Routing的补丁软件

http://www.via.com.tw/)。

如果还不行,就在BIOS里disable掉 'OnChip USB'。如果成功的话,就应和主板生产

商联系获得最新的BIOS。(比如,Shuttle HOT591P 主板就有这种情况,升级BIOS后就没

问题了。)

posted @ 2008-09-24 23:53 小小it 阅读(260) | 评论 (0)编辑 收藏
一路读着魔杰座

一路读魔杰座

 课间的时候,我喜欢跑去找她们,我们常常站在走廊上,面向栏杆,看天,看很灿烂的天,用很安静的表情,我们不用理会那些无聊的人,若凡有时会很有耐性地和那些无聊的人说话,可是我和叶子从来不会,我记得我和叶子骑单车从同学身边经过的时候,身后传来的是“看,看,就是那两个女的,特别特别高傲”,我和叶子相视一笑,我们只能很抱歉地在心里想“我们和你们不是一个世界的人”。若凡偶尔会责备我们,因为若凡一直是那么乖的孩子,可是这么乖的孩子也依然没有其他的朋友。我总想带着若凡一起和我们叛逆,若凡总要很无奈地说:小苏,你不懂!你能理解魔杰座是什么意思嘛?

  放假的时候,我每天都要和若凡打一个小时的电话,即使聊得无话可说,我们依然抓着话筒不放,可能迷恋的是对方的声音。我们经常一起叹气,然后就像记流水账似的念叨一天干了什么——几点起床,吃了什么,看了什么电视,上网遇见了谁,几点给猫喂食,几点带狗出去溜达,几点写毛笔字,几点睡觉——那时的日子就是这么过来的,特无聊,可是却不觉荒唐。

       若凡喜欢问我:小苏,你相信爱情吗?

  我喜欢回答若凡的问题,一切的问题:不是相信,是喜欢爱情,就像喜欢张爱玲。

来源:魔杰座-周杰伦新专辑魔杰座 http://www.imfeng.com/post/mojiezuo.html

posted @ 2008-09-24 23:46 小小it 阅读(60) | 评论 (0)编辑 收藏
程序员创业失败的16个原因

   来源:一路读  http://www.yiludu.cn/

    1)   没有明确的生活目标。没有奋斗的中心目标或明确的努力主向,就没有成功的希望。

  2)   没有非同寻常的雄心抱负。

  如果对凡事漠不关心,不想在人生中求发展,不愿付出代价,那么这样的人也将成功无望。

  3)   缺乏自律。

  纪律来自自我控制,这意味着人必须控制所有的消极思想,只能先控制自己,才能控制环境。自制是人类面对的最艰巨任务,如果无法战胜自我,就会被自我征服。

  4)   拖拉。

  这是失败最普遍的原因之一,拖拉“老人”存在于每个人心中的阴暗角落,正是因为一直都在等待“适当时机”,才开始做那些值得做的事情,其实时机永远不会“适当”。

  5)   缺乏毅力。

  不管做什么,大部份人开始时都满怀信心,但却不能善始善终。大部份人一遇到失败就容易放弃。毅力是不可取代的。把毅力当座右铭奉行到底的人,发现失败会自行退下,失败是无法对抗毅力的。

  6)   消极的个性。

  因为消极的个性,而将别人拒于千里之外者,不会有成功的希望。成功来自力量的运用,而力量又来自与他人的合作,消极的个性无法促成合作。

  7)   无法克制“不劳而获”的欲望。这种机体本能使很多人走向失败。

  8)   缺乏果断的决策力。

  成功的人士会果断决策,然后如果有必要,再慢慢改进。失败者往往花很长时间才能作出决策,但很快就需要修改,而且要频繁修改。犹豫和拖拉是一对双包胎,只要找到其中一个就一定能找到另一个,所以必须趁它们没有将你完全束缚在失败的车轮上,果断地把它们消灭。

  9)   过度谨慎。

  不主动抓住机会的人往往只能捡别人挑剩的机会,过度谨慎和不够谨慎都不可取,人生本来就充满偶然成分。

  10)   迷信与偏见。

  迷信是恐惧的一种形式,也是无知的表现,成功人士心胸宽广,无所畏惧。

  11)   目标不专。“万事通,万事松”,要全心全意专注于一个主要目标。

  12)   缺乏热情。

  没有热情,一个人就没有说服力,而且热情有一种感染力,一个人如果拥有热情,并能适当控制热情,往往会受到人们的欢迎。

  13)   偏执。心胸狭窄很难取得任何进步,偏执说明一个人不积极获取知识。

  14)   蓄意不忠。

  诚实是一种不可替代的品质,受无法控制的环境所迫,一个人可能一时不忠诚,也不会带来永久的破坏。但是,如果一个人蓄意不忠,则无药可救。他的得行为迟早会被发现,他负出的代价可能是失去信誉,甚至失去自由。

  15)   自私和虚荣。这些品质问题好比亮起红灯,让人不敢靠近,是妨碍成功的致命因素。

  16)   猜测而不思考。

  多数人往往漫不经心或者过于懒惰,不愿费心获取用于准确思考的事实。他们喜欢根据猜测或仓促得出的“结论”了事。观念改变人生!选择决定未来!行动决定成败!

posted @ 2008-09-24 02:51 小小it 阅读(322) | 评论 (1)编辑 收藏
魔杰座也有无题

魔杰座也有无题

不知道写些什么。但是我又想写。最近这段时间里。我和往常一样的生活。一路读小说 http://www.yiludu.cn/ 也到继续看。没有多大的变化。可能平静的生活不会太久。没有过多少平静的生活,我又会搞出点什么乱子来。我是一个喜怒无常的人。或许这样。我给我的母亲带来很多的泪水的。我努力的想做一个好女儿。但是我做的每一件事情都不让省心的。看起来我是一个风平浪静的孩子。但是我的玩固却让人很头痛的。

   我在读小学的时候,老师问我们。理想是什么。我说我想当老师。可能志向不是很高的,我想做老师是想把知识传播给孩子们。让他们用知识来建设我们的世界。后来我又想当一名女站士。在电视里看到女霸王花。心里有说不出来的自豪。我想女兵可以保卫我们的祖国。在老百姓最困难的时候冲到最前头的。其实我的梦想并不是那么出色的。我想我要在这样平凡的岗位上做出不平凡的事来。但是最平凡的岗位上都没有我的身影 。我是不很失败呢。我没有一个梦想实现了的。我真的叫欲哭无泪呀。

  这些看起来是小小的事情,但是我做不到的。所以我失去做人的信心。我不知道我到底能做什么。我很想自己要很有钱的。但是说说,我身边的人总是说,你想很有钱就要努力的去做事呀。天下不可能会掉钱给你的。我又被重重的打击了。我不能拍拍胸堂说你看我有这么多的钱。我难过到了极点。最后我就不想在做梦了。这让我没有做梦的机会了。我要用事实说话了。这样的话就不会让我的人生掉下低谷了。就像卡徒酒吧 http://www.katu98.cn/  我很幸福的是我有这么好的家庭 。虽然平常也会有吵吵闹闹的。但是还是很温馨的家庭的。我还是要感谢上天让我的有这么美好的东西。

来源:魔杰座-周杰伦新专辑魔杰座  http://www.imfeng.com/post/mojiezuo.html

posted @ 2008-09-24 02:33 小小it 阅读(146) | 评论 (0)编辑 收藏
一些著名的大公司面试题目-java

文章来源:一路读  http://www.yiludu.cn
一、Java基础知识
1. Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。
Integer literals,Floating-point literals,character literals,Boolean literal,String iteral.
String 不是基本数据类型
2. 字符串的操作:
写一个方法,实现字符串的反转,如:输入abc,输出cba
public static String reverse(String s){
int length=s.length();
StringBuffer result=new StringBuffer(length);
for(int i=length-1;i>=0;i--)
result.append(s.charAt(i));
return result.toString();
}
写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出bbbhhtccc。
3. 数据类型之间的转换
如何将数值型字符转换为数字(Integer,Double)
如何将数字转换为字符
如何去小数点前两位,并四舍五入。
4. 日期和时间
如何取得年月日,小时分秒
Date dat=new Date();
dat.getYear();dat.getMonth();dat.getDay();dat.getHours();...
如何取得从1970年到现在的毫秒数
long now=dat.getTime();
如何获取某个日期是当月的最后一天
如何格式化日期
DateFormate df=DateFormate.getInstance();
df.Format(dat);
5. 数组和集合
6. 文件和目录(I/O)操作
如何列出某个目录下的所有文件
如何列出某个目录下的所有子目录
判断一个文件或目录是否存在
如何读写文件
7. Java多态的实现(继承、重载、覆盖)
8. 编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。
9. Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。
10. 找出下列代码可能存在的错误,并说明原因:
二、JSP&Servlet技术
1. 描述JSP和Servlet的区别、共同点、各自应用的范围
2. 在Web开发中需要处理HTML标记时,应做什么样的处理,要筛选那些字符(< > & "")
3. 在JSP中如何读取客户端的请求,如何访问CGI变量,如何确定某个Jsp文件的真实路径。
4. 描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理。
5. 列出Jsp中包含外部文件的方式,两者有何区别。
6. 说明Jsp中errorPage的作用,应用范围。
7. 介绍在Jsp中如何使用JavaBeans。
8. 简单介绍JSP的标记库
9. Jsp和Servlet中的请求转发分别如何实现。
三、J2EE相关知识
1. 介绍J2EE、J2SE、J2SE的区别。
2. J2EE是一种技术还是一种平台,他提供了那些技术。
3. 什么是Application Server,它有什么功能和优点。
4. 简单介绍连接池的优点和原理。
5. Web.xml的作用
四、其他
1. Web安全性的考虑(表单验证、浏览器Basic方式的验证,应用程序的安全性,SSL,代码考虑)
2. 简单介绍您所了解的MVC。
3. 简单介绍所了解的XML。
4. 文档和编码规范
5. Java中的分页、效率考虑。
6. 简单介绍您所了解的structs。


找出以下程序错误。
Class Test{
private String par1;
private String par2;
Test(){
}

public static void main(String[] arg){
int a ;
if(a){
System.out.println("par1="+par1);
}else{
System.out.println("par2=" + par2);
}
}
}

==================================

public class Test
{
public static int a = 5;
public static void main(String[] args)
{
Test test = new Test();
test = null;
System.out.println(test.a);
}
}
答案是5,a为静态变量;不依赖对象,即使为空。

J2EE初学者需要理解的问题

一、J2EE提出的背景
1、 企业级应用框架的需求

在许多企业级应用中,例如数据库连接、邮件服务、事务处理等都是一些通用企业需求模块,这些模块如果每次再开发中都由开发人员来完成的话,将会造成开发周期长和代码可*性差等问题。于是许多大公司开发了自己的通用模块服务。这些服务性的软件系列统称为中间件。

2、 为了通用必须要提出规范,不然无法达到通用

在上面的需求基础之上,许多公司都开发了自己的中间件,但其与用户的沟通都各有不同,从而导致用户无法将各个公司不同的中间件组装在一块为自己服务。从而产生瓶颈。于是提出标准的概念。其实J2EE就是基于JAVA技术的一系列标准。

注:中间件的解释 中间件处在操作系统和更高一级应用程序之间。他充当的功能是:将应用程序运行环境与操作系统隔离,从而实现应用程序开发者不必为更多系统问题忧虑,而直接关注该应用程序在解决问题上的能力 。我们后面说到的容器的概念就是中间件的一种。

二、相关名词解释
容器:充当中间件的角色

WEB容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。

EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。

WEB容器和EJB容器在原理上是大体相同的,更多的区别是被隔离的外界环境。WEB容器更多的是跟基于HTTP的请求打交道。而EJB容器不是。它是更多的跟数据库、其它服务打交道。但他们都是把与外界的交互实现从而减轻应用程序的负担。例如SERVLET不用关心HTTP的细节,直接引用环境变量session,request,response就行、EJB不用关心数据库连接速度、各种事务控制,直接由容器来完成。

RMI/IIOP:远程方法调用/internet对象请求中介协议,他们主要用于通过远程调用服务。例如,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。

JNDI:JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。

JMS:JAVA消息服务。 主要实现各个应用程序之间的通讯。包括点对点和广播。

JAVAMAIL:JAVA邮件服务。提供邮件的存储、传输功能。他是JAVA编程中实现邮件功能的核心。相当MS中的EXCHANGE开发包。

JTA:JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。

JAF:JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。

EAI:企业应用集成。是一种概念,从而牵涉到好多技术。J2EE技术是一种很好的集成实现。

三、J2EE的优越性
1、 基于JAVA 技术,平台无关性表现突出

2、 开放的标准,许多大型公司已经实现了对该规范支持的应用服务器。如BEA ,IBM,ORACLE等。

3、 提供相当专业的通用软件服务。

4、 提供了一个优秀的企业级应用程序框架,对快速高质量开发打下基础

四、现状
J2EE是由SUN 公司开发的一套企业级应用规范。现在最高版本是1.4。支持J2EE的应用服务器有IBM WEBSPHERE APPLICATION SERVER,BEA WEBLOGIC SERVER,JBOSS,ORACLE APPLICATION SERVER,SUN ONE APPLICATION SERVER 等。


学习Java的30个基本概念

Java概述:
目前Java主要应用于中间件的开发(middleware)---处理客户机于服务器之间的通信技术,早期的实践证明,Java不适合pc应用程序的开发,其发展逐渐变成在开发手持设备,互联网信息站,及车载计算机的开发.Java于其他语言所不同的是程序运行时提供了平台的独立性,称许可以在windows,solaris,linux其他操作系统上使用完全相同的代码.Java的语法与C++语法类似,C++/C程序员很容易掌握,而且Java是完全的彻底的面向对象的,其中提出了很好的GC(Garbage Collector)垃圾处理机制,防止内存溢出.


Java的白皮书为我们提出了Java语言的11个关键特性.

(1)Easy:Java的语法比C++的相对简单,另一个方面就是Java能使软件在很小的机器上运行,基础解释其和类库的支持的大小约为40kb,增加基本的标准库和线程支持的内存需要增加125kb.


(2)分布式:Java带有很强大的TCP/IP协议族的例程库,Java应用程序能够通过URL来穿过网络来访问远程对象,由于servlet机制的出现,使Java编程非常的高效,现在许多的大的web server都支持servlet.


(3)OO:面向对象设计是把重点放在对象及对象的接口上的一个编程技术.其面向对象和C++有很多不同,在与多重继承的处理及Java的原类模型.


(4)健壮特性:Java采取了一个安全指针模型,能减小重写内存和数据崩溃的可能性。


(5)安全:Java用来设计网路   和分布系统,这带来了新的安全问题,Java可以用来构建防病毒和防攻击的System.事实证明Java在防毒这一方面做的比较好.

(6)中立体系结构:Java编译其生成体系结构中立的目标文件格式可以在很多处理器上执行,编译器产生的指令字节码(Javabytecode)实现此特性,此字节码可以在任何机器上解释执行.


(7)可移植性:Java中对基本数据结构类型的大小和算法都有严格的规定所以可移植性很好.


(8)多线程:Java处理多线程的过程很简单,Java把多线程实现交给底下操作系统或线程程序完成.所以多线程是Java作为服务器端开发语言的流行原因之一


(9)Applet和servlet:能够在网页上执行的程序叫Applet,需要支持Java的浏览器很多,而applet支持动态的网页,这是很多其他语言所不能做到的.


基本概念:


1.OOP中唯一关系的是对象的接口是什么,就像计算机的销售商她不管电源内部结构是怎样的,他只关系能否给你提供电就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,很大限度上提高复用率.


2.OOP中最重要的思想是类,类是模板是蓝图,从类中构造一个对象,即创建了这个类的一个实例(instance)


3.封装:就是把数据和行为结合起在一个包中)并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的实例字段(instance field)


4.通过扩展一个类来获得一个新类叫继承(inheritance),而所有的类都是由Object根超类扩展而得,根超类下文会做介绍.


5.对象的3个主要特性

behavior---说明这个对象能做什么.

state---当对象施加方法时对象的反映.

identity---与其他相似行为对象的区分标志.

每个对象有唯一的indentity 而这3者之间相互影响.

6.类之间的关系:

use-a :依赖关系

has-a :聚合关系

is-a :继承关系--例:A类继承了B类,此时A类不仅有了B类的方法,还有其自己的方法.(个性存在于共性中)


7.构造对象使用构造器:构造器的提出,构造器是一种特殊的方法,构造对象并对其初始化.

例:Data类的构造器叫Data

new Data()---构造一个新对象,且初始化当前时间.

Data happyday=new

Data()---把一个对象赋值给一个变量happyday,从而使该对象能够多次使用,此处要声明的使变量与对象变量二者是不同的.new返回的值是一个引用.

构造器特点:构造器可以有0个,一个或多个参数

构造器和类有相同的名字

一个类可以有多个构造器

构造器没有返回值

构造器总是和new运算符一起使用.


8.重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载.编译器必须挑选出调用哪个方法.


9.包(package)Java允许把一个或多个类收集在一起成为一组,称作包,以便于组织任务,标准Java库分为许多包.java.lang java.util java,net等,包是分层次的所有的java包都在java和javax包层次内.


10.继承思想:允许在已经存在的类的基础上构建新的类,当你继承一个已经存在的类时,那么你就复用了这个类的方法和字段,同时你可以在新类中添加新的方法和字段.


11.扩展类:扩展类充分体现了is-a的继承关系. 形式为:class (子类) extends (基类).


12.多态:在java中,对象变量是多态的.而java中不支持多重继承.


13.动态绑定:调用对象方法的机制.

(1)编译器检查对象声明的类型和方法名.

(2)编译器检查方法调用的参数类型.

(3)静态绑定:若方法类型为priavte static final 编译器会准确知道该调用哪个方法.

(4)当程序运行并且使用动态绑定来调用一个方法时,那么虚拟机必须调用x所指向的对象的实际类型相匹配的方法版本.

(5)动态绑定:是很重要的特性,它能使程序变得可扩展而不需要重编译已存代码.


14.final类:为防止他人从你的类上派生新类,此类是不可扩展的.


15.动态调用比静态调用花费的时间要长,


16.抽象类:规定一个或多个抽象方法的类本身必须定义为abstract例: public abstract string getDescripition


17.Java中的每一个类都是从Object类扩展而来的.


18.object类中的equal和toString方法.equal用于测试一个对象是否同另一个对象相等.toString返回一个代表该对象的字符串,几乎每一个类都会重载该方法,以便返回当前状态的正确表示.(toString 方法是一个很重要的方法)


19.通用编程:任何类类型的所有值都可以同object类性的变量来代替.


20.数组列表:ArrayList动态数组列表,是一个类库,定义在java.uitl包中,可自动调节数组的大小.


21.class类 object类中的getclass方法返回ckass类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类.


22.class类为编写可动态操纵java代码的程序提供了强大的功能反射,这项功能为JavaBeans特别有用,使用反射Java能支持VB程序员习惯使用的工具.能够分析类能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射机制十分强大.

1.在运行时分析类的能力.

2.在运行时探察类的对象.

3.实现通用数组操纵代码.

4.提供方法对象.

而此机制主要针对是工具者而不是应用及程序.

反射机制中的最重要的部分是允许你检查类的结构.用到的API有:

java.lang.reflect.Field 返回字段.

java.reflect.Method 返回方法.

java.lang.reflect.Constructor 返回参数.

方法指针:java没有方法指针,把一个方法的地址传给另一个方法,可以在后面调用它,而接口是更好的解决方案.



23.接口(Interface)说明类该做什么而不指定如何去做,一个类可以实现一个或多个interface.


24.接口不是一个类,而是对符合接口要求的类的一套规范.若实现一个接口需要2个步骤:

1.声明类需要实现的指定接口.

2.提供接口中的所有方法的定义.

声明一个类实现一个接口需要使用implements 关键字class actionB implements Comparable 其actionb需要提供CompareTo方法,接口不是类,不能用new实例化一个接口.


25.一个类只有一个超类,但一个类能实现多个接口.Java中的一个重要接口Cloneable


26.接口和回调.编程一个常用的模式是回调模式,在这种模式中你可以指定当一个特定时间发生时回调对象上的方法.例:ActionListener 接口监听.

类似的API有:java.swing.JOptionPane

java.swing.Timer

java.awt.Tookit


27.对象clone:clone方法是object一个保护方法,这意味着你的代码不能简单的调用它.


28.内部类:一个内部类的定义是定义在另一个内部的类

原因是:1.一个内部类的对象能够访问创建它的对象的实现,包括私有数据

2.对于同一个包中的其他类来说,内部类能够隐藏起来.

3.匿名内部类可以很方便的定义回调.

4.使用内部类可以非常方便的编写事件驱动程序.

29.代理类(proxy):1.指定接口要求所有代码 2.object类定义的所有的方法(toString equals)

30.数据类型:Java是强调类型的语言,每个变量都必须先申明它都类型,java中总共有8个基本类型.4种是整型,2种是浮点型,一种是字符型,被用于Unicode编码中的字符,布尔型.

posted @ 2008-09-22 02:16 小小it 阅读(144) | 评论 (0)编辑 收藏
一些IT开发工程师的悲哀

文章来源:一路读  http://www.yiludu.cn
本文所指的开发工程师,仅指程序开发人员和以数字电路开发为主的电子工程师。当你选择计算机或者电子、自控等专业进入大学时,你本来还是有机会从事其它行业的,可你毕业时执迷不悟,仍然选择了开发做为你的职业,真是自做孽不可活。不过,欢迎你和我一样加入这个被其它人认为是风光无限的“白领”吧。如果你不是特别的与人世隔绝,我想你一定看过金老先生的名著《笑傲江湖》吧,里面有一门十分奇特的武功叫做"辟邪剑法",你看这个小说第一次看到这种功夫的练法时,我想你当时一定笑歪了牙“呵呵,真好玩!”,可是现在我很痛心的告诉你:你选择的开发工作就是你人生路上的"辟邪剑法",而你现在已经练了,并且无法再回头。
  
  相对同时刚出校门同学从事其它行业而言优厚的薪水,以及不断学习更新的专业知识不仅仅让你感到生活的充实,更满足了你那不让外人知的虚荣心。在刚出校门的几年中,你经常回头看看被你落在后面的同学们,在内心怜悯他们的同时,你也会对自已天天加班的努力工作感到心里平衡:“有付出才会有回报”这句话在那几年中你说的最多,不管是对自已的朋友们还是自已的爱人。第二句最常说的话是对公司的领导:“不行我就走人!”,实际上你也真的走过几回。对了,在这几年中,因为你的经济条件不错,你开始买房、开始谈恋爱、结婚、开始有了自已的小孩。有时候你会对自已说再过两年就去买车。当然其中可能有许多大件是需要分期付款的,但你对前途充满了信心,你确信认为这种日子会永远的持续下去,即使不是变得更好的话。
  
  日子总是在这种平淡中一天天的过去,就在那么不经意间,你突然发现自已已经快30岁了,或者已经30了,莫名的,你心里会漫延着一种说不清楚的不安情绪,你好像觉得前途并非像前几年那样变得越来越好,你也忽然发现你以前所瞧不起的同学里好像已经有不少开着车的了,也有几个人住着比你还大的房子,好像房款还是一次付清的,你突然明白你现在的生活比起你的同学来最多是中游偏上了。工作中最让你感到心里不舒服的是,你越来越不敢对你的领导说不了,即使比你来的晚的同事升职或提薪,你也只是在私下与朋友们一起喝酒时才敢发发牢骚,在头的面前你的声间越来越小、笑脸是越来越温柔。
  
  你终于开始迷茫“再过几年我会是在干什么呢?”,这句话常常出现在你的心里。计算机开发工作,是一种以年轻为资本的工作,说句通俗点的话是“吃青春饭的”,嗯,这句话好像在一种特别的行业也听到过。其标志就是一:工作的时间性非常强,一个开发项目被定的时限通常是很紧张的,更有甚者,有些号称开发管理的书里面还非常卑鄙的号召将一个项目切成多个小片,每个小片都定一个叫“里程碑”的东东来严格跟踪开发进度,加班加点在其它行业是需要加班工资的,而在开发行业,加班工资好像还没见到几个公司发过,是啊,反正有时间限制着,你干不完我再找你算账.所以开发工作通常有着其它工作所没有的精神上的压力。
  
  一旦一个人步入而立之年,因为家庭和孩子的负担,加上精力上面的衰退,加班工作时间变得越来越少,这点让很多老板们感到:这些人已经老了,不好用了。指示人事部门:“以后招开发人员限制在30岁以下!”,相对而言硬件开发会年龄方面限制会稍好一点点,但也是五十步笑百步。还有一个很重要的一点就是:计算机这个烂东东实在是进步的太快了,前两年买的顶级配置电脑,现在怎么看怎么像废品,这还是小事,更可气的是好像每天都需要学习新的知识,刚毕业时只会书本上的PASCAL,学会了用腐蚀的办法来做电路板,一上班就开始学习TURBOC和TANGER2.0,刚刚学会,还没来得及高兴,马上开始学Borland   C++和Protel3.0,好不容易学会了,却发现需要学习VC和Protel98了。单片机也是啊:Z80的指令背的很熟,工作中没来得及用就要学8031,好好学吧,本来想着这辈子就吃它了,又发现又出来什么PIC、DSP、CPLD、FPGA、ARM等等....这还不包括中间要学一大堆74系列、4000系列、XX系列...IC卡居然里面还有CPU卡..如果学习的知识里每个字都能变成一分钱,我想所有的开发工程师都是腰缠万贯的富翁。
  
  一眼看去,这种日子好像见不到头,年轻时乐此不彼,但现在你一定对自已能坚持到什么时候感到怀疑了。我们都玩过像仙剑奇侠传这样的RPG游戏,刚开始时你只是一个一名不文的少年,随着你去打怪物、捡宝贝、学秘芨,最后终于有一天你会变成一个大英雄!那么你在实际生活中过得比那些小侠们还辛苦,为什么成不了一个生活中的大侠呢?呵呵,原因在这里:因为开发工作是邪门功夫,它虽然可以让你速成的变成小资,但它最大的特点是经验不积累!日新月异的知识更新,让你总是感到自已在退步,你就像在RPG中的主人公,开始时就给了你一把好剑和好盔甲,而且让你的级别很高,但让你的经验不累积,虽然刚开始打小怪物时你觉得自已很爽,但越到后来,你会发现你会死的很惨!比较一下你与其它非开发行业的同学你就可以知道了,例如和你学医的同学比起来。套用岳不群他老人家说华山剑宗和气宗的区别那段话:前十年你比你那些学医的同学收入和地位要好的多,但十年以后你和他基本上各方面都会持平,而二十年以后你的各方面远远不能与你学医的同学相提并论!嗯,你已经开始不笑辟邪剑法了吧。
  
  “敢问路在何方?路在脚下...”,不过猴兄和八戒兄这么认为是可以的,你呢?总结了许多开发朋友在30岁以后的生活之路,让我们一起看看开发人员“路在何方?”那么开发人员在30岁以后都干些什么呢?
  
  其路一:继续做你这个很有“前途”的职业吧!
  偶掰着脚指头仔细数了数,发现还真的有很多朋友在30岁以后还在从事开发工作,我这里说的从事,是指你还需要天天在电脑边上编程序和画电路板,与你手下是否有几个小兵无关,也与你是否头上顶着什么项目经理、主任工程师的帽子无关,只要你还需要亲自开发,你就属于这一类。其中有个年龄最大的朋友是63年的,从事医疗仪器的开发工作,35岁左右还在从事软硬件开发工作的仍有一大堆,分析这些仍然从事开发的朋友,基本上都有以下特点:
  1痴迷工作或者痴迷电脑,晚上八点到十二点的这段时间,基本上是在电脑桌或工作台前渡过的。
  2不喜欢与人交住,朋友很少,常联系的人不超过五个。
  3与朋友交往时谈工作多,但一般不主动谈钱。
  4体型偏胖或偏廋,不在正常区间。
  5无未来计划,对五年后自已生活怎么样、从事什么工作说不清楚。
  6俭省,从不乱花钱。
  即使你是还不到30岁的开发人员,你也可以看看自己对以上几条是否符合,是否会在30岁后还从事开发职业,四条疑似,五条以上基本确诊你也是这类型的人。这些朋友们通常报着过一天是一天的态度生活,到了这个年龄,也不敢再轻易的换工作了,年轻时的锐气慢慢的也消退了。唯一不变的希望是有一天从天上掉下来一大堆钱把自己砸伤。说实在话因为他们的性格所限,基本上可以确定他们以后不可能在职场上获得更好的发展,当个小头头,带几个人开发已经是他们发展的顶点。至于以后的人生之路,不仅他们自己迷茫,可能上帝也正在头痛。不过像这类朋友,偶很奇怪的发现:他们的小孩都是儿子!不知是偶然还是有什么其它说法。
  简单建议:要改变命运,先改变性格:坚持半年晚上不从事工作、游戏及电视,用此时间与人交往,你的人生会有改变。
  
  其路二:转行从事技术支持、行政或生产等工作
  还有一些朋友,从事了几年的开发工作,因为自已并非特别的爱好,或者领导上面的强制工作安排,他们转到了技术支持、服务或行政等工作,至少当时从表面上看起来,他们的薪水较开发要少一些,但真正的统计这些人,发现他们之中有半数的人获得了更好的发展,升职为服务部经理或行政经理等职,最历害的一个朋友已升职为总经理助理,进入高层。这类朋友当时转行通常并非自已志愿,属被逼无奈或者其它原因,但显然,拥有专业知识技术的他们显然在非技术部门中鹤立鸡群,遇到什么事情他们均可从专业的角度提出建言,久而久之,他们获得更多的升职和加薪机会也就不足为奇。因为不从事开发,所以经验开始积累,这类的职业通常会给你一个很安定的感觉,你到30多岁后会发现这类职业反而比开发工作更容易获得新的工作机会。
  简单建议:你如果确定在开发部无法获得很好的发展机会,不妨转到其它几个部门试试,换个活法,钱少点就少点吧,机会多。
  
  其路三:开发管理
  如果你现在已经是总工或开发部经理,或者你眼看就有机会被提升为这类职务,那么恭喜你,你走的是从“弼马温”到“斗战胜佛”这条金光大路,你不仅拥有很高的专业技能,而且很显然,你也有着很强的人际交往能力,你这类人根本不需要对未来有着任何的担心,你在即使一无所有的时候也很容易白手起家。你这种人算是练辟邪剑法练成了仙,嗯,我无话可说。你是不是这类人也很容易区别,就像围棋二十岁不称国手终身无望一样,你应该在工作三、四年以后,也就是说二十七岁左右就会发现自已工作中指手划脚的时间比亲自开发的时间要多了,而且大多数这类人在这个年龄手下应该有“兵”了,相反的,如果你快30岁了还天天埋头于电脑前编程序和画板子,或者30多岁了你还没升到部门经理(虽然你总是觉得自已很有希望),基本上可以确定你不是这类人。好了,如果你确定你是这类人,那么你唯一的想法就是尽快爬上中层和高层,因为有时候人生偶然性太大,不占住坑的萝卜很有可能被人拔出来!
  简单建议:天天去你的老板家里面拖地和擦桌子!
  
  其路四:出国或考研
  有两个搞开发后出国的朋友,其中一个甚至打工打到了一个小公司总工的位置,数据库和软件方面水平巨牛,但仍感觉心里不踏实,于是将自己工作多年的钱忍痛掏出来,出国费加上机票大概将自已辛苦所攒的银子花完,然后又借了一些钱,在02年身上揣着一万美元跑去了加拿大,在加拿大不停的重复找工作,换工作,然后再找工作的循环,找的工作基本上与计算机无关,不过工资总是在1500加元左右,呵呵,折成人民币与他在国内打工拿的基本上差不多,不过租个地下室就花了300加元,然后吃吃喝喝,再买个电脑上上网这类的,基本每月平均还要倒贴一点。前段时间给我的邮件里说,现在身上花的差不多只有5、6000美元了,准备开个小公司,看看能不能往国内倒腾点东东,做最后一搏。另外一个朋友去澳州,时间稍早一些,先是大概摘了一年多的葡萄,后来总算找了个技术工作,每天的工作是画机械图纸,收入还算不错将近3000澳元,买了个旧车,也算是过上了资本主义生活。不过前年回来一趟,唯一的感叹就是:在国外拿2000美元的生活,绝对不如在国内拿5000人民币的生活舒服。
  也有两个考研的朋友,不过其中一个严格的说不是做开发的出身,偏重于市场方面的工作性质,不过我的朋友里面考研的不多,只好凑两个人说说,一个考研后在北京找了个工作,每个月5、6000元钱,但还是做开发,生活仍然与没考研之前没有任何的改变,前途仍然没见到什么大亮的光,还是搞不清楚以后再干些什么,标准的过一天算一天了。另外一个考研后在大学里面找了个工作,工资虽然比他原来打工少了不少,但毕竟终身有靠,稳定了下来,也算修成了正果,这位哥们心情一放松下来,也开始有时间琢磨着业余时间自已做点什么,好像现在慢慢的也开始有了点眉目。
  简单建议:这两条路,对开发人员来说都不算是很好,出国十年前是好事,现在难说,考研能成功转行的概率恐怕也不是很大,多半仍然去搞开发,只不过研究生可以多干几年罢了。
  
  
  其路五:转行到市场
  绞尽脑汁的想想,我所知道的人之中只有两个开发人员去了市场,这两个人都不能说是朋友,认识而已。他们都是主动要求去了市场,结果是这两个人均在市场都是干到一年左右,然后都自已开公司了。呵呵,很奇怪,极高的转行成功率!不过仔细想想,我对这两个人的思路佩服的五体投地。能下决心仍掉每月5、6000元的开发职位,从事一个自已并不熟悉的岗位,每月拿个2000多元+提成,但提成那是说不清楚的事情,这个决定,只能让人感觉到他们对自已前途清晰的把握和老谋深算的心机。而且他们不去服务不去生产,挖空心思说服领导去市场(市场部门与开发部门通常是一个公司的核心部门,进入其实并不容易),可以说是有着长远的考虑的。有技术了,再与客户交成朋友,马上就会产生很大的机遇应该是正常的事情。
  有实力,有心机,也有着很强的决心力,这种人恐怕早在大学毕业时或更早的时候就已经决定了自已的人生之路,他们的每一步路在若干年前早就计划周全,现在看起来:学会技术->进入市场->寻找商机->开公司,一条多么清楚的人生之路。但就像我们上小学中学时,所有人都知道上大学是我们最清楚的人生路一样,最后只有少数人才能真正达到目标(当然,现在扩招的历害是另外一回事,我是说我们那个时候,也就是:“很久很久以前,当我像你那么大的时候”)。
  简单建议:你若是这类人,我的建议是:...嗯?....那个你.你,你别走啊,我还有个事想请你赞助一下啊.....
  
  
  其路六:开公司自已干
  呵呵,看到这一条,发现你的眼睛已经圆了,你肯定千百次的想过这个事情吧,咳咳,其实我从事开发的时候也是天天梦想着这种事情。总想着过两年找个机会就自已干,这个梦想一年又一年的折磨着你也给着你希望。看看吧,开发后来开公司的还真的不少,里面有成功的也有很多失败的,通常开公司都是几个人合伙开始的,有做技术的,有做市场的,几个人一拍即合、狼狈为奸,共同策划了这一个大活动。一般说来能让这几个人下决心走出这一步,产品肯定是先进的,甚至是国内独一无二的,市场也是很大的,负责市场的那个哥们通常会拍着胸保证可以卖出去,并悄悄地告诉你他在某主管领导是他小舅子的同学的二叔,肯定没问题。于是你们几个人找地点、注册执照、买了几个破桌子,再攒了两台电脑,每个人又凑了几万银子,公司开张了!
  产品很快出来了,市场的哥们也不负重望,有几个客户表示要试用了,一切看起来都是如此的正常,“.......你坐在老板桌前,不停的有人来汇报工作或者找你签字...人进人出中...你又想起公司再穷也不能只有一把椅子的故事.....”你在梦中笑出声来。是如此的顺利,你们很快就有单子了,很快的单子让你们凑的那点钱不够了,你们很高兴的每个人又增加了投入,拿出钱时你眼泪汪汪的数着钱说:“这就是我那生蛋的
  母鸡啊”。你们的产品确实不错,市场也经营的很好,客户慢慢的多了起来,单子来的时候一笔接着一笔,你每天都处于兴奋之中,唯一美中不足的是好像客户回款总是会拖一些日子,不过客户给你保证说:过几天,过几天就付给你们,因为回款总是在计划外,所以你们为了资金的流畅运行又凑了一些钱,这个时候你有一些心事了,因为你的存款折上面的数字已经快趋向于零了。“没事,过两个月等回款了一切都OK了,谁干事业不吃点苦呢?”你这么安慰着自已又投入到工作中去,资金总是在回款和生产经营费用之间走着一个窄窄的小木桥,你的账上总是没有太多的钱,扩大了的公司规模和许多意外情况,使你又一次、二次、三次的与合作者们再次投入了自已的资金,当然,后来的钱你可能已经是借的了.....
  终于有一天,你的会计再一次告诉你,老板啊,账上又没现金了,吃过多次苦头的你终于下决心开始重视资金的运行了,你裁掉了一些不必要的人手,减少了开发的投入,要求市场人员签单的时候必须予付XX%的款,回扣也必须等收过款后再付,同时也开始对产品的生产成本开始进行控制。时间一天一天的过去,因为竟争对手的产品也对你的产品进行了仿造,你的产品慢慢变得不再先进,市场人员开始埋怨公司的合同资金方面规定太严格,不好签单,生产成本的下降通常也导至产品毛病的增多,客户也开始埋怨你的服务人员不能及时进行服务。
  终于有一天,你重新走进了人才交流中心,以前你是来招人的,现在你拿着自已的简历开始寻找一个工作......公司的成功与否,与产品有关,与市场有关,但更重要的是与资金有关,产品与市场都可以通过资金来弥补,而却没有任何东西可以代替资金,凡是倒下的公司,99%与资金链的断裂有关。在你决定要开公司以前,先估计一下你公司支持一年所需要的资金数额,包括人工费,生产,场地,广告宣传、市场费用、甚至电、水费等等等等,把你所想到的一切加在一起,得出的值就是..慢..如果你没有实际的开过公司的经验,你需要将此数字乘3,然后就是你开公司一年最少需要的费用,呵呵,公司的实际运营所需要的钱是你想像的3倍以上,你要是不信我也没办法。
  简单建议:开公司前最重要的是先确立你后续的资金来源!也就是说钱不够了怎么办?---因为你投入的钱肯定会不够的。
  
  其路七:第二职业
  这类的朋友有不少,他们没有脱离开发工作,但是在业余时间又不停的接项目或者在卖产品,在单位里面他们显得并不出众,比起其它人来说他们属于最不愿意加班的一类.为此他们白天通常工作很勤奋.这类人也许不一定可以挣很多钱,但平均下来他们一年之中通常都可以比同事们多挣个几万元.有时候比上班拿得还多.但令人疑惑的是,这类人在生活中更加注重稳定,基本上没见到他们跳过蹧,即使私下里面已经开了个小公司,他们通常也不会辞职.
  你的旁边有没有这类人呢?分辨他们很容易:--电话很多,而且更愿意来电话时离开办公室找个没人的旮旯通话.神秘兮兮给人一种"这家伙是不是有二奶啊?"的感觉的人,通常是这类人。这类人是女性最佳的选择对象:很顾家,不象那些富人容易花心,而比起一般人来说,他们收入相对要高得多。但总结了一下几位这类的开发朋友:也得出了一个令人沮丧的结论:这种人通常个子不高,体形类似桶状.....
  简单建议:这好像是开发人员最佳的出路了,但比较丰厚的收入通常让这类人不愿意去冒风险....到现在为止我所认识的这类人还没有一个真正算是成功的。
  
  好了,虽然偶的经历远远说不上丰富,也没有什么成功之处可以自满的,但或许因为比其它朋友痴长了几岁,见过的人可能会稍多一些,所以斗胆写出了以上的一些文字,让您掉牙了。下面是偶走过开发这条路上总结出来的一点心得,你可以不看,但看了就千万别把嘴咧的太大:
  
  一、不管是给别人打工还是自已干,都要全心全意的工作,因为你所做的任何一点工作都会让自已的人生多一点筹码,这一点最最重要!这样的例子我至少可以举出两起,优秀的开发人员被其它新公司挖走,并给一定的股份,成为新公司的股东的例子。当时与这样的开发人员一个部门同时工作或更早工作的有许多人,他们平时经常偷点懒,能少干点工作就少干点,有时候还笑话那个平时努力工作的人傻,几年过去了,究竟谁比谁傻?
  
  二、多与市场人员交朋友,你接触他们时可能总会觉得他们知识比你少,甚至素质比你低,可能比你还有点黄。但实际上他们比你更懂这个社会!参加到他们这个圈子中去,和他们一起赌赌钱、一起聊聊天、一起洗洗桑拿、一起.....你会通过他们接触到另外一个世界。
  
  在网上或其它地方,如果有机会参与到除本职工作外的一些项目或产品的开发中(包括你的朋友拉你去做点小生意之类的非开发性质的工作),那怕是帮忙的性质,也要积极介入,至少你会交到很多的朋友,这样你的人生会多出很多的机会

posted @ 2008-09-22 02:13 小小it 阅读(122) | 评论 (0)编辑 收藏
军训和小说一路读吧,看魔杰座

军训和小说一路读吧,看魔杰座

以前,我总认为军训像玩一样,想怎样玩就可以怎样玩。但是,我自从来到这里军训后,终于发现了,我错了,和我想象中的军训截然相反。所谓的军训并不是让我们想怎么样就怎么样,而是锻炼我们的毅力与身体,来体验军中训练生活。就像小松树一样,不经历严寒酷暑的考验,怎能长成一棵高大、茁壮的松树呢!人也是一样,必须吃点苦,才能成大事。我相信,这次军训中的辛苦,最终会化成我对学习的动力!这也是我喜欢进收录文学站的原因。

  这几天的军训,让我不仅懂了许多道理,还懂得了许多的事。就说军训的最后一天的下午吧。那天下午,我们举行了四公里的野外拉练,由于天气炎热,再加上去都是上坡,许多同学的水都喝完了,个个都十分口渴。通过这件事,我才真正地感受到水——人类的生命源泉,水是那么的重要啊!如果没有了水,人类该怎么生存啊!以前在家,我可是从来就没想过这种事。在急需水的时候,才想起。想想在家里曾经浪费了多少宝贵的水啊,我真是感到惭愧!在这次军训中,我还明白了同学之间应该团结。想想,我们有困难时,在学校是谁向我们伸出友谊之手,不就是那些天天在我们身边,在我们伤心的时候安慰我们的同学嘛!记得在军训时,我没水喝了,十分口渴。后来一个叫丝路的同学把仅有的一点水给我喝,使我深深的体会到团结的力量,与同学的团结是多么的重要。我想,如果我们这一代更加的团结,更加友爱的话,中国必定会更加繁荣昌盛!我们应该珍惜眼前的友谊。

文章来源:魔杰座-周杰伦新专辑魔杰座 http://www.imfeng.com/post/mojiezuo.html

posted @ 2008-09-22 02:08 小小it 阅读(158) | 评论 (1)编辑 收藏
初用Google Gears 有感

文章来源:一路读 http://www.yiludu.cn/

做了一些年的web开发,见到了一些web技术的革新和进步.作为从事b/s开发的人来说,是很欣慰的。
以前出现了一种ajax技术,应该是很有革新意义的,
Ajax应用程序的优势在于:
  1. 通过异步模式,提升了用户体验
  2. 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
  3. Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。

今天我说的google gears,我想也是一个技术革新.

最近的项目遇到一个问题,使用cdma网络,对某一个数据的输入需要实现google那样输入快速连动显示的功能,
而数据量又有点大,要快速连动,几乎不可能.

所以只能考虑一些新的技术,这就是google gears了。将数据库本地化.
http://code.google.com/apis/gears/sample.html
这里有简单详细的例子,试用的感觉的确是不错的。

他含有3个重要的模块。
1,Database module就是本地数据,可以使用标准的sql语法操作,比如建表查询删除等等。
这样很多常用数据我们都可以本地化存储,不用每次都从server端下载,
提升了用户体验,减少不必要的数据往返.
特别是对网络环境不好的。如果用户在操作的时候断网络,就可以把输入的数据现保存到本地库,
后期网络正常后在同步。

2,LocalServer module就是本地服务器,大家都知道b/s的文件都是存放在server端的,
不存在什么客户端,如果网络出了什么问题,那么系统也就不能访问了,
LocalServer module就是为让断网的时候依然可以使用b/s系统,他将server端的一些文件存储到本地.
比如我们要登记一个资料,以前没有b/s的系统断网了肯定不行,录入的界面打不开,打开了也无法录入提交到服务器.
用了LocalServer module,我们就可以在断网的情况下打开录入界面,然后录入,然后使用Database module存储,
网络好了的时候在同步,我们也不用总是担心数据没及时录入以免以后就忘记录入了。
(这一点我们暂时没有使用,和界面的设计有些关系,对我们的系统不太容易应用,有些界面暂时没办法本地化)

3,WorkerPool module.工作者池,这是一个最重要的模块,用过pool技术的都知道,
就是pool中的各个主体独自工作,这里的pool是实现了让多个js在后台异步运行互不干涉.
这样用户在使用系统的时候,是感受不到有js在运行的,以前js运行的时候,界面都是不可操作的,
必须要等js运行完了,才能做其他操作,使用WorkerPool module就可以解决这个问题,
比如在我们的系统中,要把服务器的数据库(某个表)本地化,大概需要1个小时,
如果使用传统的js来操作,界面就要运行一个小时(可能没有响应),ie基本都是白屏.
这显然是行不通的了,所有我们只能用WorkerPool module,在用户没有感觉的情况下,
在后台通过ajax分段获取到服务器的数据,然后启动WorkerPool module写入,效果感觉非常的不错。


以上就是自己试用(也算是正式的用了)后的一点感受,和大家一起分享。

web开发,真的是其乐无穷。感谢哪些技术牛人。

posted @ 2008-09-21 01:12 小小it 阅读(229) | 评论 (0)编辑 收藏
真正技术高手是如何炼成的?

在由CSDN和《程序员》杂志联合举办的第三届中国软件技术英雄会(上海站)上,由主持人CSDN首席分析师孟岩,上海群硕大中华区软件开发总监邵荣,阿里软件技术总监叶伟,盛大游戏首席技术官朱继盛, 趋势科技(中国)有限公司技术总监蔡昇钦,巨人网络集团首席技术官CTO宋仕良,淘宝网首席架构师王文彬共同参与的CTO论坛上,就有关CTO是否必须为技术高手,从程序员到技术高手成长之路,知名互联网公司如何招聘人才等问题与参会者进行了深入的交流。

精彩观点:
我觉得CTO并不必须是技术大拿,大家今天可以看到,从CTO的定义来看,CTO的角色是用技术服务公司的商业模式。从这个定义,只要你对技术有相当性的掌握,其实你可以不必从底层做起。——王文彬

CTO很重要的目标是在于它能够整合公司的商业能力,成为一个CTO的重点,是你对公司核心技术的了解度跟掌握度,还有公司主要的核心业务的掌握度。——蔡昇钦

技术高手和CTO这两个角色,打个比方,像一个乐队里面,技术高手像小提琴演奏者,或者是一个钢琴演奏者,但是CTO相当于一个乐队的总指挥,乐队的指挥需要有对音乐的整体感觉,这方面肯定更拿手。——朱继盛

CTO还是应该是一个内功高手,还是要有点内功,这说明什么,你在技术方面,应该有技术的洞察力,要看到商业和技术的结合。——叶伟

跟技术团队,尤其跟程序员,跟工程师,你要有共同语言,我觉得如果说没有一定技术深度的话,其实很难能够融进整个的团队。——邵荣

如果作为一家创业型的公司,特别是互联网,特别是软件行业,CTO必须是一个技术高手,因为你是一家创业公司,技术平台应该是公司的核心业务,如果CTO不是技术高手,这个公司很难在商业上有大的作为。——宋仕良

程序员或高手容易犯的错误是什么,或者我觉得做得不够的地方,是程序员容易觉得我做的这个东西很好,很牛,我这个东西别人应该喜欢用,由我来推演别人。——邵荣

要成为高手,就像练功一样,你必须能耐得住寂寞,要关在研究室里面,像大家一样,晚上写代码,有时候这种东西不是平常人可以做到的,假如你可以呆过这段期间的话,我相信你练到功成了以后,这些东西你就可以发挥出来了,我想这是成为高手很重要的因素。——王文彬

我建议大家去尝试做产品经理或者系统分析师,架构师很多人误解为纯技术的,其实许多的架构师对商业的分析是非常擅长,对于系统分析师,因为系统分析师是非常清晰地要描绘出商业的目标在什么地方,分解成什么东西,跟技术有关联。——叶伟

首先在于留住人才,我们让工程师知道,工程师他不是低于管理者的,也就是说,你一个经理,他所拿到的整个薪资,不一定要大于他所管理的工程师。——蔡昇钦


以下为论坛实录:

主持人:在正式开始之前想先做一个小调查,我想请问一下,在座的六位CTO都是技术管理者,都是技术大拿,你们谁认为成为一个技术管理的高手,或者CTO,成为技术高手是必经之路,想成为一个CTO必须先成为一个技术高手吗?

淘宝网首席架构师王文彬:先说明一下,我是假CTO,我的职位其实是做技术,在淘宝做品牌架构,说实在的,我有一个技术背景,但我觉得CTO并不必须是技术大拿,大家今天可以看到,从CTO的定义来看,CTO的角色是用技术服务公司的商业模式。从这个定义,只要你对技术有相当性的掌握,其实你可以不必从底层做起,我们今天讲的是CTO是不是一定要从底层的技术人员干起,假如从这个角度,我觉得做CTO不一定经过必须这个角色,当然现在业界很多CTO,我想在座很多CTO是从技术出身,这是现实,但是理论上我不觉得是一定的事实。

趋势科技技术总监蔡昇钦:我认为CTO有很重要的目标是在于它能够整合公司的商业能力,成为一个CTO的重点,是你对公司核心技术的了解度跟掌握度,还有公司主要的核心业务的掌握度,所以不一定说非要从底层干起,当然CTO也可以是掌握技术最高的那个人,但是这不是一个唯一的一个对应关系。

盛大游戏首席技术官朱继盛:技术高手和CTO这两个角色,打个比方,像一个乐队里面,技术高手像小提琴演奏者,或者是一个钢琴演奏者,但是CTO相当于一个乐队的总指挥,乐队的指挥需要有对音乐的整体感觉,这方面肯定更拿手,但是你说他,说到他必须是一个小提琴高手,或者必须是一个钢琴高手,这不一定,也说明作为一个CTO的话,不一定是从一个技术高手成长过来的,作为一个CTO,他最主要的职能在于整体的协调,对于音乐整体的把握,或者技术整体的把握上。

阿里软件技术总监叶伟:这个问题很难回答,是不是一定要成为一个高手,我曾经发现自己技术上好像也有点高,但是很快发现自己不高了,因为高手太多,刚才盛大的朱总也谈到了,你不可能样样都精通,我本来想打这个比喻也差不多,不过总的感觉,还是应该是一个内功高手,还是要有点内功,这说明什么,你在技术方面,应该有技术的洞察力,要看到商业和技术的结合。我还得补充一点,我们就从CTO的词上来说,最后一个词是officer,officer什么意思,实际上是个管理者,你真正的本事是把一个团队凝聚在一起,并且服务于商业,如果你没有那方面的能力,你今天编程越厉害,或者某个方面精通的,根本不能把你放到CTO这个位置上面,越放到上面越危害,你带着一帮人不知道往哪方面奔,你纯粹只是兴趣,无法为给公司带来商业价值,大家都知道公司其实是要产生这个价值。

群硕大中华区软件开发总监邵荣:我更倾向于必须成为技术高手才能成为CTO。刚刚几位的观点我是认同的,但是还有一些不同的想法。第一个就是自己大言不惭来讲,我自己是走技术这条路过来的,然后在这个过程里面,我自我感觉,就是说你跟技术团队,尤其跟程序员,跟工程师,你要有共同语言,我觉得如果说没有一定技术深度的话,其实很难能够融进整个的团队,尤其,当这个团队,比如说从很小规模,你很可能在前面做很高指点的话,能够落地,给他们一些帮助,所以说在整个我觉得成为一个技术主管的过程当中,如果说有相关的比较深的这样一个经验的话,我想应该会有一定的帮助,整个到后面真正成为CTO,或者成为技术的主管的时候,那个时候是不是技术还是跟原来一样重要,不是,它只是属于在整个的过程当中,其中一环吧。

巨人网络集团首席技术官宋仕良:刚才几位的观点我是同意的,我之所以更倾向于必须成为技术高手才能成为CTO,其实我自己也是一个从技术的底层干起来,我也是写程序的,我为什么觉得这个问题可能要分两个部分来看,如果作为一家创业型的公司,特别是互联网,特别是软件行业,CTO必须是一个技术高手,因为你是一家创业公司,你的公司要创业,技术平台应该是公司的核心业务,如果CTO不是技术高手,我觉得这个公司可能是很难在商业上有大的作为,如果像一些传统的公司,或者做金融那些公司,它来有一个做IT的部门,就不一定是一个技术高手,更重要的是偏重管理,或者是对业务流程的熟练,并不一定是对技术要专注。

主持人:不管怎么说,台上的六位都是我们心目中公认的技术高手,我想问其中几位,台下有很多人,有的人已经是高手了,有的人还在成为高手的路上,我想你们跟大家分享一下,如何才能成为一名技术高手,成为一个技术高手一个最重要的经验是什么,我想邵荣首先与大家分享一下你的观点。

邵荣:先简单说说我自己的一个成长经历,其实我在95年、96年左右的时候,我在操作系统上玩java,我的导师要求我在一个月之内掌握当时的内容,其实就在那个时间开始做很多事,凭着狂热,后面我在DOS里面写自己的Windows的驱动,去驱动整个的鼠标、键盘,再到后面,帮那个研究所做过一个,大家不知道南极星,我自己做了一个,帮香港的一个公司做了一个斯托尼方。我那个时候真的有点不知天高地厚,就想走出苏州,我以前在苏州大学里面,自己也做了老师,还教软件工程,教C++,当时我走出苏州的时候,我讲了一句话,在整个苏州可能没有人在C++上超过我,最多只能跟我沟通交流,过了多少年才知道自己错得多厉害,当时自己的自信心很膨胀,我那时候基本上把白天黑夜倒过来干,基本上是每天吃完早饭回去睡觉,然后别人吃中饭,我吃早饭,连续很多年,大概是最起码4、5年时间一直这么来干活和工作的。但事实上随着时间推移,号称自己觉得还可以,慢慢开始有不同的理解,当中有一个关于互联网,我不知道有多少人知道“白云黄鹤”这个BBS,这是在教育网里面仅次于清华的,我当过两年版主,通过在里面解决问题,带来很多思索,之后我又开始疯狂看软件工程,后面又开始看管理,在市面上的管理方面的书我都看过,事实上一步一步走过来,到今天我思索很多东西,很多时候在里面思索一些商业模式,思考整个团队的建设,思考很多东西三年之后会发生什么事情,客户那边是什么东西,那这么多年里面,我觉得有一个词,就是我影响很深刻的,可能对大家有些启发,叫EMPATHY,这个词的中文含义叫移神,那么我把它去更形象化来讲,就是将心比心,我觉得这么多年过来了,从技术高手转到现在为止,可能很多时间是负责技术的方向,甚至于是整个业务方向,从原来的执行者变到现在的一个布局者,我觉得很多很多时候,EMPATHY这个词给我自己很大的一个促进或启迪吧,程序员或高手容易犯的错误是什么,或者我觉得做得不够的地方,我做的这个东西很好,很牛,我这个东西别人应该喜欢用,由我来推演别人,EMPATHY这个东西,我做这个东西首先站到别人的角度看,我想要带团队,我会站到团队角度看这个问题,你必须在很早的时候预估到很多部分,我觉得很多程序员应该了解,但是最后没有做的事情是尝试性的一些东西,所以随着时间推移,我觉得做真正的技术高手,或者想成为技术高手,我觉得应该往一些更软性的东西想,讲句实话,我往管理方向做的时候,看了很多哲学和心理学的书,这些东西对拟人生有非常多的促进,不要走太多刚硬的路。

主持人:邵总很性急,一下把我后面要问的问题全都回答了。我们接着往下问问叶总,我知道您的技术非常好,思路也很活跃,所以您走上技术这条路,但是我有一个问题是,您后来为什么没有走上创业的路线,您觉得怎么评价一个技术人员的价值,跟着人干也算成功,还是我非要自己创业呢?

叶伟:这个问题相信很多人都面临着,不管你曾经或者将来,你最终选择了什么,你有可能选择了去创业,也可能这时候没有想创业,我个人认为呢,有几个方面,一个是来自于客观上,比如说跟人的性格有关系,有些人可能性格上并不善于冒风险,大家都知道创业是非常冒风险的。第二个,你的知识结构能力方面可能有局限性,你创业,所有的责任都是你在承担,你要考虑是否能得到成功,你会考察你的特长在什么地方,从性格方面说,可能有的人说我希望去宁为鸡头,不为牛尾。我另外有一个观点,这也是我自己的,可能我没有去创业的很重要的想法,我真正想创造社会价值,这个价值要摆在舞台上,这个舞台如果适合你发展,而且它也很大,而且我们大家都知道互联网可以把全世界都联合起来,你有没有智慧,你跟着英明的道路走,这是你可以考虑的。说实在的,我自己的经历,我开始的时候,没有进外企,为什么呢,我读书的时候去打工,所以我在民营企业,很快做大了,那时候我做CTO,管理几十个人,后来我觉得这个行业比较小,我做ERP,我也不再做CTO了,ERP大家知道会影响很多的企业,OK,我去做这个东西,我进了金蝶,在行业里比较大,然后后来我进了互联网行业,阿里巴巴,因为我们要去做电子商务,电子商务它将影响更大范围的人,所以我觉得这个能够创造更大的社会价值。

主持人:我昨天去巨人访问的时候,巨人的同事向我们说,宋总其实是一个不善于言词的人,但是我想问的问题是,您这样典型的技术人员的个性,怎么样管理一个团队呢。

 宋仕良:确实我平时在工作中是不善言词的,因为我应该说比较喜欢做技术工作,我在学校里面天天钻研技术,工作之后也遇到一些朋友,然后朋友都是一些技术高手,因为我工作的时候去一家公司,那家公司的同事也是技术高手,在清华BBS上被评为中国十大黑客之一,那不是贬义的,是软件高手或者技术高手,是做输入法的一个作者,我从他的身上看到一个真正的技术高手,是一个什么样的人,就是说平时不去太追逐一些功名这些东西,回到刚才说的话题,我一个不善言词的人如何把100多人的团队带下来,主要还是靠朋友,可能我会跟我的另一个搭档,他的沟通能力比较强,然后他在从事人际交往,在管理当中会比较擅长一点,我专注于做技术这块,相当于一个黄金组合了。

主持人:王文彬先生是我们淘宝网的首席架构师,我知道您在淘宝网上扮演两种角色,一种是带领团队的角色,另外一种是掌管整个淘宝的架构。您觉得这两种角色,CTO带团队的角色和做架构师是什么关系?您是如何协调好这两者的关系的?

王文彬:的确有点挑战,我老板每次跟我说你架构为什么没有做好,我说我一个人扮演两个角色(笑),但是这个角色里面是有相关的,比如我下面的同仁,其实大家都关注架构,所以其实我今天在带领淘宝团队做架构的时候,会依赖他们实行部分的架构设计,因为淘宝这么大的网站不是一个人就可以做得出来的,这也需要大家通力合作。这样自然就有一个团队,我想我只是起带头作用,带这个团队成本比较小,这也是为什么我两方面能够兼顾的原因吧。其实我再补充一点,刚刚主持人问怎么去变成技术高手,需要什么调整,我也一直在思考,其实我同意邵总的讲法,今天你做程序,技术上的东西最需要的是热情,这个热情也需要你具备一定的条件,我总结我自己的经验来看,当然我也有一点运气,加入了一流的团队,我想这会刺激一个人潜力的发挥,假如我今天没有遇到这群人,我不觉得我今天的看法能够到这种程度,但是另外一点,我觉得你今天要走技术这条路,有一点,要成为高手,就像练功一样,你必须能耐得住寂寞,要关在研究室里面,像大家一样,晚上写代码,有时候这种东西不是平常人可以做到的,假如你可以呆过这段期间的话,我相信你练到功成了以后,这些东西你就可以发挥出来了,我想这是成为高手很重要的因素。现在在中国,很多公司都在征才,其实大家对技术高手的需求是非常大的,只要把握这几点,相信大家有机会成为一个技术高手。

主持人:叶总好像有什么想补充的?

叶伟:是的,我想补充的是说,管理这个东西,它是你的工具,你的手段,对一个CTO来说,或者对负责技术研发的总监来说,实现这个目标,这是你的责任,管理是你的手段之一,你搭好架构,也是你的手段之一,这些东西你都要去管,没有一项可以落下来。另外一方面,这些责任不见得是跑在最顶上的人才有责任,其实我们的一个技术主管,经理他都会有责任,你说他当经理不要管团队,也要,只是CTO更专注在商业和技术架构之间形成桥梁,他需要把商业的东西分解成技术解决方案,反过来又要用我们的技术驱动创新,形成商业上的一些想法,所以我觉得是说,管理它是一个工具,帮助我们,你不要去忽略它,然后我想补充一下,刚才邵总前面谈的问题,怎么样成为一个CTO,一个是说你要以终为始,你看CTO核心的能力点在什么地方,我们刚才谈到是说,它是在跨越商业和技术,所以你要有这个技术,第二个你要组得起团队来搞攻坚战,这两方面都要,你要练很多东西,我今天讲不完,我提两个主要的,你可以同时去尝试,可能你距离CTO就近一些,第一个是做项目经理,没有丰富的项目经理,你根本就不知道怎么样跟人家合作,怎么样取舍,怎么样排列优先顺序,怎么样控制你的资源,前面我说CTO是个officer,第二个方面,他更多要有站得高看得远的角色,所以我建议大家去尝试做产品经理或者系统分析师,我谈架构师,因为谈架构师很多人误解为纯技术的,许多的架构师对商业的分析是非常擅长,所以我还是谈一谈系统分析师,因为系统分析师是非常清晰地要描绘出商业的目标在什么地方,分解成什么东西,跟技术有关联,我建立大家在这两个角色方面尝试一下。

主持人:谢谢叶总,我们还有一位没发言。我知道趋势科技有一个特别优良的传统,你们在培养人才,以及留住人才这件事情上很有功力,我想了解一下,您怎么在您的技术团队里面培养人才,留住人才,这是一个大家现在很关心的话题。

蔡昇钦:培养人才在趋势科技的做法,就是你给他舞台,然后他就是自己的编剧,他就是自己的导演,用这样的方式来做,我们在培养技术高手的层面上,在公司的框架当中,我们是把人才分成两个方面来看,在技术这条路上走的话,首先在于留住人才,我们让工程师知道,工程师他不是低于管理者的,也就是说在趋势,你一个经理,他所拿到的整个薪资,不一定要大于他所管理的工程师,因为我们必须让公司的团队知道,你喜欢钻研技术,那是因为你的兴趣所在,你喜欢管理团队,你喜欢跟人打交道,那是你的兴趣所在,从一个公司角度看,我们鼓励人基于自己的兴趣做好他的发展,所以从这样的情况了解员工后段的需求,然后安排他去他有可能的位置,很自然而然员工就会跟公司走得很近。像我通常会跟我的团队的人员讲,不管是资深的还是资浅的,我每年会问他们一个问题,你有没有想过你5年后干嘛,我会记得他们2006年跟我讲什么,2007年跟我讲什么,2008年跟我讲什么,他有没有改变他人生的五年规划,三年规划,我们尽可能在公司的范畴满足员工的需要,我想这样子,员工就会成长,就会跟公司走在一起。

主持人:人才的问题其实是现在大家都很关心的,我在主持这个会之前,有人特意给我发消息,建议我多问在座的CTO一些关于怎样招募团队,保留团队的问题,由于我们现在人才培养存在一些问题,导致我们市场上优秀人才的数量有限,就带来保留人才和争夺人才之间的矛盾,我想问一下宋总,我昨天去巨人的时候,听说你们团队相当稳定,你觉得除了巨人的收入高以外,这个当然是很重要的因素,你还有什么诀窍吗?

宋仕良:应该还是说公司重视技术人员,首先你重视人才,你应该是要尊重人才,一个技术人员,他有他自己的想法,而且每个人的想法都是不一样的,你要重视他的想法。   

主持人:这种想法跟公司的目标不一致怎么办。

宋仕良:目标不一致的话,那应该是给他做工作,就找他谈心,这个肯定要统一目标的,如果目标不一致,大家肯定走不到一起来,首先你在组建这个团队的时候,在选人方面,应该是物以类聚,我觉得至少应该选大家有兴趣,或者有共同拼搏方向的,或者是大家奋斗的方向是一致的,至少奋斗的目标一致的话,才能够很好地沟通,不会说我提出一个观点,另外一个人会有很大的反驳,首先你在组建团队的时候,每个人虽然达不到完全一致,但是大家的目标是一致,中间团队在磨合的过程中,肯定会出现这样那样的问题,这些问题我想都是可以解决的,因为公司或者通过一些协调,或者是互相的理解,互相的支持。

主持人:朱总您觉得盛大在保持人员不流失方面如何。

朱继盛:我觉得核心的思想只有一点,给相应的人自己的舞台,施展他自己的东西。可以举一些例子,比如说我们盛大集团的副总裁是80后的,他能作为一个上市公司的总裁。再举一个例子,去年盛大有很优秀的员工离职了,这个离职并没有任何人劝他,他自己有这个意愿,要自己创业,盛大有机制,让他自己编一个游戏,他在盛大的周围去工作,这样的例子,实际上在盛大有非常多这样的例子。

主持人:谢谢台上的嘉宾和底下的观众。

嘉宾:谢谢大家。(付江/整理)

 

文章来源:一路读 http://www.yiludu.cn/

posted @ 2008-09-21 01:09 小小it 阅读(181) | 评论 (0)编辑 收藏
一路读楼兰

一路读楼兰

我忽然有一种很不祥的预感,好像大难真要临头了似的.貌似不能一路读楼兰了。。

  这座楼兰城是娄沙为他的楼兰公主而建的.他为她开垦田地,发展养殖,他为她创办学堂,设立祠堂,他为她维持公共次序,并逐步逐步地建起了我们这座城最初的文明.在此过程中,他收获了全城百姓对他的敬重与爱戴,但是,他真正在意的还是他的楼兰公主.他是绝对不会让他的楼兰公主离开他的地盘了!

  他的楼兰公主当然不是我,他的楼兰公主是迷一样的,没人知道她的过去与将来.他的楼兰公主无疑也是坚定的,也许,见了棺材,她也不会落泪,而此刻,她正挽着她同样身世如迷的儿子走在队伍的最前列,放在小说一路读(www.yiludu.cn)的首页许久

  全都疯了吗!我飞奔下楼,追逐人群,我不知道我要干什么,也不知道我能干什么.

  不祥的预感应验了!娄沙象个疯子一样冲将出来,手里握着一柄明晃晃的大刀, 朝他的楼兰公主叫嚣道:“我最后再说一遍!你今日胆敢踏出楼兰城半步,我就砍翻这里所有的人!!!”

posted @ 2008-09-21 00:53 小小it 阅读(143) | 评论 (0)编辑 收藏
Java多态初体验

Java多态初体验本文面向Java初学者,我们在教材上经常会看到Java是多态的,可是一般的教科书只停留在理论上,很少有实际操作。现在把多态个概念用代码简单描述一下,由于本人水平有限,所以难免有不足之处。
    首先我们有这样几个类,电脑,个人电脑,笔记本电脑。

java 代码
class Computer{   
       
    public void turnOn(){   
    }   
}  
现在有了电脑这个类,那么个人PC,笔记本都是继承他。

java 代码
class PC extends Computer{   
    public void turnOn(){   
        System.out.println("PC has turn on");   
    }   
}   
  
class NB extends Computer{   
    public void turnOn(){   
        System.out.println("NB has turn on");   
    }   
}  
我们看到,每个类都有一个 turnOn()方法,而在父类中这个方法是空的,子类中各自有不同的实现,到这里可能还不太明显。如果有另外一个方法,要接受这些类作为参数,就像这样

java 代码
class Test{   
    public void go(Computer computer){   
         computer.turnOn();   
    }   
}  
这个方法接收的是基类参数,当然我们是可以把子类传递给方法的,也应该这么做。

java 代码
go(new PC());   
go(new NB());  
这样他就会去调用具体子类的turnOn()方法,所以这两次调用的输出是不一样的.如果不用基类作为参数,我们想调用每个子类的turnOn()方法,那么就要些两个方法体一样的go()而接收不同的参数的重载。

java 代码
public void go(PC computer){      
         computer.turnOn();      
    }     
  
public void go(NB computer){      
         computer.turnOn();      
    }    
这样些也是正确的,但是这样会产生很多重复代码,而且也不易维护,当然这只是多态中最基本的一个部分,Java多态机制还有很多特性,关于这些建议大家看看 java编程思想(think in java)这本书,里面讲的很详细,这里只是很简单的描述了一下,还望个各位高手不要见笑。

posted @ 2008-09-20 05:20 小小it 阅读(166) | 评论 (0)编辑 收藏
给研究起步者的忠告

最近读到CMU教授Manuel Blum在给研究起步者的忠告一文中写到的内容,有些话语很有感触,摘录出来放在下面。

   1. 阅读:阅读的同时,用笔写下所读的内容,特别是在面对一些晦涩材料的情况下。
   2. 学习:写作和记录有助于提高你的能力和记忆力。
   3. 思考:遇到困难,自己完全有能力给自己找到解决问题的途径。理论束缚人的思想,实践解放人的思想。
   4. 方法:拿小的例子做实验,或者将问题放在一个假定的解决方案之中。
   5. 态度:无论你做什么,你得喜欢做它,以至于你可以在无人跟进的很长一段时间里,独立思考并研究它。
   6. 知识:应该对任何东西有所了解,并对某个东西彻底了解。
   7. 研究:专注于可以狭小到可以彻底理解的题目,然后坚持下去,就会越来越意识到,研究题目实际上已经包罗万象。
   8. 答案:往往我们不会得到预期的答案,答案可能是肯定或否定之外的其他东西。
   9. 困难:我们很难预料问题的答案。有时可能会被问题拖着,走向另外一个无法预料但正确的方向上。
  10. 盲点:所有人眼中都有盲点,但也会帮助塑造我们的智力和思维。
  11. 写作:首先要有东西可说,其次把它说出来,第三说完即止,最后拟一个正确的题目。
  12. 导师:并非所有导师都能阅读并读懂你的论文,但要保证同行可以读懂你的论文。

注:Blum教授是理论计算机学大师,同时也是美国国家科学院(National Academy of Sciences)成员,同时感谢东北大学郝宪文的翻译提供参考。

转载此篇文章做为开博第2篇,与自己和大家共勉。

posted @ 2008-09-20 05:17 小小it 阅读(152) | 评论 (1)编辑 收藏
08年Java开发者最迫切的五个期望

不少人为自己是Java开发者中的一员而感到骄傲,新年伊始,大家一定对这个与自己息息相关的语言和平台有不少的期待。以下为2008年Java开发者五个最迫切的期待,可能其中有不合你意者,但相信大多数Java开发者会对此认同:

JavaFx不再只是空谈

在2007年的JavaOne上,我们听到了一个救世主——JavaFx,不幸的是,当初的所有许诺却没有成为现实。希望2008它能成为一个真正的、简单的、可用选择,从而Java开发者不必在富交互技术领域无“本宗”技术可选。

Glassfish成为应用服务器的选择

Glassfish是一款非常好的开源应用服务器和平台,也是第一个遵从Java EE 5标准的,它强大而有效。然而在企业端它还不被熟知,许多企业主管甚至从未听说它。即使Java开发者,很多也从未下载使用过,甚至部分人还没有用就在印象中觉得它不够正规。希望2008年开发者能够有效利用它。

重量级/轻量级(Lightweight/Heavyweight)之争当停止

由于Java EE正不断吸取各种框架、工具、库等的优点,开发方法变得更加直接和简单,所以传统的所谓的重量级Java和轻量级之间的区别也越来越模糊。然而此间关于重量级和轻量级的争论仍未停止。

Google青睐Java,希望Apple也能

iPhone非常风靡而且许多iPhone应用正在开发,然而迄今Java仍然是iPhone的毒药,希望08年这一局面可以改观。Google已经通过它众多的Java API和服务帮助了全世界的Java开发者,这也再一次证明,强者用之则发扬广大。所以希望包括Apple在内的更多强者可以用Java。

弃糟粕、大统一

凭借Java的枝繁叶茂,再复杂的任务Java都可以提供很好的解决,然而它也因为自身分支和技术的太过丰富而使开发者迷乱。Java开发者花费了几年时间去弄清楚一大堆商业和开源框架、工具、库……希望在2008年,其中的一些可以被废弃。虽然专政(指Java统一)是有害的,但一个统一的领土有更多的优势。

 

文章来源:一路读:http://www.yiludu.cn/

posted @ 2008-09-20 05:15 小小it 阅读(212) | 评论 (1)编辑 收藏