liang 的个人资料理想如星辰照片日志列表更多 工具 帮助

zhao liang

职业
地点
第 1 张,共 10 张

Windows Media Player

理想如星辰

平生修得随缘性,粗茶淡饭也知足

微软面试100题

1、为什么下水道的井盖是圆的?

2、美国有多少辆车?(一个常见的类似问题是:美国有多少加油站?)

3、美国有多少个下水道井盖?

4、你让某些人为你工作了七天,你要用一根金条作为报酬。这根金条要被分成七块。你必须在每天的活干完后交给他们一块。如果你只能将这根金条切割两次,你怎样给这些工人分?

5、一列火车以每小时15英里的速度离开洛杉矶,朝纽约进发。另外一列火车以每小时20英里的速度离开纽约,朝洛杉矶进发。如果一只每小时飞行25英里的鸟同时离开洛杉矶,在两列火车之间往返飞行,请问当两列火车相遇时,鸟飞了多远?

6、假设一张圆盘像唱机上的唱盘那样转动。这张盘一半是黑色,一半是白色。假设你有数量不限的一些颜色传感器。要想确定圆盘转动的方向,你需要在它周围摆多少个颜色传感器?它们应该被摆放在什么位置?

7、假设时钟到了12点。注意时针和分针重叠在一起。在一天之中,时针和分针共重叠多少次?你知道它们重叠时的具体时间吗?

8、你有两个罐子,分别装着50个红色的玻璃球和50个蓝色的玻璃球。随意拿起一个罐子,然后从里面拿出一个玻璃球。怎样最大程度地增加让自己拿到红球的机会?利用这种方法,拿到红球的几率有多大?

9、中间只隔一个数字的两个奇数被称为奇数对,比如17和19。证明奇数对之间的数字总能被6整除(假设这两个奇数都大于6)。现在证明没有由三个奇数组成的奇数对。

10、一个屋子有一个门(门是关闭的)和3盏电灯。屋外有3个开关,分别与这3盏灯相连。你可以随意操纵这些开关,可一旦你将门打开,就不能变换开关了。确定每个开关具体管哪盏灯。

11、假设你有8个球,其中一个略微重一些,但是找出这个球的惟一方法是将两个球放在天平上对比。最少要称多少次才能找出这个较重的球?

12、假设你站在镜子前,抬起左手,抬起右手,看看镜中的自己。当你抬起左手时,镜中的自己抬起的似乎是右手。可是当你仰头时,镜中的自己也在仰头,而不是低头。为什么镜子中的影像似乎颠倒了左右,却没有颠倒上下?

13、你有4瓶药。每粒药丸的重量是固定的,不过其中有一瓶药受到了污染,药丸的重量发生了变化,每个药丸增加了一点重量。你怎样一下子测出哪瓶药是遭到污染的呢?

14、下面玩一个拆字游戏,所有字母的顺序都被打乱。你要判断这个字是什么。假设这个被拆开的字由5个字母组成:共有多少种可能的组合方式;如果我们知道是哪5个字母,那会怎么样;找出一种解决这个问题的方法。

15 、有4个女人要过一座桥。她们都站在桥的某一边,要让她们在17分钟内全部通过这座桥。这时是晚上。她们只有一个手电筒。最多只能让两个人同时过桥。不管是谁过桥,不管是一个人还是两个人,必须要带着手电筒。手电筒必须要传来传去,不能扔过去。每个女人过桥的速度不同,两个人的速度必须以较慢的那个人的速度过桥。

第一个女人:过桥需要1分钟; 第二个女人:过桥需要2分钟;第三个女人:过桥需要5分钟;第四个女人:过桥需要10分钟。

比如,如果第一个女人与第4个女人首先过桥,等她们过去时,已经过去了10分钟。如果让第4个女人将手电筒送回去,那么等她到达桥的另一端时,总共用去了20分钟,行动也就失败了。怎样让这4个女人在17分钟内过桥?还有别的什么方法?

16、如果你有一个5夸脱的水桶和一个3夸脱的水桶,如何准确量出4夸脱的水?

17、你有一袋糖,有红色的,蓝色的,绿色的。闭上眼睛,拿出两块颜色一样的糖,你需要拿多少次才能确保有两块颜色相同的?

18、如果你有两个桶,一个装的是红色的颜料,另一个装的是蓝色的颜料。你从蓝色颜料桶里舀一杯,倒入红色颜料桶,再从红色颜料桶里舀一杯倒入蓝颜料桶。两个桶中红蓝颜料的比例哪个更高?通过算术的方式来证明这一点。

19、链接表和数组之间的区别是什么?

20、做一个链接表,你为什么要选择这样的方法?

21、选择一种算法来整理出一个链接表。你为什么要选择这种方法?现在用o(n)时间来做。

22、说说各种股票分类算法的优点和缺点。

23、用一种算法来颠倒一个链接表的顺序。现在在不用递归式的情况下做一遍。

24、用一种算法在一个循环的链接表里插入一个节点,但不得穿越链接表。

25、用一种算法整理一个数组。你为什么选择这种方法?

26、用一种算法使通用字符串相匹配。

27、颠倒一个字符串。优化速度。优化空间。

28、颠倒一个句子中的词的顺序,比如将“我叫克丽丝”转换为“克丽丝叫我”,实现速度最快,移动最少。

29、找到一个子字符串。优化速度。优化空间。

30、比较两个字符串,用o(n)时间和恒量空间。

31、假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一次处理,用一种算法找出重复的那个数字。如果你在运算中使用了辅助的存储方式,那么你能找到不用这种方式的算法吗?

32、不用乘法或加法增加8倍。现在用同样的方法增加7倍。

33、如何将计算机技术应用于一幢100层高的办公大楼的电梯系统上?你怎样优化这种应用?工作日时的交通、楼层或时间等因素会对此产生怎样的影响?

34、你如何对一种可以随时存在文件中或从因特网上拷贝下来的操作系统实施保护措施,
防止被非法复制?

35、你如何重新设计自动取款机?

36、假设我们想通过电脑来操作一台微波炉,你会开发什么样的软件来完成这个任务?

37、你如何为一辆汽车设计一台咖啡机?

38、如果你想给微软的word系统增加点内容,你会增加什么样的内容?

39、你会给只有一只手的用户设计什么样的键盘?

40、你会给失聪的人设计什么样的闹钟?

41、如果你有一个许多部件可以拆卸的时钟,你将它一块块拆开,但是没有记住是怎样拆的。然后你将各个零件重新组装起来,最后发现有三个重要零件没有放进去。这时你如何重新组装这个时钟?

42、如果你需要学习一门新的计算机语言,你会怎样做?

43、假设由你负责设计比尔·盖茨的卫生间。当然,钱不成问题,但是你不可以和比尔谈。你会怎样做?

44、到目前为止,你遇到的最难回答的问题是什么?

45、如果微软公司说,我们愿意投资500万美元用来开发你提出的方案。那么你会做什么?为什么?

46、如果你将世界上所有的计算机制造商召集起来,告诉他们必须要做一件事,你会让他们做什么事?

47、如果你在五年内会得到一笔奖金,你认为会是因为什么?关注你的成绩的人会是谁?

48、你如何教自己的奶奶使用微软excel表格系统?

49、为什么当我们在任何一家宾馆打开热水龙头时,热水会马上流出来?

50、你为什么想在微软工作?

51、假设你回到家,进入自己的房间,打开电灯开关,可是一点反应都没有——灯没有亮。这时,你在判断问题出在哪里时,会依次采取怎样的做法?

52、下列哪项叙述是错误的?

(a)主观主义者可能也是相对论者。

(b)相对论者也可能是客观主义者。

(c)绝对论者也可能是主观主义者。

(d)客观主义者也可能是绝对论者。

53、如果就像萨特的存在主义所说的,“人要为自己的热情负责”,那么无论我们做什么,我们都:

(a)违背了自己的意愿。

(b)没有经过思考。

(c)是自由的。

(d)是出于对上帝的蔑视。

54、萨特宣称,对人类来说,“存在先于本质”,换言之:

(a)当人们理智的时候,他们才符合人类的本质。

(b)根据上帝的指示,人们在本质上是注定要存在的。

(c)人类可以自由选择,甚至选择不以任何方式做任何事。

(d)人类是自由的,可以通过自己的行为而成为自己所愿意成为的任何角色。

55、萨特说,“根本没有人类本性这种东西”,他的意思是:

(a)作为具有自我意识的生命,我们可以决定而且确实决定了自己成为一种什么样的生命。

(b)人类没有办法选择是痛苦还是绝望。

(c)人类不具有可以从在生物角度把他们归为一个物种的遗传特征。

(d)存在主义认为上帝的存在只是道德判断的先决基础。

56、康德说,一个行为符合义务并不能令它成为道德行为,当执行者只为了尽义务或因为这是他的义务而做,他的行为才是道德行为。康德这样说是为了表明:

(a)一个人行为的后果可能是好的也可能是坏的,一切取决于这个行为产生了多少快乐。

(b)出于自由意愿而做的行为永远是道德行为。

(c)一个行为的道德价值是由执行者的动机决定的,不是由这个行为的结果决定的。

(d)出于自身利益的行为不同于根据准则而做的行为。

57、康德认为,决定一个行为是否道德的关键是这个行为所依据的准则,而不是这个单独的行为本身。因为:

(a)根据定义,一个个体行为是不可以被普遍化的。

(b)我们的行为总是依据这样或那样的准则。

(c)没有准则,我们将无从知道应该怎样做。

(d)我们的准则是行为的客观法则,是我们行事的基础。

58、根据康德的观点,一项具有无法被成功普遍化的动机或目的的行为:

(a)根据结果的不同,可以是道德的或不道德的。

(b)根据该行为是否被该人所在社会所接受,可以是道德的或不道德的。

(c)是不道德的。

(d)根据该行为是否出于自由意愿,可以是道德的或不道德的。

59、康德说,“我可以判断其他所有有理性的人是否和我一样有义务去做某件事”,判断依据是:

(a)某些行为是否被不同文化普遍接受。

(b)其他人做和我一样的行为是否得到好的结果。

(c)这个行为在所有人看来都是好的。

(d)我的行为的动机可以被普遍化,没有被某些人抵触或不被接受。

60、行为实用主义者说,我们应该一直做那些能带来最大幸福的事,即使这意味着违反道德原则。原则实用主义者不同意这种意见,说我们应该遵守道德原则,即使我们认为违背这些原则会产生更好的结果,因为:

(a)服从道德原则为社会整体带来的幸福通常多于为少数例外者带来的不幸福。

(b)我们不应该成为任何道德原则的奴隶,道德只是个人选择问题。

(c)通常来说,为大多数人谋求最大幸福的行为并不总是符合道德的。

(d)即使我们服从道德原则,也总难免造成某些人的不幸福。

61、行为实用主义者指出,有时候违反某一道德准则能比遵守准则带来更大的幸福。他们认为,在这种情况下,违反道德准则是允许的:

(a)只要保证下不为例。

(b)只要这个行为所影响的人没有感到不快。

(c)只要实施行为者的动机或意图是为了尽自己的义务而不计后果。

(d)实用主义原则本身甚至要求人们这样做。

62、元帅领兵

元帅统领八员将,每将各分八个营,每营里面摆八阵,每阵配置八先锋,每个先锋八旗头,每个旗头有八队,每队分设八个组,每组带领八个兵。请你掐指算一算,元师共有多少兵?


63、运算符号的妙用

在1、2、3、4、5、6、7、8、9这一串数字中间,加入运算符号“+”或“-”,使其代数和等于99,按(1 …… 9)可以有17种解,倒过来的后者(9 …… 1)可以有11种解。有兴趣的读者,不妨一试。

64、两龟赛跑

有两只乌龟一起赛跑。甲龟到达10米终点线时,乙龟才跑到9米。现在如果让甲龟的起跑线退后1米,这时两龟再同时起跑比赛,问甲、乙两龟是否同时到达终点?

65、电视机的价格

麦克因工作繁忙,决定临时请尼克来协助他工作。规定以一年为期限,一年的报酬为600美元与一台电视机。

可是尼克做了7个月后,因急事必须离开麦克,并要求麦克付给他应得的钱和电视机。由于电视机不能拆散付给他,结果尼克得到了150美元和一台电视机。现在请你想一想:这台电视机值多少钱?

66、这块石头究竟有多重

有4个小孩看见一块石头正沿着山坡滚下来,便议论开了。

“我看这块石头有17公斤重,”第一个孩子说。

“我说它有26公斤,”第二个孩子不同意地说。

“我看它重21公斤”,第三个孩子说。

“你们都说得不对,我看它的正确重量是20公斤,”第四个孩子争着说。

他们四人争得面红耳赤,谁也不服谁。最后他们把石头拿去称了一下,结果谁也没猜准。其中一个人所猜的重量与石头的正确重量相差2公斤,另外两个人所猜的重量与石头的正确重量之差相同。当然,这里所指的差,不考虑正负号,取绝对值。请问这块石头究竟有多重?

67、三只砝码称东西

现在有三种不同重量的标准砝码1克、3克、9克。请问可以称出多少不同物品的重量?在进行称量时,要称的东西与已知的标准砝码可以任意地放在天平的两盘之一。另外,每种砝码都只有一只,而且不准复制。

68、称米

现有米9公斤以及50克和200克的砝码各一个。问怎样在天平上只称量三次而称出2公斤米?

69、比萨饼交易

在我最喜欢的那家比萨饼店中,10寸的比萨卖4.99美元。店主说,他们有一笔12寸比萨饼的交易,定价为每份5.39美元。请问:该店在这笔比萨饼交易中给予了买方多少折扣?

70、伊沙贝拉时装精品屋

纽约伊沙贝拉时装精品屋,新近从意大利购进了一件女式冬装。这衣服的购入价格再加二成,是该店标出的销售价。

出于半个月内未卖出去,女老板又将这个定价减去了一成,很快被一位漂亮小姐买走了
。女老板获利400元。

请问,这件高档女式冬装购入价是多少?

71、称量罐头

为罐头工厂工作的送货员a,给一家食品公司送了10箱菠萝罐头。每个罐头重量是800克,每箱装20个。

正当他送完了货,要回工厂的时候,接到了从工厂打来的电话,说这10箱中有一箱由于机器出了问题而混进了次品,每个罐头缺50克的分量,要送货员把这箱罐头送回工厂以便更换。但是,怎样从中找出到底哪一箱是次品呢?最需要的当然是秤,可是手边又没有。

正在这时,他忽然发现不远的路旁有一台自动称量体重的机器,也就是投进去1元硬币就可以称量一次重量。他的口袋里刚好就有一个1元硬币。当然也就只能量一次。那么他应该怎么充分利用这只有一次的机会,来找到那一箱不符合规格的产品呢?

72、按劳取酬

有一个农场主,雇用了两个临时工帮忙种小麦。其中一个叫做汤姆,是一个耕地能手,但是他不会播种;而另一个叫做尼克,他并不擅长于耕地,但是,他却是播种的好手。这个农场主决定要种十公顷小麦,让他们各自包一半,于是,汤姆从东头开始耕地,而尼克从西头开始耕地。耕一亩地汤姆只要用二十分钟,而尼克却需要四十分钟,但是尼克播种的速度比汤姆要快三倍。

他们播种完工后,农场主按照他们的工作量给予他俩一共一百元的工钱。请问:他们应该怎么样分这份工钱才最合理?

73、四兄弟的年龄

一家有4个兄弟,他们4个的年龄乘起来的积为14。那么,他们各自的年龄是多大?当然年龄应该是整数。

74、爱的程度

在一所乡村学校中,一个刚刚毕业的男数学老师s很幸运地同时得到了两个女教师a、b的青睐。s满脑袋数字,在无法从两者之中选择的情况下,他只好对这两位女教师说,“希望你们用数字或者数学公式,来表示你们对我的爱的程度。”

a说,“与b比起来,我是一百倍地爱你。”

b说,“a对你的感情当然没有我对你的感情深。与a相比,我是一千倍地爱你。”

听了她们深情的话语,不知为什么数学老师s反而神情沮丧地说,“这不就等于说,你们两个都是完全不爱我吗?”

这究竟是怎么回事?

75、爬楼梯

一位先生要到10层楼的第8层去办事,不巧正赶上停电,电梯无法使用,他只能够步行上楼。如果他从第1层爬到第4层需要用48秒,那么请问,以同样的速度走到第8层需要多少秒?

76、空姐分配物品

在一架飞机上,中间是一条过道,两边是座位,每一排为三人。两位空姐a和b每人负责一边,对每位旅客分配旅行物品。

开始的时候,a给右边的旅客发放了6份,此时,b过来对她说,左边应该由a负责。于是a重新到左边开始发放,b接着给右边剩下的旅客发放物品,之后,又帮a发了15份,最后两人同时结束工作。

请问:a和b谁发的多?多发了多少份?

生产中需要一段铁链,库房中只有五截每截只有三个铁环的铁链,这五截铁链连起来的长度正好是所需要的。

问:在只切断三个铁环的情况下,怎样将这五截三铁环连起来?

77、巧分飞机票

旅行社刚刚为三位旅客预定了飞机票。这三位旅客是荷兰人科尔、加拿大人伯托和英国人丹皮。他们三人一个去荷兰,一个去加拿大,一个去英国。据悉科尔不打算去荷兰,丹皮不打算去英国,伯托则既不去加拿大,也不去英国。

问:这三张飞机票分别应该是他们谁的?

78、白帽和黑帽

老师让6名学生围坐成一圈,另让一名学生坐在中央,并拿出七顶帽子,其中四顶白色,三顶黑色。然后蒙住七名学生的眼睛,并给坐在中央的学生戴一顶帽子,而只解开坐在圈上的六名学生的眼罩。这时,由于坐在中央的学生的阻挡,每个人只能看到五个人的帽子。老师说:“现在,你们七人猜一猜自己的头上戴的帽子颜色。”大家静静地思索了好大一会。最后,坐在中央的、被蒙住双眼的学生举手说:“我猜到了。”

问:中央的被蒙住双眼的学生带的是什么颜色的帽子?他是怎样猜到的?

79、急中生智

有个农民挑了一对竹筐,赶集去买东西。当他来到一座独木桥上,对面来了个孩子,他想退回去让孩子先过桥,但是回身一看,后面也来了个孩子。正在进退两难之际,农民急中生智,想了个巧办法,使大家都顺利地通过了独木桥,而且三人之中谁也没有后退过一步。

问:农民是用的什么方法?

80、巧入房间

某地质勘探队有12名队员,他们同住在一栋楼的12个房间内。由于工作关系,资料不能集中,各人的房间内都有别人需要查对的资料。

这天,12位队员又要外出作业了。临行前,队长对大家说:“在外出作业期间,12个人一起回来是不可能的,如有队员回来查资料就困难了。现在咱们每个人都有打开自己门锁的两把钥匙,只准带走其中一把钥匙,余下的一把不准挂在门上,因为不安全,每个房间的门窗也必须关严,大家想一想,怎样才能使任何一个人回来都能打开12个房间呢?”

问:如果你是队员之一,你能想出办法来吗?

81、女儿的错

父亲打电话给女儿,要她替自己买一些生活用品,同时告诉她,钱放在书桌上的一个信封里。女儿找到信封,看见上面写着98,以为信封内有98元,就把钱拿出来,数也没数放进书包里。

在商店里,她买了90元的东西,付款时才发现,她不仅没有剩下8元,反而差了4元。

回到家里,她把这事告诉了父亲,怀疑父亲把钱点错了。父亲笑着说,他并没有数错,错在女儿身上。

问:女儿错在什么地方?

82、找硬币

3个日本孩子翻衣兜,他们把兜里所有的钱都掏出来,看看一共有多少钱。结果一共有320日元。其中有两枚硬币是100日元的,两枚是50日元的,两枚是10日元的。每一个孩子所带的硬币中没有相同的。而且,没带100日元硬币的孩子也没带10日元的硬币,没带50日元硬币的孩子也没带100日元的硬币。你能弄清楚这3个日本孩子原来各自带了什么硬币吗?

83、入睡与醒来

请问:从你生下来的那一刻起,你入睡和醒来的次数哪个多?多多少次?

84、什么书中毛病最多?

85、为什么好马不吃回头草?

86、什么东西说“父亲”是不会相碰,叫“爸爸”时却会碰到两次?

87、农夫养10头牛,只有19只角,为什么?

88、打什么东西既不花力气又舒服?

89、托尼总是喜欢把家里的闹钟整坏,妈妈为什么总是让不会修理钟表的爸爸代为修理?

90、戴夫走路从来脚不沾地,这是为什么?

91、生米不小心煮成熟饭时该怎么办?

92、制造日期与有效日期是同一天的产品是什么?

93、时钟敲了十三下,请问现在该做什么呢?

94、有对一模一样的双胞胎兄弟,哥哥的屁股有黑痣,而弟弟没有。但即使这对双胞胎穿着相同的服饰,仍然有人可立刻知道谁是哥哥,谁是弟弟。究竟是谁呢?

95、家有家规,国有国规,那动物园里有啥规?

96、先有男人,还是先有女人?

97、玛丽整天说个不停,可有一个月她说的最少,那是为什么?

98、戴维手里拿着火柴走到厨房,这有一个煤气灶和一个酒精灯,他如果想烧开水,请问:他应该先该点燃什么?

99、老师说蚯蚓切成两段仍能再生,西恩照老师的话去做,蚯蚓却死了,为什么?

100、汽车在右转弯时,哪只轮胎不转?

MySQL 外键的设置及作用

外键的作用:

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,外键只能引用外表中的列的值!
例如:
a b 两个表
a表中存有 客户号,客户名称
b表中存有 每个客户的订单
有了外键后
你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x

建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键)。

指定主键关键字: foreign key(列名)

引用外键关键字: references <外键表名>(外键列名)

事件触发限制: on delete和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action

例如:

outTable表 主键 id 类型 int

创建含有外键的表:
create table temp(
id int,
name char(20),
foreign key(id) references outTable(id) on delete cascade on update cascade);

说明:把id列 设为外键 参照外表outTable的id列 当外键的值删除 本表中对应的列删除 当外键的值改变 本表中对应的列值改变。

【转载】最该雇佣的程序员特征

1。好奇心

程序员是永远不会接受现成的东西的,他们必须亲自解开内心深处的迷惑和渴望。

2。清晰的思维技巧

编程是一件需要严密逻辑和清晰思维的事情,有强大的数学或者科学背景的程序员通常更加成功。

3。快速的阅读速度和理解能力

相当大一部分程序员的一天都花在阅读上,阅读设计文档,或者其他人的代码,API,注释等等,有些程序员读的快,能很快理解,并且开始行动,另外一些程序员也许要多花三四倍的时间才能阅读完毕,这些程序员的工作效率肯定不如前者。

4。注意细节

注意细节这个特征可能和是好奇心相关的,写程序的人,关注细节,严谨,意味他能够写出高质量,少bug的程序。

5。快速学习编程以外东西的能力

应用程序一般都和日常生活和企业运作相关联,比如编写一个会计软件,可能就需要学习一些简单的会计知识,如果拥有快速学习编程以外东西的能力,必将为你决定雇佣这个程序员加分。

6。自我学习技巧

软件行业进化速度很快,为了更好的编程技能,好的程序员必须善于自我学习。

7。激情

这个毫无疑问,你必须雇佣一个热爱这个工作的人。程序员很可能一周7天,一天8小时写代码,如果是例行公事的态度的程序员,很难相信他能做好这份工作。

8。适应性

程序员也许经常遇到短期的项目,变换不同的工作环境,即使在客户公司环境工作,也能保持良好的工作状态。

9。良好的沟通技巧

沟通技巧,不一定意味着有一口流利的英语,这意味着愿意沟通,愿意了解团队中其他人的想法。

10。谁是老板?

这个问题应该有点难以表达,程序员是一个众所周知独立性很强的一个群体,事实上,这也许是他们的一个优点,但是很多时候,即使从技术上,应该这么做,但是从商业和其他角度,管理层不得不选择一个另外一个做法,那么程序员应该尊重经理人的决定,尊重那个做决定也担负责任的人的决定。

不合格液态奶名单

  公布全国液态奶检出三聚氰胺名单

  液态奶检出三聚氰胺的批次表(不合格液态奶名单

  公司 序号 生产企业 产品名称 规格型号 商标生产日期/批次 三聚氰胺(mg/kg)

  蒙牛 1 蒙牛(武汉)友芝友乳业有限公司 核桃牛奶 200ml/袋 友芝友 20080910 0.765

  蒙牛 2 内蒙古蒙牛乳业(集团)股份有限公司 蒙牛高钙低脂牛奶 250ml/盒 蒙牛 2008.08.07 0.8

  蒙牛 3 内蒙古蒙牛乳业(集团)股份有限公司 全脂灭菌纯牛乳 250ml/盒 蒙牛 2008.09.01 1.0

  蒙牛 4 内蒙古蒙牛乳业(集团)股份有限公司 高钙低脂牛奶 250ml/盒 蒙牛 2008.08.01 1.5

  蒙牛 5 内蒙古蒙牛乳业(集团)股份有限公司 早餐奶(麦香味) 250ml/包 蒙牛 20080814 1.9

  蒙牛 6 内蒙古蒙牛乳业(集团)股份有限公司 蒙牛早餐奶 250ml/盒 蒙牛 2008.07.26/x 2.57

  蒙牛 7 内蒙古蒙牛乳业(集团)股份有限公司 妙点 250ml/盒 蒙牛 20080728/W206 3.17

  蒙牛 8 蒙牛乳业(北京)有限责任公司木糖醇酸牛奶 2kg/瓶蒙牛 20080806 3.52

  蒙牛 9 内蒙古蒙牛乳业(集团)股份有限公司 高钙低脂牛奶 243ml(250g)/袋  蒙牛 20080908/C206/GAfb 4.2

  蒙牛 10 蒙牛乳业(马鞍山)有限公司 蒙牛大粒果实酸牛奶 160克/盒 蒙牛 M20080903 6.8(A样)

  蒙牛 11 蒙牛乳业(马鞍山)有限公司 蒙牛大粒果实酸牛奶 160克/盒 蒙牛 M20080903 7(B样)

  不合格液态奶名单

  伊利 1 济南伊利乳业有限责任公司 伊利芒果+黄桃酸牛奶 125g/盒 伊利 2008.09.07 0.69

  伊利 2 内蒙古伊利实业集团股份有限公司 酸牛奶(木瓜+甜橙) 125g/瓶 伊利 20080903 1.02

  伊利 3 内蒙古伊利实业集团股份有限公司 纯牛奶 220ml/袋 伊利 2008.09.13 2.2

  伊利 4 内蒙古伊利实业集团股份有限公司 脱脂奶 250ml/盒 伊利 20080820 2.9

  伊利 5 内蒙古伊利实业集团股份有限公司 纯牛奶 220ml/袋 伊利 20080905MIAC6 5.5

  伊利 6 内蒙古伊利实业集团股份有限公司 纯牛奶 242ml/袋 伊利 20080906/LIA09 8

  伊利 7 内蒙古伊利实业集团股份有限公司 高钙低脂奶 250ml/盒 伊利 20080819 8.4

  不合格液态奶名单

  光明 1 北京光明健能乳业有限公司 光明酸牛奶(原味) 180g/袋 光明 2008.09.12 0.6

  光明 2 武汉光明乳品有限公司 原味酸牛奶 180g/盒 光明 2008-09-13 3.41

  光明 3 北京光明健能乳业有限公司 原味酸牛奶 100克/杯光明 20080910A 3.5

  光明 4 北京光明健能乳业有限公司 大颗果粒草莓酸奶 450克/盒 光明 20080902BC 4.8

  光明 5 光明乳业有限责任公司 益生菌·优乳酪(原味) 190g/罐 光明 B20080908C 5.65

  光明 6 北京光明健能乳业有限公司 优酪乳·酸牛奶(原味) 580克/瓶 光明 B20080909A 8.6

中国有毒食品一览表

中国有毒食品一览表
 
高致癌毒大米  食用这类大米,轻则出现恶心等现象,长期食用还可能致癌
 毛发水勾兑出的毒酱油  铅、砷、黄曲霉毒素、4-甲基米唑、氯丙醇等对人体有害
 敌敌畏泡金华火腿  你自己吃点试试……
 水发食品的侵泡液中掺入甲醛  相当于喝福尔马林,那东西是泡死尸的
 含有甲醛的有毒蜜枣  相当于喝福尔马林,那东西是泡死尸的
 残留农药超标的蔬菜水果  巨毒高残留农药的张北“无公害”蔬菜
 用“瘦肉精”饲养出的瘦肉型猪肉  化学成分在医学临床上可以治疗哮喘……这个还算好……
 用矿物油加工制作的毒瓜子  食品中矿物油进入人体后,会刺激人体的消化系统,轻则可出现头晕、恶心、呕吐等症状
 用加丽素红喂养的鸡所产的红心鸡蛋  引起严重贫血、白血病、骨髓病变等
 用猪大粪浸泡制作臭豆腐  吐
 用人尿浸泡的鲜海虾  继续吐……
 黑心月饼  掺加化肥的月饼
 变质豆奶  据说有去年的拿到今年卖……
 添加增加剂的馒头、花卷  不知道添加了什么……
 用硫磺熏白的银耳、红辣椒、花椒  硫磺是致癌物
 用激素催熟的草莓、猕猴桃  吃完男人变女人,小孩变大人
 用石蜡做凝固剂的重庆火锅底料  吃多了胃里都是石蜡
 用色素染制的绿茶  特别绿
 用违禁的“工业盐”腌制的四川泡菜  强致癌
 用硫磺熏制的土豆  ……
 毒韭菜  用“3911”农药浸灌出的,其残留物导致食用者头痛、头昏、恶心、无力、多汗、呕吐、腹泻,重症可出现呼吸困难、昏迷、血液胆碱活下降等
 掺加“掉白块”的龙口粉丝 ……
 上海三元“全佳”牌乳酸菌饮料  霉菌多得无法用数字计量
 硫磺熏药水泡卫生筷  又是硫磺
 用墨水染过色的“黑”木耳  真黑
 价格低得出奇的假鸡精  ……
 低质量的饮水机  ……
 不合格的一次性医疗器具  会死人的
 多得难以记数的假药  ……无语
 糖精水和色素勾兑的“葡萄酒”  你自己看吧……
 果脯、蜜饯中细菌之多  超过国家标准的100倍
 平遥牛肉 用骡马肉冒充 
 红薯粉条  用掉白块、色素加工
 腐竹  用掉白块、碱性嫩黄口、工业明胶等化学致癌物质加工
 鲜竹笋  用硫磺和工业盐保鲜
 太仓肉松  使用了死猪肉、母猪肉、并且大量使用豆粉,用双氧水漂白母猪肉呸病死猪被制成肉松还要加上添加剂、着色剂等,使肉松色泽更加好看
 白酒  工业用酒精勾兑
 潲水油  在下水道淘出
 毒桂圆  用硫磺进行熏制漂白
 果汁  厕所旁边灌出来的
 方便食品  滥用防腐剂
 米粉  含石炭酸
 卤腊方便熟食  用病死变质禽畜加工
 禽肉食品、鲜牛奶  含有大量氯霉素、土霉素等抗生素
 红油老汤  千人涮
 山西老陈醋  添加化工原料“非食用冰醋酸”
 面粉都添加漂白剂  大部分面粉中漂白剂过氧化苯甲酰超量,长期食用后身体会出现疲劳、头昏、失眠、多梦、神经衰弱等不适感

悲哀的调侃,中国人都是化学专家!

悲哀的调侃,中国人都是化学专家!
 
中国人在食品中完成了化学扫盲
从大米里我们认识了石蜡
从火腿里我们认识了敌敌畏
从咸鸭蛋、辣椒酱里我们认识了苏丹红
从火锅里我们认识了福尔马林
从银耳、蜜枣里我们认识了硫磺
从木耳中认识了硫酸铜
今天三鹿又让同胞知道了三聚氰胺的化学作用 
外国人喝牛奶结实了
中国人喝牛奶结石了
日本人口号:一天一杯牛奶振兴一个民族
中国人口号:一天一杯牛奶,震惊一个民族 
伊利:你他妈加就加了,不能少加点?害我们都被查!
蒙牛:我从来都是奶粉里加三聚氰胺,你他妈三聚氰胺里加奶粉?脑子有毛病,这下全好看了!
三鹿:那天漏斗坏了,没控制住~!!

CCTV9月16日报道

CCTV9月16日报道 央视新闻联播刚刚播出,质检总局通报全国婴幼儿奶粉三聚氰胺含量抽检结果,伊利、蒙牛、光明、圣元、雅士利等22个厂家69批次产品中检出三聚氰胺,被要求立即下架。

   品牌   抽样数 不合格数  三聚氰胺最高含量
  1. 三鹿      11       11       每公斤2563毫克
  2. 熊猫      5        3        每公斤619毫克
  3. 圣元      17       8        每公斤150毫克
  4. 古城      13       4        每公斤141.6毫克
  5. 英雄      2        2        每公斤98.6毫克
  6. 惠民       1       1        每公斤79.17毫克
  7. 蒙牛       28      3        每公斤68.2毫克
  8. 可琪       1       1        每公斤67.94毫克
  9. 广东雅士利  30     8        每公斤53.4毫克
  10. 南山       3      1        每公斤53.4毫克
    11. 黑龙江XX   1      1        每公斤31.74毫克
  12. 山西雅士利 4      2        每公斤26.3毫克
  13 金必士      2      2        每公斤18毫克
  14 施恩        20    14        每公斤17毫克
  15 金鼎        3     1         每公斤16.2毫克
  16 伊利        35     1        每公斤12毫克
  17 奥美多      16     6        每公斤10.7毫克
  18 艾克丁      3      1        每公斤4.8毫克
  19 育宝        3      1        每公斤3.73毫克
  20 蕾蕾        3      3        每公斤1.2毫克
  21 保安丽      1      1        每公斤0.21毫克
  22 聪而壮      1      1        每公斤0.09毫克

 

Oh,shit ~~~~~~~~~~~~~~~~~~~
 
他们终于对我们的孩子下手了
他们连我们的孩子也不放过
连吃奶的婴儿也惨遭毒手
成为他们贪婪攫取的牺牲品
这是一片滋生腐败的土壤
这是一片蔓延着罪恶的土地
这里没有幸福的天堂
这里是活人的地狱

没有人可以独善其身
所有的人都可能会是受害者
你现在尽管做一个旁观者
但你随时会是另一场悲剧的主角

我们的周遭充满着邪恶
因为这是由魔鬼统治的世界
我们必须把魔鬼关在笼子里
我们不能再如此懦弱
如果我们连一个婴儿都不能保护
我们羞愧为人父母
这同样也是我们所有人的耻辱
就让我们都遭毁灭和屠戮

God help us  ~~~~~~

ASP封成DLL

服务器端组件

首先,服务器端的组件要有别于客户端的组件.客户端的组件是通过网络传输,依靠HTML来起作用.而且只能在IE上有用.但是服 务器端的组件是运行在服务器端,它在服务器上执行各种操作.因此,所有的浏览器都能享用,它依*的是服务器而不是浏览器.

当IIS被请求执行一个ASP程序,它首先会在ASP文件中找到<%%>标签之间的代码,并且执行它(也可以是<script runat=server></script>之间的代码).如果这个ASP程序在先前被调用过,那么它就会用 内存中的编译过的程序来向用户返回HTML代码,如果没有,那么它就重新编译.这里ASP就比CGI多一点速度优势,因为CGI 是每一个请求都使用一个线程.这样就大大消耗了服务器的资源.

想不想你写的程序自己就能在IIS运行!?!现在你就行了!使用VB5(当然现在是VB6了),你就能建立DynamicLin kedLibraries(DLL文件),它能在IIS上直接运行(如果有asp文件来请求的话).

系统和软件的要求

你需要一个32位的操作系统来运行ASP.当然你也得安装IIS或PWS.我们下面的程序是在windows95+PWS+VB 5的环境下开发的.

我们开始吧

启动你的VB,选择ActiveX图标.这个图标可以在新建工程找到!VB会提供一个默认的工程名(project1)和类名( class1).我们会将这两个名字都改掉.在改名之前,请首先确认我们拥有MicrosoftActiveServerPag esObjectLibrary,它在我们的程序非常有用.从菜单中选择"工程",然后在其中选择"引用",就会出现"引用"窗 口
从中选择MicrosoftActiveServerPagesObjectLibrary.

给工程和类命名

现在我们来根据自己的爱好来为project1和class1来命名吧!给它们命名也是很重要的,我们以后会用这个工程名和类名 来创建这个组件的实例!后面详细介绍.

如何改名,我就不想多说了!
我们的工程名改为Exmaple,类名为Helloword

怎样使用工程和类

现在我们有了我们自己的工程(Example1)和类名(HelloWorld).以后我们就会在ASP代码中使用它们的名字来 引用这个组件.在ASP中我们就这样引用,如下:

SetObjReference=Server.CreateObject("ProjectName.ClassName")

对于我们工程的引用就是:
SetObjReference=Server.CreateObject("Example1.HelloWorld")
现在我们就能用ObjReference来调用我们在组件中所创建的函数,子程序.下面我们会来写一个SayHello的子程序 ,我们执行它的代码如下:

<%
SetObjReference=Server.CreateObject("Example1.HelloWorld")
ObjReference.SayHello
%>

为了在Helloword类中使用ASP的方法,你必须在此类中写一个OnStartPage
子函数.如下:

PublicSubOnStartPage(PassedScriptingContextAsScriptingContext)
SetMyScriptingContext=PassedScriptingContext
EndSub

现在,无论什么时候用户访问一个带有本组件的ASP文件,IIS就会把ScriptingContext传送给我们的对象请我们 使用.这个ScriptingContext包括了全部的ASP方法和属性.实现上,这使得我们有能力访问所有ASP的对象.看 下面的代码:

PublicSubOnStartPage(PassedScriptingContextAsScriptingContext)
SetMyScriptingContext=PassedScriptingContext
SetMyApplication=MyScriptingContext.Application
SetMyRequest=MyScriptingContext.Request
SetMyResponse=MyScriptingContext.Response
SetMyServer=MyScriptingContext.Server
SetMySession=MyScriptingContext.Session
EndSub

以后我们就能用在VB中用MyApplication来代替ASP中的Application,同理可以代替Request,S erver.....,不过我们来是要在OnStartPage之前来申明这些变量:

PrivateMyScriptingContextAsScriptingContext
PrivateMyApplicationAsApplication
PrivateMyRequestAsRequest
PrivateMyResponseAsResponse
PrivateMyServerAsServer
PrivateMySessionAsSession

使用ASP的对象

我们的变量现在就能像标准的ASP对象来使用了!比如,我们经常在ASP中用Request.form()来收集提交表单的数据 .现在我们在我们的VB中实现这个功能,代码如下:

用ASP中实现:
<%
MyTempVariable=Request.Form("userName")
Response.Write("youentered"&MyTempVariable&"asyourus ername")
%>

在VB中实现:

MyTempVariable=MyRequest.Form("userName")
My Response.Write("youentered"&MyTempVariable&"asyourus ername")

通过使用MyResponse来代替Response,我们能够使用所有Response的方法,当然,MyResponse这 个名字可以随便来取,你甚至可以就取Response.
另一件我们得注意的是,我们得在我们的建立的类中,写上OnEndPage子函数,这个OnStartPage是相反的!OnS tartPage是创建对象,OnEndPage是消毁对象.

PublicSubOnEndPage()
SetMyScriptingContext=Nothing
SetMyApplication=Nothing
SetMyRequest=Nothing
SetMyResponse=Nothing
SetMyServer=Nothing
SetMySession=Nothing
EndSub

SayHello方法

我们来建立一个子函数,用于显示"HolleWorld".这个SayHello方法只是HelloWorld这个类中一个子函 数,我们以后会在ASP中用以下的显示这个方法

<%
SetObjReference=Server.CreateObject("Example1.HelloWorld")
ObjReference.SayHello
%>

SayHello的程序,很简单的!

PublicSubSayHello()
MyResponse.Write("HelloWorld")
EndSub

现在一个小型的组件编写完成,剩下的工作就是编译这个组件,在"工程"菜单中保存它,取什么名字都可以,我们用Exmaple1 .vbp吧!然后就用在菜单中选择"makeexmaple1.dll",将其编译成DLL文件.一个组件就真正完成了!

注意,编译了此组件那么你就得先把你的PWS关掉,然后再编译此组件.否则VB就会告诉你些组件在使用中.

在ASP中使用我们的自己的组件.

当你更正了在编译中的错误,成功地编译了example1这个工程,现在你就得拿出你最喜欢的HTML编辑器来写下下面的语句, 保存为ASP文件.

<HTML>
<HEAD>
<TITLE>Example1</TITLE>
</HEAD>

<BODY>

<%
SetObjReference=Server.CreateObject("Example1.HelloWorld")
ObjReference.SayHello
%>

</BODY>
</HTML>

运行后即可看到结果:

HelloWorld

注册组件

如果你想和你的朋友,邻居分享你的组件,那么你就得在你的系统上注册你的组件.我们一般使用Regsvr32.exe来注册组件 .注册后你的组件会出现在Win95/Win98的windows/system目录中.下面是一个注册的例子:

Regsvr32.exe C:\wwwroot\Example1\Example1.dll

在你的系统中,VB会自动给你注册,所以你很少用到Regsvr32.exe

这里只是写了一个非常小的组件,你可以写好自己的更大的组件,而且还可以用VB中的很多控件.

什么是shell程序呢

1.建立和运行shell程序
什么是shell程序呢? 简单的说shell程序就是一个包含若干行
shell或者linux命令的文件.
象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.如VI等.
在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整
的程序文件.
执行shell程序文件有三种方法
(1)#chmod +x file
(2)#sh file
(3)# . file
在编写shell时,第一行一定要指明系统需要那种shell解释你的shell程序,如:#! /bin/bash,
#! /bin/csh,/bin/tcsh,还是#! /bin/pdksh .
2.shell中的变量
(1)常用系统变量
$ # :保存程序命令行参数的数目
$ ? :保存前一个命令的返回码
$ 0 :保存程序名
$ * :以("$1 $2...")的形式保存所有输入的命令行参数
$ @ :以("$1""$2"...)的形式保存所有输入的命令行参数
(2)定义变量
shell语言是非类型的解释型语言,不象用C++/JAVA语言编程时需要事先声明变量.给一
个变量赋值,实际上就是定义了变量.
在linux支持的所有shell中,都可以用赋值符号(=)为变量赋值.
如:
abc=9 (bash/pdksh不能在等号两侧留下空格 )
set abc = 9 (tcsh/csh)
由于shell程序的变量是无类型的,所以用户可以使用同一个变量时而存放字符时而存放
整数.
如:
name=abc (bash/pdksh)
set name = abc (tcsh)
在变量赋值之后,只需在变量前面加一个$去引用.
如:
echo $abc
(3)位置变量
当运行一个支持多个命令行参数的shell程序时,这些变量的值将分别存放在位置变量里.
其中第一个参数存放在位置变量1,第二个参数存放在位置变量2,依次类推...,shell保留
这些变量,不允许用户以令外的方式定义他们.同别的变量,用$符号引用他们.

3.shell中引号的使用方法
shell使用引号(单引号/双引号)和反斜线("\")用于向shell解释器屏蔽一些特殊字符.
反引号(")对shell则有特殊意义.
如:
abc="how are you" (bash/pdksh)
set abc = "how are you" (tcsh)
这个命令行把三个单词组成的字符串how are you作为一个整体赋值给变量abc.
abc1='@LOGNAME,how are you!' (bash/pdksh)
set abc1='$LOGNAME,how are you!' (tcsh)
abc2="$LOGNAME,how are you!" (bash/pdksh)
set abc2="$LOGNAME,how are you!" (tcsh)
LOGNAME变量是保存当前用户名的shell变量,假设他的当前值是:wang.执行完两条命令后,
abc1的内容是:$LOGNAME, how are you!.而abc2的内容是;wang, how are you!.
象单引号一样,反斜线也能屏蔽所有特殊字符.但是他一次只能屏蔽一个字符.而不能屏蔽
一组字符.
反引号的功能不同于以上的三种符号.他不具有屏蔽特殊字符的功能.但是可以通过他将
一个命令的运行结果传递给另外一个命令.
如:
contents=`ls` (bash/pdksh)
set contents = `ls` (tcsh)
4.shell程序中的test命令
在bash/pdksh中,命令test用于计算一个条件表达式的值.他们经常在条件语句和循环
语句中被用来判断某些条件是否满足.
test命令的语法格式:
test expression
或者
[expression]

在test命令中,可以使用很多shell的内部操作符.这些操作符介绍如下:
(1)字符串操作符 用于计算字符串表达式
test命令 | 含义
-----------------------------------------
Str1 = str2 | 当str1与str2相同时,返回True
Str1! = str2| 当str1与str2不同时,返回True
Str | 当str不是空字符时,返回True
-n str | 当str的长度大于0时,返回True
-z str | 当str的长度是0时,返回True
-----------------------------------------
(2)整数操作符具有和字符操作符类似的功能.只是他们的操作是针对整数
test表达式 | 含义
---------------------------------------------
Int1 -eq int2|当int1等于int2时,返回True
Int1 -ge int2|当int1大于/等于int2时,返回True
Int1 -le int2|当int1小于/等于int2时,返回True
Int1 -gt int2|当int1大于int2时,返回True
Int1 -ne int2|当int1不等于int2时,返回True
-----------------------------------------
(3)用于文件操作的操作符,他们能检查:文件是否存在,文件类型等
test表达式 | 含义
------------------------------------------------
-d file |当file是一个目录时,返回 True
-f file |当file是一个普通文件时,返回 True
-r file |当file是一个刻读文件时,返回 True
-s file |当file文件长度大于0时,返回 True
-w file |当file是一个可写文件时,返回 True
-x file |当file是一个可执行文件时,返回 True
------------------------------------------------
(4)shell的逻辑操作符用于修饰/连接包含整数,字符串,文件操作符的表达式
test表达式 | 含义
----------------------------------------------------------
! expr |当expr的值是False时,返回True
Expr1 -a expr2|当expr1,expr2值同为True时,返回True
Expr1 -o expr2|当expr1,expr2的值至少有一个为True时,返回True
-----------------------------------------------------------
注意:
tcsh shell 不使用test命令,但是tcsh中的表达式同样能承担相同的功能.tcsh
支持的表达式于C中的表达式相同.通常使用在if和while命令中.
tcsh表达式 | 含义
-------------------------------------------------------
Int1 <= int2 |当int1小于/等于int2时,返回True
Int1 >= int2 |当int1大于/等于int2时,返回True
Int1 < int2 |当int1小于int2时,返回True
Int1 > int2 |当int1大于int2时,返回True
Str1 == str2 |当str1与str2相同时,返回True
Str1 != str2 |当str1与str2不同时,返回True
-r file |当file是一个可读文件时,返回True
-w file |当file是一个可写文件时,返回True
-x file |当file是一个可执行文件时,返回True
-e file |当file存在时,返回True
-o file |当file文件的所有者是当前用户时,返回True
-z file |当file长度为0时,返回True
-f file |当file是一个普通文件时,返回True
-d file |当file是一个目录时,返回True
Exp1 || exp2 |当exp1和exp2的值至少一个为True时,返回True
Exp1 && exp2 |当exp1和exp2的值同为True时,返回True
! exp |当exp的值为False时,返回True
5.条件语句
同其他高级语言程序一样,复杂的shell程序中经常使用到分支和循环控制结构,
bash,pdksh和tcsh分别都有两种不同形式的条件语句:if语句和case语句.
(1)if语句
语法格式:
bash/pdksh用法:
if [expression1]
then
commands1
elif [expression2]
commands2
else
commands3
if

tcsh用法:
if (expression1) then
commands1
else if (expression2) then
commands2
else
commands3
endif

含义:当expression1的条件为True时,shell执行then后面的commands1命令;当
expression1的条件为false并且expression2的条件满足为True时,shell执行
commands2命令;当expression1和expressin2的条件值同为false时,shell执行
commands3命令.if语句以他的反写fi结尾.

(2)case语句
case语句要求shell将一个字符串S与一组字符串模式P1,P2,...,Pn比较,当S与
某个模式Pi想匹配时,就执行相应的那一部分程序/命令.shell的case语句中字符
模式里可以包含象*这样的通配符.
语法格式:
bash/pdksh用法:
case string1 in
str1)
commands1;;
str2)
commands2;;
*)
commands3;;
esac

tcsh用法:
switch (string1)
case str1:
statements1
breaksw
case str2:
statements2
breaksw
default:
statements3
breaksw
endsw

含义:shell将字符串string1分别和字符串模式str1和str2比较.如果string1与str1匹配,则
shell执行commands1的命令/语句;如果string11和str2匹配,则shell执行commands2的命令/
语句.否则shell将执行commands3的那段程序/命令.其中,每个分支的程序/命令都要以两个
分号(;;)结束.

6.循环语句
当需要重复的某些操作时,就要用到循环语句.

(1)for语句
大家知道在很多编程语言中for语句是最常见.在shell中也不例外.for语句要求shell将包含
在这个语句中的一组命令连续执行一定的次数.
语法格式:
bash/pdksh
用法1:
for var1 in list
do
commands
done
含义:在这个for语句中,对应于list中的每个值,shell将执行一次commands代表的一组命令.
在整个循环的每一次执行中,变量var1将依此取list中的不同的值.
用法2:
for var1
do
setatements
done
含义:在这个for语句中,shell针对变量var1中的每一项分别执行一次statements代表的一组
命令.当使用这种形式的语句时,shell认为var1变量中包含了所有的位置变量,而位置变量中
存放着程序的命令行参数值.也就是说,他等价于下列形式:
for var1 in " $@"
do
statements
done

tcsh用法:
在tcsh中没有for这个单词,与for语句起同样功能的是foreach语句
foreach name (list)
commands
end

举例:
for file ;bash/pdksh
do
tr a-z A-Z<$file>file.caps
done

# ;tcsh
foreach file ( $ * )
tr a-z A-Z<$file>$file.caps
end


(2)while语句
while语句是shell提供的另一种循环语句. while语句指定一个表达式和一组命令.这个
语句使得shell重复执行一组命令,直到表达式的值为False为止.
语法格式:
while expression ;bash
do
statements
done

while (expression) ;tcsh
statements
end
举例:
count=1 ;bash
while [ -n "$ *"] ***
do
echo "this is a parameter number $count $1"
shift
count='expr $count + 1'
done

set count = 1 ;tcsh
while ( " $ * " ! = "")
echo "this is a parameter number $count $1"
shift
set count = 'expr $count + 1'
end

语句中shift命令的功能是将所有的命令行参数依次相左传递.

(3)until语句
until与while语句具有类似的语法格式和功能,不同的是while中expression的值为True时,
shell执行命令组;而until中当expression的值为False时,shell才执行那组命令.
语法格式:
until expression
do
commands
done
举例:
count=1
until [ -z " $ * "] ***
echo "this is a parameter number $count $1"
shift
count='expr $count + 1'
done
情注意上述例子中带***号.在while中的表达式: -n string,他的含义是当string不是空
字符串时,表达式的值为True;在until中的表达式: -z string,他的 含义是当string是空
字符串时,表达式的值为True.由此可见,两个程序对条件表达式的设置恰好是相反的.

(4)shift语句
bash和tcsh都支持shift命令.shift将存放在位置变量中的命令行参数,依次向左传递.例如
位置变量当前值为:
$1=file1 $2=file2 $3=file3
执行一次shift命令后,位置变量的值为:
$1=file2 $2=file3
还可以在shift命令中指定位置变量转移的次数, 如:
shift n
例子:
while [ "$1"]
do
if [ "$1"="-i"] then
infile=" $2"
shift 2
else if [ "$1"="-o"] then
outfile="$2"
shift 2
else
echo "Program $0 does not recognize option $1"
fi
done
tr a-z A-Z<$infile>$outfile

(5)select语句
select语句是pdksh提供的一个独特的循环语句.他不同于前面介绍的循环语句.他不是
反复计算一个条件表达式,并依据表达式的值决定是否执行一组命令.select的功能是自动的
生成一个简单的文本菜单.
语法格式:
select menu [in list_of_items]
do
commands
done
含义:当执行一个select语句时,pdksh分别为每个列在list_of_items中的成员建立一个菜单
选项.list_of_items既可以是一个包含多个选项的变量,也可以是直接列在程序中的一组选项
.如果语句中没有提供list_of_items,select语句将使用位置变量作为list_of_items.
举例:
select menuitem in pick1 pick2 pick3
do
echo "are you sure you want to pick $menuitem"
read res ;接收用户的输入,并且将输入的值存放在特定变量里.
if [ $res=" y" -o $res=" Y"]
then
break ;用于退出while,for,select等循环语句
fi
done
(6)repeat语句
repeat语句是tcsh提供的独有的循环语句.使用repeat命令要求shell对一个命令执行一定
的次数.
语法格式:
repeat count command
如;
foreach num ( $ *)
repeat $num echo -n " *"
echo " "
end

7.shell中的函数
shell允许用户定义自己的函数.函数是高级语言中的重要结构.shell中的函数于C或者其他
语言中定义的函数一样.与从头开始,一行一行地写程序相比,使用函数主要好处是有利于组织
整个程序.在bash中,一个函数的语法格式如下:
fname (){
shell comands
}
定义好函数后,需要在程序中调用他们.bash中调用函数的格式:
fname [parm1 parm2 parm3...]
调用函数时,可以向函数传递任意多个参数.函数将这些参数看做是存放他的命令行参数的
位置变量.
举例:
这个程序定义了4个函数:
upper ():将传递给他的文件中的字母转换成大写,并存放到同名的结尾为.out的文件中.
lower ():将传递给他的文件里的字母转换成小写,并存放到同名的结尾为.out的文件中.
print ():输出传递给他的文件的内容.
usage_error ():输出程序的帮助信息.
程序的主模块是个case条件语句,他根据命令行中第一个参数,决定程序要完成的功能,并调用相应
的函数完成这一功能.
upper (){
shift
for i
do
tr a-a A-Z<$!>$1.out
rm $1
mv $1.out $1
shift
done; }
lower () {
shift
for i
do
tr A-Z a-z<$1>$1.out
rm $1
mv $1.out $1
shift
done; }
print() {
shift
for i
do
lpr $1
shift
done; }
usage_error() {
echo " $1 syntax is $1 "
echo ""
echo " where option is one of the following"
echo " p--to print frame files"
echo " u--to save as uppercase"
echo " l--to save as lowercase";}
case $1 in
p | -p)print $@;;
u | -u)upper $@;;
l | -l)lower $@;;
*) usage_error $0;;
esac

------------------------------------------------------------------------------
总结
利用shell编程是提高系统管理工作效率的重要手段,学好shell跟了解系统基本命令和管理
工具的使用方法同样重要!

附:
A.bash中常用的命令
命令 | 含义
-------------------------------------------------------------------------------
Alias |设置命令别名
Bg |将一个被挂起的进程在后台执行
cd |改变用户的当前目录
exit |终止一个shell
export |使作为这个命令的参数的变量及其当前值,在当前运行的shell的子进程中可见
fc |编辑当前的命令行历史列表
fg |让一个被挂起的进程在前台执行
help |显示bash内部命令的帮助信息
history |显示最近输入的一定数量的命令行
kill |终止一个进程
pwd |显示用户当前工作目录
unalias |删除命令行别名
--------------------------------------------------------------------------------

B.bash中常用的系统变量
变量 | 含义
-------------------------------------------------------------------------------
EDITOR,FCEDIT |Bash的fc命令的默认文本编辑器
HISTFILE |规定存放最近输入命令行文件的名字
HISTSIZE |规定命令行历史文件的大小
HOME |当前用户的宿主目录
OLDPWD |用户使用的前一个目录
PATH |规定bash寻找可执行文件时搜索的路径
PS1 |命令行环境中显示第一级提示符号
PS2 |命令行环境中显示第二级提示符号
PWD |用户当前工作目录
SECONDS |当前运行的bash进程的运行时间(以秒为单位)