- 博客(122)
- 收藏
- 关注
原创 instanceof, isinstance,isAssignableFrom的区别
<br />instanceof运算符 只被用于对象引用变量,检查左边的被测试对象 是不是 右边类或接口的 实例化。如果被测对象是null值,则测试结果总是false。 <br />形象地:自身实例或子类实例 instanceof 自身类 返回true <br />例: String s=new String("javaisland"); <br /> System.out.println(s instanceof String); //true <br /><br />Class类
2011-01-14 23:54:00
13808
转载 机顶盒
1、机顶盒的定义<br /> 对于机顶盒,目前没有标准的定义,从广义上说,凡是与电视机连接的网络终端设备都可称之为机顶盒。从过去基于有线电视网络的模拟频道增补器、模拟频道解码器,到将电话线与电视机连接在一起的“维拉斯”上网机顶盒、数字卫星的综合接收解码器(IRD,Integrated Receive Decoder)、数字地面机顶盒以及有线电视数字机顶盒都可称为机顶盒。从狭义上说,如果只说数字设备的话,按主要功能可将机顶盒分为上网机顶盒、 数字卫星机顶盒(DVB-S)、数字地面机顶盒(DVB-T)、有线电
2010-09-09 23:09:00
2727
原创 专业术语的全称
DVB-C(Digital Video Broadcasting-Cable)即有线数字电视广播,利用低频载波,使用正交幅度调制 QAM-64调制方式;DVB-T(Digital Video Broadcasting -Terrestrial )是用COFDM调制;DVB-S(Digital Video Broadcasting-satellite)是用正交移相键控(QPSK)调制;MPEG是一种音视频压缩标准(moving picture experts group 运动图像专家组) MPEG
2010-09-09 22:57:00
1492
转载 DVB-C,DVB-T,DVB-S简介
<br />数字电视从节目采集到节目编辑、从信号传送、发射到最终接收等全过程均采用数字化处理的电视系统称为数字电视。数字电视与传统的模拟电视比较就好像CD与唱片的简单类比。小巧而高质量的CD并没有改变我们聆听音乐的方式,但却极大地提高了质量。同样,我们仍然将像往常一样看电视,但是我们必须将我们的电视接收机更换为数字电视接收机。<br /><br />更多的频道,更好的图像<br /> 数字电视可以提供给我们更多的频道和更高质量的图像,无论是采用标准清晰度电视(SDTV)或者是高清晰度电视(
2010-09-09 22:33:00
2956
原创 tcp三次握手
<br />1、建立连接协议(三次握手)<br />(1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。<br />(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。<br />(3) 客户必须再次回应服务段一个ACK报文,这是报文段3。<br />2、连接终止协议(四次挥手)<br /> 由于TCP连
2010-09-08 21:22:00
679
原创 NAT 穿透
<br />NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。 <br />简单的说,NAT就是在局域网内部网络中使用内部地址,而当内部节点要与外部网络进行通讯
2010-09-02 21:19:00
1786
原创 TCP和UDP各包含了哪些协议
使用TCP协议的常见端口主要有以下几种: (1) FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。 (2) Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。 (3) SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免
2010-08-31 02:43:00
17505
9
转载 linux socket编程
<br />http://www.aka.org.cn/Lectures/002/Lecture-2.1.8/Lecture-2.1.8/index.htm
2010-08-30 22:39:00
518
转载 postmessage与sendmessage的区别
<br />1, PostMessage只把消息放入队列,不管其他程序是否处理都返回,然后继续执行,这是个异步消息投放函数。而SendMessage必须等待其他程序处理消息完了之后才返回,继续执行,这是个同步消息投放函数。而且,PostMessage的返回值表示PostMessage函数执行是否正确;而SendMessage的返回值表示其他程序处理消息后的返回值。这点大家应该都明白。 2, 如果在同一个线程内,PostMessage发送消息时,消息要先放入线程的消息队列,然后通过消息循环Di
2010-08-30 21:51:00
678
原创 原码 反码
数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们绝大多数人生来具有10个手指头这个解剖学事实的结果.尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚."(摘自<<数学发展史>>有空大家可以看看哦~,很有意思的).为了能方便的与二进制转换,就使用了十六进制(2 4)和八进制(23).下面进入正题. <br />数值有正负之分,计算机就用一个数的最高位存放符号(0为正,
2010-08-27 22:11:00
2446
原创 函数模板与类模板的区别
<br />函数模板与类模板有什么区别?答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化 <br />必须由程序员在程序中显式地指定。<br /> <br />即函数模板允许隐式调用和显式调用而类模板只能显示调用<br /> <br />这期间有涉及到函数模板与模板函数,类模板与模板类的概念(类似于类与类对象的区别)<br />请看下面例子<br /> <br />注意:模板类的函数声明和实现必须都在头文件中完成,不能像普通类那样声明在.h文件中实现在.cpp文件中,
2010-08-27 20:35:00
15672
1
原创 public protected private
<br /><!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;}
2010-08-27 01:56:00
844
转载 rtti的typeid与danamic_cast用法
<br />要使用RTTI特性,必须包含<typeinfo>头文件,并且要使用/GR开启运行时信息,<br />在visual studio中<br />打开该项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。 <br />单击“C/C++”文件夹。<br />单击“语言”属性页。<br />修改“启用运行时类型信息”属性。<br />在g++中应该是在编译时使用命令/GR即可,(这个本人不是很确定,没实验过)<br />先给一小段代码:<br /> class A<
2010-08-27 01:27:00
843
原创 类构造函数的顺序
<br /><!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;}
2010-08-27 00:52:00
698
原创 I/O 模型
<br />本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教。<br /><br />一:select模型<br />二:WSAAsyncSelect模型<br />三:WSAEventSelect模型<br />四:Overlapped I/O 事件通知模型<br />五:Overlapped I/O 完成例程模型<br />六:IOCP模型<br /><br />老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他
2010-08-26 21:47:00
1408
原创 几种常用函数的原型
strcpy()、memcpy()、memmove()、memset()的实现 strcpy(), 字符串拷贝.char *strcpy(char *strDest, const char *strSrc){ assert((strDest!=NULL) && (strSrc !=NULL)); char *address = strDest; while( (*strDest++ = * strSrc++) != '/0')
2010-08-24 23:24:00
1619
原创 c 中static的作用
<br />1.先来介绍它的第一条也是最重要的一条:隐藏。<br />当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c.<br />下面是a.c的内容: char a = 'A'; // global variable<br />void msg()<br />{<br />printf("Hello/n");<br />}<br /><br />下面是main.c
2010-08-09 14:13:00
545
原创 内存设计考虑的要点
<br />内存管理模块的要求:1.线程安全 2.接口易用性 3.数据结构的通用性 4.数据的唯一性<br />1. 线程安全<br />为了保证线程安全对每个类型数据读写操作都要进行安全锁,保证同步<br />2.接口易用性<br />内存操作分为获取,添加,更改以及删除<br />以Set开头的函数用于更改和添加<br />返回值为int:返回1表示更改信息,返回0表示添加信息<br />以Get开头的函数用于获取<br />返回值为int:返回0表示从内存中获取的数据,返回1表示从本地DB
2010-07-05 17:23:00
588
转载 虚函数表解析
<br />C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 <br />关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一
2010-07-05 17:14:00
482
转载 面试问题1
工作动机、个人愿望 请给我们谈谈你自己的一些情况你是哪年出生的?你是哪所大学毕业的?请谈一下你对公司的看法,为什么你想来工作?你认为对你来说现在找一份工作是不是不太容易?你是怎么应聘到我们公司的?请你谈谈对我单位的看法你完全可以到大公司任职,你怎么想到我们小企业?你为什么希望到我们公司工作?如果公司录用你,你最希望在哪个部门工作?你愿意被外派工作吗?你愿意经常出差吗?我怎样相信对这个职位你是最好的人选呢?如果我能给你任何你想要的工作,你会选择什么?为什么你还没有找到工作?你对我们公司有多少了解?你对公司有何
2010-07-05 14:20:00
548
原创 delete[] delete区别
<br />例子:<br />char* p=new char[100];<br />delete p; <br />p=NULL;<br />//没有内存泄露<br />char* p=new char[100];<br />delete p[]; <br />p=NULL;<br />//也没有没有内存泄露<br /> <br /> <br />C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 <br
2010-06-29 10:06:00
564
原创 对面向对象的理解
<br />面向对象编程(Object-Oriented Programming)简称OOP技术,是开发计算机应用程序的一种新方法、新思想。<br />而OOP技术经常要使用许多代码模块,每个模块都只提供特定的功能,并且彼此独立,这样就增大了代码重用的几率,更加有利于软件的开发、维护和升级。模块化的设计结构经常可以简化任务。<br />在面向对象中,算法与数据结构被看做是一个整体,称作类,现实世界中任何类的对象都具有一定的属性和操作,也总能用数据结构与算法两者合一地来描述,所以程序可以被这样定义:<br /
2010-06-28 16:57:00
528
原创 导致0XC0000005access violation 的几种代码
<br />例1:<br />int *p;<br />p=(int*)0X8000;<br />*p=0Xabcd;<br />这段代码会导致运行时错误,因为给指针分配了一个随机的地址,这是十分危险的,不管这个指针有没有被使用过这么做都是不允许的
2010-06-25 09:28:00
2553
原创 算法的时间复杂度
<br />1、时间复杂度 <br /><br />(1)时间频度 <br />一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 <br /><br />(2)时间复杂度 <br />在刚才提到的时间频度中,n称为问题的规
2010-06-19 16:11:00
820
原创 指针加减
<br /> double dArray[2] = {4, 8}, *p, *q;<br /> p = &dArray[0];<br /> q = p + 1;<br /> int n= q - p ; //n=1 指针加减,跟类型有关<br /> int m= (int)q - (int)p ;//m=8,指针的地址值进行加减,其实就是整数加减<br /> int k=(char*)q - (char*)p ;//k=8<br /> int j=(int*)q - (int*)p ; //j=2
2010-06-19 14:38:00
1349
原创 几种进制数
<br />在汇编中:<br />N=34D(说明一下,你可能在某些数字的后边看到过加有一个字母,这个字母便是用来表示数制的,十进制数用D,二进制数用B,八进制数用O,十六进制数用H) <br />B:binary 二进制<br />O:octal 八进制<br />D:decimal 十进制<br />H:hex 十六进制
2010-06-19 14:19:00
954
转载 Android平台配置
<br />http://www.cbmland.com/post/910/deployment-andriod-develop-environment.html
2010-06-18 16:14:00
493
原创 x=x+1,x+=1,x++的效率问题?
<br />196: x=x+1;<br />00401FB4 mov eax,dword ptr [ebp-8]<br />00401FB7 add eax,1<br />00401FBA mov dword ptr [ebp-8],eax<br />196: x+=1;<br />00401FB4 mov eax,dword ptr [ebp-8]<br />00401FB7 add
2010-06-14 00:54:00
659
1
原创 数组指针与数组元素的指针
main(){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1));}输出:2,5*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)int *ptr=(int *)(&a+1); 则ptr实际是&(a[5]),也就是a+5原因如下:&a是数组指针,其类型为 int (*)[5];
2010-06-13 11:43:00
509
转载 求二进制数中1的个数
求二进制数中1的个数http://www.msra.cn/Articles/ArticleItem.aspx?Guid=7cfc244e-aaf5-4669-be0a-3a8f32409731#. 对于一个字节(8bit)的变量,求其二进制表示中“1”的个数,要求算法的执行效率尽可能地高。【解法一】 可以举一个八位的二进制例子来进行分析。对于二进制操作,我们知道,除以一个2,原来的数字将会减少一个0。如果除的过程中有余,那么就表示当前位置有一个1。 int Cou
2010-06-13 09:36:00
704
原创 i++与++i的区别
<br />再解析i++与++i的区别前我们先看两道题:<br /> <br />#define SQUARE(a)((a)*(a))<br /> int a=5;<br /> int b=SQUARE(a++);<br /> int c=5;<br /> int d=SQUARE(++c); <br />答案是a=7,b=25,c=7,d=49,<br />其实从这个答案上我们就可以看出些眉目了,当a++作为参数的时候,其实先以a的原值(未加1之前的值)作为操作数进行运
2010-06-13 00:23:00
569
原创 0xCCCCCCCCC的内存不能访问的原因
在VC6下调试程序,可能会遇到诸如指令引用“0xcccccccc”,该内存不能为Read的报错究其原因,就debug版中的堆栈中的局部变量(包括指针)在明确初始化之前都用0x0cc进行初始化,因此,未初始化时候的指针是指向地址0x0cccccccc的,而这段地址一来是处于内核地址空间,一般的应用程序是无权访问的,上面的报错就是这样产生的。因此,一旦遇到上述报错,基本可以认定程序中出现了野指针。另外一方面cc对应着int 3调试中断,堆栈中的存放的局部数据一般情况下是只读的,当发生意外执行堆栈里面
2010-06-11 23:59:00
7104
转载 C++面试题大全(附参考答案)
<br />http://hi.baidu.com/tikuanyinok/blog/item/509da113e62ceed4f7039ee6.html<br /> <br />1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?<br />virtual修饰符会被隐形继承的。private 也被集成,只事派生类没有访问权限而已。virtual可加可不加。子类的空间里有父类的所有变量(static除外)。同一个函数只存在一个实体(inline
2010-06-11 22:50:00
2061
原创 c++位操作指令
http://www.programbbs.com/doc/3012.htm一、传统的C方式位操作:1.基本操作: 使用一个unsigned int变量来作为位容器。2.操作符:| 按位或操作符:result=exp1|exp2;当exp1和exp2中对应位中至少有一个为1时,result中对应位为1,否则为0。& 按位与操作符::result=exp1&exp2;当exp1和exp2中对应位全为1时,result中对应位为1,否则为0。^ 按位异或或操作符:result=exp1^exp2;当
2010-06-11 22:48:00
1073
转载 c++位操作指令
http://www.programbbs.com/doc/3012.htm一、传统的C方式位操作:1.基本操作: 使用一个unsigned int变量来作为位容器。2.操作符:| 按位或操作符:result=exp1|exp2;当exp1和exp2中对应位中至少有一个为1时,result中对应位为1,否则为0。& 按位与操作符::result=exp1&exp2;当exp1和exp2中对应位全为1时,result中对应位为1,否则为0。^ 按位异或或操作符:result=exp1^exp2;当
2010-06-11 15:30:00
547
转载 学习STL map, STL set之数据结构基础
<br />STL map和set的使用虽不复杂,但也有一些不易理解的地方,如:<br /><br /> <br />或许有得人能回答出来大概原因,但要彻底明白,还需要了解STL的底层数据结构。<br />C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的
2010-06-10 12:44:00
555
转载 经典面试题
<br />1. 以下三条输出语句分别输出什么?<br />char str1[] = "abc";<br />char str2[] = "abc";<br />const char str3[] = "abc"; <br />const char str4[] = "abc"; <br />const char* str5 = "abc";<br />const char* str6 = "abc";<br />cout << boolalpha << ( str1==str2 ) << endl; /
2010-06-09 16:53:00
537
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人