﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-Powerlc的BLog</title><link>http://www.cnblogs.com/powerlc/</link><description>.net程序</description><language>zh-cn</language><lastBuildDate>Mon, 06 Jul 2009 15:27:30 GMT</lastBuildDate><pubDate>Mon, 06 Jul 2009 15:27:30 GMT</pubDate><ttl>60</ttl><item><title>mobile WareHouse 项目笔记1</title><link>http://www.cnblogs.com/powerlc/archive/2008/08/21/1273561.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Thu, 21 Aug 2008 14:35:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2008/08/21/1273561.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/1273561.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2008/08/21/1273561.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/1273561.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/1273561.html</trackback:ping><description><![CDATA[<p>目前正在做一个mobile warehouse的项目，涉及到PDA,WebForm，WinForm，BizTalk，SAP系统。</p>
<p>用户属于离散业的电子产品行业，业务上比较复杂，与SAP的MM，SD模块有较多联系，总体来说分为：收货103 105，转库，发货等业务，采用Batch + Version 等实现物料（原材料，成品）的FIFO，并采用Serial Number实现成品跟踪管理。</p>
<p>之后，我会把项目的的进展情况一一记录下来。</p>
<img src ="http://www.cnblogs.com/powerlc/aggbug/1273561.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48008/" target="_blank">IBM发布全球首款开源智能编译器</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>moss 与SAP iView web part 整合</title><link>http://www.cnblogs.com/powerlc/archive/2007/11/02/946741.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Fri, 02 Nov 2007 03:45:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2007/11/02/946741.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/946741.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2007/11/02/946741.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/946741.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/946741.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;先记录下来，这几天慢慢补充。</p>
<img src ="http://www.cnblogs.com/powerlc/aggbug/946741.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48007/" target="_blank">IE颓势不减 微软下月公布最新浏览器架构</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>一个合格的程序员该做的事情 </title><link>http://www.cnblogs.com/powerlc/archive/2006/04/02/364725.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Sun, 02 Apr 2006 02:39:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2006/04/02/364725.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/364725.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2006/04/02/364725.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/364725.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/364725.html</trackback:ping><description><![CDATA[<strong>程序员每天该做的事</strong>
<p>1、总结自己一天任务的完成情况 </p>
<p>最好的方式是写工作日志，把自己今天完成了什么事情，遇见了什么问题都记录下来，日后翻看好处多多 </p>
<p>2、考虑自己明天应该做的主要工作 </p>
<p>把明天要做的事情列出来，并按照优先级排列，第二天应该把自己效率最高的时间分配给最重要的工作 </p>
<p>3、考虑自己一天工作中失误的地方，并想出避免下一次再犯的方法 </p>
<p>出错不要紧，最重要的是不要重复犯相同的错误，那是愚蠢 </p>
<p>4、考虑自己一天工作完成的质量和效率能否还能提高 </p>
<p>一天只提高1%，365天你的效率就能提高多少倍你知道吗？ (1+0.01)^365 = 37 倍 </p>
<p>5、看一个有用的新闻网站或读一张有用的报纸，了解业界动态 </p>
<p>闭门造车是不行的，了解一下别人都在做什么，对自己能带来很多启示 </p>
<p>6、记住一位同事的名字及其特点 </p>
<p>你认识公司的所有同事吗？你了解他们吗？ </p>
<p>7、清理自己的代码 </p>
<p>今天完成的代码，把中间的调试信息，测试代码清理掉，按照编码风格整理好，注释都写好了吗？ </p>
<p>8、清理自己的桌面 </p>
<p>当日事当日毕，保持清洁干劲的桌面才能让你工作时不分心，程序员特别要把电脑的桌面清理干净</p>
<p><strong>程序员每月该做的事</strong> <br><br>1、至少和一个同事一起吃饭或喝茶 <br>不光了解自己工作伙伴的工作，还要了解他们的生活 </p>
<p>2、自我考核一次 <br>相对正式地考核自己一下，你对得起这个月的工资吗？ </p>
<p>3、对你的同事考核一次 <br>你的同事表现怎么样？哪些人值得学习，哪些人需要帮助？ </p>
<p>3、制定下月的计划，确定下月的工作重点 </p>
<p>4、总结自己工作质量改进状况 <br>自己的质量提高了多少？ </p>
<p>5、有针对性地对一项工作指标做深入地分析并得出改进的方案 <br>可以是对自己的，也可以是对公司的，一定要深入地分析后拿出自己的观点来。要想在老板面前说得上话，做的成事，工作上功夫要做足。 </p>
<p>6、与老板沟通一次 <br>最好是面对面地沟通，好好表现一下自己，虚心听取老板的意见，更重要的是要了解老板当前关心的重点 </p>
<p><strong>程序员每年该做的事</strong> <br><br>1、年终总结 <br>每个公司都会做的事情，但你真正认真地总结过自己吗？ </p>
<p>2、兑现给自己、给家人的承诺 <br>给老婆、儿子的新年礼物买了没有？给自己的呢？ </p>
<p>3、下年度工作规划 <br>好好想想自己明年的发展目标，争取升职/加薪、跳槽还是自己出来干？ </p>
<p>4、掌握一项新技术 <br>至少是一项，作为程序员一年要是一项新技术都学不到手，那就一定会被淘汰。 <br>掌握可不是看本书就行的，要真正懂得应用，最好你能够写一篇教程发表到你的blog </p>
<p>5、推出一种新产品 <br>可以是一个真正的产品，也可以只是一个类库，只要是你创造的东西就行，让别人使用它，也为世界作点贡献。当然如果真的很有价值，收点注册费也是应该的 </p>
<p>6、与父母团聚一次 <br>常回家看看，常回家看看 <br></p>
<img src ="http://www.cnblogs.com/powerlc/aggbug/364725.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48002/" target="_blank">竞争日趋激烈 微软欲借 Windows 7 扭转战局</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>IT职场健康杀手与应对宝典 （虽然是IT职场，可是对于常上网的ggmm也是很有用的）</title><link>http://www.cnblogs.com/powerlc/archive/2006/01/15/317607.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Sun, 15 Jan 2006 07:20:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2006/01/15/317607.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/317607.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2006/01/15/317607.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/317607.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/317607.html</trackback:ping><description><![CDATA[<span class="tpc_content">电磁辐射之害 
<br><br>　　症状：显示器热度过高，在工作时就会有相当多的电磁辐射，它会使空气发生电离作用，不断产生正电荷（正离子），并不断与空气中的负离子中和，导致负离子的含量几乎为零，长期处于正离子过多的环境中，使人失眠、免疫力下降、女性内分泌紊乱等。 
<br><br>　　宝典：仔细地打扫办公环境；多喝茶；不要把自己显示器的后面对着同事的后脑或者身体的侧面；常喝绿茶；勤洗脸；在电脑桌下摆放一盆植物或水，可以吸收电脑所发出的电磁波；尽量使用液晶显示器。<br><br>长期处在灰尘场 
<br><br>　　症状：皮肤过敏。处于开机状态的显示器周围会形成一个静电场，它差不多会把整个房间的空气中悬浮的灰尘吸入自己的场中，从而使得面部皮肤受到刺激，会出现过敏起疹等现象。 
<br><br>　　宝典：不要在电脑周围摆放堆积如山的纸和文件；电脑桌表面用湿布蘸着抗静电剂擦拭；经常开窗通风；在电脑桌上摆放一盆仙人掌，因为仙人掌的针刺能够吸收灰尘；经常清洁键盘，使用键盘时及使用后应先洗手再进食，不使用时用布将键盘遮盖。 
<br><br><br>干眼症与电脑眼病 
<br><br>　　症状：虽然肉眼无法看出来，但事实上显示器上的画面是一直在闪烁的。看显示器时，我们往往会长时间地盯着某一个点，很少眨眼，因此眼肌容易疲劳，眼黏膜发干，眼睛发红、发炎、疼痛。在电脑前不间断工作4小时后，几乎所有人的眼睛都会出现酸痛和沙眼的感觉。 
<br><br>　　宝典：距显示器需要70厘米以上；把亮度调整到不使眼疲劳的程度；避免室内的光线直接照射在屏幕上而产生干扰光线；使用电脑时滴一些
与我们眼泪成分相同的眼药水；眼睛疲劳时，用以淡红茶水煮过的湿巾敷几分钟眼睛，会很快消除充血和疲劳。在荧光屏前工作时间过长，视网膜上的视紫红质会被
消耗掉，而视紫红质主要由维生素A合成。因此应多吃些胡萝卜、白菜、豆芽、豆腐、红枣、橘子以及牛奶、鸡蛋、动物肝脏、瘦肉等食物，以补充人体内维生素A
和蛋白质。<br><br>恐怖鼠标手　　症状：长期使用电脑键盘和鼠标，<br><br>可能与一种称为腕关节综合征的疾病挂上钩，出现食指或中指疼痛、麻木和拇指肌肉无力感，发展下去可能导致神经受损，进而引起手部肌肉萎缩。女性发生&#8220;鼠标手&#8221;比男性多，这是因为，女性手腕通常比男性小，部正中神经容易受到压迫。 
<br><br>　　宝典：避免上肢长时间处于固定、机械而频繁活动的工作状态下；电脑桌上的键盘和鼠标的高度，最好低于坐着时的肘部高度；使用鼠标时，手臂不要悬空，以减轻手腕的压力，移动鼠标时不要用腕力而 
尽量靠臂力做，减少手腕受力；鼠标最好选用弧度大、接触面宽的，有助力的分散。<br><br>脑功能减弱 
<br><br>　　症状：随着个人电脑日益普及，人们正越来越多地受到记忆力减退的困扰，主要原因是他们对电脑的依赖过强，从而使得自己的脑功能反而减弱。 
<br><br>　　宝典：保证充足的睡眠；静想练习。最好每天能有20－30分钟时间静想生活中轻松美好的事情，聆听自己呼吸的节律，让情绪尽量放松；学习使用五笔输入法，不要总是使用智能拼音的联想输入法；改变不健康的饮食结构，多食用健脑食品。 
<br><br>颈肩腕综合症 
<br><br>　　症状：如果使用电脑时高高地架着胳膊，低着头，并且在桌子下艰难地跷着二郎腿，那么，工作一小时你就会感到腰背酸痛，脖子和肩膀麻木，手臂也不灵活。这样的坐姿保持一年至一年半，你就可以获得双下巴、颈椎关节僵硬。 
<br><br>　　宝典：上半身应保持颈部直立，使头部获得支撑，两肩自然下垂；须选择符合人体工学设计的桌椅，使用专用的电脑椅；使用电脑每隔一小时
应休息5至10分钟，做柔软操或局部按摩；眼睛与显示器保持恰当距离。眼睛与电脑显示器形成轻度向下注视荧光屏的角度，这样可使颈部肌肉得到放松。 <br><br>电脑忧郁症 
<br><br>　　症状：长时间的电脑操作形成&#8220;非此即彼&#8221;的思维定式，不习惯与人达成妥协和谅解，丧失自信，身心疲惫，以致工作难以展开。 
<br><br>　　宝典：做好自我心理调整，及时纠正思维方式；积极处理好人际关系，尤其与同事的关系。 <br><br>电脑躁狂症 
<br><br>　　症状：由于对电脑过度依赖，所以当电脑出现故障后，会精神紧张，情绪烦躁、不安，甚至有对电脑&#8220;动武&#8221;的倾向，如通过用力敲打键盘、鼠标，大骂电脑，摔砸电脑等方式发泄怒火，有的还将不满情绪发泄在家人或同事身上。 
<br><br>　　宝典：一旦电脑出现故障，立即找专业人士来维修，避免独自坐在电脑桌前，应当尽快转移视线和注意力，放松心情；随时保存工作文档，用
移动硬盘将资料备份，一旦电脑出现问题，不会受到太大损失，情绪不至于骤然失控；不要长时间坐在电脑前，隔一段时间走开喝杯茶、咖啡或活动一下。 <br><br>中枢神经失调 
<br><br>　　症状：发病率为70%，长时间在密闭环境中操作电脑，电脑发出的微波引起中枢神经失调，连续多日长时间操作电脑后发病症状:头痛、头晕、失眠、厌食、恶心，以及情绪低落、思维迟钝、健忘、容易被激怒、常感疲惫等。 
<br><br>　　宝典：保证电脑桌附近采光充足、通风良好；每在电脑前工作1小时就走开休息10分钟；操作电脑期间多喝水。</span><img src ="http://www.cnblogs.com/powerlc/aggbug/317607.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48001/" target="_blank">上海电信计划2012年80%用户实现100M带宽</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>常用CASE工具介绍 ZZ</title><link>http://www.cnblogs.com/powerlc/archive/2006/01/12/315959.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Thu, 12 Jan 2006 06:18:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2006/01/12/315959.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/315959.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2006/01/12/315959.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/315959.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/315959.html</trackback:ping><description><![CDATA[<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR vAlign=center align=left>
<TD colSpan=3><FONT color=#18188c size=4><STRONG>常用CASE工具介绍</STRONG></FONT></TD></TR>
<TR>
<TD width=29></TD>
<TD width="94%" background=/skin/snake/yellow-s/layout_16.gif></TD>
<TD width=29><IMG height=17 alt="" src="http://www.blogerhome.com/skin/snake/yellow-s/layout_17.gif" width=29></TD></TR>
<TR>
<TD background=/skin/snake/yellow-s/layout_18.gif>&nbsp;</TD>
<TD>
<P>
<P>一，概述<BR>　　今天, 代码变得日益简单, 在Model的指导下, 思想, 设计, 分析都变得异常重要。企业业务建模工具, 产品非常多, 特别是在MDA日益流行的今天. WorkFlow是典型的业务及流程建模。</P>
<P>二，软件开发CASE工具简介</P>
<P>　　<SPAN style="COLOR: red">(一)图稿绘制：<BR></SPAN>　　１，visio:这是目前国内用得最多的case工具。它提供了日常使用中的绝大多数框图的绘画功能（包括信息领域的各种原理图，设计图)，同时提供了部分信息领域的实物图。visio的精华在于其使用方便，安装后的visio2000既可以单独运行，也可以在word中作为对象插入，与word集成良好，其图生成后在没有安装visio的word仍然能够查看。使用过其他绘图工具的朋友肯定会感受到visio在处理框和文字上的流畅，同时在文件管理上，visio提供了分页、分组的管理方式。visio支持 UML的静态和动态建模，对UML的建模提供了单独的组织管理。从2000版本后visio被Microsoft收购,正式成为Office大家庭的一员,目前最新版是2002。纳入名门的visio2002被微软的风格所同化，样子出现了一些华而不实的东西，但是功能上visio不减从前，各种器件模版有了许多增进。<BR>　　它是最通用(MS的东西，意味着许多附带的通用的东西)的硬件、网络平台等图表设计软件。好处是易用性高，特别是对不善于自己构造图的人。但是正因为很全，所以某个方面上会造成专业程度较低。 <BR>　　有关工程管理类的显然不如PROJECT2000好用； <BR>　　画IDEF0图显然不如BPWIN好用； <BR>　　画IDEF1X图显然无法与ERWIN相比； <BR>　　画组织机构图WORD足够用了，且普遍适用； <BR>　　画网络拓扑结构图只要有相应的图素，用什么画都行； <BR>　　画有关图表类的显然不如EXCEL好用； <BR>　　关键的是，VISIO的图只能以对象的方式插入你的主文档，只有在它本身环境下才能修改。<BR>　　２，smartdraw:校园里比较流行的绘图软件。用惯了visio，感觉smartdraw有许多不一样的地方。一开始就是提供你大堆模版，以目录树的形式放在左边。你的设计都可以纳入模版，并且在某个目录组织。smartdraw也是大手笔，有许多visio没有的方便功能。比如插入表格。smartdraw本身是独立提供图稿绘制的工具，因而工具齐全。而visio更多是与word集成在一起,能够充分利用 word的编排功能。有心者不妨一试,有了感觉我们再交流。</P>
<P>　　<SPAN style="COLOR: red">(二)原码浏览的工具：<BR></SPAN>　　１，SourceInsigt:不能不说这个东西是个好东东。以工程的方式管理原码,提供非常适合再工程的浏览手段.整个面板分成三个部分.左边树提供工程内的所有变量,函数,宏定义,右边提供程序阅读和编辑,下边显示你鼠标在原码触及的函数或者变量定义.最让人佩服的是SourceInsigt不仅高亮你的关键字，而且以近乎完美的板面编排让你看程序如果看报纸，好极了。SourceInsigt提供函数交叉调用的分析，并以树状的形式显示调用关系。不过，速度有些问题，我一般不用。我用的版本是3.0 2000产品。</P>
<P><BR>　　２，SourceNavigator:这个是从Redhat Linux版本移植到win32下的，与SourceInsigt相比，样子土多了,处处透着Linux的乡土气息，不过是干实事的家伙。提供原码高亮显示和编辑，提供头文件的包含关系分析，提供类的层次关系，这个东西最大的特点是把原码始终和文件联系在一起，提供到文件的导航。当然不能说它使用很方便，我一般不用它，但是它的分析速度有优势，这是SourceInsigt必须低头的。<BR>　　３， Dia：(<A href="http://www.gnome.org/projects/dia/"><FONT color=#0000ff>http://www.gnome.org/projects/dia/</FONT></A>)完全免费的东西, 目前有 Win32 Port 了, 6MB 左右, 画图足够用了. 可惜不能生成代码.我在win2000ads上安装却有问题。</P>
<P>　　<SPAN style="COLOR: red">(三)配置管理工具<BR></SPAN>　　配置管理的重要意义在于维护文档的统一和可追溯性。尽管宏观的配置管理包括很多内容，但是我们最常用到的是对程序代码的版本控制，至于变更的控制、管理和通知这里不多介绍。下面将简要介绍国内几种常用的工具。<BR>　　１，Virsual Source Safe:<BR>微软的studio企业版包含的版本管理工具。该工具包括一服务器和一通过网络可以连接服务器的客户端。VSS提供了基本的认证安全和版本控制机制，包括 CheckIn(入库)、CheckOut(出库)、Branch(分支)、Label(标定)等功能；能够对文本，二进制，图形图象几乎任何类型的文件进行控制；提供历史版本对比；可以集成在studio中。<BR>VSS的客户端既可以连接服务器运行，也可以在本机运行，非常适合于个人程序开发的版本管理。<BR>(VSS的详情我以后还会贴出)<BR>　　２，PVCS:<BR>　　PVCS 是世界领先的软件开发管理工具，市场占有率达70％以上，是公认的事实上的工业标准。IDC在1996年9月的报告中评述：&#8220;PVCS是软件开发管理工业领域遥遥领先的领导者&#8221;。全球的著名企业、软件机构、银行等诸多行业及政府机构几乎无一例外地应用了PVCS.<BR>　　PVCS包含多种工具。 PVCSVersionManager会完整、详细地记录开发过程中出现的变更和修改，并使修订版本自动升级，而PVCSTracker、PVCS Notify会自动地对上述变更和修改进行追踪。另外，PVCSRequisitePro提供了一个独特的MicrosoftWord界面和需求数据库，从而可以使开发机构实时、直观地对来自于最终用户的项目需求及需求变更进行追踪和管理，可有效地避免重复开发，保证开发项目按期、按质、按原有的资金预算交付用户。<BR>　　我比较喜欢的是PVCS基于WEB的应用比较方便，只要设定用户和权限，规划好目录结构，项目组成员通过浏览器完成操作。<BR>　　３，ClearCase:<BR>　　ClearCase 是rational公司的主要配置管理工具，可能大家对Rose熟悉一点，不过就我所知，现在绝大多数企业已经从PVCS过渡到ClearCase来了，其原因在于ClearCase是整个rational产品系列中的中枢(repository).<BR>　　ClearCase提供了VOB的概念来进行配置管理，功能极其强大。同时ClearCase使用起来也非常复杂，没有经过专门培训，自学还是有一定难度的。ClearCase目前国内流行版本是for NT的4.1需要在NT主域控制器上安装。ClearCase的解密和安装比较复杂。<BR>　　ClearCase是世界上目前最强大的配置管理工具之一，由于它采用许多新的配置管理思想，使得相对于传统的 CVS,VSS,PVCS等版本管理工具，ClearCase具有许多闪光点，目前正在为世界上各大软件企业所使用（国内目前华为，先驱使用该系统)。 ClearCase中有大量的新的术语。其中比较重要的术语有：UCM(统一配置管理) VOB(版本对象基础) View(版本视图) Activity(更新活动)。ClearCase实现版本管理的基础是VOB，成员要更改受控资料，需要先设置一个自己的View,这个View是你感兴趣的受控资料范围，然后可以Check Out资料到本地资料区，进行修改后再Check In提交。ClearCase极为有力的支持多版本、并行开发。ClearCase不仅可以提供基于文件的版本历史，甚至可以对整个目录系统的演化进行跟踪记录。<BR>　　ClearCase目前支持的执行平台有UNIX\LINUX，WINNT。WINNT最新版本是ClearCase 2002,Solaris上我使用的版本是4.3.需要指出的一点是ClearCase十分昂贵，普通企业难以购买，另外由于其功能十分强大，对系统管理员和使用者要求较高，培训费用不匪。<BR>　　４，CVS:<BR>在linux和unix下系统自带的版本控制工具，是版本控制中工具的鼻祖，功能十分强大，但是都得通过命令行的形式来操作，不便使用。目前，Internet上提供了基于Windows的客户端，名字叫WinCVS,而且提供了原码。</P>
<P>　　<SPAN style="COLOR: red">(四)数据库建模<BR></SPAN>　　１，ERWin:CA 公司出品的拳头产品, 强大的老牌数据库建模工具。它有一个兄弟是BPWin,这个是CASE工具的一个里程碑似的产品。目前的我使用的版本是4.0。ERWin界面相当简洁漂亮，也是采用ER模型，如果你是开发中小型数据库，极力推荐ERWin，它的Diagram给人的感觉十分清晰。在一个实体中，不同的属性类型采用可定制的图标显示，实体与实体的关系也一目了然。当然ERWin不仅是花花公子，它提供的功能如PowerDesian一样强大(不支持UML)。从我个人使用的感觉，ERWin不适合非常大的数据库的设计，因为它对Diagram欠缺更多层次的组织，而且不知什么原因，我感觉它对内存要求较高，使用到后期容易出现图标不能显示的情况，一如windows内存紧缺的表现。<BR>　　erwin支持idef1x即信息建模，就是我们常说的er图、实体关系图，也就是数据库结构图。bpwin支持idef0/idef3/dfd，是功能与流程建模，主要用来描述企业的业务流程，比uml的usecase/sequence更适合描述复杂逻辑。如果要全过程支持，请选择bpwin + PowerDesigner7.5/8 or erwin4 + rational rose 2001 (建议用于50~200个table的信息系统)<BR>　　ERWin 的不足：对中文支持不好。和Er/Studio比较：<BR>　　&lt;1&gt;在权限/版本管理方面 ER Studio 和 Rational Rose 有些<BR>相似，允许分模块 进行 check in /check out ,并发开发程度<BR>高， ERWin这一点就不行了！！<BR>　　&lt;2&gt;另外一个就是 ERWin 的逆向工程虽然和 ER Studio 一样提供一堆过滤条件，但却不能指定的对象（如：指定的数据表/视图/触发器）进行逆向工程，但ER Studio 却提供了这些功能。<BR>　　&lt;3&gt;此外ER Studio还提供了宏功能，把VB的一些功能以插件方式提供了 用户，但 ERWin 中却没有提供！！ 虽然这个功能一般的用户根本很少使用！<BR>　　看到ER Studio 的宏功能，很容易让人想到Winmap 的一堆插件，两者的公司都向用户提供了插件(宏)让用户下载使用！这种做法很值得很多软件公司参考！！<BR>　　当然 CA 公司也不是个废物，提供了几个重要的功能：提供了自家开发的 BPWin 的 接口，以及Oracle 这个数据库巨人的 Designer 的接口。另外同样提供了插件功能，只不过这个插件的接口需要使用他的标准，这一点有点象Rational Rose 的 Add in manager 一样（例如： delphi link ）！！<BR>　　ER Studio 提供了针对 XML 的接口,但ERWin却没有！！<BR>　　２，MS Visio：<BR>　　３，Case Studio：性价比最高<BR>　　４，ER/Studio:很不错的数据库建模工具新势力, 非常不错. 结合Repository, 可进行VSS式的版本控制。erwin能做到的它都能做到..?<BR>　　５，modelmake<BR>　　６，DeZign for Databases：如果你是软件工程师或是软件产品经理等常常需要规划系统的话，势必会需要规划数据库的Table Schema。这套软件能够辅助你的规划，将各个Table之间Key的关连性表达出来，也提供有资料库栏位异动时的版本控制纪录与统计报表等功能。<BR>　　７，PowerDesign：Sybase推出的主打数据库设计工具。PowerDesign致力于采用基于 Entiry-Relation的数据模型，分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义。物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。Sybase数据库在国内知名度可能不及Oracle,但是Sybase 的数据库前端开发工具PowerBuilder却是无可匹敌，再加上PowerDesign的确有过人之处，因而它在国内得到相当广泛的使用。我手里使用的是2001的PowerDesign8.0,这个版本我感觉上比早期的PowerDesign6.0-7.5都有了很大的改变。PowerDesign 功能强大，使用非常方便。首先它提供了概念模型和物理模型的分组，呈现在使使用区左边的是树状的概念模型和物理模型导航，你可以建立多个概念模型和物理模型，并且以Package的形式任意组织；它几乎能够产生到所有常用数据库管理系统的SQL脚本，当然你完全可以不经过SQL脚本直接在DBMS中生成数据库；它提供增量的数据库开发功发功能，支持局部更新，你可以在概念模型，物理模型，实际数据库三者间完成设计的同步。还有逆向工程，再工程支持，目前还支持UML建模.总体感觉PowerDesing发展到8.0已经非常成熟，许多使用上细微的感觉只有你用过它才好评价，我不多说了。<BR>　　８，Rational Rose</P>
<P>　　<SPAN style="COLOR: red">(五)UML建模<BR></SPAN>　　 UML 不算是个新名词, 但是实际中还是用得很少(可能是因为都是做小项目的原因吧, 大项目就用得多了).<BR>　　UML 是个好东西, 但是过分的依赖于 UML 也不是一件好事, 因为有时候它会把简单的东西复杂化. 即使是代码的优良结构和可重用性也不能作为强制使用 UML 借口, 良好的算法完全可以替代部分不必要的设计模块, 或者说, 其实有更好的 UML 设计你没有发现.<BR>　　１，Rational Rose：大恐龙, 小项目中难以使用, 虽然是 UML 设计者做的。虽然这是一个推荐使用的高端工具，它使改进和维护设计、从模型生成报表、在平行协作环境中与他人共同进行建模工作变得很方便。 <BR>　　尽管Rose这个名称跟英文中玫瑰单词一摸一样，但是这里他代表Rational公司的面向对象分析和设计工具的一款力作。Rose目前在国内正被越来越多的公司所使用，其原因一方面是随着软件规模的扩大，面向对象分析和设计的优势突现出来，软件企业正在从面向过程向面向对象过渡。另一方面，Rose集中体现了统一软件建模(UML)的先进设计思想,能够通过一套统一的图形符号简洁有效地表达各种设计思想。当然， Rose本身在设计上的完善和与Rational CASE家族的完美集成也是作为一款最成功的CASE产品的基础。<BR>　　Rose 2002功能上可以完成UML的9种标准建模，即静态建模（用例图 类图 对象图 组件图 配置图 ）和动态建模（合作图 序列图 状态转移图 活动图），为了使静态建模可以直接作用于代码，Rose提供了类设计到多种程序语言代码自动产生的插件。<BR>　　同时，作为一款优秀的分析和设计工具，Rose具有强大的正向和逆向工程能力。正向工程这里指的是由设计产生代码，逆向工程指由代码归纳出设计。通过逆向工程Rose可以对历史系统作出分析，然后进行改进，再通过正向工程产生新系统的代码，这样的设计方式我们称之为再工程。<BR>　　下载地址：Rose2000和破解:http://id49479.my.u2i.net/<BR>　　Rose2003： <A href="http://www.nj13z.cn/2004/down_view.asp?action=download&amp;id=14"><FONT color=#0000ff>http://www.nj13z.cn/2004/down_view.asp?action=download&amp;id=14</FONT></A><BR>　　Rose2003破解：<A href="http://www.vchelp.net/ASP/cdf_pic/200405/reply_1_529068.rar"><FONT color=#800080>http://www.vchelp.net/ASP/cdf_pic/200405/reply_1_529068.rar</FONT></A><BR>　　２，XDE, 分别有4 vs.net和4 wsda的, 很不错, 值得使用.<BR>　　３，Borland Together：有很多版本, 其中4VS.Net不推荐使用, 用Jbuilder推荐使用, 只是实在不喜欢它的界面。(Java 开发的大，慢恐龙, 但是各项功能很爽，这也不能怪它，java做的东西慢是正常的)。但它的功能还是很强大的。尤其是逆向工程用起来很方便，只不过当时我们的EJB项目中EJB都非常大，动辄几千行，用它生成的sequence图实在太详细了，只有不停地删掉细节，留下框架。建议非不得已不要使用这个庞然大物，对你的机器和你的耐心都是个考验。它有for eclipse, vs.net等等插件，感觉也不错。<BR>　　４，MS Visio 2003 for Visual Studio：Visio Professional 2000开始提供内建的UML支持。Enterprise版更加完整。这是一个功能广泛强大的工具。和vs.net结合不错, 只是仅限于 VS.NET 的代码生成, 没意思，各方面都不舒服。<BR>　　５，PowerDesigner：是简练实用的建模工具、6.0支持数据流图，8.0支持UML的UseCase/sequence/class视图；<BR>　　６，Visual Paradigm：(<A href="http://www.visual-paradigm.com/vpuml.php"><FONT color=#0000ff>http://www.visual-paradigm.com/vpuml.php</FONT></A>)目前最合适也是最火的软件了(从这一年来网站的设计变化就可以看出来好卖), 强大, 非 Java. Community Edition 可以免费使用, 当然有功能限制.是一种UML建模和分析工具，出色的建模功能和代码同步。<BR>　　７，WithClass 2000：(<A href="http://www.microgold.com/"><FONT color=#0000ff>http://www.microgold.com/</FONT></A>)界面不是很好看, 而且也没有免费版本, 不过功能还不错, 特别是代码生成的能力.<BR>　　８，Poseidon (海神...)：也是 Java 的, 很漂亮, 就是太慢。<BR>　　９，Jude：一个号称中日xp合作开发出来的小uml工具，只有几m的大小，功能也还不错。也是java做的，速度还是很快的。如果不需要使用逆向工程之类的高级功能的话，强烈推荐这个uml工具，并且它是免费的。<BR>　　10，MagicDraw：一个基于Java的廉价UML建模工具。 <BR>　　11，Objecteering UML：一个免费的个人UML产品。 <BR>　　12，System Architect：一个很受欢迎的高端UML建模工具，支持双向工程（Round-trip Engineering）。</P>
<P><BR>Rational Rose 98教程<BR><A href="http://www.zsbs.com/h/sdm/se_tool/rational/rose/rose98.htm"><FONT color=#0000ff>http://www.zsbs.com/h/sdm/se_tool/rational/rose/rose98.htm</FONT></A><BR>偶用过的UML工具<BR><A href="http://rongsantang.yculblog.com/post-253978.html"><FONT color=#0000ff>http://rongsantang.yculblog.com/post-253978.html</FONT></A><BR>又是 UML<BR><A href="http://www.myie2.com/sic/blog/blogview.asp?logID=27"><FONT color=#0000ff>http://www.myie2.com/sic/blog/blogview.asp?logID=27</FONT></A></P>
<P>几类常用Case工具介绍(1)<BR><A href="http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=2918&amp;forum_id=61"><FONT color=#0000ff>http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=2918&amp;forum_id=61</FONT></A></P>
<P>Marko Boger：： XP、、UML 和和Poseiidon<BR><A href="http://www.gentleware.com/press/2003/20030806_Chat_Umlchina_CHIN.pdf"><FONT color=#0000ff>www.gentleware.com/press/2003/20030806_Chat_Umlchina_CHIN.pdf</FONT></A></P>
<P>Together 应用之路(1) - 我没有前世<BR><A href="http://blog.joycode.com/uestc95/archive/2004/07/09/27118.aspx"><FONT color=#0000ff>http://blog.joycode.com/uestc95/archive/2004/07/09/27118.aspx</FONT></A></P>
<P>&nbsp;</P></TD></TR></TBODY></TABLE><img src ="http://www.cnblogs.com/powerlc/aggbug/315959.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48000/" target="_blank">数万名网友签名抗议星际争霸2取消局域网功能</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>北京知名百货公司宰客内幕</title><link>http://www.cnblogs.com/powerlc/archive/2005/11/28/286032.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Mon, 28 Nov 2005 05:22:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/11/28/286032.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/286032.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/11/28/286032.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/286032.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/286032.html</trackback:ping><description><![CDATA[我是北京一家商场主管，我所说的一切都是真实的，希望大家以后在购物的时候多留心，免花冤枉钱。 <BR>我在北京一家大商场工作，在北京有3个分店，全国也有很多分店，他是以打折，搞促销活动著名的，我在这就不说名字了，因为影响不好，不过我所说的问题是现在各大商场普遍存在的问题，也不必挑明了。 <BR><BR>一、先说返券 <BR><BR>每次返券活动之前是我们最忙的时候了，要和各品牌洽谈活动期间的价格损失承担的问题，专业术语我就不多说了，有最直白的语言告诉大家吧，返券就是羊毛出在羊身上！别以为自己占了大便宜！<BR><BR>举例：100返50元，从表面看，是打5折，朋友们都疯狂去购买，其实是打6.7折，花100元买150元的商品，自己算算打几折？100返100，100返60，以此类推，根本没有看上去那么&#8220;美&#8221;。<BR><BR>商场并没有损失，把压力都给供应商了，让供应商自己想办法承担损失，所以发现没有，在有活动的时候好衣服要不就是没有，收起来了，要不就不参加活动；或者拿出积压的商品来卖，都是旧款！<BR><BR>二、打折<BR><BR>北京商场现在是竞争白热化，不打折就没有客流，所以每家商场每周必须有活动，我们商场更是必须天天有活动，都是逼着厂家打折，好品牌不参加，你拿人家没折，得要人家撑门面嘛。倒霉的就是小品牌，老得参加活动，成本那么高，那有那么多利润？<BR><BR>所以，他们就抬高价格，现在的衣服越卖越贵，其实有很多因素并不是质量提高了，而是因为&#8220;赔不起了&#8221; <BR><BR>1、Q：问一下，商场活动之前，好多品牌提高原价，再去打折或者反卷，这些内幕确实是没法看出的，看来商场也不会去管，提个几十块钱是非常普遍的事吗？真的是这样吗？ <BR><BR>A：你好，你问的问题很有普遍性，但是大品牌是不会提高价格的，只会把好货收起来。因为他们的商品在出厂的时候价签是机打好的，随商品挂出的，所以人工是难以修改的。小品牌就不一样了，他们的商品上面没有固定的机打价格，价签是商场的商品手写价签可以随意修改，而商品上只有成分含量的标识。 <BR>举例：ONLY ESPRIT 以及男装品牌鳄鱼 圣大保罗等等这些品牌的商品上都有价钱，其他的要自己去发现了，呵呵。<BR><BR>需要提醒大家的是，不是所有大品牌都是有好的操守的，好多国产的品牌，尤其是男正装的厂家都是会私自提价的，大家购买的时候，最好在没有活动的时候去采一下价格；或者最简单的，但有可能错杀一切的就是去看看他的商品吊牌上的价钱是不是随商品固定的，如果不是，就有可能在价格上做手脚！但是这样容易主观，因为也不是所有的自己定价的厂家都会改价格的。<BR><BR>你说的提几十元说少了，有的大件衣服会提几百甚至几千，提几十元的很少，谢谢大家的关注，我会继续为大家解答的，还有一些情况我会慢慢给大家介绍，只要关注就好了。 <BR>最后还是和大家说：钱要花在刀刃上。<BR><BR>2、鞋的利润更大，除了运动鞋，运动商品的利润相对小一些。一般鞋的价钱是加的是成本的4倍以上，有的鞋子更是从类似于大康这种批发市场直接进的。鞋是商品暴利中的暴利，我们国内的鞋一般都在广东加工，无论大小品牌，有的甚至是从一条流水线上出来的，就是贴的商标不一样罢了！<BR><BR>鞋的利润是很大，但也没有达到一本万利的程度。鞋的成本基本都是几十元左右，百元的就算贵了。大品牌贵，有很多原因是因为鞋子是成品进口的，贵在手续上；国产的鞋子贵是因为皮子是进口的、设计、运费上&#8230;&#8230;科技含量并不高。 <BR><BR>这个真相说出来，JMS或许会失望了，我们大价钱购买的NICK AD REEBOK 等等运动的世界级品牌都是来自我国的广东，只有设计是国外的，鞋子是出自我国劳动人民之手，呵呵。不过，我国的销售额在稳步的提高也引起了外国老板们的重视，去年这些品牌的老总都分别来到中国的流水线和各地的分公司来视察，说明对我国的市场开始了重视和信心！<BR><BR>3、说起到哪买衣服，我虽然在商场工作，但是很少在哪里买衣服，除非内购或者特价品，还有很经典的YY，宝姿什么的。其他的我喜欢去淘，没有固定的地点，我喜欢外贸小店，那里的YY有很多都是从流水线上拿的真品，这些老板真的很灵通，能拿到很多的真品或A货，而且都是新款！ <BR><BR>一般街边的小店，我指的只是外贸店，他们的利润一般不高，一件衣服赚个20-50左右，但他们基本上是不砍价的，因为标价就不高，所以在明码标价的外贸店基本不会吃亏，至于精品，就要*MM的好眼力和对时尚坐标的把握了！ <BR><BR>4、关于产品质量，我可不敢苟同，大商场DD就是好的，不是这样的！有很多品牌在旺季或者商场搞活动的时候会经常断货，为了救急，就从动物园、木樨园等批发市场进货，把自己的标缝上去就是了。在我们商场搞活动的时候，在客人摩肩接踵的时候，就有一些品牌的导购和业务在我们的办公区贴标的场面，真不敢往下想，不知道谁又该挨宰了！ <BR><BR>而有的品牌干脆直接从那里进货，他所有货架上的货品都是批发来改的标，因为他们的实力小，没有自己的加工厂和设计师，只有这样才能暂且生存，而生存下来了，就意味着有可能缔造自己的品牌王国！ <BR>我们有很多大品牌都是这样起家 的，他们的老总当初是骑着三轮自己送货的！！谁能够做的大，就要*智慧和运气了！<BR><BR>每个商场的活动都不一样，而消费者不可能全部掌握，我们每周都要出去调研，看看周遍竞争店的活动情况，然后再回来制定自己的方案，厂家叫苦不迭，谁不心疼呀，都是钱呀！！！但是又必须参加活动，只有自己来解决利润的问题了！ <BR><BR>5、想在北京开个服装店，也容易也难。一般北京MM自己的小店都去动物园进货，因为自己还没有能力认识那么多生产厂家，只能去那拿货，那里的商户是直接从沿海城市进货，流水线进货，所以价钱还是很公道的，所以，想开店货品是不成问题的。但是一定要有捕捉时尚的眼光！有些品牌是专有采购的专职人员，因为专业所以事半功倍，销量很好。 <BR><BR>6、专柜小姐私自打折的问题是我们严抓的，发现了要重罚的！！！是的，每个品牌的导购员都有打折的权利，有的多有的少。比如：ONLY VERO MODA 杰克琼斯，他们是一个公司的，因为他们的加工厂就在天津，成本很低，内购都是5折，仅限他们公司的员工，但对外是不说那么低的，因为有好多人托他们买衣服，就说成7折甚至更高。他们公司管的严，所以在销售的时候导购并不会给顾客打折，因为他们也不会为没有销售而发愁！ <BR><BR>但一些小品牌就不同了，他们如果不用价格吸引人，那就没有竞争力了，一些名不见经传的牌子，也就是标价不规范的牌子，导购也是一些年龄大、外地的为住，他们就不象我们北京女孩没有生活压力，它们拼命卖货，有时候能打起来！<BR><BR>就这样，经过和经理的商议，给她们一个底价，比如：一件1800的大衣，经理说你最低卖1000，那么卖多少就随她们自己了。这些导购还经常借此来自己赚差价，举例：还是那件衣服，卖了1500，给经理报帐卖了1000，然后自己找个熟人冒充顾客，说退衣服，开好小票退出1500，然后再自己入一个1000，这样把帐平了，自己还能赚到钱。 <BR><BR>其实这些行为她们经理都知道，那有什么办法？又不能天天盯着她们，只能这样了。我就捉到过几个导购干这事，最严重的一个从一件12000的皮衣中做手脚，要独吞6000，你们说利润多大？那还是意大利的牌子呢！<BR><BR>然后这个人被开除了，还扬言要找我什么的，后来不也乖乖走了，因为我完全可以带她去派出所的，这是商业贪污！<BR><BR>这是个安徽姑娘，还很漂亮呢！不过我理解她，一个人在北京多不容易！<BR><BR>还有呀，我就不明白ONLY什么的YY怎么那么受欢迎，她们的成本特低，在天津积压品都论斤卖！我们好多供应商朋友都买过好多呢！ <BR><BR>他们是丹麦的公司，我承认她们的设计时尚，但是我就觉得有点夸张，款式和定价都夸张，她们的店长一个月好的时候能拿个4000-5000，平时也2000-3000，高层就更别说了，还有车马费什么的，待遇很好，谁让人家销售好呢！ <BR><BR>我就不喜欢她们的YY，有几件都是朋友送的，也没怎么穿过，过几天再给大家讲讲他们的价格规律，希望大家关注。 <BR><BR>7、ONLY的设计很时尚，前卫，在北京的每家商场都卖的很好！在一个40平方米左右的服装厅一个月的销售在40万以上，在SOGO她的特卖十一期间曾经创造过一天50万的佳绩！！（在6层特卖场）在我们店的面积是30多平米，做100返100活动的时候的业绩做到过一个月80万！<BR><BR>8、艾格最早上市是在上海，他们北京第一家店就是在我们店开的，当时的销售十分不好，因为我们北京人和上海人的审美观点不一样，所以当时两地的销售差距相当大。在我们楼层的经理和主管们的协助下，他才慢慢的掌握了北京消费者的审美观，市场慢慢做大，一直到现在。<BR><BR>他们公司还代理：WEEKEND JESSICA COLOUR 18 EPISODE的衣服！都是一家的买卖。<BR><BR>他们的商品定位是我们协商过很多次的，建议他们不要这样大幅度的打折，可是由于种种原因和商品数量太多，就这样一直打下去，他们的销售额也直逼ONLY呢！<BR><BR>所以，他们公司的经营理念就是这样，那我们就等他打折再买吧！ <BR><BR>哈哈！多几个这样的牌子对我们不是更好？ <BR><BR>9、在商场买东西，季节性比较强，夏装6、7月开始甩；冬装2、3月开始，大家掌握好时间就行了！说起买YY的好地方，我喜欢外贸店，但是想买到精品，自己一定要多YY有鉴别能力，多看看时尚类的杂志也有帮助！我在小店淘到过好多精品呢！其中有一件ESPRIT的YY，我刚买完，拿着他SOGO，一看货架上和我买的YY一模一样！！好有成就感！SOGO卖298，我花30买的！哈哈哈！<BR><BR>我家就住虎坊桥，我们那有2、3个小店真是不错，就开在稻香村旁边，很好找！我还去动物园！那里有外贸批发的摊位，我就去那泡，因为买的少人家不卖呀，我就磨，有时候实在不行就自己一样颜色拿一件，因为有的小件也不贵，加起来还没有商场一件YY贵呢！ <BR><BR>10、NICK内购现在只能打8折，原来还能打7折，自从百丽公司接管以后就连8折都不轻易打，所以现在买NICK的内购是很难的，一般买不出来，谁让百丽那么牛呢！<BR><BR>11、我们买到的化妆品有许多都是沟对过的，半瓶原品半瓶是到国内后灌进去的！！所以很多朋友从国外带回来的一模一样的化妆品国外的效果要好的多！ <BR><BR>而且商场有很多也都是水货，有的是从香港带回来的还有那里的店标呢！撕下去就直接上柜销售了。利润就不言而喻了！ <BR><BR>12、百丽内购7折，打的越低买越好，价格都是炒出来的。PORTS的内购是8折，NIKE8折；ADIDAS7折，戴安芬和爱慕的内衣8折；瑕步士5折，呵呵，认识这些品牌的公司的人就可以买到了。天美意和美丽宝是一个公司的，天美意的质量并不是特好，还是美丽宝的好一些，哈森的是国产的，一般，质量还可以。nick360是和G2OOO U2 酷 一个公司的，他们内购很低，甚至可以5折。<BR><BR>13、内衣还是国外的牌子好，好在设计上，穿着很舒适！一些熟知的品牌的内衣也走形，这很普遍，严格的说，内衣穿上2年就不要再穿了，我的内衣基本都是比较贵的，但是也走形，胸托的钩也出来，所以就选自己喜欢的就可以了。 <BR><BR>14、nick360和NICK没有关系，根本不是一个公司的！虽然都和NICK有关，但是2者没有关系，NICK是百丽公司代理的，NICK360是上海和缘公司代理的，别弄错了！<BR><BR>15、E-land内购6折，YY不错，就是太贵了。G2000还有他旗下的U.W.M 和U2都是一个公司的，也是广东产的，内购是6折，休闲为住，销售还不错，他们内部有个大调整，可能采购的眼光不如原来那个好吧。黛安芬内衣的内购价8折，他们的活动最低也就7折了，用券买（买别的DD返的券买）值！阿桑那和a02的yy是珠海产的，内购7、5折，A02的YY比阿桑那要贵一些，而且设计更加国际化，不错的！瑕步士内购5折，他和ELLE的鞋子是一个公司的。swatch内购8折，商场管理层能买到6折；施华洛世奇的水晶我们店没有，都应该有内购。 SK2的内购价8折，他们基本不参加活动，是呀，我有很多同事用SK2都是8折买的。<BR><BR>16、说说商场的水晶吧！！今年是水晶年，我们商场的水晶专柜的销售非常好！其实进货有很多也是从原西四珠宝批发那进的（前几天已拆），然后拿到柜台把价钱抬高，就这样，同样成色的DD在商场就很贵！！举例吧：谢瑞麟的内购才4折！有的内部的清货连4折都不到！<BR><BR>17、看见有个JM的贴子说在安贞华联购物如何上当，其实在北京，返券最实惠的就是SOGO、中友和新世界了，华联是返券容易用券难，JMS自己去比较一下就知道了。我可没有给任何商家做广告，就是想帮大家省钱，十一购物还是实惠的，活动力度都大！ <BR><BR>18、艾格今年把ELLE接过来了，他们从一月开始正式接手ELLE中国市场，所以ELLE原来的代理公司肯定要大批量甩货，JMS关注一下各商场的情况吧！这可是一手的情况呀！ <BR><img src ="http://www.cnblogs.com/powerlc/aggbug/286032.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47999/" target="_blank">Silverlight打造杰克逊纪念专题</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>开发工程师人生之路 (推荐)</title><link>http://www.cnblogs.com/powerlc/archive/2005/11/28/286027.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Mon, 28 Nov 2005 05:19:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/11/28/286027.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/286027.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/11/28/286027.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/286027.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/286027.html</trackback:ping><description><![CDATA[本文所指的开发工程师，仅指程序开发人员和以数字电路开发为主的电子工程师。 <BR><BR>　　当你选择计算机或者电子、自控等专业进入大学时，你本来还是有机会从事其它行业的，可你毕业时执迷不悟，仍然选择了开发做为你的职业，真是自做孽不可活。不过，欢迎你和我一样加入这个被其它人认为是风光无限的&#8220;白领&#8221;吧。 <BR><BR>　　如果你不是特别的与人世隔绝，我想你一定看过金老先生的名著《笑傲江湖》吧，里面有一门十分奇特的武功叫做"辟邪剑法"，你看这个小说第一次看到这种功夫的练法时，我想你当时一定笑歪了牙&#8220;呵呵，真好玩！&#8221;，可是现在我很痛心的告诉你：你选择的开发工作就是你人生路上的"辟邪剑法"，而你现在已经练了，并且无法再回头。 <BR><BR>　　相对同时刚出校门同学从事其它行业而言优厚的薪水，以及不断学习更新的专业知识不仅仅让你感到生活的充实，更满足了你那不让外人知的虚荣心。在刚出校门的几年中，你经常回头看看被你落在后面的同学们，在内心怜悯他们的同时，你也会对自已天天加班的努力工作感到 心里平衡：&#8220;有付出才会有回报&#8221;这句话在那几年中你说的最多，不管是对自已的朋友们还是自已的爱人。第二句最常说的话是对公司的领导：&#8220;不行我就走人！&#8221;，实际上你也真的走过几回。对了，在这几年中，因为你的经济条件不错，你开始买房、开始谈恋爱、结婚、开始有了自已的小孩。有时候你会对自已说再过两年就去买车。当然其中可能有许多大件是需要分期付款的，但你对前途充满了信心，你确信认为这种日子会永远的持续下去，即使不是变得更好的话。 <BR><BR>　　日子总是在这种平淡中一天天的过去，就在那么不经意间，你突然发现自已已经快30岁了，或者已经30了，莫名的，你心里会漫延着一种说不清楚的不安情绪，你好像觉得前途并非像前几年那样变得越来越好，你也忽然发现你以前所瞧不起的同学里好像已经有不少开着车的了，也有几个人住着比你还大的房子，好像房款还是一次付清的，你突然明白你现在的生活比起你的同学来最多是中游偏上了。工作中最让你感到心里不舒服的是，你越来越不敢对你的领导说不了，即使比你来的晚的同事升职或提薪，你也只是在私下与朋友们一起喝酒时才敢发发牢骚，在头的面前你的声间越来越小、笑脸是越来越温柔。 <BR><BR>　　你终于开始迷茫&#8220;再过几年我会是在干什么呢？&#8221;，这句话常常出现在你的心里。 <BR><BR>　　计算机开发工作，是一种以年轻为资本的工作，说句通俗点的话是&#8220;吃青春饭的&#8221;，嗯，这句话好像在一种特别的行业也听到过。 <BR><BR>其标志就是一：工作的时间性非常强，一个开发项目被定的时限通常是很紧张的，更有甚者，有些号称开发管理的书里面还非常卑鄙的号召将一个项目切成多个小片，每个小片都定一个叫&#8220;里程碑&#8221;的东东来严格跟踪开发进度，加班加点在其它行业是需要加班工资的，而在开发行业，加班工资好像还没见到几个公司发过，是啊，反正有时间限制着，你干不完我再找你算账.所以开发工作通常有着其它工作所没有的精神上的压力。 <BR><BR>一旦一个人步入而立之年，因为家庭和孩子的负担，加上精力上面的衰退，加班工作时间变得越来越少，这点让很多老板们感到：这些人已经老了，不好用了。指示人事部门：&#8220;以后招开发人员限制在30岁以下！&#8221;，相对而言硬件开发会年龄方面限制会稍好一点点，但也是五十步笑百步。还有一个很重要的一点就是：计算机这个烂东东实在是进步的太快了，前两年买的顶级配置电脑，现在怎么看怎么像废品，这还是小事，更可气的是好像每天都需要学习新的知识，刚毕业时只会书本上的PASCAL，学会了用腐蚀的办法来做电路板，一上班就开始学习TURBOC和TANGER2.0，刚刚学会，还没来得及高兴，马上开始学Borland C＋＋和Protel3.0，好不容易学会了，却发现需要学习VC和Protel98了。单片机也是啊：Z80的指令背的很熟，工作中没来得及用就要学8031，好好学吧，本来想着这辈子就吃它了，又发现又出来什么PIC、DSP、CPLD、FPGA、ARM等等....这还不包括中间要学一大堆74系列、4000系列、XX系列...IC卡居然里面还有CPU卡..如果学习的知识里每个字都能变成一分钱，我想所有的开发工程师都是腰缠万贯的富翁。 <BR><BR>　　一眼看去，这种日子好像见不到头，年轻时乐此不彼，但现在你一定对自已能坚持到什么时候感到怀疑了。我们都玩过像仙剑奇侠传这样的RPG游戏，刚开始时你只是一个一名不文的少年，随着你去打怪物、捡宝贝、学秘芨，最后终于有一天你会变成一个大英雄！那么你在实际生活中过得比那些小侠们还辛苦，为什么成不了一个生活中的大侠呢？呵呵，原因在这里：因为开发工作是邪门功夫，它虽然可以让你速成的变成小资，但它最大的特点是经验不积累！日新月异的知识更新，让你总是感到自已在退步，你就像在RPG中的主人公，开始时就给了你一把好剑和好盔甲，而且让你的级别很高，但让你的经验不累积，虽然刚开始打小怪物时你觉得自已很爽，但越到后来，你会发现你会死的很惨！比较一下你与其它非开发行业的同学你就可以知道了，例如和你学医的同学比起来。套用岳不群他老人家说华山剑宗和气宗的区别那段话：前十年你比你那些学医的同学收入和地位要好的多，但十年以后你和他基本上各方面都会持平，而二十年以后你的各方面远远不能与你学医的同学相提并论！嗯，你已经开始不笑辟邪剑法了吧。 <BR><BR>　　&#8220;敢问路在何方？路在脚下...&#8221;，不过猴兄和八戒兄这么认为是可以的，你呢？ <BR><BR>总结了许多开发朋友在30岁以后的生活之路，让我们一起看看开发人员&#8220;路在何方？&#8221;那么开发人员在30岁以后都干些什么呢？ <BR><BR>其路一：继续做你这个很有&#8220;前途&#8221;的职业吧！ <BR><BR>　　偶掰着脚指头仔细数了数，发现还真的有很多朋友在30岁以后还在从事开发工作，我这里说的从事，是指你还需要天天在电脑边上编程序和画电路板，与你手下是否有几个小兵无关，也与你是否头上顶着什么项目经理、主任工程师的帽子无关，只要你还需要亲自开发，你就属于这一类。其中有个年龄最大的朋友是63年的，从事医疗仪器的开发工作，35岁左右还在从事软硬件开发工作的仍有一大堆，分析这些仍然从事开发的朋友，基本上都有以下特点： <BR><BR>1　痴迷工作或者痴迷电脑，晚上八点到十二点的这段时间，基本上是在电脑桌或工作台前渡过的。 <BR>2　不喜欢与人交住，朋友很少，常联系的人不超过五个。 <BR>3　与朋友交往时谈工作多，但一般不主动谈钱。 <BR>4　体型偏胖或偏廋，不在正常区间。 <BR>5　无未来计划，对五年后自已生活怎么样、从事什么工作说不清楚。 <BR>6　俭省，从不乱花钱。 <BR><BR>即使你是还不到30岁的开发人员，你也可以看看自己对以上几条是否符合，是否会在30岁后还从事开发职业，四条疑似，五条以上基本确诊你也是这类型的人。 <BR><BR>　 这些朋友们通常报着过一天是一天的态度生活，到了这个年龄，也不敢再轻易的换工作了，年轻时的锐气慢慢的也消退了。唯一不变的希望是有一天从天上掉下来一大堆钱把自己砸伤。说实在话因为他们的性格所限，基本上可以确定他们以后不可能在职场上获得更好的发展，当个小头头，带几个人开发已经是他们发展的顶点。至于以后的人生之路，不仅他们自己迷茫，可能上帝也正在头痛。 <BR><BR>不过像这类朋友，偶很奇怪的发现：他们的小孩都是儿子！不知是偶然还是有什么其它说法。 <BR><BR>简单建议：要改变命运，先改变性格：坚持半年晚上不从事工作、游戏及电视，用此时间与人交往，你的人生会有改变。 <BR><BR><BR>其路二：转行从事技术支持、行政或生产等工作还有一些朋友，从事了几年的开发工作，因为自已并非特别的爱好，或者领导上面的强制工作安排，他们转到了技术支持、服务或行政等工作，至少当时从表面上看起来，他们的薪水较开发要少一些，但真正的统计这些人，发现他们之中有半数的人获得了更好的发展，升职为服务部经理或行政经理等职，最历害的一个朋友已升职为总经理助理，进入高层。 <BR><BR>　　这类朋友当时转行通常并非自已志愿，属被逼无奈或者其它原因，但显然，拥有专业知识技术的他们显然在非技术部门中鹤立鸡群，遇到什么事情他们均可从专业的角度提出建言，久而久之，他们获得更多的升职和加薪机会也就不足为奇。 <BR><BR>　　因为不从事开发，所以经验开始积累，这类的职业通常会给你一个很安定的感觉，你到30多岁后会发现这类职业反而比开发工作更容易获得新的工作机会。 <BR><BR>　　简单建议：你如果确定在开发部无法获得很好的发展机会，不妨转到其它几个部门试试，换个活法，钱少点就少点吧，机会多。 <BR><BR>其路三：开发管理 <BR><BR>　　如果你现在已经是总工或开发部经理，或者你眼看就有机会被提升为这类职务，那么恭喜你，你走的是从&#8220;弼马温&#8221;到&#8220;斗战胜佛&#8221;这条金光大路，你不仅拥有很高的专业技能，而且很显然，你也有着很强的人际交往能力，你这类人根本不需要对未来有着任何的担心，你在即使一无所有的时候也很容易白手起家。 <BR><BR>　　你这种人算是练辟邪剑法练成了仙，嗯，我无话可说。 <BR><BR>　　你是不是这类人也很容易区别，就像围棋二十岁不称国手终身无望一样，你应该在工作三、四年以后，也就是说二十七岁左右就会发现自已工作中指手划脚的时间比亲自开发的时间要多了，而且大多数这类人在这个年龄手下应该有&#8220;兵&#8221;了，相反的，如果你快30岁了还天天埋头于电脑前编程序和画板子，或者30多岁了你还没升到部门经理（虽然你总是觉得自已很有希望），基本上可以确定你不是这类人。好了，如果你确定你是这类人，那么你唯一的想法就是尽快爬上中层和高层，因为有时候人生偶然性太大，不占住坑的萝卜很有可能被人拔出来！ <BR><BR>　　简单建议：天天去你的老板家里面拖地和擦桌子！ <BR><BR><BR>其路四：出国或考研 <BR><BR>　　有两个搞开发后出国的朋友，其中一个甚至打工打到了一个小公司总工的位置，数据库和软件方面水平巨牛，但仍感觉心里不踏实，于是将自己工作多年的钱忍痛掏出来，出国费加上机票大概将自已辛苦所攒的银子花完，然后又借了一些钱，在02年身上揣着一万美元跑去了加拿大，在加拿大不停的重复找工作，换工作，然后再找工作的循环，找的工作基本上与计算机无关，不过工资总是在1500加元左右，呵呵，折成人民币与他在国内打工拿的基本上差不多，不过租个地下室就花了300加元，然后吃吃喝喝，再买个电脑上上网这类的，基本每月平均还要倒贴一点。前段时间给我的邮件里说，现在身上花的差不多只有5、6000美元了，准备开个小公司，看看能不能往国内倒腾点东东，做最后一搏。另外一个朋友去澳州，时间稍早一些，先是大概摘了一年多的葡萄，后来总算找了个技术工作，每天的工作是画机械图纸，收入还算不错将近3000澳元，买了个旧车，也算是过上了资本主义生活。不过前年回来一趟，唯一的感叹就是：在国外拿2000美元的生活，绝对不如在国内拿5000人民币的生活舒服。 <BR><BR>　　也有两个考研的朋友，不过其中一个严格的说不是做开发的出身，偏重于市场方面的工作性质，不过我的朋友里面考研的不多，只好凑两个人说说，一个考研后在北京找了个工作，每个月5、6000元钱，但还是做开发，生活仍然与没考研之前没有任何的改变，前途仍然没见到什么大亮的光，还是搞不清楚以后再干些什么，标准的过一天算一天了。另外一个考研后在大学里面找了个工作，工资虽然比他原来打工少了不少，但毕竟终身有*，稳定了下来，也算修成了正果，这位哥们心情一放松下来，也开始有时间琢磨着业余时间自已做点什么，好像现在慢慢的也开始有了点眉目。 <BR><BR>　　简单建议：这两条路，对开发人员来说都不算是很好，出国十年前是好事，现在难说，考研能成功转行的概率恐怕也不是很大，多半仍然去搞开发，只不过研究生可以多干几年罢了。 <BR><BR><BR>其路五：转行到市场 <BR><BR>　　绞尽脑汁的想想，我所知道的人之中只有两个开发人员去了市场，这两个人都不能说是朋友，认识而已。他们都是主动要求去了市场，结果是这两个人均在市场都是干到一年左右，然后都自已开公司了。呵呵，很奇怪，极高的转行成功率！不过仔细想想，我对这两个人的思路佩服的五体投地。能下决心仍掉每月5、6000元的开发职位，从事一个自已并不熟悉的岗位，每月拿个2000多元＋提成，但提成那是说不清楚的事情，这个决定，只能让人感觉到他们对自已前途清晰的把握和老谋深算的心机。而且他们不去服务不去生产，挖空心思说服领导去市场（市场部门与开发部门通常是一个公司的核心部门，进入其实并不容易），可以说是有着长远的考虑的。有技术了，再与客户交成朋友，马上就会产生很大的机遇应该是正常的事情。 <BR><BR>　　有实力，有心机，也有着很强的决心力，这种人恐怕早在大学毕业时或更早的时候就已经决定了自已的人生之路，他们的每一步路在若干年前早就计划周全，现在看起来：学会技术－＞进入市场－＞寻找商机－＞开公司，一条多么清楚的人生之路。但就像我们上小学中学时，所有人都知道上大学是我们最清楚的人生路一样，最后只有少数人才能真正达到目标（当然，现在扩招的历害是另外一回事，我是说我们那个时候，也就是：&#8220;很久很久以前，当我像你那么大的时候&#8221;）。 <BR><BR>　　简单建议：你若是这类人，我的建议是：...嗯?....那个你.你，你别走啊，我还有个事想请你赞助一下啊..... <BR><BR><BR>其路六：开公司自已干 <BR><BR>　　呵呵，看到这一条，发现你的眼睛已经圆了，你肯定千百次的想过这个事情吧，咳咳，其实我从事开发的时候也是天天梦想着这种事情。总想着过两年找个机会就自已干，这个梦想一年又一年的折磨着你也给着你希望。看看吧，开发后来开公司的还真的不少，里面有成功的也有很多失败的，通常开公司都是几个人合伙开始的，有做技术的，有做市场的，几个人一拍即合、狼狈为*，共同策划了这一个大活动。一般说来能让这几个人下决心走出这一步，产品肯定是先进的，甚至是国内独一无二的，市场也是很大的，负责市场的那个哥们通常会拍着胸保证可以卖出去，并悄悄地告诉你他在某主管领导是他小舅子的同学的二叔，肯定没问题。于是你们几个人找地点、注册执照、买了几个破桌子，再攒了两台电脑，每个人又凑了几万银子，公司开张了！ <BR><BR>　　产品很快出来了，市场的哥们也不负重望，有几个客户表示要试用了，一切看起来都是如此的正常，&#8220;.......你坐在老板桌前，不停的有人来汇报工作或者找你签字...人进人出中...你又想起公司再穷也不能只有一把椅子的故事.....&#8221;你在梦中笑出声来。 <BR><BR>是如此的顺利，你们很快就有单子了，很快的单子让你们凑的那点钱不够了，你们很高兴的每个人又增加了投入，拿出钱时你眼泪汪汪的数着钱说：&#8220;这就是我那生蛋的母鸡啊&#8221;。你们的产品确实不错，市场也经营的很好，客户慢慢的多了起来，单子来的时候一笔接着一笔，你每天都处于兴奋之中，唯一美中不足的是好像客户回款总是会拖一些日子，不过客户给你保证说：过几天，过几天就付给你们，因为回款总是在计划外，所以你们为了资金的流畅运行又凑了一些钱，这个时候你有一些心事了，因为你的存款折上面的数字已经快趋向于零了。&#8220;没事，过两个月等回款了一切都OK了，谁干事业不吃点苦呢？&#8221;你这么安慰着自已又投入到工作中去，资金总是在回款和生产经营费用之间走着一个窄窄的小木桥，你的账上总是没有太多的钱，扩大了的公司规模和许多意外情况，使你又一次、二次、三次的与合作者们再次投入了自已的资金，当然，后来的钱你可能已经是借的了..... <BR><BR>　　终于有一天，你的会计再一次告诉你，老板啊，账上又没现金了，吃过多次苦头的你终于下决心开始重视资金的运行了，你裁掉了一些不必要的人手，减少了开发的投入，要求市场人员签单的时候必须予付XX%的款，回扣也必须等收过款后再付，同时也开始对产品的生产成本开始进行控制。 <BR><BR>　　时间一天一天的过去，因为竟争对手的产品也对你的产品进行了仿造，你的产品慢慢变得不再先进，市场人员开始埋怨公司的合同资金方面规定太严格，不好签单，生产成本的下降通常也导至产品毛病的增多，客户也开始埋怨你的服务人员不能及时进行服务。 <BR><BR>　　终于有一天，你重新走进了人才交流中心，以前你是来招人的，现在你拿着自已的简历开始寻找一个工作 <BR>...... <BR><BR>公司的成功与否，与产品有关，与市场有关，但更重要的是与资金有关，产品与市场都可以通过资金来弥补，而却没有任何东西可以代替 <BR><BR>资金，凡是倒下的公司，99%与资金链的断裂有关。在你决定要开公司以前，先估计一下你公司支持一年所需要的资金数额，包括人工费，生产，场地，广告宣传、市场费用、甚至电、水费等等等等，把你所想到的一切加在一起，得出的值就是..慢..如果你没有实际的开过公司的经验，你需要将此数字乘3，然后就是你开公司一年最少需要的费用，呵呵，公司的实际运营所需要的钱是你想像的3倍以上，你要是不信我也没办法。 <BR><BR>简单建议：开公司前最重要的是先确立你后续的资金来源！也就是说钱不够了怎么办？－－－因为你投入的钱肯定会不够的。 <BR><BR><BR>其路七:第二职业 <BR><BR>这类的朋友有不少,他们没有脱离开发工作,但是在业余时间又不停的接项目或者在卖产品,在单位里面他们显得并不出众,比起其它人来说他们属于最不愿意加班的一类.为此他们白天通常工作很勤奋.这类人也许不一定可以挣很多钱,但平均下来他们一年之中通常都可以比同事们多挣个几万元.有时候比上班拿得还多.但令人疑惑的是,这类人在生活中更加注重稳定,基本上没见到他们跳过蹧,即使私下里面已经开了个小公司,他们通常也不会辞职. <BR><BR>你的旁边有没有这类人呢?分辨他们很容易: <BR><BR>--电话很多,而且更愿意来电话时离开办公室找个没人的旮旯通话.神秘兮兮给人一种"这家伙是不是有二奶啊?"的感觉的人，通常是这类人。这类人是女性最佳的选择对象：很顾家，不象那些富人容易花心，而比起一般人来说，他们收入相对要高得多。但总结了一下几位这类的开发朋友：也得出了一个令人沮丧的结论：这种人通常个子不高，体形类似桶状..... <BR><BR>简单建议：这好像是开发人员最佳的出路了，但比较丰厚的收入通常让这类人不愿意去冒风险....到现在为止我所认识的这类人还没有一个真正算是成功的。 <BR><BR>好了，虽然偶的经历远远说不上丰富，也没有什么成功之处可以自满的，但或许因为比其它朋友痴长了几岁，见过的人可能会稍多一些，所 <BR><BR>以斗胆写出了以上的一些文字，让您掉牙了。 <BR><BR>下面是偶走过开发这条路上总结出来的一点心得，你可以不看，但看了就千万别把嘴咧的太大： <BR><BR>一、不管是给别人打工还是自已干，都要全心全意的工作，因为你所做的任何一点工作都会让自已的人生多一点筹码，这一点最最重要!这样的例子我至少可以举出两起，优秀的开发人员被其它新公司挖走，并给一定的股份，成为新公司的股东的例子。当时与这样的开发人员一个部门同时工作或更早工作的有许多人，他们平时经常偷点懒，能少干点工作就少干点，有时候还笑话那个平时努力工作的人傻，几年过去了，究竟谁比谁傻？ <BR><BR>二、多与市场人员交朋友，你接触他们时可能总会觉得他们知识比你少，甚至素质比你低，可能比你还有点黄。但实际上他们比你更懂这个社会！参加到他们这个圈子中去，和他们一起赌赌钱、一起聊聊天、一起洗洗桑拿、一起.....你会通过他们接触到另外一个世界。 <BR><BR>三、机会远比钱重要，挣不挣钱在年轻时并不是特别重要！不论是在实际生活中还是在网上或其它地方，如果有机会参与到除本职工作外的一些项目或产品的开发中（包括你的朋友拉你去做点小生意之类的非开发性质的工作），那怕是帮忙的性质，也要积极介入，至少你会交到很多的朋友，这样你的人生会多出很多的机会。 <BR><img src ="http://www.cnblogs.com/powerlc/aggbug/286027.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47999/" target="_blank">Silverlight打造杰克逊纪念专题</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Asp.net中在datagrid中放checkbox控件的全选</title><link>http://www.cnblogs.com/powerlc/archive/2005/11/10/272962.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Thu, 10 Nov 2005 03:18:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/11/10/272962.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/272962.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/11/10/272962.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/272962.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/272962.html</trackback:ping><description><![CDATA[<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">script&nbsp;language</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">javascript</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_79_973_Open_Image onclick="this.style.display='none'; Codehighlighter1_79_973_Open_Text.style.display='none'; Codehighlighter1_79_973_Closed_Image.style.display='inline'; Codehighlighter1_79_973_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_79_973_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_79_973_Closed_Text.style.display='none'; Codehighlighter1_79_973_Open_Image.style.display='inline'; Codehighlighter1_79_973_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;select_deselectAll&nbsp;(chkVal,&nbsp;idVal)&nbsp;</SPAN><SPAN id=Codehighlighter1_79_973_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/Images/dot.gif"></SPAN><SPAN id=Codehighlighter1_79_973_Open_Text><SPAN style="COLOR: #000000">{&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;frm&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;document.forms[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">];<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Loop&nbsp;through&nbsp;all&nbsp;elements&lt;BR&gt;</SPAN><SPAN style="COLOR: #008000"><BR><IMG id=Codehighlighter1_200_967_Open_Image onclick="this.style.display='none'; Codehighlighter1_200_967_Open_Text.style.display='none'; Codehighlighter1_200_967_Closed_Image.style.display='inline'; Codehighlighter1_200_967_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_200_967_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_200_967_Closed_Text.style.display='none'; Codehighlighter1_200_967_Open_Image.style.display='inline'; Codehighlighter1_200_967_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">&nbsp;(i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">frm.length;&nbsp;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN id=Codehighlighter1_200_967_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/Images/dot.gif"></SPAN><SPAN id=Codehighlighter1_200_967_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Look&nbsp;for&nbsp;our&nbsp;Header&nbsp;Template's&nbsp;Checkbox</SPAN><SPAN style="COLOR: #008000"><BR><IMG id=Codehighlighter1_302_632_Open_Image onclick="this.style.display='none'; Codehighlighter1_302_632_Open_Text.style.display='none'; Codehighlighter1_302_632_Closed_Image.style.display='inline'; Codehighlighter1_302_632_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_302_632_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_302_632_Closed_Text.style.display='none'; Codehighlighter1_302_632_Open_Image.style.display='inline'; Codehighlighter1_302_632_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(idVal.indexOf&nbsp;(</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">CheckAll</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN id=Codehighlighter1_302_632_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/Images/dot.gif"></SPAN><SPAN id=Codehighlighter1_302_632_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Check&nbsp;if&nbsp;main&nbsp;checkbox&nbsp;is&nbsp;checked,&nbsp;then&nbsp;select&nbsp;or&nbsp;deselect&nbsp;datagrid&nbsp;checkboxes</SPAN><SPAN style="COLOR: #008000"><BR><IMG id=Codehighlighter1_430_486_Open_Image onclick="this.style.display='none'; Codehighlighter1_430_486_Open_Text.style.display='none'; Codehighlighter1_430_486_Closed_Image.style.display='inline'; Codehighlighter1_430_486_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_430_486_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_430_486_Closed_Text.style.display='none'; Codehighlighter1_430_486_Open_Image.style.display='inline'; Codehighlighter1_430_486_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(chkVal&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN id=Codehighlighter1_430_486_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/Images/dot.gif"></SPAN><SPAN id=Codehighlighter1_430_486_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frm.elements[i].</SPAN><SPAN style="COLOR: #0000ff">checked</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG id=Codehighlighter1_503_560_Open_Image onclick="this.style.display='none'; Codehighlighter1_503_560_Open_Text.style.display='none'; Codehighlighter1_503_560_Closed_Image.style.display='inline'; Codehighlighter1_503_560_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_503_560_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_503_560_Closed_Text.style.display='none'; Codehighlighter1_503_560_Open_Image.style.display='inline'; Codehighlighter1_503_560_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN id=Codehighlighter1_503_560_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/Images/dot.gif"></SPAN><SPAN id=Codehighlighter1_503_560_Open_Text><SPAN style="COLOR: #000000">{&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frm.elements[i].</SPAN><SPAN style="COLOR: #0000ff">checked</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Work&nbsp;here&nbsp;with&nbsp;the&nbsp;Item&nbsp;Template's&nbsp;multiple&nbsp;checkboxes</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG id=Codehighlighter1_686_959_Open_Image onclick="this.style.display='none'; Codehighlighter1_686_959_Open_Text.style.display='none'; Codehighlighter1_686_959_Closed_Image.style.display='inline'; Codehighlighter1_686_959_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_686_959_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_686_959_Closed_Text.style.display='none'; Codehighlighter1_686_959_Open_Image.style.display='inline'; Codehighlighter1_686_959_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(idVal.indexOf&nbsp;(</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">DeleteThis</SPAN><SPAN style="COLOR: #000000">'</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN id=Codehighlighter1_686_959_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/Images/dot.gif"></SPAN><SPAN id=Codehighlighter1_686_959_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;Check&nbsp;if&nbsp;any&nbsp;of&nbsp;the&nbsp;checkboxes&nbsp;are&nbsp;not&nbsp;checked,&nbsp;and&nbsp;then&nbsp;uncheck&nbsp;top&nbsp;select&nbsp;all&nbsp;checkbox</SPAN><SPAN style="COLOR: #008000"><BR><IMG id=Codehighlighter1_851_951_Open_Image onclick="this.style.display='none'; Codehighlighter1_851_951_Open_Text.style.display='none'; Codehighlighter1_851_951_Closed_Image.style.display='inline'; Codehighlighter1_851_951_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_851_951_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_851_951_Closed_Text.style.display='none'; Codehighlighter1_851_951_Open_Image.style.display='inline'; Codehighlighter1_851_951_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(frm.elements[i].</SPAN><SPAN style="COLOR: #0000ff">checked</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN id=Codehighlighter1_851_951_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/Images/dot.gif"></SPAN><SPAN id=Codehighlighter1_851_951_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frm.elements[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">].</SPAN><SPAN style="COLOR: #0000ff">checked</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">Uncheck&nbsp;main&nbsp;select&nbsp;all&nbsp;checkbox</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">script</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>然后checkbox这样定义的：<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">asp:TemplateColumn&nbsp;HeaderText</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">aaa</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">HeaderTemplate</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">asp:CheckBox&nbsp;id</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">CheckAll</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;OnClick</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">javascript:&nbsp;return&nbsp;select_deselectAll&nbsp;(this.checked,&nbsp;this.id);</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>runat</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">server</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;&lt;/</SPAN><SPAN style="COLOR: #000000">asp:CheckBox</SPAN><SPAN style="COLOR: #000000">&gt;&lt;</SPAN><SPAN style="COLOR: #000000">font&nbsp;face</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Webdings</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;color</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">white</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;size</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">4</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">a</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">font</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">HeaderTemplate</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">ItemTemplate</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">asp:CheckBox&nbsp;id</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">DeleteThis</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;OnClick</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">javascript:&nbsp;return&nbsp;select_deselectAll&nbsp;(this.checked,this.id);</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;runat</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">server</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;&lt;/</SPAN><SPAN style="COLOR: #000000">asp:CheckBox</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">ItemTemplate</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV><img src ="http://www.cnblogs.com/powerlc/aggbug/272962.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47998/" target="_blank">传诺基亚正在开发Android手机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>C#修饰符 </title><link>http://www.cnblogs.com/powerlc/archive/2005/10/02/248092.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Sun, 02 Oct 2005 06:44:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/10/02/248092.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/248092.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/10/02/248092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/248092.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/248092.html</trackback:ping><description><![CDATA[修饰符用于限定类型以及类型成员的申明,c#中有13种修饰符,按功能可分为三部分:存取修饰符,类修饰符和成员修饰符. 
<P>存取修饰符:</P>
<P>public:存取不受限制.</P>
<P>private:只有包含该成员的类可以存取.</P>
<P>internal:只有当前工程可以存取.</P>
<P>protected:只有包含该成员的类以及继承的类可以存取.</P>
<P>&nbsp;</P>
<P>类修饰符:</P>
<P>abstract:可以被指示一个类只能作为其它类的基类.</P>
<P>sealed:指示一个类不能被继承.</P>
<P>&nbsp;</P>
<P>成员修饰符:</P>
<P>abstract:指示该方法或属性没有实现.</P>
<P>const:指定域或局部变量的值不能被改动.</P>
<P>event:声明一个事件.</P>
<P>extern:指示方法在外部实现.</P>
<P>override:对由基类继承成员的新实现.</P>
<P>readonly:指示一个域只能在声明时以及相同类的内部被赋值.</P>
<P>static:指示一个成员属于类型本身,而不是属于特定的对象.</P>
<P>virtual:指示一个方法或存取器的实现可以在继承类中被覆盖<BR><BR>new 结由基类继承的重载</P><img src ="http://www.cnblogs.com/powerlc/aggbug/248092.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47996/" target="_blank">7月编程语言排行榜</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>c++程序员的常用工具集</title><link>http://www.cnblogs.com/powerlc/archive/2005/10/01/247765.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Sat, 01 Oct 2005 03:46:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/10/01/247765.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/247765.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/10/01/247765.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/247765.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/247765.html</trackback:ping><description><![CDATA[<H2>c++程序员的常用工具集</H2>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ■...开发环境<BR><BR>　　----＞Turbo c<BR><BR>　　DOS时代c语言开发的经典工具，目前适合两类人使用：c语言beginner（尤其是学生一族），具有怀旧情节的专业人士：）<BR><BR>　　----＞Visual C++ 6.0/7.0<BR><BR>　　稳定而强大的IDE开发环境，具有丰富的调试功能，定制宏的功能也是其一大特色。Microsoft的经典之作，功能强大自不必言说。附带的一些工具也很不错，比如：Spy++。但编译器较之同类，支持c++标准的程度不够好，尤其6.0及以前的版本。<BR><BR>　　----＞BCB<BR><BR>　　Borland的C++ Builder是可以与VC匹敌的另一个功能强大的IDE，速度和稳定性稍逊，但对c++标准支持的程度较好。<BR></P>
<P>----＞Cygwin<BR><BR>　　Windows平台下的C++编译器，基于gcc，又完全兼容Window特有的东西，比如对winsock的支持。从http://www.cygwin.com可以找到有关Cygwin的详细信息。<BR><BR>　　----＞Dev-c++<BR><BR>　　Windows平台下，一个类似VC、BCB的c++ IDE开发环境，属于共享软件。界面亲切优雅，size也不大，其4.9.x版有中文语言支持，无需汉化。编译器基于gcc，完全支持STL。但是对于规模较大的软件项目，恐怕难以胜任。可以从:http://www.bloodshed.net/dev/devcpp.html找到有关Dev-c++的有关信息。<BR><BR>　　----＞Source Insight<BR><BR>　　有着和Dev c++一样漂亮的界面，提供代码的编辑和察看功能，具有丰富的语法加亮功能，可以像VC一样自动弹出成员函数的提示，并具有快速方便的函数跳转功能（但是跳转速度似乎有点慢）。只是默认设置不适合时，需要仔细的调整和修改。无法查找经typedef之后的名字。<BR><BR>　　■...辅助<BR><BR>　　----＞Visual Assist<BR><BR>　　VC IDE环境下的辅助编程工具，能识别各种关键字、函数、成员变量，自动给出tip，并自动更正大小写错误，标示拼写错误等。是VC开发的良好伴侣。 <BR><BR>　　----＞Understand for C++<BR><BR>　　一款c/c++IDE编程的辅助工具，支持反向工程，代码导向和一些统计功能，从http://www.scitools.com可以找到有关Understand for C++的详细信息。<BR><BR>■...程序编辑器<BR><BR>　　----＞EditPlus<BR><BR>　　一款很不错的文本编辑软件，功能强大却又十分轻巧。支持不同语言的语法加亮，还有Project组织功能，具有丰富的自定义功能。通过设置User Tool，可以和其他语言编译器结合，形成一个简单的IDE。<BR><BR>　　----＞Ultra Edit<BR><BR>　　功能和EditPlus相当，通过脚本文件提供的配置功能可以定制编辑环境，但自6.0版以后一直没多大变化，就编程而言，自定义设置没有EditPlus方便。 <BR><BR>　　----＞EMACS<BR><BR>　　公认的世界上功能最多，最复杂的文本编辑器，其实也可以当作程序员用的编辑器。<BR><BR>　　----＞Visual Slick Edit<BR><BR>　　一个功能强大的程序员用编辑器。最值得一提的是其定制功能，很好用，可以和EMACS相比。自带了一套PCODE解释器，用c的语法，还可以挂接动态库。配合mingw一起使用很方便。从http://www.slickedit.com可以找到有关SlickEdit的详细信息。<BR><BR>　　----＞IQEdit<BR><BR>　　全功能的程序员用编辑器，界面很漂亮，从http://pwksoftware.com可以找到有关IQEdit的详细信息。<BR><BR>　　■...UML/建模<BR><BR>　　----＞Rational Rose<BR><BR>　　强大的建模工具，早已"家喻户晓"，功过自然不必多加评说了。从http://www.rationalsoftware.com.cn可以找到有关Rational Rose的详细信息。<BR><BR>　　----＞Visual Modeler </P>
<P>MS Visual Studio 6.0所附的小工具。属于Rational和MicroSoft合作的战略产品，是Rose的简化版。<BR>----＞Visio<BR><BR>　　Microsoft的建模工具，感觉更人性化一些，但功能没有Rose多、强、专，支持正向的代码生成，以及对代码的反向工程。<BR><BR>　　----＞Together<BR><BR>　　另一款功能强大的建模工具，用java编写而成，口碑不错，不过速度稍稍慢了一些。从http://www.togethersoft.com可以找到有关Togather的详细信息，另外，以下网址提供了一个有关Together的教程： 　　　http://www.cc.puv.fi/~tka/kurssit/Tietojarjestelmien_suunnittelu/together/TCCGuide6<BR><BR>　　----＞Visual UML<BR><BR>　　支持多种语言类型，比如：VC、VB、DELPHI、CORBA IDL等，可以直接从UML设计图生成代码，简单易用，完全适合Personal use，界面也很清爽。从http://www.visualObject.com可以找到有关Visual UML的详细信息。<BR><BR>　　----＞SmartDraw<BR><BR>　　通用图表制作软件，可以用来制作组织机构图、流程图、统计图表等。随带有图库，基本满足制作各类图表的需要。从http://www.smartdraw.com可以找到有关SmartDraw的详细信息。<BR><BR>　　----＞PlayCase<BR><BR>　　国产面向对象的建模软件，兼容UML和IDEF，轻量级软件，只是界面看起来有点简朴，乃是高展先生用Delphi完成的。<BR><BR>　　■...版本控制<BR><BR>　　----＞ClearCase<BR><BR>　　Rational的版本控制管理软件，功能强大，可以控制多种类型的文档，甚至包括Word、Excel、PowerPoint文档。但使用复杂，不易上手，且不是免费软件。<BR><BR>　　----＞CVS<BR><BR>　　为基于Web的分布式协同开发提供了版本控制管理手段，且是免费软件，可以通过脚本定制功能。但在权限控制方面功能相对较弱。<BR>----＞VSS<BR><BR>　　微软的版本控制管理工具，功能相对简单，适合于小型团队开发，将其整合到微软的其他开发工具中，使用起来十分方便。<BR><BR>　　----＞SourceOffSite<BR><BR>　　微软为开发人员提供的远程访问VSS数据库的工具，使数据库得以远程更新，以支持远程办公。其他的版本管理工具还包括：PVCS、VCS、RCS等。<BR><BR>　　■...XML<BR><BR>　　----＞expat<BR><BR>　　用于读取和处理XML文档的c函数库，最初是James Clark的个人作品，简单轻巧，且速度快。但支持的编码方式有限，最遗憾的是不支持中文。从http://expat.sourceforge.net可以找到有关expat的详细信息。<BR><BR>　　----＞xml4c<BR><BR>　　IBM的XML Parser，用c++语言写就，功能超级强大。号称支持多达100种字符编码，能够支持中文，适合于大规模的xml应用。若只是很小范围的应用，则非最佳选择，毕竟，你需要"背负"约12M左右的dll的沉重负担。从http://www.alphaworks.ibm.com/tech/xml4c可以找到有关xml4c的详细信息。 <BR><BR>　　----＞Xerces c++<BR><BR>　　Apache的XML项目，同样是c++实现，来源于IBM的xml4c，因此编程接口也是和xml4c一致的。但是目前只支持少数的字符编码，如ASCII，UTF-8，UTF-16等，不能处理包含中文字符的XML文档。从 http://xml.apache.org/xerces-c可以找到有关Xerces c++的详细信息。<BR><BR>　　■...测试<BR><BR>　　----＞CppUnit<BR><BR>　　一个c++的单元测试框架，可以通过派生测试类的方式，定制具体的测试方案。xUnit家族的一员，从JUnit移植而来，JUnit是Java语言的单元测试框架。从<A href="http://cppuint.sourceforge.net/"><FONT color=#336699>http://cppuint.sourceforge.net</FONT></A>可以找到有关CppUint的详细信息。</P>
<P>----＞Rational ROBOT<BR><BR>　　Rational的自动化测试工具，通过编写脚本的方式提供自动化测试特性。其GUI方式的脚本录制功能，有助于对GUI软件进行功能测试；其VU方式的脚本录制功能，有助于测试某些软件的数据通讯功能。<BR><BR>　　----＞Rational Purify<BR><BR>　　同样是Rational的自动化测试工具，不需要被测程序的源代码，可以用来检查内存访问错误、Windows API调用错误等，以完成软件的可靠性测试，属于白盒测试。<BR><BR>　　其他的Rational测试工具还包括：TestFactory、PureCoverage、TestManager等。 <BR><BR>　　■...日志<BR><BR>　　----＞log4cpp<BR><BR>　　一个用于日志记录的c++函数库，可以将内容以定制的方式记录到不同的目的地，比如：文件、控制台syslog等，同时还可以通过控制记录级别来屏蔽掉某些无关记录。从http://log4cpp.sourceforge.net可以找到有关log4cpp的详细信息。<BR><BR>　　■...注释<BR><BR>　　----＞Doc++<BR><BR>　　注释文档生成工具，根据源程序中的文档注释，可以输出TeX和HTML格式的文档。除了支持c/c++语言外，还支持IDL和java。仅提供命令行使用方式。从http://docpp.sourceforge.net可以找到有关Doc++的详细信息。<BR><BR>　　----＞Doxygen<BR><BR>　　注释文档生成工具，较之Doc++功能更为齐全，可以生成包括HTML、PDF、RTF在内的多种格式的文档，并有GUI界面，除了支持c/c++语言外，还支持IDL、java、PHP、c#等。从<A href="http://www.stack.nl/%7Edimitri/doxygen"><FONT color=#002c99>http://www.stack.nl/~dimitri/doxygen</FONT></A>可以找到有关Doxygen的详细信息。</P><img src ="http://www.cnblogs.com/powerlc/aggbug/247765.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47995/" target="_blank">Google Voice 上手</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>10条有益的涉世建议ZZ</title><link>http://www.cnblogs.com/powerlc/archive/2005/09/27/244929.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Tue, 27 Sep 2005 02:55:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/09/27/244929.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/244929.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/09/27/244929.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/244929.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/244929.html</trackback:ping><description><![CDATA[<FONT size=2>如何在涉世之初少走弯路，有一个好的开端，开始一番成功的事业？以下是一些先行者积累的10条有益的涉世建议。好好地遵循、把握这些建议吧，比起所学的课堂课程来，它毫不逊*！ <BR><BR>1. 买个闹钟，以便按时叫醒你。<BR><BR>贪 睡和不守时，都将成为你工作和事业上的绊脚石，任何时候都一样。不仅要学会准时，更要学会提前。就如你坐车去某地，沿途的风景很美，你忍不住下车看一看， 后来虽然你还是赶到了某地，却不是准时到达。&#8220;闹钟&#8221;只是一种简单的标志和提示，真正灵活、实用的时间，掌握在每个人的心中。 <BR><BR>2. 如果你不喜欢现在的工作，要么辞职不干，要么就闭嘴不言。<BR><BR>初出茅庐，往往眼高手低，心高气傲，大事做不了，小事不愿做。不要养成挑三拣四的习惯。不要雨天烦打伞，不带伞又怕淋雨，处处表现出不满的情绪。记住，不做则已，要做就要做好。 <BR><BR>3. 每个人都有孤独的时候。<BR><BR>要 学会忍受孤独，这样才会成熟起来。年轻人嘻嘻哈哈、打打闹闹惯了，到了一个陌生的环境，面对形形**的人和事，一下子不知所措起来，有时连一个可以倾心说 话的地方也没有。这时，千万别浮躁，学会静心，学会忍受孤独。在孤独中思考，在思考中成熟，在成熟中升华。不要因为寂寞而乱了方寸，而去做无聊无益的事 情，白白浪费了宝贵的时间。 <BR><BR>4. 走运时要做好倒霉的准备。<BR><BR>有一天，一只狐狸走到一个葡萄园外，看见里面水灵灵的葡萄垂 涎欲滴。可是外面有栅栏挡着，无*进去。于是它一狠心绝食三日，减肥之后，终于钻进葡萄园内饱餐一顿。当它心满意足地想离开葡萄园时，发觉自己吃得太饱， 怎么也钻不出栅栏了。相信任何人都不愿做这样的狐狸。退路同样重要。饱带干粮，晴带雨伞，点滴积累，水到渠成。有的东西今天似乎一文不值，但有朝一日也许 就会身价百倍。 <BR><BR>5. 不要像玻璃那样脆弱。<BR><BR>有的人眼睛总盯着自己，所以长不高看不远；总是喜欢怨天尤人，也使别人无比厌烦。没有苦中苦，哪来甜中甜？不要像玻璃那样脆弱，而应像水晶一样透明，太阳一样辉煌，腊梅一样坚强。既然睁开眼睛享受风的清凉，就不要埋怨风中细小的沙粒。 <BR><BR>6. 管住自己的嘴巴。<BR><BR>不 要谈论自己，更不要议论别人。谈论自己往往会自大虚伪，在名不副实中失去自己。议论别人往往陷入鸡毛蒜皮的是非口舌中纠缠不清。每天下班后和你的那些同事 朋友喝酒聊天可不是件好事，因为，这中间往往会把议论同事、朋友当做话题。背后议论人总是不好的，尤其是议论别人的短处，这些会降低你的人格。 <BR><BR>7. 机会从不会&#8220;失掉&#8221;，你失掉了，自有别人会得到。<BR><BR>不要凡事在天，守株待兔，更不要寄希望于&#8220;机会&#8221;。机会只不过是相对于充分准备而又善于创造机会的人而言的。也许，你正为失去一个机会而懊悔、埋怨的时候，机会正被你对面那个同样的&#8220;倒霉鬼&#8221;给抓住了。没有机会，就要创造机会，有了机会，就要巧妙地抓住。 <BR><BR>8. 若电话老是不响，你该打出去。<BR><BR>很多时候，电话会给你带来意想不到的收获，它不是花瓶，仅仅成为一种摆设。交了新朋友，别忘了老朋友，朋友多了路好走。交际的一大诀窍就是主动。好的人缘好的口碑，往往助你的事业更上一个台阶。 <BR><BR>9. 千万不要因为自己已经到了结婚年龄而草率结婚。<BR><BR>想结婚，就要找一个能和你心心相印、相辅相携的伴侣。不要因为放纵和游戏而恋爱，不要因为恋爱而影响工作和事业，更不要因一桩草率而失败的婚姻而使人生受阻。感情用事往往会因小失大。 <BR><BR>10. 写出你一生要做的事情，把单子放在皮夹里，经常拿出来看。<BR><BR>人生要有目标，要有计划，要有提醒，要有紧迫感。一个又一个小目标串起来，就成了你一生的大目标。生活富足了，环境改善了，不要忘了皮夹里那张看似薄薄的单子。</FONT><BR><!-- comment these out if you want to see an example of custom fields, but remember to name the fields
     in the same way they are named here: 'imfeeling' (livejournal.com style), 'listening' and 'new_field' 
<p>
 <b></b> <br/>
 <b>:</b> <br/> 
 <b></b>?</p> 
--><img src ="http://www.cnblogs.com/powerlc/aggbug/244929.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47994/" target="_blank">Google号召社区力量为互联网加速</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>算术运算的溢出问题 </title><link>http://www.cnblogs.com/powerlc/archive/2005/09/09/233227.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Fri, 09 Sep 2005 05:24:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/09/09/233227.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/233227.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/09/09/233227.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/233227.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/233227.html</trackback:ping><description><![CDATA[关于算术运算的溢出问题，曾经我也迷茫过，而且不知道为什么整型变量溢出后会是模运算的结果呢，以前还以为是不可以预测的，不过弄懂了原码、补码的概念后，就发现其实都是有规律可循的，如果你还不太清楚补码什么东西，建议先看看随笔『计算机中的原码、反码和补码』，弄清楚整型数据在计算机中是如何储存的。<BR>　　在那篇文中，我们讲述了为什么我们把-1强制成无符号短整型输出后会得到65535，在这里我们不对它进行类型转换，我们只是超出它的范围看看。<BR>　　还是定义一个<FONT color=#0000ff>2字节大小的短整型</FONT>short int n;，学了前面的知识，我们知道这里n的范围是-32768~32767，而且通过前面知识我们也知道： 
<P><FONT color=#0000ff>　　这里的-32768在计算机中特殊表示为10000000 00000000<BR>　　0~32767是00000000 00000000~01111111 11111111<BR>　　-1~-32767是11111111 11111111~10000000 00000001</FONT></P>
<P>　　当我们赋值n=32767，我们先n+1，超出它的范围，再输出n看看，结果是-32768，为什么？我们来分析一下，32767在内存中是以01111111 11111111储存的，我们对这个二进制码加1运算看看，结果是10000000 00000000，它表示的数是多少，哈哈，这不就是-32768吗？不甘心，也许是巧合呢，那我们再加1看看，结果是10000000 00000001，表示的是-32767，再多试几个也一样的。哦，原来不是巧合呀，正因为如此，所以我们就不用这么繁琐了，直接进行模运算就可以了！啊？什么是模运算？昏&#8230;&#8230;<FONT color=#008000>模运算就是除整取余的运算。</FONT></P>
<P>　　下面我把书上的例子再拿出来给你讲你就明白了。<BR>-------------------------------------------------------<BR>在16位机器上进行下面的操作：//为什么强调16位机器？因为16位机器上的int型的存储空间是2个字节</P>
<P>int weight=42896;</P>
<P>　　如果你把输出，在16位机器中将不能得到42896，而是-22640。因为有符号整数的表示范围是-32768~32767（共65536个数），所以它只能得到42896的补码-22640（42896-65536=-22640）。<BR>　　<FONT color=#ff0000>一个整型类型的变量，用任何一个超过表示范围的整数初始化，得到的值为用该整数范围作模运算后的值。</FONT>例如：</P>
<P>int weight=142896;</P>
<P>　　则当weight是2字节整型数时，得到值为11824。因为142896-2*65536=11824。为什么不是用142896-3*65536=-53712呢，因为weight的范围是-32768~32767，显而易见，-53712不在这个范围内。<BR>-------------------------------------------------------</P>
<P>　　关于溢出，还有个强制转换时遇到的溢出问题，比如说我们把一个4字节的整型转换成2字节的短整型时就会遇到这个问题，如果要推算出显示结果，那就是知道数据在4字节整型中是怎么储存的，在2字节的短整型中又是如何储存的，而且还要弄清楚2字节在4字节中是怎么截取的，这些问题我们暂时就不讨论了，以后我再单另来说。</P>
<P>关于溢出我还要出一个单选题给大家做做：<BR>-------------------------------------------------------<BR><STRONG><FONT color=#0000ff>单选题：下列程序段中，不是死循环的是（　）<BR>(A) int i=100;<BR>&nbsp;&nbsp;&nbsp; while(1)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i=i%10+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i&gt;1000) break;<BR>&nbsp;&nbsp;&nbsp; }</FONT></STRONG></P>
<P><STRONG><FONT color=#0000ff>(B) int a=0;<BR>&nbsp;&nbsp;&nbsp; do<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++a;<BR>&nbsp;&nbsp;&nbsp; }while(a&gt;0)</FONT></STRONG></P>
<P><STRONG><FONT color=#0000ff>(C) for(;;);</FONT></STRONG></P>
<P><STRONG><FONT color=#0000ff>(D) m=12345;<BR>&nbsp;&nbsp;&nbsp; while(m++%2+m%2) m++<BR></FONT></STRONG></P><img src ="http://www.cnblogs.com/powerlc/aggbug/233227.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47989/" target="_blank">Twitter无处不在 魔兽世界Twitter发送器插件发布</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>计算机中的原码、反码和补码</title><link>http://www.cnblogs.com/powerlc/archive/2005/09/09/233225.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Fri, 09 Sep 2005 05:22:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/09/09/233225.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/233225.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/09/09/233225.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/233225.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/233225.html</trackback:ping><description><![CDATA[大家都知道数据在计算机中都是按字节来储存了，1个字节等于8位（1Byte=8bit），而计算机只能识别0和1这两个数，所以根据排列，1个字节能代表256种不同的信息，即2<SUP>8</SUP>（0和1两种可能，8位排列），比如定义一个字节大小的无符号整数（unsigned char），那么它能表示的是0～255（0~2<SUP>8</SUP>-1）这些数，一共是256个数，因为，前面说了，一个字节只能表示256种不同的信息。别停下，还是一个字节的无符号整数，我们来进一步剖析它，0是这些数中最小的一个，我们先假设它在计算机内部就用8位二进制表示为00000000（从理论上来说也可以表示成其他不同的二进制码，只要这256个数每个数对应的二进制码都不相同就可以了），再假设1表示为00000001，2表示为00000010，3表示为00000011，依次类推，那么最大的那个数255在8位二进制中就表示为最大的数11111111，然后，我们把这些二进制码换算成十进制看看，会发现刚好和我们假设的数是相同的，而事实上，在计算机中，无符号的整数就是按这个原理来储存的，所以告诉你一个无符号的整数的二进制码，你就可以知道这个数是多少，而且知道在计算机中，这个数本身就是以这个二进制码来储存的。比如我给你一个2个字节大小的二进制码，首先声明它表示的是无符号的整数：00000000 00000010，我们把前面的0省略，换算一下，它表示的也是数值2，和前面不同的是，它占了2个字节的内存。不同的类型占的内存空间不同，如在我的电脑中char是1个字节，int是4个字节，long是8个字节（你的可能不同，这取决于不同的计算机设置），它们的不同之处仅仅是内存大的能表示的不同的信息多些，也就是能表示的数范围更大些（unsigned int能表示的范围是0~2<SUP>8*4</SUP>-1），至于怎么算，其实都是一样的，直接把二进制与十进制相互转换，二进制就是它在计算机中的样子，十进制就是我们所表示的数。啊哈，原来这些都是可以计算的呀，我曾经还以为不同的计算机储存的原理是不同的，取决于商家的喜好呢，呵呵。<IMG height=20 src="http://www.cnitblog.com/Emoticons/QQ/14.gif" width=20 border=0>说了这么多怎么还没有提到原码、反码和补码呀，别急别急，心急吃不了热豆腐，呵呵，因为无符号的整数根本就没有原码、反码和补码。（啊，那不是被欺骗了，5555````我告诉妈妈去，哥哥欺负我）都说了别急嘛，你就不想想我说了这么半天的无符号整数，那么有符号的整数怎么办啊？<BR><BR>　　呵呵，对，只有有符号的整数才有原码、反码和补码的！其他的类型一概没有。虽然我们也可以用二进制中最小的数去对应最小的负数，最大的也相对应，但是那样不科学，下面来说说科学的方法。还是说一个字节的整数，不过这次是有符号的啦，1个字节它不管怎么样还是只能表示256个数，因为有符号所以我们就把它表示成范围：-128-127。它在计算机中是怎么储存的呢？可以这样理解，用最高位表示符号位，如果是0表示正数，如果是1表示负数，剩下的7位用来储存数的绝对值的话，能表示2<SUP>7</SUP>个数的绝对值，再考虑正负两种情况，2<SUP>7</SUP>*2还是256个数。首先定义0在计算机中储存为00000000，对于正数我们依然可以像无符号数那样换算，从00000001到01111111依次表示1到127。那么这些数对应的二进制码就是这些数的原码。到这里很多人就会想，那负数是不是从10000001到11111111依次表示-1到-127，那你发现没有，如果这样的话那么一共就只有255个数了，因为10000000的情况没有考虑在内。实际上，10000000在计算机中表示最小的负整数，就是这里的-128，而且实际上并不是从10000001到11111111依次表示-1到-127，而是刚好相反的，从10000001到11111111依次表示-127到-1。负整数在计算机中是以补码形式储存的，补码是怎么样表示的呢，这里还要引入另一个概念——反码，所谓反码就是把负数的原码（负数的原码和和它的绝对值所对应的原码相同，简单的说就是绝对值相同的数原码相同）各个位按位取反，是1就换成0，是0就换成1，如-1的原码是00000001，和1的原码相同，那么-1的反码就是11111110，而补码就是在反码的基础上加1，即-1的补码是11111110+1=11111111，因此我们可以算出-1在计算机中是按11111111储存的。<FONT color=#0000ff>总结一下，计算机储存有符号的整数时，是用该整数的补码进行储存的，0的原码、补码都是0，正数的原码、补码可以特殊理解为相同，负数的补码是它的反码加1。</FONT><FONT color=#000000>下面再多举几个例子，来帮助大家理解！<BR><BR><FONT color=#008000>十进制　&#8594;　二进制　　（怎么算？要是不知道看计算机基础的书去）<BR>47　　　&#8594;　101111<BR><BR>有符号的整数　　　　原码　　　　反码　　　　补码<BR>　　47　　　　　　00101111　　11010000　　00101111（正数补码和原码相同）<BR>　－47　　　　　　00101111　　11010000　　11010001（负数补码是在反码上加1）</FONT><BR><BR>再举个例子，学C语言的同学应该做过这道题：<BR>把－1以无符号的类型输出，得什么结果？（程序如下）<BR><BR><FONT color=#ff0000>#include&lt;iostream.h&gt;<BR>void main()<BR>{<BR>&nbsp;short int n=-1;<BR>&nbsp;cout&lt;&lt;(unsigned short int)n&lt;&lt;endl;<BR>}<BR></FONT><BR>　　首先在我的电脑中short int类型的储存空间是2个字节，你的可能不同，我说过，这取决于你的计算机配置。它能储存2<SUP>8*2</SUP>＝65536个不同的数据信息，如果是无符号那么它的范围是0~65535（0~2<SUP>16</SUP>-1），如果是有符号，那么它的范围是-32768~32767（-2<SUP>15</SUP>~2<SUP>15</SUP>-1）。这道题目中，开始n是一个有符号的短整型变量，我们给它赋值为-1，根据我们前面所说的，它在计算机中是以补码11111111 11111111储存的，注意前面说了是2个字节。如果把它强制为无符号的短整型输出的话，那么我们就把刚才的二进制把看成无符号的整型在计算机中储存的形式，对待无符号的整型就没有什么原码、反码和补码的概念了，直接把11111111 11111111转化成十进制就是65535，其实我们一看都是一就知道它是范围中最大的一个数了。呵呵，就这么简单。你个把上面的源代码编译运行看看，如果你的电脑short int也是两个字节，那就会和我得一样的结果。你可以先用这个语句看看：<FONT color=#ff0000>cout&lt;&lt;sizeof(short int)&lt;&lt;endl;</FONT>看看你的电脑里的短整型占多少的储存空间，也可以用sizeof来看其它任何类型所分配的储存空间。<BR><BR>　　最后提醒一句，关于数据如何在计算机中储存的，这里只适用于整型的数据，对于浮点型的是另一种方式，这里我们暂时就不深究了。<BR></FONT><img src ="http://www.cnblogs.com/powerlc/aggbug/233225.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47989/" target="_blank">Twitter无处不在 魔兽世界Twitter发送器插件发布</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>用一条SQL完成数据表的行统计 </title><link>http://www.cnblogs.com/powerlc/archive/2005/09/08/232279.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Thu, 08 Sep 2005 02:08:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/09/08/232279.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/232279.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/09/08/232279.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/232279.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/232279.html</trackback:ping><description><![CDATA[有数据表: 
<DIV>名称&nbsp;&nbsp;&nbsp; 数量&nbsp;&nbsp; 状态<BR>-----------------------<BR>产品A&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp;&nbsp; 进货<BR>产品A&nbsp;&nbsp;&nbsp; 20&nbsp;&nbsp;&nbsp;&nbsp; 销售<BR>产品B&nbsp;&nbsp;&nbsp; 20&nbsp;&nbsp;&nbsp;&nbsp; 进货</DIV>
<DIV>&nbsp;</DIV>
<DIV>要查询结果为:</DIV>
<DIV>产品名称&nbsp;&nbsp; 库存数量 <BR>-----------------------<BR>产品A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -10&nbsp; <BR>产品B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20</DIV><STRONG>解决方法一:<BR></STRONG>SELECT <BR>DISTINCT 名称,<BR>(ISNULL((select SUM(A.数量) from 库存表 A WHERE A.名称 = 库存表.名称 AND A.状态='进货'), 0)<BR>-<BR>ISNULL((select SUM(A.数量) from 库存表 A WHERE A.名称 = 库存表.名称&nbsp; AND A.状态='销售'), 0)) AS 库存数量<BR>FROM<BR>库存表<BR><BR><STRONG>解决方法二(Access):<BR></STRONG>SELECT 名称,Sum(IIF(状态='进货',1,-1) * 数量) as&nbsp; 库存数量 From 库存表 Group By 名称 <BR><BR><STRONG>解决方法三(Access):<BR></STRONG>
<DIV>SELECT 名称,Sum(IIF(状态='进货',数量,0)-IIF(状态='销货',数量,0)) as&nbsp; 库存数量 From 库存表 Group By 名称</DIV><img src ="http://www.cnblogs.com/powerlc/aggbug/232279.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47988/" target="_blank">Firefox 3.5匆忙推出漏洞多 Mozilla本月将更新</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>C#的代理和事件</title><link>http://www.cnblogs.com/powerlc/archive/2005/08/31/227239.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Wed, 31 Aug 2005 09:29:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/08/31/227239.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/227239.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/08/31/227239.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/227239.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/227239.html</trackback:ping><description><![CDATA[<P><SPAN style="COLOR: red"><STRONG>&nbsp;1.代理 (Delegate)</STRONG></SPAN></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大多数情况下，当调用函数时我们会指定要直接调用的函数。比如类 MyClass 如具有一个名为 Process 的函数，我们通常会按如下方法进行调用：</P>
<P><SPAN style="BACKGROUND-COLOR: #ffcc99">MyClass myClass = new MyClass();<BR>myClass.Process();</SPAN></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种调用在大多数情况下都是可行的。但是有些时候，我们不想直接调用函数，而希望能够将它传递给其他人，让他们进行调用。在以事件驱动的系统（如图形用户界面）中，这种方法尤为有用。例如当我需要在用户单击某个按钮即可执行一些代码时，或者当我要记录一些信息但却无法指定记录方式时。</P>
<P>考虑以下示例：<BR><SPAN style="BACKGROUND-COLOR: #ffcc99">public class MyClass<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Process()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("Process() begin");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 这里还有其他东西...<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("Process() end");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>}</SPAN></P>
<P><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在此类中，我们进行一些记录，以了解函数的开始时间和结束时间。但是，我们的记录仅限于发送到控制台，这可能不是我们所需要的。我们真正需要的是能够控制从函数外部记录信息的位置，同时不必使函数代码变得复杂。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这种情况下，代理便是理想的解决方法。代理使我们可以指定将要调用的函数，看起来好像不需要指定哪个函数一样。对代理的声明类似于对函数的声明，不同的是在这种情况下，我们所声明的是此代理可引用的函数签名。</P>
<P>我们的例子将声明一个带有单个字符串参数且没有返回类型的代理。修改该类如下：</P>
<P><SPAN style="BACKGROUND-COLOR: #ffcc99">public class MyClass<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public delegate void LogHandler(string message);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Process(LogHandler logHandler)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (logHandler != null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logHandler("Process() begin");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 这里还有其他东西&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (logHandler != null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logHandler ("Process() end");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>}</SPAN></P>
<P>使用代理与直接调用函数相似。只是在调用函数前，我们需要检查代理是否为空（即不指向一个函数）。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 要调用 Process() 函数，我们需要声明一个与代理相匹配的记录函数，然后创建代理的实例，以指向该函数。然后，将此代理传递给 Process() 函数。<BR><SPAN style="BACKGROUND-COLOR: #ffcc99"><SPAN style="BACKGROUND-COLOR: #ffcc99">class Test<BR><SPAN style="BACKGROUND-COLOR: #ffcc00">{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Logger(string s)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(s);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void Main()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyClass myClass = new MyClass();</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyClass.LogHandler lh = new MyClass.LogHandler(Logger);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myClass.Process(lh);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>}</P>
<P></SPAN></SPAN></SPAN>Logger() 函数是一个我们要从 Process() 函数中调用的函数，我们对它进行了声明，使其与代理相匹配。在 Main() 中，我们创建代理的一个实例，然后将该函数传递给代理构造函数，使其指向该函数。最后，我们将代理传递给 Process() 函数，该函数接着调用 Logger() 函数。</P>
<P>如果您习惯于使用 C++ 语言，您可能会认为代理很像函数指针，这种想法非常接近于事实。但是，代理并不&#8220;仅仅&#8221;是函数指针，它还提供了其它多种功能。</P>
<P><BR><SPAN style="COLOR: red">1.1 传递状态 (Passing State)</SPAN></P>
<P>在上面的简单示例中，Logger() 函数仅仅是输出些字符串。一个不同的函数可能把信息记录到文件中，但是要进行这种操作，该函数需要知道把信息写道什么文件中。</P>
<P>对于 Win32&#174; 而言，当您传递函数指针时，可随之传递状态。但是对于 C#，这就没有必要了，因为代理既可指向静态函数，&#8220;也&#8221;可指向成员函数。以下是一个有关如何指向成员函数的示例：</P><SPAN style="BACKGROUND-COLOR: #ffcc99">
<P>class FileLogger<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileStream fileStream;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StreamWriter streamWriter;</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public FileLogger(string filename)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileStream = new FileStream(filename, FileMode.Create);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; streamWriter = new StreamWriter(fileStream);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Logger(string s)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; streamWriter.WriteLine(s);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Close()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; streamWriter.Close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileStream.Close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>}</P></SPAN>
<P><SPAN style="BACKGROUND-COLOR: #ffcc99">class Test<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void Main()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileLogger fl = new FileLogger("process.log");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyClass myClass = new MyClass();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyClass.LogHandler lh = new MyClass.LogHandler(fl.Logger);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myClass.Process(lh);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fl.Close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}</SPAN></P>
<P>FileLogger 类仅封装文件。我们修改了Main()以使代理指向 FileLogger 的 fl 实例的 Logger() 函数。当从 Process() 中激活此代理时，将会调用成员函数并把字符串记录到相应的文件中。</P>
<P>其优点在于，我们不必更改 Process() 函数 －对代理来说代码都是相同的,无论引用的是静态函数还是成员函数。</P>
<P><SPAN style="COLOR: red">1.2 多播 (Multicasting)</SPAN></P>
<P>虽然指向成员函数的功能已让人感到满意，但利用代理，您还可以巧妙地完成其它一些任务。在 C# 中，代理是&#8220;多播&#8221;的，这表示它们可同时指向一个以上的函数（即基于 System.MulticastDelegate 类型）。多播代理将维护一个函数列表。当调用该代理时，将会调用列表中的所有函数。我们可以添加第一个示例中的记录函数，然后调用这两个代理。要将两个代理组合起来，可使用 Delegate.Combine() 函数。其代码如下：</P>
<P><SPAN style="BACKGROUND-COLOR: #ffcc99">MyClass.LogHandler lh = (MyClass.LogHandler) <BR>Delegate.Combine(new Delegate[] <BR>{new MyClass.LogHandler(Logger),<BR>new MyClass.LogHandler(fl.Logger)});</SPAN></P>
<P>啊呀，真的是很难看！幸好 C# 提供了一种更好的语法，而不用将以上语法强加给用户。无需调用 Delegate.Combine()，仅使用 += 即可组合这两个代理：</P>
<P><SPAN style="BACKGROUND-COLOR: #ffcc99">MyClass.LogHandler lh = null;<BR>lh += new MyClass.LogHandler(Logger);<BR>lh += new MyClass.LogHandler(fl.Logger);</SPAN></P>
<P>这样就简洁多了。要从多播代理中删除一个代理，可调用 Delegate.Remove() 或使用 -= 运算符（我知道自己会用哪一个）。<BR>当你调用多播代理时，就会按出现顺序对调用列表中的代理进行同步调用。如果此过程中出现了错误，执行过程即被中断。<BR>如果您想更严格地控制调用顺序（例如要进行万无一失的调用），则可以从代理中获取调用列表，然后自行调用这些函数。以下是一个示例：</P>
<P><SPAN style="COLOR: red">foreach (LogHandler logHandler in lh.GetInvocationList())<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logHandler(message);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 在这里处理异常情况吗？&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>代码只是将每次调用包装在一个 try-catch 对中，这样在一个调用处理（handler）中引发的异常就不会妨碍对其它调用处理（handler）的激活。</P>
<P><BR><STRONG style="COLOR: red">2.事件 （Events）</STRONG></P>
<P>我们已经对代理进行了较长时间的讨论，现在该谈一谈事件了。一个显而易见的问题就是：&#8220;既然我们已经有了代理，为什么还需要事件？&#8221;</P>
<P>回答这个问题的最好方法就是考虑用户界面对象所发生的事件。例如，一个按钮可能有公共的&#8220;Click&#8221;代理。我们可将一个函数挂接到该代理上，这样当单击此按钮时，就可以调用该代理。例如：</P>
<P><SPAN style="BACKGROUND-COLOR: #ffcc99">Button.Click = new Button.ClickHandler(ClickFunction);</SPAN></P>
<P>它表示当单击此按钮时，将调用 ClickFunction()。</P>
<P>小测验：上述代码是否存在问题？我们忘记了什么？<BR>答案是，我们忘记使用 += 而直接分配了代理。这表示其它任何挂接到&#8220;Button.Click&#8221;的代理现在都将解除挂接。&#8220;Button.Click&#8221;应该是公共的，以便其它对象可以对其进行访问，因此上述情况将无法避免。同样，要删除代理，用户可能会编写以下代码：<BR>Button.Click = null;<BR>这将删除所有代理。</P>
<P>这些情形极其糟糕，因为在许多情况下只挂接了一个代理，问题不会明显地表现为bug。随后，当挂接了另一个代理时，事情就糟了！</P>
<P>事件在代理模型上添加了一层保护。这里有一个支持事件的对象例子：</P><SPAN style="BACKGROUND-COLOR: #ffcc99">
<P>public class MyObject<BR>{<BR>&nbsp;&nbsp;&nbsp; public delegate void ClickHandler(object sender, EventArgs e);<BR>&nbsp;&nbsp;&nbsp; public event ClickHandler Click;</P>
<P>&nbsp;&nbsp;&nbsp; protected void OnClick()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (Click != null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Click(this, null);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}</P></SPAN>
<P>ClickHandler 代理使用事件代理的标准模式来定义事件的签名。它以handler的名字结尾，带有两个参数。第一个参数是发送此事件的对象，第二个参数用于传递伴随事件发生的信息。本例中没有要传递的信息，因此直接使用 EventArgs；但是如果有数据要传递，则使用从 EventArgs 派生的类（例如 MouseEventArgs）。</P>
<P>&#8220;Click&#8221;事件的声明做两件事情：首先，它声明一个名为&#8220;Click&#8221;的代理成员变量，在类的内部使用。其次，它声明一个名为&#8220;Click&#8221;的事件，该事件可按照常规访问规则从类的外部进行使用（在此例中，事件为公共事件）。<BR>一个像OnClick()这样的函数通常包含进去以便该类型或从该类型的派生类型可以触发事件。由于&#8220;Click&#8221;是代理，您将会注意到，用来触发事件的代码与代理的代码相同。</P>
<P>与代理类似，我们使用 += 和 -= 来挂接或解除事件挂接，但与代理不同的是，仅可对事件执行这些操作。这可确保不会发生先前所讨论的两种错误。</P>
<P>使用事件是很简单的事情。</P>
<P><SPAN style="BACKGROUND-COLOR: #ffcc99">class Test<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void ClickFunction(object sender, EventArgs args)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // process the event here.<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void Main()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MyObject myObject = new MyObject();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myObject.Click += new MyObject.ClickHandler(ClickFunction);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>}</SPAN></P>
<P>我们创建一个与代理签名相匹配的静态函数或成员函数，然后用 += 向事件中添加代理的一个新实例。</P><img src ="http://www.cnblogs.com/powerlc/aggbug/227239.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47987/" target="_blank">预测：Twitter最可能收购的十家公司</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Repeater导出为excel格式 </title><link>http://www.cnblogs.com/powerlc/archive/2005/08/27/223989.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Sat, 27 Aug 2005 03:08:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/08/27/223989.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/223989.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/08/27/223989.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/223989.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/223989.html</trackback:ping><description><![CDATA[数据绑定到Repeater1 ，下面是将Repeater1的内容导出的示例代码<BR>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.IO.StringWriter&nbsp;sw&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;System.IO.StringWriter();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Web.UI.HtmlTextWriter&nbsp;hw&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Web.UI.HtmlTextWriter(sw);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">.Repeater1.RenderControl(hw);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Clear();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.ContentType&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">application/vnd.ms-excel</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Charset&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Page.EnableViewState&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.AppendHeader(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Content-Disposition</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">attachment;filename=Teacher.xls</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&lt;html&gt;&lt;head&gt;&lt;meta&nbsp;http-equiv=Content-Type&nbsp;content=\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">text</SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000">html;&nbsp;charset</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">GB2312\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;&lt;title&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copyright&nbsp;by&nbsp;SDU&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;center&gt;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(sw.ToString());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&lt;/center&gt;&lt;/body&gt;&lt;/html&gt;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.End();</SPAN></DIV></DIV>说明：当字符型的数字串导出到excel的时候，经常自动变为科学记数法表示，解决的方法，绑定到Repeater1的时候如此：<BR>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">td&nbsp;style</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">vnd.ms-excel.numberformat:@</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&gt;&lt;%</SPAN><SPAN style="COLOR: #000000">#&nbsp;DataBinder.Eval(Container.DataItem,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">shenfenzheng</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN style="COLOR: #000000">%&gt;&lt;/</SPAN><SPAN style="COLOR: #000000">td</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN></DIV></DIV><img src ="http://www.cnblogs.com/powerlc/aggbug/223989.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47986/" target="_blank">网易澄清:与暴雪合资公司仅提供技术支持</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>常见算法基础之排序</title><link>http://www.cnblogs.com/powerlc/archive/2005/08/26/223760.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Fri, 26 Aug 2005 13:58:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/08/26/223760.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/223760.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/08/26/223760.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/223760.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/223760.html</trackback:ping><description><![CDATA[<B>排序</B>：是计算机内经常进行的一种操作，其目的是将一组&#8220;无序&#8221;的记录序列调整为&#8220;有序&#8221;的记录序列。（本帖只讨论内部排序）<BR>&nbsp;常见排序：1.插入排序：直接插入，二分插入，希尔排序。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.交换排序：冒泡排序，快速排序。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.选择排序：直接选择，竞赛树，堆排序。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.归并排序：二路，多路。<BR>************************************************************<BR>1.插入排序：<BR>1.1直接插入：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1.1顺序存储<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;InsertSorting(int&nbsp;R[],int&nbsp;n)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=1;i&lt;n;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;temp=R[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;j=i-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((j&gt;=0)&amp;&amp;(temp&lt;R[j]))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R[j+1]=R[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R[j+1]=temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1.2链式存储<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;InsertSorting(List&nbsp;l)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node&nbsp;*h,*s,*p,*q,*last;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h=l.h;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q=h;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p=h-&gt;next;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last=p-&gt;next;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(;p-&gt;next!=null;last=last-&gt;next)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((q!=p)&amp;&amp;(p-&gt;data&gt;q-&gt;data))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s=q;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;q=q-&gt;next;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(q!=p)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s-&gt;next=p;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p-&gt;next=q;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p=last;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>1.2.二分插入：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.2顺序存储<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;BInsertSort(int&nbsp;R[],int&nbsp;n)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=1;i&lt;n;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left=0;&nbsp;&nbsp;right=i-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;temp=R[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(left&lt;=right)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;middle=(left+right)/2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(temp&lt;R[middle])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;right=middle-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;left=middle+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j=i-1;j&gt;=left;j--)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R[j+1]=R[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R[left]=temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>1.3shell:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.3略<BR><BR>2.交换排序<BR>2.1冒泡排序&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;BubbleSorting(int&nbsp;R[],int&nbsp;n)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=1;i&lt;n;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bool&nbsp;change=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j=n-1;j&lt;=n;j--)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(R[j]&lt;R[j-1])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;temp=R[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R[j]=R[j-1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R[j-1]=temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;change=1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!change)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>2.2快速排序<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;QuickSort(int&nbsp;R[],int&nbsp;left,int&nbsp;right)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i=left;&nbsp;int&nbsp;j=right;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;temp=R[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(i&lt;j)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((R[j]&gt;temp)&amp;&amp;(i&lt;j))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j--;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i&lt;j)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R[i]=R[j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((R[i]&lt;temp)&amp;&amp;(i&lt;j))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i&lt;j)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R[j]=R[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;R[i]=temp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(left&lt;i-1)&nbsp;&nbsp;&nbsp;&nbsp;QuickSort(R,left,&nbsp;i-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(right&gt;i+1)&nbsp;&nbsp;&nbsp;QuickSort(R,i=1,&nbsp;right);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<img src ="http://www.cnblogs.com/powerlc/aggbug/223760.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47985/" target="_blank">杰克逊悼念仪式或成史上最大规模Web活动</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>算法 ZZ</title><link>http://www.cnblogs.com/powerlc/archive/2005/08/26/223758.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Fri, 26 Aug 2005 13:56:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/08/26/223758.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/223758.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/08/26/223758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/223758.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/223758.html</trackback:ping><description><![CDATA[<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">★稀疏矩阵的快速转置算法：<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>template</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>SpreMatrix</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">::FastTranspos(&nbsp;)<BR><IMG id=Codehighlighter1_63_819_Open_Image onclick="this.style.display='none'; Codehighlighter1_63_819_Open_Text.style.display='none'; Codehighlighter1_63_819_Closed_Image.style.display='inline'; Codehighlighter1_63_819_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_63_819_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_63_819_Closed_Text.style.display='none'; Codehighlighter1_63_819_Open_Image.style.display='inline'; Codehighlighter1_63_819_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_63_819_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_63_819_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">rowSize</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">[Cols];</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">建立辅助数组，记录原数组每列（即新数组每行）的元素个数</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">rowStart</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">[Cols];</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;建立辅助数组，记录新数组非零元素在三元组表中的位置</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;SpreMatrix</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;b(Cols,Rows);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;b.Rows</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Cols;&nbsp;&nbsp;b.&nbsp;Cols&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Rows;&nbsp;b.Terms</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Terms;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(Terms</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">)<BR><IMG id=Codehighlighter1_279_770_Open_Image onclick="this.style.display='none'; Codehighlighter1_279_770_Open_Text.style.display='none'; Codehighlighter1_279_770_Closed_Image.style.display='inline'; Codehighlighter1_279_770_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_279_770_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_279_770_Closed_Text.style.display='none'; Codehighlighter1_279_770_Open_Image.style.display='inline'; Codehighlighter1_279_770_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_279_770_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_279_770_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;i</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">Cols;&nbsp;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)&nbsp;&nbsp;rowSize[i]</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;i</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">Terms;&nbsp;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)&nbsp;&nbsp;rowSize[smArray[i].col]</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;smArray[i]为原数组三元组表数组</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">rowStart[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">]</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">求出非零元素（每行第一个）在新数组三元组表中的位置</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">Cols;&nbsp;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;rowStart[i]</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;rowStart[i</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">]</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;rowSize[i</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">];<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;i</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">Terms;&nbsp;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">填写三元组表</SPAN><SPAN style="COLOR: #008000"><BR><IMG id=Codehighlighter1_557_763_Open_Image onclick="this.style.display='none'; Codehighlighter1_557_763_Open_Text.style.display='none'; Codehighlighter1_557_763_Closed_Image.style.display='inline'; Codehighlighter1_557_763_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_557_763_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_557_763_Closed_Text.style.display='none'; Codehighlighter1_557_763_Open_Image.style.display='inline'; Codehighlighter1_557_763_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_557_763_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_557_763_Open_Text><SPAN style="COLOR: #000000">{&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;j</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">rowStart[smArray[i].col];<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;b.smArrary[j].row</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;smArrary[i].col;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;b.&nbsp;smArrary[j].col</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;smArrary[i].row;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;b.&nbsp;smArrary[j].value</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;smArrary[i].value;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;rowStart[smArrary[i].col]</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">同行（新数组中）的下一个元素位置</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>delete[]&nbsp;rowSize;&nbsp;delete[]&nbsp;rowStart;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;b;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV><img src ="http://www.cnblogs.com/powerlc/aggbug/223758.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47985/" target="_blank">杰克逊悼念仪式或成史上最大规模Web活动</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>约瑟夫c++ ZZ</title><link>http://www.cnblogs.com/powerlc/archive/2005/08/26/223755.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Fri, 26 Aug 2005 13:54:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/08/26/223755.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/223755.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/08/26/223755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/223755.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/223755.html</trackback:ping><description><![CDATA[<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">template</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;cList;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>template</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;Node<BR><IMG id=Codehighlighter1_55_182_Open_Image onclick="this.style.display='none'; Codehighlighter1_55_182_Open_Text.style.display='none'; Codehighlighter1_55_182_Closed_Image.style.display='inline'; Codehighlighter1_55_182_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_55_182_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_55_182_Closed_Text.style.display='none'; Codehighlighter1_55_182_Open_Image.style.display='inline'; Codehighlighter1_55_182_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_55_182_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_55_182_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;friend&nbsp;cList</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">:<BR><IMG id=Codehighlighter1_102_103_Open_Image onclick="this.style.display='none'; Codehighlighter1_102_103_Open_Text.style.display='none'; Codehighlighter1_102_103_Closed_Image.style.display='inline'; Codehighlighter1_102_103_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_102_103_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_102_103_Closed_Text.style.display='none'; Codehighlighter1_102_103_Open_Image.style.display='inline'; Codehighlighter1_102_103_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node(&nbsp;)</SPAN><SPAN id=Codehighlighter1_102_103_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_102_103_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000">;<BR><IMG id=Codehighlighter1_130_131_Open_Image onclick="this.style.display='none'; Codehighlighter1_130_131_Open_Text.style.display='none'; Codehighlighter1_130_131_Closed_Image.style.display='inline'; Codehighlighter1_130_131_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_130_131_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_130_131_Closed_Text.style.display='none'; Codehighlighter1_130_131_Open_Image.style.display='inline'; Codehighlighter1_130_131_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i):data(i)</SPAN><SPAN id=Codehighlighter1_130_131_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_130_131_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">:<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;data;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">next,&nbsp;</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">h;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>template</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;cList<BR><IMG id=Codehighlighter1_216_440_Open_Image onclick="this.style.display='none'; Codehighlighter1_216_440_Open_Text.style.display='none'; Codehighlighter1_216_440_Closed_Image.style.display='inline'; Codehighlighter1_216_440_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_216_440_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_216_440_Closed_Text.style.display='none'; Codehighlighter1_216_440_Open_Image.style.display='inline'; Codehighlighter1_216_440_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_216_440_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_216_440_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">:<BR><IMG id=Codehighlighter1_242_272_Open_Image onclick="this.style.display='none'; Codehighlighter1_242_272_Open_Text.style.display='none'; Codehighlighter1_242_272_Closed_Image.style.display='inline'; Codehighlighter1_242_272_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_242_272_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_242_272_Closed_Text.style.display='none'; Codehighlighter1_242_272_Open_Image.style.display='inline'; Codehighlighter1_242_272_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cList()</SPAN><SPAN id=Codehighlighter1_242_272_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_242_272_Open_Text><SPAN style="COLOR: #000000">{first</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Node;&nbsp;last</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;first&nbsp;;}</SPAN></SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">建立头结点</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Insert(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i);&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">在尾部插入新结点</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Next(&nbsp;);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;DelNode(&nbsp;);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Jeson&nbsp;(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;n,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;s,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;m);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">:<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>Node&nbsp;</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">first,&nbsp;</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">last,&nbsp;</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">p,&nbsp;</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">q,&nbsp;</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">r;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>template</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;cList</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">::&nbsp;Insert(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i)<BR><IMG id=Codehighlighter1_491_572_Open_Image onclick="this.style.display='none'; Codehighlighter1_491_572_Open_Text.style.display='none'; Codehighlighter1_491_572_Closed_Image.style.display='inline'; Codehighlighter1_491_572_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_491_572_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_491_572_Closed_Text.style.display='none'; Codehighlighter1_491_572_Open_Image.style.display='inline'; Codehighlighter1_491_572_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_491_572_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_491_572_Open_Text><SPAN style="COLOR: #000000">{&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>Node&nbsp;</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">m</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Node(i);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;last</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">m;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;last</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;last</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;last</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">first;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>template</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;cList</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">::&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Next(&nbsp;)<BR><IMG id=Codehighlighter1_625_739_Open_Image onclick="this.style.display='none'; Codehighlighter1_625_739_Open_Text.style.display='none'; Codehighlighter1_625_739_Closed_Image.style.display='inline'; Codehighlighter1_625_739_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_625_739_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_625_739_Closed_Text.style.display='none'; Codehighlighter1_625_739_Open_Image.style.display='inline'; Codehighlighter1_625_739_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_625_739_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_625_739_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(p</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">first</SPAN><SPAN style="COLOR: #000000">&amp;&amp;</SPAN><SPAN style="COLOR: #000000">q</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000">first)<BR><IMG id=Codehighlighter1_650_668_Open_Image onclick="this.style.display='none'; Codehighlighter1_650_668_Open_Text.style.display='none'; Codehighlighter1_650_668_Closed_Image.style.display='inline'; Codehighlighter1_650_668_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_650_668_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_650_668_Closed_Text.style.display='none'; Codehighlighter1_650_668_Open_Image.style.display='inline'; Codehighlighter1_650_668_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_650_668_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_650_668_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>p</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">q;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>q</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">q</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(q</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">first)<BR><IMG id=Codehighlighter1_689_711_Open_Image onclick="this.style.display='none'; Codehighlighter1_689_711_Open_Text.style.display='none'; Codehighlighter1_689_711_Closed_Image.style.display='inline'; Codehighlighter1_689_711_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_689_711_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_689_711_Closed_Text.style.display='none'; Codehighlighter1_689_711_Open_Image.style.display='inline'; Codehighlighter1_689_711_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_689_711_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_689_711_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>p</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">q;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>q</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">first</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_718_736_Open_Image onclick="this.style.display='none'; Codehighlighter1_718_736_Open_Text.style.display='none'; Codehighlighter1_718_736_Closed_Image.style.display='inline'; Codehighlighter1_718_736_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_718_736_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_718_736_Closed_Text.style.display='none'; Codehighlighter1_718_736_Open_Image.style.display='inline'; Codehighlighter1_718_736_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_718_736_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_718_736_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>p</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">q;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>q</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">q</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>template</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;cList</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">::&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;DelNode(&nbsp;)<BR><IMG id=Codehighlighter1_791_989_Open_Image onclick="this.style.display='none'; Codehighlighter1_791_989_Open_Text.style.display='none'; Codehighlighter1_791_989_Closed_Image.style.display='inline'; Codehighlighter1_791_989_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_791_989_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_791_989_Closed_Text.style.display='none'; Codehighlighter1_791_989_Open_Image.style.display='inline'; Codehighlighter1_791_989_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_791_989_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_791_989_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(p</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">&amp;&amp;</SPAN><SPAN style="COLOR: #000000">q</SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">删除结点</SPAN><SPAN style="COLOR: #008000"><BR><IMG id=Codehighlighter1_825_842_Open_Image onclick="this.style.display='none'; Codehighlighter1_825_842_Open_Text.style.display='none'; Codehighlighter1_825_842_Closed_Image.style.display='inline'; Codehighlighter1_825_842_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_825_842_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_825_842_Closed_Text.style.display='none'; Codehighlighter1_825_842_Open_Image.style.display='inline'; Codehighlighter1_825_842_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_825_842_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_825_842_Open_Text><SPAN style="COLOR: #000000">{p</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">q</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(q</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)<BR><IMG id=Codehighlighter1_888_909_Open_Image onclick="this.style.display='none'; Codehighlighter1_888_909_Open_Text.style.display='none'; Codehighlighter1_888_909_Closed_Image.style.display='inline'; Codehighlighter1_888_909_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_888_909_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_888_909_Closed_Text.style.display='none'; Codehighlighter1_888_909_Open_Image.style.display='inline'; Codehighlighter1_888_909_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_888_909_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_888_909_Open_Text><SPAN style="COLOR: #000000">{p</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">first</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_946_967_Open_Image onclick="this.style.display='none'; Codehighlighter1_946_967_Open_Text.style.display='none'; Codehighlighter1_946_967_Closed_Image.style.display='inline'; Codehighlighter1_946_967_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_946_967_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_946_967_Closed_Text.style.display='none'; Codehighlighter1_946_967_Open_Image.style.display='inline'; Codehighlighter1_946_967_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_946_967_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_946_967_Open_Text><SPAN style="COLOR: #000000">{first</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">p</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;q;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>template</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;cList</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">::&nbsp;Jesonph&nbsp;(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;n,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;m,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;s)<BR><IMG id=Codehighlighter1_1055_1453_Open_Image onclick="this.style.display='none'; Codehighlighter1_1055_1453_Open_Text.style.display='none'; Codehighlighter1_1055_1453_Closed_Image.style.display='inline'; Codehighlighter1_1055_1453_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_1055_1453_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1055_1453_Closed_Text.style.display='none'; Codehighlighter1_1055_1453_Open_Image.style.display='inline'; Codehighlighter1_1055_1453_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_1055_1453_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1055_1453_Open_Text><SPAN style="COLOR: #000000">{&nbsp;&nbsp;p</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">first;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;q</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">p</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">next;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;i</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">s;&nbsp;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">寻找起始点s</SPAN><SPAN style="COLOR: #008000"><BR><IMG id=Codehighlighter1_1120_1130_Open_Image onclick="this.style.display='none'; Codehighlighter1_1120_1130_Open_Text.style.display='none'; Codehighlighter1_1120_1130_Closed_Image.style.display='inline'; Codehighlighter1_1120_1130_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1120_1130_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1120_1130_Closed_Text.style.display='none'; Codehighlighter1_1120_1130_Open_Image.style.display='inline'; Codehighlighter1_1120_1130_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1120_1130_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1120_1130_Open_Text><SPAN style="COLOR: #000000">{&nbsp;Next(&nbsp;);}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;i</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">n;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000">执行n</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1次，删除n</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1个结点，找出最终结点<BR><IMG id=Codehighlighter1_1185_1407_Open_Image onclick="this.style.display='none'; Codehighlighter1_1185_1407_Open_Text.style.display='none'; Codehighlighter1_1185_1407_Closed_Image.style.display='inline'; Codehighlighter1_1185_1407_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1185_1407_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1185_1407_Closed_Text.style.display='none'; Codehighlighter1_1185_1407_Open_Image.style.display='inline'; Codehighlighter1_1185_1407_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1185_1407_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1185_1407_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;j</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;j</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">k;j</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">逐个删除满足条件的结点</SPAN><SPAN style="COLOR: #008000"><BR><IMG id=Codehighlighter1_1236_1245_Open_Image onclick="this.style.display='none'; Codehighlighter1_1236_1245_Open_Text.style.display='none'; Codehighlighter1_1236_1245_Closed_Image.style.display='inline'; Codehighlighter1_1236_1245_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1236_1245_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1236_1245_Closed_Text.style.display='none'; Codehighlighter1_1236_1245_Open_Image.style.display='inline'; Codehighlighter1_1236_1245_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1236_1245_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1236_1245_Open_Text><SPAN style="COLOR: #000000">{Next(&nbsp;);}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</SPAN><SPAN style="COLOR: #000000">&lt;&lt;</SPAN><SPAN style="COLOR: #000000">q</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">data</SPAN><SPAN style="COLOR: #000000">&lt;&lt;</SPAN><SPAN style="COLOR: #000000">endl;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">m=q-&gt;key;若每个人手中有密码（即新的m值）则使用该语句，同时需要改变Node的</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DelNode(&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">私有成员，和Insert函数</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</SPAN><SPAN style="COLOR: #000000">&lt;&lt;</SPAN><SPAN style="COLOR: #000000">&#8221;优胜结点:&#8221;</SPAN><SPAN style="COLOR: #000000">&lt;&lt;</SPAN><SPAN style="COLOR: #000000">first</SPAN><SPAN style="COLOR: #000000">-&gt;</SPAN><SPAN style="COLOR: #000000">data</SPAN><SPAN style="COLOR: #000000">&lt;&lt;</SPAN><SPAN style="COLOR: #000000">endl;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>main(&nbsp;)<BR><IMG id=Codehighlighter1_1464_1604_Open_Image onclick="this.style.display='none'; Codehighlighter1_1464_1604_Open_Text.style.display='none'; Codehighlighter1_1464_1604_Closed_Image.style.display='inline'; Codehighlighter1_1464_1604_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_1464_1604_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1464_1604_Closed_Text.style.display='none'; Codehighlighter1_1464_1604_Open_Image.style.display='inline'; Codehighlighter1_1464_1604_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_1464_1604_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1464_1604_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;n,&nbsp;m,&nbsp;s；<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;cin</SPAN><SPAN style="COLOR: #000000">&gt;&gt;</SPAN><SPAN style="COLOR: #000000">n</SPAN><SPAN style="COLOR: #000000">&gt;&gt;</SPAN><SPAN style="COLOR: #000000">m</SPAN><SPAN style="COLOR: #000000">&gt;&gt;</SPAN><SPAN style="COLOR: #000000">s;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;cList&nbsp;&nbsp;jesonphlist;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;i</SPAN><SPAN style="COLOR: #000000">&lt;=</SPAN><SPAN style="COLOR: #000000">n;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)<BR><IMG id=Codehighlighter1_1543_1568_Open_Image onclick="this.style.display='none'; Codehighlighter1_1543_1568_Open_Text.style.display='none'; Codehighlighter1_1543_1568_Closed_Image.style.display='inline'; Codehighlighter1_1543_1568_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1543_1568_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1543_1568_Closed_Text.style.display='none'; Codehighlighter1_1543_1568_Open_Image.style.display='inline'; Codehighlighter1_1543_1568_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1543_1568_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1543_1568_Open_Text><SPAN style="COLOR: #000000">{&nbsp;jesonphlist&nbsp;.Insert(i);}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;jesonphlist.&nbsp;Jesonph&nbsp;(n,&nbsp;m,&nbsp;s);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV>约瑟夫算法（带头结点的循环链表实现）<img src ="http://www.cnblogs.com/powerlc/aggbug/223755.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47985/" target="_blank">杰克逊悼念仪式或成史上最大规模Web活动</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>JavaScript实用的一些技巧</title><link>http://www.cnblogs.com/powerlc/archive/2005/08/26/223746.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Fri, 26 Aug 2005 13:34:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/08/26/223746.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/223746.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/08/26/223746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/223746.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/223746.html</trackback:ping><description><![CDATA[摘要: 1.oncontextmenu="window.event.returnValue=false"将彻底屏蔽鼠标右键&lt;tableborderoncontextmenu=return(false)&gt;&lt;td&gt;no&lt;/table&gt;可用于Table2.&lt;bodyonselectstart="returnfalse"&gt;取消选取、防止复制3.onpaste="re&nbsp;&nbsp;<a href='http://www.cnblogs.com/powerlc/archive/2005/08/26/223746.html'>阅读全文</a><img src ="http://www.cnblogs.com/powerlc/aggbug/223746.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47985/" target="_blank">杰克逊悼念仪式或成史上最大规模Web活动</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>OOA思想</title><link>http://www.cnblogs.com/powerlc/archive/2005/08/24/221652.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Wed, 24 Aug 2005 04:08:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/08/24/221652.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/221652.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/08/24/221652.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/221652.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/221652.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN style="COLOR: black"><SPAN style="FONT-FAMILY: Comic Sans MS">使用面向对象的思维方法，其实是一个把业务逻辑从具体的编程技术当中抽象出来的过程，而这个抽象的过程是自上而下的，非常符合人类的思维习惯，也就是先不考虑问题解决的细节，把问题的最主要的方面抽象成为一个简单的框架，集中精力思考如何解决主要矛盾，然后在解决问题的过程中，再把问题的细节分割成一个一个小问题，再专门去解决细节问题。<SPAN lang=EN-US>&nbsp;<BR><BR></SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因而一旦牢牢的抓住了这一点，你就会发现在软件设计和开发过程中，你自己总是会不知不觉的运用面向对象的思维方法来设计和编写程序，并且程序的设计和开发也变得不再那么枯燥，而一个合理运用面向对象技术进行设计和架构的软件，更是具备了思维的艺术美感。</SPAN></SPAN><img src ="http://www.cnblogs.com/powerlc/aggbug/221652.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47984/" target="_blank">《商业周刊》:Mozilla的志愿者开发模式被复制</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>面视常用英语 </title><link>http://www.cnblogs.com/powerlc/archive/2005/08/23/220539.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Mon, 22 Aug 2005 16:33:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/08/23/220539.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/220539.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/08/23/220539.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/220539.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/220539.html</trackback:ping><description><![CDATA[<DIV class=postTitle>&nbsp;</DIV>
<DIV class=postText>想找一份满意的工作吗? 面试中面对外国老板连珠炮似的提问, 有没有觉得心慌意乱、<BR>无所适从？求职过程中面试尤为重要，回答问题，如果能简明扼要，真诚中肯，合乎老<BR>外口味，那么录取机会必定大大增加。当然，有的问题，也要轻描淡写，以免言多必<BR>失。本篇摘录了若干面试中出现频率较高的问题及精彩回答，希望能在您求职路上助您<BR>一臂之力。<BR><BR>Q： Can you sell yourself in two minutes？ Go for it. （你能在两分钟內自我推<BR>荐吗？大胆试试吧！）<BR><BR>A： With my qualifications and experience, I feel I am hardworking,<BR>responsible and diligent in any project I undertake. Your organization could<BR>benefit from my analytical and interpersonal skills.(依我的资格和经验，我觉<BR>得我对所从事的每一个项目都很努力、负责、勤勉。我的分析能力和与人相处的技巧，<BR>对贵单位必有价值。)<BR><BR>Q：Give me a summary of your current job description. (对你目前的工作，能否<BR>做个概括的说明。)<BR><BR>A：I have been working as a computer programmer for five years. To be<BR>specific, I do system analysis, trouble shooting and provide software<BR>support. (我干了五年的电脑程序员。具体地说，我做系统分析，解决问题以及软件供<BR>应方面的支持。）<BR><BR>Q：Why did you leave your last job？(你为什么离职呢？)<BR><BR>A： Well, I am hoping to get an offer of a better position. If opportunity<BR>knocks, I will take it.（我希望能获得一份更好的工作，如果机会来临，我会抓<BR>住。）<BR><BR>A：I feel I have reached the "glass ceiling" in my current job. / I feel<BR>there is no opportunity for advancement. （我觉得目前的工作，已经达到顶峰，<BR>即沒有升迁机会。)<BR><BR>Q：How do you rate yourself as a professional？(你如何评估自己是位专业人员呢<BR>？)<BR><BR>A： With my strong academic background, I am capable and competent. (凭借我<BR>良好的学术背景，我可以胜任自己的工作，而且我认为自己很有竞争力。）<BR><BR>A：With my teaching experience, I am confident that I can relate to students<BR>very well. (依我的教学经验，我相信能与学生相处的很好。)<BR><BR>Q： What contribution did you make to your current (previous) organization？<BR>(你对目前/从前的工作单位有何贡献？)<BR><BR>A： I have finished three new projects, and I am sure I can apply my<BR>experience to this position. (我已经完成三个新项目，我相信我能将我的经验用在<BR>这份工作上。)<BR><BR>Q：What do you think you are worth to us？(你怎么认为你对我们有价值呢？)<BR><BR>A：I feel I can make some positive contributions to your company in the<BR>future. (我觉得我对贵公司能做些积极性的贡献。)<BR><BR>Q：What make you think you would be a success in this position？ (你如何知道<BR>你能胜任这份工作？）<BR><BR>A：My graduate school training combined with my internship should qualify me<BR>for this particular job. I am sure I will be successful. (我在研究所的训练，<BR>加上实习工作，使我适合这份工作。我相信我能成功。)<BR><BR>Q：Are you a multi-tasked individual？(你是一位可以同时承担数项工作的人吗？)<BR>or<BR><BR>Do you work well under stress or pressure？(你能承受工作上的压力吗?)<BR><BR>A：Yes, I think so.<BR><BR>A：The trait is needed in my current（or previous) position and I know I can<BR>handle it well. (这种特点就是我目前（先前）工作所需要的，我知道我能应付自<BR>如。)<BR><BR>Q：What is your strongest trait(s)？(你个性上最大的特点是什么？)<BR><BR>A：Helpfulness and caring.（乐于助人和关心他人。）<BR><BR>A：Adaptability and sense of humor.（适应能力和幽默感。）<BR><BR>A：Cheerfulness and friendliness.（乐观和友爱。）<BR><BR>Q： How would your friends or colleagues describe you？（你的朋友或同事怎样<BR>形容你？）<BR><BR>A： (pause a few seconds) (稍等几秒钟再答，表示慎重考虑。)<BR><BR>They say Mr. Chen is an honest, hardworking and responsible man who deeply<BR>cares for his family and friends. (他们说陈先生是位诚实、工作努力，负责任的<BR>人，他对家庭和朋友都很关心。)<BR><BR>A：They say Mr. Chen is a friendly, sensitive, caring and determined person.<BR>(他们说陈先生是位很友好、敏感、关心他人和有决心的人。)<BR><BR>Q：What personality traits do you admire？(你欣赏哪种性格的人？)<BR><BR>A： (I admire a person who is）honest, flexible and easy-going. (诚实、不死<BR>板而且容易相处的人。)<BR><BR>A： (I like) people who possess the "can do" spirit. (有"实际行动"的人。)<BR><BR>Q：What leadership qualities did you develop as an administrative personnel<BR>？(作为行政人员，你有什么样的领导才能？)<BR><BR>A：I feel that learning how to motivate people and to work together as a<BR>team will be the major goal of my leadership. (我觉得学习如何把人们的积极性<BR>调动起来，以及如何配合协同的团队精神，是我行政工作的主要目标。)<BR><BR>A：I have refined my management style by using an open-door policy. (我以开<BR>放式的政策，改进我的行政管理方式。)<BR><BR>Q：How do you normally handle criticism？(你通常如何处理別人的批评？)<BR><BR>A：Silence is golden. Just don't say anything; otherwise the situation could<BR>become worse. I do, however, accept constructive criticism. (沈默是金。不必<BR>说什么，否则情况更糟，不过我会接受建设性的批评。)<BR><BR>A：When we cool off, we will discuss it later. (我会等大家冷靜下来再讨论。)<BR><BR>Q： What do you find frustrating in a work situation？(在工作中，什么事令你<BR>不高兴？)<BR><BR>A： Sometimes, the narrow-minded people make me frustrated. (胸襟狭窄的人，<BR>有时使我泄气。)<BR><BR>A：Minds that are not receptive to new ideas. (不能接受新思想的那些取。)<BR><BR>Q：How do you handle your conflict with your colleagues in your work? (你如<BR>何处理与同事在工作中的意见不和？)<BR><BR>A：I will try to present my ideas in a more clear and civilized manner in<BR>order to get my points across. (我要以更清楚文明的方式，提出我的看法，使对方<BR>了解我的观点。)<BR><BR>Q：How do you handle your failure？(你怎样对待自己的失敗？)<BR><BR>A： None of us was born "perfect". I am sure I will be given a second chance<BR>to correct my mistake. （我们大家生来都不是十全十美的，我相信我有第二个机会<BR>改正我的错误。)<BR><BR>Q：What provide you with a sense of accomplishment. （什么会让你有成就感？）<BR><BR>A：Doing my best job for your company. (为贵公司竭力效劳。)<BR><BR>A：Finishing a project to the best of my ability. (尽我所能，完成一个项目。)<BR><BR>Q：If you had a lot of money to donate, where would you donate it to？Why？<BR>(假如你有很多钱可以捐赠，你会捐给什么单位？为什么？)<BR><BR>A：I would donate it to the medical research because I want to do something<BR>to help others. (我会捐给医药研究，因为我要为他人做点事。)<BR><BR>A：I prefer to donate it to educational institutions. (我乐意捐给教育机构。)<BR><BR>Q：What is most important in your life right now？(眼下你生活中最重要的是什<BR>么？)<BR><BR>A：To get a job in my field is most important to me. (对我来说，能在这个领域<BR>找到工作是最重要的。)<BR><BR>A：To secure employment hopefully with your company. (希望能在贵公司任职对我<BR>来说最重要。)<BR><BR>Q：What current issues concern you the most？(目前什么事是你最关心的？)<BR><BR>A：The general state of our economy and the impact of China' entry to WTO on<BR>our industry. (目前中国经济的总体情況以及中国入世对我们行业的影响。)<BR><BR>Q： How long would you like to stay with this company？(你会在本公司服务多久<BR>呢？)<BR><BR>A： I will stay as long as I can continue to learn and to grow in my field.<BR>(只要我能在我的行业力继续学习和长进，我就会留在这里。)<BR><BR>Q：Could you project what you would like to be doing five years from now？<BR>(你能预料五年后你会做什么吗？)<BR><BR>A：As I have some administrative experience in my last job, I may use my<BR>organizational and planning skills in the future.<BR><BR>(我在上一个工作中积累了一些行政经验，我将来也许要运用我组织和计划上的经验和<BR>技巧。)<BR><BR>A：I hope to demonstrate my ability and talents in my field adequately. (我<BR>希望能充分展示我在这个行业的能力和智慧。)<BR><BR>A：Perhaps, an opportunity at a management position would be exciting.（也许<BR>有机会，我将会从事管理工作。）<BR><BR>如果不愿正面回答，也可以说：<BR><BR>It would be premature for me to predict this. （现在对此问题的预测，尚嫌过<BR>早。）<BR><BR>甚至还可以打趣的说：<BR><BR>Hypothetically speaking, I might be able to do your current job as a<BR>director.（或 CEO 或 president）((说不定，我也能做你现在主任的工作呢！)<BR><BR>Q： What range of pay-scale are you interested in？(你喜欢那一种薪水层次标准<BR>？)<BR><BR>A： Money is important, but the responsibility that goes along with this job<BR>is what interests me the most. (薪水固然重要，但这工作伴随而来的责任更吸引<BR>我。)<BR><BR>A： 假如你有家眷，可以说：<BR><BR>To be frank and open with you, I like this job, but I have a family to<BR>support. (坦白地说，我喜欢这份工作，不过我必须要负担我的家庭。)<BR><BR>Other Tips (其它建议)<BR><BR>Know something about the organization you are applying to. (了解一些你申请工<BR>作单位的情况)<BR><BR>Dress properly. Don't shake hand with the interviewer until he/she extends<BR>his/her hand. (穿着要得体，人家伸手时才握手。)<BR><BR>Don't sit down until invited to do so by the interviewer. (人家未请，先別坐<BR>下。)<BR><BR>Make eye-contact with the interviewer during the interview. (面试时，眼睛要<BR>看着对方。)<BR><BR>Listen actively and stay calm. (注意听，保持冷静。)<BR><BR>If invited to a meal, be especially careful about your table manners. (被邀<BR>吃饭时，要特別注意餐桌礼节。)<BR><BR>Don't talk with your mouth full. (嘴里有食物，不可开口说话)<BR><BR>Don't make much noise while you eat. (吃东西不要出声音)<BR><BR>Don't blow your nose or use the toothpick at table. (不要拧鼻涕或用牙签剔牙)<BR><BR>Don't appear to be pushy or overly anxious to get a job.（不必过分表现急着要<BR>工作）<BR><BR>Be honest<BR>but not too modest.（要诚实，但不必太谦虚)<BR><BR>Don't put yourself down or cut yourself up. (不可妄自菲薄或自贬)<BR><BR>Try to avoid discussing politics or religion with your interviewer. (避免与<BR>面试人谈政治或宗教)</DIV><img src ="http://www.cnblogs.com/powerlc/aggbug/220539.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47977/" target="_blank">Mono 的Virtual PC 虚拟机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Java2十大经典中文图书 </title><link>http://www.cnblogs.com/powerlc/archive/2005/08/15/215540.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Mon, 15 Aug 2005 11:07:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/08/15/215540.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/215540.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/08/15/215540.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/215540.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/215540.html</trackback:ping><description><![CDATA[<P><FONT size=4>只针对Java2平台-而且是在国内可以找到的中文版的，其实书好不好是见仁见智的（高手可以去看Sun的开发文档，这也可以理解）--这只是一家之见而已--欢迎大家点评。 <BR>第一名：Java编程思想第二版（Thinking in java second)-包含范围：全部。 <BR>没说的--绝对的大师作品--当之无愧的第一--第一版时就享誉整个java界（当时网上好象也有人译了）--国内版是京京工作室翻译的-基本上毁了此书--错误术语太多-推荐高手看E文版，新手就不要先看此书了。第二版更精采--台湾的侯捷译了此书-可以到</FONT><A href="http://www.csdn.net/"><FONT color=#003366 size=4>www.csdn.net</FONT></A><FONT size=4>看看前几章的中文版（不过是台湾术语）。希望国内会快些引入此书，你也可到</FONT><A href="http://www.bruceeckel.com/"><FONT color=#003366 size=4>http://www.BruceEckel.com</FONT></A><FONT size=4>--作者的主页免费下载此书推荐</FONT><A href="http://www.bdelmee.easynet.be/java/index.html"><FONT color=#003366 size=4>http://www.bdelmee.easynet.be/java/index.html</FONT></A><FONT size=4>--有chm格式的--非常棒！BTW:这位大师最近在写Thinking in Python相信又是一本经典名著：） </FONT></P>
<P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp; 第二名：Java2编程详解（special edition java2)-包含范围：全部--这本书会排在core java2的前面可能很多人会不同意--但是就中译本和内容来看非常全面-适合新手成为高手-虽然国内的价位高了些（150）-但基本还是值得的--该有的内容都有了，做参考书也很不错-BTW-这个系列中的oracle8/8i使用手册也是一本很经典的书--同样推荐。 </FONT></P>
<P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp; 第三名：Java2核心技术卷一，二（core java2 volume1,2)-包含范围-全部 <BR>这两本我把它们看成一本不会有人有异议吧-这也是Sun的官方的书-我觉得相对来说-第二卷高级特性要比第一卷基础知识好（第一卷又是京京工作室译的--真影响情绪：（）-内容同样很全面--但是卷一虽说是基础知识，同样对新手来说不是很合适--感觉条理性不强-而且内容有些混杂-但第二卷完全可以弥补这些---精辟而细致-很适合有一定基础的Java程序员看。 </FONT></P>
<P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp; 第四名：Java 2图形设计 卷1:AWT 卷2：Swing-Graphic Java 1.2 Mastering the JFC Volume I:AWT SWING 3rd Edition包含范围--Java图形设计--没什么说的了--尽管图形设计不如J2EE那么火 ，而且Win32下做应用程序也不是java的强项--但是AWT和Swing仍然是Java程序员的必修课--看这两本就够了--看看厚度就知道了--而且这也是Sun官方出的图书。 </FONT></P>
<P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp; 第五名：J2EE构建企业系统??专家级解决方案 包含范围J2ee清华大学出版社译作者： <BR>[美]Paul J. Perrone，et al.著 张志伟等译--又是一本极厚的书1038页，105元--不过内容十分丰富--适合想对J2EE整体做了解的程序员，至于每项都想精就不太可能了-呵呵-毕竟在Java中思想是主要的。在这类中有本Java服务器高级编程也很不错-机工华章出的-wrox系列中的。 </FONT></P>
<P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp; 第六名： Java XML编程指南 电子工业出版社译作者： [美]Tom Myers，Alexander Nakhimovsky著包含范围Java+XML-XML在Java中的地位也越来越重要了--而国内能看到的还有一本中国电力出的o eilly的Java和XML--最后我还是选了这本wrox的，当然你要是想好好学学XML本身-还是看看那本XML高级编程吧--wrox系列中的-机工华章出的。 </FONT></P>
<P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp; 第七名：书名:Jini核心技术英文原书名: Core Jini <BR>作者: W.Keith Edwards 包含范围Jini--Jini也是Java体系中很重要的部分--而且更重要的是这本可能是国内唯一的一本Jini专著-翻译的也不错--在我看来是当之无愧的经典-同样是Sun的官方图书--内容很清晰透彻。 </FONT></P>
<P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp; 第八名:Enterprise JavaBeans第二版英文原书名: Enterprise JAVABEANS 作者: （美）Richard Monson-Haefel包含范围EJB --O&#8216;reilly出的--ejb的重要性我不用多说了吧--尽管有人说这本译的不好--但是同样它是国内目前唯一的EJB专著-o eilly的书就是只讲一方面或一项技术-很细-但价格也不菲，这本书的架构还可以--值得一看。 </FONT></P>
<P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp; 第九名：数据结构与算法分析（Java版)译作者： [美]Clifford A.Shaffer著 张铭 刘晓丹译包含范围Java算法--尽管基本上Java图书都是讲Java本身的特性--因为Java的体系太庞大了--而用Java来实现的数据结构与算法--这本书也是唯一一本---所以尽管这本不是那么的好但还是做以推荐。 </FONT></P>
<P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp; 第十名：软件工程Java语言实现-英文原书名: Software Engineering with Java 作者: Stephen R.Schach 译者: 袁兆山等--这本书没什么多说的--纯理论性的东西--但软件工程的重要也是有目共睹的-而且同样是这个领域中唯一的一本Java书。 </FONT></P>
<P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp; 补充一本：Java2编程起步Java2:A beginner guide译作者： [美]Herbert Schildt著 史兴华译-写了这么多才发现还没有为Java新手选一本书--这里是指对那些一窍不通而又想学的--（不久前的我呵呵）--看了几本后-包括Java2从入门到精通,21天学通java2-第二版后--还是选了这本--我觉得这本是最好的java入门书--好在哪里--看了就知道：） </FONT></P>
<P><FONT size=4>&nbsp;&nbsp;&nbsp;&nbsp; 后记：这十本不一定是最好的-只是我的个人看法-难免有误--而且Java的很多方面还没有包括进去--比如JSP--wrox有本JSP编程指南-但不是特别好-所以没有把它评进去，也没有看到太经典的JSP书--同样J2ME也没有好书只有本Palm应用程序设计??使用Java语言太薄了。还有本Java 2平台安全技术-结构,API设计和实现-是讲Java2安全的-同样很薄-Java2类库增补版--太贵不如去看文档。还有Jbuilder,Websphere等应用服务器，CORBA等其他和Java有关的方面都有些不错的书--在此就不多写了--不足之处请大家指出-也希望对大家有所帮助：）</FONT></P><img src ="http://www.cnblogs.com/powerlc/aggbug/215540.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47970/" target="_blank">19岁天才黑客发布首个iPhone 3GS破解软件</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Struts介绍 </title><link>http://www.cnblogs.com/powerlc/archive/2005/08/15/215504.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Mon, 15 Aug 2005 10:13:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/08/15/215504.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/215504.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/08/15/215504.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/215504.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/215504.html</trackback:ping><description><![CDATA[<P><FONT size=4>1 JSP Framework - Struts介绍 <BR>Struts是采用Java Servlet/JavaServer Pages技术，开发Web应用程序的开放源码的framework。 </FONT></P>
<P><FONT size=4>采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 </FONT></P>
<P><FONT size=4>Struts有如下的主要功能： </FONT></P>
<P><FONT size=4>1. 包含一个controller servlet，能将用户的请求发送到相应的Action对象。 </FONT></P>
<P><FONT size=4>2. JSP自由tag库，并且在controller servlet中提供关联支持，帮助开发员创建交互式表单应用。 </FONT></P>
<P><FONT size=4>3. 提供了一系列实用对象：XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。 </FONT></P>
<P><FONT size=4>Struts是Jakarta项目的一部分，主页在</FONT><A href="http://jakarta.apache.org/struts"><FONT color=#770000 size=4>http://jakarta.apache.org/struts</FONT></A><FONT size=4>. </FONT></P>
<P><FONT size=4>Version 0.5的下载地址：</FONT><A href="http://jakarta.apache.org/builds/jakarta-struts/release/v0.5"><FONT color=#770000 size=4>http://jakarta.apache.org/builds/jakarta-struts/release/v0.5</FONT></A><FONT size=4> </FONT></P>
<P><BR><FONT size=4>1.1 1、什么是MVC模式。 <BR>MVC(Model/View/Controller)模式是国外用得比较多的一种设计模式，好象最早是在Smaltalk中出现。MVC包括三类对象。Model是应用对象，View是它在屏幕上的表示，Controller定义用户界面对用户输入的响应方式。 </FONT></P>
<P><FONT size=4>1.2 2、是否所有JSP应用都该采用MVC模式？ <BR>不一定所有的JSP应用都该采用MVC模式。但对于大型应用来说，我认为还是该采用MVC模式。不使用MVC模式，用户界面界面设计往往将这些对象混在一起，而MVC则将它们分离以提高灵活性和复用性。 </FONT></P>
<P><FONT size=4>1.3 3、Struts中能做XML吗，与Cocoon相比有何优点？ <BR>Struts把主要精力放在JSP上了。Cocoon才是专业级的XML Framework。 </FONT></P>
<P><BR><FONT size=4>2. Struts的安装 <BR>2.1 安装Struts需要的软件 </FONT></P>
<P><FONT size=4>Java Development Kit - 你需要download和install 1.2(或之后)版本的JDK。下载地址：</FONT><A href="http://java.sun.com/j2se"><FONT color=#770000 size=4>http://java.sun.com/j2se</FONT></A><BR><FONT size=4>Servlet Container - 通常的选择是下载Tomcat(至少是3.1版，推荐使用3.2版)。下载地址：</FONT><A href="http://jakarta.apache.org/tomcat"><FONT color=#770000 size=4>http://jakarta.apache.org/tomcat</FONT></A><BR><FONT size=4>Ant Build System - 如果你通过Struts源码发布包安装，你必须下载1.1或之后版本的ant build system。在你通过Struts来开发你自己的Web应用程序是，我也推荐使用ant来build你的应用。下载地址：</FONT><A href="http://jakarta.apache.org/ant"><FONT color=#770000 size=4>http://jakarta.apache.org/ant</FONT></A><BR><FONT size=4>Servlet API Classes - 为了编译Structs自己，或应用程序使用Struts，你需要一个包含Servlet和JSP API对象的servlet.jar包。大多数Servlet container（例如Tomcat)已经自带了这个文件。否则，你必需下载：</FONT><A href="http://jakarta.apache.org/builds/jakarta-servletapi"><FONT color=#770000 size=4>http://jakarta.apache.org/builds/jakarta-servletapi</FONT></A><BR><FONT size=4>XML Parser - Structs需要一个与Java API for XML Parsing(JAXP)规格兼容的XML处理器。我推荐使用Xerces。下载地址：</FONT><A href="http://xml.apache.org/xerces-j"><FONT color=#770000 size=4>http://xml.apache.org/xerces-j</FONT></A><BR><FONT size=4>Xalan XSLT Processor - 如果你通过Structs源码发布版来构造你的Structs系统，你必须下载和安装1_2_D01或之后版本的Xalan XSLT处理器(Xerces中已自带Xalan)。这个处理器用于将基于XML的Structs文档转换为Html文档。<BR>? </FONT></P>
<P><BR><FONT size=4>2.2 通过源码构造Structs </FONT></P>
<P><FONT size=4>1.下载Structs的源码发布包。<BR>2.设置ANT_HOME环境变量，指向你的Ant目录。<BR>3.设置JAVA_HOME环境变量，指向你的JDK目录。<BR>4.设置SERVLETAPI_HOME环境变量，指向你的Servlet API目录（如果你的CLASSPATH已经包含了servlet.jar，就不需要指定该目录）<BR>5.将Structs的源码发布包进行解包。<BR>6.进入Structs目录，运行以下命令：<BR>? ./build.sh dist<BR>该命令将创建Struts的二进制发布包，目录在../dist/structs(相对于你的编译目录）。<BR>? </FONT></P>
<P><BR><FONT size=4>2.3 通过Struts的二进制发布包安装Structs </FONT></P>
<P><FONT size=4>1.下载Struts的二进制发布版。<BR>2.将Struts的二进制发布版进行解包。(如果你是通过Struts源码构造Struts，build的结果就已经是已解包的Struts)。解包后的Struts包含以下内容：<BR>? lib/struts.jar - 这个文件包含了Struts的所有Java对象。你需要把它拷贝到你的Web应用的WEB-INF/lib目录。<BR>? lib/structs.tld - 这是一个"tag library descriptor"文件，它描述了Struts库的自由tag。需要将它拷贝到你的Web应用的WEB-INF目录。<BR>? webapps/struts-documentation.war - 这是一个"web application archive"文件，包含了所有的Struts文档。你可以将它安装到支持Servlet API 2.2或之后版本的servlet container(推荐使用tomcat)中。<BR>? webapps/struts-example.war - 这是一个web应用实例，它广泛地演示了Struts的许多功能。你可以将它安装到兼容Servlet2.2或之后版本以及JSP1.1或之后版本规范的servlet容器中(推荐使用tomcat)。<BR>? webapps/struts-test.war - 这个web应用包含了Struts支持的许多tag的测试网页，可以作为使用Struts tag的例子。</FONT></P>
<P><FONT size=4>可通过以下的步骤在你自己的应用程序中使用Struts：<BR>1.将Struts目录的lib/struts.jar拷贝到web应用的WEB-INF/lib目录。<BR>2.将Struts目录的lib/struts*.tld拷贝到web应用的WEB-INF目录。<BR>3.修改Web应用目录的WEB-INF/web.xml文件，增加一个<SERVLET>元素来定义controller servlet，增加一个<SERVLET-MAPPING>元素来建立URI请求与servlet的对应关系。可以参照Struts例子中的WEB-INF/web.xml文件来了解详细的语法要求。<BR>4.修改Web应用目录的WEB-INF/web.xml文件，使之包含以下的tag库定义：<BR>??????? <TAGLIB><BR>????????? <TAGLIB-URI>/WEB-INF/struts.tld</TAGLIB-URI><BR>????????? <TAGLIB-LOCATION>/WEB-INF/struts.tld</TAGLIB-LOCATION><BR>??????? </TAGLIB><BR>??????? <TAGLIB><BR>????????? <TAGLIB-URI>/WEB-INF/struts-bean.tld</TAGLIB-URI><BR>????????? <TAGLIB-LOCATION>/WEB-INF/struts-bean.tld</TAGLIB-LOCATION><BR>??????? </TAGLIB><BR>??????? <TAGLIB><BR>????????? <TAGLIB-URI>/WEB-INF/struts-logic.tld</TAGLIB-URI><BR>????????? <TAGLIB-LOCATION>/WEB-INF/struts-logic.tld</TAGLIB-LOCATION><BR>??????? </TAGLIB><BR>5.创建一个WEB-INF/action.xml文件来定义你的web应用的action映射关系。可以参照Struts例子中的action.xml文件来了解详细的语法要求。<BR>6.在使用Struts tag库的JSP网页中加入以下tag库定义：<BR>??????? &lt;@ taglib uri="/WEB-INF/struts.tld" prefix="struts" %&gt;<BR>??????? &lt;@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %&gt;<BR>??????? &lt;@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&gt;<BR>7.最后，在编译你的web应用的java程序时，不要忘了在CLASSPATH中包含struts.jar文件哟。</FONT></P><img src ="http://www.cnblogs.com/powerlc/aggbug/215504.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47970/" target="_blank">19岁天才黑客发布首个iPhone 3GS破解软件</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Web开发轻平台－Tomcat（简介）</title><link>http://www.cnblogs.com/powerlc/archive/2005/08/15/215502.html</link><dc:creator>powerlc</dc:creator><author>powerlc</author><pubDate>Mon, 15 Aug 2005 10:11:00 GMT</pubDate><guid>http://www.cnblogs.com/powerlc/archive/2005/08/15/215502.html</guid><wfw:comment>http://www.cnblogs.com/powerlc/comments/215502.html</wfw:comment><comments>http://www.cnblogs.com/powerlc/archive/2005/08/15/215502.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/powerlc/comments/commentRss/215502.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/powerlc/services/trackbacks/215502.html</trackback:ping><description><![CDATA[<P><FONT color=#000066 size=4><A href="http://article.taibangla.com/article/1379.htm">Web开发轻平台－Tomcat（简介）</A></FONT></P>
<P><FONT size=4>如今，基于Web的应用越来越多，传统的Html已经满足不了如今的需求。我们需要一个交互式的Web，于是便诞生了各种Web语言。如Asp，Jsp，Php等。当然，这些语言与传统的语言有着密切的联系，如Php基于C和C++语言，Jsp基于Java语言。本文所要介绍的Tomcat即是一个Jsp和Servlet的运行平台。?<BR><BR>一：什么是Jsp和Servlet?<BR><BR>Jsp（JavaServer?Page）是在普通Html中嵌入了Java代码的一个脚本，在这一点上，它与其它的脚本语言（如Php）一样，但它与其它语言不同的是：其它脚本语言由服务器直接解释这个脚本，而Jsp则由Jsp容器（如Tomcat）首先将其转化为Servlet，然后再调用Javac将Servlet编译为Class文件。最终，服务器解释的是Class文件。那么什么是Servlet呢？Servlet其实是一个特殊的Java类，Servlet类一般从HttpServlet类继承而来，在这个类中至少要实现doGet或者doPost函数，在这两个函数中处理来自客户的请求，然后将结果返回。Servlet和Jsp是Sun公司J2EE架构中重要的部分。由于基于Java语言，因此其可以方便的调用功能强大的Java?API（如JDBC）。?<BR><BR>二：Tomcat概述?<BR><BR>Tomcat是一个免费的开源的Serlvet容器，它是Apache基金会的Jakarta项目中的一个核心项目，由Apache，Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持，最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被JavaWorld杂志的编辑选为2001年度最具创新的java产品，可见其在业界的地位。?<BR><BR>Tomcat?最新版本是4.0x。4.0x与3.x的架构不同，而是重新设计的。Tomcat4.0x中采用了新的Servlet容器：Catalina，完整的实现了Servlet2.3和Jsp1.2规范。Tomcat提供了各种平台的版本供下载，可以从http://jakarta.apache.org上下载其源代码版或者二进制版。由于Java的跨平台特性，基于Java的Tomcat也具有跨平台性。?<BR><BR>与传统的桌面应用程序不同，Tomcat中的应用程序是一个WAR（Web?Archive）文件。WAR是Sun提出的一种Web应用程序格式，与JAR类似，也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织：通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录，另外还会有一个WEB-INF目录，这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录，web.xml是这个应用的配置文件，而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类（如JavaBean）。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下，当然也可以放到系统的CLASSPATH中，但那样移植和管理起来不方便。?<BR><BR>在Tomcat中，应用程序的部署很简单，你只需将你的WAR放到Tomcat的webapp目录下，Tomcat会自动检测到这个文件，并将其解压。你在浏览器中访问这个应用的Jsp时，通常第一次会很慢，因为Tomcat要将Jsp转化为Servlet文件，然后编译。编译以后，访问将会很快。另外Tomcat也提供了一个应用：manager，访问这个应用需要用户名和密码，用户名和密码存储在一个xml文件中。通过这个应用，辅助于Ftp，你可以在远程通过Web部署和撤销应用。当然本地也可以。?<BR><BR>Tomcat不仅仅是一个Servlet容器，它也具有传统的Web服务器的功能：处理Html页面。但是与Apache相比，它的处理静态Html的能力就不如Apache。我们可以将Tomcat和Apache集成到一块，让Apache处理静态Html，而Tomcat处理Jsp和Servlet。这种集成只需要修改一下Apache和Tomcat的配置文件即可。?<BR><BR>另外，Tomcat提供Realm支持。Realm类似于Unix里面的group。在Unix中，一个group对应着系统的一定资源，某个group不能访问不属于它的资源。Tomcat用Realm来对不同的应用（类似系统资源）赋给不同的用户（类似group）。没有权限的用户则不能访问这个应用。Tomcat提供三种Realm，1：JDBCRealm，这个Realm将用户信息存在数据库里，通过JDBC获得用户信息来进行验证。2：JNDIRealm，用户信息存在基于LDAP的服务器里，通过JNDI获取用户信息。3：MemoryRealm，用户信息存在一个xml文件里面，上面讲的manager应用验证用户时即使用此种Realm。通过Realm我们可以方便地对访问某个应用的客户进行验证。?<BR><BR>在Tomcat4中，你还可以利用Servlet2.3提供的事件监听器功能，来对你的应用或者Session实行监听。Tomcat也提供其它的一些特征，如与SSL集成到一块，实现安全传输。还有Tomcat也提供JNDI支持，这与那些J2EE应用服务器提供的是一致的。说到这里我们要介绍一下通常所说的应用服务器（如WebLogic）与Tomcat有何区别。应用服务器提供更多的J2EE特征，如EJB，JMS，JAAS等，同时也支持Jsp和Servlet。而Tomcat则功能没有那么强大，它不提供EJB等支持。但如果与JBoss（一个开源的应用服务器）集成到一块，则可以实现J2EE的全部功能。既然应用服务器具有Tomcat的功能，那么Tomcat有没有存在的必要呢？事实上，我们的很多中小应用不需要采用EJB等技术，Jsp和Servlet已经足够，这时如果用应用服务器就有些浪费了。而Tomcat短小精悍，配置方便，能满足我们的需求，这种情况下我们自然会选择Tomcat。?<BR><BR>基于Tomcat的开发其实主要是Jsp和Servlet的开发，开发Jsp和Servlet非常简单，你可以用普通的文本编辑器或者IDE，然后将其打包成WAR即可。我们这里要提到另外一个工具Ant，Ant也是Jakarta中的一个子项目，它所实现的功能类似于Unix中的make。你需要写一个build.xml文件，然后运行Ant就可以完成xml文件中定义的工作，这个工具对于一个大的应用来说非常好，我们只需在xml中写很少的东西就可以将其编译并打包成WAR。事实上，在很多应用服务器的发布中都包含了Ant。另外，在Jsp1.2中，可以利用标签库实现Java代码与Html文件的分离，使Jsp的维护更方便。?<BR><BR>Tomcat也可以与其它一些软件集成起来实现更多的功能。如与上面提到的JBoss集成起来开发EJB，与Cocoon（Apache的另外一个项目）集成起来开发基于Xml的应用，与OpenJMS?<BR><BR>集成起来开发JMS应用，除了我们提到的这几种，可以与Tomcat集成的软件还有很多。?<BR><BR>三：展望?<BR><BR>Tomcat确实是一个很好的工具，不仅仅因为其免费，功能强大，更因为其开放性。如今，开源软件越来越收到人们的重视，Linux就是一个成功的典型。人们不再限于只使用软件，而且已经关心起软件的具体实现。我们有理由相信Tomcat会走得更远</FONT></P><img src ="http://www.cnblogs.com/powerlc/aggbug/215502.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47970/" target="_blank">19岁天才黑客发布首个iPhone 3GS破解软件</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>