SUGA's profileIMHOPhotosBlogListsMore Tools Help
感谢访问!
Please wait...
Sorry, the comment you entered is too long. Please shorten it.
You didn't enter anything. Please try again.
Sorry, we can't add your comment right now. Please try again later.
To add a comment, you need permission from your parent. Ask for permission
Your parent has turned off comments.
Sorry, we can't delete your comment right now. Please try again later.
You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
Complete the security check below to finish leaving your comment.
The characters you type in the security check must match the characters in the picture or audio.
SUGAwrote:
听法听法,走法走法,看法看法~
June 14



Click for Shanghai, Virginia Forecast



您是第Web Counter位访客

IMHO

工作学习见闻 技术分享
May 31

大学里小偷最爱偷的十样东西

在大学里,总是有很多东西,原来是属于你的,然后莫名其妙就再也找不着了,据国家小偷协会不完全统计。在大学里,他们最愿意偷的东西有以下几种。
第十位:被子
可能有很多人不理解为什么被子能入选,我给大家解释一下,首先要从学校说起。一般来说,大学一进校,学校就会经我们准备好被子等生活用品,当然是得自己出钱的,想要学校白送,除了把你遣送回家以外,是不会白送的。再说被子的事情,被子因为是学校统一发的,所以花式是一样的,偷了也没人会知道,你怎么查也是查不到的。然后说怎么个偷法,一般来说,学校的寝室不会都是阳面,在阴面的同学就会把被子拿到天台上去晒,然后也不会陪着被子在上面晒。别的同学呢,看好机会,上去把被子拿了,你说这事儿,你怎么查?
失主需要度:10
偷窃难度:3
第九位:洗发水
其实这个到没什么好说的,大多数都不是别人蓄意要偷。一般来说,有两种情况会被偷,第一,自己去洗澡,忘到冲凉房了,过了一天还想起来。这样的洗发水,要是不被偷,那才怪了,有一次,我的牙刷没拿回来,都不见了,这事儿没地儿说理去。第二,哥们打球回来,然后自己的洗发水用完了,一身汗也不想出去,自己寝室找不到,就去别的寝室打一瓶,用谁的不是用啊。但是回来之后,怎么也想不起,到底是拿的谁的,然后就用了。这你也不好怪别人,点儿被不能怪社会啊。
失主需要度:8
偷窃难度:2
第八位:书
窃书,也是偷书的一种。最好是把书偷去了你能自己看看,要是自己不看,直接去旧书市场,一块一本给卖了,那真的很不地道。现在的书大家都知道,你抄我,我抄你的,还老贵,买10本同一专业的书,你总结一下,最多有5本是自己创新的,还有5本,都是把这5本的书,这找一段,那找一段合在一起的,和我们写论文是一样的。在教室,一不小心书就没了,这很正常。
失主需要度:10
偷窃难度:5
第七位:钱包
钱包这东西吧,也不好说,也不能说是大学里容易被偷,这玩艺儿到哪儿都容易被偷,我可不是说的瞎话。偷钱包是个高级工种,一般人还真不会偷就是了,传说中,还得食指和中指一样长。这可不是朝夕之功啊,台上一分钟,台下十年功,要是被捉到,别提多惨了。现在都不把小偷当人,都往死里打。
失主需要度:9
偷窃难度:8
第六位:饭卡
这个,你只要在食堂小心一点儿就好了,在别的地方,也没什么。关键是你在食堂的时候,不能把饭卡挂在胸前。我见到一个最狠的哥们,可能是开玩笑啊,不过大家还是引以为鉴的好。一个同学刚打好饭,在那个搞饭盒呢,把饭人多,挤嘛,第二个打饭的同学上去,打了饭,随手从第一个同学胸前拿了卡就刷了。如果是认识还好,要是不认识,这也太狠了。所以饭卡这个东西啊,不但要防被偷,还得防盗用。
失主需要度:7
偷窃难度:7
第五位:手机
看看《天下无贼》吧,那是对手机被偷最完美的诠释。现在一般大学生身上最值钱的也就是手机了,偷别的也不值几个钱,所是手机是很容易丢的。
失主需要度:9
偷窃难度:6
第四位:电子辞典
上自习的时候,谁不打个盹儿啊,泱泱中国都还有打盹儿的时候。这一睡东西就给丢了,很正常。上回哪儿看了个校园的短片就是这样的,上自习,别的也没什么值钱的东西,也就电子辞典了。我不是有意说家景不好的同学,不过,他们是经常干这种事情,因为小偷是不会去自习室的。
失主需要度:5
偷窃难度:6
第三位:自行车
不管多少人给你看车,该丢还得丢。大学城里的自行车,偷来买去,总数从来没变过,在变的只有车的主人。如果你看见一辆自行车很像你的,但是颜色不对,那你上去用钥匙刮一下,没准儿就能刮出个你熟悉的颜色。
失主需要度:4
偷窃难度:7
第二位:足球
经常踢球的朋友可能都有过丢球的经历,当然也包括篮球了。一个人,抱个球去踢,想加到别人一伙里,别人同意了,但是别人有球,就把自己的球放到边上。一阵拼杀之后,夕阳西下,一找自己带来的球,没了!就是这么回事儿,你别说,现在的球还挺贵,我记得我在高中踢15块的足球,我们班,一个周踢坏一个,现在到大学来,踢150的足球,一学期不见3个。
失主需要度:6
偷窃难度:4
第一位:女朋友
大学男生,什么都是公用的,拖鞋,床,电脑,烟,当然也有女朋友。女朋友这个吧今天还是你的,明天就不知道她在和谁在一起了。大学男生基本上都是要丢一把女朋友的,就算毕业还没来得及丢,毕业后也过不了多久就会丢的。不过也没什么,这个吧,容易丢也容易找,不过找回来的不是自己的,但是都是女朋友啊,无差别。我想这个不用我再多做阐述了吧?
失主需要度:10
偷窃难度:0

30 million Chinese currently suffer from depression

Just 10 percent of the 30 million Chinese currently suffering from depression are getting proper medical care due to a lack of psychiatrists and social prejudice against mental illness, experts have said.

At a meeting in Shanghai last week, mental health professionals said that China has just 17,000 registered psychiatrists, or one for every 76,000 people.

Most Western countries have a 10-times better ratio.

Hao Wei, vice-director of the Chinese Psychiatrists' Association, said that more than 60 percent of those currently suffering from depression could greatly benefit from proper medication or professional psychiatric help.

"But there are just too few doctors available," Hao said, adding that investment in mental healthcare was also insufficient.

Hao said that about 25 percent of depression cases are first diagnosed by physicians.

"We need to help our physician colleagues recognize the early signs of depression, so that they can refer those patients to psychiatric professionals," Hao said.

However, the greatest problem, Hao said, comes from society, in the shape of the widespread prejudice people have toward those with mental health problems.

Because of public prejudice, many patients are reluctant to visit hospitals specializing in mental care, he said. As a result, 75 percent of all anti-depressants are prescribed by physicians.

Some patients are reluctant to take such pills, as they are concerned about the side effects, Hao said.

The economic cost of depression, in terms of medical bills and lost manpower, is about 60 billion yuan a year, experts said.

A survey conducted recently in Zhejiang and Hebei provinces found that depression was more prevalent in rural communities. Women were also more likely to suffer from it than men, the survey said.

girl of consideration

If you kiss her, you are not a gentleman 吻她吧,不君子

If you don't, you are not a man 不吻吧,不象

If you praise her, she thinks you are lying 夸她吧,你欺

If you don't, you are good for nothing 不夸吧,你笨蛋

If you agree to all her likes, she is abusing 她吧,你气管炎

If you don't, you are not understanding 吧,不善解人

If you make romance, you are an 'experienced man' 太浪漫,疑你老

If you don't you are half a man 矩,魅力不足

If you visit her too often, she thinks it is boring 常看她,招她厌烦

If you don't, she accuses you of double crossing 少去点,怨你猎艳

If you are well dressed, she says you are a playboy 穿得好,你花心

If you don't, you are a dull boy 邋遢些,缺个心眼

If you are jealous, she says it's bad 吃醋吧,你太狭隘

If you don't , she thinks you do not love her 大度点,你不

If you attempt a romance, she says you didn't respect her 吧,不尊重

If you don't, she thinks you do not like her 安分吧,不够爱宠

If you are a minute late, she complains it's hard to wait 了,她等得

If she is late, she says that's a girl's way 了,女孩特

 

May 23

Laughter is Good for the Heart

Laughter is good for the heart because it prolongs life while depression increases the risk of an early death, according to two new studies. 

  A good bout of laughter every day provides similar cardiovascular benefits as exercise because it stimulates the blood flow, said Michael Miller, who headed one research team at the University of Maryland. 

  On the other hand, depression -- or the lack of laughter -- is often linked to unhealthy habits such as smoking and drug addiction and increases the risk of death by 44 percent, said Wein Jiang, who led a study of 1,000 heart patients for the University of North Carolina. 

  Miller said laughter produced a "magnitude of change ... in the endothelium ... similar to the benefit we might see with aerobic activity, but without the aches, pains and muscle tension associated with exercise" 

  While laughter should not replace exercise, he said, "We do recommend that you try to laugh on a regular basis. Thirty minutes of exercise three times a week, and 15 minutes of laughter on a daily basis is probably good for the vascular system." 

  参考译文:

  美国科学家的两项最新研究结果显示,笑能使人精神愉悦,同时还对心脏大有好处;相反,心情沮丧则不利于身体健康,甚至会增加早死的危险。
 
   其中一项研究的负责人、美国马里兰大学的迈克尔·米勒表示,笑给心血管带来的好处就像锻炼可以给心血管带来好处一样,因为笑可以促使血液流通。而北卡罗 莱纳大学的另一项研究则表明,心情沮丧或缺少笑容却常常与诸如抽烟、吸毒等不健康的生活习惯联系在一起,同时还会将死亡的危险增加44%。 

  对此,米勒表示,笑会在心内膜内引起某种变化,其效果和做有氧运动时差不多,但笑可以使我们远离由运动带来的伤痛和肌肉紧张等不良影响。 

  但他同时也表示,笑也不可能取代体育锻炼,两者应该有规律地同时进行。他说:“我们建议人们一周进行3次体育锻炼,每次30分钟;另外,每天要笑15分钟,这样会对人们的脉管体统大有裨益。”

The New Generation in Japan


日本的新一代

IN THIS ARTICLE: Japanese students seem to be losing patience with work ... (and) prefer easy jobs without heavy responsibility.

本文简介:日本学生似乎正对工作失去耐心(而且)更喜欢无需负重大责任的轻松工作。


[1]Japan's post-World War II value system of diligence, cooperation, and hard work is changing. Recent surveys show that Japanese youth have become a "Me Generation" that rejects traditional values.

[2] "Around 1980 many Japanese, especially young people, abandoned the values of economic success and began searching for new sets of values to bring them happiness," writes sociologist Yasuhiro Yoshizaki in Comparative Civilizations Review. Japanese youth are placing more importance on the individual's pursuit of happiness and less on the values of work, family, and society.

[3] Japanese students seem to be losing patience with work, unlike their counterparts in the United States and Korea. In a 1993 survey of college students in the three countries, only 10% of the Japanese regarded work as a primary value, compared with 47% of their Korean counterparts and 27% of American students. A greater proportion of Japanese aged 18 to 24 also preferred easy jobs without heavy responsibility.

[1]日本二战以后形成的勤奋、合作和努力工作的价值体系正在发生变化。最近的调查显示,日本青年已变成了拒绝传统价值观的自我一代

[2]“1980年前后,许多日本人,特别是年轻人,摒弃了经济上成功的价值基准,开始寻找能给他们带来幸福快乐的新的价值准则,社会学家吉崎康宏在《文明比较评论》一书中这样写道。日本青年人现在越来越重视追求个人幸福而越来越少关注工作、家庭和社会的价值基准。

[3]日本学生似乎正对工作失去耐心,而美国和韩国学生却不是这样。在一项1993年的对这三个国家的高校学生进行的调查中,只有10%的日本人认为工作是一个主要的价值体现物,而韩国人和美国人分别是47%和27%。年龄在1824岁的大多数日本人还更喜欢无需负重大责任的轻松工作。

[4] Concern for family values is waning among younger Japanese as they pursue an inner world of private satisfaction. Data collected by the Japanese government in 1993 shows that only 2304 of Japanese youth are thinking about supporting their aged parents, in contrast to 63% of young Americans. It appears that many younger-generation Japanese are losing both respect for their parents and a sense of responsibility to the family. Author Yoshizaki attributes the change to Japanese parents' over-indulgence(过分溺爱) of their children, material affluence, and growing concern for private matters.

[5] The shift toward individualism among Japanese is most pronounced among the very young. According to 1991 data from the Seimei Hoken Bunka Center of Japan, 50% of Japanese youth aged 16 to 19 can be labeled "self-centered(以自我为中心)", compared with 33% among those aged 25 to 29 To earn the self-centered label, the young people responded positively to such ideas as "I would like to make decisions without considering traditional values" and "I don't want to do anything I can't enjoy doing".

[6] Diminishing social responsibility, according to Yoshizaki, is tied to the growing interest in pleasure and personal satisfaction. A study comparing society-conscious youth from 1977 to 1990 found that the Japanese had slipped far behind(落后) American and Australian students. Only 11 % of Japanese aged 18 to 24 said they get personal satisfaction in doing something on behalf of(代表) society, according to 1993 data from the Japanese government, while four limes as many Americans said 50.

[7] Yoshizaki concludes that the entire value system of Japanese youth is undergoing major transformation, but the younger generation has not yet found a new organized value system to replace the old.

[4]日本小青年中对家庭价值基准的关心在逐渐衰退,取而代之的是追求个人内心世界的满足。日本政府于1993年搜集的数据表明,只有23%的日本青年想着要供养年迈的父母,与美国青年的63%形成鲜明对比。这显示出很多年轻一代的日本人正丧失对父母的重视和对家庭的负任感。作者吉崎康宏将这种变化归咎于父母对对孩子的纵容溺爱、物质的富有和对个人事物关注程度的增强。

[5]日本人向个人主义的转变在青少年中最为显著。根据日本生命保险文化中心1991年的数据,50%的1619岁的日本青年可被列为以自我为中心,则比之下在2529岁的青年中这一数字仅为33%。对诸如我作决定时无意考虑传统价值观我不想做我无法喜欢做的任何事情这样的想法持肯定态度为青年人赢得了以自我为中心的标签。

[6]吉崎康宏认为,社会责任感的削弱与个人满足和享乐的兴趣增长密切相关。一项从1977年到1990年对有社会意识的青年进行对比的研究发现,日本人远远落后于美国和澳大利亚学生。1824岁的日本人中,只有11%说他们从为社会做事中得到个人满足,根据1993年日本政府的数据,这么说的美国人是日本人的四倍之多。

[7]吉崎康宏得出结论:日本青年整个价值体系正在发生重大变化,但年轻的一代尚未找到一个新的有组织的价值体系来取代旧的。

巧用自言自语法提高英语口头表达能力

      本文讲述了“自言自语法”在提高学生英语口语能力中的重要性及如何巧用“自言自语法”,并在调查分析的基础上进一步提出了“自言自语法”确是一种能有效提高学生英语口语力且普遍运用的英语口语训练方法。
    大学英语课程的教学目的之一是培养学生的知识能力和用英语进行口头交流的能力。作为一种教学手段,口语训练是培养阅读和写作能力、学习语音、语法和词汇的 重要方法。一般来说,衡量一个人英语口头表达能力主要看以下几个方面:(1)语言的准确性(accuracy)和得体性 (appropriateness);(2)语音(pronunciation)、语调(intonation)是否正确,口齿是否清楚;(3)话语组织 (discourse management)是否合理;(4)口语表达的流利程度(fluency);(5)语法(grammar)是否正确,用词是否恰当,语言是否符合英语 表达习惯。这些是衡量英语会话能力的主要标准,针对这些标准,要提高英语口头表达能力,就要采取相应的训练方法,方法恰当了,就能起到事半功倍的效果。

   一、何谓“自言自语法”?

   “自言自语法”,即以自己跟自己交流的方式,促成英语口语能力提高之方法。它不受时间及其他交流因素的限制,只要有一个属于你的空间,自己对着自己用英语讲就可以了,此方法是正常课堂英语口语训练的有益补充。

   二、如何巧用“自言自语法”进行英语口

   1、自主创造语言环境

    “自言自语法”练习中,你可以随心所欲地创造语言环境。在自己的房间里,没有人会笑话你,尽可以大胆他说。你可以在散步时说给风儿,说给花草树木;你可以 在欣赏影片时跟着主人公倾诉喜怒哀乐;你可以在睡前或一觉醒来时说说自己的憧憬,描绘自己的梦境。总之,你可以在任何时候、任何地方采取适当的语速和音 调,随心所欲他说。

   2、善于模仿


  采用“自言自语法”提高自己的英语口语能力要学会模仿。模仿的原则: 一要大声模仿。这一点很重要,模仿时要大大方方,清清楚楚,一板一眼,口型要到位,不能扭扭捏捏、小声小气地在嗓子眼里嘟嚷。二要仔细模仿。优美的语音、 语调不是短期模仿所能达到的,对于有英国英语基础的人学说美国英语也是如此,对于习惯于说汉语的人学说英语则更是如此。此外,模仿时还要有耐心,有信心, 有恒心,不能有任何松劲畏难情绪,要相信自己完全有能力模仿得更好。

  3、及时复述

  复述方法有二:一是阅读后复 述。阅读后复述就是在阅读完一段文章或一篇文章后,用自己的语言采用“自言自语”的方式来表达文中的内容。你可以在复述时使用文中的某些内容,但应尽量避 免完全背诵;你也可以在复述时使用文中出现的关键词或部分句型,作为复述的线索,帮助自己较完整地复述所读材料。二是听磁带或看影片后复述。这种方法既练 听力,又练口语表达能力,采用此种方法训练时,最好使用磁带或影片中的原话来复述,这样可以较准确地矫正自己的语音和语调,体味地道的英语口语。在说的过 程中,应尽量避免出现语法错误。刚开始练习时,因语言表达能力、技巧等方面的原因,往往复述接近于背诵,但在基础逐渐打牢后,就会慢慢放开,由“死”到 “活”,在保证语言正确的前提下,复述可有越来越大的灵活性,如改变句子结构,转换表达方法,用自己在课堂上新学的词汇和句型来替换一些不常使用或难于理 解的东西,对于自己读音掌握不准的词汇可以不用,等复述完后再通过查词典或听录音进行正音。

  4、 有目的地去选择说的材料

   开始练习“自言自语法”时,笔者建议你认真选择所说材料。开始时,你可以练习复述小故事,语言应尽量生动、简练,有明确的情节,这样可以帮助你更好地把 握语言的连贯性。你可以选你所熟悉或喜欢的内容说,你可以复述课堂上学习的内容,你可以说说你自己的向往。在选择说的内容时,亦应力求练习内容全面,你可 以说一封信,一张便条,一个建议,一份说明书,一篇演讲稿,一篇小议论,
一段求职信或感谢信等。你可以说说你的工作,你的家庭,你的业余爱好,以及你为什么学英语等等。有了一定基础后,可练习口译。看中文电影,用英语翻译主人公的话语。

   5、狠抓句型训练

  句子是说话的应用单位,所以培养口语能力就要狠抓句型操练。采用“自言自语”法训练英语口语亦要求如此。你可以使用自己在课堂上所学的句型练习“自言自语”,这样可以加深对所学知识的理解和运用,达到学用结合。

     6、说话时要带手势、动作、表情
    语言是人类交流思想的工具,但它不是唯一的工具。手势、动作、表情等都是交流思想的工具或辅助工具。在日常会话中,这几种思想交流的工具往往是同时使用 的。说话时绘声绘色,可以大大增强语言的生动性和感染力。自言自语时带手势、动作、表情,可以帮助你记忆和自然地使用英语。

  7、注意说的质量

   说的能力是一种技巧,是在大量的口语练习中培养起来的。学习说英语,由说得不好到说得比较好,是一个发展过程。练习过程中,要住意精泛结合,有的练习里 的错误不要纠正,不要过分注重准确性,以着重培养说话的流利程度;有的练习里的错误要纠正,以提高说话的质量。最好从一开始就注意说的质量,即保持说的正 常速度,流利自然。在开始练习“自言自语”时,不要过分放慢语速。一旦习惯于慢速度,听到正常的语速,也会感到吃力。在开始接近正常语速时,若感到困难, 宁肯多练几遍,也不可放慢语速。开始的时候接近正常,以后跟着快下去,就不存在困难。这里所说的速度,是指接近或比较接近英、美人说话的一般语速。

   笔者在2001年初对徐州师范大学工学院2000级共354名学生做过“自言自语法”自我评估问卷调查。数据显示:在354名参加调查的学生中,有 232人选择了喜欢“自言自语法”,占总人数的65%;有98位学生选择了比较喜欢“自言自语法”,占总人数的28%;只有24位学生选择了不喜欢“自言 自语法”,仅占总人数的7%。调查数据表明,采用“自言自语法”来提高英语口语表达能力受到学生的普遍欢迎。有不少学生在坚持“自言自语法”一段时间后反 映良好,这充分说明“自言自语法”确是一种提高学生英语口头表达能力且行之有效的方法。
中国人较内向,在公开场合羞于开口,尤其是当对自己要说的不够自信的时候。而“自言自语法”是克服害羞心理,提高英语口语交流能力的一个很好的途径。要创造练习口语的机会,逐步建立起言语自信,最终达到流利表达的目的,建议你不妨试一试“自言自语法”。
May 22

爱要怎么说出口

If only we’d never gone there, thought Alan. They were scrambling up the mountainside in the late afternoon heat. Alice was so tanned that she looked as if she had lived on the Mediterranean for months, while he, being fair, had turned a blotchy, peeling.

阿兰心里想道:要是我们从未到过那个地方该多好啊。在下午后半晌的炎热中,他们向山坡上爬去。爱丽丝被晒得黑黝黝的,看上去就像在地中海上住过几个月似的;而阿兰原本细皮嫩肉,这时身上已经变得红一块白一块,脱了一层皮。

He looked up at the mountainside, the path twisting upwards towards the cairn cross, the white heat bleaching the rock. Why on earth couldn’t they talk about it? Why couldn’t he even accuse her?

他抬头向山坡望去,只见小路盘旋而上通向那个圆锥形十字石碑,炽热的阳光将岩石晒得发白。他们究竟为什么不能谈那件事?他为什么连责骂她都不能呢?

He had thought it was going to be all right. But it was as if the heat had drained their love.

他原以为一切都会好的,但好像酷热已经将他们的爱抽干。

At home they had been so blissfully happy that he now realized it couldn’t have lasted. She comes to his school from the Midlands because her family had split up. An only child, living with her father, trying to look after him, lonely, depressed, anxious, she had come to Alan to be healed. At least, that’s what he liked to think. Had he healed her? No. Tom had, even though Alan loved her with all the passion. Now his hatred for both of them was as strong as his love.

在家时,他们曾是多么幸福。现在他意识到那不会再继续下去了。由于家庭破裂,她从内陆来到他的学校。作为独生女,她和她的父亲住在一起,尽力去照顾他。她孤独无依、无精打采、愁眉苦脸,经常到阿兰那里去排除忧伤。至少他喜欢这样认为。他为她解忧了吗?没有。是汤姆,即使阿兰曾付出所有的激情爱着她。如今他对他们俩的爱就像他的恨一样强烈。 “Come on!”Alice had turned back to him, waving impatiently.

跟上!爱丽丝转身向他喊,不耐烦地挥着手。

“Coming,”Alan looked at his watch. Five, The crickets would start singing soon. He walked on, the sweat pouring into his eyes. Knowing she had opened the bottle of mineral water. Would she let him catch up with her? An even greater misery seized him. It reminded him of the night he made himself drunk on the rough local wine his parents bought in the village. His heart had ached then, too, and his sense of loss had increased as he relived each minute of a day when Tom and Alice had seemed to draw closer and closer together.

来了。阿兰看了看手表。已经5点了。蛐蛐儿马上就要开始鸣唱了。他继续向上走,汗水源源不断地流到了眼里。他知道她已经打开那瓶矿泉水。她会让他跟上她吗?一种更大的痛苦折磨着他。这使他想起那天晚上他用父母亲从村里买的粗制的当地酒将自己灌醉的情景,那时他的心也在发痛。每当他想起爱丽丝和汤姆越来越亲近的时候,他的失落感就会与日俱增。

He walked faster. Here, a few miles away on the bare mountainside, there was arid space, and the olive groves, clustered in the stone-cluttered valleys below.

他走得越来越快。他为山顶上那些中世纪的城堡而欢呼雀跃。放眼望去,离那座山几里远的地方有一块空地,在山谷的乱石丛中生长着一小片橄榄林。 “Come on!”

跟上!

“Coming.”

来了。

Alan strode doggedly on, looking down at his red, peeling legs, thinking of Tom’s strong, straight, brown ones.

阿兰仍顽强地大步前行,他低头看了一眼自己被晒红的、脱了皮的两腿,想起了汤姆强健挺拔的棕色的双腿。

Suddenly he had turned the corner by the stone shelter. He could see her waiting for him. If Tom were here, they would be together, mocking him, looking at each other, leaving him alone. As he strode self-consciously on Alan focused his mind on her.

突然,他拐到石头后面一块隐蔽的地方。他看到她正在等他。如果汤姆也在这里的话,他们一定会站在一起嘲笑他,相互凝望着,把他丢在一边。当他拘谨地向前走的时候,他将注意力都集中在她的身上。

“Where’re we going to camp?”She was sitting on an outcrop, her slim body supple and salt-caked. Her legs were swinging and he longed to run his hands over them. Instead he imagined Tom doing that and hot, angry tears filled his eyes.

我们到哪里去宿营?她坐在一块突出的岩石上。她的苗条的身材丰满,咸咸的。她的腿在那里晃来晃去。他真想将自己的手在那上面滑动。而他却想象着汤姆那样做的情景。顿时,愤怒的泪水充满了他的眼睛。

“Santa Caterina.”

圣卡塔林纳。

“What’s that?”

那是什么?

“It’s a deserted monastery, down in the valley. Amongst the fir trees. Over there—look, you can see it.”

是一座破庙,在山谷下面,杉树丛中。在那里——看,你可以看到的。

“Oh yes.”She turned her head. When he did look he was shocked to see how beautiful she was, like a goddess.

噢,是的。她转过头。当他真正拿眼去看她的时候,她看上去是那样美,像一尊女神。

“Won’t that be spooky?”she asked in the slightly broken voice that he had always found so sexy.

那不可怕吧?她用略微沙哑的声音说。他发现她的嗓音竟是那样性感。

God, how he loved her. Why couldn’t he just take her in his arms now? That could solve everything. But there seemed to be an impenetrable barrier around her—as if she was sealed away by Tom.

上帝啊,他是多么爱她,现在他为什么不可以把她揽在怀里呢?这样,一切问题都会迎刃而解的。但是,好像她周围有一种难以逾越的障碍——就像被汤姆密封了起来。

“The valley’s dangerous,”said Alan, hoping to frighten her, to provoke reaction.“If the clouds come down there’s no way out. Sometimes for days.”

这个山谷很危险,阿兰说,希望吓住她,引起她一种反应。如果乌云压下来就会无路可走了。有时会持续好几天。

“Is there anywhere else to camp,”asked Alice.

还有其它地方可以宿营吗?爱丽丝问道。

“Not really.”Alan was certain she’d rather be with Tom. Yesterday he had seen them sitting on a wall together outside the villa. Their ankles had been entwined. He had wanted to grab Tom’s legs and pull him off. He would hurt his brother—and Alice would be sorry . It would be her fault.

说不准,阿兰敢肯定她一定会宁愿和汤姆在一起。昨天他曾见他们一起坐在别墅外的一堵墙上,他们的脚踝曾缠绕在一起,他曾想拽着汤姆的腿把他拉下来。他会伤害自己的弟弟。爱丽斯会感到内疚。那是她的过错。

“Let’s go,”said Alan quickly.

我们走吧,阿兰飞快地说。

“How far is it?”she asked.“I’m whacked.”

还有多远?她问,我一点劲儿也没有了。

“Half an hour.”

半小时。

“Can we eat them?”Her voice was a little plaintive. Alan noticed with satisfaction that she was becoming dependent on him again. But he knew that once they were off the mountain she would be with Tom. For a crazy moment he imagined Alice with himself living in the mountain valley together. Always. Trapped perhaps by some magical force that wouldn’t let them leave.

我们能吃点东西吗?她的声音有点儿伤感。阿兰心满意足,注意到她正在再次依靠他。但他知道一旦他们离开这座大山,她就会和汤姆泡在一起。一时间,他竟荒唐地想象着爱丽丝和自己一起居住在这个山谷,直到永远。或许是被某种魔力困在这里,不让他们离开。

The monastery was square-roofed, austerewith barrack windows. There were fish tanks at the back and a terrace on which the monks would have walked.

那座庙是方顶、木窗,十分简朴。庙后面有一些鱼缸,还有一个平台,和尚可以在上面随意走动。

Their feet on the stones made the only sound. Santa Caterina was utterly still. A swift rose soundlessly over the slate roof and the heat shimmered on the roughcast walls. They lay down, their rucksack still on their backs, passing the water bottle, almost dozing.

四周只有他们踏在石头上所发出的声响,圣卡塔林纳万籁俱寂。一朵怒放的玫瑰在石板屋顶无声无息,亮光在粗糙的墙壁上闪烁。他们躺下来,递过水瓶,旅行包仍背在背后。他们几乎昏昏欲睡。

Suddenly she sat up and looked him with surprising tenderness. Alan’s black mood eased slightly.

突然,她坐起来,用令人吃惊的温柔目光凝视着他。阿兰的难受情绪稍微得到了缓解。

Have they all gone then?”asked Alice.

他们都已经走了吗?爱丽丝问道。

“Yes. I don’t know when. A long time ago.”

是的。我不知道是什么时候走的。好长时间了吧。

She was lying back, her eyes closed. He could talk to her now. They could both talk the problem and solve it. They would reach each other. But he couldn’t make the move.

她仰面躺着,双目紧闭。他现在可以和她谈了。他们俩谈谈那个问题,然后就迎刃而解了。他们彼此都能探到对方,但他不能动。

“It would be terrible if it is pulled down,”Alice said idly, her eyes still closed.

如果庙被推倒,那将是多么可怕,爱丽丝懒懒地说,眼睛仍然闭着。

“It won’t be.”

不会的。

“How do you know that?”

你怎么知道?

“They patch it up from time to time.”

他们总是不断地修缮它。

“Why don’t they live here?”

他们为什么不住在这里呢?

“Don’t know. Maybe it’s too remote.”

不知道,或许这里太偏远了吧。

The desire to punish her had gone. But he daren’t touch her. He daren’t break the enchantment.

渐渐地,想惩罚她的欲望消失了,但他不敢触摸她,不敢轻易打破这令人着迷的时刻。

“The heat in the day. The cool evenings. It would be good to live like that.”

白天热,夜里凉。住在这种地方会很不错的。

“Live here?”

住在这里?

“Could we ever get permission?”

我们会被允许吗?

“I don’t know.”

我不知道。

“Just to see what it was like. I mean—”She half sat up.“Can we get inside?”She ran a finger gently down his peeling cheek.

先看看这里怎么样,我是说——” 她半坐了起来。我们能进去吗?她将一根手指轻轻地放在他脱皮的脸颊上。

Alan was taken aback but then he became aware that the crickets had started. How long had they been singing? He wondered.“Let go and see.”

他吃了一惊,随后意识到蛐蛐儿的鸣叫声已经响起。他不知道它们已经鸣唱了多长时间。让我们去看看吧。

They tramped round but as Alan already knew, there was no way in. In the end they came back and he lit a fire at the side of a small stone building. Other campers had obviously used the space and there were black marks on the walls.

他们绕过去,但正如阿兰早就知道的那样,无路可进。最后,他们又原路返回,在一座小型石头建筑旁生了一堆火。显然,其他野营的人也曾使用过这个地方,墙壁上还留有黑色的痕迹。

He cooked supper, using half a precious bottle of water to make it. The intimacy was still there but the talking was at an end. Alan could hardly contain his rising excitement. They had night together. Anything could happen.

他晚饭用去了半瓶珍贵的水,亲密关系依旧存在,但他们已经无话可说。阿兰几乎难以按捺那正在膨胀的冲动。他们一起拥有这个夜晚,任何事情都可能会发生。

Alan suddenly realized what he had to do. After supper, in the glow of the scented mountain twilight, he made coffee and they sat in silence. Darkness came slowly; the volume of the crickets seemed to increase. Still he had made no move.

阿兰突然意识到他必须得做些什么了。晚饭后,在芳香弥漫的大山的幽光中,他煮了咖啡,他们默默地坐在一起。夜幕慢慢地降临;蛐蛐儿的音量好像升高了。他仍没有行动。

She was lying in front of the fire, her body almost glowing. Alan reached out a hand and temporarily she took it. Then Alice yawned and stretched.“I’m turning in now,”she said.

她躺在火堆前,身上闪闪发光。阿兰伸出一只手,她暂时握住了他的手。接着,爱丽丝打哈欠,伸展身体。我现在要睡觉了,她说。

“More coffee?”asked Alan miserably.

再来点咖啡?阿兰痛苦地问道。

She kissed him on the forehead. “No thanks”

她在他的前额上吻了吻。不,谢谢。

Had he ever loved his brother Tom? He must have done sometime. Certainly he had always been jealous of him as a child. He the introvertTom the extrovert. Alan thought about his introverted personality. He could see quite clearly how he had failed so dismally with Alice and how Tom had taken over so easily. Tom was what she wanted. She didn’t want what he had.

他爱他的弟弟汤姆吗?有时他肯定爱,当然他总是忌妒弟弟,像一个小孩子。对他们俩来说,他性格内向,汤姆性格外向。阿兰想着自己内向的性格。他十分清楚自己如何在爱丽丝身上败得这么惨,而汤姆又是如何轻而易举便得到了她。汤姆正是她需要的那号人,她并不需要他这种人。 Gloomily, Alan climbed into the sleeping bag and drifted off to sleep. Beside him Alice slept, her breathing seeming to keep in time with the insistent beat of crickets.

阿兰闷闷不乐地钻进自己的睡袋,渐渐地进入了梦乡。躺在他身旁的爱丽丝也睡着了,她的呼吸声似乎和蛐蛐儿的鸣叫声保持同步。

Alan dreamt. The crickets had stopped. There was a slight breeze and the luminous hand of his watch registered just after two. Her sleeping bag was empty; Alice had gone. For a while he just couldn’t believe it. He sat up and felt the dark walls of Santa Caterina close in on him.

阿兰做了一个梦。蛐蛐声都停止了。一阵微风拂过。他的手表上的夜光针刚过了两点。爱丽丝的睡袋空了;她已经走了。好一阵子,他都无法相信这个事实。他坐起来,感到圣卡塔林纳的黑黢黢的墙壁将他团团围住了。

Then he was on the mountainside, stumbling blindly up the mountain path, hearing their laughter. Softly he crept up on them until he could see their bodies entwined. Alan’s anger rose to fever pitch and he rushed towards them. They fell apart. He sobbed as he had never sobbed since he was a child.

随后,他来到山边,踉踉跄跄地沿着山路盲目前行。听见他们的朗朗笑声,他轻轻地爬过去,看到两个身体紧紧地贴在一块。他感到痛苦万分,怒不可遏地冲向他们。他们猛地分开了。他低声啜泣,尽管他从孩提时起就从来没有哭过。

 She woke him anxiously shaking at his sunburnt shoulders.

她焦急地摇着他被太阳晒黑的肩膀,唤醒了他。

“What’s the matter”she kept asking over and over again“Alan, what’s wrong?”

发生了什么事?她一遍又一遍地问,阿兰,怎么了?

He stared up at her, blinking in the glow of the dying camp fire.

他抬眼盯着她,在篝火的余光中眨着眼睛。

“Nothing,”he said automatically.“Nothing really.”

没什么,他不由自主地说。真的没什么。

“But—”

可是——”

“Just a bad dream, that’s all.”

只是做了一个恶梦,仅此而已。

“You were crying.”Her voice was soft, tender, just like she used to be.

你刚才在哭,她的声音像过去那样温柔和气。

Alan turned over in his sleeping bag. “I’m fine.”he said.“Let’s get some sleep.”

阿兰在睡袋里翻了一下身,背对着她说:我很好,我们再睡一会儿吧!

Alan woke with the early-morning sun gently warming his face. He sat up, his head muzzy with the dream, his cheeks salty, tear-stained.“You were crying.”Her voice came back to him and he winced. Alice had felt sorry for him and he instantly smothered, patronized. He broke into a sweat of agony and apprehension. How could he ever open up a discussion with her now?

阿兰醒来时,晨阳暖暖地照在他的脸上。他满脸泪痕,咸咸的。他坐起来,脑海里还懵懵懂懂地萦绕着那个梦。你刚才在哭,她的声音又传了过来。他退缩了一下。爱丽丝已经感到对不起他了。他立即感到很压抑。由于巨大的悲痛和忧伤,猛地出了一身冷汗。现在他将怎样和她展开一场讨论呢?

He looked cautiously round her sleeping bag. It was empty and Alan froze. Then, gradually, he relaxed. It was just after eight and she had probably gone to find a place to go to the loo. He waited, calmly, gloomily, and then anxiously as she did not appear. Hurriedly Alan struggled out of his sleeping bag and began to search the grounds of the monastery. But there was no sign of her at all.

他小心翼翼地看了看她的睡袋,睡袋已经空了。阿兰一下子僵住了。随后,渐渐地,他又放松了。现在刚过8点,她也许是找地方方便去了。他平静地、忧郁地等待着,尔后还是不见她回来,就心急火燎起来。阿兰慌忙从睡袋里挣扎出来,开始在寺院里四处寻找。但踪迹皆无。

Panic set in as Alan scoured the grounds again and drew a blank for the second time. It was becoming increasingly obvious that she had walked out on him and was probably climbing down to Tom. But rather than feeling anger, Alan simply felt desolate. She hadn’t even left him a note. He went over and touched the inside of her sleeping bag. It felt cold.

当阿兰再次惊慌失措四处寻找仍然一无所获的时候,显然她已经不辞而别,很可能是下山找汤姆去了。阿兰感到的与其说是生气,倒不如说孤独。她甚至连一张纸也没有给他留下。他走过去将手伸进她的睡袋,里面冷冰冰的。

Surely she wouldn’t find her way back alone. Alan began to search again, this time through the tangled thickets of what might have been a herb garden. Something caught his eye. Lying on the ground was a small, shiny object. It was Alice’s bracelet.

她肯定无法独自找到回路。阿兰又开始找起来。这一次通过杂草丛生的灌木丛。某个东西引起了他的注意。躺在地上的是一个小小的、光亮的东西。那是爱丽丝的手镯。

Suddenly real fear clutched at him. Someone had come and abducted her. Or had Tom come to find her? But the bracelet?

突然,一种真正的恐惧袭上他的心头,一定是有人拐走了她,或者是汤姆来找她的?可是,手镯又怎么讲呢?

“Please God,”Alan muttered. “Let her be safe.”“Why hadn’t he looked after her? Why hadn’t he been able to reassure her? Alan now realized how he had locked himself into his own shell of rejection and jealousy. Tom no longer seemed a threat. All Alan wanted was Alice, and if only he could find her they would talk and talk and talk.”

求求你,上帝,阿兰喃喃道,保佑她平安。为什么他没有照顾她?为什么他没有安慰她?现在阿兰才意识到他以前是如何将自己锁进一个妒忌和沮丧的空壳里?汤姆看起来似乎不再是一种威胁。阿兰所想的全都是爱丽丝,只要能找到她,他们就会倾心长谈。

For the fourth time he began to search the grounds, the bracelet in his hands. Then , in a crevice on the broken stones of the terrace, he saw something bright and beady. Alice’s ring. And he knew how tight on her finger it was. Sweat ran down Alan’s face.

他开始第四次在地上寻找,千里拿着那只手镯,随后在一排房屋堆砌的石头缝里,他看见一件东西在发光——是爱丽丝的戒指,而且他知道那是紧紧地戴在她的手上的呀。阿兰的汗从脸上流了下来。

 “Alice,”he cried out. “Alice!?” No response. Alan began to run.

爱丽丝,他喊道,爱丽丝!没有回音。阿兰开始跑了起来。

It was only when he was back at the front door of the monastery that he realized there was one place he had not been to. His heart thumping and his throat dry, he went down the steps.

正当他惊恐地返回到那座庙的前门时,他意识到还有一个地方他没有去找。他的心砰砰直跳,嗓子发干。他走下台阶。

Now he ran eagerly forward, pushing his way through the foliage. He gave a gasp of relief. She was there, lying on the pine needles.

他急不可待地跑上前,推开树叶,看到她在那里,躺在松叶上,心里松了一口气。

“Alice.”

爱丽丝。

She woke slowly, sleepily, stretching in the sun. “Sorry—I fell asleep.”

她慢慢地醒来了,睡眼朦朦地在太阳下伸伸懒腰。对不起——我睡着了。

“Where the hell have you been?”

你究竟到哪里去了?

“I went for a walk.”

我出去走了走。

He held up the bracelet and the ring.“I found these.”He was angry, positive. She looked away.“Come on .Why did you do it?”I’ve been searching for you. I thought—I thought you’d been kidnapped or something. Been hurt?

他举起手镯和戒指。我找到了这些东西。他很生气,这一点是肯定的。她转移了视线。得了吧,你为什么这样做?我一直在找你,我还以为——我还以为你被绑架或者别的什么了呢。受到了什么伤害了吗?

“I’m sorry.”

对不起。

“That’s not enough.”

对不起就够了。

“I laid a trail.”

我留有痕迹。

“You did what?”He was outraged.

你到底做了什么呀?他怒气冲冲的。

“I wanted you to find me.”

我想让你找我。

“I was terrified—I thought—”

我当时很害怕——我还以为——”

“I’m sorry.” She stood up. “I suppose I wanted to frighten you.”

对不起,她站起来。我想我原来只想吓唬吓唬你。

“Why ?” he barked at her.

为什么?他大声问道。

She looked away again. “I didn’t think you wanted me any more.”

她又一次转移了目光。我还以为你不会再要我了呢。

“Wanted you?”

要你?

“You haven’t spoken to me. You seemed so cold. Indifferent somehow.”

你没有对我说过,你似乎很冷淡,在某种程度上无动于衷。

“But it’s you who were indifferent. ”

可无动于衷的是你。

She looked genuinely amazed.“I don’t know what you’re talking about.”

她看上去真的很吃惊。我真不知道你在说什么。

“I thought you wanted Tom. Didn’t want to be with me.”His voice broke.

我还以为你想要汤姆,不想和我在一块哩。他的声音沙哑。

“I thought you found him—more fun.”

我还以为你找他——开心去了呢。

“Him? Oh, he’s a baby. I was lonely, I suppose. You seemed so fed up with me. I didn’t realized it would —oh , Alan.” She got up and drew him to her , kissing him so hard on the lips.“You are such a bloody fool.” I love you—don’t you know?

他?噢,他还是一个小毛孩子。我很孤独,我想,你好像很烦我,我没有意识到那么——噢,阿兰。她站起来,将他拉向自己,深深地吻起了他的嘴唇。你真是个大傻瓜。我爱你——难道你不知道吗?

“Why did you come here?”he asked.

你怎么来到这了?”他问道。

“I was wandering about. I couldn’t sleep. Look—”She knelt down and stared at the Latin inscription on the two solitary graves.“Who are they?”she asked.

我是随便走走。我睡不着。瞧——”她跪下来,盯着前面的两座孤坟的拉丁碑文问道:他们是什么人?

“I don’t know. I’ve often wondered. Dom Carols Fuenta —he’s definitely a monk. But the odd thing is that he’s buried alongside a woman.” He paused and then went on.“Maria Degardes. He was buried in 1892. She was in 1894.”

我不知道。我也总是想知道。多姆·卡罗斯·福恩塔——他肯定是一个和尚,但奇怪的是,他和一个女人葬在一起。他暂停了一下,然后接着说道:玛丽姬·德加斯。他葬于1892年,而她葬于1894年。

“Were they lovers?”

他们是情人吗?

“I used to make up stories that they were.”

我过去经常想给他们编编故事。

“I was just thinking. A silly thought. I expect you’ll laugh.”

我刚才在想。是一个愚蠢的想法,我想你会笑我的。

“Try me.”

说说看。

“Suppose we lived here for the rest of our lives and when we died we were buried here. But in one grave. Together.”

假如我们今后生活在这里,我们死后就埋在这里,但要在一块。合葬。

Alan took Alice’s face in his hands and kissed her on the lips.

阿兰双手捧起爱丽丝的脸,在她的嘴唇上亲吻起来。

April 26

什么是企业家精神

        “一概念由法国经济学家-巴蒂斯特在1800年首次提出,即:企家使经济资源的效率由低高;家精神是企家特殊技能(包括精神 和技巧)的集合。或者家精神指企组织建立和经营管理企合才能的表述方式,它是一重要而特殊的无形生要素。例如,大的企家、 索尼公司始人盛田昭夫和井深大,他们创造的最大的不是收机,也不是条彩色像管,而是索尼公司和它所代表的一切;沃迪斯尼最大的 造不是《木偶奇遇,也不是《白雪公主》,甚至不是迪斯尼,而是沃迪斯尼公司及其使众快的超凡能力;尔顿大的造不是 之以恒的天天平价而是沃尔玛公司——一个能以最出色的方式把零售要领变成行组织

北京婚宴 PK 上海婚宴

洞房,闹还是不?主桌,坐父母是坐朋友?北京上海两座城市的婚礼俗居然好多都是截然相反的——北京人婚很少洞房,父母长辈领导坐主桌;上海人洞房会去豪酒店,主桌上坐的是没有婚的小青年。

最根深蒂固的差异,如果从视觉上来体会,那就是酒足饭饱走出酒店后,你是能继续看到太阳,是只能看到月亮?如果从时间上来比,那就是凌晨的候,新人始上紧发条,是准洗洗睡了

条不成文的矩:正午吉,新人入席,客人,立把北京新娘分。第一忍型:起得比高玉宝要早,凌晨就始化,翻着白眼人画 线睫毛;第二,撒型:本姑娘今不睡了,和姐妹搓麻将打牌,用完身最后一秒,反正今天上腺素分泌旺盛。熬夜、缺、欣喜、焦,皮得遭 多大的罪!所以我一直纳闷,那些面膜广告挖空心思弄意的人,怎没想北京新娘个角度来故事。

上海新娘就定多了,睡到台早新闻开播,再起来梳打扮也不。由于一般都是上五六点才席,一下子就比北京新娘多了五六个小,中午接了新娘到新房后,吃顿简单的午餐,小夫妻们还时间师摄一起出去拍外景,随后才哉游哉地到酒店。

上海人来,喜酒在中午,如果是西式自助餐,那是学洋派,能理解,要是把中式喜酒放在了中午,很多人的第一反肯定是家人非常拎不清(上海 不懂矩的意思)。这种对劲的感于北京人也是一,要是婚礼不是在正午,潜台词说出来就更不吉利,因那暗二婚

今年是婚旺年,良辰吉日,老矩也被迫放尺寸了,察一下两地有婚宴的新,正好相映成趣。

京制造的舆论调调——先吓,后安慰:比如,白天行婚宴的人太多太多,一旦婚只能从天津来,一旦天津司机在某桥处迷路了,一旦错过正午把新娘 贬为二婚负责不如,大家一起来打破婚赶早不赶传统观念,某某数据表明,上喝喜酒正在北京掀起一婚新

设计舆论攻略是——先安慰,后吓:比如,上海又增加了相当数量适合举办婚宴的星酒店和高境更好了,服更好了,菜品更好了。但是面子有 了,未必票子挺得住,4年前,上海人次婚只要花5万元人民,而如今平均每对上海新人婚的花已接近19万,全国最高,比第二名广州人多出5万! 所以你不妨考虑选择婚宴桌可以享受多少折扣,可以附送ABCD甲乙丙丁。精打算,量力而行,某某数据表明,中午喝喜酒正在上海掀起一 婚新

是否尚,可以翻来倒去地,不,中国新人婚到了一金的地,却是不争的事。上海婚花19万(包括新居装修但不包括房价)更是人看得心惊肉跳,和全国水平相比,超前消年数达到7年。

然,晚饭比午饭贵是一个理由,不有一个出血点在于:喜把婚礼折得越来越的,多半是女人,一旦表出像《老友》里Monica的婚礼 梦想迫症和婚礼策划偏狂,非得有个男人凉水,乱反正,让这群上海小姐们继续在空中漂着美着——很明,上海男人不具有这样资质,所以婚 礼的账单就只能一路上

到婚礼算的防死守,北京男人就比现实的根基,关键时候不心,况且老祖宗早就知道晚饭比午饭贵,大模作,赶早,反正包照收;小范上再搓一,人情翻番——头脑清新,眼光长远,在点上,北京男人反而比上海男人更精明了。
April 20

常识

除了书本上的知识之外,我们更要明白“常识”的重要。只有学问而无常识,与人谈话时,会缺少轻松平易的话题。有你在座,空气即会紧张严肃,你就成为不受欢迎的人物。所谓常识,包罗万象,一切都该去留神知道,才可使你活泼风趣,谈起话来左右逢源。

四川话字典

一、部位称谓

 头:脑壳; 后脑勺:后脑啄;鼻子:鼻孔;脸面:脸包儿;胳脯:手杆;手肘: 倒拐子;背部:背壳壳;臀部:勾子;骨头:kao老二;脚腕:颈颈儿;络腮胡:挂儿胡,窜脸胡;拳头:砣子,锭砣老二;膝盖:克膝头,克膝波踝;小腿:;连二杆,连巴肚子。

 二、天象称谓

 星:天星子 正午:对火晌午;冰雹:雪弹子;冰:凝冰。

 三、事物称呼

 被子:铺;蚊帐:罩子;雨伞:撑花;铁罐:鼎罐;斧头:开山;撮箕:鸳箕;肉:嘎嘎;上面:高头;底下:那个透脚;山那边:埂那边;吃饭:契饭;这个:正个、众个的;那个:罗个,那歪。

 四、畜禽称呼

 鸡:牲口;小鸡:鸡崽崽:母猪:窝猪;公牛:牯牛;母牛;公狗:伢狗;母狗:草狗;蚯蚓:曲鳝;蟑螂:偷没婆;晴蜓:洋丁丁;蜘蛛:波丝;蛤蟆:癞格宝;青蛙:喀马;鲢鱼:鲢巴郎;鸡蛋:饽饽;蝇:饭蚊子。

 五、一般称呼

  我:老子;妻子:婆娘;爸爸:老汗;妈妈:老娘子;妻子的哥哥嫂嫂:舅老官、舅母子;妻子的姐姐:姨妹;岳父:丈老汗;岳母:丈母娘;妹妹:妹儿、幺妹; 完结:煞割;吵架:割孽;打架:打捶;试一试:告一告;开玩笑:测坛子;谢谢:劳慰;吹牛:冲壳子;骗子:麻子;项用:关火;软和:粑和;价廉:香因;怎 么办:啷个弄;一会儿:一哈哈;纠缠不休:罗连人;倒霉:背时;丢脸:少皮;大方:舍得;别客气:莫架势;经常:扯常;如何:啷个、啷门的;何事:啥子; 粑场合:卵的;很甜:抿甜;清甜;邋遢:挖抓、派乃、楼净;玩一会:耍哈嘛;装怪相:你娃儿妖燕;自行车:洋马儿。喜欢抄人作品的,跟老子听倒,用了老子 的作品,还是要跟老子说一下哟,不然老子收拾你龟儿!嘿嘿

送情(送礼物)。烧锅(做饭),嘿嘿。。。。。。。。。懂不懂哇。嘿嘿

November 10

JAVA相关的名词解释 -转-

-A-
AJAX: [Asynchronous JavaScript and XML
,异JavaScriptXML]
annotation:
注解
AOP: [aspect-oriented programming,
面向方面]
argument:
参数
-B-
B2B: [Business-to-Business,
业务对业务]
BAM: [Business Activity Monitoring,
业务动监测]
BMP: [bean-managed persistence, Bean
管理的持久化]
BPEL: [Business Process Excution Language,
业务流程]
BPM: [Business Process Modeling,
业务流程建模]
build:
建立;编译
-C-
C2B: [Consumer-to-Business,
户对业务]
CAD: [Computer Aided Design,
算机设计]
CAM: [Computer Aided Modeling,
算机助建模]
case-insensitive:
大小写不敏感
case-sensitive:
大小写敏感
container:
容器
cluster:
集群
CMP: [container-managed persistence,
容器管理的持久化]
component:
件,部件
configuration:
配置
context:
上下文,
control:
控件
convention:

CORBA: [Common Object Request Broker Architecture
,公共求代理体系]
COS: [Common Object Services
,公共象服]
couple:
耦合
CRUD:
指数据操作create, read, update, delete
-D-
Daemon: [Internet
中用于件收的后台程序]
DAO: [Data Access Object,
数据访问对]
data:
数据
DBMS: [Database Management System,
数据管理系]
DDL: [Data Definition Language,
数据定义语]
Declarative Programming:
声明式
delegate:
委托
Dependency Injection:
注入
deploy:
部署
deserialize:
反序列化(也可译为反串行化),即取出
dialect: (
)术语
directive:
指令
DIT: [Directory Information Tree,
信息]
DML: [Data Manipulation Language,
数据操作]
DNS: [Internet Domain Name System,
因特网域名系]
domain:

DSL: [Domain-Specific Languages,
特定]
DTOs: [data transfer objects,
数据传输对]
-E-
EAI: [Enterprise Application Integration:
业应用集成]
ECC: [error correcting codes:
错误纠正代]
EIS: [Enterprise Information System:
信息系]
EJB: [Enterprise JavaBean,
JavaBean]
encapsulate:
封装
ESB: [Enterprise Service Bus,
务总线]
-F-
FAQs: [Frequently Asked Questions,
常提问题]
FIFO:
先出 [First in, First out]
fire:

firewall:
防火
framework:
框架
function:
函数
-G-
GoF: "
四人帮"名著Design Patterns-Elements of Reusable Object-Oriented Software的四名作者的""称。[Gang of Four]
granularity:
粒性,粒度
GUI: [Graphic User Interface:
形用接口]
GUID: [Globally Unique Identifier:
全球唯一标识]
-H-
hard-coding:
碥码
Hibernate: [
种为应用程序提供持久化服的框架]
-I-
IDE:
集成开发环 [Integrated Development Environment]
implement:
实现
internet:
因特网 (也可以不,原因:在中文境下已得到充分理解及)
intranet:
内部网
IoC: [Inversion of Control,
控制反]
-J-
JavaBean:
JCP: [Java Community Process, Java
社区研究]
JDBC: [Java DataBase Connectivity, Java
数据库连]
JDO: [Java Data Objects, Java
数据]
JES:
[Java Enterprise System, Java]
JFC: [JavaTM Foundation Classes, JAVA基础类集合了GUI组件以及其他能简化开发和展开桌面和Internet/Intranet应用的服务]
JOnAS: [ Java Open Application Server, Java用服]
JNI
: [ Java Native Interface , Java本地化接口]
JNDI: [Java Naming and Directory Interface, Java命名与目接口]
JTA: [Java Transaction API: Java
API]
JVM: [Java Virtual Machine: Java
]
JXTA: [
一个用于P2P开发的网络计算平台]
-L-
Laszlo: [
一个大量用于internet用程序的基于XML平台的]
LDAP: [Lightweight Directory Access Protocol,
量目录访问协议]
leverage:
均衡
-M-
MEPs: [message exchange patterns
,消息交模式]
meta:

metadata:
元数据
method signature:
方法
middleware:

mock:

modal dialog:
态对话
modular:
是模module的集合,它由多个独立的模构成。
modular organization: 组结
module:

MOM: [message-oriented middleware
,面向消息的中]
MVC: [Model-View-Control
,模型-视图-控制]
-N-
NDS: [Novell Directory Service
Novell]
NIS: [Network Information Service
,网信息服]
node:

-O-
ODMG: [Object Data Management Group,
象数据管理组织]
OGNL: [Object Graph Navigation Language,
图导]
OODBMS: [Object-Oriented Database Management System,
面向象数据管理系]
ORM: [object-relational (O-R) mapping,
系映射]
-P-
persistence:
持久化(使用SQL句在系数据中存数据)
POJO: [Plain Old Java Objects
简单初始Java]
POJI: [Plain Old Java Interface
简单初始Java接口]
procedural:
程的
profiling:
配置
prototype:
原型
-R-
RAD: [Rapid application development
,快速开发]
RCS: [Revision Control System
,修控制系]
RMI: [Remote Method Invocation:
程方法]
retrieve:

RIAs:
丰富的Internet用程序 [Rich Internet Applications]
RPC: [remote procedure calls
]
-S-
schema:
划,设计,方案
serialize:
序列化(也可译为串行化),即保存
session:

SOA: [Service-Oriented Architecture:
面向服体系]
SOAP: [Simple Object Access Protocol
简单对访问协议]
SPI: [Service Provider Interface
,服提供接口]
Spring:
SQL: [Structured Query Language
构化查询语]
Struts: [
基于MVC模式的Web用程序框架]
surrogate keys:
替代
-T-
tag:
标签
TDD: [Test Driven Development
测试驱动开发]
third-party:
第三方,泛指其他开发商,生商等
transaction:

Tomcat: [
一个非常有名的Java Web容器]
-U-
UDT: [user-defined column types:
字段]
use case:
用例
UI:
界面 (User Interface)
-W-
wizard:

Web service: (
可以不,原因:有名) [Web]
WS-addressing: [web service
]
WSDL: [Web Service Description Language: Web
描述]
WYSIWYG:
即所得 [What You See is What You Get]

November 08

TestNG version 5.3 has been released

TestNG version 5.3 has been released

Posted by: Ronald Mathies on 11? 02, 2006 DIGG
TestNG 5.3 has been released. TestNG is a unit test framework which can be used in combination with Java 1.5 annotations or javadoc annotations if you are still using Java 1.4.

One of the more interesting new features is the introduction of Annotation Transformers.

Annotation Transformers can be used to modify the content of the annotations while running tests. This is useful if the annotations in the source code are correct most of the time, but there are situations where you'd like to override their attribute values.

To get a clearer idea about the Annotation Transformers lets take a look at the the following example:
public class MyTest {
@Test(invocationCount = 2)
public void testMethodA() {
}

@Test(invocationCount = 3)
public void testMethodB() {
}
}
This test case contains two methods, in which both @Test annotations have the invocationCount attribute. Now, if you would want to change the number of times a given method is invoked, you normally would have to change the source code. By using an Annotation tranformer you can do this programmatically:
public class MyTransformer implements IAnnotationTransformer {
public void transform(ITest annotation, Class testClass,
Constructor testConstructor, Method testMethod) {
if (testMethod != null) {
String methodName = testMethod.getName();
if ("testMethodA".equals(methodName) {
annotation.setInvocationCount(10);
} else if ("testMethodB".equals(methodName) {
annotation.setInvocationCount(20);
}
}
}
}
Now, when the testcase is run the transformer will 'intercept' the call to the two test methods and it will first call the transform method on the MyTransformer class. This method will first check if the method name is equal to "testMethodA"; if this is the case then the invocationCount is changed from two to ten, which would have the effect that the test method is invoked ten times instead of two times.

To register the custom transformer it is sufficient to add a command line option:
java org.testng.TestNG -listener MyTransformer testng.xml
or programmatically:
TestNG ng = new TestNG();
ng.setAnnotationTransformer(new MyTransformer());
More information about the Annotation Transformer or other features take a look at the documentation for TestNG.

Message was edited by: joeo@enigmastation.com
November 03

HSQL入门及使用指南 转

HSQL 数据库引擎

HSQL 数据库引擎
开 放源码的数据库引擎―HSQL是基于Thomas Mueller的Hypersonic SQL项目。它完全是由Java是编写的同时也是一种广泛用于 嵌入式的数据库。它被包含在许多J2EE应用服务器中。在移动设备上,HSQL运行在PersonalJava和FP/PP平台上。HSQL是完全免费 的。你能自由地将它重新部署到你的应用程序中,这对移动应用程序来说是容易的。
HSQL提供一个支持%95JDBC接口和所有JDBC数据类型的 JDBC驱程。它支持事务,外键甚至Java存储过程。在HSQL中的表能寄存在内存中和保存在磁盘文件中。HSQL只有少于160-KB的存储器足迹 footprint。它也为PersonalJava设备发布了一个数据库管理控制台(经过Sharp Zaurus上的测试)
然而,HSQL缺少一些商业移动数据库上所需的高级性能和安全功能。更重要的是,HSQL不能提供任何同步解决方案。它也缺少一个为MIDP设备的解决方案。




1. hsql 学习
1.1. 学习目的
本文档是针对hSQL 数据库方面的基础学习,为了使项目组成员能够达到使用hSQL 数据库的目的。
1.2. 培训对象
开发人员
1.3. 常用词及符号说明
常用词:
hsql:一种免费的跨平台的数据库系统
E:\hsqldb:表示是在dos 命令窗口下面
1.4. 参考信息
doc\guide\guide.pdf

2. HSQL
2.1. HSQL 运行工具
java -cp ../lib/hsqldb.jar org.hsqldb.util.DatabaseManager
注意hsqldb.jar 文件的文件路径,最好能放到classpath 里面,或者放到当前路径下.
java -cp hsqldb.jar org.hsqldb.util.DatabaseManager

2.2. 运行数据库
启动方式: Server Modes and
In-Process Mode (also called Standalone Mode).

一个test 数据库会包含如下文件:
? test.properties
? test.script
? test.log
? test.data
? test.backup
test.properties 文件包含关于数据库的一般设置.
test.script 文件包含表和其它数据库,插入没有缓存表的数据.
test.log 文件包含当前数据库的变更.
test.data 文件包含缓存表的数据
test.backup 文件是最近持久化状态的表的数据文件的压缩备份文件
所有以上这个文件都是必要的,不能被删除.如果数据库没有缓存表,test.data 和test.backup 文件将不会存在.另外,除了以上文件HSQLDB 数据库可以链接到任何文本文件,比如cvs 文件.

当操作test 数据库的时候, test.log 用于保存数据的变更. 当正常SHUTDOWN,这个文件将被删除. 否则(不是正常shutdown),这个文件将用于再次启动的时候,重做这些变更.test.lck 文件也用于记录打开的数据库的事实, 正常SHUTDOWN,文件也被删除.在一些情况下,test.data.old 文件会被创建,并删除以前的.






2.3. Server Mode
java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb

命令行方式:


启动数据,数据库文件mydb,数据库名称xdb

也可以在 server.properties 文件中定义启动的数据库,最多10个
例如: server.properties:
server.database.0=file:E:/hsqldb/data/mydb
server.dbname.0=xdb

server.database.1=file:E:/hsqldb/data/testdb
server.dbname.1=testdb

server.database.2=mem:adatabase
server.dbname.2=quickdb
启动命令: java -cp ../lib/hsqldb.jar org.hsqldb.Server
运行结果如下



java 测试程序:
package test;
import junit.framework.TestCase;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestConnect extends TestCase {
Connection connection;
protected void setUp()
{
try {
Class.forName("org.hsqldb.jdbcDriver" );
connection = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb","sa","");


} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void testselect()
{
Statement stmt=null;
ResultSet rs=null;
try {
stmt = connection.createStatement();
String sql ="select * from test";
rs=stmt.executeQuery( sql);
while(rs.next() )
{
System.out.println("id="+rs.getString("id"));
System.out.println("name="+rs.getString("name"));
}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try {
rs.close() ;
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
protected void tearDown()
{
try {
connection.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
以上在eclipse 中测试通过.

2.4.In-Process (Standalone) Mode
不需要启动server
connection = DriverManager.getConnection("jdbc:hsqldb:file:E:/hsqldb/data/mydb","sa","");
这样就可以连接数据库。
只能在一个jvm 中使用,不能在多个jvm 中使用。
这种模式是在相同的jvm 下作为你的应用程序的一部分,运行数据库引擎。对大多数应用程序,这种模式运行会相当快,作为数据,不需要转换和网络传输。

主要的缺点就是不可能从外面的应用程序访问到默认数据库,因此当你的应用运行时候,你不能通过别的工具检查数据库内容。在1.8.0 版本中,你可以在相同jvm 中的线程中运行数据库初始化,并提供外面访问你的进程内数据库。
推荐在开发应用中使用这种方式。
连接串:
Windows: DriverManager.getConnection("jdbc:hsqldb:file:E:/hsqldb/data/mydb","sa","");
Unix: DriverManager.getConnection("jdbc:hsqldb:file:/opt/db/testdb","sa","");

2.5.Memory-Only Databases
当随即访问内存,数据库不固定时,可以采用内存的方式运行数据库,由于没有数据写到硬盘上,这种方式使用在应用数据和applets 和特殊应用的内部进程中使用,URL:

Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:aname", "sa", "");
2.6.Using Multiple Databases in One JVM
2.7.Different Types of Tables
HSQLDB 支持 TEMP 表和三种类型的持久表(MEMORY 表, CACHED 表,TEXT表)

当使用 CREATE TABLE 命令时,Memory 表时默认类型,它们的数据整体保存在内存当中,但是任何改变它们的结构或者内容,它们会被写到.script 文件中。这个脚本文件在数据库下一次打开的时候被对出,内存表重新被创建内容,根temp 表不同,内存表时持久化的。

CACHED 表通过CREATE CACHED TABLE 命令建立. 只有部分的它们的数据或者索引被保存在内存中,允许大表占用几百兆的内存空间。例外一个优点,在数据库引擎中,启动大量数据的缓存表需要花费少量的时间, 缺点是减慢了运行和使用Hsqldb 的速度。表相对小的时候,不要使用cache 表,在小表中使用内存数据库。

从版本 1.7.0 以后,支持text 表,使用 CSV (Comma Separated Value) 或者其它分隔符文本文件作为它们的数据源。你可以特殊指定一个存在的CSV 文件,例如从其它的数据或者程序中导出文件,作为TXT 表的数据源。 同时,你可以指定一个空文件,通过数据库引擎填充数据。TEXT 表将比cache 表更加效率高。Text 表可以指向不同的数据文件。

* memory-only databases 数据库只支持memory 表和cache 表,不支持text 表。
2.8. 约束和索引
HSQLDB 支持 PRIMARY KEY, NOT NULL, UNIQUE, CHECK and FOREIGN KEY 约束.





3. sql 命令
3.1. sql 支持
select top 1 * from test;
select limit 0 2 * from test;
DROP TABLE test IF EXISTS;
3.2. Constraints and Indexes
主健约束:PRIMARY KEY
唯一约束:
唯一索引:
外健:
CREATE TABLE child(c1 INTEGER, c2 VARCHAR, FOREIGN KEY (c1, c2) REFERENCES parent(p1, p2));

3.3. 索引和查询速度
索引提高查询速度,比提高排序速度。
主健和唯一所列自动创建索引,否则需要自己创建CREATE INDEX command。
索引: 唯一索引和非唯一索引
多列的索引,如果只是使用后面的,不使用第一个,将不会条查询速度。

(TB is a very large table with only a few rows where TB.COL3 = 4)
SELECT * FROM TA JOIN TB ON TA.COL1 = TB.COL2 AND TB.COL3 = 4;
SELECT * FROM TB JOIN TA ON TA.COL1 = TB.COL2 AND TB.COL3 = 4;(faster)

原因是 TB.COL3 可以被快速的估计,如果TB 表放到前面(index on TB.COL3):
一般规则是把缩小条件的列的表放在前面

3.4. 使用where 还是join
使用 WHERE 条件链接表可能会降低运行速度.
下面的例子将会比较慢,即使使用了索引:
SELECT ... FROM TA, TB, TC WHERE TC.COL3 = TA.COL1 AND TC.COL3=TB.COL2 AND TC.COL4 = 1
这个查询隐含TA.COL1 = TB.COL2 ,但是没有直接设定这个条件.如果 TA 和 TB 每个表都包含100 条记录,10000 组合将和 TC 关联,用于TC这个列的条件,尽管有索引在这个列上.使用JOIN 关键字, 在组合TC 之前,TA.COL1 = TB.COL2 条件直接并缩小组合 TA 和 TB 的行数, 在运行大数据量的表的结果是,将会很快:
SELECT ... FROM TA JOIN TB ON TA.COL1 = TB.COL2 JOIN TC ON TB.COL2 = TC.COL3 WHERE TC.COL4 = 1
这个查询可以提高一大步,如果改变表的顺序, 所以 TC.COL1 = 1 将最先使用,这样更小的集合将组合在一起:
SELECT ... FROM TC JOIN TB ON TC.COL3 = TB.COL2 JOIN TA ON TC.COL3 = TA.COL1 WHERE TC.COL4 = 1
以上例子,数据引擎自动应用于TC.COL4 = 1 组合小的集合于其它表关联. Indexes TC.COL4, TB.COL2 TA.COL1 都将使用索引,提高查询速度.
3.5. Subqueries and Joins
使用join 和调整表的顺序提高效率.
例如:, 第二个查询的速度将更快一些(TA.COL1 和TB.COL3都有索引):
Example 2.2. Query comparison
SELECT ... FROM TA WHERE TA.COL1 = (SELECT MAX(TB.COL2) FROM TB WHERE TB.COL3 = 4)

SELECT ... FROM (SELECT MAX(TB.COL2) C1 FROM TB WHERE TB.COL3 = 4) T2 JOIN TA ON TA.COL1 = T2.C1
第二个查询将 MAX(TB.COL2) 与一个单记录表相关联. 并使用TA.COL1索引,这将变得非常快. 第一个查询是将 TA 表中的每一条记录不断地与MAX(TB.COL2)匹配.
3.6. 数据类型
TINYINT, SMALLINT, INTEGER, BIGINT, NUMERIC and DECIMAL (without a decimal point) are supported integral types and map to byte, short, int, long and BigDecimal in Java.

Integral Types:
TINYINT, SMALLINT, INTEGER, BIGINT, NUMERIC and DECIMAL
Other Numeric Types:
REAL, FLOAT or DOUBLE
Bit and Boolean Types:
BOOLEAN: UNDEFINED,TRUE,FALSE
NULL values are treated as undefined.
Storage and Handling of Java Objects
Sequences and Identity

Identity Auto-Increment Columns:
The next IDENTITY value to be used can be set with the
ALTER TABLE ALTER COLUMN RESTART WITH ;
Sequences:
SELECT NEXT VALUE FOR mysequence, col1, col2 FROM mytable WHERE ...

3.7. 事务问题:
SET PROPERTY "sql.tx_no_multi_rewrite" TRUE

4. Connections
通用驱动jdbc:hsqldb: 下列协议标识(mem: file: res: hsql: http: hsqls: https:)
Table 4.1. Hsqldb URL Components
Driver and Protocol Host and Port Database
jdbc:hsqldb:mem:
not available accounts

jdbc:hsqldb:mem:.
jdbc:hsqldb:file:
not available mydb
/opt/db/accounts
C:/data/mydb

数据库路径.
jdbc:hsqldb:res:
not available /adirectory/dbname

jars files are accessed in Java programs. The /adirectory above stands for a directory in one of the jars.
jdbc:hsqldb:hsql:
jdbc:hsqldb:hsqls:
jdbc:hsqldb:http:
jdbc:hsqldb:https:
//localhost
//192.0.0.10:9500
//dbserver.somedomain.com
/an_alias
/enrollments
/quickdb

别名在server.properties or webserver.properties文件中指定
database.0=file:/opt/db/accounts
dbname.0=an_alias

database.1=file:/opt/db/mydb
dbname.1=enrollments

database.2=mem:adatabase
dbname.2=quickdb
In the example below, the database files lists.* in the /home/dbmaster/ directory are associated with the empty alias:
database.3=/home/dbmaster/lists
dbname.3=
4.1.Connection properties
Connection properties are specified either by establishing the connection via the:
DriverManager.getConnection (String url, Properties info);
method call, or the property can be appended to the full Connection URL.
Table 4.2. Connection Properties
get_column_name true column name in ResultSet
This property is used for compatibility with other JDBC driver implementations. When true (the default), ResultSet.getColumnName(int c) returns the underlying column name
When false, the above method returns the same value as ResultSet.getColumnLabel(int column) Example below:
jdbc:hsqldb:hsql://localhost/enrollments;get_column_name=false

When a ResultSet is used inside a user-defined stored procedure, the default, true, is always used for this property.
ifexists false connect only if database already exists
Has an effect only with mem: and file: database. When true, will not create a new database if one does not already exist for the URL.
When false (the default), a new mem: or file: database will be created if it does not exist.
Setting the property to true is useful when troubleshooting as no database is created if the URL is malformed. Example below:
jdbc:hsqldb:file:enrollments;ifexists=true
shutdown false shut down the database when the last connection is closed
This mimics the behaviour of 1.7.1 and older versions. When the last connection to a database is closed, the database is automatically shut down. The property takes effect only when the first connection is made to the database. This means the connection that opens the database. It has no effect if used with subsequent, simultaneous connections.
This command has two uses. One is for test suites, where connections to the database are made from one JVM context, immediately followed by another context. The other use is for applications where it is not easy to configure the environment to shutdown the database. Examples reported by users include web application servers, where the closing of the last connection conisides with the web app being shut down.


4.2. Properties Files
大小写敏感 (e.g. server.silent=FALSE will have no effect, but server.silent=false will work).
属性文件和设定存储如下 :
Table 4.3. Hsqldb Server Properties Files
File Name Location Function
server.properties the directory where the command to run the Server class is issued settings for running HSQLDB as a database server communicating with the HSQL protocol
webserver.properties the directory where the command to run the WebServer class is issued settings for running HSQLDB as a database server communicating with the HTTP protocol
.properties the directory where all the files for a database are located settings for each particular database
Properties files for running the servers are not created automatically. You should create your own files that contain server.property=value pairs for each property.
4.2.1. Server and Web Server Properties
server.properties and webserver.properties 文件支持如下设定:
Table 4.4. Property File Properties
Value Default Description
server.database.0 test the path and file name of the first database file to use
server.dbname.0 "" lowercase server alias for the first database file
server.urlid.0 NONE SqlTool urlid used by UNIX init script. (This property is not used if your are running Server/Webserver on a platform other than UNIX, or of you are not using our UNIX init script).
server.silent true no extensive messages displayed on console
server.trace false JDBC trace messages displayed on console
In 1.8.0, 每个服务器支持同时启动10个不同的数据库. The server.database.0 property defines the filename / path whereas the server.dbname.0 defines the lowercase alias used by clients to connect to that database. The digit 0 is incremented for the second database and so on. Values for the server.database.{0-9} property can use the mem:, file: or res: prefixes and properties as discussed above under CONNECTIONS. For example,
database.0=mem:temp;sql.enforce_strict_size=true;
Values specific to server.properties are:
Table 4.5. Server Property File Properties
Value Default Description
server.port 9001 TCP/IP port used for talking to clients. All databases are served on the same port.
server.no_system_exit true no System.exit() call when the database is closed
Values specific to webserver.properties are:
Table 4.6. WebServer Property File Properties
Value Default Description
server.port 80 TCP/IP port used for talking to clients
server.default_page index.html the default web page for server
server.root ./ the location of served pages
. ? multiple entries such as .html=text/html define the mime types of the static files served by the web server. See the source for WebServer.java for a list.
All the above values can be specified on the command line to start the server by omitting the server. prefix.
5. SqlTool
Mem 数据库:
E:\hsqldb>java -jar ./lib/hsqldb.jar mem
Hsql Server:
(前提是xdb server 已经启动):
(java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb)
java -jar ./hsqldb.jar xdb



执行sql 语句:
1)
Mydb.sql :
CREATE MEMORY TABLE TEST(ID INTEGER,NAME VARCHAR(20));
INSERT INTO TEST VALUES(1,'aaa');
INSERT INTO TEST VALUES(2,'bbb');
E:\hsqldb>java -jar ./lib/hsqldb.jar mem mydb.sql
1 row updated
1 row updated
2)
testuser.sql:
CREATE MEMORY TABLE userTEST(ID INTEGER,NAME VARCHAR(20));
INSERT INTO userTEST VALUES(1,'aaa');
INSERT INTO userTEST VALUES(2,'bbb');
commit; //这样才能提交到数据库
E:\hsqldb>java -jar ./hsqldb.jar xdb testuser.sql > file.txt 2>&1
输出结果到file.txt 文件中.


连接oracle:

E:\hsqldb>java -classpath ./classes12.zip;./hsqldb.jar org.hsqldb.util.SqlTool --driver oracle.jdbc.driver.OracleDriver
orcl

sqltool.rc 文件:
urlid orcl
url jdbc:oracle:thin:@localhost:1521:livedoor
username scott
password tiger
driver oracle.jdbc.OracleDriver
以上driver 在一处写出即可,也可以连接别的数据库

连接mysql
E:\hsqldb>java -classpath ./lib/mysql-connector-java-3.1.10-bin.jar;./hsqldb.jar org.hsqldb.util.SqlTool mysqltest

.rc 文件内容:
urlid mysqltest
url jdbc:mysql://localhost:3306/test
username root
password root
driver com.mysql.jdbc.Driver
6. sql 语法

6.1.1. ALTER INDEX[1]
ALTER INDEX RENAME TO ;
6.1.2. ALTER SEQUENCE[1]
ALTER SEQUENCE RESTART WITH ;
6.1.3. ALTER SCHEMA[1]
ALTER SCHEMA RENAME TO ;
6.1.4. ALTER TABLE[1]
ALTER TABLE ADD [COLUMN] Datatype
[(columnSize[,precision])] [{DEFAULT |
GENERATED BY DEFAULT AS IDENTITY (START WITH [, INCREMENT BY ])}] |
[[NOT] NULL] [IDENTITY] [PRIMARY KEY]
[BEFORE ];

ALTER TABLE DROP [COLUMN] ;
ALTER TABLE ALTER COLUMN RENAME TO
ALTER TABLE ALTER COLUMN SET DEFAULT };
ALTER TABLE ALTER COLUMN SET [NOT] NULL
ALTER TABLE ALTER COLUMN ;
ALTER TABLE ALTER COLUMN
RESTART WITH

ALTER TABLE ADD [CONSTRAINT ]
CHECK ();
ALTER TABLE ADD [CONSTRAINT ] UNIQUE ();
ALTER TABLE ADD [CONSTRAINT ]
PRIMARY KEY ();
ALTER TABLE
ADD [CONSTRAINT ] FOREIGN KEY ()
REFERENCES ()
[ON {DELETE | UPDATE} {CASCADE | SET DEFAULT | SET NULL}];

ALTER TABLE DROP CONSTRAINT ;
ALTER TABLE RENAME TO ;
6.1.5. ALTER USER[1]
ALTER USER SET PASSWORD ;
ALTER USER SET INITIAL SCHEMA ;
6.1.6. CALL
CALL Expression;
See also: Stored Procedures / Functions, SQL Expression.
6.1.7. CHECKPOINT
CHECKPOINT [DEFRAG[1]];
See also: SHUTDOWN, SET LOGSIZE.
6.1.8. COMMIT
COMMIT [WORK];
See also: ROLLBACK, SET AUTOCOMMIT, SET LOGSIZE.
6.1.9. CONNECT
CONNECT USER PASSWORD ;
See also: GRANT, REVOKE.
6.1.10. CREATE ALIAS
CREATE ALIAS FOR ;
See also: CALL, Stored Procedures / Functions.
6.1.11. CREATE INDEX
CREATE [UNIQUE] INDEX ON ( [DESC] [, ...]) [DESC];
6.1.12. CREATE ROLE[1]
CREATE ROLE ;
6.1.13. CREATE SCHEMA[1]
CREATE SCHEMA AUTHORIZATION
[ [] [...];
CREATE SCHEMA ACCOUNTS AUTHORIZATION DBA
CREATE TABLE AB(A INTEGER, ...)
CREATE TABLE CD(C CHAHR, ...)
CREATE VIEW VI AS SELECT ...
GRANT SELECT TO PUBLIC ON AB
GRANT SELECT TO JOE ON CD;
6.1.14. CREATE SEQUENCE[1]
CREATE SEQUENCE [AS {INTEGER | BIGINT}]
[START WITH ] [INCREMENT BY ];
SELECT [...,] NEXT VALUE FOR [, ...] FROM ;

6.1.15. CREATE TABLE
CREATE [MEMORY | CACHED | [GLOBAL] TEMPORARY | TEMP [1] | TEXT[1]] TABLE
( [, ...] [, ...] )
[ON COMMIT {DELETE | PRESERVE} ROWS];
6.1.16. CREATE TRIGGER[1]
CREATE TRIGGER {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON
[FOR EACH ROW] [QUEUE n] [NOWAIT] CALL ;
6.1.17. CREATE USER
CREATE USER PASSWORD [ADMIN];
6.1.18. CREATE VIEW[1]
CREATE VIEW [(,..) AS SELECT ... FROM ... [WHERE Expression]
[ORDER BY orderExpression [, ...]]
[LIMIT [OFFSET ]];
CREATE VIEW mealsjv AS
SELECT m.mid mid, m.name name, t.mealtype mt, a.aid aid,
a.gname + ' ' + a.sname author, m.description description,
m.asof asof
FROM meals m, mealtypes t, authors a
WHERE m.mealtype = t.mealtype
AND m.aid = a.aid;

CREATE VIEW mealswebv AS SELECT name, author FROM mealsjv;

CREATE VIEW aview (new_name, new_author) AS
SELECT name, author
FROM mealsjv
6.1.19. DELETE
DELETE FROM table [WHERE Expression];
6.1.20. DISCONNECT
DISCONNECT;
6.1.21. DROP INDEX
DROP INDEX index [IF EXISTS];
6.1.22. DROP ROLE[1]
DROP ROLE ;
6.1.23. DROP SEQUENCE[1]
DROP SEQUENCE [IF EXISTS] [RESTRICT | CASCADE];
6.1.24. DROP SCHEMA[1]
DROP SCHEMA [RESTRICT | CASCADE];
6.1.25. DROP TABLE
DROP TABLE [IF EXISTS] [RESTRICT | CASCADE];
6.1.26. DROP TRIGGER
DROP TRIGGER ;
6.1.27. DROP USER
DROP USER ;
6.1.28. DROP VIEW[1]
DROP VIEW [IF EXISTS] [RESTRICT | CASCADE];
6.1.29. EXPLAIN PLAN
EXPLAIN PLAN FOR { SELECT ... | DELETE ... | INSERT ... | UPDATE ..};
6.1.30. GRANT
GRANT { SELECT | DELETE | INSERT | UPDATE | ALL } [,...]
ON { table | CLASS "package.class" } TO ;
GRANT [,...] TO [1];
GRANT SELECT ON Test TO GUEST;
GRANT ALL ON CLASS "java.lang.Math.abs" TO PUBLIC;

6.1.31. INSERT
INSERT INTO table [( column [,...] )]
{ VALUES(Expression [,...]) | SelectStatement};
6.1.32. REVOKE
REVOKE { SELECT | DELETE | INSERT | UPDATE | ALL } [,...]
ON { table | CLASS "package.class" } FROM ;
REVOKE [,...] FROM [1];
6.1.33. ROLLBACK
ROLLBACK [TO SAVEPOINT [1] | WORK}];
6.1.34. SAVEPOINT[1]
SAVEPOINT ;
6.1.35. SCRIPT
SCRIPT ['file'];
6.1.36. SELECT[1]
SELECT [{LIMIT | TOP }[1]][ALL | DISTINCT]
{ selectExpression | table.* | * } [, ...]
[INTO [CACHED | TEMP | TEXT][1] newTable]
FROM tableList
[WHERE Expression]
[GROUP BY Expression [, ...]]
[HAVING Expression]
[{ UNION [ALL | DISTINCT] | {MINUS [DISTINCT] | EXCEPT [DISTINCT] } |
INTERSECT [DISTINCT] } selectStatement]
[ORDER BY orderExpression [, ...]]
[LIMIT [OFFSET ]];
tableList
table [{CROSS | INNER | LEFT OUTER | RIGHT OUTER}
JOIN table ON Expression] [, ...]
table
{ (selectStatement) [AS] label | tableName}
selectExpression
{ Expression | COUNT(*) | {
COUNT | MIN | MAX | SUM | AVG | SOME | EVERY |
VAR_POP | VAR_SAMP | STDDEV_POP | STDDEV_SAMP
} ([ALL | DISTINCT][1]] Expression) } [[AS] label]
If CROSS JOIN is specified no ON expression is allowed for the join.
orderExpression
{ columnNr | columnAlias | selectExpression }
[ASC | DESC]
LIMIT n m
LIMIT n m

LIMIT m OFFSET n

TOP m

UNION and other set operations

6.1.37. SET AUTOCOMMIT
SET AUTOCOMMIT { TRUE | FALSE };
6.1.38. SET DATABASE COLLATION[1]
SET DATABASE COLLATION ;
6.1.39. SET CHECKPOINT DEFRAG[1]
SET CHECKPOINT DEFRAG ;
6.1.40. SET IGNORECASE
SET IGNORECASE { TRUE | FALSE };
6.1.41. SET INITIAL SCHEMA [1]
Users may change their base default schema name with the comand
SET INITIAL SCHEMA ;
6.1.42. SET LOGSIZE
SET LOGSIZE ;
6.1.43. SET PASSWORD
SET PASSWORD ;
6.1.44. SET PROPERTY[1]
SET PROPERTY ;
6.1.45. SET REFERENTIAL INTEGRITY
SET REFERENTIAL_INTEGRITY { TRUE | FALSE };
6.1.46. SET SCHEMA[1]
SET SCHEMA ;
6.1.47. SET SCRIPTFORMAT[1]
SET SCRIPTFORMAT {TEXT | BINARY | COMPRESSED};
6.1.48. SET TABLE INDEX
SET TABLE tableName INDEX 'index1rootPos index2rootPos ... ';
6.1.49. SET TABLE READONLY[1]
SET TABLE READONLY {TRUE | FALSE};
6.1.50. SET TABLE SOURCE[1]
SET TABLE SOURCE [DESC];
SET TABLE mytable SOURCE "myfile;fs=|;vs=.;lvs=~"
Supported Properties
quoted = { true | false }
default is true. If false, treats double quotes as normal characters
all_quoted = { true | false }
default is false. If true, adds double quotes around all fields.
encoding =
character encoding for text and character fields, for example, encoding=UTF-8
ignore_first = { true | false }
default is false. If true ignores the first line of the file
cache_scale=
exponent to calculate rows of the text file in cache. Default is 8, equivalent to nearly 800 rows
cache_size_scale = r
exponent to calculate average size of each row in cache. Default is 8, equivalent to 256 bytes per row.
fs =
field separator
vs =
varchar separator
lvs =
long varchar separator
Special indicators for Hsqldb Text Table separators
\semi
semicolon
\quote
quote
\space
space character
\apos
apostrophe
\n
newline - Used as an end anchor (like $ in regular expressions)
\r
carriage return
\t
tab
\\
backslash
\u####
a Unicode character specified in hexadecimal
Only an administrator may do this.

6.1.51. SET WRITE DELAY[1]
SET WRITE_DELAY {{ TRUE | FALSE } | | MILLIS};
6.1.52. SHUTDOWN
SHUTDOWN [IMMEDIATELY | COMPACT | SCRIPT[1]];
6.2. Data Types
Table 9.1. Data Types. The types on the same line are equivalent.
Name Range Java Type
INTEGER | INT as Java type int | java.lang.Integer
DOUBLE [PRECISION] | FLOAT as Java type double | java.lang.Double
VARCHAR as Integer.MAXVALUE java.lang.String
VARCHAR_IGNORECASE as Integer.MAXVALUE java.lang.String
CHAR | CHARACTER as Integer.MAXVALUE java.lang.String
LONGVARCHAR as Integer.MAXVALUE java.lang.String
DATE as Java type java.sql.Date
TIME as Java type java.sql.Time
TIMESTAMP | DATETIME as Java type java.sql.Timestamp
DECIMAL No limit java.math.BigDecimal
NUMERIC No limit java.math.BigDecimal
BOOLEAN | BIT as Java type boolean | java.lang.Boolean
TINYINT as Java type byte | java.lang.Byte
SMALLINT as Java type short | java.lang.Short
BIGINT as Java type long | java.lang.Long
REAL as Java type double | java.lang.Double[1]

BINARY as Integer.MAXVALUE byte[]
VARBINARY as Integer.MAXVALUE byte[]
LONGVARBINARY as Integer.MAXVALUE byte[]
OTHER | OBJECT as Integer.MAXVALUE java.lang.Object
The uppercase names are the data types names defined by the SQL standard or commonly used by RDMS's. The data types in quotes are the Ja

6.2.1. 自动增长:
create table user(id IDENTITY,name varchar(20));
sql> create table dept(id int GENERATED BY DEFAULT AS IDENTITY(start with 10,increment by 5) not null PRIMARY KEY,name v
archar(20));
sql> insert into dept(name) values('asc');
1 row updated
sql> insert into dept(name) values('security');
1 row updated
sql> select * from dept;
ID NAME
-- --------
10 asc
15 security

2 rows

6.3. SQL Comments
-- SQL style line comment
// Java style line comment
/* C style line comment */
7. Hsqldb Test Utility
拷贝 junit.jar 到/lib 目录下
运行: ant hsqldbtest
生成 hsqldbtest.jar
运行: \hsqldb\testrun\hsqldb>runtest TestSelf
October 30

Groovy 转

Groovy 1 语法特性

ray_linn 所撰寫。最後修改者是 ray_linn 在 219 天之前。 已瀏覽 453 次。
[編輯] [附加]

Groovy <1> 语言特性

前言

Groovy 是基于 JRE 的脚本语言( Script ),是由James Strachan 和 Bob McWhirter 这两位天才发明的,(JSR 241 2004 年 3 月)。

和Perl,Python等等Script的设计初衷一样,作者希望Groovy能快速简洁地完成一些工作:如访问数据库以编写报告,编写单元测试用例(Unit Test Case),快速实现产品原型(ProtoType) 等等。

同时为了降低学习曲线,Groovy 的语法和Java 近似,并吸收了 Ruby,Python 和SmallTalk 的一些特点,因此 Groovy 在某些场合可以扮演一种 “咖啡伴侣”的角色。

那么Groovy 和 Java 相比,有什么变化呢? Groovy 和大部分Scripts一样:

  1. 不用编译,通过解释运行。
  2. 允许动态类型。
  3. 合成结构容易。

因此,Groovy 是一种特别容易学习和使用的语言.

我们先借用IBM Groovy教程中的例子,下面的代码利用了Freemarker模板引擎来创建一个Template对象,然后将内容打印到标准输出。例(1)是Java代码,例(2)是Groovy代码。可以看到二者非常的类似。

//简单的 TemplateReader Java 类
import java.io.File;
import java.io.IOException;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class TemplateReader {
public static void main(String[] args){
try{
Configuration cfg = Configuration.getDefaultConfiguration();
cfg.setDirectoryForTemplateLoading(new File("C:/dev/projects/http-tester/src/conf"));
Template temp = cfg.getTemplate("vendor-request.tmpl");
System.out.println(temp.toString());
}
catch(IOException e){
e.printStackTrace();
}
}
}

和例2 中的 Groovy 作为对比.

//用 Groovy 编写的更简单的 TemplateReader
//语法目前基于Groovy 1.0-JSR3
import freemarker.template.Configuration as tconf
import java.io.File
cfg = tconf.getDefaultConfiguration()
cfg.setDirectoryForTemplateLoading( new File("C:/dev/projects/http-tester/src/conf"))
temp = cfg.getTemplate("vendor-request.tmpl")
println temp.toString()

Groovy显然精简得多:

  1. Groovy 代码只需要更少的import 语句。此外,freemarker.template.Configuration 还使用了别名 tconf。
  2. Groovy 允许直接使用类型为Template 的变量 tmpl 而不用声明其类型。
  3. Groovy 不需要class 声明或者main 方法。
  4. Groovy 不关心异常,可以不用导入Java需要的IOException。

对Groovy感兴趣吗?别忘了拜访它的主页 >>http://groovy.codehaus.org/ 并下载最新的Groovy发布包哦。(ray_linn)



Groovy 2 基础语法

ray_linn 所撰寫。最後修改者是 ray_linn 在 408 天之前。 已瀏覽 391 次。
[編輯] [附加]

Groovy的基础语法

Groovy 有很多优点。它很好地融合了 Ruby、Python 和 Smalltalk 的一些最有用的功能,同时保留了基于 Java 语言的核心语法。对于Java 开发人员,Groovy 提供了更简单的替代语言,且几乎不需要学习时间。对于刚接触 Java 平台的开发人员,它可以作为有更复杂语法和要求的 Java 语言的一个容易的入口点。

语法

Groovy的语句和Java类似,但是有一些特殊的地方。例如语句的分号是可选的。如果每行一个语句,就可以省略分号;如果一行上有多个语句,则需要用分号来分隔。

x = [1, 2, 3]
println x
y = 5; x = y + 7
println x
assert x == 12

另外return关键字在方法的最后是可选的;同样,返回类型也是可选(缺省是Object)。

动态类型

像其他Script一样,Groovy 不需要显式声明类型。在 Groovy 中,一个对象的类型是在运行时动态发现的,这极大地减少了要编写的代码数量。在Groovy中,类型对于值(varibles)、属性 (properties)、方法(method)和闭包(closure)参数、返回值都是可有可无的,只有在给定值的时候,才会决定它的类型,(当然声 明了类型的除外)。例如:
//Groovy 动态类型
myStr = "Hello World"

由于使用了动态类型,不需要继承就可以得到多态的全部功能:

class Song{  
@Property length
@Property name
}

class Book{
def public name
def public author
}

def doSomething(thing){
println "going to do something with a thing named = " + thing.name
}

这 里定义了两个Groovy 类,Song 和 Book。这两个类都包含一个 name 属性。函数 doSomething,它以一个 thing 为参数,并试图打印这个对象的 name 属性,但doSomething 函数没有定义其输入参数的类型,所以只要对象包含一个 name 属性,那么它就可以工作。可见, Song 和 Book 的实例都可以作为 doSomething 的输入参数。

mySong = new Song(length:90, name:"Burning Down the House")
myBook = new Book(name:"One Duck Stuck", author:"Phyllis Root")
doSomething(mySong) //prints Burning Down the House
doSomething(myBook) //prints One Duck Stuck
def doSth=this.&doSomething
doSth(mySong)
doSth(myBook)

在例子的最后,我们还创建了doSomething的一个函数指针 doSth,最后的执行结果与调用doSoemthing是一样的。

值 得注意的是:与Groovy Beta不同,在使用新的JSR Groovy类时,类里面的所有的变量都必须加上 def 关键字或者 private、protected 或 public 这样的修饰符。当然,也可以用 @Property 关键字声明成员变量。在Script中则不必。

字符串

Groovy中的字符串允许使用双引号和单引号。

当使用双引号时,可以在字符串内嵌入一些运算式,Groovy允许您使用 与 bash 类似的 ${expression} 语法进行替换。可以在字符串中包含任意的Groovy表达式。

name="James"
println "My name is ${name},'00${6+1}'" //prints My name is James,'007'

Groovy还支持"uXXXX" 引用(其中X是16进制数),用来表示特殊字符,例如 "u0040" 与"@"字符相同。

大块文本

如果有一大块文本(例如 HTML 和 XML)不想编码,你可以使用Here-docs. here-docs 是创建格式化字符串的一种便利机制。它需要类似 Python 的三重引号(""")开头,并以三重引号结尾。

name = "James"
text = """
hello
there ${name} how are you today?
"
""
assert text != null
println(text)

在Groovy-JSR中,不再支持下面这种多行字符串,个人觉得似乎与Here-docs功能重叠:

foo = "hello 
there
how are things?"

println(foo)

对字符串的操作

  1. contains 字符串中是否包含子字符串,'groovy'.contains('oo')将返回true;
  2. count 返回字符串中子字符串出现的次数,'groooovy'.count('oo')将返回3.
  3. tokenize 根据分隔符将字符串分解成子串,'apple^banana^grap'.tokenize('^')返回['apple','banana','grape']。
  4. 减操作 'groovy'-'oo',结果是'grvy'。
  5. 乘操作 'oo'*3,结果是'oooooo'。

Groovy主要结构

接下来将展示Groovy的一些结构,包逻辑分支,类、闭包等等。

逻辑分支

if-else语句

Groovy提供Java相同的if-else语句。

x = false
y = false
if ( !x ) {
x = true
}
assert x == true
if ( x ) {
x = false
} else{
y = true
}
assert x == y

Groovy也支持三元操作符。

y = 5
x = (y > 1) ? "worked" : "failed"
assert x == "worked"

switch语句

Groovy的switch语句兼容Java代码,但是更灵活,Groovy的switch语句能够处理各种类型的switch值,可以做各种类型的匹配:

  1. case值为类名,匹配switch值为类实例
  2. case值为正则表达式,匹配switch值的字符串匹配该正则表达式
  3. case值为集合,匹配switch值包含在集合中,包括ranges

除了上面的,case值与switch值相等才匹配。

x = 1.23
result = ""
switch ( x ) {
case "foo":
result = "found foo"
// lets fall through
case "bar":
result += "bar"
case [4, 5, 6, 'inList']:
result = "list"
break
case 12..30:
result = "range"
break
case Integer:
result = "integer"
break
case Number:
result = "number"
break
default:
result = "default"
}
assert result == "number"

Switch 语句的工作原理:switch语句在做case值匹配时,会调用isCase(switchValue)方法,Groovy提供了各种类型,如类,正则表 达式、集合等等的重载。可以创建自定义的匹配类,增加isCase(switchValue)方法来提供自定义的匹配类型。

循环

while和do 循环

Groovy支持Java相同的while循环,但目前暂不支持do循环

x = 0
y = 5
while ( y-- > 0 ){
x++
}
assert x == 5

for循环

Groovy的for循环更简单,而且能够和各种类型的数组、集合、Map、范围等一起工作,我们稍候会详细介绍这些内容。

// iterate over a range
x = 0
for ( i in 0..9 ) {
x += i
}
assert x == 45

// iterate over a list

x = 0
for ( i in [0, 1, 2, 3, 4] ) {
x += i
}
assert x == 10

// iterate over an array
array = (0..4).toArray()
x = 0
for ( i in array ) {
x += i
}
assert x == 10

// iterate over a map

map = ['abc':1, 'def':2, 'xyz':3]
x = 0
for ( e in map ) {
x += e.value
}
assert x == 6

// iterate over values in a map
x = 0
for ( v in map.values() )
{
x += v
}
assert x == 6

// iterate over the characters in a string
text = "abc"
list = []
for (c in text) {
list.add(c)
}
assert list == ["a", "b", "c"]

运行Groovy脚本

你可以象使用Perl一样编写Groovy脚本,不需要class,不需要Main入口点,也不需要声明变量;此外,你还可以用def语句来定义自己的函数,并在脚本中使用它。

像许多脚本语言一样,Groovy 是 在运行时解释的,无编译的代码在构建-运行周期中可以提供很多好处。运行时编译使 Groovy 成为快速原型设计、构建不同的实用程序和测试框架的理想平台。通过以下代码可以很简单的运行Groovy.

groovy HelloWorld.groovy

除了利用解释器来运行Groovy脚本外,Groovy 提供了两种不同的解释器Shell,使所有有效的 Groovy 表达式可以交互地执行:

  1. 运行groovysh启动命令Shell,可以输入Groovy语句直接执行
  2. 运行groovyConsole启动Swing方式的Groovy控制台,这是一个简单的Groovy编辑器
Groovy 脚本实际上是字节码级别的 Java 类。因此,还可以用 groovyc 编译 Groovy 脚本。可以通过命令行或者 Ant 使用 groovyc 以生成脚本的类文件。这些类可以用普通 java 命令运行,只要 classpath 包括 groovy.jar和asm.jar。


Groovy 3 类和闭包

ray_linn 所撰寫。最後修改者是 ray_linn 在 386 天之前。 已瀏覽 282 次。
[編輯] [附加]
灵活性是更有效地开发代码的主要因素。Groovy语言是建立在总有一天 Java 平台要包括一种敏捷开发语言这一信念上的 (Richard Monson-Haefel),因此Groovy的语法是始终围绕灵活性这个特性进行设计的。 因为 Groovy 除了是种面向过程和面向对象的语言外,它还包含了实现函数式编程一些东西。

函数编程

我们知道例如Lisp、Scheme、Haskell、ML (或其他一些语言)采用了函数式编程。但“到底什么是函数式编程 (FP)?”不幸的是,即使是函数程序员他们自己也很难对 FP 究竟是什么有个一致的认识。

David Mertz 认为函数式编程粗略地描绘为至少具有以下几个特征:

  1. 函数是第一类(对象)。即,可以对“数据”进行的每样操作都可以使用函数本身做到(例如将一个函数传递给另一个函数)。
  2. 将递归用作主要的控制结构。在某些语言中,不存在其它“循环”构造。
  3. 重点集中在列表 LISt 处理(例如,名称 Lisp )。列表经常和子列表的递归一起使用以替代循环。
  4. “纯”函数语言能够避免副作用。这不包括在命令语言中最普遍的模式,即指定第一个,然后将另一个值指定给同一个变量来跟踪程序状态。
  5. FP 不鼓励或根本不允许出现 语句,取而代之是使用表达式求值(换句话说,即函数加上自变量)。在很纯粹的情况下,一个程序就是一个表达式(加上支持的定义)。
  6. FP 关心的是计算 什么而不是 如何计算。
  7. 许多 FP 利用了“更高等级”函数(换句话说,就是函数对一些函数操作,而这些函数又对其它函数操作)。

函数编程的提倡者认为所有这些特征都导致更快速的开发更短以及错误更少的代码。而且,计算机科学、逻辑和数学领域的高级理论学家发现证明函数语言和程序的正式性能比命令语言和程序容易得多。

无独有偶,新发布的C# 3.0 规格书也加入了函数式编程的味道,从某些方面看起来,C# 3.0和Groovy 有点神似。

在字节码水平,Groovy 类是真正的 Java 类。Groovy的类与Java类相似:
  1. 方法可以基于类(static)或实例
  2. 可以为public、protected或private
  3. 支持常用的Java修饰符,如synchronized

请注意,Groovy 1.0-JSR3与Groovy 1.0-Beta3在类定义上语法差别较大:

  1. Groovy JSR 变量前都必须加上 def 关键字或者 private、protected 或 public 这样的修饰符;Groovy Beta3的类定义中的变量相当灵活,不需要任何关键字;(类定义外的变量不受影响。)
  2. 声明属性可以用 @Property 关键字声明成员变量 ;有别于Beta3,这里P是大写的!
  3. 变量默认为Private,方法默认为Public,除非使用了特定的访问修饰符;Groovy Beta3 类中定义的所有内容都默认为 public,除非定义了特定的访问修饰符;

例子 1 显示了在 Groovy 语言中如何声明一个Greeter的类,它有两个public的字段name和age。注意我们是如何为它们赋值的。

//无构造子的Groovy Greeter
class Greeter
{
public name
public age

def SayHello(){
println "Hello,${name},I am Groovy"
println "I am ${age} years old!"
}

def static Introduce(){
println "I am groovy greeter";
}
}

Greeter.Introduce()
Greeter greeter=new Greeter(name:"Toms",age:2)
greeter.SayHello()

上面的例子等价于使用传统构造子的Greeter,但是更灵活。

//使用传统构造子的Groovy Greeter
class Greeter
{
def name
def age
Greeter(name,age){
this.name=name
this.age=age
}

def SayHello(){
println "Hello,${name},I am Groovy"
println "I am ${age} years old!"
}

def static Introduce(){
println "I am groovy greeter";
}
}

Greeter.Introduce()
Greeter greeter=new Greeter("Toms",2)
greeter.SayHello()

接下来是一个复杂点的例子,其中类 Dog 有一个 getFullName 方法,它实际上返回一个表示 Dog 的全名的 String。

class Dog{
public name

def bark(){
println "RUFF! RUFF!"
}

def getFullName(master){
name + " " + master.lname
}

def obeyMaster(){
println "I hear you and will not obey."
}
}

我们可以看到,动态类型可以应用到字段和方法,因此参数类型是可选的(但是指定方法的参数类型和返回类型可以在通常的Java代码中更好的工作)。注意,最后return语句是可选(只要最后一条语句被执行,它的值就会被返回),缺省返回的是Object。

例子 4 是有两个属性 fname 和 lname 和一个方法的类 DogOwner。

class DogOwner{
@Property fname
@Property lname

def trainPet(pet){
pet.obeyMaster()
}
}

方法调用的语法和Java类似,支持静态和实例方法。在例 5 中,我们用 Groovy对Dog和DogOwner的实例设置属性并调用了方法。

//使用 Groovy 类
myDog = new Dog()
myDog.name = "Mollie"
myDog.bark()
myDog.obeyMaster()

me = new DogOwner()
me.fname = "Ralf"
me.lname = "Waldo"
me.trainPet myDog //不需要括号

str = myDog.getFullName(me)
println str // prints Mollie Waldo

我们看到在 Dog 类的 getFullName 方法返回一个 String 对象,在这里它是 “Mollie Waldo”。 在Groovy中方法的调用可以省略括号,只要有参数,并且没有歧义。

传递命名参数 在调用方法时,可以传递命名参数,参数的名字和值用分号分隔(象Map语法),参数名是唯一标识字符串。

bean = new Expando(name:"James", location:"London", id:007)
println "Hey " + bean.name
assert bean.id == 007

注意:当前这种方法传递只实现具有Map的方法调用或JavaBean。

闭包

Groovy 中最令人兴奋和最强大的功能是支持闭包。闭包(Closure)类似于 Java 语言中的匿名内部类。闭包和匿名内部类都是可执行的一段代码,不过这两者之间有一些细微的不同。状态是自动传入传出闭包的。闭包可以有名字。它们可以重复 使用。而且,最重要且对 Groovy 同样成立的是,闭包远比匿名内部类要灵活得多!闭包用以下方法定义:

{[comma-separated-Arguments-list ->] statements }

闭包用“{}”括起,“->”前面是参数,后面是处理语句。下面的例子演示了如何定义并使用一个闭包。第一个闭包演示了在字符串中使用参数的形式:${param};第二个闭包演示了多参数形式:用逗号隔离参数。

closure = { name ->
println("hello ${name}") }
closure.call("world!")
closure = { greeting, name ->
println(greeting + name) }
closure("hello ", "world!")

有趣的是,闭包至少会有一个参数 “it”,它其实是参数表中的第一个参数,所以如果闭包定义中只有一个参数,可以省略不写,而使用缺省的参数“it”。对于没有参数定义的闭包,“it”的值就是 null 。

closure = { println "hello " + it }
closure("world!")

例子 9 展示了闭包的强大功能。新改进的 Dog 类包括一个 train 方法,它实际上执行创建了 Dog 实例的闭包。

class Dog{

def train(action){
action.call()
}
}
sit = { println "Sit, Sit! Sit! Good dog"}

myDog = new Dog()
myDog.train(sit) //prints Sit, Sit! Sit! Good dog
mollie = new Dog()
mollie.train { println "Down! DOWN!" } //prints DOWN! DOWN!

在 上面的例子里,我们还看到,闭包通过 call() 方法被调用。(在底层,call() 方法实现了对闭包隐含的doCall()方法的调用)。Groovy 中的大多数对象具有像 each 和 find 这样的以闭包为参数的方法。用闭包来迭代对象会产生几种令人兴奋的可能性:

[2, 4, 6, 8, 3].find { x |
if (x == 3){
println x
}
}

其实就是:(你也许已经发现,可以用it代替x)

myFinder={ x |
if(x==3)
println x
}

[2,4,6,8,3].find(myFinder)

这里我们使用了一个 Groovy-Beta3 闭包定义,只是为了让您能看懂老版本Groovy的一些例子。在新的Groovy JSR中对闭包的定义略有改动,因为 | 字符同时也是 Java 中的位操作符;Groovy JSR 建议使用 Nice (另外一种JRE语言)样式的 -> 分隔符代替它。

这种以闭包为参数的代码在Groovy里十分普遍:

//each
(1..100).each{ println it}

//times
1000.times{ println it} //values go from 0 to 9999

//upto
1.upto(1000){ println it}

//step
1.step(1001,1){ println it} //values go from 1 to 1000;

更多关于闭包的内容,可以访问 >>http://groovy.codehaus.org/Closures,不过有些内容可能不适用于Groovy JSR3,因为Groovy还在不断发展中。


Groovy 4 集合

ray_linn 所撰寫。最後修改者是 ray_linn 在 218 天之前。 已瀏覽 279 次。
[編輯] [附加]
将对象组织到像列表和映射这样的数据结构中是一项基本的编码任务。像大多数语言一样,Groovy 定义了一个丰富的库以管理这些类型的集合。

列表

创建一个列表与在 Java 语言中创建一个数组很类似。

collect = ['groovy', 29, 'Hello', 'Groovy']

empty=[]
assert empty.size() == 0
//添加元素
empty.add 1
assert empty.size() == 2

在上面的例子里,列表 collect 的第二项自动装箱为一个 Integer 类型。此外“[]”表示一个空列表,这个例子还演示了如何向列表中添加元素。

Groovy 还为集合增加了几个新方法,这些方法使得对列表的一些操作变得更加容易,如统计值出现的次数、将整个列表结合到一起、对列表排序等等。可以在例2 中看到这些集合方法的使用。

collect = [5, 9, 2, 2, 4, 5, 6] 
println collect.join(' - ') // prints 5 - 9 - 2 - 2 - 4 - 5 - 6
println collect.count(2) // prints 2
println collect.sort() // prints [2, 2, 4, 5, 5, 6, 9]

Maps

像列表一样,映射也是一种在 Groovy 中非常容易处理的数据结构。例 3 中的映射包含两个对象,键是 name 和 date。注意可以用不同的方式取得值。 可以用“[:]”创造一个空的映射。

myMap = ["name" : "Groovy", "date" : new Date()]
println myMap["date"]
println myMap.date

Map可以象beans一样操作,但key值(类似属性名)必须为有效的String标识。下面的例子详细演示了Map的用法。

map = ["name":"Gromit", "likes":"cheese", "id":1234]
assert map.name == "Gromit"
assert map.id == 1234
//Create an empty maps
emptyMap = [:]
assert emptyMap.size() == 0
emptyMap.foo = 5
assert emptyMap.size() == 1
assert emptyMap.foo == 5
emptyMap.put("bar",6)
assert emptyMap.get("bar") == 6

players = ['baseball':'Albert Pujols', 'golf':'Tiger Woods']
println players['golf'] // prints Tiger Woods
println players.golf // prints Tiger Woods
for (player in players)
{
println "${player.value} plays ${player.key}"
}
// This has the same result as the previous loop.
players.each {
player |println "${player.value} plays ${player.key}"
}

范围

范围(Range)是Groovy的一大亮点Range允许创建连续值的列表。范围是一个很直观的概念,并且容易理解,利用它可以包含地或者排除地创建一 组有序值。使用“..”的Range是包括两个边界,使用“..<”(Groovy Beta3使用 “...”)的Range只包括开始边界,而不包括结束边界。

而且由于Range扩展java.util.List,所以Range可以作为List使用。

myRange = 29..<32
myInclusiveRange = 2..5
println myRange.size() // prints 3
println myRange[0] // prints 29
println myRange.contains(32) //prints false
println myInclusiveRange.contains(5) //prints true

// an inclusive range and operations
range = 'a'..'d'
assert range.size() == 4
assert range.get(2) == 'c'
assert range instanceof java.util.List
assert range.contains('a')
assert range.contains('d')
assert ! range.contains('e')

迭代器

迭代是各种编程环境中最常见、最有用的技术。迭代器可以让您迅速地访问任何集合或容器中的数据,每次一个数据。Groovy 把迭代器变成隐含的,使用起来更简单,从而改善了 Java 语言的迭代器概念。

我们可以直接在集合上使用类似迭代器的方法。而且, Groovy 的迭代器方法接受闭包,每个迭代中都会调用闭包。

class IteratorExample1{
static void main(args) {
coll = ["JMS", "EJB", "JMX"]
coll.each{ item | println item }
}
}

范围可以用于循环遍历。例如,将 rang 定义为一个排除范围,循环打印 a、b、c 和 d。

aRange = 'a'..<'e'
for (i in aRange){
println i
}

集合的其他功能

如果不熟悉 Python 和其他脚本语言,那么您在 Groovy 集合中发现的一些其他功能会让您印象深刻。例如,创建了集合后,可以用负数在列表中反向计数:

aList = ['python', 'ruby', 'groovy']
println aList[-1] // prints groovy
println aList[-3] // prints python

Groovy 还让您可以用范围分割列表。分割可获得列表的准确子集:

fullName = "Andrew James Glover"
mName = fullName[7..<13]
println "middle name: " + mName // prints James

Ruby的语法

集合类似于 Ruby如果愿意的话,还可以将 Groovy 集合作为 Ruby 集合。可以用类似 Ruby 的语法,以 << 语法附加元素、用 + 串接和用 - 对集合取差,甚至还可以用 * 语法处理集合的重复。 注意,还可以用 == 比较集合。

collec = [1, 2, 3, 4, 5]
collec << 6 //appended 6 to collec

acol = ['a','b','c'] * 3 //acol now has 9 elements
coll = [10, 11]
coll2 = [12, 13]
coll3 = coll + coll2 //10,11,12,13
difCol = [1,2,3] - [1,2] //difCol is 3
assert [1, 2, 3] == [1, 2, 3] //true

集合的索引

可以在字符串、Lists、Maps...中使用下标进行索引

text = "nice cheese gromit!"
x = text[2]
assert x == "c"
assert x.class == String

sub = text[5..10]
assert sub == 'cheese'

map = ["name":"Gromit", "likes":"cheese", "id":1234]
assert map['name'] == "Gromit"

list = [10, 11, 12]
answer = list[2]
assert answer == 12
list = 100..200
sub = list[1, 3, 20..25, 33]
assert sub == [101, 103, 120, 121, 122, 123, 124, 125, 133]

可以使用下标操作符更新项目:

list = ["a", "b", "c"]
list[2] = "d"
list[0] = list[1]
list[3] = 5
assert list == ["b", "b", "d", 5]

可以使用负索引从最后开始计数:

text = "nice cheese gromit!"
x = text[-1]
assert x == "!"
name = text[-7..-2]
assert name == "gromit"

也可以使用向后范围(开始索引大于结束索引),返回的结果是反转的

text = "nice cheese gromit!"
name = text[3..1]
assert name == "eci"



Groovy 5 JDBC编程

ray_linn 所撰寫。最後修改者是 ray_linn 在 214 天之前。 已瀏覽 338 次。
[編輯] [附加]
与Groovy的脚本特性相适应,Groovy JDBC 包含了一个精巧简单的GroovySql API,由于使用闭包和迭代器,GroovySql 把 JDBC 的资源管理职责从开发人员转移到 Groovy 框架内,从而消除了 JDBC 编程的繁琐,使得变成人员可以把注意力放在处理查询结果上。

GroovySql 简介

在 Java 中,我们是这样利用JDBC来打印Music CD的样品:

package cc.ejb.groovy;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class CdList {
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/samples","root", "");
stmt = con.createStatement();
rs = stmt.executeQuery("select * from cdbean");
while (rs.next()) {
System.out.println("id:" + rs.getLong(1) + " artist:" + rs.getString(2) + " type:" + rs.getString(3));
}
}catch(SQLException e){
e.printStackTrace();
}catch(ClassNotFoundException e){
e.printStackTrace();
}finally{
try{
rs.close();
}catch(Exception e){}
try{
stmt.close();
}catch(Exception e){}
try{
con.close();
}catch(Exception e){}
}
}
}

利用迭代器和闭包,我们只需要短短的几行:

import groovy.sql.Sql

sql = Sql.newInstance("jdbc:mysql://localhost:3306/samples", "root","", "com.mysql.jdbc.Driver")
sql.eachRow("select * from cdbean"){
println "id:${it.id} artist:${it.artist} type:${it.type}"
}

在上面这段脚本中,你看不到try...catch,也不用捕获任何exception,甚至你不用关闭 Connection,也不用关闭 ResultSet,或者在 JDBC 编程中可以找到的任何其他熟悉的重要特性。

脚本中eachRow 方法可以当成查询结果上的迭代器。每个迭代都会执行传递进去的闭包,并在闭包中打印出每一次迭代的内容,id,artist,type等等。

为了运行上面的例子,必须将MySql JDBC Driver添加到classpath中。

执行更复杂的查询

Groovy 的 Sql 对象另外提供了 execute 和 executeUpdate 方法用于处理更复杂的数据操作(例如 insert、 update 和 delete )。

在下面的脚本中,您看到一个简单的 insert,它再次以 ${} 语法使用变量替换。这个代码只是向 cdbean 表插入一个新行。

id = 999
title ="Concept"
artist = "Nefarious"
type = "Blues"
sql.execute("insert into cdbean (id, title,artist, type, notes) values(${id},${title}, ${artist}, ${type},NULL)")

Groovy 还提供 execute 方法的一个重载版本,它接收一列值,这些值与查询中发现的 ? 元素对应。下面的例子查询了刚插入 cdbean 表中的数据。在底层,GroovySql 创建了普通 Java 语言 java.sql.PreparedStatement 的一个实例。

val = sql.execute("select * from cdbean where id = ?", [999])

更新的方式基本相同,也使用 executeUpdate 方法。executeUpdate 方法接收一列值,与查询中的 ? 元素对应。

id= 556 
artist = "Nefarious"
sql.executeUpdate("update cdbean set id = ? where artist = ?", [id, artist])

删除实际上与插入相同,当然,语法不同,如例 9 所示。

sql.execute("delete from cdbean where id = ?" , [556])

数据集(DataSet)

构建于 GroovySql 简单性的基础之上,GroovySql 支持 DataSet 类型的概念,这基本上是数据库表的对象表示。使用 DataSet,您可以在行中遍历,也可以添加新行。实际上,用数据集是方便地表示表格的公共数据集合的方式。

但是,目前 GroovySql DataSet 类型的不足之处是它们没有代表关系;它们只是与数据库表的一对一映射。

import groovy.sql.Sql
class CdDataSetExample{
static void main(args) {
def sql = Sql.newInstance("jdbc:mysql://localhost:3306/samples", "root", "", "com.mysql.jdbc.Driver")
def myCD = sql.dataSet("cdbean")
myCD.each{ cd -> println "${cd.id}+ ${cd.title}"}
myCD.add(id:"9999", title:"clerisy", artist:"Mary",type:"POP")
}
}

GroovySql 的 DataSet 类型可以容易地用 each 方法对表的内容进行遍历,容易地用 add 方法添加新行,add 方法接受一个 map 表示需要的数据。

使用存储过程和负索引

存储过程调用和负索引(negative indexing)可能是数据操纵的重要方面。GroovySql 使存储过程调用简单得就像在 Sql 类上使用 call 方法一样。对于负索引, GroovySql 提供了自己增强的 ResultSet 类型,它工作起来非常像 Groovy 中的 collections。例如,如果您想获取结果集中的最后一个项目,您可以像例子 所示的那样做:

sql.eachRow("select * from cdbean where id=556"){ cd ->  println "-1  = " + cd.getAt(-2) 
//prints type
println "2 = " + cd.getAt(3)
//prints type
}

编写一个简单的报告应用程序

我们将利用 GroovySql 编写一个报告所需数据库统计信息的应用程序,您的目标数据库是 MySQL,它恰好支持用查询发现状态信息这一概念。以下是您有兴趣的状态信息:

  1. 运行时间。
  2. 处理的全部查询数量。
  3. 特定查询的比例,例如 insert、update 和 select。
用 GroovySql 从 MySQL 数据库得到这个信息太容易了。
import groovy.sql.Sql
class StatusReport{
static void main(args) {
def uptime,questions,insertnum,selectnum,updatenum
def sql = Sql.newInstance("jdbc:mysql://localhost:3306/samples", "root", "", "com.mysql.jdbc.Driver")
sql.eachRow("show status"){ status ->
if(status.variable_name == "Uptime"){
uptime = status[1]
}else if (status.variable_name == "Questions"){
questions = status[1]
}
}
println "Uptime for Database: " + uptime
println "Number of Queries: " + questions
println "Queries per Minute = " + Integer.valueOf(questions) / Integer.valueOf(uptime)
sql.eachRow("show status like 'Com_%'"){ status ->
if(status.variable_name == "Com_insert"){
insertnum = Integer.valueOf(status[1])
}else if (status.variable_name == "Com_select"){
selectnum = Integer.valueOf(status[1])
}else if (status.variable_name == "Com_update"){
updatenum = Integer.valueOf(status[1])
}
}
println "% Queries Inserts = " + 100 * (insertnum / Integer.valueOf(uptime))
println "% Queries Selects = " + 100 * (selectnum / Integer.valueOf(uptime))
println "% Queries Updates = " + 100 * (updatenum / Integer.valueOf(uptime))
}
}

结束语

GroovySql 这个干净漂亮的 API 把闭包和迭代器与 Groovy 轻松的语法结合在一起,有助于在 Java 平台上进行快速数据库应用程序开发。
October 26

VB 学习日记 10/26

With 语句

在一个单一对象或一个用户定义类型上执行一系列的语句。

语法

With object
[statements]

End With

With 语句的语法具有以下几个部分:

部分 描述
object 必要参数。一个对象或用户自定义类型的名称。
statements 可选参数。要执行在 object 上的一条或多条语句。


说明

With 语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。例如,要改变一个对象的多个属性,可以在 With 控制结构中加上属性的赋值语句,这时候只是引用对象一次而不是在每个属性赋值时都要引用它。下面的例子显示了如何使用 With 语句来给同一个对象的几个属性赋值。

With MyLabel
.Height = 2000
.Width = 2000
.Caption = "This is MyLabel"
End With

注意 当程序一旦进入 With 块,object 就不能改变。因此不能用一个 With 语句来设置多个不同的对象。

可以将一个 With 块放在另一个之中,而产生嵌套的 With 语句。但是,由于外层 With 块成员会在内层的 With 块中被屏蔽住,所以必须在内层的 With 块中,使用完整的对象引用来指出在外层的 With 块中的对象成员。

重点 一般来说,建议您不要跳入或跳出 With 块。如果在 With 块中的语句被执行,但是 With 或 End With 语句并没有执行,则一个包含对该对象引用的临时变量将保留在内存中,直到您退出该过程。


将两行文本放入文本框

对于文本框,在设计窗口不能输入换行符,但可以再程序执行时用代码来换行,即使用ASCII字符的13和10,如下列小程序就可将两行文本放入文本框:

  Sub form_load( )

  NL=chr(13)+chr(10)

  text1.text=“my name is”& NL &“liu qiang”

  End sub

为什么要学 Java?

如果你常玩计算机,你可能知道 Java 是一个运算平台,而非咖啡或印尼的一个岛。在 Java 技术诞生后的这五年,Java 变成了大家朗朗上口的名词,种种的说法中,有些是事实,有也一些夸大不实。你可能会想知道:你该不该去学 Java,我给你的答案是肯定的,请听听我的说法。

Java 是什么?

你必须先了解 Java 究竟是什么?当人们提到「Java」,他们指的可能是:

1.       Java 程序语言:一个类似 C++ Smalltalk 的对象导向程序语言。学习 Java 程序语言类似学人类语言,都有一套规则和文法。

2.       Java 虚拟机器(JVM):用来执行 Java 程序。JVM 有许多平台的版本,比方说 Linux Windows 版。有了 JVMJava 程序就可以在不同的平台上执行,也就是所谓的「写一次,到处都可执行」。

3.       Java APIs(指的是函式库的程序设计接口):是一组预先定义好的类别,可以在你的程序中直接使用。这些东西是免费的,功能包含了像是档案存取,网络读写,图形接口等等。

当人们提到「学习 Java」,通常他们指的是 Java 语言和 API。大家可能对 JVM 所知不多,虽然对 JVM 有基本的认识对 Java 的学习是很有帮助的。


对象导向程序设计

对象导向程序设计已经广为接受,凌驾于传统的程序导向程序设计。对象导向程序设计带来许多额外的威力,但对象导向的学习曲线也较陡。如果你已经懂一套对象导向语言,那么你学 Java 就会容易多了。

如果你不了解对象导向程序设计,你有一个漫长的旅程必须经历。以我自己来说,我花了约四年的光阴,才领悟了对象导向的精髓,不过这四年我的学习是蛮随兴的。如果你正在上好老师的课,或正埋首于一堆好书之中,或许可以缩短到几个月就够了。千万别轻忽对象导向观念的学习,因为 Java 语法好学,但是要写出良好的对象导向程序可不容易。

 

学习 Java 的理由中,有些是技术性的,有些则是非技术性的。我先描述两个程序的特色(垃圾搜集和例外处理),然后我告诉你:为什么在程序设计的领域中,Java 几乎是必备的技能。我也会告诉你 Java 开发工具的信息和它们吸引人的售价。

感谢老天,有「垃圾收集」真好!

使用 C++,你可能一不小心就写出会当机的程序;如果使用 Java,情况就大不相同了。C++ 程序的头号 bug 是内存配置的失误。C++ 的程序员很辛苦,必须直接配置一块内存,这块内存不用时还必须主动归还。这听起来简单,做起来可不容易,所以 C++ 的程序常常会耗尽内存。
Java
就不同了。虽然你仍需要主动配置内存,但此内存一旦不再使用时就会自动释放,这就称为「垃圾收集(garbage collection)」。垃圾收集机制使得写程序时轻松许多,虽然因此执行时效率稍微变差,但影响可能轻微得你根本感觉不到。

例外处理机制让程序更稳固

不管是什么程序语言,都可以轻易地写出很糟糕的程序,但是使用 Java 想写出很糟糕的程序就不容易了。原因之一是垃圾收集,原因之二是「例外处理机制」。良好的程序员写出来的程序应该在一些意外状况发生时程序依然正常。档案无法开启,怎么办?万一读档读到一半时出问题,怎么办?如果你是用 C++ 或 其它语言,你可能会疏于考虑而没进行这些意外状况的处理。你可能会辩白:「我只是在试试看这样写能否行得通,我稍后会回过头来把程序改得更周延」。但结果 通常是:程序执行正常后,你又会忙着写新的程序,这么一拖后来就忘了回头处理还不完整的部分。问题终究还是会爆发出来,你终究还是要面对烂摊子。
Java
强迫你在一遇到有可能出问题的地方就要准备好因应之道。Java method 可以丢出例外,用来通知呼叫者程序出状况了,这是相当好的机制。即使你的程序要开启档案,你都必须在程序中写好例外处理方式。

到处都是 Java

到处都可见到 Java,这是一大好处。如果你靠写程序为生,你可能迟早都会接触到 JavaJava 已经渐渐地渗透到各领域,你可以写出 Java servlet,将其挂在 Apache 或其它网页服务器上,你可以写出 Java applet,在网页浏览器上执行。你甚至可以用 Java 写出数据库的 stored procedure,然后安装到 Oracle 8i 上。
我打赌,你身边使用 Java 的同事也会渐渐多起来。1997 年开始,许多大学已经用 Java 取代 C 当作程序设计教学的语言。如此一来,Java 变成了程序员共通的语言。如果学习 Java 所为你带来的唯一好处是方便和同事沟通,那么也值得。
最后,我要提的是:「写一次,到处都可执行」。Java 早期版本(1.0 1.1)比较无法完全跨平台,但现在就好多了。如果你想散布一个程序到多个平台,又不想改写大部分的程序,那么 Java 是绝佳的选择。Java 2 现在已经可以在 Linux、许多 Unix、和 Windows 上执行了。
MacOS 9
Java 仍在 1.1 时代。然而,Apple 的下一代操作系统 OS X 是以 Unix 为核心,这使得移植软件的过程大大简化了。我不知道 Apple 官方的说法为何,但是在今年三月的时候,我就已经看到 OS X developer release 3 上面执行着 Java 2。我很有自信 Java 2 将可以在 LinuxOS X、和 Windows 上执行,这样已经涵盖了大部分的计算机世界。

Java 免费

Sun 提供 Java 相关的工具,让你可以开发与执行 Java 程序。你无须支付授权费,你也不用花钱买 Java 开发工具。当然,Sun 这么做自有他们的如意算盘,Scott McNealySun 的老板)恨不得能征服世界,但是不管怎样,我们的的确确是不用付钱给任何人就可以享受 Java
而且,Java API 是珍贵的宝藏,让我们可以轻易地写出功能强大的程序。想写网络程序?已经有 API 了!想连接数据库?已经有 API 了!想写 GUI 程序?已经有 API 了!或者是想做数字影像处理、音乐文件处理、字符串剖析、数字签章?通通有 API 了!身为一个程序员,有这么多好用的 API 真的是再高兴不过的事了,这些 Java API 让我们不用「重新发明轮子」,省却不少功夫。Java 有这么广泛、标准、先进的 API,简直是让 C++ 程序员忌妒死了。C++ 程序员常要花时间学一些 C++ 类别库(比方说 MFC),然后到 Linux 上又得归零学另一套(因为 Linux 上没有 MFC)。一旦你学会了某 Java API,到哪儿都一样不会变动,不用重学。
最后,Java 的信息文件都可从网站上免费取得。如果你有网络而且有空,你可以直接透过网络学习对象导向、Java 语言、以及 Java APISun 在网站上放了一大堆很棒的线上教材。如果你习惯看书来学习,市面上有一堆 Java 的书可以参考(比方说,我写的 Learning Java)。

日光浴

Java 比其它语言来得有趣许多。Java 程序语言有许多「防呆装置」让你不会在程序中犯下大错,所以你可以很快地把程序写完,而如果使用其它语言必须要花更多时间。一份有趣的资料显示:用 Java 写程序比用其它语言快了四到十倍。我知道这听起来很不可思议,不过你可以问问周遭懂 Java 的人看看。不用花很多时间找 bug,意味着你可以在海滩上休息更久,意味着你可以接受阳光的日光浴而非「屏幕的日光浴」。用 Java 为你赚进的银两为自己买一副太阳眼镜吧!

本文作者:Jonathan Knudsen(着有「Learning Java」、「Java 2D Graphics」等书)
本文译者:蔡学镛

语言、平台、链接库 转自:蔡学镛《爪哇夜未眠》

语言、平台、链接库,这三者之间有很密切的关系。本文尝试着以链接库为中心,探讨它们之间的现况。

语言与链接库

语言通常会伴随着链接库,没有链接库的语言,差不多什么程序都写不出来。比方说,用 C 语言写出一个印出 Hello 的小程序,你需要用到 stdio 的链接库。用 Python GUI 程序,你需要 Tkinter 链接库。

平台与链接库

平台通常也会伴随着链接库,没有链接库的平台,等于是摆明了不希望别人开发此平台的程序。比方说,你想用 Visual C++ 6 开发 Windows 程序,你需要用到 GDI32 以及 USER32 MFC 等链接库。写 Mac OS 9 的程序,需要 Carbon 链接库。

平台的链接库 vs 语言的链接库

A 平台上用 B 语言开发软件,你会同时面对 A 平台的链接库和 B 语言的链接库,此二链接库因为是不同厂商所提供的,所以可能无法百分之百契合,特别是牵涉到内存管理、资源管理、执行绪等和操作系统有密切关系的主题时。如果你想进行的某功能在 A 平台的链接库和 B 语言的链接库都有提供,那么你应该使用 A 平台链接库的版本,通常比较安全些。比方说,用 C 语言开发 Windows 平台的程序,如果你想配置内存,那么你应该呼叫 Win32 API 的版本(比方说 GlobalAlloc()),而非 C 语言的版本(比方说 malloc())。

跨平台的链接库

你为某平台所开发的程序,为什么不能在别的平台上重新编译之后就能执行?问题就出在平台的链接库上。比方说,你用 C 语言搭配 C 的标准链接库和 Win32 链接库,在 Windows 平台上开发出一个演示文稿软件 WeakPoint 2000;你将 WeakPoint 2000 的原始程序拿到 Linux 上编译,却无法编译成功,问题就出在 Linux 没有 Win32 的链接库。

那么,如果有一个链接库将各个主要平台的链接库萃取(abstract)出一个共通的链接库,不就可以解决这个问题了。例如 Qt 正是这么做,你的 C++ 程序如果只使用标准的 C++ 链接库和 Qt 链接库,你就可以把程序重新编译之后在不同的平台(LinuxUnixWindows)上执行。

语言 + 平台 + 链接库

Java 就更了不起了,不但将链接库统一起来,更将平台统一起来,也就是说程序不用重新编译,就可以直接执行。但是也因此,多了一层 JVM,牺牲了一部分的效率。

跨语言的链接库

Borland VCL 链接库是在 Windows 平台上相当受好评的一套链接库,可以被 C++ Object PascalDelphi)使用。其实「跨语言的链接库」不是一种很好的说法,毕竟许多语言都可以连结外部原生链接库,两者不需要是同一种语言。但是这样的连结是否需要大费周章,则有相当大的差异。而 Delphi C++ Builder 使用 VCL 则是相当方便的。

即将在本月底问世的 Mac OS X,提供了 Cocoa 链接库。Cocoa 链接库可以被 Objective-C Java 语言使用。Objective-C Java 语言版的 Cocoa 链接库相似性在九成以上。Java Mac OS X 的原生程序设计上被简化成一个纯语言,完全不使用 Java API,只使用 Cocoa 链接库,这倒是挺特别的。(当然 Mac OS X 也另外会有 JVM 来支持一般的 J2SE

语言规格 + 平台 + 链接库 = 包山包海 ?

.NET Java 的眼光更高,甚至准备将语言规格也统一起来。.NET 有一个 CLScommon language specification),任何语言只要符合 CLS 这个标准,就可以轻易地整合进 .NET 平台,享用 .NET 平台的资源。这一点就是 Java 比不上的。虽然别的语言一样可以设计出编译器来将程序编译成 Java bytecode,在 JVM 上执行,但 Java 并没有提供直接的支持,所以要移植一个语言到 Java,比移植一个语言到 .NET 来得困难。

.NET
虽然允许各种语言,但是为了因应 CLS,所以各个语言常常需要做出妥协更改语言本身,比方说 Visual Basic 的更改幅度就很大(Visual Basic 7 差不多是一个新的语言了),而 JScript Visual C++ 的语言也都有改变。这种方式的语言中立性,无疑是削足适履。有了 CLS 的规范,这些语言会趋于一致,思维模式如出一辙,只有一些微不足道的小差异。历史会证明,C# 会是 .NET 平台上独大的语言,.NET 上的其它语言都将沦为点缀,这么一来,跨语言的宣示,竟成了一个幌子。虽然我对 .NET 的语言中立性这点颇有疑异,但我倒是挺喜欢 .NET framework 的,我忍不住竖起大拇指称赞 .NET framework 是「歹竹出好笋」。

.NET
的语言规格和链接库都是统一的。命运多舛的 Eiffel .NET 视为救命的浮木,准备将 Eiffel 移植到 .NET,但这么一来,Eiffel 势必得放弃自行开发的 Windows 专用链接库 WELWindows Eiffel Library)与跨平台的链接库(比方说 EiffelVision 等)。难道 Eiffel 没有发现它所以为的浮木,其实是鳄鱼伪装的?

同样的问题也会发生在 Delphi 上,如果 Delphi 准备移植到 .NET,也必须更改一部分的语言特性,并可能要放弃在 .NET 上使用 VCLCLX)。Delphi 这么做一点好处都没有。

最乱的时代,最好的选择

看完这篇文章,你可能已经头昏脑胀了。没关系,你只要记得下面这句话就好了:最乱的时代,最好的选择 ...Java

Java 学习之道 转自:蔡学镛《爪哇夜未眠》

目前 Java 可以说是产业界和学术界最热门的语言,许多读者都很急切想把 Java 学好。除非像电影「骇课任务」(Matrix)一样能够把需要的专业技巧下载到脑海(女主角只花了几秒下载资料,就马上具备飞行员的技巧),或是武侠小说中的运功传送内力的方式,否则花上一段时间苦学是免不了的。花时间,不打紧,就怕方法错误,事倍功半。我认为,学习 Java 包括了下列的范畴:

* 认识 Java 的原理
*
学会 Java 语言
*
对象导向的思维
* API
*
开发工具的用法

下面分别就这几点详细阐述。

学习 Java 的原理

了解 Java 的原理,才有可能真正体会 Java 的一切,学习任何事情,只要能掌握原理,就会比较顺利。我发现许多人使用 Java 已经逾年,却连 Java 最基本的特质都不清楚。

一般来说,信息系毕业的学生,对于信息的新事物学习的速度,会比其它科系来得快,就是因为四年的教育为他们奠定了学习新事物的基础,这也是信息系课程的价值所在。

除非你受过的基础训练够扎实,否则在学习或使用 Java 的过程中,你一定会需要参考到这些信息系学科的知识。我建议各位可以在闲暇之余,把信息系课本的书拿来读一读。这是治本之道,绝非立竿见影的特效药,必须要有耐心。

学习 Java 语言

学习 Java 语言很简单,毕竟 Java 语言也只包含五十多个关键词(keyword)与几十个算符(operator),再加上 Java 语法(syntax)也很简单,所以一般人可以很快就学会 Java 语言。危险的是,很多人认为已经完全掌控 Java 语言,但其实对于内部的运作机制仍不能掌握,这些盲点有时候会让你无法完全掌控 Java 语言。克服这些盲点的方式是看「The Java Language Specification, 2nd Ed.」(没有中文版)来彻底弄懂 Java 程序语言,并看「Inside the Java Virtual Machine, 2nd Ed.」(有中文版,但翻译得@#%$)来彻底掌握 Java 虚拟机器的运作方式。

学习对象导向的思维

学会了语言,并不代表就可以设计出好的对象导向系统架构。想要成为对象导向的专家,往往需要:

* 多看相关的书,特别是 Design Pattern Refactoring 的书。
*
多观摩别人的程序(例如 Java API design implementation
*
多写程序

学习 API

学会 Java 语言之后,还需要学会一些 API 才能写出有用的程序。Java API 非常多,必须规划好一个学习路径,才不会在浩瀚的 API 大海中迷失。必备的 API 包括了:IONew IOCollection FrameworkNetworkRMIJAXP... 等。至于其它的 API,就看你的需求而定,大致上分成:

* GUI 类:JavaBean -> Swing -> JavaHelp -> Java2D -> Image IO -> JAI -> Java 3D ...
* Enterprise
类:JDBC -> JDO -> Servlet -> JSP -> EJB -> JMS -> JTA/JTS...
* J2ME
类(这一类不是我的专长,无法提供学习顺序建议)

学习开发工具的用法

只用 JDK,是很难写出大型程序的,所以通常程序员会使用 JBuilder/VisualAge/ VisualCafe 等工具,这些软件卖这么贵,一定有它的价值,值得花一些时间好好学习这些开发工具的使用方式,你将会发现开发工具所提供的许多功能,可以让你在开发过程中生产力大增。

如何进入程序设计的领域 转自:蔡学镛《爪哇夜未眠》

这一阵子,软件、网络大红,许多人对程序设计开始感兴趣,我收到好一些 Sleepless in Java专栏读者的来信,不少读者共同的问题是:如何进入程序设计的领域?所以我选这 个主题当作 Sleepless in Java 专栏「复刊」的第一篇文章。

写程序是很有趣的事,可以把自己的想法付诸实行。写程序的工具很简单,只要有一部PC,适当的开发环境,就可以上工了。这样有限的工具却可以创造无限的可能,这也正是程序 设计迷人的地方。只要你能力够,你可以将你脑海中的创意写成程序,变成一套软件。

培养程序能力,不是一蹴可及的,下面提供我的一些建议,希望对有志进入程序设计领域的你有所帮助。

培养兴趣

把程序设计当成兴趣可以让你学得更快乐,学习效果自然会更好。在我到一个单位面试时,主管看了我的履历之后问我:「你怎么有这么多时间学会这么多东西、做这么多事?」 我的回答是:「把工作、学习、和娱乐结合在一起,时间就会是别人的三倍。」

我承认我很幸运,可以把程序设计当作赚钱的工作,学习的题材,以及茶余饭后的休闲活动。不是每个人都像我这般幸运,但是我相信至少大家都可以把它当成兴趣。相信我, 调整你的心境,把它当成是兴趣,而非苦差事,你非发现你的「程序功力」与日俱增。

慎选程序语言

慎选程序语言很重要,一开始就学太难的程序语言很容易让你遭遇到挫折而放弃。你可以挑比较容易且有趣的语言下手,建议您可以从下面的语言中择一:

VB:简单,好用,书籍多。
Java:比VB稍难,比C/C++简单,书籍多,用途非常广,相当有前途。可以当作学习C++的跳板。
Python:简单,好用,各个平台都支持(包括WindowsLinuxMacOSBeOS...)。国外很红,国内较少人用。原文书不少, 但中文书目前只有一本(欧莱礼出版)。我预期 Python 会是下一个热门的程序语言。

这三个语言只是我给各位的建议,你也可以多听听别人的意见。在选定一个程序语言之后,就要执着,不可以很快放弃,又改学另一个程序语言,否则永远都只懂皮毛。有句谚语是 这么说的:「A jack of all trades is master of none」。如果你号称会C++Java等十种程序语言,只不过每种程序语言都停留在Say Hello的阶段,相信面谈主管很快就会 对你 Say Goodbye

当你学精某程序语言,然后想再学另一个程序语言,你会发现有了前一个程序语言札实的根基,学任何新的程序语言都很快。

使用适当的开发工具

现在RAD工具软件盛行,Visual BasicDelphiJBuilderVisualAgeVisualCafe都是。有了RAD工具,只要「拉一拉,选一选」程序就完成一半了。许多硬底子的程序员 颇不以为然,认为初学者使用RAD工具不是好习惯,不过我倒不这么认为。我认为RAD工具可以降低初学者学习的门槛,提高兴趣。只是,在你学会「拉一拉,选一选」的简单步骤之后, 应该要找机会精进自己,弄懂内部的机制,不然不仅会有一种不踏实的感觉,甚至有许多程序会写不出来。我再强调一次:RAD可以当初学者入门的工具,但小心不要使它变成让你 停滞不前的借口。

另外也要学会使用开发工具所附的诸多功能(特别是除错功能)。许多人买了昂贵的 Enterprise 版开发工具,却只用到copy-paste功能,那么这套开发工具和 Windows 所附的 记事本就没有两样了。建议您开始使用一套新的开发工具前先花些时间把 User Guide 翻一翻。

现在许多开发工具都有免费版本可以下载,初学者不妨多多利用。

多读好书,少上课

大量阅读好书,是精进自己的不二法门。在这种快餐时代,许多人没耐心读书,反而喜欢到处上课,所以现在到处都是计算机班。如果遇到厉害的好老师,当然上过他(或她)的课 会收获很大,只是目前好老师的比例实在不高(虽然我自己也在开 Java/Enterprise Java/Java Swing 的课,但我还是得这么说)。我曾在网络上看到有人说:「没听过补习班教 出什么程序高手」,这倒也有几分真实性。不过一方面要归咎老师之外,一方面也要归咎学生,因为我发现通常上课的学生会在家里读书和写程序练习的比例不高。

相较于上课动辄花费上万元的高代价,买书只需要区区几百上千,划算多了,更何况书上的内容又比上课来得多且详细。不过「买书容易,看书难」。怕自己偷懒的话,找志同道合 的朋友组织「读书会」,彼此加油打气,还可以互相切磋。最好是像我前面提到的:把它变成兴趣。

加强英文阅读能力

加强英文和崇洋无关,而是有它实际的价值。许多信息都是要直接看英文的资料,因为没有中文版可看。

「可是我的英文很烂!」

这不是理由。没人生下来就能阅读英文,都是一点一点累积起阅读能力的。给自己一个机会,找一本单字文法都比较简单、且页数又少的书籍下手,很快地,你会发现技术书籍的 单字就是哪几个在重复出现,阅读这样的书一点都不难。

请注意:原文书的写作风格也有相当大的差异,有的书的确是不好读。所以,如果你刚开始要尝试阅读原文书,不要挑到像 Bjarne Stroustrup 所写的 The C++ Programming Language 这类难懂的书……尽管它是经典。

问人之前,先问自己

遇到问题,可以到国内外的程序设计相关讨论区去请教别人,如果态度谦逊,且问题叙述清楚,相信许多有经验的前辈会很乐于参与讨论。不过,凡是遇到问题就发问,这不是好事, 因为你会因此越来越依赖别人,而失去了自我解决问题的能力。自己应该尝试着查书、写程序测试、甚至阅读原始码,来找出答案。如此一来,真的没办法而请教别人时,也才能 比较深入地讨论。

多写程序

学程序设计不可以只看书,将随书光盘的程序执行一次,就认为自己已经学会了。应该开始写一些程序,且由小到大,由简单到复杂。找一些有趣的题目(比方说:计算器,踩地雷, 小画家,俄罗斯方块),可以提升写程序的动力。

我看到许多学生大一的程序作业都是copy同学的,失去了练习的机会。等到二年级之后,想开始写程序,却写不出来了。初学程序设计的阶段,应该给自己多一些机会写程序。

向上延伸,向下延伸,向旁延伸

当你发现你已经可以掌握此程序语言之后,你可以选择:

向上延伸:学习对象导向分析设计、Design Patterns、以及软件工程。让自己具有做大型计划的能力。

向下深入:深入了解内部底层的机制,例如操作系统(甚至硬件)内部。

向旁延伸:学习不同的API,例如:多媒体、数据库、企业运算

另外,数据结构、算法等基础也很重要。

结论

一分耕耘,一分收获,用对方法,持之以恒。每半年检阅自己这段期间以来的进步,相信你也会很高兴地说「我做到了」!

网络经典命令行 转- -

Windows 2k/2003 Server
1.最基本,最常用的,测试物理网络的
ping 192.168.10.88 -t ,参数-t是等待用户去中断测试

2.查看DNS、IP、Mac等
A.Win98:winipcfg
B.Win2000以上:Ipconfig/all

C.NSLOOKUP:如查看河北的DNS
C:\>nslookup
Default Server: ns.hesjptt.net.cn
Address: 202.99.160.68
>server 202.99.41.2 则将DNS改为了41.2
> pop.pcpop.com
Server: ns.hesjptt.net.cn
Address: 202.99.160.68

Non-authoritative answer:
Name: pop.pcpop.com
Address: 202.99.160.212

3.网络信使
Net send 计算机名/IP|* (广播) 传送内容,注意不能跨网段
net stop messenger 停止信使服务,也可以在面板-服务修改
net start messenger 开始信使服务

4.探测对方对方计算机名,所在的组、域及当前用户名
ping -a IP -t ,只显示NetBios名
nbtstat -a 192.168.10.146 比较全的

5.netstat -a 显示出你的计算机当前所开放的所有端口
netstat -s -e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP 和 IP的统计等

6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC地址
arp -a

7.在代理服务器端
捆绑IP和MAC地址,解决局域网内盗用IP:
ARP -s 192.168.10.59 00-50-ff-6c-08-75
解除网卡的IP与MAC地址的绑定:
arp -d 网卡IP

8.在网络邻居上隐藏你的计算机
net config server /hidden:yes
net config server /hidden:no 则为开启

9.几个net命令
A.显示当前工作组服务器列表 net view,当不带选项使用本命令时,它就会显示当前域或网络上的计算机上的列表。
比如:查看这个IP上的共享资源,就可以
C:\>net view 192.168.10.8
在 192.168.10.8 的共享资源
资源共享名 类型 用途 注释
--------------------------------------
网站服务 Disk
命令成功完成。

B.查看计算机上的用户帐号列表 net user
C.查看网络链接 net use
例如:net use z: \\192.168.10.8\movie 将这个IP的movie共享目录映射为本地的Z盘

D.记录链接 net session
例如:
C:\>net session
计算机 用户名 客户类型 打开空闲时间
-------------------------------------------------------------------------------
\\192.168.10.110 ROME Windows 2000 2195 0 00:03:12

\\192.168.10.51 ROME Windows 2000 2195 0 00:00:39
命令成功完成。

10.路由跟踪命令
A.tracert pop.pcpop.com
B.pathping pop.pcpop.com 除了显示路由外,还提供325S的分析,计算丢失包的%

11.关于共享安全的几个命令
A.查看你机器的共享资源 net share
B.手工删除共享
net share c$ /d
net share d$ /d
net share ipc$ /d
net share admin$ /d
注意$后有空格。
C.增加一个共享:
c:\net share mymovie=e:\downloads\movie /users:1
mymovie 共享成功。
同时限制链接用户数为1人。

12.在DOS行下设置静态IP
A.设置静态IP
CMD
netsh
netsh>int
interface>ip
interface ip>set add "本地链接" static IP地址 mask gateway
B.查看IP设置
interface ip>show address

Arp
显 示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则 arp 命令将显示帮助信息。

语法
arp [-a [InetAddr] [-N IfaceAddr] [-g [InetAddr] [-N IfaceAddr] [-d InetAddr [IfaceAddr] [-s InetAddr EtherAddr [IfaceAddr]

参数
-a [InetAddr] [-N IfaceAddr]
显 示所有接口的当前 ARP 缓存表。要显示指定 IP 地址的 ARP 缓存项,请使用带有 InetAddr 参数的 arp -a,此处的 InetAddr 代表指定的 IP 地址。要显示指定接口的 ARP 缓存表,请使用 -N IfaceAddr 参数,此处的 IfaceAddr 代表分配给指定接口的 IP 地址。-N 参数区分大小写。
-g [InetAddr] [-N IfaceAddr]
与 -a 相同。
-d InetAddr [IfaceAddr]
删除指定的 IP 地址项,此处的 InetAddr 代表 IP 地址。对于指定的接口,要删除表中的某项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。要删除所有项,请使用星号 通配符代替 InetAddr。
-s InetAddr EtherAddr [IfaceAddr]
向 ARP 缓存添加可将 IP 地址 InetAddr 解析成物理地址 EtherAddr 的静态项。要向指定接口的表添加静态 ARP 缓存项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。
/?
在命令提示符显示帮助。
注释
InetAddr 和 IfaceAddr 的 IP 地址用带圆点的十进制记数法表示。
物理地址 EtherAddr 由六个字节组成,这些字节用十六进制记数法表示并且用连字符隔开(比如,00-AA-00-4F-2A-9C)。
通过 -s 参数添加的项属于静态项,它们不会 ARP 缓存中超时。如果终止 TCP/IP 协议后再启动,这些项会被删除。要创建永久的静态 ARP 缓存项,请在批处理文件中使用适当的 arp 命令并通过“计划任务程序”在启动时运行该批处理文件。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
范例
要显示所有接口的 ARP 缓存表,可键入:

arp -a

对于指派的 IP 地址为 10.0.0.99 的接口,要显示其 ARP 缓存表,可键入:

arp -a -N 10.0.0.99

要添加将 IP 地址 10.0.0.80 解析成物理地址 00-AA-00-4F-2A-9C 的静态 ARP 缓存项,可键入:

arp -s 10.0.0.80 00-AA-00-4F-2A-9C

At
计划在指定时间和日期在计算机上运行命令和程序。at 命令只能在“计划”服务运行时使用。如果在没有参数的情况下使用,则 at 列出已计划的命令。

语法
at [\\ComputerName] [{[ID] [/delete]|/delete [/yes]}]

at [\\ComputerName] hours:minutes [/interactive] [{/everyate[,...]|/nextate[,...]}] command]

参数
\\computername
指定远程计算机。如果省略该参数,则 at 计划本地计算机上的命令和程序。
ID
指定指派给已计划命令的识别码。
/delete
取消已计划的命令。如果省略了 ID,则计算机中所有已计划的命令将被取消。
/yes
删除已计划的事件时,对来自系统的所有询问都回答“是”。
hours:minutes
指定命令运行的时间。该时间用 24 小时制(即从 00:00 [午夜] 到 23:59)的 小时: 分钟格式表示。
/interactive
对于在运行 command 时登录的用户,允许 command 与该用户的桌面进行交互。
/every:
在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行 command 命令。
date
指定运行命令的日期。可以指定一周的某日或多日(即,键入 M、T、W、Th、F、S、Su)或一个?械哪橙栈蚨嗳眨�矗氪?1 到31 之间的数字)。用逗号分隔多个日期项。如果省略了 date,则 at 使用该月的当前日。
/next:
在下一个指定日期(比如,下一个星期四)到来时运行 command。
command
指 定要运行的 Windows 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的通用命名协定 (UNC) 符号,而不是远程驱动器号。
/?
在命令提示符显示帮助。
注释
Schtasks 是功能更为强大的超集命令行计划工具,它含有 at 命令行工具中的所有功能。对于所有的命令行计划任务,都可以使用 schtasks 来替代 at。有关 schtasks 的详细信息,请参阅“相关主题”。

使用 at
使用 at 命令时,要求您必须是本地 Administrators 组的成员。

加载 Cmd.exe
在运行命令之前,At 不会自动加载 Cmd.exe (命令解释器)。如果没有运行可执行文件 (.exe),则在命令开头必须使用如下所示的方法专门加载 Cmd.exe:

cmd /c dir > c:\test.out。

查看已计划的命令
当不带命令行选项使用 at 时,计划任务会出现在类似于以下格式的表中:

Status ID Day Time Command Line
OK 1 Each F 4:30 PM net send group leads status due
OK 2 Each M 12:00 AM chkstor > check.file
OK 3 Each F 11:59 PM backup2.bat
包含标识号 (ID)
当在命令提示下使用带有标识号 (ID) 的 at 命令时,单个任务项的信息会显示在类似于下面的格式中:

Task ID: 1

Status:OK

Schedule:Each F

Time of Day:4:30 PM

Command:net send group leads status due当计划带有 at 的命令(尤其是带有命令行选项的命令)后,要通过键入不带命令行选项的 at 来检查该命令语法是否输入正确。如果显示在“命令行”列中的信息不正确,请删除该命令,然后重新键入它。如果还不正确,则可以在重新键入该命令时让它少带 些命令行选项。

查看结果
使用 at 的已经计划的命令作为后台程序运行。运行结果不会显示在计算机上。要将输出重定向到文件,请使用重定向符号 (>。如果将输出重定向到文件,则不论是在命令行还是在批处理文件中使用 at,都需要在重定向符号之前使用转义符 。例如,要重定向输出到 Output.text 文件,则要键入:

at 14:45 c:\test.bat ^>c:\output.txt

执行命令的当前目录为 systemroot 文件夹。

更改系统时间
在使用 at 命令计划了要运行的命令之后,如果更改了计算机的系统时间,则通过键入不带命令行选项的 at 可使 at 计划程序与修改后的系统时间同步。

存储命令
已计划的命令存储在注册表中。这样,如果重新启动“计划”服务,则不会丢失计划任务。

连接到网络驱动器
对于需要访问网络的计划作业,请不要使用已重新定向的驱动器。“计划”服务可能无法访问这些重定向的驱动器,或者,在该计划任务运行时如果有其他用户登录,则这些重定向的驱动器可能不会出现。因此,对于计划作业,请使用 UNC 路径。例如:

at 1:00pm my_backup \\server\share

请不要使用下述语法(其中 x: ?表示由用户建立的连接):

at 1:00pm my_backup x:

如果计划了一个使用驱动器号的 at 命令来连接共享目录,则应包含一个 at 命令以使在完成该驱动器的使用时断开与驱动器的连接。如果不能断开与驱动器的连接,则在命令提示下,所指派的驱动器号将不可用。

范例
要显示 Marketing 服务器上已计划的命令列表,请键入:

at \\marketing
要了解服务器 Corp 上标识号为 3 的命令的详细信息,请键入:

at \\corp 3
要计划在上午 8:00 于 Corp 服务器上运行网络共享命令,并将该列表重定向到 Maintenance 服务器的 Corp.txt 文件(位于 Reports 共享目录下)中,请键入:

at \\corp 08:00 cmd /c "net share reports=d:\marketing\reports >> \\maintenance\reports\corp.txt"
为了在每五天后的午夜将 Marketing 服务器的硬盘驱动器备份到磁带驱动器,首先创建名为 Archive.cmd 的批处理程序(它含有备份命令),然后计划该批处理程序的运行,为此请键入:

at \\marketing 00:00 /every:5,10,15,20,25,30 archive
要取消当前服务器上已计划的所有命令,请按下述方法清除 at 计划信息:

at /delete
如果要运行的命令不是可执行 (.exe) 文件,请按如下所示的方法在该命令之前使用 cmd /c 来加载 Cmd.exe:

cmd /c dir > c:\test.out。
Rsh
在 运行 RSH 服务的远程计算机上运行命令。Windows XP 和 Windows 2000 不提供 RSH 服务。Windows 2000 Server Resource Kit 提供名为 Rshsvc.exe 的 RSH 服务。使用不带参数的 rsh 显示帮助。

语法
rsh [Host] [-l UserName] [-n] [Command]

参数
Host
指定运行 command 的远程计算机。
-l UserName
指定远程计算机上使用的用户名。在省略情况下,使用当前登录用户的名称。
-n
将 rsh 的输入重定向到 NULL 设备。这防止本地计算机命令结果的显示。
Command
指定要运行的命令。
/?
在命令提示符显示帮助。
注释
标准*作
rsh 命令将标准输入复制到远程 command,将远程 command 的标准输出复制到其标准输出,将远程 command 的标准错误复制到其标准错误。Rsh 通常在远程命令终止时终止。

使用重定向符号
为了使重定向在远程计算机上发生,要以引号引住重定向符号(例如 ">>")。如果不使用引号,重定向会在本地计算机发生。例如,以下命令将远程文件“RemoteFile”附加到本地文件“LocalFile”中:

rsh othercomputer cat remotefile >> localfile

以下命令将远程文件 Remotefile 附加到远程文件 otherremotefile 中:

rsh othercomputer cat remotefile ">>" otherremotefile

使用 rsh
在使用已登录到某个域并且运行 Windows XP Professional 的计算机时,该域的主域控制器必须可用于确认用户名或 rsh 命令失败。

.rhosts 文件
.rhosts 文件通常许可 UNIX 系统的网络访问权限。.rhosts 文件列出可以访问远程计算机的计算机名及关联的登录名。在正确配置了 .rhosts 文件的远程计算机上运行 rcp、rexec 或 rsh 命令时,您不必提供远程计算机的登录和密码信息。

.rhosts 文件是一个文本文件,该文件中每一行为一个条目。条目由本地计算机名、本地用户名和有关该条目的所有注释组成。每个条目均由制表符或空格分开,注释用符号 (#) 打头。例如:

host7 #This computer is in room 31A

.rhosts 文件必须在远程计算机的用户主目录中。有关远程计算机 .rhosts 文件特定执行的详细信息,请参阅远程系统的文档。

只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
范例
要以名称 admin1 在远程计算机 vax1 上执行 telcon 命令,请键入:

rsh vax1 -l admin1 telcon

Tftp
向运行平凡文件传输协议 (TFTP) 服务或 daemon 的远程计算机(尤其是运行 UNIX 的计算机)传输文件或从运行平凡文件传输协议 (TFTP) 服务或 daemon 的远程计算机(尤其是运行 UNIX 的计算机)传输文件。

语法
tftp [-i] [Host] [{get | put}] [Source] [Destination]

参数
-i
指 定二进制图像传送模式(也称为八进制模式)。在二进制图像模式下,文件以一个字节为单位进行传输。在传送二进制文件时使用该模式。如果省略了 -i,文件将以 ASCII 模式传送。这是默认的传送模式。该模式将行尾 (EOL) 字符转换为指定计算机的适当格式。传送文本文件时使用该模式。如果文件传送成功,将显示数据传输率。
Host
指定本地或远程计算机。
put
将本地计算机上的 Destination 文件传送到远程计算机上的 Source 文件。因为 TFTP 协议不支持用户身份验证,所以用户必须登录到远程计算机,同时文件在远程计算机上必须可写。
get
将远程计算机上的 Destination 文件传送到本地计算机上的 Source 文件。
Source
指定要传送的文件。
Destination
指定将文件传送到的位置。如果省略了 Destination,将假定它与 Source 同名。
/?
在命令提示符显示帮助。
注释
使用 get 参数
如果将本地计算机上的文件 FileTwo 传送到远程计算机上的文件 FileOne,则指定 put。如果将远程计算机上的文件 FileTwo 传送到远程计算机上的文件 FileOne,则指定 get。

Windows XP 或 Windows 2000 不提供一般用途的 TFTP 服务器。Windows 2000 提供的 TFTP 服务器服务只为 Windows XP 和 Windows 2000 客户端计算机提供远程引导功能。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
范例
要从本地计算机将文件 Users.txt 传送到远程计算机 vax1 上的 Users19.txt,请键入:

tftp vax1 put users.txt users19.txt
Nbtstat
显 示本地计算机和远程计算机的基于 TCP/IP (NetBT) 协议的 NetBIOS 统计资料、NetBIOS 名称表和 NetBIOS 名称缓存。Nbtstat 可以刷新 NetBIOS 名称缓存和注册的 Windows Internet 名称服务 (WINS) 名称。使用不带参数的 nbtstat 显示帮助。

语法
nbtstat [-a RemoteName] [-A IPAddress] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [Interval]

参数
-a remotename
显示远程计算机的 NetBIOS 名称表,其中,RemoteName 是远程计算机的 NetBIOS 计算机名称。NetBIOS 名称表是运行在该计算机上的应用程序使用的 NetBIOS 名称列表。
-A IPAddress
显示远程计算机的 NetBIOS 名称表,其名称由远程计算机的 IP 地址指定(以小数点分隔)。
-c
显示 NetBIOS 名称缓存内容、NetBIOS 名称表及其解析的各个地址。
-n
显示本地计算机的 NetBIOS 名称表。Registered 中的状态表明该名称是通过广播或 WINS 服务器注册的。
-r
显示 NetBIOS 名称解析统计资料。在配置为使用 WINS 的 Windows XP 计算机上,该参数将返回已通过广播和 WINS 解析和注册的名称号码。
-R
清除 NetBIOS 名称缓存的内容并从 Lmhosts 文件中重新加载带有 #PRE 标记的项目。
-RR
重新释放并刷新通过 WINS 注册的本地计算机的 NetBIOS 名称。
-s
显示 NetBIOS 客户和服务器会话,并试图将目标 IP 地址转化为名称。
-S
显示 NetBIOS 客户和服务器会话,只通过 IP 地址列出远程计算机。
Interval
重新显示选择的统计资料,可以中断每个显示之间的 Interval 中指定的秒数。按 CTRL+C 停止重新显示统计信息。如果省略该参数, netstat 将只显示一次当前的配置信息。
/?
在命令提示符显示帮助。
注释
Nbtstat 命令行参数区分大小写。
下表列出了由 Nbtstat 生成的列标题。 标题 说明
Input 接收的字节数。
Output 发送的字节数。
In/Out 该连接是否从计算机(传出)或者其他计算机到本地计算机(传入)。
Lift 名称表缓存项在被清除之前所存留的时间。
Local Name 本地 NetBIOS 名称与连接相关联。
Remote Host 与远程计算机相关的名称或 IP 地址。
<03> 转化为十六进制的 NetBIOS 名称的最后一个字节。每个 NetBIOS 名称长度均为 16 个字符。由于最后一个字节通常有特殊的意义,因为相同的名称(只有最后一个字节不同)可能在一台计算机上出现几次。例如,<20> 在 ASCII 文本中是一个空格。
Type 名称类型。名称可以是单个名称,也可以是组名称。
Status 远程计算机上是否在运行 NetBIOS 服务(“已注册”),或同一计算机名是否已注册了相同的服务(“冲突”)。
State NetBIOS 连接的状态。

下表列出了可能的 NetBIOS 连接状态。 状态 说明
已连接 会话已建立。
关联 连接的终结点已经被创建并与 IP 地址关联。
正接听 该终结点对内向连接可用。
空闲 该结束点已被打开单不能接收连接。
正在连接 会话处于连接阶段。在此阶段正在解析所选目标的由名称到 IP 地址的映射。
接受 入站会话当前正在被接受,将在短期内连接。
重新连接 会话将试图重新连接(如果第一次连接失败)。
出站 会话正处于连接阶段。此阶段正在创建 TCP 连接。
入站 入站会话在连接期。
正在断开 会话正在断开连接。
已中断连接 本地计算机已断开连接,并正等待远程系统的确认。

只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
范例
要显示 NetBIOS 计算机名为 CORP07 的远程计算机的 NetBIOS 名称表,请键入:

nbtstat -a CORP07

要显示所分配 IP 地址为 10.0.0.99 的远程计算机的 NetBIOS 名称表,请键入:

nbtstat -A 10.0.0.99

要显示本地计算机的 NetBIOS 名称表,请键入:

nbtstat -n

要显示本地计算机 NetBIOS 名称缓存的内容,请键入:

nbtstat -c

要清除 NetBIOS 名称缓存并重新装载本地 Lmhosts 文件中带标记 #PRE 的项目,请键入:

nbtstat -R

要释放通过 WINS 服务器注册的 NetBIOS 名称并对其重新注册,请键入:

nbtstat -RR

要每隔 5 秒以 IP 地址显示 NetBIOS 会话统计资料,请键入:

nbtstat -S 5

Netstat
显 示活动的 TCP 连接、计算机侦听的端口、以太网统计信息、IP 路由表、IPv4 统计信息(对于 IP、ICMP、TCP 和 UDP 协议)以及 IPv6 统计信息(对于 IPv6、ICMPv6、通过 IPv6 的 TCP 以及通过 IPv6 的 UDP 协议)。使用时如果不带参数,netstat 显示活动的 TCP 连接。

语法
netstat [-a] [-e] [-n] [-o] [-p Protocol] [-r] [-s] [Interval]

参数
-a
显示所有活动的 TCP 连接以及计算机侦听的 TCP 和 UDP 端口。
-e
显示以太网统计信息,如发送和接收的字节数、数据包数。该参数可以与 -s 结合使用。
-n
显示活动的 TCP 连接,不过,只以数字形式表现地址和端口号,却不尝试确定名称。
-o
显示活动的 TCP 连接并包括每个连接的进程 ID (PID)。可以在 Windows 任务管理器中的“进程”选项卡上找到基于 PID 的应用程序。该参数可以与 -a、-n 和 -p 结合使用。
-p Protocol
显 示 Protocol 所指定的协议的连接。在这种情况下,Protocol 可以是 tcp、udp、tcpv6 或 udpv6。如果该参数与 -s 一起使用按协议显示统计信息,则 Protocol 可以是 tcp、udp、icmp、ip、tcpv6、udpv6、icmpv6 或 ipv6。
-s
按协议显示统计信息。默认情况下,显示 TCP、UDP、ICMP 和 IP 协议的统计信息。如果安装了 Windows XP 的 IPv6 协议,就会显示有关 IPv6 上的 TCP、IPv6 上的 UDP、ICMPv6 和 IPv6 协议的统计信息。可以使用 -p 参数指定协议集。
-r
显示 IP 路由表的内容。该参数与 route print 命令等价。
Interval
每隔 Interval 秒重新显示一次选定的信息。按 CTRL+C 停止重新显示统计信息。如果省略该参数,netstat 将只打印一次选定的信息。
/?
在命令提示符显示帮助。
注释
与该命令一起使用的参数必须以连字符 (-) 而不是以短斜线 (/) 作为前缀。
Netstat 提供下列统计信息:
Proto
协议的名称(TCP 或 UDP)。

Local Address
本地计算机的 IP 地址和正在使用的端口号。如果不指定 -n 参数,就显示与 IP 地址和端口的名称对应的本地计算机名称。如果端口尚未建立,端口以星号(*)显示。

Foreign Address
连接该插槽的远程计算机的 IP 地址和端口号码。如果不指定 -n 参数,就显示与 IP 地址和端口对应的名称。如果端口尚未建立,端口以星号(*)显示。

(state)
表明 TCP 连接的状态。可能的状态如下:

CLOSE_WAIT

CLOSED

ESTABLISHED

FIN_WAIT_1

FIN_WAIT_2

LAST_ACK

LISTEN

SYN_RECEIVED

SYN_SEND

TIMED_WAIT

有关 TCP 连接状态的信息,请参阅 RFC 793。

只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
范例
要想显示以太网统计信息和所有协议的统计信息,请键入下列命令:

netstat -e -s

要想仅显示 TCP 和 UDP 协议的统计信息,请键入下列命令:

netstat -s -p tcp udp

要想每 5 秒钟显示一次活动的 TCP 连接和进程 ID,请键入下列命令:

nbtstat -o 5

要想以数字形式显示活动的 TCP 连接和进程 ID,请键入下列命令:

nbtstat -n –o

Runas
允许用户用其他权限运行指定的工具和程序,而不是用户当前登录提供的权限。

语法
runas [{/profile|/noprofile}] [/env] [/netonly] [/smartcard] [/showtrustlevels] [/trustlevel] /user:UserAccountName program

参数
/profile
加载用户的配置文件。/profile 是默认值。
/no profile
/noprofile 指定不加载用户的配置文件。这使应用程序载入的更加快速,但是在一些应用程序中也会引起错误。
/env
指定当前使用的网络环境,而不是用户的本地环境。
/netonly
指明指定的用户信息只用于远程访问。
/smartcard
/smartcard 表示凭据是否是由智能卡提供的。
/showtrustlevels
列出 /trustlevel 开关项。
/trustlevel
指定应用程序运行所在的授权级别。使用 /showtrustlevels 查看可用的信任级别。
/user:UserAccountName
指定在其下运行程序的用户帐户的名称。用户帐户的格式应是 user@domain 或 domain\user。
程序
指定要用在 /user 中指定的帐户运行的程序或命令。
/?
在命令提示符显示帮助。
注释
管理员可以使用一个权限受限制的帐户执行日常、非管理性的任务,只有在执行特定管理任务时,才使用一个权限更大的帐户。要不经过注销再重新登录就完成这样的任务,可以用一般帐户登录,然后使用 runas 命令来运行需要更大权限的工具。
有关 runas 命令的使用范例,请参阅“相关主题”。
尽管 runas 通常由 Administrator 帐户使用,但并非仅限于 Administrator 帐户。任何拥有多个帐户的用户均可以利用备用凭据,使用 runas 运行程序、MMC 控制台或“控制面板”项。
如果要在计算机上使用 Administrator 帐户,对于 /user:,键入下列参数之一:
/user:AdministratorAccountName@ComputerName

/user:ComputerName\AdministratorAccountName

如果想以域管理员身份使用这个命令,键入下列参数之一:
/user:AdministratorAccountName@DomainName

/useromainName\AdministratorAccountName

runas 命令允许您运行程序 (*.exe)、保存的 MMC 控制台 (*.msc)、程序和保存的 MMC 控制台的快捷方式及“控制面板”项。作为另一组(例如“Users”或“Power Users”组)的成员登录到计算机时,可以以管理员的身份运行。
可以使用 runas 命令来启动任何程序、MMC 控制器或“控制面板”项。只要提供适当的用户帐户和密码信息,用户帐户就具有登录到计算机的能力,并且程序、MMC 控制台、“控制面板”项在系统中及对该用户帐户均可用.
runas 命令允许您管理其他域的服务器(运行工具的计算机和要管理的服务器在不同的域中)。
如果尝试使用 runas 从网络位置启动程序、MMC 控制台或“控制面板”项,可能会因为用来连接网络共享的凭据与用来启动程序的凭据不同而失败。后者的凭据可能无法访问同一网络共享。
有些项,例如“打印机”文件夹和桌面项,间接由 Windows 2000 打开,而不能使用 runas 命令启动。
如果 runas 命令失败,则可能是没有运行 RunAs 服务或使用的用户帐户无效。要检查 RunAs 服务的状态,请在“计算机管理”中单击“服务和应用程序”,然后单击“服务”。要测试用户帐户,请尝试使用该帐户登录合适的域。
范例
要在本地计算机上以管理员身份启动 Windows 2000 命令提示行实例,请键入:

runas /user:localmachinename\administrator cmd
系统提示时,键入管理员密码。

要使用名为 companydomain\domainadmin 的域管理员帐户启动“计算机管理”管理单元实例,请键入:

runas /user:companydomain\domainadmin "mmc %windir%\system32\compmgmt.msc"
当提示时,键入帐户密码。

要使用名为 domain.microsoft.com 的域中的域管理员帐户 user 启动“记事本”实例,请键入:

runas /user:user@domain.microsoft.com "notepad my_file.txt"
当提示时,键入帐户密码。

要启动命令提示符行窗口、保存的 MMC 控制台、控制面板项或管理其他地点服务器的程序的一个实例,请键入:

runas /netonly /useromain\username "command"
domain\username 必须是有足够权限管理服务器的用户。当提示时,键入帐户密码。
Route
在本地 IP 路由表中显示和修改条目。使用不带参数的 route 可以显示帮助。

语法
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric] [if Interface]

参数
-f
清 除所有不是主路由(网掩码为 255.255.255.255 的路由)、环回网络路由(目标为 127.0.0.0,网掩码为 255.255.255.0 的路由)或多播路由(目标为 224.0.0.0,网掩码为 240.0.0.0 的路由)的条目的路由表。如果它与命令之一(例如 add、change 或 delete)结合使用,表会在运行命令之前清除。
-p
与 add 命令共同使用时,指定路由被添加到注册表并在启动 TCP/IP 协议的时候初始化 IP 路由表。默认情况下,启动 TCP/IP 协议时不会保存添加的路由。与 print 命令一起使用时,则显示永久路由列表。所有其它的命令都忽略此参数。永久路由存储在注册表中的位置是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes。
Command
指定要运行的命令。下表列出了有效的命令。 命令 目的
add 添加路由
change 更改现存路由
delete 删除路由
print 打印路由

Destination
指定路由的网络目标地址。目标地址可以是一个 IP 网络地址(其中网络地址的主机地址位设置为 0),对于主机路由是 IP 地址,对于默认路由是 0.0.0.0。
mask subnetmask
指 定与网络目标地址相关联的网掩码(又称之为子网掩码)。子网掩码对于 IP 网络地址可以是一适当的子网掩码,对于主机路由是 255.255.255.255 ,对于默认路由是 0.0.0.0。如果忽略,则使用子网掩码 255.255.255.255。定义路由时由于目标地址和子网掩码之间的关系,目标地址不能比它对应的子网掩码更为详细。换句话说,如果子网掩码的一位 是 0,则目标地址中的对应位就不能设置为 1。
Gateway
指定超过由网络目标和子网掩码定义的可达到的地址集的前一个或下一 个跃点 IP 地址。对于本地连接的子网路由,网关地址是分配给连接子网接口的 IP 地址。对于要经过一个或多个路由器才可用到的远程路由,网关地址是一个分配给相邻路由器的、可直接达到的 IP 地址。
metric Metric
为路由指定所需跃点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。
if Interface
指定目标可以到达的接口的接口索引。使用 route print 命令可以显示接口及其对应接口索引的列表。对于接口索引可以使用十进制或十六进制的值。对于十六进制值,要在十六进制数的前面加上 0x。忽略 if 参数时,接口由网关地址确定。
/?
在命令提示符显示帮助。
注释
路 由表中 跃点数 一列的值较大是由于允许 TCP/IP 根据每个 LAN 接口的 IP 地址、子网掩码和默认网关的配置自动确定路由表中路由的跃点数造成的。默认启动的自动确定接口跃点数确定了每个接口的速度,调整了每个接口的路由跃点数, 因此最快接口所创建的路由具有最低的跃点数。要删除大跃点数,请在每个 LAN 连接的 TCP/IP 协议的高级属性中禁用自动确定接口跃点数。
如 果在 systemroot\System32\Drivers\Etc 文件夹的本地网络文件中存在适当的条目,名称可以用于 Destination。只要名称可以通过“域名系统” (DNS) 查询这样的标准主机名解析技术分解为 IP 地址,就可以将其用于 Gateway,DNS 查询使用存储在 systemroot\System32\Drivers\Etc 文件夹下的本地主机文件和 NetBIOS 名称解析。
如果是 print 或 delete 命令,可以忽略 Gateway 参数,使用通配符来表示目标和网关。Destination 的值可以是由星号 指定的通配符。如果指定目标含有一个星号 或问号 (?),它被看作是通配符,只打印或删除匹配的目标路由。星号代表任意一字符序列,问号代表任一字符。例如, 10.*.1, 192.168.*、 127.* 和 *224* 都是星号通配符的有效使用。
使用了无效的目标和子网掩码(网掩码)值的组合,会显示“Route:bad gateway address netmask”错误消息。目标中有一位或多位设置为 1,而其在子网掩码中的对应位设置为 0 时会发生这个错误。可以通过二进制表示法表示目标和子网掩码来检查这种情况。以二进制表示的子网掩码包括表示目标网络地址部分的一连串的 1 和表示目标主机地址部分的一连串的 0 两个部分。查看目标以确定目标的主机地址部分(由子网掩码所定义)是否有些位设置成了 1。
只有 Windows NT 4.0、Windows 2000、Windows Millennium Edition 和 Windows XP 的 route 命令支持 -p 参数。Windows 95 或 Windows 98 的 route 命令不支持该参数。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。
范例
要显示 IP 路由表的完整内容,请键入:

route print

要显示 IP 路由表中以 10. 开始的路由,请键入:

route print 10.*

要添加默认网关地址为 192.168.12.1 的默认路由,请键入:

route add 0.0.0.0 mask 0.0.0.0 192.168.12.1

要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1 的路由,请键入:

route add 10.41.0.0 mask 255.255.0.0 10.27.0.1

要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1 的永久路由,请键入:

route -p add 10.41.0.0 mask 255.255.0.0 10.27.0.1

要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,跃点数为 7 的路由,请键入:

route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7

要添加目标为 10.41.0.0,子网掩码为 255.255.0.0,下一个跃点地址为 10.27.0.1,接口索引为 0x3 的路由,请键入:

route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 if 0x3

要删除目标为 10.41.0.0,子网掩码为 255.255.0.0 的路由,请键入:

route delete 10.41.0.0 mask 255.255.0.0

要删除 IP 路由表中以 10. 开始的所有路由,请键入:

route delete 10.*

要将目标为 10.41.0.0,子网掩码为 255.255.0.0 的路由的下一个跃点地址由 10.27.0.1 更改为 10.27.0.25,请键入:

route change 10.41.0.0 mask 255.255.0.0 10.27.0.25

怎样在windowsserver的cmd下更改ip地址■■■ -> Windows 2k/2003 Server
在命令行下更改ip地址

Windows2000是现在比较流行的*作系统,它的功能是很强大的,它甚至可以象Unix一样在命令行下做很多的工作。下面一种在命令行下更改ip地址的方法,现介绍给大家(括号里是一些注释,黑体字是人工录入的):

C:\>ipconfig (首先用ipconfig这个命令看一下更改之前的ip地址)

Windows 2000 IP Configuration

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :

IP Address. . . . . . . . . . . . : 10.1.1.94 (本地连接更改之前的ip)

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 10.1.1.254

C:\>netsh (进入设置模式)

netsh>interface

interface>ip

interface ip>set address "本地连接" static 10.1.1.111 255.255.255.0 10.1.1.254

interface ip>exit


上文中的set命令具体解释如下:

set address - 设置指定的接口的 IP 地址和默认网关。

set dns - 设置 DNS 服务器模式和地址。

set wins - 设置 WINS 服务器模式和地址。


C:\>ipconfig (更改后再用ipconfig命令看一下,确认一下是否更改成功)

Windows 2000 IP Configuration

Ethernet adapter 本地连接:

Connection-specific DNS Suffix . :

IP Address. . . . . . . . . . . . : 10.1.1.111

Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 10.1.1.254


命令一览
.. - 移到上一层上下文级。
? - 显示命令列表。
aaaa - 更改到 `aaaa` 上下文。
abort - 丢弃在脱机模式下所做的更改。
add - 将一个配置项添加到项目列表中。
alias - 添加一个别名
bye - 退出程序。
commit - 提交在脱机模式中所做的更改。
delete - 在项目列表上删除一个配置项目。
dhcp - 更改到 `dhcp` 上下文。
dump - 显示一个配置脚本。
exec - 运行一个脚本文件。
exit - 退出程序。
help - 显示命令列表。
interface - 更改到 `interface` 上下文。
offline - 将当前模式设置成脱机。
online - 将当前模式设置成联机。
popd - 从堆栈上打开一个上下文。
pushd - 将当前上下文放推入堆栈。
quit - 退出程序。
ras - 更改到 `ras` 上下文。
routing - 更改到 `routing` 上下文。
set - 更新配置设置。
show - 显示信息
unalias - 删除一个别名。
wins - 更改到 `wins` 上下文。
快速切换IP地址有绝招

在 工作过程中会遇到在不同的网段中进行网络调试的情况,经常需要将机器在几个不同的IP地址中进行切换。在Win2000*作系统中改变IP地址较之 Win98已经方便多了因为改完IP地址后不需要重启计算机,但还要进入网络属性设置中进行*作。有没有再简便一点的方法呢,比如用鼠标双击一下快捷 方式就可以实现IP地址的切换?

  答案是肯定的。在Win2000中用netsh命令就可以实现这个功能。首先进入命令行模式(在 “开始→运行”中键入“cmd”即可进入命令行模式),在提示符下键入netsh即可进入netsh的界面。再键入int ip进入接口IP的配置模式,键入dump则列出接口IP配置信息:

  C:\Documents and Settings\Administrator>netsh
  netsh>
  netsh>int ip
  interface ip>dump
  # ----------------------------------
  # 接口 IP 配置
  # ----------------------------------
  pushd interface ip
  # ″本地连接″ 的接口IP 配置(注:以下显示视具体机器情况而定)
  set address name = ″本地连接″ source = static addr = 192.168.0.5 mask = 255.255.255.0
  set address name = ″本地连接″ gateway = 192.168.0.2 gwmetric = 1
  set dns name = ″本地连接″ source = static addr = 61.237.17.181
  add dns name = ″本地连接″ addr = 211.97.168.129
  add dns name = ″本地连接″ addr = 211.98.4.1
  set wins name = ″本地连接″ source = static addr = none
  # ″本地连接 2″ 的接口 IP 配置
  set address name = ″本地连接 2″ source = dhcp
  set dns name = ″本地连接 2″ source = dhcp
  set wins name = ″本地连接 2″ source = dhcp
  popd
  # 接口 IP 配置结束

快速切换IP地址有绝招 2


现在我们可以大致了解到用netsh命令更改IP地址的方式,即通过“set address name =连接名称(连接名称要用引号括起来)source=static addr=IP地址 mask=子网掩码”来实现。

  到命令行模式下用netsh直接试一下。比如要将本机的IP地址改为192.168.0.7,子网掩码为255.255.255.0,可以进行以下*作:

  C:\Documents and Settings\Administrator>netsh
  netsh>int ip
  interface ip>set address name ="本地连接"source = static addr = 192.168.0.7 mask = 255.255.255.0
  确认更改。
  interface ip>exit
  再用ipconfig命令核实一下:
  C:\Documents and Settings\Administrator>ipconfig
  Windows 2000 IP Configuration
  Ethernet adapter 本地连接 2
  Media State . . . . . . . . . . .  Cable Disconnected
  Ethernet adapter 本地连接
  Connection-specific DNS Suffix . 
  IP Address. . . . . . . . . . . .  192.168.0.7
  Subnet Mask . . . . . . . . . . .  255.255.255.0
  Default Gateway . . . . . . . . .  192.168.0.2

  从以上显示中可以看到已经成功实现了在Win2000中用命令行方式来改变IP地址。用这种方式改变IP地址甚至还没有在图形界面中*作来得快。不过我们再用脚本帮一下忙,离胜利目标就不远了。首先打开记事本,输入以下内容:

  int ip
  set address name=″本地连接″ source=static addr=192.168.0.7 mask=255.255.255.0

  然后保存为一个名为“7.sh”的文件,放到C盘根目录下,再进入命令行模式,在C盘根目录下键入“netsh exec 7.sh”,好像没什么反应啊?不过再用ipconfig查看一下,会发现IP地址已经改过来了。

   最后再用记事本写一个批处理文件,命名为“7.bat”,内容为“netsh exec 7.sh”。为该文件在桌面上创建一个快捷方式,这样双击该快捷方式即可实现IP地址的快速改变。如果要快速在192.168.0.5、 192.168.0.7等相同网段IP地址间进行切换的话,只需要改变“addr”后面的地址即可,但是要将IP地址改为如172.19.96.7之类不 同网段的IP地址,就需要将网关信息一起改变,也就是在脚本文件中加入一行关于网关的信息:

  int ip
  set address name = ″本地连接″source = static addr= 172.19.96.7 mask = 255.255.255.0
  set address name = ″本地连接″gateway = 172.19.96.1 gwmetric = 1

  同样地将以上内容存为脚本文件,再做成批处理文件执行一下,用ipconfig/all命令检测一下,发现包括网关在内的信息也修改过来了。这是不是既快又方便,IP地址想换就换?
使用 netstat 显示连接统计
可 以使用 netstat 命令显示协议统计信息和当前的 TCP/IP 连接。netstat -a 命令将显示所有连接,而 netstat -r 显示路由表和活动连接。netstat -e 命令将显示 Ethernet 统计信息,而 netstat -s 显示每个协议的统计信息。如果使用 netstat -n,则不能将地址和端口号转换成名称。
Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
-d 指定不将IP 地址解析到主机名称。
-h maximum_hops 指定跃点数以跟踪到称为 target_name 的主机的路由。
-j host-list 指定 Tracert 实用程序数据包所采用路径中的路由器接口列表。
-w timeout 等待 timeout 为每次回复所指定的毫秒数。
target_name 目标主机的名称或 IP 地址。
pathping 命令是一个路由跟踪工具,它将 ping 和 tracert 命令的功能和这两个工具所不提供的其他信息结合起来。pathping 命令在一段时间内将数据包发送到到达最终目标的路径上的每个路由器,然后基于数据包的计算机结果从每个跃点返回。由于命令显示数据包在任何给定路由器或链 接上丢失的程度,因此可以很容易地确定可能导致网络问题的路由器或链接。
-n Hostnames 不将地址解析成主机名。
-h Maximum hops 搜索目标的最大跃点数。
-g Host-list 沿着路由列表释放源路由。
-p Period 在 ping 之间等待的毫秒数。
-q Num_queries 每个跃点的查询数。
-w Time-out 为每次回复所等待的毫秒数。
-T Layer 2 tag 将第 2 层优先级标记(例如,对于 IEEE 802.1p)连接到数据包并将它发送到路径中的每个网络设备。这有助于标识没有正确配置第 2 层优先级的网络设备。-T 开关用于测试服务质量 (QoS) 连通性。
-R RSVP test Che 检查以确定路径中的每个路由器是否支持“资源保留协议 (RSVP)”,此协议允许主机为数据流保留一定量的带宽。 -R 开关用于测试服务质量 (QoS) 连通性。
在命令提示符下交互使用 DHCP 命令
打开 命令提示符。
键入 netsh。
在 netsh>(Netshell) 命令提示行键入“dhcp”。
在 dhcp>(DHCP 辅助程序)命令提示行,为您要管理的服务器键入 server \\servername 或 server ip_address。
一旦您有权管理的服务器已成功连接,则会看到“您可以对服务器 servername 进行读写访问”
一旦连接成功,您就可以使用用于 DHCP 的任何支持的 Netshell 命令。 键入 /? 或 help 来显示直接的 DHCP 子命令菜单或作为选项显示,键入 list 列出可与 DHCP 一起使用的所有 Netshell 子命令。
route 的命令
routing ip add/delete/set/show interface 在指定接口上添加、删除、配置或显示常规 IP 路由设置。
routing ip add/delete/set/show filter 在指定接口上添加、删除、配置或显示 IP 数据包筛选器。
routing ip add/delete/show boundary 在指定接口上添加、删除或显示多播边界设置。
routing ip add/set ipiptunnel 添加或配置 IP 中的 IP 接口。
routing ip add/delete/set/show rtmroute 添加、配置或显示不持续的路由表管理器路由。
routing ip add/delete/set/show persistentroute 添加、删除、配置或显示持续路由。
routing ip add/delete/set/show preferenceforprotocol 添加、删除、配置或显示路由协议的优先级。
routing ip add/delete/set/show scope 添加、删除或显示多播作用域。
routing ip set/show loglevel 配置或显示全局 IP 记录等级。
routing ip show helper 显示 IP 的所有 Netsh 实用程序子环境。
routing ip show protocol 显示所有正在运行的 IP 路由协议。
routing ip show mfe 显示多播转发项。
routing ip show mfestats 显示多播转发项统计。
routing ip show boundarystats 显示 IP 多播边界。
routing ip show r *** estinations 显示路由表管理器路由表中的目标。
routing ip show rtmroutes 显示路由表管理器路由表中的路由。
routing ip nat set/show global 配置或显示全局网络地址转换 (NAT) 设置。
routing ip nat add/delete/set/show interface 添加、删除、配置或显示指定接口的 NAT 设置。
routing ip nat add/delete addressrange 在 NAT 接口公用地址池中添加或删除一个地址范围。
routing ip nat add/delete addressmapping 添加或删除 NAT 地址映射。
routing ip nat add/delete portmapping 添加或删除 NAT 端口映射。
routing ip autodhcp set/show global 配置或显示全局 DHCP 分配器参数。
routing ip autodhcp set/show interface 配置或显示指定接口的 DHCP 分配器设置。
routing ip autodhcp add/delete exclusion 在 DHCP 分配器地址范围中添加或删除一个排除范围。
routing ip dnsproxy set/show global 配置或显示全局 DNS 代理参数。
routing ip dnsproxy set/show interface 配置或显示指定接口的 DNS 代理参数。
routing ip igmp set/show global 配置或显示 IGMP 全局设置。
routing ip igmp add/delete/set/show interface 在指定接口上添加、删除、配置或显示 IGMP。
routing ip igmp add/delete staticgroup 添加或删除指定接口的静态多播组。
routing ip igmp show grouptable 显示 IGMP 主机组表。
routing ip igmp show ifstats 显示每个接口的 IGMP 统计。
routing ip igmp show iftable 显示每个接口的 IGMP 主机组。
routing ip igmp show proxygrouptable 显示 IGMP 代理接口的 IGMP 组表。
routing ip igmp show rasgrouptable 显示远程访问服务器所使用的 Internet 接口的组表。
routing ip ospf set/show global 配置或显示全局 OSPF 设置。
routing ip ospf add/delete/set/show interface 在指定接口上添加、删除、配置或显示 OSPF。
routing ip ospf add/delete/set/show area 添加、删除、配置或显示 OSPF 区域。
routing ip ospf add/delete/show range 在指定的 OSPF 区域上添加、删除、配置或显示范围。
routing ip ospf add/delete/set/show virtif 添加、删除、配置或显示 OSPF 虚拟接口。
routing ip ospf add/delete/show neighbor 添加、删除、配置或显示 OSPF 邻居。
routing ip ospf add/delete/show protofilter 添加、删除、配置或显示 OSPF 外部路由的路由信息源。
routing ip ospf add/delete/show routefilter 添加、删除、配置或显示 OSPF 外部路由的路由筛选。
routing ip ospf show areastats 显示 OSPF 区域统计。
routing ip ospf show lsdb 显示 OSPF 链接状态数据库。
routing ip ospf show virtifstats 显示 OSPF 虚拟链接统计。
routing ip relay set global 配置“DHCP 中继代理程序”的全局设置。
routing ip relay add/delete/set interface 在指定接口上添加、删除或配置“DHCP 中继代理程序”设置。
routing ip relay add/delete dhcpserver 在 DHCP 服务器地址列表中添加或删除 DHCP 服务器的 IP 地址。
routing ip relay show ifbinding 显示接口的 IP 地址绑定。
routing ip relay show ifconfig 显示每个接口的“DHCP 中继代理程序”配置。
routing ip relay show ifstats 显示每个接口的 DHCP 统计。
routing ip rip set/show global 配置 IP 的 RIP 全局设置。
routing ip rip add/delete/set/show interface 在指定接口上添加或配置 IP 的 RIP 设置。
routing ip rip add/delete peerfilter 添加或删除 RIP 对等筛选器。
routing ip rip add/delete acceptfilter 在接受的路由列表中添加或删除 RIP 路由筛选器。
routing ip rip add/delete announcefilter 在公布的路由列表中添加或删除 RIP 路由筛选器。
routing ip rip add/delete/show neighbor 添加或删除 RIP 邻居。
routing ip rip set/show flags 在指定接口上配置 IP RIP 高级设置。
routing ip rip show globalstats 显示全局 RIP 参数。
routing ip rip show ifbinding 显示接口的 IP 地址绑定。
routing ip rip show ifstats 显示每个接口的 RIP 统计。
IPX netsh 路由命令
routing ipx add/set staticroute 在 IPX 路由表中添加或配置静态 IPX 路由。
routing ipx add/set staticservice 在 SAP 服务表中添加或配置静态 SAP 服务。
routing ipx add/set filter 在指定的接口上添加或配置 IPX 数据包筛选器。
routing ipx add/set interface 在请求拨号接口上启用 IPX 路由,或在指定的接口上配置 IPX 设置。
routing ipx set global 配置全局 IPX 路由设置。
routing ipx rip add/set filter 添加和配置 RIP 路由筛选器。
routing ipx rip set global 配置全局 IPX 的 RIP 设置。
routing ipx rip set interface 在指定接口上配置 IPX 的 RIP 设置。
routing ipx sap add/set filter 添加或配置 SAP 服务筛选器。
routing ipx sap set global 配置全局 IPX 的 SAP 设置。
routing ipx sap set interface 在指定接口上配置 IPX 的 SAP 设置。
routing ipx netbios add nbname 将静态 NETBIOS 名称添加到 IPX NetBIOS 名称表中。
routing ipx netbios set interface 在指定接口上配置基于 IPX 的 NetBIOS 设置。
WINS NetSh 命令
list 列出所有可用的 WINS 命令。
dump 将 WINS 服务器配置转储到命令输出。
add name 在服务器上注册名称。详细信息,请输入 add name /?
add partner 向服务器添加复制伙伴。详细信息,请输入 add partner /?
add pngserver 添加当前服务器的 Persona Non Grata 服务器列表。详细信息,请输入 add pngserver /?
check database 检查数据库的一致性。详细信息,请输入 check database /?
check name 检查一组 WINS 服务器的名称记录列表。详细信息,请输入 check name /?
check version 检查版本号的一致性。详细信息,请输入 check version /?
delete name 从服务器数据库中删除已注册的名称。详细信息,请输入 delete name /?
delete partner 从复制伙伴列表中删除复制伙伴。详细信息,请输入 delete partner /?
delete records 从服务器删除或逻辑删除所有记录或一组记录。详细信息,请输入 delete records /?
delete owners 删除所有者列表及其记录。详细信息,请输入 delete owners /?
delete pngserver 从列表中删除所有的或选定的 Persona Non Grata 服务器。详细信息,请输入 delete pngserver /?
init backup 备份 WINS 数据库。详细信息,请输入 init backup /?
init import 从 Lmhosts 文件导入数据。详细信息,请输入 init import /?
init pull 启动“拉”触发器,并发送给另一台 WINS 服务器。详细信息,请输入 init pull /?
init pullrange 开始另一台 WINS 服务器的一组记录,并读取该记录。详细信息,请输入 init pullrange /?
init push 启动“推”触发器,并发送给另一台 WINS 服务器。详细信息,请输入 init push /?
init replicate 用复制伙伴复制数据库。详细信息,请输入 init replicate /?
init restore 从文件还原数据库。详细信息,请输入 init restore /?
init scavenge 清除服务器的 WINS 数据库。详细信息,请输入 init scavenge /?
init search 搜索服务器的 WINS 数据库。详细信息,请输入 init search /?
reset statistics 重置服务器的统计信息。详细信息,请输入 reset statistics /?
set autopartnerconfig 设置服务器的自动复制伙伴配置信息。详细信息,请输入 set autopartnerconfig /?
set backuppath 设置服务器的备份参数。详细信息,请输入 set backuppath /?
set burstparam 设置服务器的突发处理参数。详细信息,请输入 set autopartnerconfig /?
set logparam 设置数据库和事件日志记录选项。详细信息,请输入 set logparam /?
set migrateflag 设置服务器的迁移标志。详细信息,请输入 set migrateflag /?
set namerecord 设置服务器的间隔和超时值。详细信息,请输入 set namerecord /?
set periodicdbchecking 设置服务器的定期数据库检查参数。详细信息,请输入 set periodicdbchecking /?
set pullpartnerconfig 设置指定的“拉”伙伴的配置参数。详细信息,请输入 set pullpartnerconfig /?
set pushpartnerconfig 设置指定的“推”伙伴的配置参数。详细信息,请输入 set pushpartnerconfig /?
set pullparam 设置服务器的默认“拉”参数。详细信息,请输入 set pullparam /?
set pushparam 设置服务器的默认“推”参数。详细信息,请输入 set pushparam /?
set replicateflag 设置服务器的复制标志。详细信息,请输入 set replicateflag /?
set startversion 设置数据库的开始版本 ID。详细信息,请输入 set startversion /?
show browser 显示所有活动域主浏览器的 [1Bh] 记录。详细信息,请输入 show browser /?
show database 显示指定服务器的数据库和记录。详细信息,请输入 show database /?
show info 显示配置信息。详细信息,请输入 show info /?
show name 显示服务器中特定记录的详细信息。详细信息,请输入 show name /?
show partner 显示服务器的“拉”或“推”(或“推拉”)伙伴。详细信息,请输入 show partner /?
show partnerproperties 显示默认伙伴配置。详细信息,请输入 show partnerproperties /?
show pullpartnerconfig 显示“拉”伙伴的配置信息。详细信息,请输入 show pullpartnerconfig /?
show pushpartnerconfig 显示“推”伙伴的配置信息。详细信息,请输入 show pushpartnerconfig /?
show reccount 显示指定服务器所拥有的记录数量。详细信息,请输入 show reccount /?
show recbyversion 显示指定服务器所拥有的记录。详细信息,请输入 show recbyversion /?
show server 显示当前选定的服务器。详细信息,请输入 show server /?
show statistics 显示 WINS 服务器的统计信息。详细信息,请输入 show statistics /?
show version 显示 WINS 服务器的当前版本计数器值。详细信息,请输入 show version /?
show versionmap 显示所有者 ID 到“最大版本数”的映射。详细信息,请输入 show versionmap /?
Interface 命令
interface set/show interface 启用、禁用、连接、断开连接以及显示请求拨号接口的配置。
interface set/show credentials 在请求拨号接口上配置或显示用户名、密码和域名。
Win2000命令全集

accwiz.exe > Accessibility Wizard for walking you through setting up your machine for your mobility needs. 辅助工具向导

acsetups.exe > ACS setup DCOM server executable

actmovie.exe > Direct Show setup tool 直接显示安装工具

append.exe > Allows programs to open data in specified directories as if they were in the current directory. 允许程序打开制定目录中的数据

arp.exe > NETWORK Display and modify IP - Hardware addresses 显示和更改计算机的IP与硬件物理地址的对应列表

at.exe > AT is a scheduling utility also included with UNIX 计划运行任务

atmadm.exe > Displays statistics for ATM call manager. ATM调用管理器统计

attrib.exe > Display and modify attributes for files and folders 显示和更改文件和文件夹属性

autochk.exe > Used to check and repair Windows File Systems 检测修复文件系统

autoconv.exe > Automates the file system conversion during reboots 在启动过程中自动转化系统

autofmt.exe > Automates the file format process during reboots 在启动过程中格式化进程

autolfn.exe > Used for formatting long file names 使用长文件名格式

bootok.exe > Boot acceptance application for registry

bootvrfy.exe > Bootvrfy.exe, a program included in Windows 2000 that notifies the system that startup was successful. Bootvrfy.exe can be run on a local or remote computer. 通报启动成功
cacls.exe > Displays or modifies access control lists (ACLs) of files. 显示和编辑ACL

calc.exe > Windows Calculators 计算器

cdplayer.exe > Windows CD Player CD播放器

change.exe > Change { User | Port | Logon } 与终端服务器相关的查询

charmap.exe > Character Map 字符映射表

chglogon.exe > Same as using "Change Logon" 启动或停用会话记录

chgport.exe > Same as using "Change Port" 改变端口(终端服务)

chgusr.exe > Same as using "Change User" 改变用户(终端服务)

chkdsk.exe > Check the hard disk for errors similar to Scandisk 3 Stages must specify a Drive Letter 磁盘检测程序

chkntfs.exe > Same as using chkdsk but for NTFS NTFS磁盘检测程序

cidaemon.exe > Component of Ci Filer Service 组成Ci文档服务

cipher.exe > Displays or alters the encryption of directories [files] on NTFS partitions. 在NTFS上显示或改变加密的文件或目录

cisvc.exe > Content Index -- It`s the content indexing service for I 索引内容

ckcnv.exe > Cookie Convertor 变换Cookie

cleanmgr.exe > Disk Cleanup, popular with Windows 98 磁盘清理

cliconfg.exe > SQL Server Client Network Utility SQL客户网络工具

clipbrd.exe > Clipboard viewer for Local will allow you to connect to other clipboards 剪贴簿查看器

clipsrv.exe > Start the clipboard Server 运行Clipboard服务

clspack.exe > CLSPACK used to create a file listing of system packages 建立系统文件列表清单

cluster.exe > Display a cluster in a domain 显示域的集群

_cmd_.exe > Famous command prompt 没什么好说的!

cmdl32.exe > Connection Manager Auto-Download 自动下载连接管理

cmmgr32.exe > Connection Manager 连接管理器

cmmon32.exe > Connection Manager Monitor 连接管理器监视

cmstp.exe > Connection Manager Profile Manager 连接管理器配置文件安装程序

comclust.exe > about cluster server 集群

comp.exe > ComClust Add, Remove, or Join a cluster. 比较两个文件和文件集的内容*

compact.exe > Displays or alters the compression of files on NTFS partitions. 显示或改变NTFS分区上文件的压缩状态

conime.exe > Console IME IME控制台

control.exe > Starts the control panel 控制面板

convert.exe > Convert File System to NTFS 转换文件系统到NTFS

convlog.exe > Converts MS IIS log files 转换IIS日志文件格式到NCSA格式

cprofile.exe > Copy profiles 转换显示模式

cscript.exe > MS Windows Scripts Host Version 5.1 较本宿主版本

csrss.exe > Client Server Runtime Process 客户服务器Runtime进程

csvde.exe > Comma Separated Variable Import/Export Utility 日至格式转换程序

dbgtrace.exe > 和Terminal Server相关

dcomcnfg.exe > Display the current DCOM configuration. DCOM配置属性

dcphelp.exe > ?

dcpromo.exe > Promote a domain controller to ADSI AD安装向导

ddeshare.exe > Display DDE shares on local or remote computer DDE共享

ddmprxy.exe >

debug.exe > Runs Debug, a program testing and editing tool. 就是DEBUG啦!

dfrgfat.exe > Defrag FAT file system FAT分区磁盘碎片整理程序

dfrgntfs.exe > Defrag NTFS file system NTFS分区磁盘碎片整理程序

dfs_cmd_.exe > configures a Dfs tree 配置一个DFS树

dfsinit.exe > Distributed File System Initialization 分布式文件系统初始化

dfssvc.exe > Distributed File System Server 分布式文件系统服务器

diantz.exe > MS Cabinet Maker 制作CAB文件

diskperf.exe > Starts physical Disk Performance counters 磁盘性能计数器

dllhost.exe > dllhost is used on all versions of Windows 2000. dllhost is the hedost process for all COM+ applications. 所有COM+应用软件的主进程

dllhst3g.exe >

dmadmin.exe > Disk Manager Service 磁盘管理服务

dmremote.exe > Part of disk management 磁盘管理服务的一部分

dns.exe > DNS Applications DNS

doskey.exe > recalls Windows command lines and creates macros 命令行创建宏

dosx.exe > DOS Extender DOS扩展

dplaysvr.exe > Direct Play Helper 直接运行帮助

drwatson.exe > Dr Watson for 2000 Fault Detector 华生医生错误检测

drwtsn32.exe > Dr Watson for 2000 viewer and configuration manager 华生医生显示和配置管理

dtcsetup.exe > Installs MDTC

dvdplay.exe > Windows 2000 DVD player DVD播放

dxdiag.exe > Direct-X Diagnostics Direct-X诊断工具

edlin.exe > line-oriented text editor. 命令行的文本编辑器(历史悠久啊!)
edlin.exe > line-oriented text editor. 命令行的文本编辑器(历史悠久啊!)

esentutl.exe > MS Database Utility MS数据库工具

eudcedit.exe > Private character editor Ture Type造字程序

eventvwr.exe > Windows 2000 Event Viewer 事件查看器

evnt_cmd_.exe > Event to trap translator; Configuration tool

evntwin.exe > Event to trap translator setup

exe2bin.exe > Converts EXE to binary format 转换EXE文件到二进制

expand.exe > Expand Files that have been compressed 解压缩

extrac32.exe > CAB File extraction utility 解CAB工具

fastopen.exe > Fastopen tracks the location of files on a hard disk and stores the information in memory for fast access. 快速访问在内存中的硬盘文件

faxcover.exe > Fax Cover page editor 传真封面编辑

faxqueue.exe > Display Fax Queue 显示传真队列

faxsend.exe > Fax Wizard for sending faxes 发送传真向导

faxsvc.exe > Starts fax server 启动传真服务

fc.exe > Compares two files or sets of files and their differences 比较两个文件的不同

find.exe > Searches for a text string in file or files 查找文件中的文本行

findstr.exe > Searches for strings in files 查找文件中的行

finger.exe > Fingers a user and displays statistics on that user Finger一个用户并显示出统计结果

fixmapi.exe > Fix mapi files 修复MAPI文件

flattemp.exe > Enable or disable temporally directories 允许或者禁用临时文件目录

fontview.exe > Display fonts in a font file 显示字体文件中的字体

forcedos.exe > Forces a file to start in dos mode. 强制文件在DOS模式下运行

freecell.exe > Popular Windows Game 空当接龙

ftp.exe > File Transfer Protocol used to transfer files over a network connection 就是FTP了

gdi.exe > Graphic Device Interface 图形界面驱动

grovel.exe >

grpconv.exe > Program Manager Group Convertor 转换程序管理员组

help.exe > displays help for Windows 2000 commands 显示帮助

hostname.exe > Display hostname for machine. 显示机器的Hostname

ie4uinit.exe > IE5 User Install tool IE5用户安装工具

ieshwiz.exe > Customize folder wizard 自定义文件夹向导

iexpress.exe > Create and setup packages for install 穿件安装包

iisreset.exe > Restart IIS Admin Service 重启IIS服务

internat.exe > Keyboard Language Indicator Applet 键盘语言指示器

ipconfig.exe > Windows 2000 IP configuration. 察看IP配置

ipsecmon.exe > IP Security Monitor IP安全监视器

ipxroute.exe > IPX Routing and Source Routing Control Program IPX路由和源路由控制程序

irftp.exe > Setup FTP for wireless communication 无线连接

ismserv.exe > Intersite messaging Service 安装或者删除Service Control Manager中的服务

jdbgmgr.exe > Microsoft debugger for java 4 Java4的调试器

jetconv.exe > Convert a Jet Engine Database 转换Jet Engine数据库

jetpack.exe > Compact Jet Database. 压缩Jet数据库

jview.exe > Command-line loader for Java Java的命令行装载者

krnl386.exe > Core Component for Windows 2000 2000的核心组件

label.exe > Change label for drives 改变驱动器的卷标

lcwiz.exe > License Compliance Wizard for local or remote systems. 许可证符合向导

ldifde.exe > LDIF cmd line manager LDIF目录交换命令行管理

licmgr.exe > Terminal Server License Manager 终端服务许可协议管理

lights.exe > display connection status lights 显示连接状况

llsmgr.exe > Windows 2000 License Manager 2000许可协议管理

llssrv.exe > Start the license Server 启动许可协议服务器

lnkstub.exe >

locator.exe > RPC Locator 远程定位

lodctr.exe > Load perfmon counters 调用性能计数

logoff.exe > Log current user off. 注销用户

lpq.exe > Displays status of a remote LPD queue 显示远端的LPD打印队列的状态,显示被送到基于Unix的服务器的打印任务

lpr.exe > Send a print job to a network printer. 重定向打印任务到网络中的打印机。通常用于Unix客户打印机将打印任务发送给连接了打印设备的NT的打印机服务器。

lsass.exe > LSA Executable and Server DLL 运行LSA和Server的DLL

lserver.exe > Specifies the new DNS domain for the default server 指定默认Server新的DNS域

macfile.exe > Used for managing MACFILES 管理MACFILES

magnify.exe > Used to magnify the current screen 放大镜

makecab.exe > MS Cabinet Maker 制作CAB文件

mdm.exe > Machine Debug Manager 机器调试管理

mem.exe > Display current Memory stats 显示内存状态

migpwd.exe > Migrate passwords. 迁移密码

mmc.exe > Microsoft Management Console 控制台

mnmsrvc.exe > Netmeeting Remote Desktop Sharing NetMeeting远程桌面共享

mobsync.exe > Manage Synchronization. 同步目录管理器

mountvol.exe > Creates, deletes, or lists a volume mount point. 创建、删除或列出卷的装入点。

mplay32.exe > MS Media Player 媒体播放器

mpnotify.exe > Multiple Provider Notification application 多提供者通知应用程序

mq1sync.exe >

mqbkup.exe > MS Message Queue Backup and Restore Utility 信息队列备份和恢复工具

mqexchng.exe > MSMQ Exchange Connector Setup 信息队列交换连接设置

mqmig.exe > MSMQ Migration Utility 信息队列迁移工具

mqsvc.exe > ?

mrinfo.exe > Multicast routing using SNMP 使用SNMP多点传送路由

mscdexnt.exe > Installs MSCD (MS CD Extensions) 安装MSCD

msdtc.exe > Dynamic Transaction Controller Console 动态事务处理控制台

msg.exe > Send a message to a user local or remote. 发送消息到本地或远程客户

mshta.exe > HTML Application HOST HTML应用程序主机

msiexec.exe > Starts Windows Installer Program 开始Windows安装程序

mspaint.exe > Microsoft Paint 画板

msswchx.exe >

mstask.exe > Task Schedule Program 任务计划表程序

mstinit.exe > Task scheduler setup 任务计划表安装

narrator.exe > Program will allow you to have a narrator for reading. Microsoft讲述人

nbtstat.exe > Displays protocol stats and current TCP/IP connections using NBT 使用 NBT(TCP/IP 上的 NetBIOS)显示协议统计和当前 TCP/IP 连接。

nddeapir.exe > NDDE API Server side NDDE API服务器端

net.exe > Net Utility 详细用法看/?

net1.exe > Net Utility updated version from MS Net的升级版

netdde.exe > Network DDE will install itself into the background 安装自己到后台

netsh.exe > Creates a shell for network information 用于配置和监控 Windows 2000 命令行脚本接口。

netstat.exe > Displays current connections. 显示协议统计和当前的 TCP/IP 网络连接。

nlsfunc.exe > Loads country-specific information 加载特定国家(地区)的信息。Windows 2000 和 MS-DOS 子系统不使用该命令。接受该命令只是为了与 MS-DOS 文件兼容。

notepad.exe > Opens Windows 2000 Notepad 记事本

nslookup.exe > Displays information for DNS 该诊断工具显示来自域名系统 (DNS) 名称服务器的信息。

ntbackup.exe > Opens the NT Backup Utility 备份和故障修复工具

ntbooks.exe > Starts Windows Help Utility 帮助

ntdsutil.exe > Performs DB maintenance of the ADSI 完成ADSI的DB的维护

ntfrs.exe > NT File Replication Service NT文件复制服务

ntfrsupg.exe >

ntkrnlpa.exe > Kernel patch 核心补丁

ntoskrnl.exe > Core NT Kernel KT的核心

ntsd.exe >

ntvdm.exe > Simulates a 16-bit Windows environment 模拟16位Windows环境

nw16.exe > Netware Redirector NetWare转向器

nwscript.exe > runs netware scripts 运行Netware脚本

odbcad32.exe > ODBC 32-bit Administrator 32位ODBC管理

odbcconf.exe > Configure ODBC driver`s and data source`s from command line 命令行配置ODBC驱动和数据源

os2.exe > An OS/2 Warp Server (os2 /o) OS/2

os2srv.exe > An OS/2 Warp Server OS/2

os2ss.exe > An OS/2 Warp Server OS/2

osk.exe > On Screen Keyboard 屏幕键盘

packager.exe > Windows 2000 Packager Manager 对象包装程序

pathping.exe > Combination of Ping and Tracert 包含Ping和Tracert的程序

pax.exe > is a POSIX program and path names used as arguments must be specified in POSIX format. Use "//C/Users/Default" instead of "C:\USERS\DEFAULT." 启动便携式存档互换 (Pax) 实用程序

pentnt.exe > Used to check the Pentium for the floating point division error. 检查Pentium的浮点错误

perfmon.exe > Starts Windows Performance Monitor 性能监视器

ping.exe > Packet Internet Groper 验证与远程计算机的连接

posix.exe > Used for backward compatibility with Unix 用于兼容Unix

print.exe > Cmd line used to print files 打印文本文件或显示打印队列的内容。

progman.exe > Program manager 程序管理器

proquota.exe > Profile quota program

psxss.exe > POSIX Subsystem Application Posix子系统应用程序

qappsrv.exe > Displays the available application terminal servers on the network
在网络上显示终端服务器可用的程序

qprocess.exe > Display information about processes local or remote 在本地或远程显示进程的信息(需终端服务)

query.exe > Query TERMSERVER user process and sessions 查询进程和对话

quser.exe > Display information about a user logged on 显示用户登陆的信息(需终端服务)

qwinsta.exe > Display information about Terminal Sessions. 显示终端服务的信息

rasadmin.exe > Start the remote access admin service 启动远程访问服务

rasautou.exe > Creates a RAS connection 建立一个RAS连接

rasdial.exe > Dial a connection 拨号连接

rasphone.exe > Starts a RAS connection 运行RAS连接

rcp.exe > Copies a file from and to a RCP service. 在 Windows 2000 计算机和运行远程外壳端口监控程序 rshd 的系统之间复制文件

rdpclip.exe > RdpClip allows you to copy and paste files between a terminal session and client console session. 再终端和本地复制和粘贴文件

recover.exe > Recovers readable information from a bad or defective disk 从坏的或有缺陷的磁盘中恢复可读取的信息。

redir.exe > Starts the redirector service 运行重定向服务

regedt32.exe > 32-bit register service 32位注册服务

regini.exe > modify registry permissions from within a script 用脚本修改注册许可

register.exe > Register a program so it can have special execution characteristics. 注册包含特殊运行字符的程序

regsvc.exe >

regsvr32.exe > Registers and unregister`s dll`s. As to how and where it register`s them I dont know. 注册和反注册DLL

regtrace.exe > Options to tune debug options for applications failing to dump trace statements
Trace 设置
regwiz.exe > Registration Wizard 注册向导

remrras.exe >

replace.exe > Replace files 用源目录中的同名文件替换目标目录中的文件。

reset.exe > Reset an active section 重置活动部分

rexec.exe > Runs commands on remote hosts running the REXEC service. 在运行 REXEC 服务的远程计算机上运行命令。rexec 命令在执行指定命令前,验证远程计算机上的用户名,只有安装了 TCP/IP 协议后才可以使用该命令。

risetup.exe > Starts the Remote Installation Service Wizard. 运行远程安装向导服务

route.exe > display or edit the current routing tables. 控制网络路由表

routemon.exe > no longer supported 不再支持了!

router.exe > Router software that runs either on a dedicated DOS or on an OS/2 system. Route软件在 DOS或者是OS/2系统

rsh.exe > Runs commands on remote hosts running the RSH service 在运行 RSH 服务的远程计算机上运行命令

rsm.exe > Mounts and configures remote system media 配置远程系统媒体

rsnotify.exe > Remote storage notification recall 远程存储通知回显

rsvp.exe > Resource reservation protocol 源预约协议

runas.exe > RUN a program as another user 允许用户用其他权限运行指定的工具和程序

rundll32.exe > Launches a 32-bit dll program 启动32位DLL程序

runonce.exe > Causes a program to run during startup 运行程序再开始菜单中

rwinsta.exe > Reset the session subsystem hardware and software to known initial values 重置会话子系统硬件和软件到最初的值

savedump.exe > Does not write to e:\winnt\user.dmp 不写入User.dmp中

scardsvr.exe > Smart Card resource management server 子能卡资源管理服务器

schupgr.exe > It will read the schema update files (.ldf files) and upgrade the schema. (part of ADSI) 读取计划更新文件和更新计划

secedit.exe > Starts Security Editor help 自动安全性配置管理

services.exe > Controls all the services 控制所有服务

sethc.exe > Set High Contrast - changes colours and display mode Logoff to set it back to normal 设置高对比

setreg.exe > Shows the Software Publishing State Key values 显示软件发布的国家语言

setup.exe > GUI box prompts you to goto control panel to configure system components 安装程序(转到控制面板)

setver.exe > Set Version for Files 设置 MS-DOS 子系统向程序报告的 MS-DOS 版本号

sfc.exe > System File Checker test and check system files for integrity 系统文件检查

sfmprint.exe > Print Services for Macintosh 打印Macintosh服务

sfmpsexe.exe >

sfmsvc.exe >

shadow.exe > Monitor another Terminal Services session. 监控另外一台中端服务器会话

share.exe > Windows 2000 和 MS-DOS 子系统不使用该命令。接受该命令只是为了与 MS-DOS 文件兼容

shmgrate.exe >

shrpubw.exe > Create and Share folders 建立和共享文件夹

sigverif.exe > File Signature Verification 文件签名验证

skeys.exe > Serial Keys utility 序列号制作工具

smlogsvc.exe > Performance Logs and Alerts 性能日志和警报

smss.exe >

sndrec32.exe > starts the Windows Sound Recorder 录音机

sndvol32.exe > Display the current volume information 显示声音控制信息

snmp.exe > Simple Network Management Protocol used for Network Mangement 简单网络管理协议

snmptrap.exe > Utility used with SNMP SNMP工具

sol.exe > Windows Solitaire Game 纸牌

sort.exe > Compares files and Folders 读取输入、排序数据并将结果写到屏幕、文件和其他设备上

SPOOLSV.EXE > Part of the spooler service for printing 打印池服务的一部分

sprestrt.exe >

srvmgr.exe > Starts the Windows Server Manager 服务器管理器

stimon.exe > WDM StillImage- > Monitor

stisvc.exe > WDM StillImage- > Service

subst.exe > Associates a path with a drive letter 将路径与驱动器盘符关联

svchost.exe > Svchost.exe is a generic host process name for services that are run from dynamic-link libraries (DLLs). DLL得主进程

syncapp.exe > Creates Windows Briefcase. 创建Windows文件包

sysedit.exe > Opens Editor for 4 system files 系统配置编辑器

syskey.exe > Encrypt and secure system database NT账号数据库按群工具

sysocmgr.exe > Windows 2000 Setup 2000安装程序

systray.exe > Starts the systray in the lower right corner. 在低权限运行systray

taskman.exe > Task Manager 任务管理器

taskmgr.exe > Starts the Windows 2000 Task Manager 任务管理器

tcmsetup.exe > telephony client wizard 电话服务客户安装

tcpsvcs.exe > TCP Services TCP服务

.exe > Telnet Utility used to connect to Telnet Server

termsrv.exe > Terminal Server 终端服务

tftp.exe > Trivial FTP 将文件传输到正在运行 TFTP 服务的远程计算机或从正在运行 TFTP 服务的远程计算机传输文件

tftpd.exe > Trivial FTP Daemon

themes.exe > Change Windows Themes 桌面主题

tlntadmn.exe > Telnet Server Administrator Telnet服务管理

tlntsess.exe > Display the current Telnet Sessions 显示目前的Telnet会话

tlntsvr.exe > Start the Telnet Server 开始Telnet服务

tracert.exe > Trace a route to display paths 该诊断实用程序将包含不同生存时间 (TTL) 值的 Internet 控制消息协议 (ICMP) 回显数据包发送到目标,以决定到达目标采用的路由

tsadmin.exe > Terminal Server Administrator 终端服务管理器

tscon.exe > Attaches a user session to a terminal session. 粘贴用户会话到终端对话

tsdiscon.exe > Disconnect a user from a terminal session 断开终端服务的用户

tskill.exe > Kill a Terminal server process 杀掉终端服务

tsprof.exe > Used with Terminal Server to query results. 用终端服务得出查询结果

tsshutdn.exe > Shutdown the system 关闭系统

unlodctr.exe > Part of performance monitoring 性能监视器的一部分

upg351db.exe > Upgrade a jet database 升级Jet数据库

ups.exe > UPS service UPS服务

user.exe > Core Windows Service Windows核心服务

userinit.exe > Part of the winlogon process Winlogon进程的一部分

usrmgr.exe > Start the windows user manager for domains 域用户管理器

utilman.exe > This tool enables an administrator to designate which computers automatically open accessibility tools when Windows 2000 starts. 指定2000启动时自动打开那台机器

verifier.exe > Driver Verifier Manager Driver Verifier Manager

vwipxspx.exe > Loads IPX/SPX VDM 调用IPX/SPX VDM

w32tm.exe > Windows Time Server 时间服务器

wextract.exe > Used to extract windows files 解压缩Windows文件

winchat.exe > Opens Windows Chat 打开Windows聊天

winhlp32.exe > Starts the Windows Help System 运行帮助系统

winlogon.exe > Used as part of the logon process. Logon进程的一部分

winmine.exe > windows Game 挖地雷

winmsd.exe > Windows Diagnostic utility 系统信息

wins.exe > Wins Service Wins服务

winspool.exe > Print Routing 打印路由

winver.exe > Displays the current version of Windows 显示Windows版本

wizmgr.exe > Starts Windows Administration Wizards Windows管理向导

wjview.exe > Command line loader for Java 命令行调用Java

wowdeb.exe > . For starters, the 32-bit APIs require that the WOWDEB.EXE task runs in the target debugee`s VM 启动时,32位API需要

wowexec.exe > For running Windows over Windows Applications 在Windows应用程序上运行Windows

wpnpinst.exe > ?

write.exe > Starts MS Write Program 写字板

wscript.exe > Windows Scripting Utility 脚本工具

wupdmgr.exe > Starts the Windows update Wizard (Internet) 运行Windows升级向导

xcopy.exe > Used to copy directories 复制文件和目录,包括子目录
修改注册表加强Win 2000安全
资料编号:23760 来源:电脑报 发布:zwh 时间:2003.04.14 15:42 人气:841 关闭窗口

  1、设置生存时间

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128)

  说明:指定传出IP数据包中设置的默认生存时间(TTL)值。TTL决定了IP数据包在到达目标前在网络中生存的最大时间。它实际上限定了IP数据包在丢弃前允许通过的路由器数量.有时利用此数值来探测远程主机*作系统。

  2、防止ICMP重定向报文的攻击

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  EnableICMPRedirects REG_DWORD 0x0(默认值为0x1)

  说明:该参数控制Windows 2000是否会改变其路由表以响应网络设备(如路由器)发送给它的ICMP重定向消息,有时会被利用来干坏事.Win2000中默认值为1,表示响应ICMP重定向报文。

  3、禁止响应ICMP路由通告报文

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Inter

  faces\interface

  PerformRouterDiscovery REG_DWORD 0x0(默认值为0x2)

   说明:“ICMP路由公告”功能可造成他人计算机的网络连接异常,数据被窃听,计算机被用于流量攻击等严重后果.此问题曾导致校园网某些局域网大面积, 长时间的网络异常。因此建议关闭响应ICMP路由通告报文.Win2000中默认值为2,表示当DHCP发送路由器发现选项时启用。

  4、防止SYN洪水攻击

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  SynAttackProtect REG_DWORD 0x2(默认值为0x0)

   说明:SYN攻击保护包括减少SYN-ACK重新传输次数,以减少分配资源所保留的时间。路由缓存项资源分配延迟,直到建立连接为止.如果 synattackprotect=2,则AFD的连接指示一直延迟到三路握手完成为止.注意,仅在TcpMaxHalfOpen和 TcpMaxHalfOpenRetried设置超出范围时,保护机制才会采取措施。

 5、禁止C$、D$一类的缺省共享

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters

  AutoShareServer、REG_DWORD、0x0

  6、禁止ADMIN$缺省共享

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters

  AutoShareWks、REG_DWORD、0x0

  7、限制IPC$缺省共享

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

  restrictanonymous REG_DWORD 0x0 缺省

              0x1 匿名用户无法列举本机用户列表

              0x2 匿名用户无法连接本机IPC$共享

  说明:不建议使用2,否则可能会造成你的一些服务无法启动,如SQL Server

  8、不支持IGMP协议

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  IGMPLevel REG_DWORD 0x0(默认值为0x2)

  说明:记得Win9x下有个bug,就是用可以用IGMP使别人蓝屏,修改注册表可以修正这个bug.Win2000虽然没这个bug了,但IGMP并不是必要的,因此照样可以去掉。改成0后用route print将看不到那个讨厌的224.0.0.0项了。

  9、设置arp缓存老化时间设置

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters

  ArpCacheLife REG_DWORD 0-0xFFFFFFFF(秒数,默认值为120秒)

  ArpCacheMinReferencedLife REG_DWORD 0-0xFFFFFFFF(秒数,默认值为600)

   说明:如果ArpCacheLife大于或等于ArpCacheMinReferencedLife,则引用或未引用的ARP缓存项在 ArpCacheLife秒后到期。如果ArpCacheLife小于ArpCacheMinReferencedLife,未引用项在 ArpCacheLife秒后到期,而引用项在ArpCacheMinReferencedLife秒后到期。每次将出站数据包发送到项的IP地址时,就 会引用ARP缓存中的项。

 10、禁止死网关监测技术

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters

  EnableDeadGWDetect REG_DWORD 0x0(默认值为ox1)

  说明:如果你设置了多个网关,那么你的机器在处理多个连接有困难时,就会自动改用备份网关。有时候这并不是一项好主意,建议禁止死网关监测。

  11、不支持路由功能

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters

  IPEnableRouter REG_DWORD 0x0(默认值为0x0)

  说明:把值设置为0x1可以使Win2000具备路由功能,由此带来不必要的问题。

  12、做NAT时放大转换的对外端口最大值

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services:\Tcpip\Parameters

  MaxUserPort REG_DWORD 5000-65534(十进制)(默认值0x1388--十进制为5000)

  说明:当应用程序从系统请求可用的用户端口数时,该参数控制所使用的最大端口数。正常情况下,短期端口的分配数量为1024-5000。将该参数设置到有效范围以外时,就会使用最接近的有效数值(5000或65534)。使用NAT时建议把值放大点。

  13、修改MAC地址

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\

  找到右窗口的说明为"网卡"的目录,

  比如说是{4D36E972-E325-11CE-BFC1-08002BE10318}

展 开之,在其下的0000,0001,0002...的分支中找到"DriverDesc"的键值为你网卡的说明,比如说"DriverDesc"的值为 "Intel 82559 Fast Ethernet LAN on Motherboard"然后在右窗口新建一字符串值,名字为"Networkaddress",内容为你想要的MAC值,比如说是 "004040404040"然后重起计算机,ipconfig /all看看。
曾几何时,大家都有想过在命令行下改IP和网关。以前在NT4下实现起来过于麻烦,现在Windows 2000下的Netsh命令能实现该功能了。

Netsh 是本地或远程计算机的 Windows 2000 网络组件的命令行和脚本实用程序。为了存档或配置其他服务器,Netsh 实用程序也可以将配置脚本保存在文本文件中。

Netsh 实用程序是一个外壳,它通过附加的"Netsh 帮助 DLL",可以支持多个 Windows 2000 组件。"Netsh 帮助 DLL"提供用来监视或配置特定 Windows 2000 网络组件的其他命令,从而扩展了 Netsh 的功能。每个"Netsh 帮助 DLL"都为特定的网络组件提供了一个环境和一组命令。每个环境中都可以有子环境。例如,在路由环境中存在子环境 Ip 和 Ipx,它们将 IP 路由和 IPX 路由命令集中在一起。

Netsh 命令行选项包括下列各项:

用法: netsh [-a AliasFile] [-c Context] [-r RemoteMachine]
[Command | -f ScriptFile]

下列指令有效:

此上下文中的命令:
? - 显示命令列表。
aaaa - 更改到 `aaaa` 上下文。
add - 将一个配置项添加到项目列表中。
delete - 在项目列表上删除一个配置项目。
dhcp - 更改到 `dhcp` 上下文。
dump 0 - 显示一个配置脚本。
exec - 运行一个脚本文件。
help - 显示命令列表。
interface - 更改到 `interface` 上下文。
ras - 更改到 `ras` 上下文。
routing - 更改到 `routing` 上下文。
set - 更新配置设置。
show - 显示信息
wins - 更改到 `wins` 上下文。

下列的子上下文可用:
routing interface ras dhcp wins aaaa

若需要命令的更多帮助信息,请键入命令,
后面跟 ?。
-a AliasFile
指定使用了一个别名文件。别名文件包含 netsh 命令列表和一个别名版本,所以可以使用别名命令行替换 netsh 命令。可以使用别名文件将其他平台中更熟悉的命令映射到适当的 netsh 命令。

-c Context
指定对应于已安装的支持 DLL 的命令环境。

命令
指定要执行的 netsh 命令。

-f ScriptFile
指定运行 ScriptFile 文件中所有的 netsh 命令。

-r RemoteMachine
指定在远程计算机上运行 netsh 命令,由名称或 IP 地址来指定远程计算机。

您 可以将命令缩写为意义明确的最短的字符串。例如,发布 sh ip int 命令相当于发布 show ip interface。Netsh 命令可以是全局的或特定环境的。全局命令可以在任何环境中发布,并用于一般的 Netsh 实用程序功能。特定环境的命令随环境而变化。您可以将发布的命令记录在日志文件中,以创建 netsh 命令会话的审核踪迹。

列出了 netsh 全局命令。

命令 说明
.. 上移一个环境等级。
? 或 help 显示命令行"帮助"。
show version 显示 Windows 和 Netsh 实用程序的当前版本。
show netdlls 显示已安装的"Netsh 帮助 DLL"的当前版本。
add helper 添加"Netsh 帮助 DLL"。
delete helper 删除"Netsh 帮助 DLL"。
show helper 显示已安装的"Netsh 帮助 DLL"。
cmd 创建 Windows 2000 命令窗口。
online 将当前模式设置为联机。
offline 将当前模式设置为脱机。
set mode 将当前模式设置为联机或脱机。
show mode 显示当前模式。
flush 丢弃以脱机模式进行的任何更改。
commit 提交以脱机模式进行的更改。
set audit-logging 打开或关闭记录工具。
show audit-logging 显示当前的审核记录设置。
set loglevel 设置记录信息的级别
show loglevel 显示记录信息的级别。
set machine 配置执行 netsh 命令的计算机。
show machine 显示执行 netsh 命令的计算机。
exec 执行包括 netsh 命令的脚本文件。
quit 或 bye 或 exit 退出 Netsh 实用程序。
add alias 向现有命令添加别名。
delete alias 删除现有命令的别名。
show alias 显示所有已定义的别名。
dump 将配置写入文本文件。
popd 从堆栈中弹出环境的脚本命令。
pushd 将当前的环境推入堆栈的脚本命令。

Netsh 实用程序有如下命令模式:

联机
联机模式下,在 Netsh 命令提示符下发布的命令被立即执行。

脱机
脱机模式下,将在 Netsh 命令提示符下积累发布的命令,并通过发布 commit 全局命令来按照批处理方式执行。可以通过发布 flush 全局命令来丢弃积累的命令。

脚本
使用 -f 命令行选项,或在 Netsh 命令提示符下发布 exec 全局命令,可以执行指定文件中所有的 netsh 命令。

要 创建当前配置的脚本,请使用 dump 全局命令。dump 命令根据 netsh 命令输出当前运行的配置。可以使用该命令创建的脚本来配置新的服务器或重新配置现有的服务器。如果要对组件的配置作很大的更改,推荐您使用 dump 命令开始配置会话,以防在进行更改前需要还原配置。

Interface 命令
下表列出了可在 Windows 2000 命令提示符下键入的 netsh 命令,这些命令用于管理运行 Windows 2000 Server 及"路由和远程访问"服务的计算机上的接口设置。如果对某个特殊功能有多个命令,则在每个命令之间用斜线 (/) 分隔。

当在命令提示符下键入命令时,请在每个命令前加上 netsh。要获得每个命令的精确语法,可在命令之后键入 ?。选项例如,要获得 netsh interface 命令的命令行"帮助",请在命令提示符下键入 netsh interface?。

命令 说明
interface set/show interface 启用、禁用、连接、断开连接以及显示请求拨号接口的配置。
interface set/show credentials 在请求拨号接口上配置或显示用户名、密码和域名。

……… (省略二、三千字)


言归正传,现在来看看WIN2000下的网络设置的配置。

D:\>netsh
netsh>interface
interface>dump
#========================
# 接口配置
#========================
pushd interface

reset all


popd
# 接口配置结束

# ----------------------------------
# 接口 IP 配置
# ----------------------------------
pushd interface ip


# "本地连接 2" 的接口 IP 配置

set address name = "本地连接 2" source = dhcp
set dns name = "本地连接 2" source = dhcp
set wins name = "本地连接 2" source = dhcp

# "本地连接" 的接口 IP 配置

set address name = "本地连接" source = static addr = 192.168.1.10 mask = 255.255.255.0
set address name = "本地连接" gateway = 192.168.0.1 gwmetric = 1
set dns name = "本地连接" source = static addr = 192.168.0.1
set wins name = "本地连接" source = static addr = none


popd
# 接口 IP 配置结束


如果,你想快速修改一个本地IP地址。
你可以先用文本写入以下的内容:

interface ip
set address 本地连接 static 192.168.5.10 255.255.255.0 192.168.0.1 1
^^^ ^^^ ^^^ ^^^ ^^

接口名称 IP地址 子网掩码 网关 接口跃点数

如上保存为 local.sh

D:\>netsh exec local.sh

即可。是不是十分简单呢。Netsh命令还有不少强劲功能,还没有发挥出来。有信心的你,自己来试试吧!

开始→运行→输入的命令集锦 转--

gpedit.msc-----组策略

sndrec32-------录音机

  Nslookup-------IP地址侦测器

  explorer-------打开资源管理器

  logoff---------注销命令

  tsshutdn-------60秒倒计时关机命令

  lusrmgr.msc----本机用户和组

  services.msc---本地服务设置

  oobe/msoobe /a----检查XP是否激活

  notepad--------打开记事本

  cleanmgr-------垃圾整理

  net start messenger----开始信使服务

  compmgmt.msc---计算机管理

  net stop messenger-----停止信使服务

  conf-----------启动 netmeeting

  dvdplay--------DVD播放器

  charmap--------启动字符映射表

  diskmgmt.msc---磁盘管理实用程序

  calc-----------启动计算器

  dfrg.msc-------磁盘碎片整理程序

  chkdsk.exe-----Chkdsk磁盘检查

  devmgmt.msc--- 设备管理器

  regsvr32 /u *.dll----停止dll文件运行

  drwtsn32------ 系统医生

  rononce -p ----15秒关机

  dxdiag---------检查DirectX信息

  regedt32-------注册表编辑器

  Msconfig.exe---系统配置实用程序

  rsop.msc-------组策略结果集

  mem.exe--------显示内存使用情况

  regedit.exe----注册表

  winchat--------XP自带局域网聊天

  progman--------程序管理器

  winmsd---------系统信息

  perfmon.msc----计算机性能监测程序

  winver---------检查Windows版本

  sfc /scannow-----扫描错误并复原

  taskmgr-----任务管理器(2000/xp/2003)

October 23

Linux关机命令详解

在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都
可以达到重启系统的目的,但每个命令的内部工作过程是不同的,通过本文的介绍,希
望你可以更加灵活的运用各种关机命令。
   1.shutdown
   shutdown命令安全地将系统关机。 有些用户会使用直接断掉电源的方式来关闭linux,
这是十分危险的。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能
会导致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备。
    而在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用户系统将要关闭。
并且login指令会被冻结﹐即新的用户不能再登录。直接关机或者延迟一定的时间才关机
都是可能的﹐还可能重启。这是由所有进程〔process〕都会收到系统所送达的信号〔signal〕
决定的。这让像vi之类的程序有时间储存目前正在编辑的文档﹐而像处理邮件〔mail〕和
新闻〔news〕的程序则可以正常地离开等等。
    shutdown执行它的工作是送信号〔signal〕给init程序﹐要求它改变runlevel。
Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来重新激活〔reboot〕系统﹐
而runlevel 1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也
没有-r参数给shutdown。要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些
动作﹐你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。
   shutdown 参数说明:
   [-t] 在改变到其它runlevel之前﹐告诉init多久以后关机。
   [-r] 重启计算器。
   [-k] 并不真正关机﹐只是送警告信号给每位登录者〔login〕。
   [-h] 关机后关闭电源〔halt〕。
   [-n] 不用init﹐而是自己来关机。不鼓励使用这个选项﹐而且该选项所产生的后果往
往不总是你所预期得到的。
   [-c] cancel current process取消目前正在执行的关机程序。所以这个选项当然没有
时间参数﹐但是可以输入一个用来解释的讯息﹐而这信息将会送到每位使用者。
   [-f] 在重启计算器〔reboot〕时忽略fsck。 
     [-F] 在重启计算器〔reboot〕时强迫fsck。
   [-time] 设定关机〔shutdown〕前的时间。
     
2.halt----最简单的关机命令
   其实halt就是调用shutdown -h。halt执行时﹐杀死应用进程﹐执行sync系统调用﹐
文件系统写操作完成后就会停止内核。
   参数说明:
   [-n] 防止sync系统调用﹐它用在用fsck修补根分区之后﹐以阻止内核用老版本的超
级块〔superblock〕覆盖修补过的超级块。
   [-w] 并不是真正的重启或关机﹐只是写wtmp〔/var/log/wtmp〕纪录。
   [-d] 不写wtmp纪录〔已包含在选项[-n]中〕。
   [-f] 没有调用shutdown而强制关机或重启。
   [-i] 关机〔或重启〕前﹐关掉所有的网络接口。
   [-p] 该选项为缺省选项。就是关机时调用poweroff。
   
3.reboot
    reboot的工作过程差不多跟halt一样﹐不过它是引发主机重启﹐而halt是关机。它
    的参数与halt相差不多。
4.init
   init是所有进程的祖先﹐它的进程号始终为1﹐所以发送TERM信号给init会终止所有的
   用户进程﹑守护进程等。shutdown 就是使用这种机制。init定义了8个运行级别(runlevel),
   init 0为关机﹐init 1为重启。关于init可以长篇大论﹐这里就不再叙述。另外还有
   telinit命令可以改变init的运行级别﹐比如﹐telinit -iS可使系统进入单用户模式﹐
   并且得不到使用shutdown时的信息和等待时间。 
October 17

午休

听歌,看新闻
October 12

CVSTRAC SUBVERSION TRAC

0327 subversion trac

以前用CVS的时候用的CVSTRAC,现在用SUBVERSION,感觉TRAC很不错的样子。

Trac is an enhanced wiki and issue tracking system for software development projects.

Trac uses a minimalistic approach to web-based software project management. Our mission; to help developers write great software while staying out of the way. Trac should impose as little as possible on a team’s established development process and policies.

All aspects of Trac have been designed with one single goal, to simplify tracking and communication of software issues, enhancements and monitoring overall progress.

What is Trac?
An integrated system for managing software projects
An enhanced wiki
A flexible web-based issue tracker
An interface to the Subversion revision control system
At the core of Trac lies an integrated wiki and issue/bug database. Using wiki markup, all objects managed by Trac can directly link to other issues/bug reports, code changesets, documentation and files.

Around the core lies other modules, providing additional features and tools to make software development more streamlined and effective. Our goal is to help programmers focus on the important stuff: Developing software.

What does Trac do?
Trac lets software project developers and users track, use and manage:

software issues
bug reports
feature requests
overall progress over time
project tasks
source code changes
documentation / wiki text
Having a network of links between issues/bugs/tasks, code changes and wiki text makes the big-picture perspective of a project truly accessible at any time, and it becomes easy to quickly get up-to-speed on the .


看看资料:
http://www.arm8.com/cv/3/4/122.html
Windows Installation instructions for SVN w/TRAC

http://www.arm8.com/cv/3/4/123.html
配置Trac

http://www.arm8.com/cv/3/4/124.html
Trac on Windows Installation & Upgrade Guide

http://www.arm8.com/cv/3/4/125.html
Trac Installation Guide

http://www.arm8.com/cv/3/4/126.html
TracInstall: trac.install.txt

结果那个该死的 PYSQLITE找不到,想想算了。

 

Calendar

Loading...
2006年总结 快过年喽..
No list items have been added yet.
精辟的英语
No list items have been added yet.
Photo 1 of 2
There are no music lists on this space.