自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

转载 gdb ..

gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具。一般来说,GDB主要帮助你完成下面四个方面的功能:1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)3、当程序被停住时,可以检查此时你的程序中所发生的事。4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。一、普通命令(gdb)help:查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h(gdb)run:重.

2021-11-08 15:30:27 222

原创 端序问题分析

通信协议中的数据传输、数组的存储方式、数据的强制转换等这些都会牵涉到大小端问题。1、为什么会有大小端模式之分呢?在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。1个byte的存储不涉及端序,端序是字节之间,而不是bit之间。且地址不管是对于大小端工作的CPU来说都是一样的从小到大的地址增长。所以端序是指cpu读写内存时的高低顺序。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的int型。另外,对于位数大于8位

2021-09-09 09:30:22 168

转载 Hash

Jenkins hash算法, memcached使用了此算法,普遍的被凯源项目所使用,是很好的ahsh算法之一。Jenkins hash,可能是目前能看到的最好的hash算法之一,可以产生很好的分布,缺点是相比其他常见的hash算法更耗时。可以考虑用于hash表的open addressing实现上。如果想了解细节的话,可以去Bob Jenkins的站点看一看。http://burtleburtle.net/bob/hash/typedef unsigned long int u4;

2021-03-24 14:07:19 219

原创 Trex

1.环境准备OS选择和安装根据说明,trex支持常用的linux系统,本次使用的是ubuntu 16.04.1。虚拟机配置需要能上网(虚拟机桥接到真实电脑物理网卡上网,此部分不赘述)Trex环境安装 1、新建trex工作目录 :mkdir trex 2、进入trex工作目录 :cd trex 3、下载安装包 :wget --no-cachehttp://trex-tgn.cisco.com/trex/release/la...

2020-08-05 15:09:36 4660 5

原创 libmxml

xml解析文档https://www.cnblogs.com/liunianshiwei/p/6086577.html

2020-03-11 10:07:48 230

转载 Cjson

JSON概述  JSON: JavaScript 对象表示法( JavaScript Object Notation) 。是一种轻量级的数据交换格式。 它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式, 但是也使用了类似于C语言家族的习惯( 包括C、 C++、 C#、 Java、 JavaScript、 Perl、 Python等) 。这些特性使JSON成为理想的...

2020-03-10 22:29:03 212

原创 数据交换格式XML & JSON

XML和JSON可以带信息描述,他们叫自述式的结构化文档JSON 格式—— a:数据在名称|值对中b.数据由逗号分隔c.大括号保存对象d.中括号保存数组优点:1.具有自我描述性,易于阅读编写,也易于机器解析与生成2.使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,J...

2020-03-10 22:22:07 239

转载 gdb基础篇

但为了更深入全面的学习,有必要了解gdb这款强大的调试工具。1. gdb调试前准备gcc -g -o hello hello.c使用gcc编译时,一定要加上参数-g,不然生成的可执行文件hello不能调试,使用(gdb) file hello或gdb hello时,会报错:No symbol table is loaded. Use the "file" command.(这个...

2020-02-24 16:16:54 347

转载 字符串匹配

KMP是一种模式匹配算法,什么是模式匹配呢?就是,现有一个模式串(字符串),要在另一个主串中查找是否存在与模式串相等的子串(主串中任意连续字符组成的子序列)。该算法的用处广泛,是正则表达式的基础。例如,有一个字符串为"ababcabcacbab",我们想知道该字符串中有没有一个"abcac"的字符串,这就叫模式匹配。普通模式匹配算法经典的模式匹配,是让模式串的首字符从主串的首字符开...

2020-02-24 15:45:18 197

转载 八大排序算法

由此可见,排序算法尤为重要。以下介绍八大排序算法,都是从小到大排序。1. 插入排序i从1到n-1,每次将第i位的数插入到前面已排好序的序列中。插入的方法为:将i与i-1位置的数比较,i小则交换并i--,i大则停止插入。// 插入排序void InsertSort(int *num, int n, int start, int grep){ // 对第i个数...

2020-02-24 15:39:31 450

原创 gdb...

《用gdb查看内存/打印变量》格式: x /nfu参数说明:x 是 examine 的缩写n表示要显示的内存单元的个数f表示显示方式, 可取如下值x 按十六进制格式显示变量。d 按十进制格式显示变量。u 按十进制格式显示无符号整型。o 按八进制格式显示变量。t 按二进制格式显示变量。a 按十六进制格式显示变量。i 指令地址格式c 按字符格式显示变量...

2020-02-21 17:01:35 162

转载 C的面相对象实现

多态性是面向对象程序设计的一个重要特征,利用多态性可以设计和实现一个易于扩展的系统。顾名思义,多态的意思是多种形态,在C++程序设计中,多态指的是:具有不同功能的函数可以用同一个函数名,这样可以用一个函数名调用不同内容的函数。C++的多态分两种:静态多态性和动态多态性。1. C++中的函数重载和运算符重载实现的多态性就属于静态多态,在程序编译时系统就能决定调用的是哪个函数,因此静态多态...

2019-08-29 23:10:09 330

原创 学习资源搜集

libevent:https://blog.csdn.net/sparkliang/article/category/660506redis:http://www.redis.com.cn/redis-tutorialnginx:http://tengine.taobao.org/book/index.htmlLinux C API :https://wizardfor...

2019-08-14 22:07:01 165

转载 makefile多级目录递归

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/G_Caesar_/article/details/52353081先看一下make前后的目录结构对比makefile会自动生成需要的文件夹:各个模块下src目录下的obj、target目录各个模块下src/obj负责存...

2019-08-14 21:31:13 1140

转载 C 编程修养

©著作权归作者所有:来自51CTO博客作者haoel的原创作品,如需转载,请注明出处,否则将追究法律责任原文地址:https://blog.51cto.com/haoel/124713感谢haoel分享,转载学习了。-------------------------------------------------------------------------------------...

2019-08-14 14:25:41 101

转载 C编译过程

锲子我们在各自的电脑上写下代码,得明白我们代码究竟是如何产生的,不想了解1,0什么的,但这几个环节必须掌握吧。我们的代码会经过这4个环节,从而形成最终文件,c语言作为编译语言,用来向计算机发出指令。让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。预处理, 展开头文件/宏替换/去掉注释/条件编译(t...

2019-08-13 17:47:13 157

原创 C BuildError

记录C常见的build error,一些拼写错误就skip了1.error: expected ‘)’ before ‘*’ token这个一般出现在函数定义或申明的地方,重点检查是不是包含了函数中用到的变量类型的声明文件,或是变量类型是否写错了。2.conflicting declarationhas a previous declaration as这个错误可能是因为头文件没...

2019-08-10 16:38:13 674

原创 Vim

我们可以利用现有的脚本来配置,或是自己编写配置文件,这里主要讲解利用git上的脚本配置本地的vim插件,实现常用功能。1.cscopeThe plug-in: scope插件已经安装,cscope常用来快速跳转到相应的函数变量,但是在使用之前,需要建立某个文件下的所有依赖关系,然后应用才能跳转。find ./ -name "*.h" -o -name "*.hpp" -o...

2019-08-05 22:09:54 113

原创 C 宏处理

1. 宏可以像函数一样被定义#define min(x,y) ((x) <(y)?(x):(y)) 但是在实际使用时,只有当写上min(),必须加括号,min才会被作为宏展开,否则不做任何处理,参数必须加括号,防止展开错误。2.#和###符号把一个符号直接转换为字符串,#define ToSTRING(x) #xconst char *str = ToSTRING( tes...

2019-08-04 17:08:59 479

转载 libevent源码深度剖析二    Reactor模式

原文:https://blog.csdn.net/sparkliang/article/details/4957744前面讲到,整个libevent本身就是一个Reactor,因此本节将专门对Reactor模式进行必要的介绍,并列出libevnet中的几个重要组件和Reactor的对应关系,在后面的章节中可能还会提到本节介绍的基本概念。1 Reactor的事件处理机制首先来回想一下普...

2019-07-21 21:42:31 110

转载 libevent源码深度剖析一 入门简介

原文:https://blog.csdn.net/sparkliang/article/details/49576671 前言Libevent是一个轻量级的开源高性能网络库,使用者众多,研究者更甚,相关文章也不少。写这一系列文章的用意在于,一则分享心得;二则对libevent代码和设计思想做系统的、更深层次的分析,写出来,也可供后来者参考。2 Libevent简介上来当然要先...

2019-07-21 21:35:15 118

原创 单链表快速排序

快排最核心的思想就是划分,确定一个枢轴元素(pivot),每一趟划分的目的就是把待排序列分为两部分,前一部分比枢轴小(序列A),后一部分比枢轴大(序列B)。经过一趟划分之后序列变为:{A} pivot {B}。以下是具体步骤:1、确定每一次划分的枢轴元素为当前待排序列的头节点。2、设置Slow和Fast两个游标,Slow指向序列A中的最后一个元素,初始化为枢轴本身(待排序列头节点)。让Fa

2017-03-13 11:00:05 312

原创 C++虚继承

C++中虚拟继承的概念为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。class派生类名:virtual 继承方式  基类名virtual是关键字,声明该基类为

2017-03-12 21:19:32 248

原创 C++拷贝构造函数

1.什么是拷贝构造函数 注意:这两个构造函数和我们自己定义的构造函数都是构成重载的关系,都是用来初始化我们创建的对象的,构成重载,一个执行都不会再执行另外的。不要觉得拷贝构造就不是构造函数。 当用一个同类对象初始化另一个一个同类的新对象时,调用的自然是拷贝构造函数。一个类如果没有定义拷贝构造函数,编译器自动会产生一个拷贝构造函数,内容是逐个复制对应的成员。    这一般能满

2017-03-12 21:17:52 231

原创 C++构造析构

1.构造函数-注意,面向对象的思想都是针对编译器来说的,由编译器为我们翻译成相应的程序,机器只能识别其自己的机器指令。-创建每一个对象时会自动调用一个成员函数,称为构造函数,也就是说每次定义一个对象时都会自动的默认运行这个函数,不写的话系统会自动的生成一个什么都不做的无参构造函数。函数名就使用类名,无返回类型。 -在类中的函数支持重载,就是说同名的函数会根据参数的不同编译器自动调用

2017-03-12 21:16:36 319

原创 C++虚函数实现原理

C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。1.虚函数表对C++ 了解的

2017-03-12 21:15:24 220

原创 C++多态的实现

1.多态的概念可以理解为事物存在的多种体现形态,对各种对象发出同一种指令,各个对象能根据自身的情况作出相应的回应。 2.多态的实现条件存在继承,父子类之间的关系;存在重写;父类指针或引用指向子类对象,且调用重写函数。 3.三个概念重载:同一个类中,就是函数的作用域要相同;函数名字相同,参数不同;Virtual关键字可有可无,只要满足重载的要求即可了

2017-03-12 21:13:47 345

原创 C++强制类型转换

1.C类型转换C方式强制类型转换存在的问题:任意类型之间都可以进行转换,编译器很难判断其正确性在原码中无法快速定位所有使用强制类型转换的语句在程序设计中强制类型转换是不被推荐的,与goto语句一样,应该避免。static_cast   reinterpret_cast   const_cast   reinterpret_cast   static_cast 2.C++

2017-03-12 21:12:00 173

转载 C++ static关键字

1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#include void fn();static int n; //定义静态全局变量void main(){   n=20;   cout   fn();}

2017-03-12 21:05:16 140

转载 C++ const关键字

const是一个C++语言的限定符,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。1. 修饰常量用const修饰的变量是不可变的,以下两种定义形式在本质上是一样的:const int a = 10;int const a = 10;2.

2017-03-12 19:46:13 154

原创 根据二叉树 前序和中序 重建原二叉树

#include #include using namespace std;  struct TreeNode {      int val;      TreeNode *left;      TreeNode *right;            TreeNode(int x) : val(x), left(NULL), righ

2017-01-09 14:47:59 241

原创 Git Usage

一 安装: sudo apt-get install git二 配置github远端仓库ssh key:1. 创建本地 ssh : ssh-keygen -t rsa -C "Github 的注册邮箱"2. 在 Github 中添加这个 sshkey :复制 C:\Documents and Settings\Administrator\.ssh\id_rsa.pub 文件...

2017-01-08 22:47:52 263

原创 翻转链表

#include #include #include using namespace std;struct ListNode{int val;struct ListNode *next;ListNode(int x):val(x),next(NULL){}};/*循环方式翻转链表*/ class Solut

2017-01-08 22:44:49 145

原创 替换字符串中空格为%20

/*题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。*/#include #include #include #include using namespace std;/*方法一:创建足够长的新存储空间

2017-01-08 21:00:10 218

原创 行列均递增的二维数组元素查找

问题描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:每次都是从右上角的那个数开始比较,如果相等则标记退出;如果右上角大于 目标值则去除最后一列 ,因为最后一列的值肯定比右上角还要大;如果小于,去除最上面一行,因为右上角已经是这一行的最

2017-01-08 00:37:57 430

转载 linux命令 kill

Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令是通过向进程发送指定的信号来结束相应进程的。在默

2016-10-28 15:40:53 251

空空如也

空空如也

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

TA关注的人

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