自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yanchong_RD的专栏

Open source

  • 博客(32)
  • 资源 (16)
  • 收藏
  • 关注

原创 Redis源码学习之【暂停说明】

由于要去实习,暂时中断Redis源码学习系列博客的撰写工作,后续会在尽快抽时间完成整个系列文章的撰写。

2013-03-20 12:21:19 1213

原创 Redis源码学习之【命令协议格式】

介绍本来这篇要介绍Redis的命令解析的,但是要想对Redis的命令解析有更直观的了解,必须先了解Redis的命令协议格式。源码暂无(或者是是在network.c中吧)分析Requests* CR LF$ CR LF CR LF...$ CR LF CR LFRedis最新支持的二进制安全的请求通用格式如上所示。具体的实例有:*3$3

2013-03-18 14:09:17 4282

原创 Redis源码学习之【网络通信框架】

介绍前面两篇文章主要介绍了Redis对epoll和socket 的封装,这篇就开始详细介绍Redis网络通信的具体实现。简单说来Redis的网络通信主要实现了服务器监听客户端连接并处理的主要流程和实现。源码networking.c分析网络通信流程说明Redis网络通信主要原理和一般的异步网络编程框架类似,都是使用服务器端的socket进行监听到来的连接然

2013-03-18 10:29:34 3817

原创 Redis源码学习之【Tcp Socket封装】

介绍Redis对linux socket的封装,虽然在该封装中也含有对unix socket的封装,但是普遍来说使用的tcp socket。和上一篇的epoll的封装类似,都是通过调用底层的socket的函数完成一些列的方便的函数调用封装。源码anet.h anet.c分析主要包含以下几个封装函数(这里仅介绍关于Tcp socket的封装函数)anetTcpconnect:

2013-03-18 08:48:36 4694

原创 Redis源码学习之【epoll封装】

介绍在上一篇博文中说到了在Redis 的事件处理中使用到了底层的linux epoll,根据Redis的实现可以使用其他的多路通信层,但是在一般的linux服务器中使用的最多的还是epoll所以这里主要介绍一下epoll。Redis并没有直接的使用linux的epoll而是对其进行了一个简单的封装。源码ae_epoll.c分析在原有的linux epoll的基础上进行封装,主要

2013-03-17 15:20:51 3137

原创 Redis源码学习之【事件机制】

介绍Redis实现了自己的一套和libevent类似的事件驱动机制,主要用于处理时间事件和文件事件。文件事件底层主要是指网络IO事件的处理,底层使用的可能是select,epoll,或者是kqueue。Redis使用自己实现的AE而不是像memcache使用的libevent使得其性能更好,因为libevent为了其通用性增加了很多扩展功能显然会降低使用它的性能。源码ae.h ae.c

2013-03-17 14:00:13 5163

原创 Redis源码学习之【哈希字典】

介绍Redis的哈希字典通过key值来找对应的value。需要注意的是Redis的字典是如何进行rehash的。源码dict.h dict.c数据结构如上图所示,哈希字典用dict结构体表示,其中含有两个哈希表,主要用于进行rehash操作。同时哈希表使用量表的方式解决冲突。具体的数据结构如下:/* * 哈希表节点 */typedef struct dic

2013-03-16 16:34:39 2785

原创 Redis源码学习之【内存分配】

介绍Redis现在的版本可以支持使用tcmalloc或者是jemalloc或是apple的malloc,或者是Redis自己的zmalloc。zmalloc对内存的分配管理是线程安全的,而且分配的内存必须要求是以sizeof(long)对其的。源码zmalloc.h zmalloc.c分析宏变量说明:PREFIX_SIZE:在实际分配的内存之前用于记录分配的内存的大

2013-03-16 15:25:42 1559

原创 Redis源码学习之【动态字符串】

介绍由于在标准C中没有字符串这一类型,因而Redis实现了一个自己的字符串sds。源文件sds.h sds.c分析数据结构// sds 类型typedef char *sds;// sdshdr 结构struct sdshdr { // buf 已占用长度 int len; // buf 剩余可用长度 int free;

2013-03-16 14:39:29 1187

原创 Redis源码学习之【链表】

介绍Redis自己实现了一个含有迭代器的双向链表。基本功能就是通用的双向链表,源码实现还是值得阅读以下的。源文件adlist.h adlist.c分析这里主要介绍其主要的数据结构其他的链表相关的操作有兴趣的话可以自己去看源码,其中的细节tricky还是挺多的。/* Node, List, and Iterator are the only data structures

2013-03-16 10:11:10 1176

原创 Redis源码学习之【前言】

前言之前言本来上年的时候要参与到一个关于Redis中的项目中的,但是由于临时的决定参与到了其他的项目。心中一直对Redis可以说是念念不忘,印象最深的是当初一开始听到Redis的时候,说它是数据库中的AK-47。而作者SalvatoreSanfilippo在实现Redis的时候完全按照标准C进行编写,一切需要的数据结构和算法都是自己实现。编码风格是将编出来的代码像诗歌一样优美。Redi

2013-03-16 10:03:07 1684

原创 Python 哲学

以下关于Python的几个菜鸟看法是最近在详细学习Python中的一些感受。实用往往会胜过美观习惯了c c++ java等语言的人在看到Python编写出来的代码的时候,往往会感觉到Python不如C那样宛如诗歌一样优美,但是Python却是以实用为主的。例如Python中的三重引号的使用。尽可能自动化,方便开发者Python在不断地发展演进中一直在提供更多的内建方法属性帮助开发人

2013-03-14 21:09:53 1727

原创 linux 网络编程【五】 非阻塞通信epoll

Epoll引入Epoll在linux 2.6内核中引入,替代了以前的select/poll模型,能够充分支持linux下的大规模并发网络程序。Epoll和其他linux下并发网络程序对比PPC典型的Apache模型,Process Per Connection,为每一个新的连接创建一个进程进行相关的处理。TPCThread Per Connection,为每一个新的连接创建

2013-02-23 08:24:53 5204

原创 linux 网络编程【四】 非阻塞通信poll

函数原型#include int poll(struct pollfd fds[], nfds_t nfds, int timeout);typedef struct pollfd {        int fd;                               /* 需要被检测或选择的文件描述符*/        short events;

2013-02-22 17:44:49 3461 1

原创 linux 网络编程【三】 非阻塞通信select

函数声明select函数int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);说明:int maxfdp是一个整数值,是指集合中所有文件描述符的范围,即所有文件描述符的最大值加1。fd_set *readfds是指向fd_set结构的

2013-02-22 16:09:27 2663

原创 linux 网络编程【二】 基本阻塞通信

基本流程服务器端声明句柄fd和网络地址sockaddr_in赋值sockaddr_in为服务器的端口和INADDR_ANY表明监听任意连接调用socket函数创建一个socket并赋值句柄为fd调用bind函数将句柄fd和网络地址sockaddr_in进行绑定调用listen函数开始监听客户端的连接调用accept函数获得连接的客户端调用send recv函数进行数据发

2013-02-22 15:39:38 976

原创 linux 网络编程【一】 socket地址

linux socket中三种地址sockaddr普通的socket地址typedef unsigned short sa_family_t;struct sockaddr { sa_family_t sa_family; /* address family, AF_xxx */ char s

2013-02-22 15:20:24 915

原创 mfc中的双缓冲机制

简单来说其基本的概念:专门设定一个暂时存储图形信息的内存,将所有暂时的画图内容先放到暂存CDC中,然后再放入完所有的以后调用.具体实现步骤1.首先是定义一个暂时的设备上下文CDC h_BufDC; // 双缓冲层CBitmap memBitmap;

2011-08-17 16:10:30 1938

原创 利用QT制作自定义控件

<br />1.         首先利用QT crearot 创建一个自定义控件项目,在创建的过程中要指明创建的类和创建的类的实例名称。这样在以后使用的过程中可以直接使用。此处还得指明icon图标文件为了在designer中显示。<br />2.         在创建的项目中开始编写相应的处理函数,肯能主要的是重载onpaint函数,这样就可以设计出想要的自定义widget的内容。<br />3.         选择好版本进行编译。<br />4.         在编译后的运行目录下,用控制台命令运

2011-04-29 16:17:00 5846 6

原创 利用qt制作帮助文档

<br />利用qt制作帮助文档<br /> 创建文档和自定义的qt assistant<br />1.         创建文档即是一些html文件,这里可以使用qt提供的工具像是qdoc 和Doxygen生成帮助的html文档。<br />2.         组织文档结构用于qt assistant<br />a)         创建qt help project(.qhp)<br />                         i.              定义命名空间命名空间必须是唯一的

2011-04-29 16:15:00 8031 1

原创 corba 的c++实现(vs2005)

<br />配置corba和vs2005结合的环境<br />一、下载OmniORB<br />http://sourceforge.net/projects/omniorb/files/<br />VS2005下载omniORB-4.1.4-x86_win32-vs8.zip,VS2008下载omniORB-4.1.4-x86_win32-vs9.zip<br />下载后解压到任意目录即可,本人解压后为D:/DevAssist/omniORB-4.1.4<br />二、配置环境变量<br />计算机右键单

2011-02-25 13:52:00 2263

原创 QT 模拟鼠标事件

<br />模拟鼠标按键<br />和模拟键盘按键类似,也是通过发送相应的事件来实现的,安装相应的事件监听器,具体发送事件:<br />QPoint pos;<br />pos.setX(88);<br />pos.setY(58);<br />QMouseEvent *mEvnPress;<br />QMouseEvent *mEvnRelease;<br />mEvnPress = new QMouseEvent(QEvent::MouseButtonPress, pos, Qt::LeftButton

2010-12-27 08:55:00 11367

原创 QPlainTextEdit 理解

<br />QPlainTextEdit 是QT中一种高级的用于支持纯文本的显示和编辑控件。它被优化用来专门处理大文件和给予快速的用户反应。<br />QPlainTextEdit 采用的大多数的技术和QTextEdit差不多,但是被优化用来处理纯文本文件。<br />QPlainTextEdit 以paragraphs 和 characters为基本的处理单元。主要是用来做显示的,这尤其体现在当我们需要打开一个文件并显示其内容的时候,大多使用该类。再具体的信息可以参见qt assistant

2010-12-08 13:45:00 5354

原创 qt隐藏鼠标指针

对于整个程序来说的话QApplication::setOverrideCursor(Qt::BlankCursor);或是QWSServer::setCursorVisible(FALSE);对单个控件来说的话:lable->setCursor(Qt::BlankCursor);   //隐藏鼠标label->setCursor(Qt::ArrowCursor);  //显示正常鼠标配置的时候./onfigurate的时候,设置no-mouse还是no-cursor哦,就不会显示了。或是在程序中定义宏QT_

2010-11-24 13:31:00 8602 1

原创 解决qt字体大小设置问题

    关于字体的设置,这里使用的是qpf字体是一种不可缩放的字体,点阵字体该种字体的优点是占用的内存小,特别适合嵌入式环境的开发,关于Qt支持的其他的字体可以去google查看具体的内容,这里主要说明的是qpf在qt中的存储每种名字的字体只能存储其中的一种字号,因而如果你想要使用多种的字号的字体的话就需要对其赋予不同的名字如:wqy12_120_50.qpf   wqy13_130_50.qpf.这样在程序中想用不同字号的字体的时候就可以指定相应的名字和字号以及粗细这样的参数,如此就可以了

2010-11-24 10:37:00 7296 1

原创 qt4.7.0的移植

一:环境介绍<br />虚拟机:vmware 7.0 <br />Linux 环境:ubuntu 9.04<br />交叉编译环境:arm-linux-g++ 3.4.5<br />硬件平台:TQ2440二:移植步骤安装交叉编译环境<br />由于这里使用的是QT2440管盘中提供的交叉编译工具链EABI-4.3.3_EmbedSky_20100610.tar.bz2,放在/opt/目录下解压<br />主要是在解压后可以看到其中含有两个版本,由于qt4.7.0的编译必须使用3.4.5版本所以在设置交叉编译

2010-11-24 10:36:00 4445 6

原创 CAN总线介绍

<br />CAN 总线介绍:<br />CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。<br />网络各节点之间的数据通信实时性强<br />  首先,CAN控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性

2010-11-16 09:58:00 1488

转载 Qt中的键盘事件

<br />在Qt中,可以使用 void QWidget::keyPressEvent ( QKeyEvent * k )来进行键盘响应,例如:<br />void Form1::keyPressEvent( QKeyEvent *k )<br />{<br />    if(k->key() == Key_A)<br />    {<br />      this->focusNextPrevChild(FALSE);//按A时焦点切换至上一部件<br />    }<br />    else if

2010-09-09 15:34:00 1456

原创 使widget 没标题栏时仍可拖动

<br />正如我们所知,当有标题栏时,我们是可以随便拖动窗口的,但是有时我们希望创建的窗口时没有标题栏的,而此时要想拖放该窗体,我们就得另想办法了,其实最简单的思路就是重载窗体的mousePressEvent和mouseMoveEvent两个虚函数。其实这样做就是可以的,虽然看是去是3有点简单了。<br />void YourWidget::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) {

2010-09-06 19:35:00 1056

原创 QT 4.6.3 移植详细步骤(适合初学者)

<br />开发板:友善之臂 mini2440-128M<br />主机:   VMware 6.5 + Fedora 9<br />开发版内核:Linux 2.6.29<br />交叉编译器:arm-linux-gcc-4.3.2<br /> <br />*******************首先移植 用于触摸屏矫正tslib1.4**********************************************<br />1. 解压下载的tslib1.4压缩包 <br />  进入生成的目录,

2010-08-29 11:16:00 6569 3

原创 QT学习之 QT QTE QTcore QTopia

<br />     Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等。由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Qt都指用于Linux/Unix的Qt/X11。<br />    Qt/E(Qt/Embedded)是用于嵌入式Linux系统的Qt版本。Qt/E去掉了X Lib的依赖而直接工作于Frame Buffer上,因而效率更高,但它并不是Qt的子集,而应该是超集,部分机制(如QCOP等)不能用于Qt/X11中<br />    Qtopia

2010-08-29 10:11:00 935

原创 debug和release的区别

Debug和Release有什么区别?怎么把Debug转成Release ?1。Debug和Release有什么区别,为什么要使用Release版本!  2。怎么把Debug转成Release   转载:   Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看你采用的编译

2009-07-09 12:31:00 1105 4

corba 实例 (c++版)

用c++编写的corba基本通信实例,具体的实现可以参见我的博客

2011-02-25

corba实例(java版)

用java实现的corba的最基本的通信,具体的使用方法可以参看我的博客。

2011-02-25

QT带有滑动效果的图片浏览器

利用qt编写的图片浏览器,可以通过拖动滑动浏览,效果很炫

2011-02-22

Java游戏淘金者源码

Java游戏淘金者源代码!外国网站的东西。部分代码配合了C语言,游戏很小,想学习的朋友值得看一看。

2009-10-04

一个Java闹钟提醒小程序源代码

一个Java闹钟提醒小程序源代码,可以设置提醒周期、自定义提醒信息、在系统托盘显示图标,主要都是Java基础类的知识,用到了AWT类库,Java新手朋友闲暇时参考一下。

2009-10-04

j2me的Google地图及源程序

据说是j2me的Google地图及源程序,源码包的资源如上图,看上去很完整。

2009-10-04

j2me的Google地图及源程序

一款很不错的基于J2me的Java游戏源代码,1945飞行射击,飞机作战,这是第二版,比第一版更好玩,源代码完整,资源图片都在压缩包内,编译时候要导入支持库,网上有下载,祝你好运。

2009-10-04

Java 万年历源码

一个新手写的Java万年历源码,可以显示农历以及一些基本的节日。界面有点粗糙,因为只想着如何去实现程序,希望可以帮助像我一样菜的朋友们。

2009-10-04

Java超市进销存系统毕业设计完整版

这款毕业设计作品很难得,网上很少有同类软件是用JAVA写的。压缩包内的源码接近完整,带有SQL数据库文件,而且还附有设计文档,应该不错。这个进销存可以完成商品的查询及管理,可根据不同的时间段、不同的商品编码、进行相应的销售统计、商品进/出货、商品出/入库、商品付款单、商品采购、会员卡的增、删、改、查等

2009-09-17

Java毕业设计:图书管理系统

这是一个大学生的毕业设计作品,Java图书管理系统,包括全部源码和系统说明、程序结构文档等。不失为一个学习的好资料。

2009-09-17

MFC学习之模式对话框

用VC写的关于MFC中的模式对话框实例代码。

2009-07-13

MFC 学习之无模式对话框

用VC写的一个关于MFC无模式对话框的实例。

2009-07-13

GPS寻找最短路径程序

GPS寻找最短路径,本程序其实是一个简化版本,基本实现功能如下: 功能一: 输入:起点和终点(已知交通图) 输出:起点至终点的最短路径 功能二: 能够在已知的地图中加入新的城市,并且对其其他的功能不受影响,即 输入:新添加的城市名称以及与新添加的城市相连的其他城市,以及两城市之间的路径长度。 功能三: 如果用户在行驶过程中没有按照所给路线行驶,而经过了其他城市,要求此时再给出能够到达终点的最短路径,即: 输入:目前所在城市 输出:由此城市到达终点的最短路径 鉴于要实现以上功能其核心的操作应是如何寻找出两城市之间的最短路径,可以采用改进的单源点寻找路径方法,即Dijkstra算法,并用邻接矩阵来存储地图,鉴于会有加入新城市的功能所以需要将初始的网络图设计的大一些,即多设置几个节点。

2009-07-09

排课表程序(拓扑排序)

要求根据课程及先行课网络图,输出课表。其实就是先根据用户的输入来构造AOV网络图,并由此进行拓扑排序,最后输出课表。即: 功能一: 输入:课程及其先行课网络图 输出:一个课表 功能二(拓展功能): 输入:课程及其先行课网络图 输出:所有可能的课表 由于拓扑排序并不是唯一的,所以要求能够输出所有的拓扑排序,即为所有可能的课表。

2009-07-09

GPS寻找最短路径程序

GPS寻找最短路径,本程序其实是一个简化版本,基本实现功能如下: 功能一: 输入:起点和终点(已知交通图) 输出:起点至终点的最短路径 功能二: 能够在已知的地图中加入新的城市,并且对其其他的功能不受影响,即 输入:新添加的城市名称以及与新添加的城市相连的其他城市,以及两城市之间的路径长度。 功能三: 如果用户在行驶过程中没有按照所给路线行驶,而经过了其他城市,要求此时再给出能够到达终点的最短路径,即: 输入:目前所在城市 输出:由此城市到达终点的最短路径 鉴于要实现以上功能其核心的操作应是如何寻找出两城市之间的最短路径,可以采用改进的单源点寻找路径方法,即Dijkstra算法,并用邻接矩阵来存储地图,鉴于会有加入新城市的功能所以需要将初始的网络图设计的大一些,即多设置几个节点。

2009-07-09

svm算法(用VC写的)

用c++编写的svm算法,有实例分析。 是别人写的。对学习该种分类方法很有帮助。

2009-07-06

空空如也

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

TA关注的人

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