自定义博客皮肤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

  • 博客(397)
  • 资源 (2)
  • 收藏
  • 关注

转载 ipcs余ipcrm

ipcs 命令用途报告进程间通信设施状态。语法ipcs [ -m] [ -q] [ -s] [ -S] [ -P] [ -l] [ -a | -b -c -o -p -t] [ -T] [ -C CoreFile] [ -N Kernel ]描述ipcs 命令往标准输出写入一些关于活动进程间通信设施的信息。如果没有指定任何标志,ipcs 命令用简短格式写

2015-09-13 22:03:23 828

转载 netstate 与 tcpdump

netstat常见参数-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n 拒绝显示别名,能显示数字的全部转化成数字。-l 仅列出有在 Listen (监听) 的服務状态-p 显示建立相关链接的程序名-r 显示路由信息,路由表-e 显示扩展信息,例如uid等-s 按各

2015-09-13 22:01:46 2172

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

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

2015-09-12 17:00:03 975

原创 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:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法 最常见的错误:memset是按字节填充的,对其他多余一个字节的类型填充要注意

2015-09-12 11:22:57 2480

转载 linux sed 命令

1. Sed简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介

2015-09-09 14:39:37 674

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

一个for循环实现一个目录下的文件和目录遍历,很实用[root@localhost shell_order]# cat test27.sh #!/bin/bash#print the directory and filefor file in /home/hustyangju/*doif [ -d "$file" ]then echo "$file is directory"

2015-09-08 09:54:00 81028 1

转载 linux wc 命令

Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。1.命令格式:wc [选项]文件...2.命令功能:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。3.命令参数:-c 统计字节数。

2015-09-07 19:39:32 855

转载 拓扑排序

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

2015-09-06 16:47:33 506

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

一、fork入门知识     一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进

2015-09-06 16:44:48 598

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

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

2015-09-01 17:16:27 676

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

数组名和指针是两个往往很容易让人们混淆的概念,很多人以为数组名就是一个指针,也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变例如你可以写出下面这样的代码:int *p;p++;却不能写这样的代码:int a[];a++;那么数组名跟指针之间到底有什么区别呢?第一,在声明上,只

2015-08-25 10:15:30 1035

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

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

2015-08-20 09:34:01 529

转载 linux 串口编程

.串口概述 常见数据通信方式:并行通信,串行通信 UART的主要操作:   >数据发送及接受   >产生中断   >产生波特率   >Loopback模式    >红外模式   >自动流控模式   串口参数的配置主要包括:波特率、数据位、停止位、流控协议。 linux中的串口设备文件放于/de/目录下,串口一,串口二分别为"/dev/ttyS0","/dev

2015-08-10 16:34:44 805

原创 mysql中select distinct的用法

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

2015-08-06 09:41:56 1737

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

loom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。 一. 实例   为了说明Bloom Filter存在的重要意义,举一个实例:  假设要你写一个网络蜘蛛(web crawler)。由于网络间的链接错综复杂,蜘蛛在网络间爬行很可能会形成“环”。为

2015-07-23 15:59:43 485

原创 使用bitmap处理海量数据

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

2015-07-23 15:43:09 948

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

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

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

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

#include #include #include #include using namespace std;int main(int argc, char *argv[]){ map m; typedef map::value_type vt; for(int i=0; i<50; i++) { int val =

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

原创 STL 之 hash_map源码剖析

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

2015-07-23 14:42:49 1143

原创 STL之hashtable源码剖析

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

2015-07-23 10:04:49 961

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

基本概念所谓完美哈希函数,就是指没有冲突的哈希函数,即对任意的 key1 != key2 有h(key1) != h(key2)。设定义域为X,值域为Y, n=|X|,m=|Y|,那么肯定有m>=n,如果对于不同的key1,key2属于X,有h(key1)!=h(key2),那么称h为完美哈希函数,当m=n时,h称为最小完美哈希函数(这个时候就是一一映射了)。在处理大规模字符串数据

2015-07-22 23:36:23 10399 1

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

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

2015-07-22 15:43:05 822

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

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

2015-07-22 10:45:07 876

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

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

2015-07-21 16:41:04 801

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

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

2015-07-21 15:37:02 999

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

模板法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。按照《headfirst 设计模式》的例子,煮茶和煮咖啡的算法框架(流程)是一样的,只是有些算法的实现是不一样的,有些是一样的。我们可以将共同的算法框架封装为一个虚基类,将相同的算法声明为不可覆盖的(static),不同的算法声明为子类要实现的纯虚函数。可以使用hook()函数处理算法框架的细小差异。看到这里,或许会想

2015-07-21 10:29:14 979

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

STL中,stack对vector或者双端队列进行封装,提供stack操作的接口就是典型的适配器模式。将一个类的接口转换成客户希望的另外一个接口,就是适配器模式。使用适配器模式有以下优点:降低了去实现一个功能点的难度,可以对现有的类进行包装,就可以进行使用了;提高了项目质量,现有的类一般都是经过测试的,使用了适配器模式之后,不需要对旧的类进行全面的覆盖测试;总的来说,提

2015-07-20 11:00:28 1054

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

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

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

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

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

2015-07-15 17:27:06 851

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

《head first》中 的例子:咖啡店有各种咖啡饮料,可以往咖啡里面加各种调料变成另一种饮料,如果使用继承的方式来为每一种饮料设计一个类,代码的复杂度很容易膨胀,而且会继承父类的所有特性,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;同时,又掉入了另一个陷阱,随着扩展功能的增多,子类也会增多,各种子类的组合,就会导致类的膨胀,最后,就会被淹没在类的海洋。这时大神们就发明了装饰者

2015-07-15 15:32:48 1258

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

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

2015-07-14 17:25:56 1018

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

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

2015-07-14 16:36:06 1647

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

按照陈硕老师的观点,c++里有面向过程编程,面向对象编程和面向接口编程,三种思路都各有其适用场景。面向过程编程是沿袭C的结构化编程思路,OOP是C++的核心,也是现代高级编程语言的核心。c++的OO核心是继承和多态,在GUI编程,构建关键类等编程中很有用,但是泛用继承和多态,会增加复用和维护的难度,也会使软件臃肿复杂。面向接口编程,多采用组合,类之间松耦合,可以简化类别架构,方便复用和

2015-07-14 11:17:29 814

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

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

2015-07-10 10:21:55 950

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

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

2015-07-10 10:10:24 1078

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

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

2015-07-10 10:07:57 1344

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

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

2015-07-10 10:02:38 1126

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

select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝到用

2015-07-08 09:37:50 475

转载 EPOLL 边缘触发学习

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

2015-07-08 09:28:57 649

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

http://blog.csdn.net/mtawaken/article/details/7416332http://blog.csdn.net/poechant/article/details/6641783http://www.cnblogs.com/cryinstall/archive/2011/09/27/2280824.html

2015-07-07 18:58:05 462

qt signal-slot测试代码

signal-slot机制是QT的核心,也是QT解决线程之间通信的一大亮点。深刻理解其两大特性: (1)loosely coupled sender 与 receiver 互不关心,一个signal可以被多个slot获取,signal可以触发另一个signal (2)type-safe connect连接时,遵守严格的参数约定,slot参数必须与signal参数保持一致,slot参数数量可以少于signal qt signal-slot测试代码

2013-12-27

空空如也

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

TA关注的人

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