- 博客(58)
- 收藏
- 关注
原创 面试题:五笔的字典序编码与解码
前几天朋友跟我说了一道面试题:五笔的编码范围是a到y的25个字母,从1位到4位的编码,如果将五笔的编码按字典序排序,形成数组如下:a, aa, aaa, aaaa, aaab, aaac, ..., b, ba, baa, baaa, baab...yyyx, yyyy其
2011-09-27 21:49:47
6051
原创 变换:opengl和d3d的区别
<!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-a
2010-05-06 22:33:00
4824
转载 (转)网上摘抄:计算数学研究方向及网上资料
(转)网上摘抄:计算数学研究方向及网上资料<!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-p
2009-11-09 20:01:00
5939
转载 (转)网上摘抄:图像处理的网上资料
(转)网上摘抄:图像处理的网上资料 作图像处理方面的研究工作,最重要的两个问题:其一是要把握住国际上最前沿的内容;其二是所做工作要具备很高的实用背景。解决第一个问题的办法就是找出这个方向公认最牛的几个超级大拿(看看他们都在作什么) 和最权威的出版物(阅读上面最新的文献),解决第二个问题的办法是你最好能够找到一个实际应用的项目,边做边写文章做好这几点的途径之一
2009-11-09 19:51:00
1189
原创 vs2005开发程序引起的:"应用程序初始化失败"的问题
这个问题是这样的:每次别人重装系统后,运行那些用vs2005开发的应用程序,很多时候都会出现:“应用程序初始化失败....”之类的提示框。 这个问题我两年前就遇到,结果这两年多来,时不时的都碰到这个问题,这时候还经常忘记解决方案~,汗,记忆力真差,刚才又有人遇到了,所以现在记录在此。 这个问题通常都是新装的系统里面没有vs2005需要的dll引起的,最简单的解决方法就是到微软的网址
2009-10-13 17:44:00
1371
原创 C++对象模型笔记:dynamic binding
C++对象模型笔记:dynamic binding 编译器对于多态的实现是怎样的呢?下面请看一个例子: Class Point{Public:Virtual void print();……}; Class Point2D : public Point{Public:Virtual
2009-01-16 14:15:00
2552
4
原创 c/c++结构体对齐小结
因为我看C++对象模型的时候,遇到了几个内存布局都是有关于对齐的一些细节,故此对结构体对齐再做一份小结,有人说:结构体对齐这个东西是依赖于编译器的,因此不用去研究,真的嘛? 也许是,也许不是,要看你是做那个行业的了,如果你是做系统地层,网络通讯,嵌入式系统的,一个字节的节省,也许对你是很大的期望呢。虽然具体的对齐方式是因编译器而异,但是对齐的基本原理是不变的,那个原理也许能指导我们编写程序
2009-01-16 10:23:00
12972
2
原创 C++对象模型笔记: Name Mangling与重载
上一篇笔记里面说到,如果c++的成员函数都是全局的,怎么区分两个类中的同名的成员函数调用,例如:下面定义了2个类Point1,Point2的对象p1,p2;其中Point1,Point2都有成员函数print: Point1 p1;Point2 p2;p1.print( );p2.print( ); 编译器怎么区分呢? 其实,类中的成员函数pri
2009-01-15 13:01:00
2926
转载 C++对象模型笔记:对象实例内存布局的小小结
前一篇笔记中已经说出了类的对象实例在内存中的三种可能的内存布局,其中,最后一种是c++编译器正在使用的。这种布局的特点如下(先抛开虚函数方面的信息,说一般的) 1、非静态(non-static)数据成员,每个对象实例的内存空间里都有一份; 2、静态(static)数据成员,静态和非静态的成员函数:整个内存空间里面仅有一份(对象实例的内存空间是没有这方面的信息的) 原来,
2009-01-14 15:48:00
1532
1
原创 C++对象模型笔记:对象的三种内存布局
下面的C++代码定义了一个类Point:class Point{public: Point(float xval); virtual ~Point(); float x() const; static int PointCount();protected: virtual ostream& print( ostr
2009-01-14 13:38:00
2361
1
原创 c++对象模型笔记:struct 和 class
在c++里面,struct 和 class 有没有区别?有的!但是仅有一个,那就是struct的成员访问的默认权限是public,而class则是private的。比如:class A{//a,b是private成员 int a; int b;};struct B{//c,d是public成员 int c; int d;};就这一个区别而已!那么,为什么还要保留这个struct
2009-01-12 16:28:00
1758
1
原创 c++对象类型笔记:private,protected,public
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font
2009-01-12 15:03:00
2025
2
原创 c++对象模型笔记:指针类型转换
这篇笔记说的是关于c/c++中的类型转换的东西,重点是与指针有关的类型。1、强制类型转换看一下这个c代码:int a = 0x123456; //0x是十六进制的表示法char c = (char)a;printf("%d/n", c);在我的编译环境里输出的是什么呢? 是86,怎么得来的呢?(我的编译环境见“概述”)int a的内存如下(左边是低地址的内容,右边是高地址的内容):0x56 0
2009-01-12 13:09:00
4913
7
原创 C++对象模型笔记:概述
本系列文章是对Lippman的《深度探索c++对象模型》(“Inside the c++ object model”)的读书笔记。1、关于作者Lippman:c++首个编译器的开发者之一,所作的c++方面的书籍有:《c++ primer》:c++的百科全书,和c++之父的《c++ programming language》齐名。《Inside the c++ object model》:讲述c++
2009-01-12 09:19:00
1409
原创 删除串中相同的元素:一个做法
有一个问题,如何删除两个字符串相同的字符,比如str1 = "abcdeafg" str2 = "blimklaaaaa"要得到:str1 = "cdefg" str2 = "limkl"下面直接写程序,这个程序是我写的,但是思想是别人的,呵呵为了方便讨论,假设str1 和 str2 都是ascii码void delSameChs(char *str1, char *str2){ //a
2009-01-08 16:55:00
1300
原创 MFC消息映射的原理:笔记
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font
2009-01-06 17:28:00
5900
2
原创 C++虚基类的实现机制:笔记
在《深度探索C++对象模型》里,有一个问题,也是去公司面试的时候那些技术人员常问的问题:在C++中,obj是一个类的对象,p是指向obj的指针,该类里面有个数据成员mem,请问obj.mem和p->mem在实现和效率上有什么不同。答案是:只有一种情况下才有重大差异,该情况必须满足以下3个条件:(1)、obj 是一个虚拟继承的派生类的对象(2)、mem是从虚拟基类派生下来的成员(3)、p是基类类型的
2009-01-06 14:33:00
13536
8
转载 c++ 虚函数的实现机制:笔记
1、c++实现多态的方法其实很多人都知道,虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面可以知道:是每个类用了一个虚表,每个类的对象用了一个虚指针。具体的用法如下:class A{public: virtual void f(); virtual void g();private: int a};class
2009-01-06 13:35:00
43903
3
原创 乘方的算法
从其他地方看见的一个乘方的算法,来过来整理一下,做做笔记:1、实现如下函数:long power(int n, int p) ,功能是n的p次方long power(int n, int p){ int k = 1; while ( 1 != p ) { if( 1 == ( p & 0x01 ) ) k *= n; //保留中间结果
2009-01-06 13:05:00
5451
原创 技术面试的经历
有一次技术面试,经历如下:1、那家公司是一家做手机开发应用程序的。我去到之后,先做笔试,笔试题目好像比较简单,如下所示:(1)、下面程序调用f(111)的结果是:int f(int m){ int count = 0; while( m ) { m = m & (m - 1); count++; } return count;}其实是考查参
2009-01-05 14:04:00
1368
原创 linux 守护进程(daemon)的创建方法
用C语言来创建守护进程方法大致如下:int init_daemon(const char *pathname){ struct sigaction act; int max_fd, i, ret; char buf[100]; /* 第一次调用fork,为setsid做准备 */ ret = fork(); if( 0 > ret ) { f
2008-11-24 13:51:00
1177
原创 TCP/IP 之TCP协议(2):连接和状态
1、连接建立阶段的三次握手一般情况下,客户端连到服务器叫做主动打开,服务器上的端口监听叫做被动打开a、准备,服务器进程被动打开端口b、第一次:客户发送SYN报文,主动打开连接。这个报文中的序号叫做ISN(初始序号),是随机产生的。(SYN报文不带数据,但是消耗一个序号)c、第二次:服务器收到后,发送SYN+ACK报文。d、第三次:客户段收到后,发送ACK报文进行确认。2、连接正常终止的三次握手协议
2008-11-21 15:57:00
1779
原创 TCP/IP 之TCP协议(7):选项字段
1、TCP首部选项字段多达40B,记下一些常用的东西:2、选项结束字段(EOP,0x00),占1B,一个报文段仅用一次。放在末尾用于填充,用途是说明:首部已经没有更多的消息,应用数据在下一个32位字开始处3、无操作字段(NOP, 0x01),占1B,也用于填充,放在选项的开头4、MSS(最大报文段长度),格式如下:种类(1B,值为2),长度(1B,值为4),数值(2B)用于在连接开始时确定MSS的
2008-11-21 15:32:00
5098
原创 TCP/IP 之TCP协议(6):4种计时器
1、大多数TCP实现使用至少4种计时器:重传,2MSL,持久,保活2、2MSL计时器用于连接终止时,原因见:TCP协议的状态和连接3、保活计时器(keepalive timer)用于防止连接出现长时间的空闲;每当服务器收到客户消息就把该计时器复位,如果超过时间还没有收到消息,就发送探测报文段,定时的发N个,如果还没有收到响应,就认为是客户除了故障,终止连接4、持久计时器(persistence t
2008-11-21 15:01:00
3054
原创 TCP/IP 之TCP协议(5):拥塞控制
1、如果网络上的负载(发送到网络上的分组数)大于网络上的容量(网络同时能处理的分组数),就可能引起拥塞,判断网络拥塞的两个因素:延时和吞吐量。拥塞控制机制是:开环(预防)和闭环(消除)(见网络原理相关书籍,略)tcp处理拥塞的三种策略:慢启动(指数增大),拥塞避免(加法增大),拥塞检测(除2减少,或叫做乘法减少)2、慢启动:指数增大/* ssthresh是慢开始门限,slo
2008-11-21 14:41:00
1676
原创 TCP/IP 之TCP协议(4):差错控制
1、TCP必须保证数据:按序,没有差错,没有部分丢失,没有重复的交给应用层。方法就是:校验和,确认,超时重传2、校验和:和UDP的做法一样,也要伪首部,和UDP不同的是这个功能在TCP中是必须的3、确认:ACK的确认机制(下面是一些原则)a、ACK报文不需要确认,也不消耗序号b、当一端发送数据时,尽量包含捎带确认。c、收端推迟发送ACK报文段,如果仅有一个未确认的按序报文段;延迟到500ms,或者
2008-11-21 14:19:00
5718
原创 TCP/IP之TCP协议(3):流量控制(滑动窗口协议)
1、流量控制是管理两端的流量,以免会产生发送过块导致收端溢出,或者因收端处理太快而浪费时间的状态。用的是:滑动窗口,以字节为单位2、窗口有3种动作:展开(右边向右),合拢(左边向右),收缩(右边向左)这三种动作受接收端的控制。合拢:表示已经收到相应字节的确认了展开:表示允许缓存发送更多的字节收缩(非常不希望出现的,某些实现是禁止的):表示本来可以发送的,现在不能发送;但是如果收缩的是那些已经发出的
2008-11-21 13:46:00
2752
原创 TCP/IP 之TCP协议(1):概述和报文格式
1、TCP协议(传输控制协议)是端到端的可靠的,面向连接的协议。处理的对象称为TCP报文段(segment),是基于流的协议。2、不像UDP,TCP留有两个缓存,发送和接收缓存,用来暂存TCP报文段,以便于重传和确认机制使用3、特点:编号系统,流量控制,拥塞控制,差错控制,计时器(4个)等4、TCP Segment格式:首部(20B-60B)+ 数据(下面介绍首部的字段)(1)、源端口地址(2B)
2008-11-21 11:22:00
2586
1
原创 TCP/IP 之FTP协议
1、FTP(文件传输协议),用于将一个主机上的文件传送到另一个主机。和其他协议不同的是,它使用两条连接,一条用于数据传送(port 20),另一条用于命令控制传送(port 21)。其中,控制连接在整个FTP会话阶段(ftp session)都是处于连接状态,而数据连接是有数据要传则打开,没有数据传了就关闭。2、连接(1)、在控制连接过程中,IP数据报在TOS字段里面使用的是最小时延标志。(2)、
2008-11-20 09:34:00
2037
原创 TCP/IP 中校验和的计算方法
读《TCP/IP详解》时候看到IP首部校验和算法中叫做“每16bit反码求和”,于是我以为是每一部都先反码在求和。所以我写的过程如下:(以如下数组为例 unsigned short a[10] = { 0x4500, 0x059a, 0x82b9, 0x4000, 0x3206, 0x4f79,0xa66f, 0x08ee, 0xc0a8, 0x0126};因为IP首部长20B,就是10个16进
2008-11-19 11:18:00
4156
原创 TCP/IP 协议之 Telnet
1、一种通用的C/S应用程序(TELNET 是 terminal network缩写),让用户登陆到远程计算机上运行那边的程序,然后将结果回显。2、网络虚拟终端(NVT):为不同的系统统一了字符集。(1)、字符集用两种,一种当普通的数据,和ASCII嘛的0-127意义相同(就是以开头一bit为0)。一种是远程控制字符,开头一bit为1,比如IAC为0xff,SE为0xf0,SB为0xfa等等。(2
2008-11-19 09:34:00
3685
原创 TCP/IP协议之HTTP协议
1、万维网(WWW)提供的是分布式C/S服务,每个客户端浏览器由3部分组成:控制程序(ftp,http,telnet等),解析程序(html,jsp,php等)和客户协议。2、统一资源定位符(URL URI),由一下部分组成: 协议 :// 主机( : 端口 ) / (路径)协议部分除了http之外还可以用ftp,news和telnet端口默认是80端口。路径是文件
2008-11-18 22:20:00
1196
原创 TCP/IP 协议之 DNS
1、DNS协议的公用端口是53,常用UDP封装(也可以用TCP封装的)。DNS(域名系统)是一种分布式数据库(IP -- 名字)2、一些概念:(1)、DNS的域名的域名最多有63个字符,不分大小写,比如:sun.tuc.noao.edu 最右边的是顶级(一级)域名,往左依次是二级域名,三级域名...。最多可以有128级域名(0-127;其中0级域名为空)(2)、顶级域有三个组成部分,一是组织域(普
2008-11-18 16:29:00
2029
原创 linux 库文件 生成与使用
1、linux库文件分为静态库和动态库两种。静态库习惯以.a 结尾,而动态库习惯以.so(shared object)结尾。而且必须以lib开头。2、静态库的原则是“以空间换时间”,增加程序体积,减少运行时间;生成:在编译时候,先生成目标文件.o,然后用ar文件对目标文件归档,生成静态库文件。例如:ar -rc libtest.a myalib.o (注意:ar -rc 目标 .o文件名),目标一
2008-11-17 19:08:00
10700
原创 TCP/IP 协议值IP选路
1、linux下的一些网络命令。(1)、ifconfig 这个命令是查看,修改ip地址以及mac地址的(2)、netstat 监听网络状态的,netstat -rn:查看本机中的路由表,以IP地址显示出来(3)、arp查看,修改arp缓存的(4)、ping 检测网络连接状态(5)、traceroute:检测数据传送过程中的经过的路由器(原理是每次发一个数据报,其TTL每次加1,端口号为不可达端口,
2008-11-17 13:00:00
1487
原创 (C语言)头文件实现的函数
在C语言里面,有时候为了方便(方便的同义词是偷懒),函数就直接在头文件里面实现了。那么这样子有什么问题呢?下面举个例子,这个例子只有3个文件/* fun.h */#ifndef FUN_H#define FUN_Hvoid base(){};void fun();#endif /* fun.c */#include "fun.h"void fun(){ base();}/* main.c *
2008-11-15 20:50:00
14345
原创 linux C项目make:不能更新 的 一个原因
这个问题在昨天工作中遇到,先记一下自己的探索的结果。大致问题如下:程序有3个文件组成,如下显示(工作项目当然要保密的嘛,所以另外自己写了个最简单的小程序来说明问题)/* fun.h */#ifndef FUN_H#define FUN_H#include void fun(int f);#endif/* fun.c */#include "fun.h"void f(int f){ printf("
2008-11-15 19:22:00
3728
原创 TCP/IP 协议之 UDP协议
1、UDP:是面向用户数据报的运输层协议哈。不可靠,无连接。2、首部(共8B): 源端口号(2B),目的端口号(2B),UDP长度(2B), UDP校验和(2B)说明:(1)、对于UDP的端口号,端口号是用来标记应用进程的,TCP和UDP可以共用一个端口号,这可以在IP首部中的协议字段来区分开来。(2)、UDP长度是首部长度与数据部分长度的总和,其实,从IP首部中也可以得到这个信息,属于冗余信息了
2008-11-14 16:27:00
796
原创 TCP/IP 笔记之 ARP协议
1、当一台主机把以太网数据帧发送到统一局域网的另一台主机时,是根据mac地址来确定接口的。ARP协议是由ip地址映射到mac地址的协议(slip,ppp不用使用arp协议)2、每个主机上有arp高速缓存(每一项的生存时间为20min),可以用arp -a查看(unix类系统有效)3、arp的分组格式:(28B请求/应答)(1)、硬件类型(2B):以太网地址时,值为1(2)、协议类型(2B):IP协
2008-11-14 11:04:00
1045
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人