自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

如丧

踮起脚尖就更接近阳光

  • 博客(57)
  • 资源 (6)
  • 收藏
  • 关注

转载 二叉树的左旋和右旋

树的旋转,分为左旋和右旋,以下借助图来做形象的解释和介绍:1.左旋(右子为轴,当前结点左旋)如上图所示:当在某个结点pivot上,做左旋操作时,我们假设它的右孩子y不是NIL[T],pivot可以为树内任意右孩子而不是NIL[T]的结点。左旋以pivot到y之间的链为“支轴”进行,它使y成为该孩子树新的根,而y的左孩子b则成为pivot的右孩子。来看算法导论对此操作的算法实

2015-07-26 16:55:21 2131

转载 纸上谈兵: 树, 二叉树, 二叉搜索树

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 树的特征和定义树(Tree)是元素的集合。我们先以比较直观的方式介绍树。下面的数据结构是一个树:树有多个节点(node),用以储存元素。某些节点之间存在一定的关系,用连线表示,连线称为边(edge)。边的上端节点称为父节点,下端称为子节点。树像是一个不断分叉的树

2015-07-25 15:22:25 362

转载 typedef(自定义数据类型)与#define(宏定义)用法比较(前者定义指针比define好用)---(转载)

不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别

2015-07-24 22:04:43 3947

转载 C语言的inline

C语言的inline转以前我用Docbook写的一篇关于C语言inline关键字使用的文章。唉,要是能用docbook直接写Blog就好了。用得越多发现Docbook这个东西真是越好用啊~~   本文介绍了GCC和C99标准中inline使用上的不同之处。inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(D

2015-07-24 21:45:40 426

转载 C语言中内联函数的作用 inline

C语言中内联函数到底有什么作用?试想一下,每当我们在假设就在主函数中调用另外一个函数的时候,那么这个函数就要入栈或者出栈,比如说下面的一个例子: 点击(此处)折叠或打开Void myprint(){Printf("%d",3);}Void main(){

2015-07-24 21:42:20 11965 3

转载 Hash算法冲突解决方法分析

就不自己写了,直接贴下吧看了ConcurrentHashMap的实现, 使用的是拉链法.虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的。当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是 哈希技

2015-07-23 20:41:40 397

转载 程序在内存中的分布

BSS段:(bsssegment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文BlockStarted by Symbol的简称。BSS段属于静态内存分配。数据段:数据段(datasegment)通常是指用来存放程序中 已初始化的全局变量的一块内存区域。数据段属于静态内存分配。代码段:代码段(codesegment/text segment)通常

2015-07-23 17:35:50 1586

转载 阿里笔试题

1、 堆和栈的区别?答:1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。        2、堆区(heap) 一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回收   。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。         3、栈是向下增长的,堆是向上增长的。(可以参考

2015-07-22 20:29:16 589 1

转载 malloc/free与new/delete的区别

相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不

2015-07-22 20:26:17 353

转载 为什么需要htons(), ntohl(), ntohs(),htons() 函数

为什么需要htons(), ntohl(), ntohs(),htons() 函数:   在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题。这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数。网络字节顺序与本地字节顺序之间的转换函数:      htonl()--"Host to Network Long"   

2015-07-22 20:16:24 1206

转载 Linux Socket编程(不限Linux)

话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。转自:http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服

2015-07-17 10:30:28 318

转载 TCP通信的三次握手和四次撒手的详细流程(顿悟)

TCP(Transmission Control Protocol) 传输控制协议三次握手TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(ur

2015-07-17 10:16:24 573

转载 TCP协议中的三次握手和四次挥手(图解)

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:【注意】中断连接端可以是Cl

2015-07-17 01:30:27 441

转载 Cache和Buffer的区别

1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而  Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能。    Cache并不是缓存文件的,而是缓存块的(块是I/O读写最小的单元);Cache

2015-07-16 23:53:53 438

转载 网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO

转自:http://blog.chinaunix.net/uid-28458801-id-4464639.html同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-

2015-07-16 23:47:29 575

转载 IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)

转自:http://blog.csdn.net/historyasamirror/article/details/5778378当你发现自己最受欢迎的一篇blog其实大错特错时,这绝对不是一件让人愉悦的事。《 IO - 同步,异步,阻塞,非阻塞》是我在开始学习epoll和libevent的时候写的,主要的思路来自于文中的那篇link。写完之后发现很多人都很喜欢,我还是非常开心的,也说明

2015-07-16 23:44:31 311

转载 extern与头文件(*.h)的区别和联系 和学习体会

原文网址为:http://lpy999.blog.163.com/blog/static/117372061201182051413310/个人认为有一些道理:所以转过来学习了。用#include可以包含其他头文件中变量、函数的声明,为什么还要extern关键字?        如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include (xxx.h包含了a

2015-07-14 10:50:39 1123

转载 C++ static关键字详细应用指南

C++编程语言发展至今已经历经20年的时间。作为一个编程语言,历经这么长时间仍然能在开发领域中占据着重要的地位,依靠于其强大的功能。在这里我们就为大家详细介绍一下C++ static关键字的使用方法,让大家进一步对这一语言有一个深入的解读。1、静态全局变量在全局变量前,加上C++ static关键字,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:Exampl

2015-07-12 14:25:44 454

转载 探索C++的秘密之详解extern

时常在cpp的代码之中看到这样的代码:#ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一

2015-07-12 14:24:56 306

转载 读陈浩的《C语言结构体里的成员数组和指针》总结,零长度数组

原文链接:C语言结构体里的成员数组和指针复制如下:单看这文章的标题,你可能会觉得好像没什么意思。你先别下这个结论,相信这篇文章会对你理解C语言有帮助。这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接。微博截图如下。我觉得好多人对这段代码的理解还不够深入,所以写下了这篇文章。为了方便你把代码copy过去编译和调试,我把代码列在下面:

2015-07-11 23:40:30 724

转载 Linux进程运行状态图

进程是一个动态的实体,所以他是有生命的。从创建到消亡,是一个进程的整个生命周期。在这个周期中,进程可能会经历各种不同的状态。一般来说,所有进程都要经历以下的3个状态:就绪态。指进程已经获得所有所需的其他资源,正在申请处理处理器资源,准备开始执行。这种情况下,称进程处于就绪态。阻塞态。指进程因为需要等待所需资源而放弃处理器,或者进程本不拥有处理器,且其他资源也没有满足,从而即使得到处理器也不

2015-07-11 18:02:27 3924

转载 C++拷贝构造函数详解

一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyint a = 100;  int b = a;   而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。

2015-07-11 16:48:58 322

转载 C++中的空类,默认产生哪些类成员函数?

答:class Empty{  public:      Empty(); // 缺省构造函数      Empty( const Empty& ); // 拷贝构造函数      ~Empty(); // 析构函数       Empty& operator=( const Empty& ); // 赋值运算符       Empty* operator&();

2015-07-11 16:47:11 454

转载 const与#define的区别

const        const 是c++中的修饰符。  c++中常用来定义常量,修饰左值。#define       宏定义语句, 在预处理阶段直接做文本替换,不做类型检查。它们之间的最大区别:1.  对于const 变量,系统只给了一个相应的内存地址,而#define则是给出了一个立即数。因为const变量是存放在内存的静态区域中,所以在程序运行过程

2015-07-11 15:27:43 346

转载 深入理解C++的const变量

有这样一段毫无意义的C++代码:[cpp] view plaincopy#include     #define AA 0x44    extern const int g_const_a = 0x5555;   int g_b;  int g_c = 0x55aa;    int function(void)  

2015-07-11 11:00:46 625

转载 * linux下编译,链接,运行,汇编程序

当前使用的操作系统:ubuntu11.10汇编程序由定义好的段构成,每个段都有不同的目的,三个最常用的段:    1)data 段            汇编程序 data(数据)段是可选的。            数据段声明带有初始值的数据元素,这些数据元素用作汇编程序的变量。                   2)bss 段        

2015-07-11 11:00:06 676

转载 如何用C语言封装 C++的类,在 C里面使用

本文给出了一种方法。基本思想是,写一个 wrapper文件,把 C++类封装起来,对外只提供C语言的接口,和 C++i相关的都在  wrapper的实现文件里实现。1. apple.h[cpp] view plaincopyprint?   #ifndef __APPLE_H__  #define __APPLE_H__  

2015-07-11 10:56:17 860

转载 snprintf函数用法

int snprintf(char *restrict buf, size_t n, const char * restrict  format, ...);函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 的话,将不会溢出。函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。Result1(推荐的用法)#i

2015-07-11 10:55:25 350

转载 C中如何调用C++函数

Linux C调用C++库转自:http://blog.linuxgem.org/tzc/show/551.html调用C++函数库,一般不能直接调用,需要将C++库转换成C接口输出,方可以使用C调用将 C++ 函数声明为``extern "C"''(在你的 C++ 代码里做这个声明),然后调用它(在你的 C 或者 C++ 代码里调用)。例如:// C++ code:ext

2015-07-11 10:54:21 410

转载 sprintf函数的用法

sprintf() 格式化输出函数(图形)功能: 函数sprintf()用来作格式化的输出。用法: 此函数调用方式为int sprintf(char *string,char *format,arg_list);说明: 函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用outtextxy()函数将串

2015-07-11 10:52:18 727

转载 C语言itoa()函数和atoi()函数详解(整数转字符C实现)

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。1.int/float to string/array:C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。● itoa():将整型值转换为字符串。● ltoa():将长整型值转换为字符串。● ultoa():将

2015-07-11 10:48:18 730

转载 【整理】Linux内核中的atoi,itoa等函数

对于普通应用程序,可以通过包含头文件stdlib.h和stdio.h,string.h等,然后调用需要的itoa(),atoi()等函数,但是对于Linux内核来说,无法使用那些C库中的函数。对此Linux内核里有了相应的实现:对于atoi()用simple_strtol() ,simple_strtoul()等函数替代;对于itoa(),用snprintf()。

2015-07-11 10:46:42 791

转载 C语言中的sizeof

在CU的C/C++版看到一个例子:http://bbs.chinaunix.net/thread-3621056-1-1.html#include stdio.h>struct A{        char a;        char b;        int c[0];};struct B{

2015-07-11 10:45:44 618

转载 driver: linux2.6 内核模块导出函数实例(EXPORT_SYMBOL)

内核版本:2.6.38-11-generic    内核自己都大量利用内核符号表导出函数,那么应该导出呢,ldd3上面说只需要EXPORT_SYMBOL一类的宏导出即可,结果试了很久都不行,最后查看文档,算是明白一点了。    对于导出符号表,内核文档给出了三种解决方案,见尾部,现在忽略。    现在有两个模块,a模块导出函数myprint,b模块使用该函数,想象一下如果a

2015-07-11 10:44:46 438

转载 Linux内核导出符号宏定义EXPORT_SYMBOL的源码分析

源代码:…….#ifndef MODULE_SYMBOL_PREFIX#define MODULE_SYMBOL_PREFIX ""#endif…….struct kernel_symbol       //内核符号结构{       unsignedlong value;  //该符号在内存地址中的地址      

2015-07-11 10:43:22 401

转载 C++面试之GetMemory问题

题目一:[cpp] view plaincopyvoid GetMemory( char *p )  {   p = (char *) malloc( 100 );  }    void Test( void )   {   char *str = NULL;   GetMemory( str );    

2015-07-11 10:13:25 303

转载 struct和typedef struct彻底明白了

struct和typedef struct分三块来讲述:  1 首先://注意在C和C++里不同    在C中定义一个结构体类型要用typedef:    typedef struct Student    {    int a;    }Stu;    于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student s

2015-07-10 18:05:35 350

转载 下列程序运行时会崩溃,请找出错误并改正,并且说明原因

下列程序运行时会崩溃,请找出错误并改正,并且说明原因。#include stdio.h> #include malloc.h> typedef struct{     TNode* left;     TNode* right;     int value; } TNode; TNode* root=NULL; void append(int N

2015-07-10 18:00:03 1031

转载 为什么(i++)不能做左值,而(++i)可以

算下来已经很久以前了,大概有那么几个星期了吧。看到了帖子上有人问为什么下面的语句的对错原因int i = 0;int *ip = &(i++); //错误int *ip = &(++i); //正确看到上面的语句,当时以为两个都是是对的啊,可是当我用VS2010的编译器试了试之后,才发现第一个取地址确实是错误的语句,具体的提示是:error C2102: “&”

2015-07-08 18:37:18 611

转载 ++i在C、C++中是不是左值?

前些天写blog左值与右值(C++学习)时,已经确认在C++中,++i 是左值。可是,今天在newsmth的C语言版上看到一个相关的问题。发现在C语言中,++i不是左值。例子一个很简单的例子:int main(){ int i = 0; ++i = 5; return 0;}保存成 hello.c ,分别用 gcc、clang、cl、

2015-07-08 18:34:13 702

Sourceinsight.rar

开发者看各种代码工具的不二之选,此为windos版本,Linux下有可配置

2014-10-04

SuperDelete.em

此文件可以作为Source Insight的插件,可以有删除整个汉字的功能,方便开发者写代码,非常好用,提高效率

2014-10-04

SuperBackSpace.em

此文件可以作为Source Insight的插件,可以有删除整个汉字的功能,方便开发者写代码,非常好用

2014-10-04

Quicker.em

此文件可以作为Source Insight的插件,可以有自动补全的功能,方便开发者写代码,非常好用,提高效率

2014-10-04

BryanCommentsV1.0.em

此文件可以作为Source Insight的插件,可以有自动注释的功能,方便开发者写代码

2014-10-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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