自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 资源 (4)
  • 收藏
  • 关注

原创 c语言二分查找泛型实现

int intCmp(const void *lhs, const void *rhs){ int a = *(int*)lhs; int b = *(int*)rhs; if (a > b) return 1; else if (a == b) return 0; else return -1;}int bSe

2014-07-22 22:14:54 771

原创 nginx 技术小技巧

求结构体中变量在结构体中的偏移。struct test_

2014-04-22 22:03:53 594

转载 IPC 信号和共享存储

理论很多,我们需要的是代码实践,呵呵!来自:http://fengtong.javaeye.com/blog/456661 [cpp] view plaincopy/*server.c:向共享内存中写入People*/    #include     #include     #include     #inc

2014-04-22 18:15:12 613

原创 字典树实现

字典树,插入时检测单词是否存在。

2014-04-22 15:28:18 510

原创 fedora20安装nginx不能访问处理方法

前几天把ubuntu12.04弄坏了,装了个fedora20。在安装nginx

2014-04-11 22:44:44 849

原创 shell 关联数组添加元素问题

在练习shell时,发现元素添加的两种方式:1.test_array["apple"]="100dollars".2.

2014-04-07 23:42:45 3775

原创 字符串压缩

#include #include #include #include char *test(const char* str){    int i;    int str_len = strlen(str);    int num_of_char;  //每次相同字符数目    char *pDes = (char*)malloc(str_len*2 +

2014-04-04 12:00:47 497

原创 makefile 中 *** missing separator. Stop. 错误

练习makefile,发生空格和tab在makefile中区分很重要。如:ifde (, ) ifdef和(之间的空格绝对不能少,否则将导致*** missing separator.  Stop.错误。测试代码如下test : 28 @echo $(a) 29 ifneq($(a),$(b)) 30 a = equal 31 else 32 a = noequal 33

2014-03-27 17:22:20 1441

原创 linux 消息队列类型

linux消息队列类型不能为0,否则将会报invalid argument错误。测试代码如下,如果发送端循环从0开始将出现错误。send.cc/*=============================================================================# Filename : send.cc# Description : 发

2014-03-20 22:50:27 1011

转载 cscope 使用

下面文本摘自 cscope 的手册页:Cscope 是一个交互式的屏幕下使用的工具,用来帮助你:无须在厚厚的程序清单中翻来翻去就可以认识一个 C 程序的工作原理。无须熟悉整个程序就可以知道清楚程序 bug 所要修改的代码位置。检查提议的改动 (如添加一个枚举值) 可能会产生的效果。验证所有的源文件都已经作了需要的修改;例如给某一个现存的函数添加一个参数。在所有相关的源文件中对一个全局

2014-03-16 23:21:12 625

转载 插件相关2

By:吴垠Date:2007-09-07Version:0.5Email:lazy.fox.wu#gmail.comHomepage:http://blog.csdn.net/wooinCopyright:该文章版权由吴垠和他可爱的老婆小包子所有。可在非商业目的下任意传播和复制。对于商业目的下对本文的任何行为需经作

2014-03-16 22:44:03 598

转载 vim插件相关1

工欲善其事,必先利其器。一个强大的开发环境可以大大提高工作效率。好吧,我知道这是废话。。。不过,我想一定有很多跟我一样打算进入Linux平台开发的新手,一开始都为找不到一个像Windows下的VS那样可以一键安装并且功能几乎完美无缺的开发工具而郁闷不已,甚至打算收回刚刚迈出的脚步。所幸的是,通过几天努力,我总算配置出了一个功能完备的基于Vim的开发环境。这个开发环境除了基本的Vim外,还包括Cta

2014-03-15 15:50:50 561

转载 安装插件问题

今天终于下定决心把vim和插件完整配置好。安装的插件主要依据“手把手教你把Vim改装成一个IDE编程环境(图文) ”这篇文章插件复制用的是土办法在用户目录下(/home/***(用户名)/)新建文件夹,把*.vim文件拷贝到里面,然后在shell中进入该目录sudo cp *.vim /usr/share/vim/vim72/plugin*.txt文件同理。ctag还好弄,

2014-03-15 15:05:38 964

原创 进程同步--信号实现--APUE

#include #include #include #include #include "error_exit.h" static volatile sig_atomic_t sigflag;static sigset_t new_mask, old_mask, zero_mask;static void sig_usr(const int signo){ sigfla

2014-02-27 20:49:30 585

原创 图的广度优先遍历,基于邻接链表实现

#include #include #include using namespace std;/*************************************** * * 图的深度优先遍历 * * 基于邻接链表的非递归实现 * **************************************/typedef char vertex_t

2014-01-26 17:44:59 831

转载 vim中taglist使用(比较详细的)

转自:http://blog.csdn.net/easwy本节所用命令的帮助入口::help helptags:help taglist.txt上篇文章介绍了在VIM中如何使用tag文件,本文主要介绍如何使用taglist插件。想必用过Source Insight的人都记得这样一个功能:SI能够把当前文件中的宏、全局变量、函数等tag显示在Sym

2014-01-25 15:05:09 554

原创 vim ctags 设置

1.生成系统库标签文件并设置。命令:ctags -R ~/.vim/systags --c++-kinds=+p --fields=+iaS --extra=+q /usr/include ~/Documents/boost_study/boost_1_55_0/boost/后面为系统库文件路径,加上了boost库。在~/.vimrc 中设置:set tags+=~/.vim/syst

2014-01-25 13:57:47 690

原创 图的深度优先遍历,基于邻接链表的非递归实现

测试数据基于上图,新增4->1的路径。程序存在内存泄漏。使用时可以修改depth_first_search第二个参数,指定开始遍历的结点。如果错误,欢迎指正!!#include #include using namespace std;/*************************************** * 图的深度优先遍历 * 基于邻接链表

2014-01-24 16:26:51 1014

转载 Linux 下zip包的压缩与解压

linux zip 命令详解 功能说明:压缩文件。 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b ][-ll][-n ][-t ][-][压缩文件][文件...][-i ][-x ] 补充说明:zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。 参 数: -A 调整可执行的自动解压缩文件。 -b 指

2014-01-13 20:54:28 559

转载 ofstream和wofstream与中文输出问题

使用C++标准库的iostream,可以方便地将控制台、文件、字符串以及其它可扩充的外部表示作为流来处理,但要处理中文,却会碰到很多问题。本人原来没怎么用过这个iostream,这几天尝试用这个写点东西,一会儿不能输出中文,一会儿不支持中文文件名的,搞得头大。网上搜了搜,没有发现适用于所有情况的解决方案。不过后来自己经过多次测试,基本解决了这些问题,现在写成文字作为一个总结,也供碰到同样问题的朋友

2014-01-08 16:05:19 746

转载 C++ 关于声明,定义,类的定义,头文件作用,防止头文件在同一个编译单元重复引用,不具名空间

1.  编译单元,一个.cc,或.cpp作为一个编译单元.生成.o2.  普通数据类型的定义,声明,函数的定义声明(类函数是一样的)extern int x; //变量是声明,并未实际分配地址,未产生实际目标代码      void print(); // 函数声明,  未产生实际目标代码      如int x; int x = 3 ; void print() {};

2014-01-02 00:17:22 610

转载 有用的博客地址

信号状态:    信号的”未决“是一种状态,指的是从信号的产生到信号被处理前的这一段时间;信号的”阻塞“是一个开关动作,指的是阻止信号被处理,但不是阻止信号产生。     APUE例题在sleep前用sigprocmask阻塞了退出信号,然后sleep,然后在sleep的过程中产生一个退出信号,但是此时退出信号被阻塞过,(中文的”阻塞”在这里容易被误解为一种状态,实际上是一种类似于开关的动

2013-12-27 08:45:31 570 1

原创 linux 进程间通信——信号

#include #include #include #include "error_exit.h" static volatile sig_atomic_t sigflag;static sigset_t new_mask, old_mask, zero_mask;static void sig_usr(const int signo){sigfl

2013-12-26 21:39:30 538

转载 开闭原则

定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。问题由来:在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。         开闭原则是面

2013-12-26 17:49:29 467

转载 依赖倒置原则

定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接

2013-12-26 17:43:57 470

转载 单一职责原则

定义:不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责。问题由来:类T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。解决方案:遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T

2013-12-26 17:19:38 466

转载 接口隔离原则

定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:

2013-12-26 17:09:48 508

转载 备忘录模式

定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态类型:行为类类图:        我们在编程的时候,经常需要保存对象的中间状态,当需要的时候,可以恢复到这个状态。比如,我们使用Eclipse进行编程时,假如编写失误(例如不小心误删除了几行代码),我们希望返回删除前的状态,便可以使用Ctrl+Z来

2013-12-26 16:38:36 535

转载 Linux下使用system()

曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入。只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值、它所执行命令的返回值以及命令执行失败原因如何定位,这才是重点。当初因为这个函数风险较多,故抛弃不用,改用其他的方法。这里先不说我用了什么方法,这里必须要搞懂system()函数,因为还是有很多人用了system()函数,有时你不得不面对它

2013-12-25 23:04:14 454

转载 sig_atomic_t

数据类型sig_atomic_t,当把变量声明为该类型会保证该变量在使用或赋值时, 无论是在32位还是64位的机器上都能保证操作是原子的, 它会根据机器的类型自动适应。在处理信号(signal)的时候,有时对于一些变量的访问希望不会被中断,无论是硬件中断还是软件中断,这就要求访问或改变这些变量需要在计算机的一条指令内完成。通常情况下,int类型的变量通常是原子访问的,也可以认为 sig_a

2013-12-25 22:52:08 657

转载 Linux Signal (4): alarm和pause

1. alarm函数:alarm函数是设置一个计时器, 在计时器超时的时候, 产生SIGALRM信号. 如果不忽略或捕捉此信号, 它的默认操作是终止调用该alarm函数的进程.原型如下:#include unistd.h>unsigned int alarm(unsigned int seconds);返回0或余留秒数说一下alarm的返回值问题,

2013-12-25 21:10:24 535

转载 c++ 私有继承

class person ; class student: private person ; // inheritance is now private void eat(const person& p); // anyone can eat void study(const student& s); // only students study person p;

2013-12-25 15:44:00 507

转载 restrict

简介restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改;这样做的好处是,能帮助编译器进行更好的优化代码,生成更有效率的汇编代码.如 int *restrict ptr, ptr 指向的内存单元只能被 ptr

2013-12-25 00:46:12 527

转载 GCC编译 C与C++ C89与C99

1) 最初的 ANSI C 标准 (X3.159-1989) 在 1989 年被批准,并于 1990 年发布。稍后这个标准被接受为 ISO 标准 (ISO/IEC 9899:1990) 。虽然 ISO 标准将 ANSI 标准的某些章节重新编号并变为条款,但是两者实际上并无区别。不论是 ANSI 标准还是 ISO 标准,通常都称之为 C89 ,偶尔也因为发布日期而被叫做 C90 。 ANSI 标准

2013-12-25 00:44:30 4829

转载 优秀程序员不得不知道的20个位运算技巧

一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Delight》,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一

2013-12-24 23:59:15 488

转载 C语言位运算详解

位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。C语言提供的位运算符列表:运算符 含义 描述& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1

2013-12-24 23:58:18 434

转载 设计模式(五)适配器模式Adapter(结构型)

设计模式(五)适配器模式Adapter(结构型)1. 概述:         接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题。程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化。        例子1:iphone4,你即可以使用UBS接口连接电脑来充电,假如只有iphone没有电脑,怎么办呢?苹果提供了iphone电源

2013-12-24 17:44:13 573

转载 typeid 与 typeinfo 与typename

一,type_info typeid(对象指针) :返回对象的typeinfo类型,类似于c#中的typeof()方法,返回type类型一样。二,type_info类type_info(类型信息):存储特定类型的有关信息,定义在头文件中。type_info类的具体内容由编译器实现来决定,但是至少必须包含返回字符串的name()成员函数。下面是type_info类的V

2013-12-24 12:19:37 1042

转载 unix/LINUX 命令/函数 后面括号中数字的意思

看> 等书, 常会看到 kill(1) , conect(2) , select(2) 这样的写法.1,2 表示什么?   Linux下最通用的领域及其名称及说明如下:领域 名称 说明1 用户命令, 可由任何人启动的。2 系统调用, 即由内核提供的函数。3 例程, 即库函数。4 设备, 即/dev目录下的特殊文件。5 文件格式描述, 例如

2013-12-23 23:44:33 1361

转载 虚拟内存、逻辑地址、线性地址、物理地址

逻辑地址(Logical Address) 是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel 保护模式下程序执行代码段限长内

2013-12-23 22:32:17 465

UNIX环境高级编程_第二版中文

unix/linux编程圣经,学unix/linux必看书籍。

2013-01-29

Google的C++编码规范 中文

谷歌中文版c++编程规范,比较权威,适合养成良好的编程风格。

2013-01-29

stl中的智能指针

简要的介绍STL中几种只能指针,入门级别,在介绍利弊时也顺带介绍的boost库中的几种指针

2013-01-29

Boost程序库完全开发指南.pdf

Boost程序库完全开发指南,入门级别的boost库学习

2013-01-29

空空如也

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

TA关注的人

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