2009年6月29日星期一
[转]最�的.Net下的委托入门讲解
主 题: “.net百题问答的活动”--许多人问过的--《 C#委托及事件 》
所属论坛: .NET技术 C#
有许多人问的,.Net中的委托以及事件处理。我拿简单的例子说明一下,是现实中的例子:
比如说一个公司(场景),你是老板,手下有两个员工,小张和小王。
你命令小王,如果小张玩游戏,则小王扣去小张500元钱。
这就是现实中的委托。
实际上,在写程序中,程序员就是老板,小张和小王就是两个对象。小张玩游戏是一个方法,小张还有一个游戏事件,他玩游戏激发这个事件。而小王就是事件处理对象,他负责把小张的钱扣除500。
所以,委托有如下几个要素:
1 激发事件的对象--就是小张
2 处理对象事件的对象--就是小王
3 定义委托,就是你让小王监视小张。
如果这三个要素都满足的话,则你就写出了一个完整事件的处理。
下面有个例子:在vs.net2003 C#控制台应用程序编辑运行成功:
using System;
namespace CSharpConsole
{
public class 场景
{
[STAThread]
public static void Main(string[] args)
{
Console.WriteLine("场景开始了....");
// 生成小王
小王 w = new 小王();
// 生成小账
小张 z = new 小张();
// 指定监视
z.PlayGame += new PlayGameHandler(w.扣钱);
// 开始玩游戏
z.玩游戏();
console.writeline("场景结束...");
Console.ReadLine();
}
}
// 负责扣钱的人
public class 小王
{
public 小王()
{
Console.WriteLine("生成小王...");
}
public void 扣钱(object sender, EventArgs e)
{
Console.WriteLine("小王:好小子,上班时间胆敢玩游戏...");
Console.WriteLine("小王:看看你小子有多少钱...");
小张 f = (小张)sender;
Console.WriteLine("小张的钱: " + f.钱.ToString());
Console.WriteLine("开始扣钱......");
System.Threading.Thread.Sleep(500);
f.钱 = f.钱 - 500;
Console.WriteLine("扣完了....现在小张还剩下:" + f.钱.ToString());
}
}
// 如果玩游戏,则引发事件
public class 小张
{
// 先定义一个事件,这个事件表示“小张”在玩游戏。
public event PlayGameHandler PlayGame;
// 保存小张钱的变量
private int m_Money;
public 小张()
{
Console.WriteLine("生成小张....");
m_Money = 1000; // 构造函数,初始化小张的钱。
}
public int 钱 // 此属性可以操作小张的钱。
{
get
{
return m_Money;
}
set
{
m_Money = value;
}
}
public void 玩游戏()
{
Console.WriteLine("小张开始玩游戏了.....");
Console.WriteLine("小张:CS好玩,哈哈哈! 我玩.....");
System.Threading.Thread.Sleep(500);
System.EventArgs e = new EventArgs();
OnPlayGame(e);
}
protected virtual void OnPlayGame(EventArgs e)
{
if (PlayGame != null)
{
PlayGame(this, e);
}
}
}
// 定义委托处理程序
public delegate void PlayGameHandler(object sender, System.EventArgs e);
}
2009年6月16日星期二
互联网的成本:不要低估背后的隐性成本(转)
摘自:http://www.chinaz.com/Webmaster/Club/0612O3162009.html
我经常遇到一些其他行业的人跃跃欲试的想做个网站挣钱,在他们眼中做网站成本很低,但是很挣钱,即使不能挣钱上市也可以骗骗VC弄点钱花。也不时的 听说某某找人投了几十万要做网站,拉几个弟兄,豪言壮语几年做到盈利,几年上市IPO,反正总之是告诉你这是他妈的万里挑一的发财好机会,错过这个村就没 这个店了,结果是钱花光了,没几个人注册,最终剩下几台破电脑和一堆鸡肋的页面。
传统行业的人在进入互联网行业之前总是过于轻视了一个网站的成本,他们只看到了一些显性的成本,却低估了背后的隐性成本,所以最终他们会发现花几百 万可以在南京路上开个日进斗金的店面而到了网络上也许连1万都赚不了,殊不知盈利的要素其一在于收入增长,其二在于成本控制,一个例子 是:Craiglist员工不足30人,去年成本约为1000万美元,但是去年营收却接近1亿美元[盈利9000万美元],Digg有70多名员工,去年 成本约为1400万美元,营收却只有850万美元[亏损中]。两者公司价值相差很大。我们今天不说收入,只说成本。
他们到底低估了哪些成本?以下几点是根据我自己亲身经历或遇到而总结的,每一条我都可以找出若干个例子来证明,所以基本上可以说是有普遍性。
1、人员开支
没人怎么做开发,没人怎么去运营,没人谁去做销售?人员开支会在网站成本中占据相当的比重,这点他们都可以看到,毕竟也是在传统行业有过成功经历的人,不可能没有这眼光,但是他们眼中的人员就是:程序员、美工、运营,略懂一些的会再找个策划,完事。
2、硬件支出
硬件支出这块基本上他们会严重低估的,因为很多人如果不是这个行业的话是不了解一个网站的原理的,在他们眼中一台服务器最多再加个独享带宽就可以解决所有问题了,所以就会出现例如"10M独享能不能做成个youtube这样的站点?"的问题了。
3、开发成本
非常严重的被低估,在他们看来花个几万块钱把需求提的尽善尽美来外包做出一个站点然后就可以一劳永逸的解决问题了,可是哪家优秀的网站会是靠外包做 的呢?即使是出钱养一个UI(不对,他们会说是美工)和几个程序员来自己做,也是想当然的认为这就没问题了,认准一个网站就给我照着它抄吧,但是抄到最后 总发现还是有问题。当然有问题了,一个完整的开发流程需要多少个角色,需要多长的周期?瀑布模型?哦不,他们会觉得有了程序员就可以搞定一切问题的。
4、推广与运营
这块基本上他们是看不到的,因为他们会根据自己的体验作出判断,他们对于一个网站的认知只在于那一个浏览器窗口和页面,却没有看到这背后的东西。所 以我在文章开头说的昨天看到的那个行业网站很恐怖(只能用这个词来形容了),基本上把整个阿里巴巴给完全抄过来了,哦,还抄了淘宝的一部分。后来我问朋友 有多少人在运营这个站点?答曰不到10个,没有推广与市场预算。我……
他们看不到这些成本,所以他们觉得挺多的几百万就轻飘飘的砸进去却连个响声都听不见,这种例子实在是太多,尤其是在民间资本过于发达的浙江,从某种 程度上来说是阿里巴巴的成功误导了这群人,更应该说是成功以后的阿里巴巴误导了这群人,马云更应该把那个家庭作坊式的管理混乱的那个拿到钱后四处扩张惨败 而归最后缩回杭州的阿里巴巴讲给他们听听,而不是让他们觉得找十八个人租两件民房捣鼓一个站点就可以再整出个1688来。
我越来越觉得以后是不会有纯正的互联网公司了,互联网早晚会和传统行业完全融合在一起,成为一种工具。到那时,理性的人们也不会去冲动的去有出点钱 折腾个网站去上市的想法了,这个行业还是很年轻,互联网的一代还没有成为这个社会中掌握财富的中间力量,这种情况在未来的几十年中应该会逐渐的消失。
这也算是我们这个年代的一个特色吧。2009年6月15日星期一
生活常识积累!
2009年6月9日星期二
解读 QQWry.Data ――IP地址库文件数据(转)
按项目计划,最近要实现用户IP地址到所在地址区域的转换,这里不仅只是解读出地区文字,还需要对应原有的地区数据;所以要把地区代码(机构组织码)与IP地址建立对应关系。我选择纯真版IP地址库来建立对应关系表。 从网上下载了最新的 QQWry.Data 库文件,首先碰到的一个问题是解析这个文件。根据网上的资料(LuamaQQ作者写的日志),根据自己的摸索,总结出了此文件的内容结构,以及解读方式。 一、文件结构 文件主要分三个结构 1、文件头,8个字节; 2、数据记录区,不定长度; 3、索引区,长度为 7 的整数倍; 二、文件头 文件头的8个字节分两部分,每个部分4个字节,分别指定了索引区的开始地址和结束地址。所以可以通过两个地址的差值 除 7 后 加 1 可以计算出总的记录数。 二、记录区 记录区的数据需要通过索引区的数据来获得各个数据的起始位置;本区数据记录了IP地址的结束地址和地区字符串;所有地区字符串都以 0x00 为结束。 三、索引区 检索IP对应的地区,关键就是找到IP起始地址对应的索引内容。一个IP索引数据包含7个字节,前4个字节是IP地址起始值,后3个字节是对应的IP数据 记录在文件内的偏移地址;IP数据记录中,前 4 个字节是IP结束地址;紧跟的数据有两种模式: 0x01 模式 和 0x02 模式。 0x01模式,即在IP数据的第5个字节是 0x01,则在后面的 3 个字节是国家地区数据的偏移地址;国家地区数据包括国家和地区这两个字符串。即 --------------------------------------------------------------- 4字节 | 3字节 重定向 0x NN NN NN -> 国家地区数据的文件偏移地址 --------------------------------------------------------------- 0x02模式,即在IP数据的第5个字节是 0x02,则在后面的 3 个字节是国家数据的偏移地址,地区数据是再往后的字符串,以 0x00 截至。即 ----------------------------------------------------------------------------- 4字节 | 3字节 重定向 0x NN NN NN -> 国家数据的文件偏移地址 | 地区字符串 | 0x00 ----------------------------------------------------------------------------- 对于 0x01 模式所得到的 国家地区数据中,它可能又带有一个重定向结构,即 -------------------------------------- 国家字符串 | 0x00 | 地区字符串 | 0x00 -------------------------------------- 或 ------------------------------------------------------------------------- 国家字符串 | 0x00 | 0x02 | 3字节 0x NN NN NN -> 地区字符串的文件偏移地址 ------------------------------------------------------------------------- 对于前一种情况,比较简单,直接读出两个字符串数据就可以了;对于后一种情况,需要再次重定向到地区字符串的偏移地址,然后读取到 0x00 为字符串结尾。 对于这种采取地址映射实际字符串值的方式,主要作用是避免重复记录字符串值。在整个IP地址库文件中,有太多相同字符串记录了,采用 3 字节的映射地址要比重复记录字符串值节省太多空间了。 这里附上PHP版的解读代码:
|
八条佛曰 66句震撼人心的禅语
1、佛曰:忘记并不等于从未存在,一切自在来源于选择,而不是刻意。不如放手,放下的越多,越觉得拥有的更多。
2、佛曰:命由己造,相由心生,世间万物皆是化相,心不动,万物皆不动,心不变,万物皆不变。
3、佛曰:坐亦禅,行亦禅,一花一世界,一叶一如来,春来花自青,秋至叶飘零,无穷般若心自在,语默动静体自然。
4、佛曰:笑着面对,不去埋怨。悠然,随心,随性,随缘。注定让一生改变的,只在百年后,那一朵花开的时间。
5、佛曰:刹那便是永恒(若人生了悟如佛,无悲无喜无梦无幻,无爱无恨四大皆空,生与死又有何区别。不能了,不能悟,不能舍,不能弃,参不透,舍不得。)
6、佛曰:不可说,不可说,一说即是错。
7、佛曰:一念愚即般若绝,一念智即般若生。
8、佛曰:菩提本无树,明镜亦非台。本来无一物,何处惹尘埃。
66句震撼人心的禅语
1. 人之所以痛苦,在于追求错误的东西。
2. 如果你不给自己烦恼,别人也永远不可能给你烦恼。因为你自己的内心,你放不下。
3. 你永远要感谢给你逆境的众生。
4. 你永远要宽恕众生,不论他有多坏,甚至他伤害过你,你一定要放下,才能得到真正的快乐。
5. 当你快乐时,你要想这快乐不是永恒的。当你痛苦时,你要想这痛苦也不是永恒的。
6. 今日的执著,会造成明日的后悔。
7. 你可以拥有爱,但不要执著,因为分离是必然的。
8. 不要浪费你的生命在你一定会后悔的地方上。
9. 你什么时候放下,什么时候就没有烦恼。
10. 每一种创伤,都是一种成熟。
11. 狂妄的人有救,自卑的人没有救,认识自己,降伏自己,改变自己,才能改变别人。
12. 你不要一直不满人家,你应该一直检讨自己才对。不满人家,是苦了你自己。
13. 一个人如果不能从内心去原谅别人,那他就永远不会心安理得。
14. 心中装满着自己的看法与想法的人,永远听不见别人的心声。
15. 毁灭人只要一句话,培植一个人却要千句话,请你多口下留情。
16. 根本不必回头去看咒骂你的人是谁?如果有一条疯狗咬你一口,难道你也要趴下去反咬他一口吗?
17. 永远不要浪费你的一分一秒,去想任何你不喜欢的人。
18. 请你用慈悲心和温和的态度,把你的不满与委屈说出来,别人就容易接受。
19. 同样的瓶子,你为什么要装毒药呢?同样的心里,你为什么要充满着烦恼呢?
20. 得不到的东西,我们会一直以为他是美好的,那是因为你对他了解太少,没有时间与他相处在一起。当有一天,你深入了解后,你会发现原不是你想像中的那么美好。
21. 活着一天,就是有福气,就该珍惜。当我哭泣我没有鞋子穿的时候,我发现有人却没有脚。
22. 多一分心力去注意别人,就少一分心力反省自己,你懂吗?
23. 憎恨别人对自己是一种很大的损失。
24. 每一个人都拥有生命,但并非每个人都懂得生命,乃至于珍惜生命。不了解生命的人,生命对他来说,是一种惩罚。
25. 情执是苦恼的原因,放下情执,你才能得到自在
26. 不要太肯定自己的看法,这样子比较少后悔。
27. 当你对自己诚实的时候,世界上没有人能够欺骗得了你。
28. 用伤害别人的手段来掩饰自己缺点的人,是可耻的。
29. 默默的关怀与祝福别人,那是一种无形的布施。
30. 不要刻意去猜测他人的想法,如果你没有智慧与经验的正确判断,通常都会有错误的。
31. 要了解一个人,只需要看他的出发点与目的地是否相同,就可以知道他是否真心的。
32. 人生的真理,只是藏在平淡无味之中。
33. 不洗澡的人,硬擦香水是不会香的。名声与尊贵,是来自于真才实学的。有德自然香。
34. 时间总会过去的,让时间流走你的烦恼吧!
35. 你硬要把单纯的事情看得很严重,那样子你会很痛苦。
36. 永远扭曲别人善意的人,无药可救。
37. 说一句谎话,要编造十句谎话来弥补,何苦呢?
38. 白白的过一天,无所事事,就像犯了窃盗罪一样
39. 广结众缘,就是不要去伤害任何一个人。
40. 沉默是毁谤最好的答覆。
41. 对人恭敬,就是在庄严你自己。
42. 拥有一颗无私的爱心,便拥有了一切。
43. 来是偶然的,走是必然的。所以你必须,随缘不变,不变随缘。
44. 慈悲是你最好的武器。
45. 只要面对现实,你才能超越现实。
46. 良心是每一个人最公正的审判官,你骗得了别人,却永远骗不了你自己的良心。
47. 不懂得自爱的人,是没有能力去爱别人的。
48. 有时候我们要冷静问问自已,我们在追求什么?我们活着为了什么?
49. 不要因为小小的争执,远离了你至亲的好友,也不要因为小小的怨恨,忘记了别人的大恩。
50. 感谢上苍我所拥有的,感谢上苍我所没有的。
51. 凡是能站在别人的角度为他人着想,这个就是慈悲。
52. 说话不要有攻击性,不要有杀伤力,不夸已能,不扬人恶,自然能化敌为友。
53. 诚实的面对你内心的矛盾和污点,不要欺骗你自己。
54. 因果不曾亏欠过我们什么,所以请不要抱怨。
55. 大多数的人一辈子只做了三件事;自欺、欺人、被人欺。
56. 心是最大的骗子,别人能骗你一时,而它却会骗你一辈子
57. 只要自觉心安,东西南北都好。如有一人未度,切莫自己逃了。
58. 当你手中抓住一件东西不放时,你只能拥有这件东西,如果你肯放手,你就有机会选择别的。人的心若死执自己的观念,不肯放下,那么他的智慧也只能达到某种程度而已
59. 如果你能够平平安安的渡过一天,那就是一种福气了。多少人在今天已经见不到明天的太阳,多少人在今天已经成了残废,多少人在今天已经失去了自由,多少人在今天已经家破人亡。
60. 你有你的生命观,我有我的生命观,我不干涉你。只要我能,我就感化你。如果不能,那我就认命。
61. 你希望掌握永恒,那你必须控制现在。
62. 恶口永远不要出自于我们的口中,不管他有多坏,有多恶。你愈骂他,你的心就被污染了,你要想,他就是你的善知识。
63. 别人可以违背因果,别人可以害我们,打我们,毁谤我们。可是我们不能因此而憎恨别人,为什么?我们一定要保有一颗完整的本性和一颗清净的心。
64. 如果一个人没有苦难的感受,就不容易对他人给予同情。你要学救苦救难的精神,就得先受苦受难。
65. 世界原本就不是属于你,因此你用不着抛弃,要抛弃的是一切的执著。万物皆为我所用,但非我所属。
66. 虽然我们不能改变周遭的世界,我们就只好改变自己,用慈悲心和智慧心来面对这一切