自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Socrates的专栏

——不积跬步,无以至千里;不积小流,无以成江海

  • 博客(534)
  • 资源 (5)
  • 收藏
  • 关注

原创 Tools:VC6.0和SourceInsight下的pclint配置

一、lint简介 lint是最著名的C语言工具之一,是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析,一般由UNIX系统提供。与大多数C语言编译器相比,lint可以对程序进行更加广泛的错误分析,是一种更加严密的编译工具。最初,lint这个工具用来扫描C源文件并对源程序中不可移植的代码提出警告。但是现在大多数lint实用程序

2014-08-25 00:52:33 5914

原创 C:二维数组常用操作

/*说明:程序实现二维数组中插入列、插入行、交换两个指定位置的元素,并输出指定位置元素的变化轨迹*/#include "stdafx.h"#include #include /*二维数组最大行数和列数*/#define MAX_ROW_NUM (9)#define MAX_COL_NUM (9)/*二维数组中各元素位置信息*/typedef struct _PathN

2014-08-17 17:44:42 6049

原创 C:TLV消息编码及常用操作

/*1、TLV简介:在通信系统中,两个设备之前必然存在消息交互,消息的格式也存在各种编码类型,本文仅描述TLV编码的消息格式。Type-length-value(TLV)格式中T、L的长度固定,通常为1-8个4个字节,V的长度不固定,由L的值表示,V的内容也可以嵌套子TLV格式。举例:假设消息按大端模式存放,T占4个字节,L占2个字节,下面的消息: unsigned char pMsg

2014-08-17 17:38:09 10754

原创 笔记:Vmware安装提示The MSI failed

之前的ubuntu由于直接关机导致文件损坏,将虚拟机卸载重装安装,报The MSI failed,安装失败,通过命令行方式安装成功,记录之。  方法如下:  1、cmd命令进行安装文件所在目录;  2、执行VMware-workstation-full-9.0.1-894247.exe /z "action"="install"  3、按提示点Next即可。

2013-06-17 00:05:48 3739

原创 AMPS:定时器模块源码解读

Timer模块的实现比较复杂,需要结合前面的文章《AMPS:定时器管理》才能有所理解,下面看看AMPS中的定时器实现,有些细节方面我也没有想清楚。 AMPS_Timer.h#ifndef __HEADER_AMPS_TIMER_H__#define __HEADER_AMPS_TIMER_H__#ifdef __cplusplus extern "C" {#endif#

2013-01-27 22:54:27 3078

原创 AMPS:Cache模块源码解读

这里讲的Cache并不是通常说的计算机存储系统中的高速缓存,而是软件层面的缓存,它的做用主要是为了提高数据处理的效率。在AMPS中,Cache的结构如下:/*Cache结构*/struct _AMPSCache{ void* pvHASHTable; /*Hash表,用于查找*/ void* pvHeap; /*堆,用于增删改*/ int nCacheSize;

2013-01-27 16:33:11 2758

原创 AMPS:内存管理模块源码解读(二)

上节看了AMPS中通过数组+单链表实现的内存池,本节看看另一个实现方式。此方法思路如下:其内存池结构为一个存放已分配内存信息的双链表,一个表示内存池大小的变量,一个指向当前内存链表结点的指针链表,如下:/*内存池结构*/struct _newMMContext{ t_AMPSDList* memBuffList; /*结点链表*/ int nSizeOfBuff;

2013-01-27 15:28:39 3042

原创 AMPS:内存管理模块源码解读(一)

在AMPS中,使用内存池来管理内存,具体机制见之前的文章《AMPS:内存管理(二)》,在代码中,使用了两种实现方式,第一种是数组+单链表。今天先看看这个方式下的内存池实现。AMPS_MemoryMgt.h#ifndef __HEADER_AMPS_MEMORY_MGMT_H__#define __HEADER_AMPS_MEMORY_MGMT_H__#include "AMPS_

2013-01-27 12:39:44 3214

原创 AMPS:Oracle数据库操作模块源码解读

本节看看AMPS中对Oracle数据库进行操作的方法,使用的是Oracle的C访问接口OCI,关于OCI各函数的中文说明可参考这篇文章http://www.cnblogs.com/joeblackzqq/archive/2011/04/24/2026461.html 下面看看AMPS中Oracle操作各函数实现: AMPS_Oracle.h#ifndef __HEADER_AMPS_D

2013-01-25 23:09:38 3306

原创 AMPS:MySQL数据库操作模块源码解读

本节看看在AMPS中对MySQL数据库的访问操作,它使用MySQL提供的C API接口进行访问,具体各API的使用可参考http://dev.mysql.com/doc/refman/5.6/en/c-api-function-overview.html。 下面看看AMPS中的实现:  AMPS_MySQL.h#ifndef __HEADER_AMPS_MYSQL_ENGINE_H#

2013-01-25 21:50:03 3312

原创 AMPS:数据库访问模块源码解读

AMPS做为一个中间件,也提供了访问数据库的接口,目前支持MySQL和Oracle(对我所喜爱PostgreSQL却默认不支持,看来我的爱好属于非主流哈~),下面要看的是DBEngine库,它只做一件事情,就是封装了不同数据库操作的差异,提供一个数据库统一访问接口。下节再看针对不同数据库的具体操作。AMPS_DBEngine.h#ifndef __HEADER_AMPS_DB_ENGI

2013-01-25 00:12:10 3090

原创 AMPS:日志模块源码解读

看看AMPS中的日志模块,有两种写日志的方法,一是直接使用封装好的API函数写,另一种是通过应用层注册的日志回调函数,利用事件管理机制来写。  AMPS_Log.h#ifndef __HEADER_AMPS_LOG_H__#define __HEADER_AMPS_LOG_H__#include #include "AMPS_SystemAPI.h"#include "AMP

2013-01-24 23:34:29 2893

原创 AMPS:AES模块源码解读

AES(Advanced Encryption Standard,高级加密标准)是一个对称密钥加密算法,密钥长度则可以是128,192或256比特。 算法思路(详细信息请见维基百科):  AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“体(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。(Rijndael加密法因支持更大的区块

2013-01-23 23:48:58 5647

原创 AMPS:MD5模块源码解读

MD5是用于确保信息传输完整一致性的一个哈希算法。 其算法思想如下(摘自维基百科):    MD5是输入不定长度信息,输出固定长度128-bits的算法。经过程序流程,生成四个32位数据,最后联合起来成为一个128-bits散列。基本方式为,求余、取余、调整长度、与链接变量进行循环运算。得出结果。 是 XOR, AND, OR , NOT 的符号。

2013-01-23 22:16:43 3082

原创 AMPS:字符串操作源码解读

字符串处理在软件中非常普遍,AMPS使用C语言编写,所有没有像 标准C++提供的string一样的类型,所以对字符串的处理就是对char *这样的指针处理,为了处理方便,AMPS定义了自己的String类型,如下:typedef struct _AMPSString t_AMPSString;struct _AMPSString{ unsigned char* puchData;

2013-01-21 23:42:36 3034

原创 AMPS:哈希表源码解读

Hash表也是一种常用的数据结构,AMPS中的Hash表并不是给使用者提供一个散列函数,而是仅提供一个创建和维护Hash表这样一个结构的一组函数,针对不同的应用或者数据,由用户自己定义其要使用的散列函数,AMPS中,Hash表组成结构是如下的拉链式结构。下面看看AMPS中对Hash操作的代码:AMPS_Hash.h#ifndef __HEADER_AMPS_HASH_H#

2013-01-21 22:24:51 3463

原创 AMPS:堆源码解读

堆是一种比较复杂的数据结构,也就是通常所说的完全二叉树,分为最大堆和最小堆,定义如下:最大堆:根结点的键值是所有堆结点键值中最大者的堆。                 最小堆:根结点的键值是所有堆结点键值中最小者的堆。                 而最大-最小堆集结了最大堆和最小堆的优点,这也是其名字的由来。 最大-最小堆是最大层和最小层交替出现的二叉

2013-01-20 17:09:26 2827

原创 AMPS:队列源码解读

队列概念很简单,就是排队,先进先出,通常有链表形式和数组形式(即链接类型和顺序类型),它也是软件构建的一个基本数据结构,看看AMPS中的队列实现。 AMPS_Queue.h#ifndef __HEADER_AMPS_QUEUE_H#define __HEADER_AMPS_QUEUE_H#ifdef __cplusplusextern "C" {#endif#includ

2013-01-19 20:35:38 2638

原创 AMPS:双向链表源码解读

本节在上节单向链表的基础上看看AMPS中对双向链表的实现,与单向链表相同,双向链表在软件中的使用也相对比较广泛,在后面要讲到的Hash表、定时器、内存管理等模块中都会见到以双向链表作为基本数据结构。其实,双向链表在实现上使用了很多单向链表的操作,仅在插入、删除结点时需要多操作几步,所以理解了单向链表,这块就比较好理解了。  同样,AMPS提供了以下API对双向链表进行操作:  AMPS

2013-01-19 16:36:34 2865

原创 AMPS:单向链表源码解读

像单向链表、双向链表、堆、栈等这些基本的数据结构在大型软件中均有很广泛的使用,所以今天看一下AMPS中单向链表的操作函数库,其定义了单向链表的非常多的操作API,且提供了回调函数接口,从而使链表结构用于不同类型的结点,且可以使用户自定义的函数来实现链表排序、结点操作。所以这部分的代码可以做为常用的工具代码,可以在其他项目中广泛应用。 先看看AMPS提供的单链表操作接口有哪些?如下,由函数名称就

2013-01-19 12:42:55 2690

原创 AMPS:Trace模块源码解读

从本节起,开始分析AMPS各模块的源码,其中主要地方均加了中文注释。  跟踪功能与通常软件使用的日志功能类似,但记录的信息比日志更详细,通过它可以看出整个代码的运行轨迹,AMPS支持多以下几种跟踪级别: ERROR WARNING DEBUG DEBUG_2 INFO 并支持如下三种跟踪模式:  终端界面显示模式 文件记录模式   以上两种模式并存    下面是

2013-01-19 00:51:30 1655

原创 AMPS:定时器管理

定时器模块是协议服务器的关键组件之一,几乎每个协议软件都设计有超时机制。在多线程的软件中,定时器的最大问题是去除了异步,这使得保护每个会话相关的数据结构变得不可避免。APMS提供了基本的定时器管理API,主要的设计目标如下: 定时器实现必须高效,在定时器相关的任何操作中不应该有查找或排序。且启动、停止、超时处理必须的时间复杂度必须为O(1)。 定时器实现必须可测量,必须支持长时间的超时

2013-01-16 23:29:37 1802

原创 AMPS:内存管理(二)

对于底层的内存管理,AMPS提供了另外一种优化机制,一旦使用底层的内存分配函数(如C的malloc)为内存对象分配好一个大的buffer后,当这个内存对象销毁时,AMPS将这个本来要ree掉buffer存储在一个内部按内存块大小化分的free链表中,这样,当有新的内存对象需要分配时,AMPS先检查这个链表中是否有满足条件(即是否满足所申请的大小)的内存对象,如果有,从此链表中获取,从而避免了调用m

2013-01-15 22:51:45 1702

原创 AMPS:内存管理(一)

高效的内存管理是卓越的软件产品的必备特征,如果在分配和释放内存时包含了代价高昂的查找、排序、重新组合操作,内存处理可能会成为系统性能的瓶颈。AMPS内存管理子系统的设计目标如下:内存管理必须快且系统开销小。在不引入垃圾收集器的前提下尽可能地减少内存泄露。内存分配后保持相对长的时间来减小释放引起的系统开销。  AMPS通过以下方法达到如上目标:   应用协议服务器通常以突然爆发的

2013-01-14 23:21:38 1291

原创 AMPS:非阻塞模块和I/O代理

AMPS中模块分为非阻塞、阻塞和I/O 代理两种类型。  无阻塞模块:如发送和接收网络消息,或者读写文件。  阻塞模块和I/O代理:               有些场景下阻塞可能无法实现,例如DNS查询或者数据库交互。这种场景下,AMPS要求开发者以I/O代理的形式创建模块,I/O代理准备I/O请求,并花大量时间等待操作完成,它由一个事件调度器和一个线程池组成。池中的每个线程关联

2013-01-13 22:49:15 1033

原创 AMPS:应用程序模型

建立于AMPS之上的应用程序核心模型是独立的、无阻塞、事件驱动的。其显著特点如下:  应用程序为一个有限状态机(FSM),当事件发生时改变状态。  应用程序由一组模块组成。  每个模块又细分为一个函数,称做事件句柄,每一个事件句柄处理一个有限状态机状态切换的事件。  对于阻塞的操作,处理必须中止,如果不这样,那就不能使用异步单线程框架,可以通过I/O Agent来实现。  有I/O操作

2013-01-13 21:15:01 1301

原创 2013年学习计划

通常应该在上一年年底时制定下一年计划,可最近一段时间工作实在太忙,无暇去思考这个,就像每年年终的工作总结,总是一拖再拖。  刚大概翻了下博客,2012年写了78篇博文,python相关的占了90%,通过大半年的自学,对其有了一点点了解,遗憾的是工作中却用不到,以至于对其没有更深入的理解,另外花了几天时间看了下android相关的文档,写个简单的地图应用做为练习,后来放弃学这个了,一是没有很好的

2013-01-12 12:10:11 828

原创 AMPS:事件管理

1、AMPS中的事件类型有请求、响应、通知。2、模块间通信:  Figure 1(a)中module1产生一个请求R1,module2注册了这个请求,事件调度程序将这R1传送给module2,module处理请求后产生RES1,module1注册了RES1,所以结果被传送到module1。  Figure1(b)中module广播消息到所有模块,它产生带有信息的通知事件N1,m

2013-01-11 22:41:50 1001

原创 Python:DNS客户端实现

这两天在测试IPV6与DNS,晚上查了下资料,写了个DNS客户端,其中请求消息编码部分参考网上实例。 刚完成了编码,功能还没有测试。1、代码:#!/usr/bin/env python# -*- coding: utf-8 -*-import ConfigParserimport socketimport time import stringimport

2013-01-05 22:19:39 5671 2

转载 软件:防止代码变质的思考与方法

本文转自:http://impd.tencent.com/?p=1001、软件长期运营存在什么问题一个大规模的客户端软件的生命周期中,我们可以把它分为两个比较粗的时期。一个是前期的搭建软件的时期,即从无到有的时期;第二个是搭建完成之后,进入的一个稳定的运营时期。第二个时期才是最关键的,在这个时期我们会持续的迭加需求,持续的优化功能,而且第二个时期也是代码在慢慢变质的时期。 在这个时期,

2013-01-05 22:16:03 865

转载 Linux: tar.gz、tar、bz2、zip等解压缩、压缩命令小结

本文转自:http://www.jb51.net/LINUXjishu/43356.htmlLinux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进 行压缩了,所以首先就来讲讲tar命令的基本用法:   tar命令的选项有很多(用man tar可以查看到),但常用的就那么

2013-01-05 22:14:22 1079

原创 Linux:命令执行控制&&与||

1、&&  方式:command1 && command2  如果command1执行成功,则执行command2-rw-rw-r-- 1 kevin kevin 0 9月 11 00:55 1.log[kevin@kevin test]$ ll总用量 4-rw-rw-r-- 1 kevin kevin 0 9月 11 00:55 1.log[k

2013-01-05 22:12:37 2165

原创 Python:读取新浪微博收听列表

代码:#!/usr/bin/env python# -*- coding: utf-8 -*- from weibo import *import time def press_sina_weibo(): APP_KEY = '220567xxxx' APP_SECRET = '47970abb02d8f7b4d600d98e9b1fxxxx'c99'

2013-01-05 22:11:40 2833 2

原创 Python: 发送新浪微博(使用oauth2)

1、申请个应用,得到App Key和App Secret2、设置授权回调页地址,如下,如果不设置,打开回调页时会报错“error:redirect_uri_mismatch”,这一点一定要注意。3、代码:#!/usr/bin/env python# -*- coding: utf-8 -*- from weibo import * def pr

2013-01-05 22:07:41 6836 17

原创 Linux:使用()执行一组命令

在子shell中执行一组命令。方式:(command1 ; command2 ; command3)如果不带(),则在当前shell中执行。[kevin@kevin ~]$ ll总用量 8drwxrwxr-x 2 kevin kevin 4096 9月 11 01:07 test[kevin@kevin ~]$ pwd;cd test;ls -l;pwd

2013-01-05 22:05:05 999

原创 Linux:标准输入、输出、错误

1、文件描述符文件文件描述符 输入文件0输出文件1错误输出文件22、将标准输出和错误输出重定向到同一个文件:2>&1kevin@kevin:~/mybash$ cat test.sh #/usr/bin/bash name=kevinecho $n

2013-01-05 22:04:23 2547

原创 Linux:tee命令

作用:将输出不仅显示在标准输入设备上,而且同时输出到文件中。举例:kevin@kevin:~/mybash$ ifconfig | tee ipinfo.logeth0 Link encap:以太网 硬件地址 00:0c:29:7f:cb:e2 inet 地址:192.168.1.100 广播:192.168.1.255 掩码:25

2013-01-05 22:03:45 1988

原创 Linux:echo、read、cat命令

1、echo  不换行 -n举例:echo –n “My name is:”   执行命令:      举例:kevin@kevin:~/mybash$ echo "My home dir is:$HOME my current dir is:`pwd`"My home dir is:/home/kevin my current dir is

2013-01-05 22:03:00 2966

原创 Linux:后台命令crontab、at

1、crontab使用举例每天23:00向/tmp/datecon.log文件中写入系统日期kevin@kevin:/opt/d00148588$ crontab -lno crontab for kevinkevin@kevin:/opt/d00148588$ crontab -eno crontab for kevin - using an empty one

2013-01-05 22:01:35 1420

原创 Linux:find命令使用

1、查找/var/logs目录中更改时间在7天前的普通文件find /opt -type f -mtime +7 -exec ls -l {} \;2、在当前目录下查找文件内容包含main的文件root@kevin:/opt/d00148588# find . -print | xargs grep "main"二进制文件 ./test 匹配./te

2013-01-05 22:00:42 1000

pclint(VC6.0和SourceInsight下的配置文件)

VC6.0和SourceInsight下的pclint配置,具体步骤见文章:http://blog.csdn.net/dyx1024/article/details/38807059

2014-08-25

多功能抓图工具(附源码)

使用python实现的抓图工具,简介如下: 本工具提供抓图功能(包括全屏、当前窗口、任意区域),且有两种操作方式: 一、程序运行后,在桌面右下脚托盘图标上点右键,选择弹出的菜单项进行抓图操作。 二、通过快捷键进行操作,各快捷键定义如下: 1、抓取全屏,快捷键CTRL+F1 2、抓取当前窗口,快捷键CTRL+F2 3、抓取所选区域,快捷键CTRL+F3

2012-04-07

CameraDll.dll

http://blog.csdn.net/dyx1024/article/details/7340903中使用到的QQ抓图用的动态库。

2012-03-13

C核心技术手册 (又名:C - In a Nutshell中文版)

目前还没翻译完成,持续更新中,第一次翻译,遇到其中的错误请大家留言提醒,谢谢。

2011-01-23

SSL & TLS Essentials. Securing the Web.pdf

http://d.download.csdn.net/down/987659/cheyong007

2009-09-03

空空如也

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

TA关注的人

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