博文
C与C++的区别(2006-09-03 14:44:00)
摘要:C与C++的区别
C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。
所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。
对语言本身而言,C是C++的子集,那么是什么样的一个子集?从上文可以看出, C实现了C++中过程化控制及其它相关功能,而在C++中的C(我称它为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等玩艺儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等等。
再提高一点,在C++中,数据封装、类型这些东东已不是什么新鲜事了,需要考虑的是诸如:对象粒度的选择、对象接口的设计和继承、组合与继承的使用等等问题。
所以相对于C,C++包含了更丰富的“设计”的概念,但C是C++的一个自洽子集,也具有强大的功能,同样值得学习。
几点学习建议:
1.基本概念很重要。无论学C,还是学C++,基本概念都是第一位的,也是比较困难的,但只有把握了基本概念才能把握整体脉络,才能居高临下。
2.C是C++的子集,它的基本概念和设计方法相对比较容易理解,初学者可从它入手。
3.如果要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化的代码生成,花花绿绿的界面,会让你手足无措。最好先找一片空地(unix,dos),从头做起,写几个大点的程序,数个回合,再到VC,BCB下看看,你会轻松得很。在我看来,学好C/C++是成为VC,BCB高手的必由之路。
4.不要妄想速成,必须得一个byte,一个bit的去抠,尽量搞清楚每一个问题。
5.几本好书:
机械工业出版社的那套“计算机科学丛书”从......
Cisco及华为网络技术精华文章(2006-09-03 12:15:00)
摘要:Cisco交换技术 4006交换机简明配置手册(中文) http://www.vlan9.com/bbs/thread-335-1-1.html
Cisco交换技术 6000交换机简要配置手册(中文) http://www.vlan9.com/bbs/thread-334-1-1.html
Cisco交换技术 3550交换机简要配置手册(中文) http://www.vlan9.com/bbs/thread-333-1-1.html
Cisco路由技术 ATM基本原理 http://www.vlan9.com/bbs/thread-72-1-1.html
Cisco维护经验交流 CISCO路由器IOS升级方法总结 http://www.vlan9.com/bbs/thread-59-1-1.html
Cisco交换技术 思科Catalyst8500配置实例 http://www.vlan9.com/bbs/thread-24-1-1.html
Cisco交换技术 Cisco 6509安装、配置手册 http://www.vlan9.com/bbs/thread-19-1-1.html
Cisco交换技术 二三层交换技术与路由技术对比 http://www.vlan9.com/bbs/thread-18-1-1.html
CCNA/CCDA认证 CCNA考试实验常用的命令总结 http://www.vlan9.com/bbs/thread-13-1-1.html
网络基础知识 华为教材ATM原理资料 http://www.vlan9.com/bbs/thread-342-1-1.html
网络基础知识 某网络专业人士笔记(非常值得收藏)(转......
管理学十大经典理论(2006-09-03 11:59:00)
摘要:
1、彼得原理
每个组织都是由各种不同的职位、等级或阶层的排列所组成,每个人都隶属于其中的某个等级。彼得原理是美国学者劳伦斯·彼得在对组织中人员晋升的相关现象研究后,得出一个结论:在各种组织中,雇员总是趋向于晋升到其不称职的地位。彼得原理有时也被称为向上爬的原理。 这种现象在现实生活中无处不在:一名称职的教授被提升为大学校长后,却无法胜任;一个优秀的运动员被提升为主管体育的官员,而无所作为。对一个组织而言,一旦相当部分人员被推到其不称职的级别,就会造成组织的人浮于事,效率低下,导致平庸者出人头地,发展停滞。因此,这就要求改变单纯的根据贡献决定晋升的企业员工晋升机制,不能因某人在某个岗位上干得很出色,就推断此人一定能够胜任更高一级的职务。将一名职工晋升到一个无法很好发挥才能的岗位,不仅不是对本人的奖励,反而使其无法很好发挥才能,也给企业带来损失。
2、酒与污水定律
酒与污水定律是指把一匙酒倒进一桶污水,得到的是一桶污水;如果把一匙污水倒进一桶酒,得到的还是一桶污水。在任何组织里,几乎都存在几个难弄的人物,他们存在的目的似乎就是为了把事情搞糟。最糟糕的是,他们像果箱里的烂苹果,如果不及时处理,它会迅速传染,把果箱里其他苹果也弄烂。 烂苹果的可怕之处,在于它那惊人的破坏力。一个正直能干的人进入一个混乱的部门可能会被吞没,而一个无德无才者能很快将一个高效的部门变成一盘散沙。组织系统往往是脆弱的,是建立在相互理解、妥协和容忍的基础上的,很容易被侵害、被毒化。破坏者能力非凡的另一个重要原因在于,破坏总比建设容易。一个能工巧匠花费时日精心制作的陶瓷器,一头驴子一秒钟就能毁坏掉。如果一个组织里有这样的一头驴子,即使拥有再多的能工巧匠,也不会有多少像样的工作成果。如果你的组织里有这样的一头驴子,你应该马上把它清除掉,如果你无力这样做,就应该把它拴起来。
3、木桶定律
水桶定律是讲一只水桶能装多少水,这完全取决于它最短的那块木板。这就是说任何一个组织,可能面临的一个共同问题,即构成组织的各个部分往往是优劣不齐的,而劣势部分往往决定整个组织的水平。水桶定律与酒与污水定律不同,后者讨论的是组织中的破坏力量,最短的木板却是组织中有用的一个部分,只不过比其他部......
免费在线电影破解(2006-09-03 11:58:00)
摘要:
免费在线电影破解
其实稍懂一点网页制作的朋友都知道破解在线电影的最好方法就是把页面保存下来,然后用网页编辑软件将保存的页面打开,再找出其中的url链接即可
这显然是一个很不错的办法,但也有不管用的时候,有些网站,特别是官方网站,会千方百计地让你无法下载网页或是查看源代码,如在源代码中加以限制,右键的屏蔽,使用java链接,使用控件播放,或是php,asp等动态网页技术等
这时候就要用掉线法来破,破之前最好有个理想的播放器,这里建议使用realone player,它是目前最好的网络流媒体播放器,几乎支持所有的媒体文件格式。
虽然很多人都知道,但还是先在这里先介绍一下破屏蔽右键的方法,可以先点住右键不放,这时会弹出警告框,然后将鼠标移动到确定按钮上点击,然后回到你所选的目标上松开右键,菜单回来了,如果你只是想要获得一个连接,可以简单的使用拖放方法将其拖至flashget或是netants的浮动窗口就,可以再新建下载任务框中得到连接
下面说一下媒体指向文件,这些文件的后缀名通常是.asx .pls .smi .ram
其中.asx文件指向.asf文件,.pls文件一般指向一个php播放列表.smi主要指向rm文件,指向文件常常用来掩盖文件的真实地址,比如你虽然有办法查看原代码,却只能得到一个http://www.***.com/****/****.smi的连接,使用flashget或是netants甚至是streambox下载时,都无法找到其真实地址,下载后发现是一个.smi的文件,用文本编辑器打开,发现虽然有部分代码,但没有你要的连接,所以只能在线播放
其实破解后多数是一个rtsp协议的连接 .asx文件就容易些,一般用streambox下的时候都能找到对应的.asf文件的真实地址。.ram文件一般也可以,如果不行的话,改成.rm,还是不行,就老老实实把下载的.ram文件用文本编辑器打开,不要被它的文件类型所迷惑,其实是个纯文本文件。
掉线法顾名思义其实很简单,下面说一下方法:首先用realone播放你想要的文件,然后打开网络连接属性窗口,把本地连接禁用,或者你用防火墙的禁止访问也可以,只要令其掉线就可以,马上就会弹出一个窗口,里面就是文件的真实地......
[日记+文章].Net是什么?为什么会出现(2006-09-03 11:56:00)
摘要:很快S2(第二学期)就要结束,然后就要上Y2(第三学期)了,到时就要选择是走Java还是走.Net了。 现在正在叫我班的李老师还是很好的,为了我们在Y2能够作出最正确的选择,给我们没个学习小组布置了一个题目,并且老师会利用上课时间叫每组的负责人上去把自己的那组的题目的答案讲解给其他同学听,并让同学听懂。
5个题目: 1:.Net是什么?为什么会出现? 2:Java是什么?为什么会出现?
3:Java的主要技术是什么? 4:.Net的主要技术是什么?
5:解释什么是属性,方法,事件,继承,接口,封装,索引器
我这组是第一个题目,今天早上上完书本内容后,......
[顿悟]编程之道(2006-09-03 11:54:00)
摘要:The Silent Void
Book One
Thus spake the master programmer:
编程大师如是说:
"When you have learned to snatch the error code from the trap frame, it will be time for you to leave."
“当你从我手中夺走水晶球时,就是你离开的时候了。”
1.1
Something mysterious is formed, born in the silent void. Waiting alone and unmoving, it is at once still and yet in constant motion. It is the source of all programs. I do not know its name, so I will call it the Tao of Programming.
寂静的虚空里诞生了神秘的东西,这种东西恒久存在永不消失,它是所有程序的根源所在,我不知道怎么形容它,姑且称它为编程之道。
If the Tao is great, then the operating system is great. If the operating system is great, then the compiler is great. If the compiler is greater, then the applications is great. The user is pleased and there is harmony in the world.
如果道是完美的,那么操作系统就是完美的,如果操作系统是完美的,那么编译嚣就是完美的,如果编译嚣是完美的,那么应用程序就是完美的,所以用户心满意足,整个世界因此和谐。
The Tao of Programming flows far away and returns on the wind of morning.
编程之道去如黄鹤来如晨风。
1.2
The Tao gave birth to machine language. Machine language gave birth t......
PC系统高速缓冲存储器Cache的原理、设计及实现(2006-09-03 11:50:00)
摘要:PC系统高速缓冲存储器Cache的原理、设计及实现
前 言
虽然CPU主频的提升会带动系统性能的改善,但系统性能的提高不仅仅取决于CPU,还与系统架构、指令结构、信息在各个部件之间的传送速度及存储部件的存取速度等因素有关,特别是与CPU/内存之间的存取速度有关。若CPU工作速度较高,但内存存取速度较低,则造成CPU等待,降低处理速度,浪费CPU的能力。如500MHz的PⅢ,一次指令执行时间为2ns,与其相配的内存(SDRAM)存取时间为10ns,比前者慢5倍,CPU和PC的性能怎么发挥出来?
如何减少CPU与内存之间的速度差异?有4种办法:一种是在基本总线周期中插入等待,这样会浪费CPU的能力。另一种方法是采用存取时间较快的SRAM作存储器,这样虽然解决了CPU与存储器间速度不匹配的问题,但却大幅提升了系统成本。第3种方法是在慢速的DRAM和快速CPU之间插入一速度较快、容量较小的SRAM,起到缓冲作用;使CPU既可以以较快速度存取SRAM中的数据,又不使系统成本上升过高,这就是Cache法。还有一种方法,采用新型存储器。目前,一般采用第3种方法。它是PC系统在不大增加成本的前提下,使性能提升的一个非常有效的技术。
本文简介了Cache的概念、原理、结构设计以及在PC及CPU中的实现。
Cache的工作原理
Cache的工作原理是基于程序访问的局部性。
对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次。因此,对这些地址的访问就自然地具有时间上集中分布的倾向。数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象,就称为程序访问的局部性。
根据程序的局部性原理,可以在主存和CPU通用寄存器之间设置一个高速的容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存调入这个存储器,供CPU在一段时间内使用。这对提高程序的运行速度有很大的作用。这个介于主存和CPU之间的高速小容量存储器称作高速......
Java入门(2006-09-03 11:49:00)
摘要:Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案。在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考。
我在学习Java的过程中主要围绕以下几个方面来学习:
1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java。
2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以。要注意,即便对一个简单的例子也要有耐心去琢磨、调试、改动。
3.在学习的过程中一定要动手做、写代码,而不是抱一本书看看就行。很多东西和体会必须自己动手才能真正属于自己,最好能参与一些实际的项目。
4.在学到一定阶段后,你开始希望用学过的东西做些什么。这时的你应该开始学习一些更多、更复杂的知识,比如J2EE平台的构建、EJB的开发等。对于这一部分,我建议最好找一本较薄的书先了解一个大概,心里有个总体的认识,对更多的技术术语做个初步掌握。我认为这个阶段看看《J2EE技术实践》很不错,它可以让你了解J2EE包含的各种技术和框架,同时提供很多实际的例子来加深对J2EE的整体了解。
学习Java的兴趣和决心起了很关键的作用。在有了上述基础后,我便开始一步一步地学习Java。
Java环境的搭建
要运行Java程序,必须安装JDK。JDK是整个Java的核心,其中包括了Java编译器、JVM、大量的Java工具以及Java基础API。
可以从http://Java.sun.com下载JDK,有1.4版本和1.31版本。我的学习环境中首先,采用的是1.31版本。
解压安装。然后,进行环境设置。
1.对于Windows平台要进行以下设置:
set PATH=YOUR_INSTALL_ DIR\bin; C:\Windows;C:\Windows\Command
set classpath=. ;YOUR_INSTALL_DIR\lib\tools.jar
2.对于Linux平台要编辑/etc/profile文件:
......
如何做一名成功的IT工程师?(2006-09-03 11:48:00)
摘要:
进入到IT这个圈子,很多人是从工程师开始做起的,那么如何成长为一名成功的工程师呢?或者是如何成功地转换为下一个角色呢?你需要做哪些准备呢?作为MDE(Market Development Engineering)的工程师和产品开发的工程师,还是有些不同的,我下面重点想说的是比较通用的,关于MDE的工程师,或者类似的做技术支持的工程师,我想后面再单独写一篇。
让我们先来看看成功的工程师是什么样子。在Sun公司里,工程师分为4个级别,从低到高依次是工程师(Engineer),高级工程师(Staff Engineer),杰出工程师(Distinguish Engineer),科学家(Fellow)。在工程师这个级别里又分为MTS1-4,也是依次从低到高的。Fellow,SUN公司总共没有几个,James Gosling是其中的一个,Bill Joy也是,最近离开SUN了,去开startup了。Sun的中国工程研究院(ERI)原来有DE,就是宫力,现在已经他离开了,暂时还没有。Staff Engineer,ERI有几个rotation过来的。不知道大家是否还记得James Liu,在MDE week上给大家烧烤的那个,他是Staff Engineer, 但我记不清楚他是否Senior Staff了。
那么这些不同的级别的定义是什么样子呢?要求是什么样子呢?我们分别来看看。一名MTS3的工程师应该可以独立地设计和实现一个解决复杂问题的解决方案,制订项目计划,并确定短期战略目标。对于MDE的工程师,应该可以独立地支持一个ISV,从技术评估,技术培训,移植的技术支持,性能调优,选型测试等。当然,并不是说MDE的工程师可以自己把所有这些全部完成,但是他/她在遇到阻碍的时候知道通过什么渠道来解决问题。MTS4的工程师,可以解决更复杂的问题,通过领导一个团队,独立地设计和实现一个复杂的项目,这样的一个项目通常都需要和其他的团队进行协调和沟通,并利用或组合其他团队的工作。一个MTS4工程师要有能力给其他低级别的工程师提供技术建议和指导。从MTS4到Staff Engineer是一个大的台阶,作为Staff Engineer,应该是在组内和组外都公认的专家,拥有解决复杂问题所必须的技术知识和商务知识。Staff Engineer和Engineering Manager是在同一个级别......
Java程序员32问(2006-09-03 11:47:00)
摘要:
一,谈谈final, finally, finalize的区别。
final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载
finally-再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize-方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象
第四,&和&&的区别......