??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲色无码专区一区,亚洲色欲久久久综合网东京热,久久综合久久综合亚洲http://www.tkk7.com/longturi/本博不原创,转帖自己感兴那些事人物Q什么入D(chung)什?随心所ƌӀ?/description>zh-cnSun, 11 May 2025 13:52:35 GMTSun, 11 May 2025 13:52:35 GMT60Ud互联|,是移动通信和互联网二者结合v来,成ؓ(f)一体?/title><link>http://www.tkk7.com/longturi/archive/2014/11/05/419556.html</link><dc:creator>ZT文萃</dc:creator><author>ZT文萃</author><pubDate>Wed, 05 Nov 2014 15:07:00 GMT</pubDate><guid>http://www.tkk7.com/longturi/archive/2014/11/05/419556.html</guid><wfw:comment>http://www.tkk7.com/longturi/comments/419556.html</wfw:comment><comments>http://www.tkk7.com/longturi/archive/2014/11/05/419556.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/longturi/comments/commentRss/419556.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/longturi/services/trackbacks/419556.html</trackback:ping><description><![CDATA[<div><strong><span style="color:green">Ud互联|,是移动通信和互联网二者结合v来,成ؓ(f)一体?br />4G时代的开启以?qing)移动终端设备的凸显必将为移动互联网的发展注入巨大的能量Q?014q移动互联网产业必将带来前所未有的飞跃?br /><br />度娘癄详解Q?a target="_blank" style="cursor: pointer; color: #2f5fa1; font-size: 14px; background: none repeat scroll 0% 0% transparent;" >http://baike.baidu.com/view/1168245.htm</a><br /><br /> <img src="http://pic.iresearch.cn/news/201407/635398038900781250.jpg" style="cursor:pointer" alt="" /> <br /><br /><br />云计(pQCloud ComputingQ,是一U基于互联网的计方式,通过q种方式Q共享的软硬件资源和信息可以按需求提供给计算机和其他讑֤?br /><br />?计算是1980q代大型计算机到客户?服务器的大{变之后的又一U巨变。用户不再需要了?#8220;?#8221;中基设施的细节,不必h相应的专业知识,也无需?接进行控制。[1]云计描qC一U基于互联网的新的IT服务增加、用和交付模式Q通常涉及(qing)通过互联|来提供动态易扩展而且l常是虚拟化的资源?br /><br />度娘癄详解Q?a target="_blank" style="cursor:pointer;color:#2f5fa1;font-size:14px" >http://baike.baidu.com/view/1316082.htm?fr=aladdin</a><br /><img src="http://www.cstor.cn/webedit/uploadfile/20140508161115107.jpg" style="cursor:pointer" alt="" /> <br /><br /><br />?数据Q英语:(x)Big dataQ,或称巨量数据、v量数据、大数据Q指的是所涉及(qing)的数据量规模巨大到无法通过人工Q在合理旉内达到截取、管理、处理、ƈ整理成ؓ(f)人类所能解?的信息。在L据量相同的情况下Q与个别分析独立的小型数据集Qdata setQ相比,各个小型数据集合ƈ后进行分析可得出许多额外的信息和数据关系性,可用来察觉商业趋ѝ判定研I质量、避免疾病扩散、打ȝ|或定实时 交通\늭Q这L(fng)用途正是大型数据集盛行的原因?br /><br />度娘癄详解Q?a target="_blank" style="cursor:pointer;color:#2f5fa1;font-size:14px" >http://baike.baidu.com/subview/6954399/13647476.htm?fr=aladdin</a><br /><br /><img src="http://i1.hexunimg.cn/2013-07-04/155800375.jpg" style="cursor:pointer" alt="" /> <br /><br /><br />O2OQOnline To OfflineQ模式,又称ȝ商务模式Q是指线上营销U上购买带动U下l营和线下消贏VO2O通过促销、打折、提供信息、服务预订等方式Q把U下商店?消息推送给互联|用P从而将他们转换qU下客户Q这q别适合必须到店消费的商品和服务Q比如餐饮、健w、电(sh)影和演出、美容美发、摄影及(qing)百货商店 {?br /><br />度娘癄详解Q?a target="_blank" style="cursor:pointer;color:#2f5fa1;font-size:14px" >http://baike.baidu.com/subview/4717113/13607799.htm?fr=aladdin</a><br /><br />一些O2O案列QGroupon、OpenTable、易到用?br /><img src="http://img5.pcpop.com/ArticleImages/500x375/2/2950/002950852.jpg" style="cursor:pointer" alt="" /> <br /></span></strong></div><img src ="http://www.tkk7.com/longturi/aggbug/419556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/longturi/" target="_blank">ZT文萃</a> 2014-11-05 23:07 <a href="http://www.tkk7.com/longturi/archive/2014/11/05/419556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZTQ中国队是世界杯历史上屈指可数的强队http://www.tkk7.com/longturi/archive/2014/06/16/414818.htmlZT文萃ZT文萃Mon, 16 Jun 2014 13:36:00 GMThttp://www.tkk7.com/longturi/archive/2014/06/16/414818.htmlhttp://www.tkk7.com/longturi/comments/414818.htmlhttp://www.tkk7.com/longturi/archive/2014/06/16/414818.html#Feedback0http://www.tkk7.com/longturi/comments/commentRss/414818.htmlhttp://www.tkk7.com/longturi/services/trackbacks/414818.htmlpQ谁说我?002q倒数W一的啊

不还有沙特了?br />
再说了,中国队多牛Bzh不知道吗

在长?4q十?ji)届世界杯的历史?br />仅有三支国家队战胜过中国国家?br />分别是巴ѝ土耛_、哥斯达黎加

即是巴西这L(fng)世界强队也仅战胜q中国队一ơ?br />
而中国队从未在世界杯点球大战中失利过Q?br />从来没有一支球队能够在世界杯上击|q中国队两次?br />
从数据分析中可以看的出,世界杯史上共产生八支冠军球队Q?br />也只有巴襉K曄战胜q中国队?br />Ƨ洲诸强徯h英意葡等从来没有世界杯上战胜q中国?br />
而且Q中国队在世界杯上丢球数q少于球之国巴西和以防守见长的意大利,
在过?4q里Q中国队只丢?个球?br />
除此之外Q世界上除了巴西Q中国是另外一支敢在胸前绣五颗星的队?/span>

ZT文萃 2014-06-16 21:36 发表评论
]]>
q不?q不?.....http://www.tkk7.com/longturi/archive/2014/06/13/414713.htmlZT文萃ZT文萃Fri, 13 Jun 2014 07:44:00 GMThttp://www.tkk7.com/longturi/archive/2014/06/13/414713.htmlhttp://www.tkk7.com/longturi/comments/414713.htmlhttp://www.tkk7.com/longturi/archive/2014/06/13/414713.html#Feedback0http://www.tkk7.com/longturi/comments/commentRss/414713.htmlhttp://www.tkk7.com/longturi/services/trackbacks/414713.html释迦牟尼在《佛(jng)譬喻l》中Q讲了一D|名的譬喻Q这譬喻是这L(fng)Q?br />      在一个寂寞的U天黄昏Q无广阔的荒野中,有一位旅着路。突?dng)旅h发现薄暗的野道中Q散落着一块块白白的东西,仔细一看,原来是h的白骨?br />      旅h正疑惑思考时Q忽然从前方传来惊h的咆哮声Q随着一只大老虎紧D来。看到这只老虎Q旅人顿时了解白骨的原因Q立d来时的道路拔腉K跑?br />      但显然是q失了道路,旅h竟跑C座断崖绝壁的上。在毫无办法之中Q幸好发现断崖上有一颗松?wi),q且从树(wi)枝上垂下一条藤蔓。旅Z毫不犹UQ马上抓着藤蔓垂下去,可谓?ji)死一生?br />      老虎眼看好不Ҏ(gu)卛_入口的食物,居然被逃离Q可以想象它是如何懊恼地在崖上狂吼着?br />      好感谢啊Q幸亏有q藤蔓,l于救了宝贵一命。旅人暂时安心了。但是当他朝脚下一看时Q不啊了一壎ͼ原来脚下竟是波涛Ҏ(gu)、底不可的深vQ怒浪澎湃着Q而且在那波涛间还有三条毒龙,正张开大口{待着他的坠落。旅Z知不觉全w战栗v来?br />      但更恐怖的是,依靠救生的藤蔓,在其Ҏ(gu)处出C两只白色和黑色的老鼠Q正在交互地啃着藤蔓。旅人拼命摇动藤蔓,惌走老鼠Q可是老鼠一点也没有逃开的样 子。而且每次摇动藤蔓Q便有水滴从上面落下来,q是?wi)枝上蜂巢所滴下的蜂蜜。由于蜂蜜太甜了Q旅人竟完全忘记自己正处于危险万分的境地Q此心陶陶然地被?蜜所夺?br />      q愚痴的旅h之相Q便是所有hcȝ人生之真相。那么释q穆DD譬L味着什么呢Q?br />
1、孤独的心灵
旅hQ这旅h是指我们自己?br /> 荒野Q无而寂寞的荒野是譬L们无寂寞的人生?br /> U天的黄昏:(x)U天的黄昏是譬喻人生的孤寂感?br /> 白骨Q\边的白骨是指我们人生旅途中Q家族、亲属、朋友等的死亡。我们活到现在,应该看到很多白骨Q那时我们有何想法?有何感触Q我们可曾注意到紧D来?#8220;无常之虎”Q?br />老虎Q饥饿的老虎所譬喻的,既是我们自己的死亡?br />
2、无力的松树(wi)
松树(wi)Q接着我们攀上崖的松树(wi)Q松?wi)是指金钱、胦(ch)产、名誉、地位等{。这些东西即使拥有再多,在死亡的面前也仍是无力的?br />
3、h生是?br /> 藤蔓Q藤蔓所譬喻的是“q不?x)!q不?x)!我还不?x)?#8221;的那U以有二十年、三十年的寿命可依恃Q但即认ؓ(f)q有十年、还有二十年可活着Q但你认为到底h 寿几何?x便知Q已q去的十q二十年Q也不过是《啊》的一C_(d)便如梦如q般地消逝了。而今后的十年二十q_(d)也同h《啊》的一C间便?x)过厅R?br /> 老鼠Q咬着藤蔓的白老鼠和黑老鼠是指白天和晚上。白天的白老鼠和晚上的黑老鼠Q在怺地羃短着我们的寿命?br />
4Q后生大?br /> 深vQ深h譬喻的便是地狱。坠入此地狱Q必L受八万劫中大苦恼Q这一件事情便UCؓ(f)——后生一大事?br /> 毒龙Q显现地׃苦的是这三条毒龙Q这三条毒龙指我们自己内心的贪欲、嗔怒、愚痴?br />      “善因善果、恶因恶果、自因自?#8221;的因果法则是不会(x)有丝毫差错的。由自己所不断造作的罪恶所生出的地狱,最后还是由自己坠入?/span>

ZT文萃 2014-06-13 15:44 发表评论
]]>
ZTQ菜鸟必学会(x)看电(sh)脑开Z?/title><link>http://www.tkk7.com/longturi/archive/2014/06/10/414602.html</link><dc:creator>ZT文萃</dc:creator><author>ZT文萃</author><pubDate>Tue, 10 Jun 2014 14:57:00 GMT</pubDate><guid>http://www.tkk7.com/longturi/archive/2014/06/10/414602.html</guid><wfw:comment>http://www.tkk7.com/longturi/comments/414602.html</wfw:comment><comments>http://www.tkk7.com/longturi/archive/2014/06/10/414602.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/longturi/comments/commentRss/414602.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/longturi/services/trackbacks/414602.html</trackback:ping><description><![CDATA[<div>其实都是些很单的东西<br />如果有CLER认ؓ(f)q些东西发出来没必要?nbsp; 朕只能说抱歉<br /><br />如果看了帖子 对进有那么一点帮?请cler 回帖支持?让更多的 朋友可以了解?很多问题Q可以从开机看出问?br />谢谢<br /><br />?使用?sh)脑旉比较长的老用P隑օ?x)到朋友或同事家帮忙l护、维修电(sh)脑,有时q要帮h购买PCQ这时我们肯定会(x)带上g(g)YӞ不过Q谁也不能随wL 带着q些软gQ如果手头上没有合适的(g)Y件该怎么办呢QM能因此就什么都不知道吧Q那样你的高手Ş象大大会(x)受损的,其实Q离开q些软g我们也能明明?白查看电(sh)脑硬件的配置情况。下面我们就来一起学?fn)一下吧。  <br /><br />  一、开(g)中查看硬仉|  <br /><br />  机器l装l束后即使不装操作系l也可以q行加电(sh)试Q在开(g)的画面中隐藏着g配置的简单介l哟Q由于开机画面一闪而过Q要想看清楚的话Q记得及(qing)时手按?#8220;PAUSE”键)?br /><br />  1.昑֍信息  <br /><br />   开(g)旉先检查的g是昑֍Q因此启动机器以后在屏幕左上角出现的几行文字是有显卡的“个h资料”介绍。四行文字中Q第一?#8220;GeForce4 MX440……”标明了显卡的昄核心为GeForce4 MX440、支持AGP 8X技术;W二?#8220;Version……”标明了显卡BIOS的版本,我们可以通过更新昑֍BIOS版本“榨取”昑֍性能Q当然更新后q一行文字也?x)随之?生变化;W三?#8220;Copyright (C)……”则ؓ(f)厂商的版权信息,标示了显C片制造厂商及(qing)厂商版权q限Q第四行“64.0MB RAM”则标明了昑֍昑֭定w。  <br /><br />  2.CPU?qing)硬盘、内存、光׃息  <br /><br />  昄完显卡的基本信息之后Q紧接着?现的W二个自(g)画面则显CZ更多的硬件信息,像CPU型号、频率、内存容量、硬盘及(qing)光驱信息{都?x)出现在此画面中。该画面最上面两行文字标示了主? BIOS版本?qing)BIOS刉商的版权信息;紧接着的文字一看就明白啦,当然是主板芯片组喽;其下几行文字则标明了CPU的频率及(qing)内存定w、速度。下面四?“IDE……”则标明了q接在IDEM接口上的讑֤Q包括硬盘型号及(qing)光驱型号{等?br />  <br />  3.L信息 <br /><br />  在第?个自(g)画面的最下方q会(x)出现一行关于主板的信息Q前面的日期昄的是当前L的BIOS更新日期Q后面的W号则是该主板所采用的代码,Ҏ(gu)代码我们可以?解主板的芯片l型号和生厂商。以往老主板的自检画面中最下方文字的中间标明的是主板芯片组Q这一块板子则其提到了自(g)画面的上斏V  <br /><br />  机器启动之后?#8220;DEL”键进入BIOS讄面Q在基本信息中同样也可以看到机器的硬件信息,与开机画面显C的没有区别?br /><br />  二、利用设备管理器查看g配置  <br /><br />   q入操作pȝ之后Q在安装g驱动E序的情况下q可以利用设备管理器与DirectX诊断工具来查看硬仉|。下面看看如何利用设备管理器查看g?息。进入桌面,鼠标叛_“我的?sh)?#8221;图标Q在出现的菜单中选择“属?#8221;Q打开“pȝ属?#8221;H口Q点?#8220;g--讑֤理?#8221;Q在“讑֤理?#8221;中显CZ?器配|的所有硬件设备。从上往下依ơ排列着光驱、磁盘控制器芯片、CPU、磁盘驱动器、显C器、键盘、声韛_(qing)视频{信息,最下方则ؓ(f)昄卡。想要了解哪一 U硬件的信息Q只要点d前方?#8220;+”其下方的内容展开卛_。  <br />  利用讑֤理器除了可以看到常规硬件信息之外,q可以进一步了解主板芯片、声卡及(qing)盘工作模式{情c(din)例如想要查看硬盘的工作模式Q只要双ȝ应的IDE通道卛_弹出属性窗口,在属性窗口中可轻(g)看到盘的设备类型及(qing)传送模式。这些都是开机画面所不能提供的。  <br /><br />  需要注意的是在Windows Xp之前的操作系l中所提供的设备管理器是无法用来查看CPU工作频率的,好在我们q有DirectX诊断工具。  <br /><br />   三、利用DirectX诊断工具查看g配置  <br /><br />   DirectX诊断工具可以帮助我们对硬件工作情况作出测试、诊断ƈq行修改Q当然我们也可以利用它来查看机器的硬仉|。运?#8220;pȝ信息”H口Q找? “工具--DirectX诊断工具”Q或者进入安装盘W中Windows目录下的System32目录中运行Dxdiag.exeQ,在窗口中可以方便?查看g信息?br /><br />  1.查看基本信息  <br /><br />  ?#8220;DirectX诊断工具”H口中点?#8220;pȝ”选项卡,当前日期、计机 名称、操作系l、系l制造商?qing)BIOS版本、CPU处理器频率及(qing)?qing)内存容量一目了然。注意喽Q虽然我Celeron 2.0MHz频?.40MHz使用Q但是DirectX却不认这个帐Q依然显C的是未频的原始频率。看来没有AIDA32Q我们同样也可以识别奸商 是否超频的CPU卖给我们Q!  <br /><br />  2.查看昑֍信息  <br /><br />  ?#8220;DirectX诊断工具”H口中点?#8220;昄”选项卡,在这里我们可以看到显卡的刉商、显C片类型、显存容量、显卡驱动版本、监视器{常规信息。  <br /><br />  3.查看音频信息  <br /><br />  音频讑֤往往Zh所忽视Q但~Z它又不行Q单?#8220;声音”选项卡,对其做一番了解吧Q同样在出现的窗口中能看到设备的名称、制造商?qing)其驱动E序{等极ؓ(f)详细的资料。不同的是我们还可以点击右下角的“试DirectSound(T)”对声卡进行一下简单的试。  <br />怎么Pl过q一番了解,是不是感觉很受益Q?br /><br />题外话,׃L更新频繁Q现在很多主板BIOS有快速启动功能,以上很多信息都被瞬间屏蔽掉了。需要看自检的信息,需要到BIOS讄。但是以上讲的信息,能让你明白,计算机如何自(g)?/div><img src ="http://www.tkk7.com/longturi/aggbug/414602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/longturi/" target="_blank">ZT文萃</a> 2014-06-10 22:57 <a href="http://www.tkk7.com/longturi/archive/2014/06/10/414602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个IT人士的个人经历,l迷失方向的朋友http://www.tkk7.com/longturi/archive/2014/05/07/413366.htmlZT文萃ZT文萃Wed, 07 May 2014 06:22:00 GMThttp://www.tkk7.com/longturi/archive/2014/05/07/413366.htmlhttp://www.tkk7.com/longturi/comments/413366.htmlhttp://www.tkk7.com/longturi/archive/2014/05/07/413366.html#Feedback0http://www.tkk7.com/longturi/comments/commentRss/413366.htmlhttp://www.tkk7.com/longturi/services/trackbacks/413366.htmlhttp://kb.cnblogs.com/page/192251/

q些日子我一直在写一个实时操作系l内核,已有成了,{写完我?x)全部公开Q希望能够ؓ(f)国内IT的发展尽自己一份微薄的力量。最q看到很多学生朋友和我当q一h有方?Q所以把我的l历写出来与大家共勉Q希望能l刚如行的朋友们一点点帮助?br />
  一转眼我在IT行业学习(fn)工作已经七年多了Q这期间我做q网,写过MIS、数据库Q应用程序,做过通信软g、硬仉动、协议栈Q到现在做操作系l内核和IC相关开发,q中间走了很多弯路,也吃了不苦?br />
  我上的是一个三的高校Q就q同一个城市的人多数都不知道。因为学校不好也没有指望能靠学校名气找一个好工作。所有的希望都寄托在自己的努?上了Q大一开学前的假期我开始了学习(fn)。记得我买的W一本书是《计机基础DOS3.0》,大家别吓着了,其实当时已经普及(qing)了DOS6.22了,只是我在 书店里看CDOS4.0/5.0/6.0的书Q以为像p那样是第四、五、六册,记得当时到处找DOS1.0Q现在想想也q好我没有找刎ͼ(x)Q。开学前?学完了PASCALQ那时既没有计算Z没有人可以请教,我连E序是什么的概念都没有,只好死记背代码Q然后拿U写。我一直到大三才有了一?86Q在 q之前用U写了多程序我也记不清楚了Q只知道最长的一个我拿A4大小的草E纸写了30多页Q我的C语言、C++ 、VC都是在这L(fng)条g下入门的?br />
  所以说条g是可以克服的Q希望我的经历多给条g艰苦的同学们一点信心。第一ơ上机是在我姐夫的机房,我的心情Ȁ动的无与伦比Q但是一上机我立 d了眼Q他们用的是英文版的Win3.1Q我的那点DOS知识都见了鬼Q上机提心吊胆的一늞摸,一不小心把Word弄成了全屏,怎么都还不了原,当时 真是心急如焚,我以机器被我弄坏了。第一个C语言E序Q就是那个经典的HelloWorldQ我调了几个星期Q上机机?x)非常少Q也没有书告诉我开发环?QTC2.0Q需要设|,而且开始我都不知道有编译器Q我甚至自作聪明把写好的E序扩展名从.cҎ(gu).exeQ结果可惌知?br />
  大一学完了C、X86的汇~、数据结构、C++ 。由于精力都花在自学上了Q大一下四门课挂了彩,三类学校是q点好,挂上一二十门也照样毕业。不q扯q点_(d)我那么刻苦都?qing)不了格Q可见我们国家的计算机教育有多死ѝ?br />
  大二准备学VC和BCQ当旉以取舍,后来选了VCQ不为别的,只ؓ(f)书店里两本书QVC那本便宜6块钱。我的努力在班上无h能及(qing)Q学的日夜不 分,大三有了计算机后更是如此Q很多次父亲半夜教训我说我不要命了,我一直觉得自己基差,记忆又不行,条g也不?Q所以觉得只有多q旉才能赶上别h。居然后来有许多朋友说我有学计算机的天赋Q让我哭W不得。我用的?86Q?6M内存Q?G盘Q当时同学们的配 |都是P166MMXQ我安装一个Windows NT4.0需要一个通宵Q编译一个BC5.0向导生成的程序需要近两个时Q我的显C器是个二手的,辐射非常大,开机屏q冒火花Q看h很酷的:(x)Q。有一 ơ程序写的太久,觉得怎么白色的编辑器背景变成了Ԍ以ؓ(f)昄器坏了,后来才发现眼睛不行了Q不q说来也奇怪,C天我的视力还能保?.5Q真是个?qV但是就是那台破机器陪伴我两q_(d)让我学会(x)了VC、Delphi、SQL Server{。后来那台机器给我阿姨打字用Q据她说一天她正打的开心,一股青烟夹着火苗从显C器d来,之后它才寿终正寝?br />
  大三假期找了个机?x)在一个计机研究所实习(fn)Q与其说实习(fn)不如说是做义工,工作了两个月一分钱没有ѝ但是这两个月对我的发展帮助很大Q让我早一 步了解了C会(x)Q刚ȝ时候我当然是一H不通,在那里我熟?zhn)了网l,学会(x)了Delphi和Oracle。由于工作很认真Q得C比较好的评h(hun)Q在一位长者的 引荐下,我开始和他们一起做目Q这使我在大三大四就有了自己的收入,大四又找了两家MIS公司DQ虽焉不多Q但是在学生期间?000多的收入我已 l非常满了Q我l于用自p的钱把计机换了?br />
  大四下开始找工作Q这时我的工作经验已l比较多Q当然现在想想非常幼E)Q开始听父母的想去那个研I所Q实?fn)过那个部门也希望我能去Q但是不?道ؓ(f)什么最后不了了之,q种单位是比较官僚Q我一气之下就C我兼职的一个公司做MIS的Team Leader。在大三到毕业一q的旉Q做q了各种MISQ从煤气、烟厂、公安、铁路、饮食到高校Q什么有钱做什么,工作也很辛苦Q经常加班和熬通宵Q从 跟客戯需求到设计、编码、测试、交付都要上。那时觉得很有成感Q觉得自p不错Q现在想想真是很肤浅?br />
  刚走上工作岗位的学生很容易被误导Q各U开发工兯人眼q݋乱,同时也觉得很受公司器重,但这样工作永q是一个低层次的开发者。不要跟我说什?pȝ分析有多么多么重要,多么多么难。你以ؓ(f)自己跟用戯需求做设计是pȝ分析和设计了吗,国内又有几个公司能够做的很到位很规范Q我是ISO9000 内审员,也在Rational公司受过多次培训Q拿?个证书,q有一个公司让我去做CMM。这些我听过很多Q但是很多事情到内就变了性质Q一个公怸?通过了ISO9000或者CMMp规范了,我现在在一家有几十q历史的外企工作Q里面的理不是一般国内企业能?qing)的。作Z个毕业不久以前没有步入过C??x)的学生Q几乎不可能在很短的旉掌握pȝ分析和设计,面向对象、UML只是一个工P关键是h本n的思想Q不是说你熟(zhn)了C++ 、Rosep够做出好的设计,相反如果你具备了很高的素质,你可以用C写出比别人用C++更加模块化的E序?br />
  话说q一些,国内软g开发行业有一个怪圈Q很多h觉得VC > Delphi > VBQ真是很搞笑。这几个软g我都做过开发,说白了他们都是工P应该Ҏ(gu)应用的需要选择采用哪个Q而不是觉得哪个上层次。如果你因ؓ(f)用某个开发工具很?面子而选择的话Q只能说明你很浅薄。如果说层次Q那么这些工具都不上层次Q因为它们用来用去都是一些系l的APIQ微软的朋友不会(x)因ؓ(f)你记住他们多个 API或者多个cd?x)觉得你很了不vQ你永远只是他们的客P他们看重的是你口袋里的银子。我也做q系l内核,我也装q很多APIQ同h也不?x)看?那些使用q些API做二ơ开发的客户Q除非他能够作出自己独到的设计?br />
  至于有h认ؓ(f)C++ > C那更是让人笑掉大牙,不妨你去打听一下,现在有几个操作系l内核是用C++写的Q又有几个实时系l用的是C++Q当然我也不是说C++不好Q但是目前的 内核和实时系l中C++q无法与CҎ(gu)Q至于说C++适合做应用系l的开发那是另外一回事。所以我的观Ҏ(gu)不在于你用什么工具和语言Q而在于你q什么工 作。你的设计体C你的技术层ơ?br />
  q样q了一q我觉得非常苦闷Q做的大多数都是熟练工种的活Q个人技术上没有太多的提高也看不到方向。所以决定离开q个城市MPL更好的发展,q且打算攑ּ我以前的MIS转到通信行业?br />
  写到q里不能不提到我x友,我们是在来上前半年认识的,她大四在我公司实?fn),公司z֥l我写文档,我们的感情发展的很快。她告诉我很多事 情,她家原本是改革开攄W一Ҏ(gu)发户Q她母亲爱打牌,输掉了几百万Q还?gu)Ơ了很多债,Ҏ(gu)h友,但是她对他没有感情,只因Zl了Ҏ(gu)亲两万多块钱Q后 来还她写了四万块的借条Q她h友背叛过她ƈ且不止一ơ打她,现在逼她l婚Q不然就要她q钱。这人居然还是一个高校的老师Q她母亲把父亲给她的学费?了,因ؓ(f)拖欠学费Ҏ(gu)有办法拿到毕业证?br />
  Ҏ(gu)亲现在有病需要钱Q我拿出了自q一点积蓄ƈ且跟朋友们借了一些,替她交了学费q给Ҏ(gu)亲看病(后来才知道看病的钱又不知所l,pҎ(gu)?是不是有病我都不知道Q但她也是没有办法)。这个时候我家知道了一些事情,坚决反对我和她在一P她原来的h友也极力破坏。无奈之下我们决定早一定离开 q个伤心的城市,q且瞒着我们家。由于时间仓促,我只准备?000块钱Q她仅有的几癑֝׃被她母亲要去了,我买了三张票Q一张是中午的,两张是晚?的,中午我的家h把我送上船,他们一d我就下了船,我和她乘坐晚上的船离开了这个我和她生活了很多年的城市,带走的只是一w债务?br />
  没有来过上v的我们两个性倔强Q都不愿意去ȝ(ch)同学和朋友。来Ch傍晚6点半Q我们都不知道该d里,我们找了一?0块钱的旅馆,q个?间连H户都没有,7月䆾的天气酷热难耐,戉K里非帔R热。第二天我们开始租房子Q因n上的׃多,我们基本都是步行Q花了一个星期时_(d)不知道在东?了多圈后找C一?00块的房子Q但是我们都 不了解上h付三压一Q还要付半个月的中介费,C一些锅瓢盆后Q我们n上只?00块钱了。工作都q没有着落,q?00块钱要支持到我们拿到W一个月 工资Qؓ(f)了省钱我们自己做饭,每天买菜只花两块钱,奚w常喜Ƣ吃Q也可能她在大学l常挨饿的原因)Q看到她现在q样省吃俭用我真的很不忍心?br />
  她以前的h友也没有放过她,l常打电(sh)话来?d)扰Qƈ且来上v看她Q还说了不少恐吓她的话,她过于善良,说他以前毕竟帮助q她Q叫我不要与他一?见识。以后的每天在家是苦等面试通知Q原本我惌速找一家MIS公司解决眼前的困难,但是她坚持让我不要放弃自q理想Q终于功夫不负有心hQ我扑ֈ?一安信公司Q?000块的工资虽然赶不上MIS公司l我开出的价位Q但也够在上L(fng)存。她也找C工作Q第一天上班她哭了Q这是她来上L(fng)一ơ流泪,?心里很难受也很感动?br />
  ׃是全新的行业Q我把自己降C零点Q我学的VC、Delphi、数据库z不上用场,摆在我面前的是嵌入式、协议、信令一些我从未接触q的?识。我知道我没有退路,于是拼命的学?fn),我把自己当做一个应届毕业生一P一分努力一分收P半年q去我终于熟(zhn)了工作Qƈ且得C公司的表彎ͼ薪水也加 了一U。后面的日子里我们省吃P用,把欠朋友?万多块钱q了Q日子终于上了正轨。这时女朋友告诉我她惌研I生Q我也很支持Q于是她辞职在家备考?br />
  另外Q在q里我要感谢我的Project ManagerQ他原来是一个大通信公司的品经理,对h非常和善Q我从他那里学到了很多知识,而且他也l了我许许多多无U的帮助。在工作上他l我充分?I间和信仅R记得公司安排我l护一个接入服务器软gQ由于代码量不算太小Q?万行Q,资料和文都不齐全,我维护v来非常吃力,所以想重新把它做一遍,?叔Rg太支持,可能觉得工作量太大,但是他极力支持我Q私下里他让我放手去做,我的l护工作他挤旉做。在他的支持下,我花了半q时间完成了接入服务?的YӞq且实现了一个相对完整的TCP/IP协议栈。在q里我学?x)了嵌入式系l设计、驱动开发、TCP/IP和很多通信的知识,我花了一q时间终于?׃MIS开发{C通信行业Qƈ且站E了脚跟。我的开发大量是对硬件的直接操作Q不再受微Y的操作系l,VC、Delhpiq些开发工L(fng)U束Q我l于 看到了另外一片天I?br />
  我做事情喜欢q根问底Q随着开发的深入QY件开发与g联系来紧密,g知识的匮乏又Ҏ(gu)的发展生了障碍Q而且芯片技术基本上掌握在国?公司的手里,q对做系l设计是一个非常大的制U,一个新产品出来Q第一道利润(也往往是最丰厚的利润)常常都被I(xin)C公司如Intel、Motorola 赚去了,国内的厂商只能喝Ҏ(gu)。所以我军_解决自己的硬件技术障,q打离开通信行业Q进入IC设计相关领域?br />
  当然我明白如果我对硬件了解的非常,没有哪家IC公司?x)仁慈到招我q样一个一H不通的人来培训。所以我必须努力打好基础Q学一些相关知识ؓ(f)?后做准备。就像我开始从MIS转到通信一P我看q大量通信斚w的书Qƈ且给一个ISP做过RADIUS计费分拣収ͼ在这L(fng)背景下这安信公司才给了我 q个Z(x)。我在的通信公司是做pȝ设计的,有不PCB  Layoutg人员Q^常我注意向他们学习(fn)Q由于我做的是YӞ在公司看g资料不好意思,所以开始只好在家看Q刚来上工作我q箋一q都在加班, 后来不加了,因ؓ(f)我要挤出旉学习(fn)Q通常?2点左右睡Q第二天5点半P我上班比较早Q地铁上如果Z多,我也用来看书?br />
  学习(fn)当然不会(x)是一帆风的Q有些实在不懂的问题q累v来问g人员Q他们的帮助使我学习(fn)q度快了很多。因为在没有人点拨的情况下自学,我的一 半时间是花在解决疑难问题上,但这U问题经常是别h的一句话可以让我豁然开朗,我非常庆q我有这L(fng)学习(fn)环境。在后面的一q里Q我学会(x)了看g原理图, 学会(x)了简单的g设计 Q模拟电(sh)路方面还有不的差距Q,事情是q样的,当你安安份䆾做YӞ别h永远认ؓ(f)你是软g开发h员,在你开始学?fn)硬件时别h未必?x)认同,有位中兴通讯 的朋友还Ҏ(gu)说过Q一个h不可能把所有东襉K学完?br />
  我也明白q一点,但我希望自己做的更好。但当你熟?zhn)g后大家又?x)觉得你好像原本是软硬仉懂的Q同事们也都?fn)以为常了。这个时候我可以把硬 件资料堂堂正正的拿到公司看,没有人再大惊怪了。让我比较自豪的是我通过自己的努力做了一个IADQY交换的终端设备)pȝҎ(gu)Q包含Yg的选型、设 计等内容Q这个方案得C公司和同事们的认同,让我感到非常ƣ慰?br />
  技术是相辅相成的,当我的硬件有了一定的q步后,我的软g设计也有了很大的提高 Q我可以从更深层ơ理解问题。我做的接入服务器CPU是Motorola PowerPC 860Q熟(zhn)的?友都知道860 QMC与Y件的扚w数据传输通常采用BD表的方式Q硬件h员做驱动的时候习(fn)惯采用固定BD表,每接收或发送数据都数据从BD表拷贝到用户BufferQ?或从用户Buffer?贝到BD表。由于理解的比较深入Q我自己重新实现了这个过E,采用动态BD表的方式Q驱动从一个网口接收数据,提交l我的Y件进行三层交换,直至从另外的 接口发送出去,没有q行一ơ拷贝。这L(fng)设计大大提高了性能Qɾpȝ的指标接q理论倹{?br />
  软硬件的l合使我的设计水q上了一个台阶。我现在写的q个操作pȝQ编译后我把E序反编译成汇编Q找出其中不优化的代码,然后在CE序中进行调 整。D个例子,很多CPU没有专门的乘法指令,q个大家应该都知道,在这UCPU上进行一个乘法操作常怼(x)p大量的指令周期,有的朋友?x)说q个我知道?我会(x)量避免采用×P但是事情往往不是那么单,你知道C语言中数l的下标操作是怎么实现的吗Q仔l看看反汇编的代码你׃(x)明白Q同h通过下标的定?操作QC~译器会(x)有时候会(x)产生位移指o(h)Q但有时候会(x)用乘法实玎ͼ两者效率往往是天壤之别,所以明白这些问题你才能系l性能提升到极致。这些问题就不多?了,有兴的话以后可以共同探讨?br />
  话说q一点,我由L(fng)希望在Y件上做的比较深入的朋友们有机?x)学学硬件以及(qing)其它相关知识,其是做底层开发和嵌入式设计的。这对Y件技术的提高 有非常大的帮助,否则很多事情你只知道该这样但不会(x)明白Z么该q样。我q个观点在我现在的IC公司Project Manager那里也得C验证。他告诉我们公司现在802.11芯片产品的Y件经理原本是做该芯片g设计的,某某某原本是做Y件的Q现在在做ICQ类 似的例子q有很多Q只是在国内q样的风气不是非常流行?br />
  我有一些心得体?x)与大家分nQ只有当我干好本职工作后Q我才会(x)学习(fn)与工作关pM大的技术,q样公司的上司才不至于反感。在入门 阶段的问题我通常不去问那些资׃h?Q而是问一些资历比较浅的朋友,比如刚毕业不久的学生Q因Z们往往?x)跟你详l的讲解Q而资׃h士通常觉得你的问题太简单,所以回{的也很单,我又不好 意思多问?br />
  {技术上了一定的层次后我才会(x)问他们,他们也能l你比较深入的回{。另外,有些朋友说我Z(x)比较好,他们也希望能从事新的工作可惜没有Z(x)Q我 听了只有苦笑Q我的机?x)?解的人都应该知道Q我没有出生在什么IT世家Q)也没有谁一路提拔我Q所有的路都是自p出来的,我母亲去世比较早Q我的后母(我叫奚w姨)看着我努力过 来的Q一ơ她看我大年30q在写程序,她说像我q样努力木头都能学出来?br />
  我的最l目的是IC而不是PCBQ所以我下一步的准备开始学?fn)IC设计的知识。公司的同事没有懂IC设计的,后面的\又要靠自׃。我C不少 相关的书Q在|上也查了很多的资料Q我׃大量的时间去学习(fn)VHDLQƈ且用软gq行了一些简单的设计和仿真(没有?计ASICQ只是针对FPGAQ。随着学习(fn)的深入,我渐渐明白了IC设计的基本流E,同时也明白了q条路的艰辛。这个时候我已经做好了蟩槽的准备Q我向一 家业界又一定知名度的IC设计公司投了历,q过了O长的面试Q?个多时Q。其他的一切我都比较满意,唯独薪资差强人意Q我也明白原因,因ؓ(f)我是q个 行业的新人,我没有经验,我再一ơ将自清零了。公司老板问我6000多一个月能不能接受,我知道他也是照章办事。想x通信行业的朋友们Q基本上都是q薪 10万以上,月薪q万的也比比皆是Q朋友们也帮我介l了?待遇不错的公司。我该怎么选择Q当时我很犹豫,我热爱我的事业,我向往我的q求Q但我也是一个普通的人,我也需要养家糊口,我也x一点买房买车。生z?l我Z一道难题?br />
  爱因斯坦?3岁时说过一个h没有?0岁以前达成科学上的最大成,那他永远也不?x)有。这句话l了我很?的压力和震动Q我马上?6岁了Q离30只有四年旉Q我必须抓紧q几q宝늚旉Q努力达到我技术上的最高峰。ؓ(f)了这个理惻IZ能离自己的梦更近一 些,我选择了这家IC公司Q我明白自己的薪资和公司刚进来的士研究生相差无几,但ؓ(f)了今后的发展只能忍受Q一切又得重新开始。换行业是一个非常痛苦的q?E,其从一个春风得意的位置换到一个陌生的岗位Q感觉象从温暖的被子里钻出来跌冰水中,让h难以接受。在原来那家通信公司Q我是唯一两年旉涨了五次 工资的员工,公司和同事都l了我极大的认可Q工作上也常常被委以重Q。但现在q一切都成了q去Q在新的公司 我只是一个新人,没有人知道也没有人在意我q去的成l。我军_重新开始,我把自己看作 新毕业的学生Q我要用自己的努力得到公司的认可。进入新的行业是非常痛苦的,我告诉自己必d受这一切,虽然外面有很多诱惑,但是既然作出了选择我就不允 许自p易放弃?br />
  我现在已l在q家新公怸了一个多月的班,开始非常艰难,现在慢慢适应了。第一个月l束ӞTeam Leader找我谈话Q说我是新进员工中最优秀的一个,我心里很ƣ慰Q这也算Ҏ(gu)努力的一个肯定吧。在q里q要感谢我的x友,她给了我很大的支持和?舞, 每次在我动摇的时候她都在鼓励我,让我坚持自己的理惻I刚来上v是她让我不要勉强dMISQ这ơ也是她让我住了月薪过万的诱惑Q没有她我可能不?x)有?天的成W。现在的公司有自q操作pȝQ自qCPU、DSP和其它芯片,在这里我能学C界上最先进的技术,我们的设计开发不再完全依赖别人的g和系 l,q让我很开心。我打算{工作步入正轨后Q全力学?fn)新的知识,实现我的理想?br />  在后面的两年里我l自己定下了几个目标Q?br />
  1、努力做好本职工作,在工作上得到公司和同事们的认同;
  2、努力学?fn)ICg设计知识Q多向同事请教,q利用一切机?x)多实践Q?br />  3、实现我的实时操作系l的主要部分Q完成TCP/IP协议栈模块,q免费发布源代码Q?br />  4、和我女朋友l婚q买一套小房子Q这是最重要的,因ؓ(f)我明白事业是可以重来的,但是珍贵的感情很隑֤而复得?br />
  在这里提一下我现在开发的操作pȝQ它是一个实时嵌入式pȝQ目前支持以下特性:(x)

  a. 支持旉片轮转调度和Z优先U调度,最?4个优先Q?br />  b. 抢占式实时内核;
  c. Z便于ULQ主体用标准C实现Q?br />  d. 汇编代码非常,不到100行;
  e. 支持d理Q各d有独立的堆栈Q?br />  f. q程同步和通信目前完成了SemaphoreQMessage Queue正在调试Q?br />  g. 实现了定时系l调用;
  h. 可以在Windows上仿真调试?br />
  我还打算下一步实C先反{保护QEvent FlagQData PipeQ内存管理(以前实现q) Q驱动接口等。在q之后我q会(x)努力完善它,比如加入文gpȝQ协议栈、调试接口等。希望朋友们提出自己的意见和Q在此不胜感ȀQ?br />  后记Q?br />
  像有的朋友说的Q我的经历或怼(x)l一些朋友生误|在这里我必须说明一下。我来上以前学?fn)过于拼命,常常晚上只?个多时Q我w高1c?71Q那时只?08斤(我现?30多)Q家Z说我q样拼命zMq?0岁,但是当时的我太固执,我对他们说只要能实现理想z?0岁我够了。那时的?命我的w体受到了媄(jing)响,有一ơ早上突然腰肌剧痛难忍,痛的我倒在床上站不h。虽然我现在已经比较注意Q但有时候还?x)隐隐作痛。后来在x友说服了我, 来上以后我不再如此。我l常引用父亲的一句话w体是革命的本钱?br />
  而且我也发现拼命不是办法Q我可以熬一两个通宵Q最多的一ơ我q箋工作了三天三夜, 但是我半个月都没有恢复过来,q样是不是得不偿失?学习(fn)工作应该是一个长期的q程Q?像马拉松而不是百c_刺。我现在非常注意调整学习(fn)和工作的强度Q我要保证每天尽量有相对充沛的精力,一些年ȝ朋友觉得自己也应该拼命努力,q让我多有 些担心,如果我的故事能让你在学习(fn)工作上多一点兴,我会(x)感到很开心,但如果误g某些朋友Q让你做一些不值得的付出,我会(x)感到很内疚?br />
  技术没有贵׃分,我以前换行业是因q兴趣所_(d)而不是对哪个行业有什么偏见。我希望我的l历不要l朋友一个错误的导向Q觉得我始终向更 高的技术发展。其实各行各业做到顶都是很困难的。话又说回来虽然技术没有贵贱,但是门槛是有高低的,无论如何Q做IC的门槛要比做|页的高Q这一Ҏ(gu)?否认。国家各Uh才都是需要的Q但是作Z人奋发向上的xq是应该有的Q努力在自己喜欢的行业上做的更好Q而不应该停留在比较肤的层次上?br />
  我是一个自p得比较有自知之明的hQ或许我最大的优点是知道自己有很多缺?Q)。我的故事中很多的曲折和错误都是由我的缺炚w成的,希望大家用审慎的眼光看待我的l历Q不要被我的p巧语所qh。我学习(fn)有些随心所Ԍq给我带?了无的ȝ(ch)Q也大大ȝ了我的发展。记得我时候成l比较出Ԍ但是后来学习(fn)严重偏科Q导致我中学成W一再滑坡,也没有考上什么好的学校,时候的一?朋友Q当时的成W和我总Q但是没有我q个~点Q她上了清华Q后来在M国深造,在一个著名导师手下研I理论科学,q未不是一条更好的\?br />
  另外我的学习(fn)Ҏ(gu)也是在不断改善中的,q去的学?fn)过于讲I数量和旉Q那样学?fn)既苦而已效率不高。现在我非常注意学习(fn)的效率和技巧,q样才是??fn)的捷径Q当然不是指投机取yQ,比如说学一相对陌生的技术,如果有条Ӟ不妨问一问有l验的hQ不需要问很多Q往往他不l意的几句话?x)给你非常大的?助,甚至过你看一个星期的书。带着q样的思想再去学习(fn)你会(x)节省很多旉Q这样何乐不为呢Q?br />
  q些q中我学了不的东西Q由于开始非常盲目,所以学的东西杂乱无章,现在回想h让我啼笑皆非Q我把大量的旉费在一些没有必要深入了解的 知识上,毕竟一个h的精力是有限度的。很多朋友和我一样都背过五笔字ŞQ的它是个不错的输入法Q但是对一个研发h员它l对不值得你去背,你的旉应该?在有价值的地方。我q样的事情还做过很多Q我背过CCED、WPS的命令和快捷键,在dBase基本退出历史舞台后我还׃很多旉d?fn)它的用。所?我的学习(fn)在前期缺乏规划,没有明确的短期目的、中期目标,只有一个虚无飘渺的长期的理惟뀂这像做设计一P好的设计是从需求抽象到代码有很多过E,而不 能得C需求就立刻开始开始编码?br />
  当然q么些年的学?fn)和工作多多少有些收获Q下面我说说我的一些学?fn)的心得Q这些方法未必正,我也在不断探索和改进中。我的学?fn)和工作有相?明确的目标,我不?x)一时心动而去学习(fn)某一技术,在下军_之前我会(x)考虑很多Q包括长期的发展Q个\U的规划Q需要付出的代h(hun)、可能遇到的困难?qing)解决的办?{等Q在军_后还?x)制定更加明的计划Q包括短期、中期和长期的,w边可以利用到的资源Q包括好的书c、资料、Yg环境Q也包括有经验的朋友或者师 长)Q以?qing)每一个阶D|怎么q渡到高一阶段的计?Q往往在一个学?fn)阶D一旦上路后?x)走的相寚w利,但是跨阶D通常比较ȝ(ch)Q比如从学习(fn)基础知识转到实践。另外我C也有自己的方法,现在世面上高质量的书 q不如低质量书多Q对于一个陌生的技术,往往在第一ơ买书会(x)选择错误Q即使买C本好书但是它的方向也未必适合你,所以我通常?x)先在网上查找一些该技术的 介绍Q有了一点点概念后再M一本比较薄、相对便宜ƈ且内容相Ҏ(gu)泛而谈的书Q这是国内作者最善于写的书:(x)Q?Q再把它览一遍后我就?x)基本明白这门技术的要点Q后面买书和制定计划׃(x)明确的多 。否则一开始就x本好书往往比较困难Q而且买回来后努力学习(fn)Q有时候学了一半才发现是本低质量的书或者是相对q时技术,让h非常懊恼。另外让有经验的?帮你介绍Q通常也是一个不错的选择?/div>

ZT文萃 2014-05-07 14:22 发表评论
]]>
ZTQ壮哉,我大利坚!http://www.tkk7.com/longturi/archive/2014/05/06/413314.htmlZT文萃ZT文萃Tue, 06 May 2014 04:02:00 GMThttp://www.tkk7.com/longturi/archive/2014/05/06/413314.htmlhttp://www.tkk7.com/longturi/comments/413314.htmlhttp://www.tkk7.com/longturi/archive/2014/05/06/413314.html#Feedback0http://www.tkk7.com/longturi/comments/commentRss/413314.htmlhttp://www.tkk7.com/longturi/services/trackbacks/413314.html下文转蝲自:(x)
http://www.sbanzu.com/topicdisplay.asp?BoardID=8&Page=1&TopicID=4136822
转蝲不代表赞同作者,仅仅是记录?br />
有一个名字,全世界所有的独裁者听到都?x)惊慌?br />有一个名字,一切热pq人民听到都要赞扬?br />有一个名字,w在阴暗中谋杀癑֧的歹徒对她咬牙切ѝ?br />有一个名字,阛_下(f)望和q的Z对她寄予厚望?br />是她一ơ又一ơ的把世界从恉手中拯救Q?br />是她一ơ又一ơ的l予恐惧中的人类希望?br />是谁挡住了纳_的铁蹄Q?br />是谁支援了远东的战场Q?br />是谁把集中营解放Q?br />是谁q日寇投降Q?br />是谁那隔开同胞(yu)的高墙推倒?
是谁?yn)L了伊阿独裁流氓?
奚w丄火炬Q在黑暗中指引我们方向!
她宣a的真理,时时回响在我们xQ?br />虚伪者越是污蔑她虚伪Q?br />正直者越是坚定对她的信ԒQ?br />她的伟大我们一M忘!
你问我她长的什么模P
Ҏ(gu)炙热通红的火焎ͼ
Ҏ(gu)宽广蔚蓝的大P
Ҏ(gu)U洁耀眼的白光Q?br />你问我她的名Q?br />正告你!
利坚!
人类的希望!
壮哉Q我大美利坚Q?/span>

ZT文萃 2014-05-06 12:02 发表评论
]]>
谈谈hashCodehttp://www.tkk7.com/longturi/archive/2014/05/04/413189.htmlZT文萃ZT文萃Sat, 03 May 2014 22:23:00 GMThttp://www.tkk7.com/longturi/archive/2014/05/04/413189.htmlhttp://www.tkk7.com/longturi/comments/413189.htmlhttp://www.tkk7.com/longturi/archive/2014/05/04/413189.html#Feedback0http://www.tkk7.com/longturi/comments/commentRss/413189.htmlhttp://www.tkk7.com/longturi/services/trackbacks/413189.htmlhttp://www.cnblogs.com/chenssy/p/3651218.html版权归作者所有?br />

hashCode的作?/h2>

      要想了解一个方法的内在原理Q我们首先需要明白它是干什么的Q也是q个Ҏ(gu)的作用。在讲解数组Ӟjava提高(十八Q?-----数组Q,我们提到数组是java中效率最高的数据l构Q但?#8220;最?#8221;是有前提的。第一我们需要知道所查询数据的所在位|。第二:(x)如果我们q行q代查找Ӟ数据量一定要,对于大数据量而言一般推荐集合?/p>

      在Java集合中有两类Q一cLListQ一cLSet他们之间的区别就在于List集合中的元素师有序的Q且可以重复Q而Set集合中元素是无序不可?复的。对于List好处理,但是对于Set而言我们要如何来保证元素不重复呢Q通过q代来equals()是否相等。数据量还可以接受Q当我们的数据量 大的时候效率可惌知Q当然我们可以利用算法进行优化)。比如我们向HashSet插入1000数据Q难道我们真的要q代1000ơ,调用1000?equals()Ҏ(gu)吗?hashCode提供了解x案。怎么实现Q我们先看hashCode的源?Object)?/p>

public native int hashCode();

      它是一个本地方法,它的实现与本地机器有养Iq里我们暂且认ؓ(f)他返回的是对象存储的物理位置Q实际上不是Q这里写是便于理解)。当我们向一个集合中d?个元素,集合?x)首先调用hashCodeҎ(gu)Q这样就可以直接定位它所存储的位|,若该处没有其他元素,则直接保存。若该处已经有元素存在,p?equalsҎ(gu)来匹配这两个元素是否相同Q相同则不存Q不同则散列到其他位|(具体情况请参考(Java提高(Q?----HashMapQ)。这?处理Q当我们存入大量元素时就可以大大减少调用equals()Ҏ(gu)的次敎ͼ极大地提高了效率?/p>

      所?strong>hashCode在上面扮演的角色为寻?/strong>Q寻 找某个对象在集合中区域位|)。hashCode可以集合分成若q个区域Q每个对象都可以计算Z们的hash码,可以hash码分l,每个分组对应 着某个存储区域Q根据一个对象的hash码就可以定该对象所存储区域Q这样就大大减少查询匚w元素的数量,提高了查询效率?/p>

hashCode对于一个对象的重要?/h2>

      hashCode重要么?不重要,对于List集合、数l而言Q他是一个篏赘,但是对于HashMap、HashSet、HashTable而言Q它?得异帔R要。所以在使用HashMap、HashSet、HashTable时一定要注意hashCode。对于一个对象而言Q其hashCodeq程?是一个简单的Hash法的实玎ͼ其实现过E对你实现对象的存取q程起到非常重要的作用?/p>

      在前面LZ提到了HashMap和HashTable两种数据l构Q虽然他们存在若q个区别Q但是他们的实现原理是相同的Q这里我以HashTableZ阐述hashCode对于一个对象的重要性?/p>

      一个对象势必会(x)存在若干个属性,如何选择属性来q行散列考验着一个h的设计能力。如果我们将所有属性进行散列,q必定会(x)是一个糟p的设计Q因为对象的 hashCodeҎ(gu)无时无刻不是在被调用Q如果太多的属性参与散列,那么需要的操作数时间将?x)大大增加,q将严重影响E序的性能。但是如果较?yu)属相参?散列Q散列的多样性会(x)削弱Q会(x)产生大量的散?#8220;冲突”Q除了不能够很好的利用空间外Q在某种E度也会(x)影响对象的查询效率。其实这两者是一个矛盾体Q散列的 多样性会(x)带来性能的降低?/p>

      那么如何对对象的hashCodeq行设计QLZ也没有经验。从|上查到了这样一U解x案:(x)讄一个缓存标识来~存当前的散列码Q只有当参与散列的对象改变时才会(x)重新计算Q否则调用缓存的hashCodeQ这样就可以从很大程度上提高性能?/p>

      在HashTable计算某个对象在table[]数组中的索引位置Q其代码如下Q?/p>

int index = (hash & 0x7FFFFFFF) % tab.length;

      Z么要&0x7FFFFFFFQ因为某些对象的hashCode可能?x)?f)负|?x7FFFFFFFq行与运可以确保indexZ个正 数。通过q步我可以直接定位某个对象的位置Q所以从理论上来说我们是完全可以利用hashCode直接定位对象的散列表中的位置Q但是ؓ(f)什么会(x)存在一?key-value的键值对Q利用key的hashCode来存入数据而不是直接存放value呢?q就关系HashTable性能问题的最重要的问 ?Hash冲突Q?/p>

      我们知道冲突的生是׃不同的对象生了相同的散列码Q假如我们设计对象的散列码可以确?9.999999999%的不重复Q但是有一U绝对且几乎?可能遇到的冲H你是绝寚w免不了的。我们知道hashcodeq回的是intQ它的值只可能在int范围内。如果我们存攄数据过了int的范围呢Q这 样就必定?x)生两个相同的indexQ这时在index位置处会(x)存储两个对象Q我们就可以利用key本n来进行判断。所以具有相索引的对象,在该 index位置处存在多个对象,我们必须依靠key的hashCode和key本n来进行区分?/p>

hashCode与equals

      在Java中h(hun)ashCode的实现L伴随着equalsQ他们是紧密配合的,你要是自p计了其中一个,p设计另外一个。当然在多数情况下,q两?Ҏ(gu)是不用我们考虑的,直接使用默认Ҏ(gu)可以帮助我们解军_多问题。但是在有些情况Q我们必要自己动手来实现它Q才能确保程序更好的q作?/p>

      对于equalsQ我们必遵循如下规则:(x)

      对称性:(x)如果x.equals(y)q回?#8220;true”Q那么y.equals(x)也应该返回是“true”?

      反射性:(x)x.equals(x)必须q回?#8220;true”?

      cL性:(x)如果x.equals(y)q回?#8220;true”Q而且y.equals(z)q回?#8220;true”Q那么z.equals(x)也应该返回是“true”?

      一致性:(x)如果x.equals(y)q回?#8220;true”Q只要x和y内容一直不变,不管你重复x.equals(y)多少ơ,q回都是“true”?

      M情况下,x.equals(null)Q永q返回是“false”Qx.equals(和x不同cd的对?永远q回?#8220;false”?

      对于hashCodeQ我们应该遵循如下规则:(x)

      1. 在一个应用程序执行期_(d)如果一个对象的equalsҎ(gu)做比较所用到的信息没有被修改的话Q则对该对象调用hashCodeҎ(gu)多次Q它必须始终如一地返回同一个整数?/p>

      2. 如果两个对象Ҏ(gu)equals(Object o)Ҏ(gu)是相{的Q则调用q两个对象中M对象的hashCodeҎ(gu)必须产生相同的整数结果?/p>

      3. 如果两个对象Ҏ(gu)equals(Object o)Ҏ(gu)是不相等的,则调用这两个对象中Q一个对象的hashCodeҎ(gu)Q不要求产生不同的整数结果。但如果能不同,则可能提高散列表的性能?/p>

      至于两者之间的兌关系Q我们只需要记住如下即可:(x)

      如果x.equals(y)q回“true”Q那么x和y的hashCode()必须相等?

      如果x.equals(y)q回“false”Q那么x和y的hashCode()有可能相{,也有可能不等?

      理清了上面的关系我们q道他们两者是如何配合h工作的。先看下图:(x)

2014040701_thumb2

      整个处理程是:(x)

      1、判断两个对象的hashcode是否相等Q若不等Q则认ؓ(f)两个对象不等Q完毕,若相{,则比较equals?/p>

      2、若两个对象的equals不等Q则可以认ؓ(f)两个对象不等Q否则认Z们相{?/p>

      实例Q?/p>

复制代码
public class Person {     private int age;     private int sex;    //0Q男Q?Q女     private String name;      private final int PRIME = 37;      Person(int age ,int sex ,String name){         this.age = age;         this.sex = sex;         this.name = name;     }      /** 省略getter、setterҎ(gu) **/      @Override     public int hashCode() {         System.out.println("调用hashCodeҎ(gu)...........");          int hashResult = 1;         hashResult = (hashResult + Integer.valueOf(age).hashCode() + Integer.valueOf(sex).hashCode()) * PRIME;         hashResult = PRIME * hashResult + ((name == null) ? 0 : name.hashCode());          System.out.println("name:"+name +" hashCode:" + hashResult);          return hashResult;     }      /**      * 重写hashCode()      */     public boolean equals(Object obj) {         System.out.println("调用equalsҎ(gu)...........");          if(obj == null){             return false;         }         if(obj.getClass() != this.getClass()){             return false;         }         if(this == obj){             return true;         }          Person person = (Person) obj;          if(getAge() != person.getAge() || getSex()!= person.getSex()){             return false;         }          if(getName() != null){             if(!getName().equals(person.getName())){                 return false;             }         }         else if(person != null){             return false;         }         return true;     } }
复制代码

      该BeanZ个标准的Java BeanQ重新实ChashCodeҎ(gu)和equalsҎ(gu)?/p>

复制代码
public class Main extends JPanel {      public static void main(String[] args) {         Set<Person> set = new HashSet<Person>();          Person p1 = new Person(11, 1, "张三");         Person p2 = new Person(12, 1, "李四");         Person p3 = new Person(11, 1, "张三");         Person p4 = new Person(11, 1, "李四");          //只验证p1、p3         System.out.println("p1 == p3? :" + (p1 == p3));         System.out.println("p1.equals(p3)?:"+p1.equals(p3));         System.out.println("-----------------------分割U?-------------------------");         set.add(p1);         set.add(p2);         set.add(p3);         set.add(p4);         System.out.println("set.size()="+set.size());     } }
复制代码

       q行l果如下Q?/p>

2014040702_thumb

      从上囑֏以看出,E序调用四次hashCodeҎ(gu)Q一ơequalsҎ(gu)Q其set的长度只?。addҎ(gu)q行程完全W合他们两者之间的处理程?/p>



ZT文萃 2014-05-04 06:23 发表评论
]]>
转帖QJava邮g开?----?sh)子邮g的基本概念介l?/title><link>http://www.tkk7.com/longturi/archive/2014/05/04/413188.html</link><dc:creator>ZT文萃</dc:creator><author>ZT文萃</author><pubDate>Sat, 03 May 2014 22:19:00 GMT</pubDate><guid>http://www.tkk7.com/longturi/archive/2014/05/04/413188.html</guid><wfw:comment>http://www.tkk7.com/longturi/comments/413188.html</wfw:comment><comments>http://www.tkk7.com/longturi/archive/2014/05/04/413188.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/longturi/comments/commentRss/413188.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/longturi/services/trackbacks/413188.html</trackback:ping><description><![CDATA[下文来自Q?div>http://www.cnblogs.com/chenssy/archive/2012/12/09/2809874.html</div>版权归作者所有?br /><br /><div><span style="font-size: large;">      ?sh)子邮g用于|上的信心传递和交流Q它是最重要?span style="font-family: Calibri;">Internet</span>服务之一。据l计<span style="font-family: Calibri;">Internet</span>?span style="font-family: Calibri;">30%</span>的业务是?sh)子邮g有关的。同时我们也不可否认它在我们的日常生zR工作办公方面扮演着很重要的角色。譬如:(x)许多办公自动化项?span style="font-family: Calibri;">(OA)</span>中都要附带发送邮件的功能Q如果还要?span style="font-family: Calibri;">OutLook</span>{手工方式就不适合Q在q个高速的时代Q我们需要提供工作效率,让工作能够自动化。同时在许多|站中也都需要附带发送邮件的功能Q给新注册的用户发送一包含其注册信息的欢q?span style="font-family: Calibri;">E-Mail</span>、将|站的最新活动信息通过<span style="font-family: Calibri;">E-Mail</span>发送给所有的注册?x)员{等?/span> <p> </p> <p><span style="font-size: large;">       在开始电(sh)子邮件开发前Q我们需要明白一下几个概念:(x)?sh)子邮gpȝ、邮件服务器、电(sh)子邮件、邮件客L(fng)软g、邮件传输协议、电(sh)子邮件的传输q程?/span></p> <p> </p> <p><span style="color: #ff0000; font-size: large;"><span style="font-size: large;">       </span><span style="font-size: x-large;">?sh)子邮gpȝ</span></span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>?传统的邮政服务相cMQ电(sh)子邮件系l由?sh)子邮局、电(sh)子邮件发送、接收系l组成。发送者和接收者通过?sh)子邮g发送、接收系l来发送和接收?sh)子邮gQ他们实?上是q行在计机上的邮g客户端程序。电(sh)子邮局L(fng)一个桥梁的作用Q它实际上是q行在服务器上的邮g服务器程序。电(sh)子邮件的处理程也和邮政服务相类伹{?/span></p> <p> </p> <p>           <img src="http://img.my.csdn.net/uploads/201212/09/1355026996_7193.jpg" alt="" /></p> <p><span style="color: #ff0000; font-size: large;"><span style="font-size: large;">       </span><span style="font-size: x-large;">邮g服务?/span></span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>邮g服务器是一U用来负责电(sh)子邮件收发管理的讑֤。在<span style="font-family: Calibri;">Internet</span>上提供了大量的电(sh)子邮件服务器Q如Q?span style="font-family: Calibri;">126</span>?span style="font-family: Calibri;">163</span>?span style="font-family: Calibri;">hotmail…</span>?/span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>?sh)子邮g服务器主要提供的功能Q?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>    1?/span>  接收用户投递的邮g?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>    2?/span>  用h递进来的邮g转发l目标邮件服务器?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>    3?/span>  接收其他?sh)子邮g服务器{发来的邮件ƈ该邮件存储到其管理的用户邮中?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>    4?/span>  为前来读取邮件的用户提供d邮g的服务?/span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>?件服务器构成了电(sh)子邮件系l的核心。每个收信h都有一个位于某个邮件服务器上的邮箱(mailbox)。Bob的邮q于管理和l护已经发送给他的邮g?息。一个邮件消息的典型旅程是从发信人的用户代理开始,邮g发信人的邮g服务器,中{到收信h的邮件服务器Q然后投递到收信人的邮箱中。当Bobx看自 q邮箱中的邮g消息Ӟ存放该邮q邮g服务器将以他提供的用户名和口令认证他。Alice的邮件服务器q得处理Bob的邮件服务器出故障的情况。如?Alice的邮件服务器无法把邮件消息立即递送到Bob的邮件服务器QAlice的服务器把它们存放在消息队?message queue)中,以后再尝试递送。这U尝试通常?0分钟左右执行一ơ:(x)要是q了若干天仍未尝试成功,该服务器把q个消息从消息队列中去除掉,同时以另 一个邮件消息通知发信?即Alice)?/span></p> <p> </p> <p><span style="color: #ff0000; font-size: large;"><span style="font-size: large;">       </span><span style="font-size: x-large;">?sh)子邮g</span></span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>?sh)子邮g是一U通过|络实现怺传送和接收信息的现代化通信方式。它?span style="font-family: Calibri;">—</span>U用?sh)子手段提供信息交换的通信方式Q是<span style="font-family: Calibri;">Internet</span>应用最q的服务Q通过|络的电(sh)子邮件系l,用户可以用非怽廉的hQ以非常快速的方式Q与世界上Q何一个角落的|络用户联系Q这些电(sh)子邮件可以是文字、图像、声音等各种方式。同Ӟ用户可以得到大量免费的新闅R专题邮Ӟq实现轻杄信息搜烦(ch)?/span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>?sh)子邮g׃和内容两个部分l成。信又U邮件头Q电(sh)子邮件服务器Ҏ(gu)信封上的信心来传递邮件的。内容称为邮件体Q它用于提供邮g的具体内宏V?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>Internet</span>上的?sh)子邮g地址全球唯一Q其格式?#8220;邮箱?span style="font-family: Calibri;">@</span>邮g服务器域?#8221;。域Q邮件域Q是?sh)子邮g服务器的基本理单位Q邮件服务以域ؓ(f)基础Q每个邮对应一个用戗其中邮件服务器域名必须是已注册?span style="font-family: Calibri;">DNS</span>域名Qƈ且必要?span style="font-family: Calibri;">MX(</span>邮g交换?span style="font-family: Calibri;">)</span>记录匚w?span style="font-family: Calibri;">DNS</span>用于域名、主机名解析?span style="font-family: Calibri;">IP</span>地址?span style="font-family: Calibri;">MX</span>记录指向该域名的邮g服务器主录,为邮件服务专用?/span></p> <p> </p> <p><span style="color: #ff0000; font-size: large;"><span style="font-size: large;">       </span><span style="font-size: x-large;">邮g客户端Y?/span></span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span></span>邮g客户端Y件负责与邮g服务器通讯Q主要用于帮助用户将邮g发送给<span style="font-family: Calibri;">SMTP</span>服务器和<span style="font-family: Calibri;">POP3/IMAP</span>邮g服务器读取用L(fng)?sh)子邮g。邮件客L(fng)软g通常集撰写、发送、接攉件于一体?/span></p> <p> </p> <p> </p> <p><span style="color: #ff0000; font-size: large;"><span style="font-size: large;">       </span><span style="font-size: x-large;">?sh)子邮?/span></span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>每一个电(sh)子邮件服务器之上都可以开始多个电(sh)子邮,?sh)子邮箱也称之?f)<span style="font-family: Calibri;">E-Mail</span>地址。它cM于现实生zM的通讯地址Q用户通过它接受别人发来的?sh)子邮g和向别h发送电(sh)子邮件?/span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>?sh)子邮箱的获得需要在?sh)子邮g服务器上q行甌Q确切的_(d)?sh)子邮箱其实是用户在邮件服务器上申L(fng)一个̎戗邮件服务器把接收到的邮件保持到为某个̎h分配的邮q间中Q用户通过其申L(fng)用户名和密码登陆到邮件服务器上查看该地址已经收到的电(sh)子邮件?/span></p> <p> </p> <p><span style="color: #ff0000; font-size: large;"><span style="font-size: large;">       </span><span style="font-size: x-large;">?sh)子邮g的传输过E?/span></span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span></span>?sh)子邮gpȝ采用客户<span style="font-family: Calibri;">/</span>服务器模式。电(sh)子邮件传送需要用C?span style="font-family: Calibri;">3</span>个重要模块:(x)</span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>MUA</span>Q?span style="font-family: Calibri;">Mail User Agent</span>Q邮件用户代理)Q用户通过它与?sh)子邮g服务器打交道?span style="font-family: Calibri;">MUA</span>实际上就是邮件客L(fng)软g?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>MTA</span>Q?span style="font-family: Calibri;">Mail Transfer Agent</span>Q邮件传输代理)Q它主要负责处理所有接收和发送的邮gQؓ(f)<span style="font-family: Calibri;">MUA</span>或?span style="font-family: Calibri;">MTA</span>提供邮g发送服务,接收其他<span style="font-family: Calibri;">MTA</span>发送过来的邮g?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>MDA</span>Q?span style="font-family: Calibri;">Mail Delivery Agent</span>Q邮件投递代理)Q它负责邮g本地投递。当<span style="font-family: Calibri;">MTA</span>军_某邮件发送本地用hQ?span style="font-family: Calibri;">MTA</span>邮件交l?span style="font-family: Calibri;">MDA</span>E序q行分发Q也是说投递到用户的?/span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>具体的传递过E如下:(x)</span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>     1?/span>  发g人利?span style="font-family: Calibri;">MUA</span>邮件发送给<span style="font-family: Calibri;">MTA</span>?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>     2?/span> <span style="font-family: Calibri;">MTA</span>收到邮g后判断收件h是不是本地̎P如果是本地̎P交由<span style="font-family: Calibri;">MDA</span>投送到该̎L(fng)邮箱中,完成发送过E,跛_W?span style="font-family: Calibri;">5</span>步。如果不是则执行下一步骤?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>     3?/span> <span style="font-family: Calibri;">MTA</span>Ҏ(gu)光件中l{发设|来军_如何转发邮g?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>     4?/span>  最l目的的<span style="font-family: Calibri;">MTA</span>受到的交给他的<span style="font-family: Calibri;">MDA</span>处理Q有<span style="font-family: Calibri;">MDA</span>邮件投递到收g人的邮箱中?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>     5?/span>  收g人利?span style="font-family: Calibri;">MUA</span>通过<span style="font-family: Calibri;">POP/IMAP</span>协议q接到邮所在的服务器,h查看自己的收件箱是否有邮Ӟ如果有邮Ӟ会(x)通过它传送个收g人的<span style="font-family: Calibri;">MUA</span>?/span></p> <p><span style="font-size: large;"><span style="color: #0070c0;"><span style="font-size: large;">       </span>注意Q提C邮件访问服务的?/span><span style="color: #0070c0;"><span style="font-family: Calibri;">POP</span></span><span style="color: #0070c0;">或?/span><span style="color: #0070c0;"><span style="font-family: Calibri;">IMAP</span></span><span style="color: #0070c0;">服务器YӞ而ƈ非当初收下邮件的</span><span style="color: #0070c0;"><span style="font-family: Calibri;">MTA</span></span><span style="color: #0070c0;">Q两者的角色是分ȝ?/span></span></p> <p><span style="color: #0070c0;"> </span></p> <p><span style="color: #ff0000; font-size: large;"><span style="font-size: large;">       </span><span style="font-size: x-large;">邮g传输协议</span></span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>?sh)子邮g服务传输主要是用C?span style="font-family: Calibri;">3</span>中网l协?/span></p> <p><span style="font-size: large;"><span style="color: #ff0000;"><span style="font-family: Calibri;">        SMTP(</span></span><span style="color: #ff0000;">单邮件传输协?/span><span style="color: #ff0000;"><span style="font-family: Calibri;">)</span></span></span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>SMTP</span>?span style="font-family: Calibri;">Simple Mail Transfer Protocol</span>。标?span style="font-family: Calibri;">TCP</span>端口?span style="font-family: Calibri;">25</span>?span style="font-family: Calibri;">MUA</span>邮件发送到<span style="font-family: Calibri;">MTA</span>Q?span style="font-family: Calibri;">MTA</span>邮件发送给下一?span style="font-family: Calibri;">MTA</span>Q都是要使用<span style="font-family: Calibri;">SMTP</span>?span style="font-family: Calibri;">SMTP</span>的目标是可靠高效C送邮Ӟ它独立于传送子pȝ而且仅要求一条可以保证传送数据单元顺序的通道?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>SMTP</span>是一?#8220;单向”的协议,它不能用户从其他邮g服务器收取邮件。它本n是采用客?span style="font-family: Calibri;">/</span>服务器模式,负责发送邮件的<span style="font-family: Calibri;">SMTP</span>q程是<span style="font-family: Calibri;">SMTP</span>客户端,负责接收邮g?span style="font-family: Calibri;">SMTP</span>q程是<span style="font-family: Calibri;">SMTP</span>服务器。一个完整的<span style="font-family: Calibri;">SMTP</span>通信q程主要包括建立q接、传送邮件、释放连接三个过E?/span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>建立q接Q首先由发g人将要发送的邮g发送到邮g~存Q?span style="font-family: Calibri;">SMTP</span>客户端定期扫描邮件缓存,一旦发现有邮gQ就?span style="font-family: Calibri;">SMTP</span>服务器徏?span style="font-family: Calibri;">TCP</span>q接Q然后发?span style="font-family: Calibri;">HRLLO</span>命o(h)以附上发送方的主机名?/span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>传送邮Ӟ(x)<span style="font-family: Calibri;">SMTP</span>客户端?span style="font-family: Calibri;">MAIL</span>命o(h)开始传送邮Ӟ该命令提供发件h的地址Q然后执?span style="font-family: Calibri;">RCPT</span>命o(h)Qƈ提供收g人地址Q最后执?span style="font-family: Calibri;">DATA</span>命o(h)传送邮件内宏V?/span></p> <p><span style="font-size: large;"><span style="font-size: large;">       </span>释放q接Q邮件传送完毕后Q?span style="font-family: Calibri;">SMTP</span>客户端发?span style="font-family: Calibri;">OUT</span>命o(h)h关闭<span style="font-family: Calibri;">TCP</span>q接?/span></p> <p><span style="font-size: 18px;"><span style="color: #ff0000;"><span style="font-family: Calibri;"><span style="font-size: large;">         </span>POP</span></span><span style="color: #ff0000;">Q邮局协议Q?/span></span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">         </span>POP</span>?span style="font-family: Calibri;">Post Office Protocol</span>。标?span style="font-family: Calibri;">TCP</span>端口?span style="font-family: Calibri;">110</span>。主要用于电(sh)子邮件的接收?span style="font-family: Calibri;">MUA</span>l由<span style="font-family: Calibri;">POP</span>协议q接?span style="font-family: Calibri;">MTA</span>的用h件箱Q以d或下载用户在收g׃邮g?/span></p> <p><span style="font-size: large;">    目前用的较多?span style="font-family: Calibri;">POP</span>协议?span style="font-family: Calibri;">POP3</span>?span style="font-family: Calibri;">POP3</span>使用<span style="font-family: Calibri;"> TCP </span>作ؓ(f)传输协议?/span></p> <p><span style="font-size: 18px;"><span style="color: #ff0000;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>IMAP</span></span><span style="color: #ff0000;">Q?/span><span style="color: #ff0000;"><span style="font-family: Calibri;">Internet</span></span><span style="color: #ff0000;">信息讉K协议Q?/span></span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>IMAP</span>?span style="font-family: Calibri;">Internet Message Access Protocol</span>。标?span style="font-family: Calibri;">TCP</span>端口?span style="font-family: Calibri;">143</span>Q它也是?span style="font-family: Calibri;">MUA</span>?span style="font-family: Calibri;">MTA</span>收取邮g。目标球<span style="font-family: Calibri;">IMAP</span>协议的版本ؓ(f)<span style="font-family: Calibri;">IMAP4</span>?/span></p> <p><span style="font-size: large;"><span style="font-family: Calibri;"><span style="font-size: large;">       </span>POP</span>?span style="font-family: Calibri;">IMAP</span>两者都可以用于收取邮gQ都是采用客?span style="font-family: Calibri;">/</span>服务器模式,两者最主要的区别就在于他们(g)索邮件的方式不同。?span style="font-family: Calibri;">POP</span>Ӟ邮gȝ在服务器中个Q一旦接攉Ӟ邮g都从服务器上下蝲到用戯机上。?span style="font-family: Calibri;">IMAP</span>则能够然该用户了解到服务器上存储邮g的情况,已下载的邮g仍然滞留在服务器中,以便于实现邮件归和׃n?/span></p></div><img src ="http://www.tkk7.com/longturi/aggbug/413188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/longturi/" target="_blank">ZT文萃</a> 2014-05-04 06:19 <a href="http://www.tkk7.com/longturi/archive/2014/05/04/413188.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转帖Q渐析java的浅拯和深拯http://www.tkk7.com/longturi/archive/2014/05/04/413187.htmlZT文萃ZT文萃Sat, 03 May 2014 22:15:00 GMThttp://www.tkk7.com/longturi/archive/2014/05/04/413187.htmlhttp://www.tkk7.com/longturi/comments/413187.htmlhttp://www.tkk7.com/longturi/archive/2014/05/04/413187.html#Feedback0http://www.tkk7.com/longturi/comments/commentRss/413187.htmlhttp://www.tkk7.com/longturi/services/trackbacks/413187.htmlhttp://www.cnblogs.com/chenssy/p/3308489.html版权归作者所有?br />

      首先来看看浅拯和深拯的定义:(x)

      拷贝:(x)使用一个已知实例对新创建实例的成员变量逐个赋|q个方式被称为浅拯?/p>

      深拷贝:(x)当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量|q要为引用类型的成员变量创徏新的实例Qƈ且初始化为Ş式参数实例倹{这个方式称为深拯

      也就是说拷贝只复制一个对象,传递引用,不能复制实例。而深拯对对象内部的引用均复Ӟ它是创徏一个新的实例,q且复制实例?/p>

      对于拷贝当对象的成员变量是基本数据cdӞ两个对象的成员变量已有存储空_(d)赋D传递|所以浅拯能够复制实例。但是当对象的成员变量是引用数据cdӞ׃能实现对象的复制了?

      存在一个对象PersonQ代码如下:(x)

复制代码
public class Person {     private String name;     private String sex;     private int age;          public Person(String name,String sex,int age){         this.name = name;         this.sex = sex;         this.age = age;     }          public Person(Person p){                   //拯构造方法,复制对象         this.name = p.name;         this.sex = p.sex;         this.age = p.age;     } }
复制代码

      上面的对象Person有三个成员变量。name、sex、age。两个构造方法。第二个的参Cؓ(f)该对象,它称为拷贝构造方法,它将创徏的新对象初始化ؓ(f)形式参数的实例|通过它可以实现对象复制功能?/p>

      又有一个对象Asian,如下Q?/p>

复制代码
public class Asian {     private String skin;     Person person;          public Asian(String skin,Person person){         this.skin = skin;         this.person = person;                    //引用赋?/span>     }      public Asian(Asian asian){                 //拯构造方法,复制对象         this(asian.skin,asian.person);                } }
复制代码

      上面对象也存在着两个成员变量Qskin 和Person对象

      对于person对象有如下:(x)

Person p1 = new Person("李四","mam",23);   Person p2 = new Person(P1);

      当调用上面的语句时。P2对象会(x)对P1q行复制。执行情况如下如下图Q?/p>

      对于Asian对象有:(x)

Asian a1 = new Asian("yellow",new Person("李四","mam",23)); Asian a2 = new Asian(a1);

      New Asian(a1)执行Asiancȝ拯构造方法,׃对象赋值是引用赋倹{得a1和a2引用同一个对?

      如下图:(x)

      当a1执行某条可以改变该值的语句Ӟ那么a1会(x)通过q个语句也可以改变a2对象的成员变?/p>

      如果执行以下语句Qa2.name = new Person(a1.name)

      q时会(x)创徏一个新的Person对象

      如下图:(x)




ZT文萃 2014-05-04 06:15 发表评论
]]>
转帖Q再解Java中的Stringhttp://www.tkk7.com/longturi/archive/2014/05/04/413186.htmlZT文萃ZT文萃Sat, 03 May 2014 22:10:00 GMThttp://www.tkk7.com/longturi/archive/2014/05/04/413186.htmlhttp://www.tkk7.com/longturi/comments/413186.htmlhttp://www.tkk7.com/longturi/archive/2014/05/04/413186.html#Feedback0http://www.tkk7.com/longturi/comments/commentRss/413186.htmlhttp://www.tkk7.com/longturi/services/trackbacks/413186.html

转帖Q?div>http://www.cnblogs.com/chenssy/p/3695271.html版权归作者所有?br />


     今天朋友问我String的内Ҏ(gu)真的不可变吗Q我肯定告诉他是的?因ؓ(f)在我的主观意识里String是一个不可变的对象。于是他l我发了q段E序Q?/p>

复制代码
public class StringTest {     public static void main(String[] args) throws Exception {         String a = "chenssy";         System.out.println("a = " + a);         Field a_ = String.class.getDeclaredField("value");         a.setAccessible(true);         char[] value=(char[])a.get(a);         value[4]='_';   //修改a所指向的?/span>         System.out.println("a = " + a);     } }
复制代码

      看到q个单的E序Q我W了Q你q不是从底层来修改String的gQ从q里来理解String的D定是可以改变的啦Q我们应该始l相信String的不可变性)Q接着他再l我一D늨序:(x)

复制代码
public class StringTest {     public static void main(String[] args) throws Exception {         String a = "chenssy";         String b = "chenssy";         String c = new String("chenssy");         System.out.println("--------------修改前?------------------");         System.out.println("a = " + a);         System.out.println("b = " + b);         System.out.println("c = " + c);         //修改String的?/span>         Field a_ = String.class.getDeclaredField("value");         a_.setAccessible(true);         char[] value=(char[])a_.get(a);         value[4]='_';   //修改a所指向的?/span>                  System.out.println("--------------修改后?------------------");         System.out.println("a = " + a);         System.out.println("b = " + b);         System.out.println("chenssy");         System.out.println("c = " + c);     } }
复制代码

      乍看q程序是异常的简单,无非是赋倹{改倹{输出嘛Q可能你现在׃(x)毫不犹U的说太简单了l果是……。但是!Q你的毫不犹豫会(x)x你,而且你的l果很可能错误。那么运行结果是什么呢Q?/p>

复制代码
--------------修改前?------------------ a = chenssy b = chenssy c = chenssy --------------修改后?------------------ a = chen_sy b = chen_sy chen_sy c = chen_ssy
复制代码

      修改前值很Ҏ(gu)理解Q但是修改后值呢Q是不是有点儿不理解呢?你可能会(x)问:(x)Z么System.out.println("chenssy");的结果会(x)是chen_ssyQSystem.out.println("c = " + c);也是chen_ssy呢?

      要明白这个其实也比较单,掌握一个知识点Q字W串帔R池?/p>

      我们知道字符串的分配和其他对象分配一P是需要消耗高昂的旉和空间的Q而且字符串我们用的非常多。JVMZ提高性能和减内存的开销Q在实例化字 W串的时候进行了一些优化:(x)使用字符串常量池。每当我们创建字W串帔RӞJVM?x)首先检查字W串帔R池,如果该字W串已经存在帔R池中Q那么就直接q回 帔R池中的实例引用。如果字W串不存在常量池中,׃(x)实例化该字符串ƈ且将其放到常量池中。由于String字符串的不可变性我们可以十分肯定常量池中一定不存在两个相同的字W串Q这点对理解上面臛_重要Q?/p>

      我们再来理解上面的程序?/p>

      String a = "chenssy";

      String b = "chenssy";

      a、b和字面上的chenssy都是指向JVM字符串常量池中的”chenssy”对象Q他们指向同一个对象?/p>

      String c = new String("chenssy");

      new关键字一定会(x)产生一个对象chenssyQ注意这个chenssy和上面的chenssy不同Q,同时q个对象是存储在堆中。所以上面应该生了?个对象:(x)保存在栈中的c和保存堆中chenssy。但是在Java中根本就不存在两个完全一模一L(fng)字符串对象。故堆中的chenssy应该是引用字W串 帔R池中chenssy。所以c、chenssy、池chenssy的关pd该是Qc--->chenssy--->池chenssy。整?关系如下Q?/p>

      201404271001

      通过上面的图我们可以非常清晰的认识他们之间的关系。所以我们修改内存中的|他变化的是所有?/p>

      ȝQ?/strong>虽然a?b、c、chenssy是不同的对象Q但是从String的内部结构我们是可以理解上面的。String c = new String("chenssy");虽然c的内Ҏ(gu)创徏在堆中,但是他的内部valueq是指向JVM帔R池的chenssy的valueQ它构?chenssy时所用的参数依然是chenssy字符串常量?/p>

      Z让各位充分理解常量池Q特意准备了如下一个简单的题目Q?/p>

String a = "chen"; String b = a + new String("ssy");
         创徏了几个String对象Q?

ZT文萃 2014-05-04 06:10 发表评论
]]>
վ֩ģ壺 һձþþ| Ʒһ| ߹ۿɫëƬ| ѹaƬ| ҹAVƬ| þþva| ްɫɫùۿ| ޹˱ɫ| һ˿ѹۿձƵwww| ޳avѿ| һëƬѹۿ| ߹ۿѳ| ԾþþӰԺ| ɫһ| Ʒר| һƷһAVһ| ëƬȫѹۿ| ۺר| ޾Ʒ˳鶹| ˳ɫ77777߹ۿ| ɫַ߹ۿ| һ| ޳aƬ߹ۿʦ| ӰԺ߹ۿ| ˾޾ƷӰԺ߹ۿ| AëƬƵ߲| 99ƵѹۿƵ| ޹Ʒ˰| þþƷavӰԺ| ߳Ķ | һ2456б| ɫ͵͵| þþþƷѹĻ| Ƶһ| btձһ| ɫַѹۿ| þwww˳ɿƬ| Ļ޲ɪ| ޹av߹ۿ| 99Ƶѹۿ| ƷƵ|