姜宇 说:
http://www.ietf.org/rfc/rfc2109.txt
姜宇 说:
http://www.faqs.org/rfcs/rfc2965.html
姜宇 说:
http://blog.csdn.net/xymyeah/archive/2007/09/04/1772206.aspx
姜宇 说:
解释了2109和2965的区别
http://support.microsoft.com/kb/306070
IETF 是 **Internet Engineering Task Force** 的缩写,即互联网工程任务组。IETF 是一个开放的国际标准组织,主要负责制定和推广互联网的技术标准,特别是在协议、架构和其他网络相关技术方面。
还有一个叫做国际电工委员会I。那么iso和IEC,其实有一个共同合作的小组叫做iso IECSC27,那么这个小组发布我们的一系列信息安全标准。ISO组织的信息安全标准按ISO组织的标准都是以ISO为开头的。后面跟上它的标准号就是一个数字,比如说ISO9000。Iso9000这就是一个标准,这也是ido组织的一个特点,接下来。还有一个标准化组织,叫做internet工程任务组I ETF。那么他们所发布的标准叫做RFC文档?它们的标准号,一般是前面是RFC,后面跟上一个数字,代表你的这标准是。
在 IETF 中,Force 的确不是指军队,而是指一种协作的**“力量”或“组织”**。在英文中,"force" 可以表示一种具有行动力的团体或组织,例如“task force”通常指为了完成特定任务而组建的工作组或特别小组。
因此,Internet Engineering Task Force 可以理解为专注于互联网技术工程的工作小组或任务组织。
http://www.ietf.org/rfc/rfc2109.txt
姜宇 说:
http://www.faqs.org/rfcs/rfc2965.html
姜宇 说:
http://blog.csdn.net/xymyeah/archive/2007/09/04/1772206.aspx
姜宇 说:
解释了2109和2965的区别
http://support.microsoft.com/kb/306070
IETF 是 **Internet Engineering Task Force** 的缩写,即互联网工程任务组。IETF 是一个开放的国际标准组织,主要负责制定和推广互联网的技术标准,特别是在协议、架构和其他网络相关技术方面。
还有一个叫做国际电工委员会I。那么iso和IEC,其实有一个共同合作的小组叫做iso IECSC27,那么这个小组发布我们的一系列信息安全标准。ISO组织的信息安全标准按ISO组织的标准都是以ISO为开头的。后面跟上它的标准号就是一个数字,比如说ISO9000。Iso9000这就是一个标准,这也是ido组织的一个特点,接下来。还有一个标准化组织,叫做internet工程任务组I ETF。那么他们所发布的标准叫做RFC文档?它们的标准号,一般是前面是RFC,后面跟上一个数字,代表你的这标准是。
在 IETF 中,Force 的确不是指军队,而是指一种协作的**“力量”或“组织”**。在英文中,"force" 可以表示一种具有行动力的团体或组织,例如“task force”通常指为了完成特定任务而组建的工作组或特别小组。
因此,Internet Engineering Task Force 可以理解为专注于互联网技术工程的工作小组或任务组织。
教导主任抓住一帮子学生抽烟,不承认,于是找他们谈话。
“抽烟吗?”“不抽。”“那吃根薯条吧!”很顺手的做夹香烟状,被逮进去痛骂。
第二个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,很恭敬的接过来,“蘸点番茄酱吧!”,做弹烟灰状,又被痛骂。
第三个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱吃了,“给你同学带一根吧!”,很顺势夹在耳后,又露馅了。
第四个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱,刚要吃,教导主任突然叫到“校长来了!”,学生急忙把薯条扔在地上,踩在脚底还拧几下,又被训斥。
第五个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱,教导主任又叫到“校长来了!”,不慌不忙道“还没点火呢!”,自然结果也不太好。
第六个,“吃薯条吗?”“不会,谢谢”……
“抽烟吗?”“不抽。”“那吃根薯条吧!”很顺手的做夹香烟状,被逮进去痛骂。
第二个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,很恭敬的接过来,“蘸点番茄酱吧!”,做弹烟灰状,又被痛骂。
第三个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱吃了,“给你同学带一根吧!”,很顺势夹在耳后,又露馅了。
第四个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱,刚要吃,教导主任突然叫到“校长来了!”,学生急忙把薯条扔在地上,踩在脚底还拧几下,又被训斥。
第五个,“抽烟吗?”“不抽。”“那吃根薯条吧!”,也很恭敬的接过来,小心翼翼蘸好酱,教导主任又叫到“校长来了!”,不慌不忙道“还没点火呢!”,自然结果也不太好。
第六个,“吃薯条吗?”“不会,谢谢”……
d:
cd D:\Program Files\tomcat-5.0.24\bin
java -jar bootstrap.jar
把:Java\jdk1.6.0_02\lib\拷贝到: tomcat-5.0.24\common\lib\tools.jar
cd D:\Program Files\tomcat-5.0.24\bin
java -jar bootstrap.jar
把:Java\jdk1.6.0_02\lib\拷贝到: tomcat-5.0.24\common\lib\tools.jar
小七(249904837) 14:52:57
aaaa.php 中的一个链接<a href=ddd.php>链接</a>,进入到ddd.php页面,怎么才能在ddd.php中获取上级页面的路径呢,就是获取aaaa.php这个路径呢?
$lailu=$_SERVER['HTTP_REFERER'];//来路的完整网址;
aaaa.php 中的一个链接<a href=ddd.php>链接</a>,进入到ddd.php页面,怎么才能在ddd.php中获取上级页面的路径呢,就是获取aaaa.php这个路径呢?
$lailu=$_SERVER['HTTP_REFERER'];//来路的完整网址;
这是人类千年的追问。这个问题的答案从古到今连最有学问的饱学之士也无法讲得清楚。但每当大小灾难来临之际,人们一定会追问这个问题:祥林嫂在临死前一天向鲁迅追问这个问题;瞿秋白临死前在狱中自问自答的也是这个问题,并在赠给一位医生的照片中写道:“如果人有灵魂的话,何必要这个躯壳。但是如果没有的话,这个躯壳又有什么用处?”在圣作和经书中寻找这个问题的答案和指引,这些圣作和经书无不告诉我们灵魂是永恒的,精神的生命是永生的,否则我们此时的努力,我们努力追求的良好品行不是都白费了吗?
肉体的死亡并不是生命的终结,只是把生命的玫瑰从花盆中移栽到更广阔而肥沃的花园里,只是生命之鸟打破了鸟笼飞向了无垠的蓝天。
在“泰坦尼克”沉没这个大灾难发生之后,阿博都·巴哈对此灾难发表了如下的谈话:“我们人类生存的环境就像胎儿孕育在它的母体中一样,要为胎儿进入更为广阔的世界做准备。一开始,婴儿很难接受来到的新世界,他会因不愿离开那狭小的空间而嚎啕大哭,他不愿意离开自己熟悉的家,但自然的力量把他推到了这个世界。而一旦来到这个新的环境,他发现自己脱离了黑暗,见到了光明,从那阴暗而狭窄的空间来到了宽广而快乐的世界。在狭小的空间里,他的营养来自于母亲的血液,而现在他享受到了美味的食物,新世界充满了光明和美丽。这个婴儿好奇而兴奋地看着群山、草原、河流和繁星,呼吸着新鲜的空气,他赞美上苍把他从之前狭小的空间带到了自由的世界。
这个比喻也同样表达了短暂的物质世界和下一个世界的关系:人的灵魂从黑暗和惶恐中到达光明和永恒的天国。乍一看人们很难去接受死亡,而到达了新的环境,灵魂充满感激,因为灵魂从有限的束缚到达了无限的自由,脱离了悲伤、痛苦和考验,生活在无尽的快乐中。人们放弃了物质和形式的东西,得到了精神和理想的发展。”这就是对我们追问的答案。这次失去的亲人在天国等待着与我们团聚。
附:
1912年4月23号:
阿博都巴哈关于灾难的一次谈话
--泰坦尼克号沉没
Talk given by Abdu’l-Baha on the occasion of Titanic disaster
从今早到现在,我一直在演讲。出于爱,友谊和与你们在一起的愿望,我来到这里再一次和大家谈一谈。在过去的几天里,发生了一件可怕的灾难,这个灾难使得每一个心灵悲伤,每一个灵魂哀痛。我指的是泰坦尼克号的沉没,许多生命陨落,许多美丽的灵魂离开了这个世界。尽管这样的灾难令人惋惜,但我们应该认识到,每一件事的发生,背后都有一个智慧,任何事情的发生都有其原因,这里隐藏着奥秘。然而无论奥秘何在,这都是令人悲痛的事件,一个让许多人流泪,许多灵魂困扰的事件,我为此深感震动。有一些遇难者曾和我一起同乘cedric号到达那布勒斯后,又转乘泰坦尼克号,当想起他们,我十分悲痛。然而,当我从另一个角度看待这场灾难,认识到天国的世界是无限的,我又感到欣慰。尽管这些遇难者离开了这个世界,但是他们有机会在下一个世界中发展。耶稣说过,“在圣父的圣殿里,有很多殿堂”。他们从短暂的世界被召唤到永恒的世界,他们放弃了物质的存在,进入了精神世界的大门。他们放弃了物质世界的享乐和舒适,得到永恒世界真正的快乐与幸福---他们提前到达了上帝的王国。上帝的恩惠是无限的,我们的责任是在祈祷中缅怀这些逝去的灵魂,并祈求让他们不断接近上帝。
我们人类生存的环境,就象胎儿在孕育他的母体中一样,要为胎儿进入更为宽广的世界做准备。一开始,婴儿很难接受来到新的世界,他会因不愿离开那狭小的空间而嚎啕大哭。他不愿意离开自己熟悉的“家”,但自然的力量把他推到这个世界。而一旦来到这个新的环境,他发现自己脱离了黑暗,见到了光明,从那个阴暗而狭窄的空间,来到了宽广而快乐的世界。在狭小的空间里,他的营养来自于母亲的血液,而现在他享受到美味的食物。新的世界充满了光明与美丽,这个婴儿好奇而兴奋地看着群山,草原,河流和繁星,呼吸着清新的空气,他赞美上帝把他从之前的狭小空间带到新的自由的世界。这个比喻也表达了短暂的物质世界和下一个世界的关系,人类灵魂从黑暗和惶恐中,到达光明和永恒的天国。乍一看,人们很难去接受死亡,而到达了新的环境时,灵魂充满感激。因为灵魂从有限的束缚到达了无限的自由,脱离了悲伤,痛苦,考验,生活在无尽地快乐中。人们放弃了物质和形式的东西,得到了精神和理想的发展。因此,那些在泰坦尼克上遇难的灵魂,完成了他们在尘世的旅途,提前进入了更美好的世界。他们从黑暗走向光明,这是唯一能够让生者感到宽慰的。
更重要的是,这些灾难的背后有更深层的原因。它们的目的是教育人类。我们生活在一个极端依赖物质条件的时代,人们想象着一只庞大的巨轮,完美的机械,高超的舵手能带来安全。但灾难告诉我们,上帝才是真正的保护者。如果上帝的意愿是保护我们,一个小小的舢板,也可以逃离灾难。相反,一艘完美的巨轮和优秀的舵手也无法躲避灾难。灾难的目的是教导人类转向上帝---唯一的保护者。人类的灵魂将依赖于他的保护,而得到真正的安全。这些灾难的发生将使人们增强对上帝的信仰,当我们悲伤和痛苦时,要将心转向上帝的天国。为逝者祈祷,祈求他们得到上帝的恩惠。尽管他们离开了这个物质世界,但他们在上天的王国中享受到了无尽的快乐。
大家不要错误的认为,我的这些话,意味着我们在生活中可以不尽心尽力。相反,上帝赋予了人类智慧来保护自己。因此,我们需要充分地利用科学和技术的成果。我们的工作要富有目的性,并深思熟虑。建造最好的船只,培养最优秀的舵手,但是,他应该依赖上帝并相信上帝是唯一的保护者。有了上帝的保护,任何事情都不会影响我们的安全,没有上帝的保护,任何预防和准备都将无济于事。
肉体的死亡并不是生命的终结,只是把生命的玫瑰从花盆中移栽到更广阔而肥沃的花园里,只是生命之鸟打破了鸟笼飞向了无垠的蓝天。
在“泰坦尼克”沉没这个大灾难发生之后,阿博都·巴哈对此灾难发表了如下的谈话:“我们人类生存的环境就像胎儿孕育在它的母体中一样,要为胎儿进入更为广阔的世界做准备。一开始,婴儿很难接受来到的新世界,他会因不愿离开那狭小的空间而嚎啕大哭,他不愿意离开自己熟悉的家,但自然的力量把他推到了这个世界。而一旦来到这个新的环境,他发现自己脱离了黑暗,见到了光明,从那阴暗而狭窄的空间来到了宽广而快乐的世界。在狭小的空间里,他的营养来自于母亲的血液,而现在他享受到了美味的食物,新世界充满了光明和美丽。这个婴儿好奇而兴奋地看着群山、草原、河流和繁星,呼吸着新鲜的空气,他赞美上苍把他从之前狭小的空间带到了自由的世界。
这个比喻也同样表达了短暂的物质世界和下一个世界的关系:人的灵魂从黑暗和惶恐中到达光明和永恒的天国。乍一看人们很难去接受死亡,而到达了新的环境,灵魂充满感激,因为灵魂从有限的束缚到达了无限的自由,脱离了悲伤、痛苦和考验,生活在无尽的快乐中。人们放弃了物质和形式的东西,得到了精神和理想的发展。”这就是对我们追问的答案。这次失去的亲人在天国等待着与我们团聚。
附:
1912年4月23号:
阿博都巴哈关于灾难的一次谈话
--泰坦尼克号沉没
Talk given by Abdu’l-Baha on the occasion of Titanic disaster
从今早到现在,我一直在演讲。出于爱,友谊和与你们在一起的愿望,我来到这里再一次和大家谈一谈。在过去的几天里,发生了一件可怕的灾难,这个灾难使得每一个心灵悲伤,每一个灵魂哀痛。我指的是泰坦尼克号的沉没,许多生命陨落,许多美丽的灵魂离开了这个世界。尽管这样的灾难令人惋惜,但我们应该认识到,每一件事的发生,背后都有一个智慧,任何事情的发生都有其原因,这里隐藏着奥秘。然而无论奥秘何在,这都是令人悲痛的事件,一个让许多人流泪,许多灵魂困扰的事件,我为此深感震动。有一些遇难者曾和我一起同乘cedric号到达那布勒斯后,又转乘泰坦尼克号,当想起他们,我十分悲痛。然而,当我从另一个角度看待这场灾难,认识到天国的世界是无限的,我又感到欣慰。尽管这些遇难者离开了这个世界,但是他们有机会在下一个世界中发展。耶稣说过,“在圣父的圣殿里,有很多殿堂”。他们从短暂的世界被召唤到永恒的世界,他们放弃了物质的存在,进入了精神世界的大门。他们放弃了物质世界的享乐和舒适,得到永恒世界真正的快乐与幸福---他们提前到达了上帝的王国。上帝的恩惠是无限的,我们的责任是在祈祷中缅怀这些逝去的灵魂,并祈求让他们不断接近上帝。
我们人类生存的环境,就象胎儿在孕育他的母体中一样,要为胎儿进入更为宽广的世界做准备。一开始,婴儿很难接受来到新的世界,他会因不愿离开那狭小的空间而嚎啕大哭。他不愿意离开自己熟悉的“家”,但自然的力量把他推到这个世界。而一旦来到这个新的环境,他发现自己脱离了黑暗,见到了光明,从那个阴暗而狭窄的空间,来到了宽广而快乐的世界。在狭小的空间里,他的营养来自于母亲的血液,而现在他享受到美味的食物。新的世界充满了光明与美丽,这个婴儿好奇而兴奋地看着群山,草原,河流和繁星,呼吸着清新的空气,他赞美上帝把他从之前的狭小空间带到新的自由的世界。这个比喻也表达了短暂的物质世界和下一个世界的关系,人类灵魂从黑暗和惶恐中,到达光明和永恒的天国。乍一看,人们很难去接受死亡,而到达了新的环境时,灵魂充满感激。因为灵魂从有限的束缚到达了无限的自由,脱离了悲伤,痛苦,考验,生活在无尽地快乐中。人们放弃了物质和形式的东西,得到了精神和理想的发展。因此,那些在泰坦尼克上遇难的灵魂,完成了他们在尘世的旅途,提前进入了更美好的世界。他们从黑暗走向光明,这是唯一能够让生者感到宽慰的。
更重要的是,这些灾难的背后有更深层的原因。它们的目的是教育人类。我们生活在一个极端依赖物质条件的时代,人们想象着一只庞大的巨轮,完美的机械,高超的舵手能带来安全。但灾难告诉我们,上帝才是真正的保护者。如果上帝的意愿是保护我们,一个小小的舢板,也可以逃离灾难。相反,一艘完美的巨轮和优秀的舵手也无法躲避灾难。灾难的目的是教导人类转向上帝---唯一的保护者。人类的灵魂将依赖于他的保护,而得到真正的安全。这些灾难的发生将使人们增强对上帝的信仰,当我们悲伤和痛苦时,要将心转向上帝的天国。为逝者祈祷,祈求他们得到上帝的恩惠。尽管他们离开了这个物质世界,但他们在上天的王国中享受到了无尽的快乐。
大家不要错误的认为,我的这些话,意味着我们在生活中可以不尽心尽力。相反,上帝赋予了人类智慧来保护自己。因此,我们需要充分地利用科学和技术的成果。我们的工作要富有目的性,并深思熟虑。建造最好的船只,培养最优秀的舵手,但是,他应该依赖上帝并相信上帝是唯一的保护者。有了上帝的保护,任何事情都不会影响我们的安全,没有上帝的保护,任何预防和准备都将无济于事。
我只是一普通的蜘蛛,一只环宇中既丑陋又卑微的生物,而我又是一只不平凡的蜘蛛,因为我把蛛网结在了西天雷音寺的廊檐下。每日里我听的是僧人们念经的阵阵木鱼与片片梵音;亨用的是普天下的善男信女的香火供奉。慢慢地,我也开始有了灵性,我也能悟出一些堪为艰深的法理。终于,有一天,佛感觉到了我的存在和我的长进。佛问我:“蛛儿,普天之下汝以何物为最贵?”
我慎答:“余窃以为天下万物皆不足为贵,贵者只两件一曰已失去,一曰得不到。”我为我的答案深感自豪。
佛却说:“蛛儿,你错了。”
我错了吗?真的错了吗?
佛要出去云游了,佛走之前交待我,让我好好的参悟,他回来仍是要问我的。
也不知是过了多久,好像是一千年罢,佛回来了。一见我,佛就问了我:“一千年了,你想的怎么样了?”
我不语。我不知我上次的答案有何不妥。佛笑了笑便不再理我了,我想佛是恼我了。于是,我便仍在那里忙着吐丝织网,闲暇时学习佛理。
转眼又是一个千年。
有一天,观音大士从我身边经过,可能是行得急了些,一滴甘露从她手中的杨枝叶上落了下来,不偏不倚就停在了我的蛛网之上。甘露的宿命是化雨,去滋润人间万物,我的网只是它作片刻逗留的地方。它是那么的晶莹夺目,它的存在只是为了让我感到自卑。我不去与理会它的存在,因为它最终是会自动消失在我的生活中的。又是一个漫长的千年,它始终没有走,只是这么静静地陪伴着我,无声又无息。终于,有一天,一阵长风,从我身边刮过,把它带走了。它走了以后我开始明白原来它来之前我所拥有的除了寂寞以外别无其它,而它走了,留给我的只是无尽的孤独。生命中有很多东西也许终我一生我也无法拥有,然没有就没有,我也不会为此而感到有任何的遗憾,遗憾的是有一些东西拥有过却终又失去。我越来越无法平复那一种被称作孤独的感觉。尽管我每天都让自己很忙,可是孤独就像是毒药,贯穿我的肢体百骸,让我倍受熬煎。终于惊动了佛。佛说:“蛛儿,这是你命中注定的劫数,去吧,红尘之中自有你另一翻气象。”
我沉沉的睡去,也不知过了多久,耳边响起噪杂的声音,有人在打我,我忍不住痛,张开了嘴,我有了我作为蜘蛛时所没有的声音和眼泪。耳边响起的是我的哭声洪亮而悦耳。就这样,我成了林太师的小千金-林珠儿。是的,是那份我无法与之抗衡的孤独将我推落于这万丈红尘,也许会找回一些我想要的东西,也许会万劫不复,谁又知道呢?
我想,佛是偏爱我的,否则他不会让我仍保有我作为蜘蛛的记忆。我要找我的甘露,那个默默守护了我一千年的甘露,我要他永远陪在我身边将我内心所有的孤独与寂寞杀个灰飞烟灭。
我的父亲是朝庭的太师,他与先皇是连襟,也就是说我的母亲与太后是嫡亲的姐妹。我的兄长与姐姐也都是富贵中人,我们家出了两个驸马,三个王妃。佛是顾念我的,他让我生在这么一个钟鸣鼎食之家,让我得到了这个家里所有人的爱。我长到了十六岁,我是那么迫切的想要找到甘露,我怕我会像上次那样,在不知不觉中错过。
命运终于还是将我与甘露拉在了一起。太后五十华诞,我获准与母亲一同出席皇家寿宴。这个宴会比我想像中的要大的多。因为是太后大寿,所以不仅是皇家的人,所有一品大员的家眷们也都来了。皇上还请了新科状元前来吟诗作赋。我想,我的出现让在场所有的人惊艳了,许多人的眼光都集中在了我的身上,这让我感到恐惧。是的,我想我是美丽的,可这份美丽是为了甘露才展现的。我的眼光在人群中寻找,我想找到甘露,家规甚严,我几乎足不出户,所以我要抓住机会。我的眼睛终被一双明眸所吸引。是的,没错,就是他,我快不能呼吸了,当那个让我在雷音寺里不得安生的明亮又一次呈现在我的面前时,就是他,新科状元——甘露,连名子也没改。他在不停的忙,忙着为太后写诗,他的身边有好多女子,她们都是公卿王候之女,她们的眼中都流露对他的向往。我不吃醋,我乐意让我的爱人成为众人追逐的对像,我自信,只有我才是他这一世宿命安排的妻子。我是那么的优秀,我坐在那里只是静静注视着他,而他也发现了我,他的眼神告诉我,我的存在已深深震撼了他。我俩目光交会时他对我笑笑,接着便又埋头写诗。公公将他写的诗一首一首呈给皇上和太后,由两位品评后让宫女就着曲牌唱。我听到了一首:仙姬何事离瑶台,三步一徘徊。
只因人间王母寿,天上人间舞蹁跹。
我知道,那一定是写给我的。我正沉浸在自已编织的美梦中幻想着,太后的内侍柴公公走到我身边带我去见太后。自我懂事起就没见过太后,她老人家对我似颇有好感,慈爱地轻抚我的手,一直在眯着眼笑。她还把她的小儿子湘王爷介绍给我,湘和我是同年同月同日生的,湘一直在偷看我,他是那么的羞涩而不善表达,尽管他贵为小王爷,受到宫内上上下下的宠爱。华宴是何时结束的,我已不记得了。我只知道我喝了很多的酒,有点醉了。我好高兴,因为我找到了他——甘露,他就是我这一世的快乐和生命,十六年的生命,直至见到他的那天才算有意义。
我毫不隐瞒地告诉父母我对甘露的感情。如我所愿他们并不反对,父母是爱我的,他们甚至见不得我受到哪怕是一点点的委屈,我想做的事,只要不致太荒谬,他们总是会同意的。
第二次遇见甘露是在京城郊外的白马寺,母亲是陪我一起去乞求我的好姻缘的。刚一入寺主持方丈便告知甘状元正陪太夫人在上香,隧引我们相见。母亲陪着甘太夫人闲聊,她们支开了我和他。我知道,母亲一定是想和甘太夫人说我与他的事。我的心底泛起了一阵阵的愉悦夹杂着几丝莫名的兴奋与羞涩。他陪着我在寺内放足,后面是一大群的仆僮。他就近在咫尺,而我几乎窒息。他是那么的彬彬有礼,言必称小姐,我有些恼他道:“叫我蛛儿罢!蜘蛛的蛛,我叫你甘露哥哥行吗?”他问:“这样不妥吧?”我尔莞一笑:“你以前不是一直这么叫我的吗?”他被我弄糊涂了。“你以前是在心里这么叫我的,那时我是雷音寺廊檐下结网的蜘蛛,而你是不慎滴落于蛛网上的观音大士杨枝叶上的甘露,是你陪了我整整一千年,后来你跟一阵风走了,我便开始了孤独,孤独让我坠入红尘,中断修行也让我再一次碰到了你。”我只是想让他找回作为甘露的记忆,这样我就可以听他亲口告诉我,那一千年的陪伴他又是怀着什么样的心情。他的表现让我失望。他在笑,那样子好像是一位兄长在听小妹妹梦里的呓语。我听到“碰”的一声,那是我心碎的声音,他是不是已经不记得我了?抑或是甘露根本是没有心的?我在心中向神明祈求。“你的想法太浪漫了,有这等才情,你的诗一定写得不错。”我开始绝望了,究竟是哪里出了错?我入红尘为的是找回我的甘露,而眼前人分明就是甘露,可是他却没有了甘露的记忆。他似有意捉弄我,取笑说:“你说你以前是一只蜘蛛,可你长得是那么美丽,一点儿也不像嘛?你比它好看,何止上万倍。”这本是名恭维的话,却让听这话的我感到痛。我开始认命了,我真傻,甘露的命运是去泽被苍生,我的网终不是他真正的归宿。我慢慢离开他,带着绝望的悲怆道:“它日吐情丝,夜织情网,终致深陷,难以自拔,尔等须眉却嫌它丑陋而取笑于它,想它不过只是痴情些罢了。”甘露啊!甘露!你终究是无心的,我想。我终于走到了回廊的尽头。我抽了一支上上签,这是对我莫大的讽刺。方丈亲自为我解的签,还说我三月之内必有红鸾禧,还说这禧会应在第二年的春天。母亲还在高兴,而我已经意识到了,不会有什么禧了。
三个月后宫里来了人,一家老小摆起了香案跪听圣旨。冗长、雅致而又晦涩的措词无非只是表达一个内容:太后把我许给了她的小儿子湘王爷,明年春天大婚。那时我便是湘王妃了。这无异于是一声霹雳,如果说对甘露的失望是一把利刃,深深扎进了我的心里,太后的赐婚就好比是在我的伤口上洒了一把砒霜,我情何以堪?等待我的也许只有一个结果——伤重不治,毒发身亡。我神思恍惚,小婢搀着我,我浑身冷汗淋漓,摇摇欲坠。只听见依稀是父亲的声音他欲挽留公公用膳。公公笑着拒绝了:“太师,您太客气了。我这不还得去甘状元那里宣旨!对了,您老还不知道吧!洛王爷的小郡主长风小姐早就看上状元了,央太后做主。太后说了这事得问状元自个儿,没想到状元一见长风郡主就应了太后。这不,今儿就去宣旨下月完婚。”我再也受不了了,公公还没走远,我的整个人就倒了下来。我只依稀听见众人手忙脚乱的忙着,叫着,乱作一团。那情形就如同我出世时。我想我快要走了,要回雷音寺去了。甘露最终还是跟着长风走了,在这世上我已找不到继续活着的理由了。走吧!别再痴缠下去了,不属于我的终究不属于我了!我对自已说我开始做梦,梦里佛对说我:“傻蛛儿,你又何必对甘露耿耿于怀呢?甘露陪了你一千年,那是因为它要等长风,它只有与长风在一起才能遨游环宇,润泽苍生,他的存在才有意义。而于你他是无心的。”我求佛:“我知道我错了,我不想在这里呆下去了,引我回去吧!我还是愿意做廊檐下的蜘蛛。”佛想了想道:“你若执意要回来,我也不勉强,只是你尘缘还未了。也罢,给你三日之期,三日之后我便来渡你。”
樵楼更鼓打了三下,我醒来了。令我惊诧的是,湘正在冲我笑。羞涩的笑容难掩满面的疲惫。他只轻声讲:“对不起,联姻之事应该及早告诉你的。”他的笑容让我心疼,我在心里默默的向他道歉,我不能成为他的王妃了。丫头们见我醒了忙说:“小姐,你可把湘王还有我们大家吓坏了。你可知道为了你湘王一个人不吃不喝守了你整整三天三天夜。小姐,快点好起来罢!”说着竟哭了起来。我心中竟又有些不舍了,离开这里所有的人,他们一定会伤心的。还有生我的父母,他们白发人送黑发人又将会是何等的伤心?然我已没有勇气再苟活在这人世了,我的生命是为了甘露,现在既然没有甘露那就连命也不要了罢。湘仿佛是看穿了我的心事道:“忘记甘露好吗?让我来代替他给予你这一世的幸福吧!知道吗?蛛儿!我可是等了你有三千年了。那次在母后的寿宴上我已经把你认出来了,你是那么的聪慧稳重,一如当年你在雷音廊檐下的绝世风范。我便是那默默等了你三千年的雷音菩提树下的一枚小草。我日日仰望你,想让你看到我的存在,而你是那么的高高在上,从来就没有发现那个渺小的我,可是我不放弃,总有一天你会知道有这么一个小小的我在默默地等你。可是在你的心里自始自终就只有甘露一个。好不容易甘露被长风带走了,而你却仍放不下,于是佛让你来一遭红尘俗世,我恳求佛让我与你同行,佛答应了。佛说我们是有缘的,所以我信了,好不容易甘露走出了你的生活好不容易我说服了母后让皇兄颁旨,可是你却还是放不下甘露。……”他说不下去了。我开始感到震憾,三千年的等待,我不曾给过他半点承诺,他却也不曾有过一丝一毫的抱怨。“蛛儿,请不要辜负我对你的一片心,留下来陪我一起朝朝暮暮不好么?”他握住了我的手,而我的心在抖,我原本是以为我的心已经死了的。
三天很快就到了,我本应顺了佛的指点义无反顾的将我的元神抽离我的肉体的。可是我的耳朵却分明听到一阵悲怆的哭声。“蛛儿,你还是不要和我在一起是吗?这没关系,只求你别走。我可以不娶你,只要你好好的活着,开开心心的,让我天天看见你就行了。别走好么?”不知为什么我犹豫了,好像是被什么所感动。他抱着我的身体哭得肝肠寸断。就是铁石人儿也会落泪。我的父母一边哭一边还在劝慰他,接着他似想到了什么似的,抽出了佩剑,嘴里喃喃自语:“好吧!蛛儿,你既执意要回雷音,我便追随于你,无论你魂魄去向何方,哪怕是上穷碧落,下到黄泉,还是天涯海角,湘,我一定奉陪。”说着便要举剑自刎。佛说:“蛛儿啊!湘可是等了你三千年,你是放不下他的吧!回去罢!趁现在你还走得不太远。你这个样子,我既是渡你回雷音,终究也是枉然的。”我的元神又重新进入了我的身体,我只是轻轻动了唇:“湘,不要,我回来了。我心甘情愿做你的王妃,做你一生一世的王妃,来酬你三千年的等待,不好么?”只听“哐当”他手中的剑落地了。他紧紧抱住了我,我们相拥而泣,还有我的父母。是的我要是知道我的离去会让那么多爱我的人痛不欲生我是不会这般任性地想要走的。
我终于明白了,我们曾经失去的和我们所得不到的东西都不足为贵,紧紧握在手心里的才是最珍贵的。我曾求甘露而不得,而今明白,甘露的珍贵是对长风郡主而言的。他曾陪了我一千年这就够了。现在我应该珍惜的是湘予我的爱!
按:爱我的人和我爱的人,一个永恒的主题:当今的我们是如何选择的?
我以为人世间最疼苦的事应该是:他就在我身边而我却不知道他爱我,然又有多少爱是可以重来的呢?珍惜现在罢!珍惜每一份别人给予你的爱吧!要明白握在手里的东西才叫幸福。
我慎答:“余窃以为天下万物皆不足为贵,贵者只两件一曰已失去,一曰得不到。”我为我的答案深感自豪。
佛却说:“蛛儿,你错了。”
我错了吗?真的错了吗?
佛要出去云游了,佛走之前交待我,让我好好的参悟,他回来仍是要问我的。
也不知是过了多久,好像是一千年罢,佛回来了。一见我,佛就问了我:“一千年了,你想的怎么样了?”
我不语。我不知我上次的答案有何不妥。佛笑了笑便不再理我了,我想佛是恼我了。于是,我便仍在那里忙着吐丝织网,闲暇时学习佛理。
转眼又是一个千年。
有一天,观音大士从我身边经过,可能是行得急了些,一滴甘露从她手中的杨枝叶上落了下来,不偏不倚就停在了我的蛛网之上。甘露的宿命是化雨,去滋润人间万物,我的网只是它作片刻逗留的地方。它是那么的晶莹夺目,它的存在只是为了让我感到自卑。我不去与理会它的存在,因为它最终是会自动消失在我的生活中的。又是一个漫长的千年,它始终没有走,只是这么静静地陪伴着我,无声又无息。终于,有一天,一阵长风,从我身边刮过,把它带走了。它走了以后我开始明白原来它来之前我所拥有的除了寂寞以外别无其它,而它走了,留给我的只是无尽的孤独。生命中有很多东西也许终我一生我也无法拥有,然没有就没有,我也不会为此而感到有任何的遗憾,遗憾的是有一些东西拥有过却终又失去。我越来越无法平复那一种被称作孤独的感觉。尽管我每天都让自己很忙,可是孤独就像是毒药,贯穿我的肢体百骸,让我倍受熬煎。终于惊动了佛。佛说:“蛛儿,这是你命中注定的劫数,去吧,红尘之中自有你另一翻气象。”
我沉沉的睡去,也不知过了多久,耳边响起噪杂的声音,有人在打我,我忍不住痛,张开了嘴,我有了我作为蜘蛛时所没有的声音和眼泪。耳边响起的是我的哭声洪亮而悦耳。就这样,我成了林太师的小千金-林珠儿。是的,是那份我无法与之抗衡的孤独将我推落于这万丈红尘,也许会找回一些我想要的东西,也许会万劫不复,谁又知道呢?
我想,佛是偏爱我的,否则他不会让我仍保有我作为蜘蛛的记忆。我要找我的甘露,那个默默守护了我一千年的甘露,我要他永远陪在我身边将我内心所有的孤独与寂寞杀个灰飞烟灭。
我的父亲是朝庭的太师,他与先皇是连襟,也就是说我的母亲与太后是嫡亲的姐妹。我的兄长与姐姐也都是富贵中人,我们家出了两个驸马,三个王妃。佛是顾念我的,他让我生在这么一个钟鸣鼎食之家,让我得到了这个家里所有人的爱。我长到了十六岁,我是那么迫切的想要找到甘露,我怕我会像上次那样,在不知不觉中错过。
命运终于还是将我与甘露拉在了一起。太后五十华诞,我获准与母亲一同出席皇家寿宴。这个宴会比我想像中的要大的多。因为是太后大寿,所以不仅是皇家的人,所有一品大员的家眷们也都来了。皇上还请了新科状元前来吟诗作赋。我想,我的出现让在场所有的人惊艳了,许多人的眼光都集中在了我的身上,这让我感到恐惧。是的,我想我是美丽的,可这份美丽是为了甘露才展现的。我的眼光在人群中寻找,我想找到甘露,家规甚严,我几乎足不出户,所以我要抓住机会。我的眼睛终被一双明眸所吸引。是的,没错,就是他,我快不能呼吸了,当那个让我在雷音寺里不得安生的明亮又一次呈现在我的面前时,就是他,新科状元——甘露,连名子也没改。他在不停的忙,忙着为太后写诗,他的身边有好多女子,她们都是公卿王候之女,她们的眼中都流露对他的向往。我不吃醋,我乐意让我的爱人成为众人追逐的对像,我自信,只有我才是他这一世宿命安排的妻子。我是那么的优秀,我坐在那里只是静静注视着他,而他也发现了我,他的眼神告诉我,我的存在已深深震撼了他。我俩目光交会时他对我笑笑,接着便又埋头写诗。公公将他写的诗一首一首呈给皇上和太后,由两位品评后让宫女就着曲牌唱。我听到了一首:仙姬何事离瑶台,三步一徘徊。
只因人间王母寿,天上人间舞蹁跹。
我知道,那一定是写给我的。我正沉浸在自已编织的美梦中幻想着,太后的内侍柴公公走到我身边带我去见太后。自我懂事起就没见过太后,她老人家对我似颇有好感,慈爱地轻抚我的手,一直在眯着眼笑。她还把她的小儿子湘王爷介绍给我,湘和我是同年同月同日生的,湘一直在偷看我,他是那么的羞涩而不善表达,尽管他贵为小王爷,受到宫内上上下下的宠爱。华宴是何时结束的,我已不记得了。我只知道我喝了很多的酒,有点醉了。我好高兴,因为我找到了他——甘露,他就是我这一世的快乐和生命,十六年的生命,直至见到他的那天才算有意义。
我毫不隐瞒地告诉父母我对甘露的感情。如我所愿他们并不反对,父母是爱我的,他们甚至见不得我受到哪怕是一点点的委屈,我想做的事,只要不致太荒谬,他们总是会同意的。
第二次遇见甘露是在京城郊外的白马寺,母亲是陪我一起去乞求我的好姻缘的。刚一入寺主持方丈便告知甘状元正陪太夫人在上香,隧引我们相见。母亲陪着甘太夫人闲聊,她们支开了我和他。我知道,母亲一定是想和甘太夫人说我与他的事。我的心底泛起了一阵阵的愉悦夹杂着几丝莫名的兴奋与羞涩。他陪着我在寺内放足,后面是一大群的仆僮。他就近在咫尺,而我几乎窒息。他是那么的彬彬有礼,言必称小姐,我有些恼他道:“叫我蛛儿罢!蜘蛛的蛛,我叫你甘露哥哥行吗?”他问:“这样不妥吧?”我尔莞一笑:“你以前不是一直这么叫我的吗?”他被我弄糊涂了。“你以前是在心里这么叫我的,那时我是雷音寺廊檐下结网的蜘蛛,而你是不慎滴落于蛛网上的观音大士杨枝叶上的甘露,是你陪了我整整一千年,后来你跟一阵风走了,我便开始了孤独,孤独让我坠入红尘,中断修行也让我再一次碰到了你。”我只是想让他找回作为甘露的记忆,这样我就可以听他亲口告诉我,那一千年的陪伴他又是怀着什么样的心情。他的表现让我失望。他在笑,那样子好像是一位兄长在听小妹妹梦里的呓语。我听到“碰”的一声,那是我心碎的声音,他是不是已经不记得我了?抑或是甘露根本是没有心的?我在心中向神明祈求。“你的想法太浪漫了,有这等才情,你的诗一定写得不错。”我开始绝望了,究竟是哪里出了错?我入红尘为的是找回我的甘露,而眼前人分明就是甘露,可是他却没有了甘露的记忆。他似有意捉弄我,取笑说:“你说你以前是一只蜘蛛,可你长得是那么美丽,一点儿也不像嘛?你比它好看,何止上万倍。”这本是名恭维的话,却让听这话的我感到痛。我开始认命了,我真傻,甘露的命运是去泽被苍生,我的网终不是他真正的归宿。我慢慢离开他,带着绝望的悲怆道:“它日吐情丝,夜织情网,终致深陷,难以自拔,尔等须眉却嫌它丑陋而取笑于它,想它不过只是痴情些罢了。”甘露啊!甘露!你终究是无心的,我想。我终于走到了回廊的尽头。我抽了一支上上签,这是对我莫大的讽刺。方丈亲自为我解的签,还说我三月之内必有红鸾禧,还说这禧会应在第二年的春天。母亲还在高兴,而我已经意识到了,不会有什么禧了。
三个月后宫里来了人,一家老小摆起了香案跪听圣旨。冗长、雅致而又晦涩的措词无非只是表达一个内容:太后把我许给了她的小儿子湘王爷,明年春天大婚。那时我便是湘王妃了。这无异于是一声霹雳,如果说对甘露的失望是一把利刃,深深扎进了我的心里,太后的赐婚就好比是在我的伤口上洒了一把砒霜,我情何以堪?等待我的也许只有一个结果——伤重不治,毒发身亡。我神思恍惚,小婢搀着我,我浑身冷汗淋漓,摇摇欲坠。只听见依稀是父亲的声音他欲挽留公公用膳。公公笑着拒绝了:“太师,您太客气了。我这不还得去甘状元那里宣旨!对了,您老还不知道吧!洛王爷的小郡主长风小姐早就看上状元了,央太后做主。太后说了这事得问状元自个儿,没想到状元一见长风郡主就应了太后。这不,今儿就去宣旨下月完婚。”我再也受不了了,公公还没走远,我的整个人就倒了下来。我只依稀听见众人手忙脚乱的忙着,叫着,乱作一团。那情形就如同我出世时。我想我快要走了,要回雷音寺去了。甘露最终还是跟着长风走了,在这世上我已找不到继续活着的理由了。走吧!别再痴缠下去了,不属于我的终究不属于我了!我对自已说我开始做梦,梦里佛对说我:“傻蛛儿,你又何必对甘露耿耿于怀呢?甘露陪了你一千年,那是因为它要等长风,它只有与长风在一起才能遨游环宇,润泽苍生,他的存在才有意义。而于你他是无心的。”我求佛:“我知道我错了,我不想在这里呆下去了,引我回去吧!我还是愿意做廊檐下的蜘蛛。”佛想了想道:“你若执意要回来,我也不勉强,只是你尘缘还未了。也罢,给你三日之期,三日之后我便来渡你。”
樵楼更鼓打了三下,我醒来了。令我惊诧的是,湘正在冲我笑。羞涩的笑容难掩满面的疲惫。他只轻声讲:“对不起,联姻之事应该及早告诉你的。”他的笑容让我心疼,我在心里默默的向他道歉,我不能成为他的王妃了。丫头们见我醒了忙说:“小姐,你可把湘王还有我们大家吓坏了。你可知道为了你湘王一个人不吃不喝守了你整整三天三天夜。小姐,快点好起来罢!”说着竟哭了起来。我心中竟又有些不舍了,离开这里所有的人,他们一定会伤心的。还有生我的父母,他们白发人送黑发人又将会是何等的伤心?然我已没有勇气再苟活在这人世了,我的生命是为了甘露,现在既然没有甘露那就连命也不要了罢。湘仿佛是看穿了我的心事道:“忘记甘露好吗?让我来代替他给予你这一世的幸福吧!知道吗?蛛儿!我可是等了你有三千年了。那次在母后的寿宴上我已经把你认出来了,你是那么的聪慧稳重,一如当年你在雷音廊檐下的绝世风范。我便是那默默等了你三千年的雷音菩提树下的一枚小草。我日日仰望你,想让你看到我的存在,而你是那么的高高在上,从来就没有发现那个渺小的我,可是我不放弃,总有一天你会知道有这么一个小小的我在默默地等你。可是在你的心里自始自终就只有甘露一个。好不容易甘露被长风带走了,而你却仍放不下,于是佛让你来一遭红尘俗世,我恳求佛让我与你同行,佛答应了。佛说我们是有缘的,所以我信了,好不容易甘露走出了你的生活好不容易我说服了母后让皇兄颁旨,可是你却还是放不下甘露。……”他说不下去了。我开始感到震憾,三千年的等待,我不曾给过他半点承诺,他却也不曾有过一丝一毫的抱怨。“蛛儿,请不要辜负我对你的一片心,留下来陪我一起朝朝暮暮不好么?”他握住了我的手,而我的心在抖,我原本是以为我的心已经死了的。
三天很快就到了,我本应顺了佛的指点义无反顾的将我的元神抽离我的肉体的。可是我的耳朵却分明听到一阵悲怆的哭声。“蛛儿,你还是不要和我在一起是吗?这没关系,只求你别走。我可以不娶你,只要你好好的活着,开开心心的,让我天天看见你就行了。别走好么?”不知为什么我犹豫了,好像是被什么所感动。他抱着我的身体哭得肝肠寸断。就是铁石人儿也会落泪。我的父母一边哭一边还在劝慰他,接着他似想到了什么似的,抽出了佩剑,嘴里喃喃自语:“好吧!蛛儿,你既执意要回雷音,我便追随于你,无论你魂魄去向何方,哪怕是上穷碧落,下到黄泉,还是天涯海角,湘,我一定奉陪。”说着便要举剑自刎。佛说:“蛛儿啊!湘可是等了你三千年,你是放不下他的吧!回去罢!趁现在你还走得不太远。你这个样子,我既是渡你回雷音,终究也是枉然的。”我的元神又重新进入了我的身体,我只是轻轻动了唇:“湘,不要,我回来了。我心甘情愿做你的王妃,做你一生一世的王妃,来酬你三千年的等待,不好么?”只听“哐当”他手中的剑落地了。他紧紧抱住了我,我们相拥而泣,还有我的父母。是的我要是知道我的离去会让那么多爱我的人痛不欲生我是不会这般任性地想要走的。
我终于明白了,我们曾经失去的和我们所得不到的东西都不足为贵,紧紧握在手心里的才是最珍贵的。我曾求甘露而不得,而今明白,甘露的珍贵是对长风郡主而言的。他曾陪了我一千年这就够了。现在我应该珍惜的是湘予我的爱!
按:爱我的人和我爱的人,一个永恒的主题:当今的我们是如何选择的?
我以为人世间最疼苦的事应该是:他就在我身边而我却不知道他爱我,然又有多少爱是可以重来的呢?珍惜现在罢!珍惜每一份别人给予你的爱吧!要明白握在手里的东西才叫幸福。
http://blog.chinaunix.net/u1/33803/showart_357352.html
English:http://www.w3.org/Protocols/rfc2616/rfc2616.html
小无 22:13:27
看完这个你英语比六级还好了,学什么大学英语啊~~应该大一就看
English:http://www.w3.org/Protocols/rfc2616/rfc2616.html
小无 22:13:27
看完这个你英语比六级还好了,学什么大学英语啊~~应该大一就看
操作系统中进程概念的理解
提起进程这个概念,让很多经常使用计算机的人感到陌生,其实我们经常和它打交道,只要在计算机上运行一个程序,相应的一个进程就诞生了,而且它伴随着整个操作过程,直到程序终止。进程在操作系统中是一个非常抽象、非常重要、非常难以理解的概念。对进程概念的深入透彻的理解,有助于理解操作系统中的各种机制原理。
为什么要引入进程概念
提起程序这个概念,大家再也熟悉不过了,程序与进程概念是不可分的。程序是为了完成某项任务编排的语句序列,它告诉计算机如何执行,因此程序是需要运行的。程序运行过程中需要占有计算机的各种资源才能运行下去。如果任一时刻,系统中只有一道程序,即单道程序系统,程序则在整个运行过程中独占计算机全部资源,整个程序运行的过程就非常简单了,管理起来也非常容易。就象整个一套房子住了一个人,他想看电视就看电视,想去卫生间就去卫生间,没人和他抢占资源。但为了提高资源利用率和系统处理能力,现代计算机系统都是多道程序系统,即多道程序并发执行。程序的并发执行带来了一些新的问题,如资源的共享与竞争,它会改变程序的执行速度。就象多个人同时住一套房子,当你想去卫生间的时候,如果此时卫生间里有人,你就得等待,影响了你的生活节奏。如果程序执行速度不当,就会导致程序的执行结果失去封闭性和可再现性,这是我们不希望看到的。因此应该采取措施来制约、控制各并发程序段的执行速度。由于程序是静态的,我们看到的程序是存储在存储介质上的,它无法反映出程序执行过程中的动态特性,而且程序在执行过程中是不断申请资源,程序作为共享资源的基本单位是不合适的,所以需要引入一个概念,它能描述程序的执行过程而且可以作为共享资源的基本单位,这个概念就是进程。
进程的生命周期
进程和人一样是有生命的,从诞生到死亡要经历若干个阶段。一般说来进程有三种状态:就绪、执行、等待。由多种原因可以导致创建一个进程,例如一个程序从外存调入内存开始执行,操作系统就要为其创建进程,当然还可以有其它原因,如一个应用进程为完成一个特殊的任务,可以自己创建一个子进程。进程被创建后就是在内存中,处于就绪状态,所谓就绪状态就是具备除了CPU之外的所有资源,万事具备,只欠东风,一旦占有了CPU,就变成了执行状态,执行中如果需要等待外围设备输入数据,则进程就沦落为等待状态,操作系统又会从就绪状态队列中调度一个进程占有CPU。等到数据到来后,等待状态的进程又被唤醒成为就绪状态。这些状态的转换是通过进程控制原语实现的。程序的运行是通过进程体现的,操作系统对进程进行管理和控制,那么操作系统怎么了解到进程的状态呢,怎么把资源分配给进程呢,而且进程做状态转换时CPU现场保存在那呢?这要说到PCB(进程控制快)。PCB是进程的唯一标志,在其中记录了进程的全部信息,它是一种记录型的数据结构,相当于进程的档案。操作系统就通过PCB感知进程的存在,通过PCB了解进程和控制进程的运行。PCB也是放在内存中的,如果PCB太大,有些系统把PCB中一些不重要的信息放在外存中。
进程执行速度的制约
并发进程由于共享系统内部资源,因此导致进程执行速度上的制约,这种制约分为:间接制约与直接制约。间接制约引起进程之间的互斥执行,直接制约引起进程间的同步执行。例如一个家里如果只有一个卫生间,卫生间这个公有资源使得每个人只能互斥使用它,这就是间接制约。而直接制约是指并发进程各自执行的结果互为对方的执行条件,例如司机与售票员的关系,当司机到站停车后,售票员才能开门,而只有售票员关门后,司机才能开车,他们之间是同步的。进程的互斥与同步可以很好的通过信号量和PV原语来实现。通过读一些同步与互斥的例子,你会体会到PV原语的精妙,也会感到一种乐趣。并发进程的资源竞争不当还会导致死锁现象。
http://www.usbuse.com/html/ittxmcsy/140743404.html
提起进程这个概念,让很多经常使用计算机的人感到陌生,其实我们经常和它打交道,只要在计算机上运行一个程序,相应的一个进程就诞生了,而且它伴随着整个操作过程,直到程序终止。进程在操作系统中是一个非常抽象、非常重要、非常难以理解的概念。对进程概念的深入透彻的理解,有助于理解操作系统中的各种机制原理。
为什么要引入进程概念
提起程序这个概念,大家再也熟悉不过了,程序与进程概念是不可分的。程序是为了完成某项任务编排的语句序列,它告诉计算机如何执行,因此程序是需要运行的。程序运行过程中需要占有计算机的各种资源才能运行下去。如果任一时刻,系统中只有一道程序,即单道程序系统,程序则在整个运行过程中独占计算机全部资源,整个程序运行的过程就非常简单了,管理起来也非常容易。就象整个一套房子住了一个人,他想看电视就看电视,想去卫生间就去卫生间,没人和他抢占资源。但为了提高资源利用率和系统处理能力,现代计算机系统都是多道程序系统,即多道程序并发执行。程序的并发执行带来了一些新的问题,如资源的共享与竞争,它会改变程序的执行速度。就象多个人同时住一套房子,当你想去卫生间的时候,如果此时卫生间里有人,你就得等待,影响了你的生活节奏。如果程序执行速度不当,就会导致程序的执行结果失去封闭性和可再现性,这是我们不希望看到的。因此应该采取措施来制约、控制各并发程序段的执行速度。由于程序是静态的,我们看到的程序是存储在存储介质上的,它无法反映出程序执行过程中的动态特性,而且程序在执行过程中是不断申请资源,程序作为共享资源的基本单位是不合适的,所以需要引入一个概念,它能描述程序的执行过程而且可以作为共享资源的基本单位,这个概念就是进程。
进程的生命周期
进程和人一样是有生命的,从诞生到死亡要经历若干个阶段。一般说来进程有三种状态:就绪、执行、等待。由多种原因可以导致创建一个进程,例如一个程序从外存调入内存开始执行,操作系统就要为其创建进程,当然还可以有其它原因,如一个应用进程为完成一个特殊的任务,可以自己创建一个子进程。进程被创建后就是在内存中,处于就绪状态,所谓就绪状态就是具备除了CPU之外的所有资源,万事具备,只欠东风,一旦占有了CPU,就变成了执行状态,执行中如果需要等待外围设备输入数据,则进程就沦落为等待状态,操作系统又会从就绪状态队列中调度一个进程占有CPU。等到数据到来后,等待状态的进程又被唤醒成为就绪状态。这些状态的转换是通过进程控制原语实现的。程序的运行是通过进程体现的,操作系统对进程进行管理和控制,那么操作系统怎么了解到进程的状态呢,怎么把资源分配给进程呢,而且进程做状态转换时CPU现场保存在那呢?这要说到PCB(进程控制快)。PCB是进程的唯一标志,在其中记录了进程的全部信息,它是一种记录型的数据结构,相当于进程的档案。操作系统就通过PCB感知进程的存在,通过PCB了解进程和控制进程的运行。PCB也是放在内存中的,如果PCB太大,有些系统把PCB中一些不重要的信息放在外存中。
进程执行速度的制约
并发进程由于共享系统内部资源,因此导致进程执行速度上的制约,这种制约分为:间接制约与直接制约。间接制约引起进程之间的互斥执行,直接制约引起进程间的同步执行。例如一个家里如果只有一个卫生间,卫生间这个公有资源使得每个人只能互斥使用它,这就是间接制约。而直接制约是指并发进程各自执行的结果互为对方的执行条件,例如司机与售票员的关系,当司机到站停车后,售票员才能开门,而只有售票员关门后,司机才能开车,他们之间是同步的。进程的互斥与同步可以很好的通过信号量和PV原语来实现。通过读一些同步与互斥的例子,你会体会到PV原语的精妙,也会感到一种乐趣。并发进程的资源竞争不当还会导致死锁现象。
http://www.usbuse.com/html/ittxmcsy/140743404.html
前言:
PHP中对各类数据库的操作有着支持,对文件的操作也同样有着很丰富的操作方法,很多朋友现在的操作还是基于文件操作
可是有的时候在操作文件的时候还存在不少的困惑和疑点,以下是我在日常编写过程中碰到的以及坛上朋友所碰到的关于文件操
作的一些问题收藏吧。
问:如何新建一个文件?
答:1、使用fopen("要建立的文件名","参数"),参数可选 w,w+,a,a+
2、使用exec("echo '' > 要建立的文件名");这样是使用系统方式建立这个文件,你还可以使用touch这个linux命令来建立
问:为什么我无法建立文件?
答:1、如果你使用了fopen建立文件,是否正确的使用了参数
2、系统权限问题,请询问你的WEBMASTER你的FTP目录是否有写的权限
3、FTP权限问题,你要确认你的PHP文件所要写文件所在目录要有写的权限,也就是你的FTP软件登陆后other组要有写这个权限,
如果没有请修改权限后尝试
问:如何将文件读入数组?
答:使用file
问:如何将文件全部读出?
答:1、使用fread($fp);
2、如果你的PHP版本>=4.3.0的话可以使用file_get_contents();
问:如何判断文件是否存在?
答:使用file_exists();为什么不使用fopen()来判断呢?原因是有时候是因为权限问题导致fopen返回的数据引导我们错误的判断
问:为什么当我读取一个WEB页面的时候出错?
答:1、可能是你的传递参数错,当读取WEB页面的时候你只可以使用r方式读取页面
2、确保你要读取的WEB页面可以访问
问:我如何才能获得文件的相关属性?
答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用
请参阅手册。
问:PHP打开文件后是否可以象C一样进行文件“游标”的定位呢?
答:可以的,使用fseek();
问:我想在访问文件的时候不允许其他人也访问此文件,怎么办?
答:1、你可以采用其他方面程序限制用户接入文件操作的页面
2、使用flock();详细的参数以及使用方法请参阅手册
问:如何删除文件内第一行,或指定一行数据?
答:PHP并没有提供这样的操作方法,不过我们可以通过组合使用,以下代码演示我们将删除文件"test.dat"中的第三行数据(test.datw
文件中数据不止三行)
<?php
$filename="test.dat";//定义操作文件
$delline=3; //要删除的行数
if(!file_exsits($filename)){
die("指定文件未发现!操作中断!");
}
$farray=file($filename);//读取文件数据到数组中
for($tmpa=0;$Tmpa<count($farray);$Tmpa++){
if(strcmp($Tmpa+1,$delline)==0){
//判断删除的行
continue;
}
//重新整理后的数据
$newfp.=$farray[$Tmpa]."\r\n";
}
$fp=@fopen($filename,"a") or die("写方式打开文件 $filename 失败");//我们以写的方式打开文件
@fputs($fp,$newfp) or die("文件写入失败");
@fclose($fp);
?>
以上代码演示的是删除一行文件,不过你如果仔细的看的话,其实也给你提供了其他的文件操作的相关提醒~
问:当我试图打开一个不存在的文件的时候,我如何不让错误显示出来以避免我的路径泄露!!
答:在你要打开文件的方法前增加@符号用来屏蔽错误,@是PHP提供的错误信息屏蔽的专用符号
或您可以在这个要操作的步骤前增加(通常是在页首)error_reporting(0);用来屏蔽页面内所有错误信息的显示
一个不推荐的方法就是去修改php.ini(ISP除外)
问:我使用的是虚拟主机,我如何防止其他用户窃取我的数据?
答:建议ISP修改php.ini中的open_basedir进行限制,
不推荐的ISP设置是将fopen,file等文件操作加入disable_function中。
问:为什么我用PHP建立文件后我FTP登陆要删除这些文件无法删除??
答:主要是因为PHP建立的文件归属WEB用户组,也就是建立的文件,并非是你FTP用户的!!!
这个问题的解决就是,使用PHP程序的chmod,unlink等方式进行处理,建议用户在使用PHP建立文件的时候
记得chmod文件权限,建议为777
问:如何使用文本文件作为数据仓库?有的留言本,论坛之类的都是使用这个的啊!
答:其实这个主要还是使用了file,结合explode进行数据读取与分割的典型范例而已。
问:如何更改文件名?
答:rename();
问:如何删除文件?
答:unlink(); exec("del(rm -vf) filename");注:rm -vf为linux下使用
问:如何清空文件?
答:使用fopen(filename,"w");或exec("echo '' > filename");
问:如何编辑文件内容?
答:我记得我以前回答过一个删除文件内容的,其实编辑内容在删除内容的基础上,进行变量替换就可以了。
希望你可以向上找找,将我上面的continue修改为替换变量数据就可以了:)
----------------------------------------------------
以上是我个人对文件操作的相关总结
说明:本篇文章我觉得对初学PHP文件操作方面应该有点帮助,作者:杨宗威 首发地:CSDN 作者转发地:DEV-CLUB
看这里没就再发一次(毕竟写出来就希望能对大家有点帮助)
PHP中对各类数据库的操作有着支持,对文件的操作也同样有着很丰富的操作方法,很多朋友现在的操作还是基于文件操作
可是有的时候在操作文件的时候还存在不少的困惑和疑点,以下是我在日常编写过程中碰到的以及坛上朋友所碰到的关于文件操
作的一些问题收藏吧。
问:如何新建一个文件?
答:1、使用fopen("要建立的文件名","参数"),参数可选 w,w+,a,a+
2、使用exec("echo '' > 要建立的文件名");这样是使用系统方式建立这个文件,你还可以使用touch这个linux命令来建立
问:为什么我无法建立文件?
答:1、如果你使用了fopen建立文件,是否正确的使用了参数
2、系统权限问题,请询问你的WEBMASTER你的FTP目录是否有写的权限
3、FTP权限问题,你要确认你的PHP文件所要写文件所在目录要有写的权限,也就是你的FTP软件登陆后other组要有写这个权限,
如果没有请修改权限后尝试
问:如何将文件读入数组?
答:使用file
问:如何将文件全部读出?
答:1、使用fread($fp);
2、如果你的PHP版本>=4.3.0的话可以使用file_get_contents();
问:如何判断文件是否存在?
答:使用file_exists();为什么不使用fopen()来判断呢?原因是有时候是因为权限问题导致fopen返回的数据引导我们错误的判断
问:为什么当我读取一个WEB页面的时候出错?
答:1、可能是你的传递参数错,当读取WEB页面的时候你只可以使用r方式读取页面
2、确保你要读取的WEB页面可以访问
问:我如何才能获得文件的相关属性?
答:PHP提供了一组获得文件属性的方法,例如 filemtime(),fileowner(),filegroup(),filectime(),fileatime()...详细的使用
请参阅手册。
问:PHP打开文件后是否可以象C一样进行文件“游标”的定位呢?
答:可以的,使用fseek();
问:我想在访问文件的时候不允许其他人也访问此文件,怎么办?
答:1、你可以采用其他方面程序限制用户接入文件操作的页面
2、使用flock();详细的参数以及使用方法请参阅手册
问:如何删除文件内第一行,或指定一行数据?
答:PHP并没有提供这样的操作方法,不过我们可以通过组合使用,以下代码演示我们将删除文件"test.dat"中的第三行数据(test.datw
文件中数据不止三行)
<?php
$filename="test.dat";//定义操作文件
$delline=3; //要删除的行数
if(!file_exsits($filename)){
die("指定文件未发现!操作中断!");
}
$farray=file($filename);//读取文件数据到数组中
for($tmpa=0;$Tmpa<count($farray);$Tmpa++){
if(strcmp($Tmpa+1,$delline)==0){
//判断删除的行
continue;
}
//重新整理后的数据
$newfp.=$farray[$Tmpa]."\r\n";
}
$fp=@fopen($filename,"a") or die("写方式打开文件 $filename 失败");//我们以写的方式打开文件
@fputs($fp,$newfp) or die("文件写入失败");
@fclose($fp);
?>
以上代码演示的是删除一行文件,不过你如果仔细的看的话,其实也给你提供了其他的文件操作的相关提醒~
问:当我试图打开一个不存在的文件的时候,我如何不让错误显示出来以避免我的路径泄露!!
答:在你要打开文件的方法前增加@符号用来屏蔽错误,@是PHP提供的错误信息屏蔽的专用符号
或您可以在这个要操作的步骤前增加(通常是在页首)error_reporting(0);用来屏蔽页面内所有错误信息的显示
一个不推荐的方法就是去修改php.ini(ISP除外)
问:我使用的是虚拟主机,我如何防止其他用户窃取我的数据?
答:建议ISP修改php.ini中的open_basedir进行限制,
不推荐的ISP设置是将fopen,file等文件操作加入disable_function中。
问:为什么我用PHP建立文件后我FTP登陆要删除这些文件无法删除??
答:主要是因为PHP建立的文件归属WEB用户组,也就是建立的文件,并非是你FTP用户的!!!
这个问题的解决就是,使用PHP程序的chmod,unlink等方式进行处理,建议用户在使用PHP建立文件的时候
记得chmod文件权限,建议为777
问:如何使用文本文件作为数据仓库?有的留言本,论坛之类的都是使用这个的啊!
答:其实这个主要还是使用了file,结合explode进行数据读取与分割的典型范例而已。
问:如何更改文件名?
答:rename();
问:如何删除文件?
答:unlink(); exec("del(rm -vf) filename");注:rm -vf为linux下使用
问:如何清空文件?
答:使用fopen(filename,"w");或exec("echo '' > filename");
问:如何编辑文件内容?
答:我记得我以前回答过一个删除文件内容的,其实编辑内容在删除内容的基础上,进行变量替换就可以了。
希望你可以向上找找,将我上面的continue修改为替换变量数据就可以了:)
----------------------------------------------------
以上是我个人对文件操作的相关总结
说明:本篇文章我觉得对初学PHP文件操作方面应该有点帮助,作者:杨宗威 首发地:CSDN 作者转发地:DEV-CLUB
看这里没就再发一次(毕竟写出来就希望能对大家有点帮助)
int name_order_size = book.m_MemberCount > 0 ? (book.m_GroupCount > book.m_MemberCount ? book.m_GroupCount : book.m_MemberCount):book.m_GroupCount > 0 ? book.m_GroupCount : 0;
showgrouplist.cpp 80行!
showgrouplist.cpp 80行!
ret5 = code_convert(MAIL_CODE_FROM, MAIL_CODE_TO, (char*)(LPCSTR)txtbody, strlen((LPCSTR)txtbody), body_dest, blen);
int code_convert(char *from_charset, char *to_charset,
char *input, int inlen,
char *output,int outlen)
{
if(!input || !(*input))
{
return -3;
}
size_t len_in = inlen;
size_t len_out = outlen;
const char *p_in = input;
char *p_out = output;
iconv_t cd;
cd = iconv_open(to_charset,from_charset);
if (cd==0) return -2;
memset(output,0,outlen);
if (iconv(cd, &p_in, &len_in, &p_out, &len_out)==-1) return -1;
iconv_close(cd);
return 0;
}
void CSinaMail::DirectReadMsg(LPCSTR para,LPCSTR cgi_url,CStr& msg,CStr& from,CStr& to,CStr& date,CStr& cc,CStr& subject,CStr& txtbody,CStr& msgbody,CStr& reply, int msgbody_inc_attach) {
CStr abmsg,charset,body,mime,tmp,htmlbody,base,link;
int charsetLen = 0;
//get mail file absolute path
AbMsg(abmsg,(LPCSTR)msg);
if(!IsDir(m_mimedir)) mkdir(m_mimedir,0700);
CMimeMail mimeMail;
LPCSTR lpFileName=mimeMail.OpenFile((LPCSTR)abmsg);
CAttachmentList attachmentList;
mimeMail.ReadMail((LPSTR)lpFileName, body, attachmentList);
HandleAttachmenList(attachmentList,para,cgi_url,m_mimedir);
if(!body.IsEmpty()) {
charset.MidStr((LPCSTR)body,0,"\n");
txtbody.MidStr((LPCSTR)body,"\n",0);
charsetLen = strlen((LPCSTR)charset);
MsgTxtContentToHtml(cgi_url,para,(LPCSTR)txtbody,msgbody);
}
if(!msgbody.IsEmpty())
{
msgbody.ReplaceAll("<", "<");
msgbody.ReplaceAll(">", ">");
}
CAttachment* pAtt;
int num=attachmentList.GetCount();
for(int i=0;i<num;i++) {
pAtt=attachmentList.GetItem(i);
if (pAtt->m_nDisplayOrNot==0) continue; //if not need display
if (pAtt->m_nDisplayOrNot==2 && msgbody=="") { //if is html content
mime.Format("%s/%s",(LPCSTR)m_mimedir,(LPCSTR)pAtt->m_cstrFileName);
CTmpl htmlfile((LPCSTR)mime);
htmlbody="<pre>";
htmlbody=htmlbody + (CStr)htmlfile;
htmlbody=htmlbody + "</pre>";
base.MidStrI((LPCSTR)htmlbody,"<BASE",">",1);
LPCSTR body=htmlbody.FindI("<HTML");
if(body) body=strchr(body,'>');
if(body) htmlbody=body+1;
htmlbody.ReplaceI("<body","<xbody");
htmlbody.ReplaceIAll("</BODY>","</xbody>");
htmlbody.ReplaceIAll("</HTML>","");
htmlbody.ReplaceIAll("<SCRIPT","<COMMENT");
htmlbody.ReplaceIAll("</SCRIPT>","</COMMENT>");
if(pAtt->m_nCharSet==HZ_CODE) CheckForHZString(htmlbody);
if (txtbody.IsEmpty())
{
txtbody=htmlbody;
char* des=(char*)calloc(1,txtbody.GetLength());
parsetext(des,(char*)(LPCSTR)txtbody);
txtbody=des;
free(des);
}
// 4. add div
//add by liulei, output base_mark in mail content
msgbody+="<DIV>";
if(!base.IsEmpty()) { // include base
msgbody+="<base";
msgbody+=base;
msgbody+=">";
msgbody+=htmlbody;
msgbody+="</DIV>";
msgbody+="<BASE href=";
msgbody+=cgi_url;
msgbody+=">";
} else {
msgbody+=htmlbody;
msgbody+="</DIV>";
}
//add end
continue;
}
CStr strFujian;
strFujian = "附件";
toLink((LPCSTR)pAtt->m_cstrFileName,link);
CStr fit_displayName(pAtt->m_lpszDisplayName);
repBadchar(fit_displayName);
CStr displayName;
toLink(fit_displayName, displayName);
//2005-11-5 add by zhirui 过滤无效的类型
CStr tmpStr1;
CStrList tmpList1;
if(pAtt->m_lpszType.FindI("application/") && pAtt->m_lpszType.FindI("name="))
{
pAtt->m_lpszType.ReplaceAll(" ", "");
pAtt->m_lpszType.Split("name=", tmpList1);
if(tmpList1.GetCount() == 2)
{
pAtt->m_lpszType.Format("%s", (LPCSTR)*tmpList1.GetItem(0));
//
//pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/vnd.ms-excel");
}
else
{
if(pAtt->m_lpszType.FindI("vnd.ms-excelname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/vnd.ms-excel");
}
else if(pAtt->m_lpszType.FindI("x-excelname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/x-excel");
}
else if(pAtt->m_lpszType.FindI("mswordname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/msword");
}
}
}
//changed by zhirui 2005-10-11
if(msgbody_inc_attach == 1)
{
tmp.Format("<BR><BR>\n--------------------------------------------------<BR>\n%s:<a href='/cgi-bin/email/webmailbox/attachment.cgi/%s/%s/%s/%s/%s'>%s</a>(%s, %ld bytes) <BR>\n--------------------------------------------------<BR>\n", (LPCSTR)strFujian, para, (LPCSTR)pAtt->m_lpszType, (LPCSTR)link, (LPCSTR)displayName, (LPCSTR)displayName, (LPCSTR)pAtt->m_lpszDisplayName, (LPCSTR)pAtt->m_lpszType,pAtt->m_nFileSize);
}
msgbody += tmp;
}
if(charsetLen > 30)
{
charset.Empty();
charset.Format("%s", "gb2312");
}
//+20080124 add get msgId from mail head
mimeMail.GetHeader("Message-ID", this->msgIdStr,(LPCSTR)charset);
mimeMail.GetHeader("X-Mailer", this->xMailerStr,(LPCSTR)charset);
mimeMail.GetHeader("from",from,(LPCSTR)charset);
mimeMail.GetHeader("to",to,(LPCSTR)charset);
mimeMail.GetHeader("subject",subject,(LPCSTR)charset);
mimeMail.GetHeader("cc",cc,(LPCSTR)charset);
mimeMail.GetHeader("date",date,(LPCSTR)charset);
GetStandardTime(8,date);
mimeMail.GetHeader("disposition-notification-to",reply,(LPCSTR)charset);
if(reply.IsEmpty())
mimeMail.GetHeader("Return-Receipt-To",reply,(LPCSTR)charset);
}
int code_convert(char *from_charset, char *to_charset,
char *input, int inlen,
char *output,int outlen)
{
if(!input || !(*input))
{
return -3;
}
size_t len_in = inlen;
size_t len_out = outlen;
const char *p_in = input;
char *p_out = output;
iconv_t cd;
cd = iconv_open(to_charset,from_charset);
if (cd==0) return -2;
memset(output,0,outlen);
if (iconv(cd, &p_in, &len_in, &p_out, &len_out)==-1) return -1;
iconv_close(cd);
return 0;
}
void CSinaMail::DirectReadMsg(LPCSTR para,LPCSTR cgi_url,CStr& msg,CStr& from,CStr& to,CStr& date,CStr& cc,CStr& subject,CStr& txtbody,CStr& msgbody,CStr& reply, int msgbody_inc_attach) {
CStr abmsg,charset,body,mime,tmp,htmlbody,base,link;
int charsetLen = 0;
//get mail file absolute path
AbMsg(abmsg,(LPCSTR)msg);
if(!IsDir(m_mimedir)) mkdir(m_mimedir,0700);
CMimeMail mimeMail;
LPCSTR lpFileName=mimeMail.OpenFile((LPCSTR)abmsg);
CAttachmentList attachmentList;
mimeMail.ReadMail((LPSTR)lpFileName, body, attachmentList);
HandleAttachmenList(attachmentList,para,cgi_url,m_mimedir);
if(!body.IsEmpty()) {
charset.MidStr((LPCSTR)body,0,"\n");
txtbody.MidStr((LPCSTR)body,"\n",0);
charsetLen = strlen((LPCSTR)charset);
MsgTxtContentToHtml(cgi_url,para,(LPCSTR)txtbody,msgbody);
}
if(!msgbody.IsEmpty())
{
msgbody.ReplaceAll("<", "<");
msgbody.ReplaceAll(">", ">");
}
CAttachment* pAtt;
int num=attachmentList.GetCount();
for(int i=0;i<num;i++) {
pAtt=attachmentList.GetItem(i);
if (pAtt->m_nDisplayOrNot==0) continue; //if not need display
if (pAtt->m_nDisplayOrNot==2 && msgbody=="") { //if is html content
mime.Format("%s/%s",(LPCSTR)m_mimedir,(LPCSTR)pAtt->m_cstrFileName);
CTmpl htmlfile((LPCSTR)mime);
htmlbody="<pre>";
htmlbody=htmlbody + (CStr)htmlfile;
htmlbody=htmlbody + "</pre>";
base.MidStrI((LPCSTR)htmlbody,"<BASE",">",1);
LPCSTR body=htmlbody.FindI("<HTML");
if(body) body=strchr(body,'>');
if(body) htmlbody=body+1;
htmlbody.ReplaceI("<body","<xbody");
htmlbody.ReplaceIAll("</BODY>","</xbody>");
htmlbody.ReplaceIAll("</HTML>","");
htmlbody.ReplaceIAll("<SCRIPT","<COMMENT");
htmlbody.ReplaceIAll("</SCRIPT>","</COMMENT>");
if(pAtt->m_nCharSet==HZ_CODE) CheckForHZString(htmlbody);
if (txtbody.IsEmpty())
{
txtbody=htmlbody;
char* des=(char*)calloc(1,txtbody.GetLength());
parsetext(des,(char*)(LPCSTR)txtbody);
txtbody=des;
free(des);
}
// 4. add div
//add by liulei, output base_mark in mail content
msgbody+="<DIV>";
if(!base.IsEmpty()) { // include base
msgbody+="<base";
msgbody+=base;
msgbody+=">";
msgbody+=htmlbody;
msgbody+="</DIV>";
msgbody+="<BASE href=";
msgbody+=cgi_url;
msgbody+=">";
} else {
msgbody+=htmlbody;
msgbody+="</DIV>";
}
//add end
continue;
}
CStr strFujian;
strFujian = "附件";
toLink((LPCSTR)pAtt->m_cstrFileName,link);
CStr fit_displayName(pAtt->m_lpszDisplayName);
repBadchar(fit_displayName);
CStr displayName;
toLink(fit_displayName, displayName);
//2005-11-5 add by zhirui 过滤无效的类型
CStr tmpStr1;
CStrList tmpList1;
if(pAtt->m_lpszType.FindI("application/") && pAtt->m_lpszType.FindI("name="))
{
pAtt->m_lpszType.ReplaceAll(" ", "");
pAtt->m_lpszType.Split("name=", tmpList1);
if(tmpList1.GetCount() == 2)
{
pAtt->m_lpszType.Format("%s", (LPCSTR)*tmpList1.GetItem(0));
//
//pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/vnd.ms-excel");
}
else
{
if(pAtt->m_lpszType.FindI("vnd.ms-excelname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/vnd.ms-excel");
}
else if(pAtt->m_lpszType.FindI("x-excelname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/x-excel");
}
else if(pAtt->m_lpszType.FindI("mswordname="))
{
pAtt->m_lpszType.ReplaceAll((LPCSTR)pAtt->m_lpszType, "application/msword");
}
}
}
//changed by zhirui 2005-10-11
if(msgbody_inc_attach == 1)
{
tmp.Format("<BR><BR>\n--------------------------------------------------<BR>\n%s:<a href='/cgi-bin/email/webmailbox/attachment.cgi/%s/%s/%s/%s/%s'>%s</a>(%s, %ld bytes) <BR>\n--------------------------------------------------<BR>\n", (LPCSTR)strFujian, para, (LPCSTR)pAtt->m_lpszType, (LPCSTR)link, (LPCSTR)displayName, (LPCSTR)displayName, (LPCSTR)pAtt->m_lpszDisplayName, (LPCSTR)pAtt->m_lpszType,pAtt->m_nFileSize);
}
msgbody += tmp;
}
if(charsetLen > 30)
{
charset.Empty();
charset.Format("%s", "gb2312");
}
//+20080124 add get msgId from mail head
mimeMail.GetHeader("Message-ID", this->msgIdStr,(LPCSTR)charset);
mimeMail.GetHeader("X-Mailer", this->xMailerStr,(LPCSTR)charset);
mimeMail.GetHeader("from",from,(LPCSTR)charset);
mimeMail.GetHeader("to",to,(LPCSTR)charset);
mimeMail.GetHeader("subject",subject,(LPCSTR)charset);
mimeMail.GetHeader("cc",cc,(LPCSTR)charset);
mimeMail.GetHeader("date",date,(LPCSTR)charset);
GetStandardTime(8,date);
mimeMail.GetHeader("disposition-notification-to",reply,(LPCSTR)charset);
if(reply.IsEmpty())
mimeMail.GetHeader("Return-Receipt-To",reply,(LPCSTR)charset);
}
function checkSelectedNum(){
var num = 0;
var items = document.forum_admin.elements;
for(var i = 0, len = items.length; i < len; i++){
if(items[i].type == "checkbox" && items[i].name != "checkall" && items[i].name != "checkall2"){
if(items[i].checked)
num++;
}
}
return num;
}
function deleteitem()
{
if(checkSelectedNum() == 0){
window.alert("请至少选中一个选择框后再点击该功能!");
return;
}
if(confirm('确认删除么'))
{
document.forum_admin.action.value = "delete";
document.forum_admin.submit();
}
}
var img = window.document.getElementById("mylogo");
if(!img){
window.alert("请上传你自己的logo图片,然后再设置此项!");
return;
}
var num = 0;
var items = document.forum_admin.elements;
for(var i = 0, len = items.length; i < len; i++){
if(items[i].type == "checkbox" && items[i].name != "checkall" && items[i].name != "checkall2"){
if(items[i].checked)
num++;
}
}
return num;
}
function deleteitem()
{
if(checkSelectedNum() == 0){
window.alert("请至少选中一个选择框后再点击该功能!");
return;
}
if(confirm('确认删除么'))
{
document.forum_admin.action.value = "delete";
document.forum_admin.submit();
}
}
var img = window.document.getElementById("mylogo");
if(!img){
window.alert("请上传你自己的logo图片,然后再设置此项!");
return;
}
http://news.qq.com/a/20080512/002651.htm
中国地震局刚刚发布公告:北京时间08年05月12日14点30分左右北京局部地区发生2级轻微地震,另警告在08年05月12日晚上22点至24点时间段北京局部地区还会有2-6级地震,望大家提前做预防措施! (中国地震局)
http://news.sina.com.cn/c/2008-05-12/153715522678.shtml
中国地震局刚刚发布公告:北京时间08年05月12日14点30分左右北京局部地区发生2级轻微地震,另警告在08年05月12日晚上22点至24点时间段北京局部地区还会有2-6级地震,望大家提前做预防措施! (中国地震局)
http://news.sina.com.cn/c/2008-05-12/153715522678.shtml
CCTV.com消息(15点新闻):来自国家地震局的最新消息,今天14点28分,四川汶川县发生7.6级地震,具体位置在成都附近温江西北55公里(北纬31度,东经103。4度)。而我们刚刚从各种渠道得到消息,重庆、湖南、湖北、山西、陕西、河北、北京等地都有震感。
有关地震的最新消息,我们将随时为您进行报道。
有关地震的最新消息,我们将随时为您进行报道。
简单一维数组用smary输出:
Template to output $myArray in an un-ordered list
用模板以无序列表输出$myArray
上例将输出:
==============================================
PHP:
smarty:
模板:
PHP:
便于记忆:
假如php中有:
$tpl -> assign("array",$array);//array在模板里面变为from $array
在模板里面:
注意:foreach在foreach里没有$,在取值的时候就有了,array在模板里面变为有$
Template to output $myArray in an un-ordered list
用模板以无序列表输出$myArray
上例将输出:
==============================================
PHP:
smarty:
模板:
PHP:
便于记忆:
假如php中有:
$tpl -> assign("array",$array);//array在模板里面变为from $array
在模板里面:
注意:foreach在foreach里没有$,在取值的时候就有了,array在模板里面变为有$
<?php
header("Content-type: text/html; charset=utf-8");
?>
在前面加上一个这个玩意就可以了。。。!不用修改apache的设置!
如果你在网上搜索 “apache配置”,搜到的页面大多都会建议你在httpd.conf中加上这么一句:AddDefaultCharset GB2312。对于新手而且是只用GB2312编码的开发人来说,这么做是ok的。
但是如果要想使用UTF-8字符集的话,比如 在test.php文件中需要有
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" 这段代码。这时你再打开浏览器访问test.php页面的话,你看到的是正确的页面。但是如果实际上浏览器还是以GB2312编码解释从服务器返回的response,为什么呢?原因是浏览器是根据http应答消息头部中的 Content-type: text/html; charset=GB2312 来决定使用何种编码解释应答,也就是说apache服务器仍然用GB2312编码传递数据。
所以说如果apache的默认字符集被设置成了GB2312,即使在页面中声明使用UTF-8编码,apache服务器还是会按照GB2312编码来传送http response。
没关系,我们把AddDefaultCharset GB2312 改成 AddDefaultCharset UTF-8,看看什么结果?如果你看到乱码恭喜你,你还知道是乱码问题;如果你看到是空白页面,那么你就惨了,你可能会以为这是其他什么原因造成的,而不会从编码的角度去考虑怎么解决问题。这是为什么?
原因在于php文件本身是用系统字符集来编码的,中文的windows XP都是用GB2312,每一个文件头部都有字段指示该文件是用何种方式编码的。当apache接到浏览器的请求后,会让php去解释所请求的页面,比如 test.php。php会识别出test.php的编码方式是GB2312后(就像我们用javac编译java源文件时,编译器默认用系统编码读源文件里的内容。如果源文件不是用系统编码来保存的,可以用命令javac -encoding指定具体的编码),把数据以GB2312的编码格式传递给apache,而apache服务器不会改变从php传来的数据,只是在应答消息头部中把字符集设置成UTF-8: Content-type: text/html; charset=UTF-8. 也就是说你传递的是GB2312编码的数据,而浏览器却以UTF-8编码来解释应答消息。
由于UTF-8为3个字节表示一个汉子,而普通的GB2312或BIG5是两个。页面输出时,由于上述原因,出现半个汉字的情况,这时该半个汉字会和的 >结合成一个乱码字,导致IE无法读完的话,会发现实际上整个叶面全部已经输出了。如果使用的是Mozilla、Mozilla Firefox、Sarafi的浏览器这不会造成这个问题,而是一堆乱码。这是由于Firefox浏览器和IE解析网页编码的策略不同产生的。
OK,我们把test.php以UTF-8保存,再用浏览器访问时,就没有问题了。可这样做,会使得apache目录下的所有web应用只能用同一种编码。如何搞定?
解决办法:
首先,可以使用AddDefaultCharset off来关闭默认文件编码,这样apache服务器就不会在http应答消息头部设置charset,只是设置Content-type: text/html. 而浏览器就会依靠html文件中设置的harset来决定编码。其次,脚本php.ini文件中的default_charset = “UTF-8″作用同httpd.conf文件,把该行注释掉,使php自动识别文件的编码方式。
这样不论你用什么编码方式,只要test.php中的
meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ 与你test.php文件编码方式相同,就不会产生乱码问题。
用户提交数据的编码
浏览器提交的字符编码由客户端的characher encoding决定。例如,当前浏览器的编码是Gb2312,用户提交数据后,无论apache设置的编码方式是GB2312还是UTF-8,这时在服务器端接收到的仍是以Gb2312编码的数据。如果要在返回页面上显示用户刚才提交的数据,而该页面是用UTF-8编码的,或者要在数据库中存储的用户提交的数据,而数据库是UTF-8编码的,那就要做字符转换了。
照著 Jedi 翻譯的 Moveable 安裝手冊,會幫您做好 UTF-8 編碼必備的設定及更新,進入管理模式及寫文章都正常,但是可能會發生發布出去的文章在瀏覽器上看變成亂碼的問題。
這時就是 Apache 的預設 Charset 要改為 utf-8 了,只要修改 httpd.conf 裡的:
AddDefaultCharset utf-8
如此所有的網頁都會以預設 UTF-8 來瀏灠,但是問題來了!
1.如果你的網站裡的其它網頁都是 big5 怎麼辦?
2.虛擬主機商也不可能為了你一個網站改他主機預設的 charset
這時只要設定 httpd.conf 中您發布文章的目錄設定即可:
<Directory "/var/www/html/mt">
AddDefaultCharset utf-8
</Directory>
若是您是虛擬主機,您也可以請您的主機商在 Directory 目錄比照做此設定:
<Directory "/home/yourname/public_html">
AddDefaultCharset utf-8
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
若是您的 public_html 內有其它 big5 的網站,就要請您的虛擬主機商另外再幫您的 Moveable 開一個 Directory 設定囉!
header("Content-type: text/html; charset=utf-8");
?>
在前面加上一个这个玩意就可以了。。。!不用修改apache的设置!
如果你在网上搜索 “apache配置”,搜到的页面大多都会建议你在httpd.conf中加上这么一句:AddDefaultCharset GB2312。对于新手而且是只用GB2312编码的开发人来说,这么做是ok的。
但是如果要想使用UTF-8字符集的话,比如 在test.php文件中需要有
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" 这段代码。这时你再打开浏览器访问test.php页面的话,你看到的是正确的页面。但是如果实际上浏览器还是以GB2312编码解释从服务器返回的response,为什么呢?原因是浏览器是根据http应答消息头部中的 Content-type: text/html; charset=GB2312 来决定使用何种编码解释应答,也就是说apache服务器仍然用GB2312编码传递数据。
所以说如果apache的默认字符集被设置成了GB2312,即使在页面中声明使用UTF-8编码,apache服务器还是会按照GB2312编码来传送http response。
没关系,我们把AddDefaultCharset GB2312 改成 AddDefaultCharset UTF-8,看看什么结果?如果你看到乱码恭喜你,你还知道是乱码问题;如果你看到是空白页面,那么你就惨了,你可能会以为这是其他什么原因造成的,而不会从编码的角度去考虑怎么解决问题。这是为什么?
原因在于php文件本身是用系统字符集来编码的,中文的windows XP都是用GB2312,每一个文件头部都有字段指示该文件是用何种方式编码的。当apache接到浏览器的请求后,会让php去解释所请求的页面,比如 test.php。php会识别出test.php的编码方式是GB2312后(就像我们用javac编译java源文件时,编译器默认用系统编码读源文件里的内容。如果源文件不是用系统编码来保存的,可以用命令javac -encoding指定具体的编码),把数据以GB2312的编码格式传递给apache,而apache服务器不会改变从php传来的数据,只是在应答消息头部中把字符集设置成UTF-8: Content-type: text/html; charset=UTF-8. 也就是说你传递的是GB2312编码的数据,而浏览器却以UTF-8编码来解释应答消息。
由于UTF-8为3个字节表示一个汉子,而普通的GB2312或BIG5是两个。页面输出时,由于上述原因,出现半个汉字的情况,这时该半个汉字会和的 >结合成一个乱码字,导致IE无法读完的话,会发现实际上整个叶面全部已经输出了。如果使用的是Mozilla、Mozilla Firefox、Sarafi的浏览器这不会造成这个问题,而是一堆乱码。这是由于Firefox浏览器和IE解析网页编码的策略不同产生的。
OK,我们把test.php以UTF-8保存,再用浏览器访问时,就没有问题了。可这样做,会使得apache目录下的所有web应用只能用同一种编码。如何搞定?
解决办法:
首先,可以使用AddDefaultCharset off来关闭默认文件编码,这样apache服务器就不会在http应答消息头部设置charset,只是设置Content-type: text/html. 而浏览器就会依靠html文件中设置的harset来决定编码。其次,脚本php.ini文件中的default_charset = “UTF-8″作用同httpd.conf文件,把该行注释掉,使php自动识别文件的编码方式。
这样不论你用什么编码方式,只要test.php中的
meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ 与你test.php文件编码方式相同,就不会产生乱码问题。
用户提交数据的编码
浏览器提交的字符编码由客户端的characher encoding决定。例如,当前浏览器的编码是Gb2312,用户提交数据后,无论apache设置的编码方式是GB2312还是UTF-8,这时在服务器端接收到的仍是以Gb2312编码的数据。如果要在返回页面上显示用户刚才提交的数据,而该页面是用UTF-8编码的,或者要在数据库中存储的用户提交的数据,而数据库是UTF-8编码的,那就要做字符转换了。
照著 Jedi 翻譯的 Moveable 安裝手冊,會幫您做好 UTF-8 編碼必備的設定及更新,進入管理模式及寫文章都正常,但是可能會發生發布出去的文章在瀏覽器上看變成亂碼的問題。
這時就是 Apache 的預設 Charset 要改為 utf-8 了,只要修改 httpd.conf 裡的:
AddDefaultCharset utf-8
如此所有的網頁都會以預設 UTF-8 來瀏灠,但是問題來了!
1.如果你的網站裡的其它網頁都是 big5 怎麼辦?
2.虛擬主機商也不可能為了你一個網站改他主機預設的 charset
這時只要設定 httpd.conf 中您發布文章的目錄設定即可:
<Directory "/var/www/html/mt">
AddDefaultCharset utf-8
</Directory>
若是您是虛擬主機,您也可以請您的主機商在 Directory 目錄比照做此設定:
<Directory "/home/yourname/public_html">
AddDefaultCharset utf-8
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
若是您的 public_html 內有其它 big5 的網站,就要請您的虛擬主機商另外再幫您的 Moveable 開一個 Directory 設定囉!
谈谈新手如何学习PHP^_^
作者:默默
文章开头就列举了那么多联系方式,难免会让大家感觉有点AD的意味,但是不容质疑的是,默默的确有那么丁点的表现欲^_^,虽然有时候过于细致会被人说婆妈,但是幸好这种细致对于编程来说,还是蛮有益的!
从默默自己向别人问怎么学PHP开始,到后来不少人又来问默默怎么学PHP,不管默默是新手,还是老鸟,似乎总是感觉摸不出一条清晰的脉络来,不过,默默既然学会了PHP,那么我走的这条路或多或少的有一定借鉴性。
PHP的背景恐怕就不用默默赘言了,我相信大家选择一种语言,并不是看它的背景和悠久历史,更重要的是看它的实用性,华而不实的语言哪怕是再辉煌的历史,也毕将步向没落,可喜的是PHP经受住了考验,也因此,它确实是一种值得学习的语言。
默默一直是听从别人的经验长大的,也因此在前辈们的经验里让默默少走了许多的弯路,更快的步入了正规,在此向那些我至尽不知道其名字的前辈们道声谢谢,在默默的眼里,帮助不分大小,只要是帮助,总会让默默的心里暖融融的,我想,前辈们帮助我,并不是为了得到我的一句谢谢,更多的是出于一种责任感和对默默的期望,所以我想,只有学好PHP,才能对得起前辈们的汗水。
正如我所说的,默默也终于感觉到了一种责任感,默默不知道自己的经验到底能帮助新手多少,但是默默明白,现在到了履行责任的时候了,我有必要把自己的经验告诉给所有希望学好PHP的人,只有这样才能让中国的PHP不断的进步,不断的发展,在世界上占据一席之地。
默默学习PHP的这段期间,感觉国内的PHP环境越来越成熟,规范也在逐渐的健全,PHPCHINA的成立,标志着与官方直接挂钩的PHP机构在中国正式落户了,在此献上迟到的掌声!
好的,切入正题:
我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话:
默默的文章不会对您的学习起到实质性的作用,您能否成功,还得靠自己的,坚持,坚持,再坚持,就是步入成功的不二法门。
我先把我自己学习PHP的过程做一下概括:
(1)熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作完整的网页,对元素属性达到熟悉程度
(2)理解动态语言的概念,运做机制,熟悉PHP语法
(3)学习如何将PHP与HTML结合起来完成简单动态页面
(4)接触MYSQL,开始设计数据库程序
(5)不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板
(6)完成一个功能齐全的动态站点
我的这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,默默在此不得不对您稍微泼一下冷水,任何东西其实都不简单,即使是小吃部的烧饼也不是一下子就会做成的。
我先解释一下我的学习思路。
首先,理解网站这一概念之后不难看出,任何网站都是由网页组成的,也就是说想完成网站,必须先学会做网页,因此必须要掌握了HTML,才能为今后制作网站打下基础。
在学习HTML中我想边学边做是最有效的方式,当然这一方式对于学习PHP同样是最有效的。
HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的,我想大部分新手之所以觉得概念难学,大部分是一个字“懒”,懒是阻止进步的最大敌人,所以克服掉懒的习惯,才能更快的学好一样东西。
也许您在学习PHP的时候只想尽快的开发一个网站,也就会想我做网站,干嘛要学什么网页这些小儿科?不难看出,眼高手低的新手不在少数,这种思想无疑于建造空中楼阁,你不建地基,何来的房顶呢?
OK,掌握静态网页的制作技术是学习开发网站的先决条件,这一点就讲到这里,因为这篇文章不是教程文章,也就不对技术进行深入的刨析了。
我假设你目前已经可以完成一个静态页面了,当然,做的好看难看是另外一说,默默的第一个网页也没好看到哪去,但是“孩子”再丑,咱们做“爹妈”的也不能嫌弃不是?这毕竟是咱的成果。
那么咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的东西,在网页里显示的时候却是另外一码事?其实这并不算乱七八糟,你写的HTML代码不也一样是一堆堆的字符吗?毕竟,代码并不是作为直接输出的,而是经过处理的,说白了,HTML是经过HTML解析器,而PHP当然也就通过PHP解析器了,跟学习HTML一样的道理,想让任何的解析器完成操作,就必须使用它们专用的语法结构,所以PHP长相奇怪也就不足为奇了。
对于PHP的理解是新手最难迈过的一道门槛,不过你应该感到幸运的是PHP已经最大极限的为了新手而努力了,如果你学过其他的语言,也许会觉得PHP的确相当的简单,但是如果你之前什么都没学过,那么阿弥陀佛,硬着头皮琢磨吧。
书过三遍自然熟,这个简单的道理告诉我们,即使你理解不了PHP,但是也必须先跟它混个脸熟,看,一遍遍的看,看的同时一边琢磨,一边按照它所教的打代码,即使你搞不清楚那些代码到底是干嘛的,但是起码你应该找找感觉。
在一段挣扎之后,聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步。
搞清楚HTML和PHP的概念,那么PHP和HTML混合编程应该不成问题,在这期间,你完全可以让PHP给你算算 一加一等于几,然后在浏览器输出,不要觉得幼稚,这的确是跟阿波罗登月一样,你打的是一小段代码,但是对于你的编程之路,可是迈出了一大步啊!兴奋吧?但是不得不再给你泼点冷水,您还是菜鸟一个。
高兴一段时间就必须继续努力了,接下来就是学习数据库了,MYSQL可算是PHP的黄金搭档了,不过,虽然话是这么说,你也可能恨不得把MYSQL给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩。
头晕归头晕,目眩归目眩,你不可能吃饭的时候咬了自己一下舌头就从此不吃饭了不是?放下畏惧,继续努力,咱们是来征服它的,而不是被它征服的,振奋起来吧同志。
在一番搏斗之后,你终于理解了数据库的概念,而且让你兴奋不已的是你终于可以通过PHP来连接数据库了,这期间你是怎么学会的,我们不去考证了,但是事实证明,你已经可以了。
学会了PHP和数据库的你,无疑是左手拿着MOTOLOLA右手拿着NOKIA,要多潇洒,有多潇洒,哈哈,终于学会了,但是可能这个时候,又会有人不经意的拍拍肩膀对你说:哥们,别高兴的太早,你还是菜鸟,离学会还差着一大截呢!
等到你发奋努力的学会了用PHP成功的插入,删除,更新数据的时候,显然,你已经距离成功指日可待了。
这个时候的你也许是这种状态:
你会HTML吗?会,我能编好几个大表格排板的网页啦!
你会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦!
你会MYSQL吗?会,我会把我的信息在数据库里插入删除啦
那,接下来你该怎么做呢?我觉得,小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和HELLO WORLD有一比啊!^_^,同是新手面临的第一道关。
花了一段时间,你终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。
但是,你可能瞅瞅东,看看西,人家这个编论坛,那个CMS,还有那啥CRM,我啥时候写一个呢?
不要急,可以说你的马步已经扎的差不多了,接下来就要开始练把势的时候了,如果有条件的话,用笔或者打印一个简易的PHP手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。
再有条件的话,买本书看看吧,《PHP+MYSQL WEB开发(第三版)》号称圣经级,(也许是个不错的选择(声明:作者没给我啥好处费,我也不是书托,隔着大老远,我连他老兄的面都没见过的说-_-)
巩固了自己的知识,熟悉了PHP和MYSQL开发的要领之后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?当然,如果屋里还有鬼的话,也许是它写的-_-
这个时候,你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹是写了一个动态网站程序了,放在自己的网站上耍耍吧,让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下。
几天之后你再打开留言本,哎?哇,一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧!
你发奋努力,熟悉了安全方面的问题,然后又设计了一些程序,感觉还不错。
那么接下来,这就算学会啦?NO,NO,NO,还早呢,你至尽还没碰过OOP之类的吧?模板呢?
恩,学!加紧学呀学,学会了这些之后,你又学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后...
总而言之,你绝对不会发现你全部都学会了,一些真正的强人总会搞出新玩意来丢给你,你不学就落后了,也印证了前人的经验,果然是学无止境啊!
我想通过我的一番YY,你也应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^
看完之后你发现,罗嗦这么多,对我一点用处没有啊,我知道该怎么学,但是我想如何才能更快的学,一周速成,啊不,24小时速成那种,默默你有没?
我.......我没有,但是2分钟之内把你扁进医院里,我倒是有把握-_-
学东西,永远不要妄想有速成这一说,告诉你了一个方式,但是缺少努力这一环节,那也是白搭。
但是有一点我可以给你保证的就是,你学会了PHP,那么学其他的语言,肯定速成,反过来也一样,如果你之前学过其他的语言,那么学PHP肯定快。
不过语法好学,但是怎么用语法来实现每个人都有每个人的方式,几乎是各有千秋。然而借鉴别人成功的代码,绝对是有益无害,因此,多看那些经过千锤百炼凝出来的经典代码,是进阶的最好方法。
讲了这么多,无非是想说:学习PHP不仅要掌握方法,更多的是付出汗水,我不希望看到中途放弃的人,相信自己,相信自己的选择,更要相信自己的能力,如果自己想放弃,暴力一点的话,就自己抽自己一个嘴巴,然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了)
另外要叮嘱各位的是,抵御诱惑,ASP/PHP/JSP/.NET的对比也许会让你无所适从,你也许学了一半PHP,又开始打C#的主意,或者有人说JAVA很强,这个时候的你绝对不能动摇,哪怕你真想学,也得学会了PHP。然后再学,见异思迁是最不可取的,狗熊掰玉米就是这个道理,如果经常中途放弃,只能是一无所获,还浪费了N多的时间和经历,得不偿失,最重要的是,你会被别人瞧不起,没有人会喜欢和见异思迁的人交朋友,因为这种人太不安分,太不可靠,因此,你必须要强迫自己完成自己的目标,哪怕可能会很难受,也得坚持,毅力就是这么锻炼出来的。
说了这么多,可能大家嫌我烦了,但是默默属于那种平常很沉默,一旦进入状态之后就变的很兴奋,我想尽可能的把我所想的表达出来,但是可惜自己的文字功底有限,效果可能不尽如人意,但是我感觉,把自己的经验分享出来之后感觉很轻松,如释重负的感觉。
最后,我还想说一下,有很多的国人不自信,说过诸如什么语言到了中国就变味,什么中国人不团结,没有团队精神之类的,我反倒觉得那些人鼠目寸光,可悲,可叹,那些人总是把一切的责任推卸的一干二净,却不从自身出发,以身表率,来改变这一状况,反而悲观的叹息,只期望那些人早点醒悟,只有人人都努力,才能进步,而自卑自叹,只会越搞越糟。
其实无论是PHP还是其他任何东西,咱们不学则已,学就要搞出个名堂来,一个人的力量也许微不足道,但是大家都努力,齐心协力,中国人有什么不可以的?咱们不但要赶上,更要超越,要让世界都使用“中国标准”,也许我这么说有人说我痴心妄想,也有人说我只会喊口号,这都无所谓,但是重要的是,我终于把心里的话说了出来,说白了,咱们中国人不缺实力,就缺野心,野心并不是贬义,这里所指的野心,正是指中国人敢于争世界第一的志气。
说了这么多,又跑题了^_^,其实就是鼓励咱们学习PHP的新手,努力吧,中国的发展靠咱们!(把话说大了,各位看官不要见怪!斗胆而言^_^)
嘿嘿!
作者:默默
文章开头就列举了那么多联系方式,难免会让大家感觉有点AD的意味,但是不容质疑的是,默默的确有那么丁点的表现欲^_^,虽然有时候过于细致会被人说婆妈,但是幸好这种细致对于编程来说,还是蛮有益的!
从默默自己向别人问怎么学PHP开始,到后来不少人又来问默默怎么学PHP,不管默默是新手,还是老鸟,似乎总是感觉摸不出一条清晰的脉络来,不过,默默既然学会了PHP,那么我走的这条路或多或少的有一定借鉴性。
PHP的背景恐怕就不用默默赘言了,我相信大家选择一种语言,并不是看它的背景和悠久历史,更重要的是看它的实用性,华而不实的语言哪怕是再辉煌的历史,也毕将步向没落,可喜的是PHP经受住了考验,也因此,它确实是一种值得学习的语言。
默默一直是听从别人的经验长大的,也因此在前辈们的经验里让默默少走了许多的弯路,更快的步入了正规,在此向那些我至尽不知道其名字的前辈们道声谢谢,在默默的眼里,帮助不分大小,只要是帮助,总会让默默的心里暖融融的,我想,前辈们帮助我,并不是为了得到我的一句谢谢,更多的是出于一种责任感和对默默的期望,所以我想,只有学好PHP,才能对得起前辈们的汗水。
正如我所说的,默默也终于感觉到了一种责任感,默默不知道自己的经验到底能帮助新手多少,但是默默明白,现在到了履行责任的时候了,我有必要把自己的经验告诉给所有希望学好PHP的人,只有这样才能让中国的PHP不断的进步,不断的发展,在世界上占据一席之地。
默默学习PHP的这段期间,感觉国内的PHP环境越来越成熟,规范也在逐渐的健全,PHPCHINA的成立,标志着与官方直接挂钩的PHP机构在中国正式落户了,在此献上迟到的掌声!
好的,切入正题:
我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话:
默默的文章不会对您的学习起到实质性的作用,您能否成功,还得靠自己的,坚持,坚持,再坚持,就是步入成功的不二法门。
我先把我自己学习PHP的过程做一下概括:
(1)熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作完整的网页,对元素属性达到熟悉程度
(2)理解动态语言的概念,运做机制,熟悉PHP语法
(3)学习如何将PHP与HTML结合起来完成简单动态页面
(4)接触MYSQL,开始设计数据库程序
(5)不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板
(6)完成一个功能齐全的动态站点
我的这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,默默在此不得不对您稍微泼一下冷水,任何东西其实都不简单,即使是小吃部的烧饼也不是一下子就会做成的。
我先解释一下我的学习思路。
首先,理解网站这一概念之后不难看出,任何网站都是由网页组成的,也就是说想完成网站,必须先学会做网页,因此必须要掌握了HTML,才能为今后制作网站打下基础。
在学习HTML中我想边学边做是最有效的方式,当然这一方式对于学习PHP同样是最有效的。
HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的,我想大部分新手之所以觉得概念难学,大部分是一个字“懒”,懒是阻止进步的最大敌人,所以克服掉懒的习惯,才能更快的学好一样东西。
也许您在学习PHP的时候只想尽快的开发一个网站,也就会想我做网站,干嘛要学什么网页这些小儿科?不难看出,眼高手低的新手不在少数,这种思想无疑于建造空中楼阁,你不建地基,何来的房顶呢?
OK,掌握静态网页的制作技术是学习开发网站的先决条件,这一点就讲到这里,因为这篇文章不是教程文章,也就不对技术进行深入的刨析了。
我假设你目前已经可以完成一个静态页面了,当然,做的好看难看是另外一说,默默的第一个网页也没好看到哪去,但是“孩子”再丑,咱们做“爹妈”的也不能嫌弃不是?这毕竟是咱的成果。
那么咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的东西,在网页里显示的时候却是另外一码事?其实这并不算乱七八糟,你写的HTML代码不也一样是一堆堆的字符吗?毕竟,代码并不是作为直接输出的,而是经过处理的,说白了,HTML是经过HTML解析器,而PHP当然也就通过PHP解析器了,跟学习HTML一样的道理,想让任何的解析器完成操作,就必须使用它们专用的语法结构,所以PHP长相奇怪也就不足为奇了。
对于PHP的理解是新手最难迈过的一道门槛,不过你应该感到幸运的是PHP已经最大极限的为了新手而努力了,如果你学过其他的语言,也许会觉得PHP的确相当的简单,但是如果你之前什么都没学过,那么阿弥陀佛,硬着头皮琢磨吧。
书过三遍自然熟,这个简单的道理告诉我们,即使你理解不了PHP,但是也必须先跟它混个脸熟,看,一遍遍的看,看的同时一边琢磨,一边按照它所教的打代码,即使你搞不清楚那些代码到底是干嘛的,但是起码你应该找找感觉。
在一段挣扎之后,聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步。
搞清楚HTML和PHP的概念,那么PHP和HTML混合编程应该不成问题,在这期间,你完全可以让PHP给你算算 一加一等于几,然后在浏览器输出,不要觉得幼稚,这的确是跟阿波罗登月一样,你打的是一小段代码,但是对于你的编程之路,可是迈出了一大步啊!兴奋吧?但是不得不再给你泼点冷水,您还是菜鸟一个。
高兴一段时间就必须继续努力了,接下来就是学习数据库了,MYSQL可算是PHP的黄金搭档了,不过,虽然话是这么说,你也可能恨不得把MYSQL给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩。
头晕归头晕,目眩归目眩,你不可能吃饭的时候咬了自己一下舌头就从此不吃饭了不是?放下畏惧,继续努力,咱们是来征服它的,而不是被它征服的,振奋起来吧同志。
在一番搏斗之后,你终于理解了数据库的概念,而且让你兴奋不已的是你终于可以通过PHP来连接数据库了,这期间你是怎么学会的,我们不去考证了,但是事实证明,你已经可以了。
学会了PHP和数据库的你,无疑是左手拿着MOTOLOLA右手拿着NOKIA,要多潇洒,有多潇洒,哈哈,终于学会了,但是可能这个时候,又会有人不经意的拍拍肩膀对你说:哥们,别高兴的太早,你还是菜鸟,离学会还差着一大截呢!
等到你发奋努力的学会了用PHP成功的插入,删除,更新数据的时候,显然,你已经距离成功指日可待了。
这个时候的你也许是这种状态:
你会HTML吗?会,我能编好几个大表格排板的网页啦!
你会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦!
你会MYSQL吗?会,我会把我的信息在数据库里插入删除啦
那,接下来你该怎么做呢?我觉得,小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和HELLO WORLD有一比啊!^_^,同是新手面临的第一道关。
花了一段时间,你终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。
但是,你可能瞅瞅东,看看西,人家这个编论坛,那个CMS,还有那啥CRM,我啥时候写一个呢?
不要急,可以说你的马步已经扎的差不多了,接下来就要开始练把势的时候了,如果有条件的话,用笔或者打印一个简易的PHP手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。
再有条件的话,买本书看看吧,《PHP+MYSQL WEB开发(第三版)》号称圣经级,(也许是个不错的选择(声明:作者没给我啥好处费,我也不是书托,隔着大老远,我连他老兄的面都没见过的说-_-)
巩固了自己的知识,熟悉了PHP和MYSQL开发的要领之后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?当然,如果屋里还有鬼的话,也许是它写的-_-
这个时候,你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹是写了一个动态网站程序了,放在自己的网站上耍耍吧,让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下。
几天之后你再打开留言本,哎?哇,一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧!
你发奋努力,熟悉了安全方面的问题,然后又设计了一些程序,感觉还不错。
那么接下来,这就算学会啦?NO,NO,NO,还早呢,你至尽还没碰过OOP之类的吧?模板呢?
恩,学!加紧学呀学,学会了这些之后,你又学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后...
总而言之,你绝对不会发现你全部都学会了,一些真正的强人总会搞出新玩意来丢给你,你不学就落后了,也印证了前人的经验,果然是学无止境啊!
我想通过我的一番YY,你也应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^
看完之后你发现,罗嗦这么多,对我一点用处没有啊,我知道该怎么学,但是我想如何才能更快的学,一周速成,啊不,24小时速成那种,默默你有没?
我.......我没有,但是2分钟之内把你扁进医院里,我倒是有把握-_-
学东西,永远不要妄想有速成这一说,告诉你了一个方式,但是缺少努力这一环节,那也是白搭。
但是有一点我可以给你保证的就是,你学会了PHP,那么学其他的语言,肯定速成,反过来也一样,如果你之前学过其他的语言,那么学PHP肯定快。
不过语法好学,但是怎么用语法来实现每个人都有每个人的方式,几乎是各有千秋。然而借鉴别人成功的代码,绝对是有益无害,因此,多看那些经过千锤百炼凝出来的经典代码,是进阶的最好方法。
讲了这么多,无非是想说:学习PHP不仅要掌握方法,更多的是付出汗水,我不希望看到中途放弃的人,相信自己,相信自己的选择,更要相信自己的能力,如果自己想放弃,暴力一点的话,就自己抽自己一个嘴巴,然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了)
另外要叮嘱各位的是,抵御诱惑,ASP/PHP/JSP/.NET的对比也许会让你无所适从,你也许学了一半PHP,又开始打C#的主意,或者有人说JAVA很强,这个时候的你绝对不能动摇,哪怕你真想学,也得学会了PHP。然后再学,见异思迁是最不可取的,狗熊掰玉米就是这个道理,如果经常中途放弃,只能是一无所获,还浪费了N多的时间和经历,得不偿失,最重要的是,你会被别人瞧不起,没有人会喜欢和见异思迁的人交朋友,因为这种人太不安分,太不可靠,因此,你必须要强迫自己完成自己的目标,哪怕可能会很难受,也得坚持,毅力就是这么锻炼出来的。
说了这么多,可能大家嫌我烦了,但是默默属于那种平常很沉默,一旦进入状态之后就变的很兴奋,我想尽可能的把我所想的表达出来,但是可惜自己的文字功底有限,效果可能不尽如人意,但是我感觉,把自己的经验分享出来之后感觉很轻松,如释重负的感觉。
最后,我还想说一下,有很多的国人不自信,说过诸如什么语言到了中国就变味,什么中国人不团结,没有团队精神之类的,我反倒觉得那些人鼠目寸光,可悲,可叹,那些人总是把一切的责任推卸的一干二净,却不从自身出发,以身表率,来改变这一状况,反而悲观的叹息,只期望那些人早点醒悟,只有人人都努力,才能进步,而自卑自叹,只会越搞越糟。
其实无论是PHP还是其他任何东西,咱们不学则已,学就要搞出个名堂来,一个人的力量也许微不足道,但是大家都努力,齐心协力,中国人有什么不可以的?咱们不但要赶上,更要超越,要让世界都使用“中国标准”,也许我这么说有人说我痴心妄想,也有人说我只会喊口号,这都无所谓,但是重要的是,我终于把心里的话说了出来,说白了,咱们中国人不缺实力,就缺野心,野心并不是贬义,这里所指的野心,正是指中国人敢于争世界第一的志气。
说了这么多,又跑题了^_^,其实就是鼓励咱们学习PHP的新手,努力吧,中国的发展靠咱们!(把话说大了,各位看官不要见怪!斗胆而言^_^)
嘿嘿!





