博文
快速计算子网掩码和主机块 - 转载(2006-04-02 09:18:00)
摘要: ---- 业务的发展常常会导致许多单位面临这样一个问题:工作站数量越来越多,管理 单一的大型网络也变得越来越艰难。如果将一个单一的大型网络划分为多个子网,通过 对每个子网进行单独管理,可以明显地提高整个网络的性能。 ---- 要划分子网就需要计算子网掩码和分配相应的主机块,尽管采用二进制计算可以得 出相应的结论,但如果采用十进制计算方法,计算起来更为简便。经过长期实践与经验 积累,笔者总结出子网掩码及主机块的十进制算法。 一、明确概念 ---- 在介绍十进制算法前我们先要明确一些概念。 类范围:IP地址常采用点分十进制表示方法X.Y.Y.Y,在这里,X在1~126范围内称为A类 地址;X在128~191范围内称为B类地址;X在192~223范围内称为C类地址。比如10.202 .52.130,因为X为10,在1~126范围内,所以称为A类地址。 类默认子网掩码:A类为 255.0.0.0; B类为 255.255.0.0; C类为 255.255.255.0。当我 们要划分子网用到子网掩码M时,类子网掩码的格式如下:A类为 255.M.0.0,B类为 25 5.255.M.0,C类为 255.255.255.M。M是相应的子网掩码,比如255.255.255.240。 十进制计算基数是256(下面,我们所有的十进制计算都要用256来进行)。 二、变量说明 ---- 1.Subnet_block指可分配子网块大小,表示在某一子网掩码下子网的块数。 ---- 2.Subnet_num是可分配子网数,指可分配子网块中要剔除首、尾两块,是某一子 网掩码下可分配的实际子网数量。Subnet_num =Subnet_block-2。 ---- 3.IP_block指每个子网可分配的IP地址块大小。 ---- 4.IP_num指每个子网实际可分配的IP地址数。因为每个子网的首、尾IP地址必须 保留(一个为网络地址,一个为广播地址),所以它等于IP_block-2,IP_num也用于计 算主机块。 ---- 5.M指子网掩码。 ---- 表示上述变量关系的公式如下: ---- M=256-IP_block IP_block=256/Subnet_block或Subnet_block=256/IP_block IP _num=I......
一位软件设计师对程序员的忠告 - 转载(2006-04-01 16:29:00)
摘要: 我始终认为,对一个初学者来说,IT界的技术风潮是不可以追赶的,而且也没有能力去追赶。我时常看见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心。而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑。C#就象当年的ASP一样,“忽如一夜春风来,千树万树梨花开”,结果许多学校的信息学院成了“Web 学院”。96,97级的不少大学生都去做Web 了。当然我没有任何歧视某一行业的意识。我只是觉得如果他们把追赶这些时髦技术的时间多花一点在基础的课程上应该是可以走得更远的。 几个误区
初学者对C#风潮的追赶其实也只是学习过程中经常遇到的几个误区之一。我将用一些实际的例子来说明这些现象,你可以按部就班的看看自己是不是属于其中的一种或者几种:
认为计算机技术等于编程技术:
有些人即使没有这个想法,在潜意识中也有这样的冲动。让我奇怪的是,许多信息学院的学生也有这样的念头。认为计算机专业就是编程专业,与编程无关的,或者不太相关的课程他统统都不管,极端的学生只要书上没带“编程”两个字他就不看。
其实编程只是计算机技术应用过程中一种复杂性最低的劳动,这就是为什么IT业最底层的人是程序员(CODER)。计算机技术包括了多媒体,计算机网络,人工智能,模式识别,管理信息系统等等这些方面。编程工作只是在这些具体技术在理论研究或者工程实践的过程中表达算法的过程。编程的人不一定对计算机技术的了解就一定很高。而一个有趣的现象是,不少大师级的计算机技术研究者是不懂编程的。网上的炒作和现实中良好的工作待遇把编程这种劳动神秘化了。其实每一个程序员心里都明白,自己这些东西,学的时候并不比其它专业难,所以自然也不会高档到哪里去。
咬文嚼字的孔已己作风:
我见过一本女生的《计算机网络原理》教材,这个女生像小学生一样在书上划满了横杠杠,笔记做得满满的,打印出来一定比教材还厚。我不明白的是,像计算机网络原理这样的课程有必要做笔记?我们的应试教育的确害了不少学生,在上《原理》这一类课程的时候许多学生像学《马列原理》一样逐字背诵记忆。这乃是我见过的最愚蠢的行为。所谓《原理》,......
一个程序员的成长的六个阶段 - 转载(2006-03-31 14:08:00)
摘要:第一阶段此阶段主要是能熟练地使用某种语言。这就相当于练武中的套路和架式这些表面的东西。第二阶段此阶段能精通基于某种平台的接口(例如我们现在常用的Win 32的API函数)以及所对应语言的自身的库函数。到达这个阶段后,也就相当于可以进行真实散打对练了,可以真正地在实践中做些应用。第三阶段此阶段能深入地了解某个平台系统的底层,已经具有了初级的内功的能力,也就是“手中有剑,心中无剑”。第四阶级此阶段能直接在平台上进行比较深层次的开发。基本上,能达到这个层次就可以说是进入了高层次。这时进入了高级内功的修炼。比如能进行VxD或操作系统的内核的修改。这时已经不再有语言的束缚,语言只是一种工具,即使要用自己不会的语言进行开发,也只是简单地熟悉一下,就手到擒来,完全不像是第一阶段的时候学习语言的那种情况。一般来说,从第三阶段过渡到第四阶段是比较困难的。为什么会难呢?这就是因为很多人的思想变不过来。第五阶级此阶段就已经不再局限于简单的技术上的问题了,而是能从全局上把握和设计一个比较大的系统体系结构,从内核到外层界面。可以说是“手中无剑,心中有剑”。到了这个阶段以后,能对市面上的任何软件进行剖析,并能按自己的要求进行设计,就算是MS Word这样的大型软件,只要有充足的时间,也一定会设计出来。第六阶级此阶段也是最高的境界,达到“无招胜有招”。这时候,任何问题就纯粹变成了一个思路的问题,不是用什么代码就能表示的。也就是“手中无剑,心中也无剑”。此时,对于练功的人来说,他已不用再去学什么少林拳,只是在旁看一下少林拳的对战,就能把此拳拿来就用。这就是真正的大师级的人物。这时,Win 32或Linux在你眼里是没有什么差别的。每一个阶段再向上发展时都要按一定的方法。第一、第二个阶段通过自学就可以完成,只要多用心去研究,耐心地去学习。要想从第二个阶段过渡到第三个阶段,就要有一个好的学习环境。例如有一个高手带领或公司里有一个好的练手环境。经过二、三年的积累就能达到第三个阶段。但是,有些人到达第三个阶段后,常常就很难有境界上的突破了。他们这时会产生一种观念,认为软件无非如此,认为自己已无所不能。其实,这时如果遇到大的或难些的软件,他们往往还是无从下手。现在我们国家大部分程序员都是在第二、三级之间。他们大多都是通过自学成才的,不过这样的程序员一般在软件公司也能独当一面,完成一些软件的模块。但是,也还有......
Google搜索引擎的另类功能 - 转载(2006-03-30 18:59:00)
摘要:Google检索引擎因其准确和快速的检索服务而深受广大网民欢迎,成为他们手中查询信息的必
备工具。Google检索引擎本身也不辜负网民的期望,不断推出新的检索功能,除了为帮助人们
更精确查找信息而常用的网站内容(site)、网页链路(inurl)、网页标题(intitle)、各
种格式文件(filetype)和被链接(link)等检索功能之外,最近,还推出了一系列新的检索
服务,总体来说,这些新的检索功能更加人性化,更贴近人们的日常生活和需要,因而很容易
被用户接受和使用。
1. 汉语拼音输入检索
为了方便使用中文的用户在网上搜索,Google允许用户直接在键盘上输入汉语拼音来检索相关
事物,例如:
输入 shanghaishikebiao
检索结果提示:您是不是要找: 上海时刻表
这正是我们需要查找的关键词,用户可以据此浏览相关结果,这包括上海地区的各种交通工具
的时刻表。如果需要查找更详细的资料“上海飞机航班时刻表 ”,则只要在原来的检索结果
“上海时刻表”中间输入feijihangban ,例如:
上海feijihangban时刻表
Google的这项新功能,可以免除用户在中文和拼音输入方面的互相转换。用户在输入拼音时,
不要留有空格,否则Google会误认为英文。Google把拼音与常用的字或者词组一一对应,因此
,过于生僻的字或词组不适合于用这个方法查找。
2. 中英文字典
经常使用计算机的用户手头上自然会有一、两个字典软件,用于查找和翻译中英文的词义。作
为一种使用频率较高的工具,Google也提供了一个中英文字典,很方便使用。用户可以按照下
列方法查找词义
查找英文的中文词义则输入 fy computer
查找中文的英文词义则输入 翻译 计算机
3. 天气查询
天气情况也是人们经常要查询的信息之一,Google 提供的天气查询来自于一个更新及时的中
文气象网站,适合中国人使用。用户输入中文和英文都可以查询,例如要了解奥运会期间雅典
的天气情况,可以按照下列方法输入:
雅典 天气
athens tq
返回的查询结果中会在第一条出现一个 “雅典天气预报”,用户点击后就可以看到当天雅典
的天气情况。如果地名相同者,用户还需要进行一次选择。
4. 股票查询
查......
使用String还是StringBuffer? - 转载(2006-03-29 18:21:00)
摘要:出于方便的考虑,我们在进行字符串的内容处理的时候往往会出现以下的代码: String result=""; result+="ok";
这段代码看上去好像没有什么问题,但是需要指出的是其性能很低,原因是java中的String类不可变的(immutable),这段代码实际的工作过程会是如何的呢?通过使用javap工具我们可以知道其实上面的代码在编译成字节码的时候等同的源代码是: String result=""; StringBuffer temp=new StringBuffer(); temp.append(result); temp.append("ok"); result=temp.toString();
短短的两个语句怎么呢变成这么多呢?问题的原因就在String类的不可变性上,而java程序为了方便简单的字符串使用方式对+操作符进行了重载,而这个重载的处理可能因此误导很多对java中String的使用。下面给出一个完整的代码:
public class Perf { public static String detab1(String s) { if (s.indexOf('\t') == -1) return s; String res = ""; int len = s.length(); int pos = 0; &......
揭开ADSL真正速度之谜:宽带到底该有多快? - 转载(2006-03-28 14:30:00)
摘要: 经常使用ADSL的用户,你知道ADSL的真正速度吗?带着这个疑问我们将问题一步一步展开。 很多用户反映,ADSL下载速率并没有达到标称的512K,通过ADSL接入网络后,下载时会出现一个下载速率指示条,上面显示的下载速率一般为50KByte/s左右!这其实是个换算关系不清引起的误会。 1、512KADSL是什么意思? 512K=512Kbps=512Kbits/s=64Kbytes/s 我想这个换算应该没什么问题。 2、64Kbytes/s意味着什么? 这个64K的真正含义是“个人用户所能独享的最大下载带宽” 那么这又是什么意思呢,不知道现在有没有人注意过电信ADSL安装的申请表,上面的带宽项目写的是都是不高于512K”,“不高于8M”等等,也就是说我们在正常的情况下可以拥有最多不超过64K的专有带宽。注意是“不高于”,那么也就是说很多时候我们的专有带宽可能小于64K,那有又是为什么呢? 事实上,中国电信的ADSL是运行在ATM上面,ATM到chinanet边缘路由器带宽是 155M,每一个边缘路由器可以连接3000用户,如果这些用户同时上网,那么每个用户其实只有50kbit/s的带宽,也就是7Kbytes/s,加上路由器衰减,那么最终可能只有普通modem的速度了。 当然以上只是假想的情况,毕竟3000人同时连在一台边缘路由器上面几乎是不可能的,电信也不会让路由器满负荷连接而使得速度下降如此之巨。 但是,64K是最高专有带宽是毋庸置疑的。 3、那为什么我的512KADSL经常可以达到100K甚至200K以上的下载速度呢? 我们搞清楚了64K是最大专有带宽,但不等于最大带宽,事实上在ADSL拨号时已经分配了实际约等于8Mbps,也就是1Mbytes/s的下载带宽,只不过电信限制了我们的专有带宽最高64K,那么当路由器连接的用户较少的时候,我们可以获得一部分超过专有带宽的共享带宽(显然电信没必要让这些带宽闲置),当然512K速率的ADSL永远不可能通过占用共享带宽达到1M/s的下载速度,因为毕竟总还是有很多人在同时上网,而且电信肯定还有一些平衡负载的机制。 4、ADSL上传速度对下载的影响 TCP/IP规定,每一个封包,都......
C语言在中国已经没有用了? - 转载(2006-03-28 13:56:00)
摘要:1. 有的同学埋怨说现在大学里教的内容不够新,跟外面的要求脱轨。我要说,如果你要学最新最流行的东西,直接去读外面的培训班就是了,还来上大学干么?
2. 我就是搞不懂,难道C语言在中国已经没有用了?学C语言这个基础,再学别的语就会轻松不少。
---中国著名计算机教育学家:潭浩强
以上两句话是潭浩强教授在2005年说的。我们知道潭教授是编写BASIC和C语言程序设计书著名的。 作为一个教材编写者和计算机教育学家出此言论,值得我们认真思考。 似乎潭教授在为自己的教材仍然存在于中国教育中做辩护,C语言和C语言教材,在潭教授眼中,虽然已经过时了,不是最新最流行的东西,但是我们没有必要学最新的东西,我们就学C,有了C的基础再去学流行的,新的。以前潭教授的教程存在的理由是C语言在国内外广泛使用,现在C语言教材存在的理由是为学新的,流行的做铺垫。
首先讨论一下现在C语言的地位:
下面是编程语言的最新排行板:
2006-2 2005-2 Programming Language Ratings  ......
别让生命留下太多的遗憾 - 转载(2006-03-27 13:27:00)
摘要:你改变不了环境,但可以改变自已。 因为年轻,所以会经历一些事情,如爱情,如友情。 没有人能够永远快乐幸福的过每一天。 没有人能够坦然的面对自己的坚强和软弱。 让你成熟的,是经历与磨难。 让你幸福的,是宽容与博爱。 让你心安的,是理解与信任。
你改变不了事实,但你可以改变态度 不知道为何,有些东西就是无法改变。 也许,是因为还没有找到真正的梦想。 也许,还在追求那永远不会有的完美。 我们曾虚荣过,幻想过,为狭隘的目标奋斗过。 待到重新回头看时,觉得很多事情都云淡风轻了。
你改变不了过去,但你可以改变现在 过去的就让它过去,会在未来走的更加好。 因为抛弃了不必要的包袱,生活才会更美好。 人生如此短暂,有什么理由,不去好好的生活呐。 有太多的事情要你去做,有很重要的人等着你去珍惜。 不要回头看,前面的世界才更精彩。
你不能控制他们,但你可以掌握自已 走自己的路,纵然很崎岖,纵然很陡峭。 但要依然勇往直前。 谁也没有控制你命运的权利。 纵然会困难重重,伤痕累累,但不要犹豫,不要后悔。 因为在回首时,你可以指着那条尽是痛苦和泪水的路,大声地骄傲地说: 看,这就是我自己走出来的路!
你不能预知明天, 但你可以把握今天 “森林中有一个分岔口,我愿选择脚印少的那一条路,这样我的一生会截然不同。” 一条路走的人多了,总会弄得泥泞不堪,总会弄得尘土飞扬。 为何不换一条路走走,也许一切将会是另一种样子。 把握自己的今天,那么明天绝对会更好。
你不能左右天气,但你可以改变心情 你对生活微笑,那么生活也对你微笑。 让我们的心不再压抑,让它解脱吧。 让自由的心灵飞翔,去迎接那绚丽的阳光吧!
你不能选择容貌,但你可以展现笑容 和千万人相遇,和千万人相离,生命中寻找一个能够真识相伴的人 真实信任的朋友,就是幸福。无论任何时候,无论做什么事情,无论面对怎样的环境, 但都知道,有这样一个人,在等你回家。 有这样一个人,能够宽容分享你的一切快乐和悲伤,能够看见你的坚强和软弱。 ......
毕业生来清醒一下 - 转载(2006-03-27 13:15:00)
摘要: 又到春天了,大学生们又该忙找工作了。我作为一个人到中年的职场油子谈谈招聘,希望能对大家的择业有所帮助吧。 首先要解开一个误区,那就是应届的大学毕业生很难找工作。 对于我而言,我这么多年从来没有歧视过应届毕业生。而且我身边的很多公司,包括我的同行,也都不歧视。这点大家大可放心。 通常来说,一个公司的业务模块无外乎两大块。一大块是商务性的业务模块,包括了销售、市场、客户管理等等,有的公司把项目管理也划到了这一块,也有的公司反之。而我这么多年一直从事的工作,就是市场部的工作。 除了商务性的业务模块之外,剩下的就是生产、研发性的业务模块了。比如系统开发、测试、项目实施、项目管理、系统集成等等。 除了商务、生产这两大模块之外,就是一些事务性较为繁杂的部门,比如行政、财务、人力资源等等。 一般来说,应届毕业生尽管缺少经验,但却有着得天独厚的优势,那就是好塑造,好改造。所以,很多公司的都愿意在生产型、研发型的业务部门招聘应届毕业生。 但有些岗位,比如市场部、销售部,需要一定的阅历和年纪。尤其是销售型的部门,更是需要相当强的阅历和沟通能力。 所以,相对应届毕业生而言,商务性的业务模块,应聘起来会有一定的难度。 但大家不必灰心,多尝试几家公司。大部分具有一定规模,有一定实力的公司都不歧视应届生。 第二点谈谈考研和文凭吧。 从我个人来说,我可以负责的讲,我几乎不怎么看对方是什么学校毕业的。换句话讲,是不是北大的,还是某个不知名的二类院校的,对于招聘的人,可能没什么大区别。 考研的问题可能是快要毕业的朋友都要考虑的。我用我本身的经历告诉大家,如果你想考研,那就坚定地考。等你开始工作,可能很多的时间在结交自己的朋友圈,或者忙于工作,或谈恋爱等等……你很难再有在校园里面这么整块时间来读书了。
!!!而读到自己脑子里的东西,是谁都带不走的,无论你将来落难了也好,众叛亲离也好,走投无路也好,你自己脑子里的知识,是跟着你一生的,是任何人都抢夺不走的!!! 假如,你三十多岁,老婆跟你闹离婚,房子、车子都可能失去。但知识不会失去! 我这里说的是知识,但读研能否把自己读的书转化为知识,那就要看自己了。 第三点说说性别吧。 首先,大家有一个普遍的误解,认为女生在找工作的时候受到歧......
javax.swing.undo类 使用实例 - 转载(2006-03-26 19:40:00)
摘要:import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.event.UndoableEditEvent; import javax.swing.event.UndoableEditListener; import javax.swing.undo.CannotRedoException; import javax.swing.undo.UndoManager;
public class UndoRedoTextArea extends JFrame { protected JTextArea textArea = new JTextArea();
protected UndoManager undoManager = new UndoManager();
protected JButton undoButton = new JButton("Undo");
protected JButton redoButton = new JButton("Redo");
public UndoRedoTextArea() { super("Undo/Redo Demo");
undoButton.setEnabled(false); redoButton.setEnabled(false);
JPanel buttonPanel = new JPanel(new GridLayout()); buttonPanel.add(undoBut......
