自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (14)
  • 收藏
  • 关注

转载 Linux top 命令

VIRT:virtual memory usage。Virtual这个词很神,一般解释是:virtual adj.虚的, 实质的, [物]有效的, 事实上的。到底是虚的还是实的?让Google给Define之后,将就明白一点,就是这东西还是非物质的,但是有效果的,不发生在真实世界的,发生在软件世界的等等。这个内存使用就是一个应用占有的地址空间,只是要应用程序要求的,就全算在这里,而不管它真的用了没

2012-12-21 09:36:29 890

原创 void (*signal(int sig, void (*func) (int))) (int)理解

1.signal( int sig, void (*func)(int))signal是一个函数,有2个参数,第一个是int类型,第二个参数是一个函数指针2.void (*signal(int sig, void (*func) (int))) (int)signal仍然是一个函数,他返回一个函数指针,这个指针指向的函数没有返回值,只有一个int类型的参数3.简化:typede

2012-12-11 10:39:00 6351 4

转载 send或者write socket遭遇SIGPIPE信号

send或者write socket遭遇SIGPIPE信号(转)转自:http://linux.chinaunix.net/techdoc/net/2008/10/10/1037290.shtml当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个

2012-12-11 10:16:43 6204 1

转载 基于SMGP协议短信发送速度问题 .

短信网关在处理SP接入的同时,他还有个很重要的作用就是流控,以防止第三方突然提交大量的短信而导致整个短信平台出现异常增加的流量,导致系统不稳定。为了实现对于客户端过来的请求进行流控,由于无法判断SP提交的短信实时速度,短信网关需要将实时提交的短信进行分时(类似高数里面的微积分的概念),并根据细小的分时来统计当前的流量,对于超过流控的流量进行过滤。这句话不大好理解,我们可以简单举个例子:假设网关开给

2012-12-11 08:46:49 2445

转载 free 查看系统内存

我们一般用free命令:[root@scs-2 tmp]# free             total       used       free     shared    buffers     cachedMem:       3266180    3250004      16176          0     110652    2668236-/+ buffers/

2012-11-25 11:19:23 1083

转载 linux下的抓包工具tcpdump

linux下的抓包工具tcpdump  这篇讲linux下的抓包工具。 抓包工具比较好用的有两个,一个是snort,一个是tcpdump,这次不说snort了,觉得这个工具虽然很强大,但是比较复杂,还是tcpdump比较简单。tcpdump windows、linux版本均有。linux版本可以在以下网站下载:www.tcpdump.org. 安装好tcpdump之后,

2012-08-25 10:13:12 1148

转载 字符集与字符编码简介

转自http://blog.csdn.net/gogor/article/details/5323599我们知道,计算机只能识别诸如0101这样的二进制数,于是人们必须以二进制数据与计算机进行交互,或者先将人类使用的字符按一定规则转换为二进制数。那什么是字符呢?在计算机领域,我们把诸如文字、标点符号、图形符号、数字等统称为字符。而由字符组成的集合则成为字符集,字符集由于包含字符的多少与

2012-08-15 09:36:43 1011

原创 linux进程复习笔记

一.进程就是一个运行着一个或多个线程的地址空间加上所需的资源。他由代码,数据,变量(占用着系统内存),打开的文件描述符和环境组成。二.普通进程pid由2到32768,init进程pid是1 ,他是所有进程的祖先,负责管理其他进程。三.进程结构进程neil和rick共享grep代码和C库函数,这两段代码被以只读方式从磁盘加载到内存中,可以被多个进程共享。两个进程的数据段和

2012-07-27 10:52:10 745

转载 C/C++程序在运行时的内存结构

2012-07-26 10:24:36 1282

原创 对asn.1抽象语法标记中Tag的理解

<!--pre.western {font-family:"DejaVu Sans"}pre.cjk {font-family:"DejaVu Sans"}pre.ctl {font-family:"DejaVu Sans Mono",monospace}p {margin-bottom:0.21cm}-->一.tag通信时,要确保对方知道每个

2012-07-20 15:59:19 13560 2

原创 小窍门:创建超长链表时加一个特殊头节点优化创建速度

#include#include#include#define MAX_LENGTH 100000int i = 0;struct _Token;typedef struct _Token{    int    id;    struct _Token    *next;}Token;/* Token池管理,防止内存泄漏,优化创建链表速度 *

2012-07-16 09:54:41 1186

原创 子函数中为调用者分配内存的一些理解

<!--p {margin-bottom:0.21cm}-->典型的例子有四个,其中一个是错误的,先说错误的情况1.错误的例子:intfunc(char *p){if(NULL == (p = (char *)malloc(128)) );{retuen-1;}return0;}在主函数中调用:...char*p0 = N

2012-07-12 10:22:20 3938 2

转载 浅析malloc()的实现方式

malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。   动态内存分配就是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的

2012-07-12 08:45:52 833

原创 flex规则段模式和正则表达式

flex规则段是用正则表达式说明的,另外也有他自己的一些格式:1.语系对正则表达式的影响:不同语系,字符的种类,数量,排序各不相同,LANG=C时:字母和数字的顺序是01234...ABCD...Zabc...z,[A-D]指从A,B,C,D中取一个字符。LANG=zh_CN时:字母和数字的顺序是01234...aAbBcCdD...zZ,[A-D]指从A,b,B,c,C,d,

2012-07-04 17:06:34 2495

原创 词法分析生成器flex的选项

flex的选项影响最终生成的词法分析器的属性和行为。这些选项可以在运行flex命令时在终端输入,也可以在.l文件中使用%option指定。option的主要分类:Options for Specifying FilenamesOptions Affecting Scanner BehaviorCode-Level And API OptionsOptions for Scann

2012-07-04 15:38:00 9354

原创 LEMON概述

<!--p {margin-bottom:0.21cm}-->一.编译原理一些常识1.词法分析将字符串按正则表达式,分成一个个匹配的token,予之表明它们身份的标记,以及长度和在语法文件中的位置。2.单个的token没有意义,需要语法分析程序识别token的出现和它们排列的规则,按结构执行相应操作。3.编译原理的研究.自然语言结构的研究。195

2012-06-29 17:00:08 4770

原创 ASN.1笔记——标准编码规则BER

BER编码一.基本规则BER(BasicEncoding Rules)是ASN.1中最早定义的编码规则,其他编码规则是在BER的基础上添加新的规则构成。1.BER传输语法的格式一直是TLV三元组.T是Tag,L是整个类型的长度,V是类型的Value,它还可以是TLV或TLV组合2.BER传输语法是基于八位组大端编码的,高八位在左。

2012-06-28 09:46:29 43812 4

原创 ASN.1笔记——Tag与结构类型

<!--p {margin-bottom:0.21cm}-->一.Tag1.Tag传输数据时,接收方要明确知道每个收到的数据的类型,我们就要对各类型进行系统性的编号。在ASN.1中使用Tag来唯一标识数据的类型。(1).分配给每个类型的tag实际上是一个值对:<taggingclass, number>。有四种taggingclass:UNIVERSAL

2012-06-28 08:54:04 15553

原创 ASN.1笔记——基本类型详述

<!--p {margin-bottom:0.21cm}-->ASN.1笔记——2一.ASN.1基本类型基本类型汇总表类型UNIVERSALTag取值BOOLEAN1TRUE,FALSENULL5NULL

2012-06-18 16:48:48 15407

原创 ASN.1笔记——语法规则与类型概述

<!--p {margin-bottom:0.21cm}h2 {margin-bottom:0.21cm}h2.western {font-family:"DejaVu Sans",sans-serif; font-size:14pt; font-style:italic}h2.cjk {font-family:"DejaVu Sans"; font-s

2012-06-18 11:18:52 39045 1

转载 在Ubuntu上安装WebSphere MQ

在Ubuntu上安装WebSphere MQ 1. Download WebSphere MQ6 tar.gz (WMQv6023Trial-x86_linux_2.tar.gz)2. run tar -zxvf WMQv6023Trial-x86_linux_2.tar.gz 3. Create MQ user and group: groupadd mqm useradd -d

2012-06-04 09:47:54 3262

转载 rsync算法及其优化算法

rsync算法要解决的问题很简单:A和B两个文件在两台服务器中,要将A同步到与B一致,要求尽量减少同步带来的网络传输开销。rsync基本算法先说基本的rsync算法,并不复杂,简单的说是三步:1、按固定大小将A分为多块,每块都计算出一个32位的滚动哈希值和一个128位的MD4(有些也用MD5),发给B一端。2、B一端从位置0开始按的同样块大小的滚动哈希值,查找看是否命中A给的某

2012-05-29 14:16:08 2359

转载 rsync+inotify文件实时同步

1、rsync与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据 时,需要扫描所有文件

2012-05-29 11:22:45 7738 1

原创 使用lsync和rsync实现主备双机文件同步

<!--p {margin-bottom:0.21cm}h1 {margin-bottom:0.21cm}h1.western {font-family:"DejaVu Sans",sans-serif; font-size:16pt}h1.cjk {font-family:"DejaVu Sans"; font-size:16pt; font-styl

2012-05-03 15:08:59 11527 2

原创 两个内存调试工具

一.动态内存分配是一个很容易出现程序漏洞的领域,且一旦出错不易查找.这些错误通常由两种原因引起:1.指针malloc()分配的内存的指针值发生变化,又没有别的指针指向它,那么这块内存在程序退出将变得无法访问.2.在一个已分配的内存块前或后写数据,很可能会损坏malloc函数库用于记录分配情况的数据结构.出现这种情况后,过一段时间后,再调用malloc或free都可能失败而引起程序崩溃,要找

2012-04-17 17:21:19 3764

原创 文件锁

文件锁可用于实现多用户多任务共享数据linux提供两种方法实现文件锁定:1.以原子操作的方式创建一个文件,我们称之为锁文件,当这个文件被创建后,不允许其他进程再创建同名文件2.第二种方法允许程序锁定文件的一部分,从而可以独享对这部分内容的访问,这种方法被称为区域锁定#include int fcntl(int fildes, int command, ...);fcntl(

2012-04-17 11:42:08 749

原创 termios的例子

linux程序设计 5.4节先看一个menu.c函数#include #include #include char *menu[] = {"a - add new recode", "b - delete recode", "q - quit", "NULL"};int getchoice(char *greet, char *choices[], FILE *in, FI

2012-04-16 11:13:20 816

原创 终端控制--termios结构

LINUX程序设计第三版 5.4节一.termios是在POSIX规范中定义的标准接口,通过设置termios类型的数据结构中的值和使用一组函数调用,我们可以对终端接口进行控制可用来调整终端行为的操作模式:输入模式输出模式控制模式本地模式特殊控制字符最小的termios结构典型定义:#include struct termios{    tcflag

2012-04-16 10:34:09 1184

转载 字符编码笔记:ASCII,Unicode和UTF-8

<!--p {margin-bottom:0.21cm}h1 {margin-bottom:0.21cm}h1.western {font-family:"DejaVu Serif",serif}h1.cjk {font-family:"DejaVu Sans"; font-size:24pt; font-style:normal; font-weigh

2012-04-13 10:44:36 703

原创 使用GHashTable和strsep()函数解析http报文

#include #include #define FIELD_NAME_ARRAY_LENGHT  8field_name_array[FIELD_NAME_ARRAY_LENGHT] = {"wd", "rsv_spt", "issp", "rsv_bp", "ie", "tn", "n", "inputT"};int main(){    ch

2012-04-12 14:18:05 903

原创 glib库简单计时器的实现

#include #include #define INTERVALS    10    //间隔10ms#define COUNTER        1000    //计时间隔数GMainLoop *loop;gint count = COUNTER;gboolean callback(gpointer arg){    count--;

2012-04-12 13:37:08 739

原创 时间与日期

通常确定时间和日期对一个程序来说是很有用的,程序可能希望记录运行时间.或者在某一时间后改变运行方式.例如一个游戏可能需要玩家在倒计时内完成某个任务所有的UNIX系统都使用同一时间和日期起点:格林威治时间(GMT)1970年1月1日.而MS-DOS纪元开始于1980年.时间通过一个长整型的预定义类型time_t来表示,它和其他时间相关函数在time.h中定义.通过time_t time(

2012-04-12 13:32:48 816

原创 系统调用和系统库函数的一些基础知识

文件linux中文件具有特殊意义,它们为操作系统服务和设备提供了一个简单统一的接口,在linux中,几乎一切都是文件.我们可以像使用文件那样使用磁盘,串行口,打印机和其他设备,大多情况下,只需要五个基本系统调用函数便可操作这些硬件:open(),close(),read(),write(),ioctl().除了本身内容外,文件还有一个名字和一些属性,例如可读,所属用户等管理信息,这些信

2012-04-11 11:17:38 1020

原创 静态库和共享库的基础知识

库是一组预先编译好的函数集合,这些函数需要按照可重用的原则编写,这些函数通常是有关联并执行同一项任务,比如屏幕处理函数库curses和nsurses库.标准系统库在/lib和/usr/lib中,编译器会自动找到.除此之外的库在使用时需要指定完全路径或用-L/路径和-l标识静态库和动态库:静态库和动态库是两种共享程序代码的方式,它们的区别是静态库在程序的链接阶段被复制到程序中,程序执

2012-04-11 09:45:15 1612

原创 排序------------------分治策略与组合法

1.分治法插入排序使用增量法:在排好的A[1],A[2],...,A[j - 1]子数组后(A[1]为第一个元素),将A[j]插入,形成排好的子数组A[1],A[2],...,A[j]。分治法是解决递归问题的一种策略:将原问题分成n个规模较小而结构与原问题相似的子问题,递归地解决这些子问题,然后再合并这些结果,得到原问题的解。分治法在每层递归上都分为三步:分解:将原问题分为一系列子

2012-03-21 15:09:56 783

原创 排序-----------------插入排序,冒泡排序

1.插入排序 INSERT-SORT设数组A是无序数组非降序for( i = 2; i  { key = A[i]; j = i - 1; while( j >= 1 && A[j] > key) {  A[j + 1] = A[j];  j = j - 1; } a[j + 1] = key;}非升序for( i = 2; i  {

2012-03-21 11:47:14 550

原创 排序----堆排序

插入、合并、堆、快速排序通过对数组中的元素进行比较来实现,对任何n个输入来说,最坏运行时间下界为Ω(n*lgn)。注:lgn是log2(n)A是一个任意数组,这里举例为A[10] = {16,14,10,8,7,9,3,2,4,1}将数组以二叉树形式展示,结点下标与数组下标对应:i的父节点parent(i) = i/2左节点left(i) = 2i 右节

2012-03-16 17:32:06 612

转载 运行galde编写的UI程序时报错:libglade-WARNING **: could not find signal handler 'gtk_reset'.

解决方案1:  在GCC编译命令中加入-export-dynamic,如:  gcc test.c callbacks.c -o test `pkg-config --libs --cflags libglade-2.0 ` -export-dynamic  解决方案2:  在GCC编译命令中使用pkg-config加入库gmodule-export-2.0,如:

2012-02-07 09:54:05 1621

转载 使用gdb调试段错误(segment fault)

原文位置 http://www.unknownroad.com/rtfm/gdbtut/gdbsegfault.html  我们打算使用gdb去解决为什么下面的程序(文件为segfault.c)引起了段错误的问题。下面的这段程序是从用户那里读入一行文本字串然后显示在屏幕上。然而,如下当前的程序并不会如期执行...[cpp] view plaincopyprint?

2012-02-01 16:32:47 895

转载 GDB调试精粹及使用实例

一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符()和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。 利用set args 命令就可以修改

2012-02-01 16:05:59 488

lex_yacc.doc

Yacc 与 Lex 快速入门

2012-07-05

编译原理及实践

编译原理及实践

2012-07-05

LEMON语法分析生成器(LALR(1)类型

LEMON语法分析生成器(LALR(1)类型)源代码情景分析

2012-07-05

字符编码ascii与unicode

字符编码ascii与unicode

2012-05-02

libxml2.dll

windows下用于xml解析的动态链接库

2012-05-02

HTTP协议.pdf

HTTP协议详解.pdf

2012-05-02

tuxedo应用程序开发指南

tuxedo应用程序开发指南.doc

2012-05-02

高质量C和C++编程

怎么编写高质C/C++程序..

2012-05-02

服务器选择

大概说明怎么选择服务器类型,

2012-05-02

C语言开发CGI初步了解

c语言开发cgi的入门级资料~~大于20字啊大于20字

2012-01-06

c语言解析XML文件

libxml的一些简单例子~~晕,20个字~~

2011-11-04

db2常用命令

db2常用命令 这有什么好介绍的,还非得20个字

2011-09-12

C语言socket编程实现网络数据传输

一些简单的C语言socket编程方法,还要大于20个字啊~~~~~~~~~~~

2011-09-12

空空如也

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

TA关注的人

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