自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 Android按键事件处理流程 -- 从事件被派发到View层次结构的根节点DecorView开始分析

刚接触Android开发的时候,对touch、key事件的处理总是一知半解,一会是Activity里的方法,一会是各种View中的,自己始终不清楚到底哪个在先哪个在后,总之对整个处理流程没能很好的把握。每次写这部分代码的时候都有些心虚,因为我不是很清楚什么时候、以什么样的顺序被调用,大都是打下log看看,没问题就算ok了。但随着时间流逝,这种感觉一直折磨着我。期间也在网上搜索了相关资料

2015-10-30 15:14:56 2144

转载 Linux 函数--fseek

fseek(移动文件流的读写位置)  相关函数  rewind,ftell,fgetpos,fsetpos,lseek 表头文件  #include 定义函数  int fseek(FILE * stream,long offset,int whence); 函数说明  fseek()用来移动文件流的读写位置。参数stream为已打开

2011-06-15 12:08:00 12375

转载 linux的rename命令

不同于Dos下的rename命令,linux下的rename命令功能非常强大。#man renameNAME       rename - Rename filesSYNOPSIS       rename from to file...DESCRIPTION       rename will rename the specified files by r

2011-06-15 11:09:00 979

转载 linux网络配置

<br />from: 修改机器名和Ip<br />1)修改机器名<br />编辑 /etc/sysconfig/network<br /><br />NETWORKING = yes<br />FORWARD_IPV4 = yes<br />HOSTNAME = xxxx.com #你的主机名<br />GATEWAY = 123.123.123.123 #网关<br />GATEWAYDEV = eth0<br /><br />2) 修改Ip<br />编辑 /etc/sysconfig/network

2011-04-28 11:02:00 831

转载 do while(0) 用法(转)

<br /> <br />#define MACRO_NAME(para) do{macro content}while(0)<br />的格式,总结了以下几个原因:<br /> <br />1,空的宏定义避免warning:<br />#define foo() do{}while(0)<br /> <br />2,存在一个独立的block,可以用来进行变量定义,进行比较复杂的实现。<br /> <br />3,如果出现在判断语句过后的宏,这样可以保证作为一个整体来是实现:<br />#define fo

2011-03-14 18:08:00 1526

原创 HTTP1.1中CHUNKED编码解析

<br />HTTP1.1中CHUNKED编码解析<br />一般HTTP通信时,会使用Content-Length头信息性来通知用户代理(通常意义上是浏览器)服务器发送的文档内容长度,该头信息定义于HTTP1.0协议RFC  1945  10.4章节中。浏览器接收到此头信息后,接受完Content-Length中定义的长度字节后开始解析页面,但如果服务端有部分数据延迟发送吗,则会出现浏览器白屏,造成比较糟糕的用户体验。<br />解决方案是在HTTP1.1协议中,RFC  2616中14.41章节中定义的

2011-03-10 11:17:00 50553 5

转载 乔丹名人堂演讲中文版 + ESPN专家J.A.-阿丹德评论

Ladies and Gentlemen......欢迎乔丹,篮球运动的典范,欢迎天行者David Thompson, 1996年名人堂成员。女士们,先生们,再次欢迎乔丹。谢谢…….谢谢……我告诉过我的朋友,我会出现在领奖台上说完谢谢就转身离开。但是,我不能。我需要感谢很多人。我还要感谢今天的直播,你们不会只看到我,还会有许多熟悉的面孔。在过去的四周里,我收到了很多的问题。他们问:“你为什么会选择David Thompson?”我知道其中的原因David也知道,可能你们都不知道。我从小在北卡罗来纳州长大,当

2011-03-09 13:27:00 2800

原创 Makefile中的变量和函数

<br />  表 1-6  GNU make 命令的常用命令行选项<br />命令行选项              含义<br />-C DIR              在读取 makefile 之前改变到指定的目录 DIR。<br />-f FILE             以指定的 FILE 文件作为 makefile。<br />-h                  显示所有的 make 选项。<br />-i                  忽略所有的命令执行错误。<br />-I DIR 

2011-03-09 12:00:00 1178

转载 gcc/g++参数详解

[介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] [参数详解] -x language filename   设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后 缀名称是.c的,而C++的

2011-03-08 21:35:00 788

原创 c99之 柔性数组成员

<br />在讲述柔性数组成员之前,首先要介绍一下不完整类型(incomplete type)。不完整类型是这样一种类型,它缺乏足够的信息例如长度去描述一个完整的对象。<br />6.2.5 Types<br />incomplete types (types that describe objects but lack information needed to determine their sizes).<br /> <br />C与C++关于不完整类型的语义是一样的。<br /> <br />前向声

2011-03-08 17:19:00 2895 3

原创 线性表可用顺序表或链表存储的优缺点

顺序存储表示是将数据元素存放于一个连续的存储空间中,实现顺序存取或(按下标)直接存取。它的存储效率高,存取速度快。但它的空间大小一经定义,在程序整个运行期间不会发生改变,因此,不易扩充。同时,由于在插入或删除时,为保持原有次序(没有规定元素进栈顺序),平均需要移动一半(或近一半)元素,修改效率不高。 链接存储表示的存储空间一般在程序的运行过程中动态分配和释放,且只要存储器中还有空间,就不会产生存储溢出的问题。同时在插入和删除时不需要保持数据元素原来的物理顺序,只需要保持原来的逻辑顺序,因此不必移动数据,只需

2011-03-07 21:52:00 17034 2

转载 TCP/IP之TCP协议(3):流量控制(滑动窗口协议)

<br />一、流量控制(滑动窗口协议)<br /> 1、流量控制是管理两端的流量,以免会产生发送过块导致收端溢出,或者因收端处理太快而浪费时间的状态。用的是:滑动窗口,以字节为单位<br />2、窗口有3种动作:展开(右边向右),合拢(左边向右),收缩(右边向左)这三种动作受接收端的控制。<br />合拢:表示已经收到相应字节的确认了<br />展开:表示允许缓存发送更多的字节<br />收缩(非常不希望出现的,某些实现是禁止的):表示本来可以发送的,现在不能发送;但是如果收缩的是那些已经发出的,就会有问

2011-03-04 10:01:00 1704

原创 osi七层协议 tcp/ip协议 路由器功能

<br />全网互联的两个基本条件:  全网统一编址 + 路由算法<br />路由器的两个基本功能:     根据路由表发送报文到正确的目的地 + 维持和更新决定报文发送路径的路由表<br /> <br />osi: 从下到上:  (实际中不一定需要所有七层的功能,分第三层 高四层)<br />物理层 数据链路层 网络层 运输层 会话层 表示层 应用层<br />tcp/ip:<br /> <br />应用层                 应用协议和服务<br />运输层                

2011-03-03 22:18:00 1042

原创 集线器、交换机、路由器 之 你的女友小芳版

某一天,你到你女友小芳(暂定这个名字吧)就读的学校去找她,那么你的做法是什么呢:一、集线器的工作方式:你站到学校中庭,大喊一声“小芳,我来你找你了!” (广播)如果这个时候正好有别人也在大喊大叫,你就必须等他喊完了再喊。 (排队)如果你喊的时候不巧碰上另一个人跟你同时喊,那么你和他喊的内容都不能被听见。 (冲突)你喊的时候,是听不见别人说什么的,只有喊完了才开始竖起耳朵听。 (半双工工作方式、监听)果然,对面楼里传来了你女友的声音“你去死吧!” (响应)二、交换机的工作方式:你女友事先通知了你她的手机号码(

2011-03-03 16:59:00 3146

原创 一道IP组网题---- 子网掩码

<br /><br /><br />24位: 11111111 11111111 11111111 00000000        192.168.1.0 ~ 192.168.1.255<br />29位: 11111111 11111111 11111111 11111000         192.168.1.0 ~ 192.168.1.7<br />28位: 11111111 11111111 11111111 11110000         192.168.1.0 ~ 192.168.1.15<b

2011-03-03 16:22:00 3208

原创 给一个IP地址,如何划分为几个子网?

1、基本知识介绍1.1网络中的每一个主机或路由器至少有一个IP地址;在Internet中不允许有两个设备具有同样的IP地址;1.2IP地址采用分层结构;IP地址是由网络号(net ID)与主机号(host ID)两部分组成的。1.3  IP地址的分类IP地址长度为32位,点分十进制(dotted decimal)地址;采用x.x.x.x的格式来表示,每个x为8位,每个x的值为0~255(例如 202.113.29.119);根据不同的取值范围,IP地址可以分为五类;IP地址中的前5位用于标识IP地址的类别:

2011-03-02 21:46:00 63620 12

转载 signal处理机制

信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。<br />        信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。<br />        一、信号的基本概念<br />        本节先介绍信号的一些基本概念,然后给出一些基本的信号类型和信号对应的事件。基本概念对于理解和使

2011-03-02 17:17:00 882

转载 signal 各种操作

信号(signal)是一种进程间通信机制,它给应用程序提供一种异步的软件中断,使应用程序有机会接受其他程序活终端发送的命令(即信号)。应用程序收到信号后,有三种处理方式:忽略,默认,或捕捉。进程收到一个信号后,会检查对该信号的处理机制。如果是SIG_IGN,就忽略该信号;如果是SIG_DFT,则会采用系统默认的处理动作,通常是终止进程或忽略该信号;如果给该信号指定了一个处理函数(捕捉),则会中断当前进程正在执行的任务,转而去执行该信号的处理函数,返回后再继续执行被中断的任务。下面就来说说与信号有关的函数吧。

2011-03-02 17:16:00 7366

转载 数据结构试题

一.判断题 ( )1.某线性表采用顺序存储结构,元素长度为4,首地址为100,则下标为12的(第13个)元素的存储地址为148。 正确。第0个元素地址为100,则第i个元素地址为100+4*i,将12代入得148。( )2.在任何一种线性链表上都无法进行随机访问。 错误。比如只要知道顺序表首地址和每个数据元素所占存储单元的个数,就可以求出第i个数据元素的存储地址来,这也是顺序表具有按数据元素的序号随机存取的特点。( )3.顺序栈是一种规定了元素进栈顺序的栈。 错误。按

2011-03-02 16:47:00 972

原创 线性表的顺序储存及运算实现-------------顺序表

<br />//////////////////////////////////////////////////////////////////////////////////线性表的顺序储存及运算实现-------------顺序表#include <iostream>//#include <stdlib>using namespace std;#define MAXSIZE 100#define N 30#define M 40//若是其他的数据类型,直接

2011-03-01 16:50:00 975

原创 使用 shell 在多个文件中查找, 替换

// 使用 shell 在多个文件中查找find . -type f | xargs grep flash说明:找出前目录及其子目录下的文件中含有 flash 的文件//重点记录下 xargs 命令:xargs 在标准输入上取得参数列表、一行一个,再将他们以适当的大小组起来(由主机的 ARG_MAX 值决定)传给另一个命令,此命令在作为 xargs 的参数.ARG_MAX 值查看方法:getconf ARG_MAX////在多个文件中查找使用命令替换也可以完成grep flash $( find . -ty

2011-03-01 14:31:00 4939

原创 函数模板和类模板 模版特化

函数模板和类模板模版特化关键字: template , template 模板       模板(template)是一个将数据类型参化的工具,它提供了一种将代码与数据类相脱离的机制,即代码不受具体的数据类型的影响。模板分为函数模板和类模板两种。 (1)函数模板      函数模板是一种不说明某些参数的数据类型的函数。例如,下面定义了一个可对任何类型变量进行操作(求绝对值)的函数模板:1.         template    //或写成: template     函数参数的类型T2.         

2011-03-01 13:48:00 11016 1

原创 仿函数认识

<br />C++仿函数到底是什么呢?其实它就是一个能像函数一样工作的东西,它的主要作用将会在这篇文章中进行详细的介绍。<br />C++编程语言为我们带来了非常大的好处。不过即使是我们经常使用的功能也有很多比较高深的内容值得我们去深入的探讨。在这里我们将会为大家详细介绍一下C++仿函数的基本概念,方便大家对这一语言的解读。<br />C++仿函数这个词经常会出现在模板库里(比如 STL),那么什么是仿函数呢?<br />顾名思义:仿函数就是能像函数一样工作的东西,请原谅我用东西这样一个代词,下面我会慢慢解

2011-02-28 17:23:00 730

原创 模板类 与 类模板

用相同的类模板可以组建任何类型的对象集合。在传统C++中,可能有一个浮点数类或者一个整数类,如果使用类模板,可以定义一个对两者都适用的类number。类模板说明的一般形式是:template           //  template class                    //  class A{ //类说明体};template            //  template ::(形参表)//  T A::sum(){ //成员函数定义体 } template ::(形参表){ //

2011-02-28 16:16:00 677

原创 杂记,随时更新

不管是显示的类型转换还是隐式的类型转换,都有一个到转换结果类型的临时变量的产生:譬如:       int i = 1.2;    //实际的赋值过程可能是 int temp = 1.2; int i = temp;无符号变量和有符号变量之间的转换是其对应的内存地址二进制表示不变。hook机制发送消息

2011-02-25 16:26:00 573

转载 C语言中的位操作例子(将任一整数转换为二进制形式)

<br />将任一整数转换为二进制形式<br />*问题分析与算法设计<br />将十进制整数转换为二进制的方法很多,这里介绍的实现方法利用了C语言能够对位进行操作的特点。对于C语言来说,一个整数在计算机内就是以二进制的形式存储的,所以没有必要再将一个整数经过一系列的运算转换为二进制形式,只要将整数在内存中的二进制表示输出即可。<br />#include<stdio.h><br />void printb(int,int);<br />int main()<br />{<br />    int x;pr

2011-02-25 14:41:00 4348

转载 关于sizeof和strlen的区别

先看几个例子:char *str1="absde"; char str2[]="absde"; char str3[8]={'a',}; char ss[] = "0123456789";  首先说明一点,char类型占一个字节,所以sizeof(char)是1,这点要理解 str1是一个指针,只是指向了字符串"absde"而已。所以sizeof(str1)不是字符串占的空间也不是字符数组占的空间,而是一个字符型指针占的空间。所以sizeof(str1)=sizeof(char*)=4,在C/C++中一个指

2011-02-25 14:33:00 555

转载 面试题,进程中的两个fork

今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目:      给出如下C程序,在linux下使用gcc编译:1 #include "stdio.h" 2 #include "sys/types.h" 3 #include "unistd.h" 4  5  int main() 6 { 7     pid_t pid1;8     pid_t pid2; 9 10     pid1 = fork();11     pid2 = fork();1213     printf("pid

2011-02-25 14:28:00 1927 1

转载 linux的文件系统

<br />linux目录架构<br />/   根目录<br />/bin    常用的命令 binary file 的目錄<br />/boot   存放系统启动时必须读取的档案,包括核心 (kernel) 在内<br />     /boot/grub/menu.lst   GRUB设置<br />     /boot/vmlinuz   内核<br />     /boot/initrd     核心解壓縮所需 RAM Disk<br />/dev    系统周边设备    <br />/etc  

2011-02-25 14:13:00 452

转载 关于静态成员变量在类继承中的一个误区

     以前一直认为:静态成员变量是该类共有的,那么其派生类就一定要开辟一段新的内存来该存储派生类从基类中继承的静态成员变量。    正确的说法应该是:基类和其派生类 共享该基类的静态成员变量内存!    可以看下面的代码:#includeclass base{    int mx;public:    static int xxx;    static void fun(int x)    {        xxx=x;    }    base(int x):mx(x){}    friend std

2011-02-25 14:10:00 763

原创 自编 socket 通信示例

client和server均在本机。服务器端代码:#include #include #include #include #include #include #include #include #include #include #define SERVPORT 3333 /*服务器监听端口号 */#define BACKLOG 10 /* 最大同时连接请求数 */main(){ int sockfd,client_fd; /*sock_fd:监听socket;client_fd:数据传输socket */

2011-02-25 11:25:00 595

原创 Linux系统编程---socket编程(全+精)

1. 预备知识1.1. 网络字节序    我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分,那么如何定义网络数据流的地址呢?发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出,接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存,因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。    TCP/IP协议规定,网络数据流应采用大端字节序

2011-02-24 13:33:00 1249

转载 6个变态的C语言写的Hello World

<br />下面的六个程序片段主要完成这些事情:<br />1.输出Hello, World<br />2.混乱C语言的源代码(加密源代码,嘿嘿)<br />下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。<br />hello1.c<br />    #define _________ }<br />    #define ________ putchar<br />    #define _______ main<br />    #define _(a)

2011-02-23 17:57:00 564

转载 C/C++ struct位结构(位域)

从问题开始#includevoid main(){union{struct{unsigned short s1:3;unsigned short s2:3;unsigned short s3:3;}x;char c;}v;v.c=100;printf("%d/n",v.x.s3);}A:4 B:0 C:3 D:6答案是A但我在TURBO C中运行答案是1请问 是因为TURBO C 版本在原因而运行结果不一样吗?我用在TURBO C V2.0版本,能解释一下为甚么是4或1?而v.x.s1和v.x.s2的 值

2011-02-23 10:58:00 23974 2

原创 c/c++字节对齐

<br />在 相同的对齐方式下 ,结构体内部数据 定义的顺序不同 ,结构体整体占据内存空间也 不同 ,如下: <br />设结构体如下定义: <br />struct A <br />{ <br />     int      a; <br />     char    b; <br />     short c; <br />}; <br />结构体A中包含了4字节长度的int一个,1字节长度的char一个和2字节长度的short型数据一个。所以A用到的空间应该是7字节。但是因为编译器要对数据成员在空间

2011-02-22 16:10:00 829

转载 链表,队列,堆栈的区别

<br />链表,队列,堆栈的区别<br />1、栈是个有底的口袋,像袜子。<br />队列是没底的口袋,像通心粉。<br />所以:栈的特点是先进后出,队列的特点是先进先出。<br />2、主要区别是适用的地方不一样,   <br />  链表实际上可以认为是一种数据的物理组织形式,是用指针或对象的引用组织起的一种数据的存储方式.   <br />  队列和堆栈是一个更高层次的概念,其底层可以是用链表也可以是用数组来实现.   <br />  队列和堆栈的主要区别是进出的顺序不一样,   <br /> 

2011-02-21 09:39:00 13168

转载 POSIX多线程中的pthread_cond_wait() 函数 使用示例2个

 由于工作站软件的移植牵涉到这方面的内容, 搜一最近一直在学习Linux线程方面的知识!由于这本书上没有将条件变量的问题,所以不能理解的一个函数就是pthread_cond_wait().    今天终于有点明白了,赶快记下心得!    条件变量的结构为pthread_cond_t,函数pthread_cond_init()被用来初始化一个条件变量。它的原型为:   extern int pthread_cond_init __P ((pthread_cond_t *__cond,__const pthre

2011-02-18 17:54:00 3039

原创 thread 注意事项

1. 需要注意的是一个线程仅允许唯一的一个线程使用pthread_join()等待它的终止,并且被等待的线程应该处于可join状态,即非DETACHED状态。2.

2011-02-18 17:45:00 568

转载 互斥量、条件变量与pthread_cond_wait()函数的使用,详解

1. 首先pthread_cond_wait 的定义是这样的The pthread_cond_wait() and pthread_cond_timedwait() functions are used to block on a condition variable. They are called with mutex locked by the calling thread or undefined behaviour will result. These functions atomically r

2011-02-18 17:05:00 799

原创 C++:cctype中的字符函数

函数名称返回值isalnum()如果参数是字母数字,即字母或者数字,函数返回trueisalpha()如果参数是字母,函数返回trueisblank()如果参数是水平制表符或空格,函数返回trueiscntrl()如果参数是控制字符,函数返回trueisdigit()如果参数是数字(0-9),函数返回trueisgraph()如果参数是除空格之外的打印字符,函数返回trueislower()如果参数是小写字母,函数返回trueisprint()如果参数是打印字符(包括空格),函数返回trueispunct(

2011-02-16 09:18:00 1346

提示
确定要删除当前文章?
取消 删除