- 博客(42)
- 收藏
- 关注
转载 排序算法详解
转至http://blog.youkuaiyun.com/hguisu/article/details/7776068排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、
2017-10-03 12:14:37
333
转载 AVL树
AVL树的介绍AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。它是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于"二叉查找树",它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 (关于树的高度等基本概念,请参考"二叉查找树(一)之 图文解析 和 C语言的实现 ")上面的两张图片,左边的是AVL树,
2017-09-24 10:31:15
306
转载 单列模式
单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。 单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做
2017-09-13 21:05:18
242
原创 柔性数组
(1)用途:满足需要变长度的结构体;(2)用法:在一个结构体的最后,申明一个长度为0的数组,就可以使得这个结构体是可变长的。对编译器来说,此时的长度为0的数组并不占用空间(因为数组名本身不占空间,它只是一个偏移量。)数组名这个符号本身代表了一个不可以修改的地址常量(数组名永远不可能是指针)但对于这个数组的大小,我们可以进行动态分配。对于0长数组的这个特点,很容易构造出变成结构体,如
2017-09-13 16:32:36
294
原创 静态链接库与动态链接库的区别
程序的静态连接还是动态连接是根据编译器的连接参数指定的。所谓静态链接就是在编译链接时直接将需要的执行代码拷贝到调用处,优点就是在程序发布的时候就不需要的依赖库,也就是不再需要带着库一块发布,程序可以独立执行,但是体积可能会相对大一些。(所谓库就是一些功能代码经过编译连接后的可执行形式。)所谓动态链接就是在编译的时候不直接拷贝可执行代码,而是通过记录一系列符号和参数,
2017-09-06 09:50:36
314
原创 atoi()函数的实现
atoi():int atoi(const char *str);功能:把字符串转换为整型数;以下是代码实现:#include #include #include using namespace std;int atoi_my(char *s1){ int s=0; bool flag = false; while(*s1 == '
2017-08-28 16:17:31
235
原创 进程间通信之管道
一:管道1.无名管道特点: (1)只能用于有关系的进程通信(父子进程或者兄弟进程)(2)它是一个半双工的通信模式,具有固定的读端和写断;(3)它是一个特殊文件,不属于其他任何文件系统,并且只存在于内存;2.有名管道特点:(1)可以使互不相关的俩个进程之间实现彼此的通信;(2)可以通过路径指出,并且在文件系统中为可见的;(3)严格的遵循先进先出的原则,不支持lseek
2017-08-27 16:51:08
266
原创 this指针的理解
1.一个对象的this指针并不是对象本身的一部分,不会一影响sizeof(对象)的结果。this作用域是在类的内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动的将对象的本身的地址作为一个隐含参数传递给函数。2.指针的使用(1)在类的非静态函数中返回类对象的本身(return *this);(2)当参数与成员变量名相同时,(this->n = n)不能写成n=n;
2017-08-24 18:42:36
236
原创 C++的重载,覆盖以及隐藏
成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是: (1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)参数相同; (4)基类函数必须有 virtual 关键字。这个时候派生类覆盖基类函数;#includ
2017-08-17 16:09:03
206
原创 const关键字的使用
一:定义常量(a)const修饰常量,含义是const修饰的类型为TYPE的变量value是不可变的:TYPE const valuename = value;const TYPE valuename = value; (b)将const改为外部链接,作用扩大到全局,编译的时候会分配内存,并且可以不进行初始化,仅仅作为声明:extend const int valuename
2017-08-16 13:27:43
275
转载 一个类的六个默认函数
类的6个默认的成员函数包括:构造函数、析构函数、拷贝构造函数、赋值运算符重载函数、取地址操作符重载、const修饰的取地址操作符重载。这篇文章重点解释前四个。(一)构造函数构造函数,顾名思义,为对象分配空间,进行初始化。它是一种特殊的成员函数,具有以下特点:1.函数名与类名相同。2.无返回值。3.构造对象的时候系统会自动调用构
2017-08-14 20:11:03
429
原创 C语言移位操作符
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。位移位运算符分为左移和右移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。 位移位运算符的运算对象、运算规则与结果、结合性如表2-16所示。 移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。如果是左移,则规定补入的数全部是0;如果是右移,还与被移位的数据是否
2017-08-10 09:00:20
379
转载 vim 快捷鍵
Ubuntu中的许多操作在终端(Terminal)中十分的快捷,记住一些快捷键的操作更得心应手。在Ubuntu中打开终端的快捷键是Ctrl+Alt+T。其他的一些常用的快捷键如下:快捷键功能Tab自动补全Ctrl+a光标移动到开始位置Ctrl+e光标移动到最末尾Ctrl+k
2017-08-06 15:27:28
530
原创 getuid() , geteuid()
最近剖析meumcached的代码遇到这俩个函数:geteuid():返回有效用户的ID。getuid():返回实际用户的ID。有效用户ID(EUID)是你最初执行程序时所用的ID 表示该ID是程序的所有者 真实用户ID(UID)是程序执行过程中采用的ID 该ID表明当前运行位置程序的执行者 举个例子 程序myprogram的
2017-08-04 11:43:34
2264
原创 memcached 的安装以及简单使用
memcached 的安装memcached 的安装比较简单,这里稍加说明。memcached 支持许多平台。LinuxFreeBSD• Solaris (memcached 1.2.5 以上版本)• Mac OS X另外也能安装在 Windows 上。这里使用 Linux 进行说明。••memcached 的安装运行 memcached 需要本文开头介
2017-08-02 10:28:23
317
转载 tcp 与 udp
很全面的区别与定义。值得借鉴;TCP UDPTCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少; 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确性,UDP可能丢包 6.TCP保证数据顺序,UDP不保证 UDP应用场景: 1.面向数据报方式
2017-07-30 15:43:36
217
原创 进程通信(ipc)
进程创建一次返回了俩次,父进程返回子进程id,子进程成功返回01.管道 pipe#include#include#include#include #include#includeextern int errno;int main(){ if(access("write_fifo", F_OK) == -1) {
2017-07-28 11:19:25
190
原创 字节对齐以及sizeof(),strlen()
1.字节对齐问题1,基本数据类型的自身对齐值: 1字节:char型 2字节:short型 4字节:int,float类型 8字节:doublel类型2、程序的指定对齐值:即#pragma pack(value)时的指定对齐值value3、自定义类型的自身对齐值:结构体或类的成员中自身对齐值最大的值4、自定义类型的有效对齐值:自
2017-07-18 19:26:26
429
原创 大,小端问题
大端:高位存于低地址,低位存于高地址;小端:高位存于高地址,低位存于低地址;例如:0x123456 从左到右为高--->低;例如:a[0]=0x39;a[1]=0x38; 按小端存放为0x390x38; 读出来即为3839; 大端时为3938;注意:不论大端还是小端,读出来时都是从高到低;
2017-07-18 18:13:06
188
原创 C++中const的不同位置的用法
由于本人对于const的用法也是老是迷糊,所以总结了这些希望可以帮到和我一样的朋友;一、 const与define. 两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内联函数(Inline)。const和define定义的常量可以放在头文件里面。(小
2017-06-24 17:04:02
7651
1
原创 Linux 常用命令
1、cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:[plain] view plain copy print?cd /root/Docements # 切换到目录/root/Docements cd ./path # 切换
2017-06-20 13:27:20
1968
原创 C++位运算符
1.按位非~一元运算符,是对其运算数的每一位取反,例如:数字42,二进制为00101010,则~00101010为11010101.2.按位与&俩个运算符都是1则为1,其他都为0;3.按位或 |任何一个运算符为1,结果为1;4.按位异或只有再俩个比较位不同是,结果是1,否则是0;5.右移 num>>value num指要移位值,value是移动的位数;就是说
2017-06-20 12:45:30
353
转载 C11的标准特性
C11标准是C语言标准的第三版(2011年由ISO/IEC发布),前一个标准版本是C99标准。相比C99,C11有哪些变化呢——1、 对齐处理alignof(T)返回T的对齐方式,aligned_alloc()以指定字节和对齐方式分配内存,头文件定义了这些内容。2、 _Noreturn_Noreturn是个函数修饰符,位置在函数返回类型的前面,声明函数无返回值,有点类似于gcc的_
2017-06-20 09:32:37
11511
转载 define与const的区别
C++中不但可以用define定义常量还可以用const定义常量,它们的区别如下:用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常量的名字联系起来,define所定义的宏变量在预处理的时候进行替换,在程序中使用到该常量的地方都要进行拷贝替换;用const float MAX = 255; 定义的常量有类型名
2017-06-03 15:40:29
438
原创 二叉树的实现
#include"../utili.h"typedef struct BinTreeNode//定义结点{ ElemType data; BinTreeNode *leftChild; BinTreeNode *rightChild;}BinTreeNode;typedef struct BinTree//定义树{ Bin
2017-06-03 15:07:21
190
转载 智能指针
C++ 智能指针详解 一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_p
2017-05-31 21:02:12
188
原创 队列的实现
1 #include"../utili.h" 2 3 typedef struct Queue 4 { 5 ElemType *base; 6 int front; 7 int rear; 8 }Queue; 9 10 void init_queue(Queue *Q); 11 void enqueue(Queu
2017-05-25 16:47:22
263
原创 栈的实现
1 #include"../utili.h" 2 3 typedef struct Stack 4 { 5 ElemType *base; 6 size_t capacity; 7 int top; 8 }Stack; 9 10 void init_stack(Stack *st); 11 void push(St
2017-05-24 16:36:12
206
原创 list
1 #include"../utili.h" 2 3 typedef struct ListNode 4 { 5 ElemType data; 6 struct ListNode *next; 7 }ListNode; 8 9 10 typedef ListNode* List; 11 /////////////////
2017-05-24 15:42:47
174
转载 Linux <getopt>
命令行参数解析函数 —— getopt()getopt()函数声明如下:#include int getopt(int argc, char * const argv[], const char *optstring);extern char *optarg;extern int optind, opterr, optopt;该函数的ar
2017-05-19 19:48:08
263
原创 IO复用
轮询机制1.select()系统调用FD_ZERO();FD_ISSET();FD_SET();FD_CLR();四个函数返回值:-1出错;0 超时;其他:正常; #include"../utili.h" 2 #include 3 4 #define MAX_CLIENT_SIZE 5 5 int main() 6 { 7 int so
2017-05-06 16:59:08
167
转载 Http状态码详解
HTTP状态码状态码的职责是当客户端向服务器发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。状态码的类别状态码类别说明1XX信息性状态码(Information)接收的请求正在处理2XX成功状态码(Success)请求正常处理完毕3XX重定向状态码(Redi
2017-04-27 19:57:26
771
转载 http协议
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990
2017-04-27 19:42:12
221
原创 顺序表的实现以及功能;
1 #include"utili.h" 2 3 typedef struct SeqList 4 { 5 ElemType *base; 6 size_t capacity; 7 size_t size; 8 }SeqList; 9 //////////////////////////////////////////////
2017-04-13 21:15:34
452
原创 斐波那契的递归和非递归算法实现
递归算法int Fib(int n) { if(n==1 || n==2) return 1; else return Fib(n-1)+Fib(n-2); }非递归算法int Fib(int n) { if(n==1 || n==2) return 1;
2017-04-04 18:37:32
485
转载 malloc /free 与 new/delete 的区别
1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。1.2 voi
2017-03-29 16:08:21
155
原创 注释转换
利用状态机机制将C注释转换为C++注释;1 #include"utili.h" 2 3 extern "C" int ConvertComment(FILE *inputfile, FILE *outputfile); 4 5 typedef enum 6 { 7 NO_COMMENT_STATE, 8 C_COMMENT_STAT
2017-03-29 15:15:18
185
原创 排序算法
#include 2 #include 3 4 void sort1(int *a,int n);//插入排序 5 void sort3(int *a,int n);//冒泡算法 6 void sort4(int *a,int n);//选择排序 7 void QuickSort(int *a,int left,int right);//快速排序 8 v
2017-03-28 20:07:02
171
原创 多项式相加
利用链表实现多项式的加,减,乘;#ifndef _POLYN_H#define _POLYN_H#include#includeusing namespace std;typedef struct PolynNode{ float coef; int expn; struct PolynNode *link;}PolynNode;typedef
2017-03-23 13:19:15
448
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人