自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hustyangju的足迹

Stay Hungry,Stay Foolish

转载 ipcs余ipcrm

ipcs 命令 用途 报告进程间通信设施状态。 语法 ipcs [ -m] [ -q] [ -s] [ -S] [ -P] [ -l] [ -a | -b -c -o -p -t] [ -T] [ -C CoreFile] [ -N Kernel ] 描述 ipcs...

2015-09-13 22:03:23 461 0

转载 netstate 与 tcpdump

netstat 常见参数 -a (all)显示所有选项,默认不显示LISTEN相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字。 -l 仅列出有在 Listen (监听) 的服務状态 -p 显...

2015-09-13 22:01:46 1440 0

转载 C++中智能指针的设计和使用

原文地址:http://blog.csdn.net/hackbuteer1/article/details/7561235      智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技...

2015-09-12 17:00:03 598 0

原创 mem系列函数(memset memcpy memmove) 和str系列函数(strlen strcpy strcmp strcat strstr strtok)

void *memset(void *s, int ch, size_t n);  函数解释:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。  memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的...

2015-09-12 11:22:57 1954 0

转载 linux sed 命令

1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你...

2015-09-09 14:39:37 513 0

原创 shell脚本 for循环实现文件和目录遍历

一个for循环实现一个目录下的文件和目录遍历,很实用[root@localhost shell_order]# cat test27.sh #!/bin/bash #print the directory and file for file in /home/hustyangju/* do i...

2015-09-08 09:54:00 33081 0

转载 linux wc 命令

Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文...

2015-09-07 19:39:32 682 0

转载 拓扑排序

对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称...

2015-09-06 16:47:33 356 0

转载 linux中fork()函数详解(原创!!实例讲解)

一、fork入门知识      一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。     一个进程调用fork()函数后,系统先给新的进程...

2015-09-06 16:44:48 463 0

原创 带‘.‘和’*‘的字符串匹配

’.‘代表一个任意字符 a’*‘代表0~n个a 测试两个字符串是否匹配 #include #include using namespace std; bool matchCore(const char* str,const char* pattern) { if(*str==&#...

2015-09-01 17:16:27 439 0

原创 从编译器角度分析C语言中数组名和指针的区别

数组名和指针是两个往往很容易让人们混淆的概念, 很多人以为数组名就是一个指针, 也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变 例如你可以写出下面这样的代码: int *p; p++; 却不能写这样的代码: int a[]...

2015-08-25 10:15:30 735 0

转载 grep用法详解 grep与正则表达式

正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串。vim、grep、awk 、sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大;在以前上班的公司里,由于公司是基于web的服务型网站(nginx),对正则的需求比 较大,所以也花了点时间研...

2015-08-20 09:34:01 381 0

转载 linux 串口编程

.串口概述  常见数据通信方式:并行通信,串行通信  UART的主要操作:    >数据发送及接受    >产生中断    >产生波特率    >Loopback模式     >红外模式    >自动流控模式    串口参数的配置主要包括:波特...

2015-08-10 16:34:44 614 0

原创 mysql中select distinct的用法

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只能返回它的目标字段,而无法返回其它字段,经过实验,有如下方法可以实...

2015-08-06 09:41:56 1342 0

转载 BloomFilter——大规模数据处理利器

loom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。   一. 实例    为了说明Bloom Filter存在的重要意义,举一个实例:   假设要你写一...

2015-07-23 15:59:43 369 0

原创 使用bitmap处理海量数据

bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。  适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下 基本原理及要点:使...

2015-07-23 15:43:09 780 0

原创 c/c++ 数据结构之位图(bitmap)详解

1.  概述 位图(bitmap)是一种非常常用的结构,在索引,数据压缩等方面有广泛应用。本文介绍了位图的实现方法及其应用场景。 2. 位图实现 (1)自己实现 在位图中,每个元素为“0”或“1”,表示其对应的元素不存在或者存在。 #define INT_BITS...

2015-07-23 15:17:48 5478 2

原创 map insert()两种使用方法

#include #include #include #include using namespace std; int main(int argc, char *argv[]) { map m; typedef map::value_type vt; ...

2015-07-23 14:52:27 2315 1

原创 STL 之 hash_map源码剖析

// Filename: stl_hash_map.h // hash_map和hash_multimap是对hashtable的简单包装, 很容易理解 /* * Copyright (c) 1996 * Silicon Graphics Computer Systems, Inc....

2015-07-23 14:42:49 884 0

原创 STL之hashtable源码剖析

// Filename: stl_hashtable.h //////////////////////////////////////////////////////////////////////////////// // 本实作的hashtable采用的是开链法, 其内存布局如下 //...

2015-07-23 10:04:49 754 0

原创 常用哈希函数的比较及其C语言实现

基本概念 所谓完美哈希函数,就是指没有冲突的哈希函数,即对任意的 key1 != key2 有h(key1) != h(key2)。 设定义域为X,值域为Y, n=|X|,m=|Y|,那么肯定有m>=n,如果对于不同的key1,key2属于X,有h(key1)!=h(key2),那么称h...

2015-07-22 23:36:23 4619 0

原创 [C++设计模式] composite 组合模式

组合(Composite)模式的其它翻译名称也很多,比如合成模式、树模式等等。在《设计模式》一书中给出的定义是:将对象以树形结构组织起来,以达成“部分-整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。 从定义中可以得到使用组合模式的环境为:在设计中想表示对象的“部分-整体”层次结...

2015-07-22 15:43:05 678 0

原创 [C++设计模式] proxy 代理模式

代理模式:为其他对象提供一种代理以控制对这个对象的访问。 Proxy: 保存一个引用使得代理可以访问实体。若RealSubject和Subject的接口相同,Proxy会引用Subject,就相当于在代理类中保存一个Subject指针,该指针会指向RealSubject; 提供一...

2015-07-22 10:45:07 771 0

原创 [C++设计模式] state 状态模式

《head first 设计模式》中的例子很不错,想制造一个自动交易的糖果机,糖果机有四个状态:投入钱不足,投入钱足够,出售糖果,糖果售罄。糖果机的当前状态处于其中不同的状态时,它针对同一个操作的反映动作也不同。传统面向过程编程会套用if-else对不同的状态下分别处理,逻辑麻烦而且不具有可拓展性...

2015-07-21 16:41:04 664 0

原创 [C++设计模式] iterator 迭代器模式

迭代器模式定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象。 迭代器分内部迭代器和外部迭代器,内部迭代器与对象耦合紧密,不推荐使用。外部迭代器与聚合容器的内部对象松耦合,推荐使用。 迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合...

2015-07-21 15:37:02 818 0

原创 [C++设计模式]template 模板方法模式

模板法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 按照《headfirst 设计模式》的例子,煮茶和煮咖啡的算法框架(流程)是一样的,只是有些算法的实现是不一样的,有些是一样的。 我们可以将共同的算法框架封装为一个虚基类,将相同的算法声明为不可覆盖的(static),不同的算法...

2015-07-21 10:29:14 797 0

原创 [C++设计模式] adapter 适配器模式

STL中,stack对vector或者双端队列进行封装,提供stack操作的接口就是典型的适配器模式。 将一个类的接口转换成客户希望的另外一个接口,就是适配器模式。 使用适配器模式有以下优点: 降低了去实现一个功能点的难度,可以对现有的类进行包装,就可以进行使用了; 提高了项目质量...

2015-07-20 11:00:28 696 0

原创 [C++设计模式] command 命令模式

在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command...

2015-07-20 10:35:58 1080 1

原创 [C++设计模式] factory 工厂模式

说的直接点,工厂模式就是接管对象的创建,在new()的同时既可以做额外的异常处理、初始化等操作,又可以降低模块间的耦合,方便维护和拓展。 根据创建对象的复杂度,可以分为简单工厂模式、工厂法模式和抽象工厂模式。 一、简单工厂模式 ProductA、ProductB和ProductC继承...

2015-07-15 17:27:06 660 0

原创 [C++设计模式] decorator 装饰者模式

《head first》中 的例子:咖啡店有各种咖啡饮料,可以往咖啡里面加各种调料变成另一种饮料,如果使用继承的方式来为每一种饮料设计一个类,代码的复杂度很容易膨胀,而且会继承父类的所有特性,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;同时,又掉入了另一个陷阱,随着扩展功能的增多,子...

2015-07-15 15:32:48 1126 0

原创 [C++设计模式]observer 观察者模式

有这么一种松耦合的需求: 有一些类的对象对类A对象的状态变化很感兴趣,不会改变类A的对象,也不会被类A的对象改变,想以一种较小的代价观察对类A对象状态变化。 下面的几种方式也能实现上述目的 (1)通过类的继承来共同管理和维护一些感兴趣的数据或者状态,但是耦合度大,不易扩展和维护。 (2)通过调用被...

2015-07-14 17:25:56 792 0

原创 为什么设计模式在C++社区没有Java社区流行?

我们发现设计模式在Java社区很流行,但是在C++社区却没有那么被关注,甚至有点被排斥,究竟是什么原因造成这个差异的呢?   (1)C++内存需要自己管理,所以有些模式在C++里使用不是那么方便,但是Java不用关心内存,所以在Java里的使用设计模式有天生的优势。随着shared_ptr, we...

2015-07-14 16:36:06 1072 0

原创 [C++设计模式] strategy 策略模式

按照陈硕老师的观点,c++里有面向过程编程,面向对象编程和面向接口编程,三种思路都各有其适用场景。 面向过程编程是沿袭C的结构化编程思路,OOP是C++的核心,也是现代高级编程语言的核心。 c++的OO核心是继承和多态,在GUI编程,构建关键类等编程中很有用,但是泛用继承和多态,会增加复用和维护的...

2015-07-14 11:17:29 652 0

原创 google protocol buffer的原理和使用(四)

有个电子商务的系统(假设用C++实现),其中的模块A需要发送大量的订单信息给模块B,通讯的方式使用socket。 假设订单包括如下属性: --------------------------------   时间:time(用整数表示)   客户id:userid(用整数表示)   交易...

2015-07-10 10:21:55 820 0

原创 google protocol buffer的原理和使用(三)

介绍下怎么反序列化GoogleBuffer数据,并在最后提供本系列文章中所用到的代码整理供下载。      上一篇文章介绍了怎样将数据序列化到了addressbook.data中,那么对于接受方而言该怎么解析出原本的数据呢。同样,protoc编译器生成的代码文件中提供了反序列化的接口,基本上和序...

2015-07-10 10:10:24 926 0

原创 google protocol buffer的原理和使用(二)

本文主要会介绍怎么使用Google Protocol的Lib来序列化我们的数据,方法很多种,本文只介绍其中的三种,其他的方法读者可以通过自行研究摸索。但总的来说,序列化数据总的来说分为以下俩步:      1)使用数据源填充数据结构,无论数据源来自文件还是内存还是标准输入      2)利用Lib...

2015-07-10 10:07:57 986 0

原创 google protocol buffer的原理和使用(一)

一、简单的介绍      Protocol buffers是一个用来序列化结构化数据的技术,支持多种语言诸如C++、Java以及Python语言,可以使用该技术来持久化数据或者序列化成网络传输的数据。相比较一些其他的XML技术而言,该技术的一个明显特点就是更加节省空间(以二进制流存储)、速度...

2015-07-10 10:02:38 981 0

转载 select、poll、epoll之间的区别总结[整理]

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是...

2015-07-08 09:37:50 365 0

转载 EPOLL 边缘触发学习

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自...

2015-07-08 09:28:57 469 0

转载 g++ GNU g++常用编译选项用法

http://blog.csdn.net/mtawaken/article/details/7416332 http://blog.csdn.net/poechant/article/details/6641783 http://www.cnblogs.com/cryinstall/archi...

2015-07-07 18:58:05 337 0

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