- 博客(51)
- 资源 (7)
- 收藏
- 关注
原创 设计模式备忘
编程是一门技术,更加是一门艺术一、 简单工厂模式1. 程序中注意点:1)变量命名要有意义。像:n1,n2等无意义的变量; nResult则表示结果意义。2)多分支时,能用switch则用switch。避免多个if。3)除法注意除数为0. 2. 实例:曹操吟诗,工匠刻版,需求改变时,耦合度过高而不灵活。 面向对象(继承、封装、多态)的好
2013-10-10 10:40:21
127
原创 cmake初步使用
cmake 实践如果只有几个文件,可以直接写Makefile,但是如果工程很大,则cmake省事很多。1. cmake的Hello world创建两个文件:main.c CMakeLists.txt(注意文件名大小写,大小写相关)1)main.c#include int main(){ printf("hello world!"); return 0;}
2013-09-11 16:03:34
572
原创 gcc中__attribute__ ((constructor(101)))做成.a库成功链接
1.cpp:------------------------------------------------#includeint test() __attribute__ ((constructor(101)));int test(){printf("\n--In lib--");return 0;}test.cpp //没有call 1.cpp中方法,但是希望在
2013-09-05 13:43:58
733
原创 dll lib小知识
.dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式..lib是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的lib文件在那里,lib文件也被称为是静态连接库.lib是编译时需要的,dll是运行时需要的如果你想使用lib文件,就必须: 1 包含一个对应的头文件告知编译器lib文件里面的具体内容 2 设置lib文件允许编译器去查找已
2013-08-06 18:01:56
416
原创 fcntl记录锁实例
fcntl 函数是一个相当常用的对文件进行加锁操作的函数。文件锁包括强制锁、建议锁、记录锁, 不过一般系统和内核都是用的强制锁。以下为记录锁的例子:-----------------------------------------------记录锁分为读锁、写锁。。读锁是共享锁,可以有多把,多个进程可以同时对一个文件读。写锁是互斥锁,同一时间只能有一个进程写文件。fcn
2013-08-01 18:09:43
1241
转载 linux inode理解(部分转载)
一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是
2013-07-16 22:31:55
1261
原创 查找
// ttt.cpp : //#include"stdafx.h"#include#includeusingstd::cout;usingstd::endl;#defineSIZE 8#if0int board[SIZE][SIZE] = {{1,1,5,5,1},{1,
2013-06-28 17:05:04
454
原创 用VS2005编译生成Lua库文件和解释器
TMD,本来很简单的东西,网上说的乱七八糟,说的也不明白,大家抄来抄去,估计都不自己实践的。。花了半个下午研究了一下,总结一下。1)下载lua工程文件,地址为http://www.lua.org/ftp/,我下载的lua-5.1.3.tar.gz版本;开始时我下载的是最新版本,结果没有.bat文件,费了好多时间,TMD。所以,如果想方便,就下载这个版本的。2)下载后,在Linux下面解压t
2013-06-27 16:25:06
1237
原创 linux信号总结
1. 每个信号都有一个名字,都以SIG开头。 信号被定义为正整数。 不存在编号为0的信号。 头文件是:signal.h2. 信号是异步事件。产生信号的事件对进程而言是随机的,进程必须告诉内核,当此信号发生时候,请执行以下操作。3. 信号处理方式,有三种: 1)忽略信号。 但是SIGKILL和SIGSTOP不能忽略。 2)捕捉信号。 通知内核在某个信号发
2013-04-11 22:52:36
2626
原创 守护进程+记录锁阻止程序重复运行
守护进程:void Init_Daemon(){ int pid; pid = fork(); if(pid > 0) //parent exit(0); else if(pid exit(1); //子进程继续执行。父进程终止 setsid(); if(pid =
2013-03-21 18:47:09
690
原创 结构体内存对齐问题,方便理解内存对齐导致的结构体大小问题
结构体内存对齐:为了提高CPU的存储速度,VC对一些变量的起始地址做了“对齐”处理。在默认情况下,VC规定各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。structMyStruct { double dda1; char dda; int type }; 对结构MyStruct采用sizeof会出现什么结果呢?s
2013-02-22 09:43:32
681
原创 简单聊天工具,未添加传输文件的过程,道理类似
聊天程序,Client端代码及解释:1)各Client上线,通过客户端list列表可以查看在线用户,双击在线用户,即可交谈。2)Client交流内容需要经过Server端,这样可以保证信息过滤。核心:在服务端定义一个map,保存客户端IP:Port和socket对应关系 客户端上线后,在服务端保存Client的localName:ip:port到一个双向链表中,方便添加删
2013-01-15 11:09:50
930
1
原创 简单聊天工具,未添加传输文件的过程,道理类似
接上面Server部分 五、DealMsg.h/********************************************************************File name: DealMsg.hAuthor: lieyingshengbao Version: 1.0 Date: 20
2013-01-15 11:07:14
477
原创 简单聊天工具,未添加传输文件的过程,道理类似
聊天程序,Server端代码及解释:1)各Client上线,通过客户端list列表可以查看在线用户,双击在线用户,即可打开窗口交谈。2)交流方式:Client交流内容需要经过Server端,这样可以保证信息过滤。核心:在服务端定义一个map,保存客户端IP:Port和socket对应关系。 客户端上线后,在服务端保存Client的localName:ip:port到一个双
2013-01-15 11:06:09
432
转载 MFC实现状态栏(转)
1.首先在string table 里添加两个字串,ID分别为IDS_INDICATOR_MESSAGE and IDS_INDICATOR_TIME2.在你的 dlg.h 类里面加个 CStatusBar m_bar;3.在dlg.cpp 开头加上static UINT indicators[] ={ IDS_INDICATOR_MESSAGE, IDS_
2013-01-05 13:52:00
450
原创 MFC画线
MFC画线:1、画线: 1)DrawView.h中: 定义CPoint m_ptOrign; DrawView.cpp中: 在DrawView的OnLButtonDown消息中, //鼠标按下消息 保存鼠标左键按下的point。 m_ptOrign = point; 在DrawView的OnLButton
2012-12-14 13:54:28
5512
原创 MFC几种常用tools加载
1. 基于Dialog添加菜单Menu 1)先添加菜单(IDR_MENU1)资源,加上需要的菜单项。 2)在对话框的属性中选择Menu加载IDR_MENU1即可。注意:如果想通过代码方式在程序中生成Menu: 1)在Dlg.h中定义:CMenu m_menu; //此变量不能定义为局部变量 2)在Dlg.cpp的OnInitDialog()中:
2012-12-13 18:01:29
836
原创 C++可扩展的编程模式
注意:设计原则----尽量不要去修改基类内容,有新的东西要从派生类中去实现。层层派生。派生模式使得可扩展、#ifndef WIN_32_TEST_H#define WIN_32_TEST_H#include #include #include using std::endl;using std::cout;using std::string;//钟表的几种颜色
2012-12-13 14:54:28
553
转载 CMarkupstl解析XML结构,比较简单
MarkupSTL.h// MarkupSTL.h: interface for the CMarkupSTL class.//// Markup Release 8.1// Copyright (C) 1999-2005 First Objective Software, Inc. All rights reserved// Go to www.firstobject.com
2012-12-08 15:17:51
104
原创 哈希表建表、查找元素
//根据关键字和哈希函数,建立哈希表,基于线性探测再散列解决冲突方法。void BuildHashTable(int cArryKey[], int cArryHashTable[], int nLen){ int *pKey = cArryKey; int *pHashTable = cArryHashTable; bool *pMark = new bool[nLen];
2012-11-29 16:52:00
690
原创 编码转换的方法(UNICODE/ASCII/UTF-8)
参考了网上一些方法:所谓的短字符,就是用8bit来表示的字符,典型的应用是ASCII码. 而宽字符,顾名思义,就是用16bit表示的字符,典型的有UNICODE. 常用的代码页有CP_ACP和CP_UTF8两个。 使用CP_ACP代码页就实现了ANSI与Unicode之间的转换。 使用CP_UTF8代码页就实现了UTF-8与Unicode之间的转换。 1. AS
2012-11-28 16:01:42
5134
原创 二分法查找
优点:查找速度快;平均性能好;缺点:必须是有序表 思路:假设表中元素按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功; 否则利用中间位置将表分成前后两部分,若中间位置的记录关键字大于查找关键字,则进一步查找前一字表、否则查找后一字表。。重复过程,直到成功或失败。int BinSearch(int a[], int nBeginPos, int nEnd
2012-11-26 20:01:28
473
原创 线程池实现接收消息,任务分发器按照CommandId分发给不同处理器处理。(之前不够完善,现在是修改、测试通过了)
按照文件排序:1. ThreadPoolBase.h/********************************************************************File name: ThreadPoolBase.hAuthor: lieyingshengbao Version: 1.0 Date:
2012-11-23 10:11:10
1862
原创 VC++第一讲程序---WinMain
/********************************************************************File name: WinMainAuthor: lieyingshengbao Version: 1.0 Date: 2012-11-22Description: 本文件提供Win
2012-11-22 10:16:33
458
原创 MFC 实现划线左右滚动(有闪屏问题,双缓冲技术未解决)
#define IDR_MENU_SET 1115#define ID_SET_WIDTHCOLOR 1116 #define Black RGB(0,0,0)#define Red RGB(255,0,0)#define Green RGB(0,255,0)#define Blue RGB(0,0,255)
2012-11-14 15:04:35
818
原创 C++实现Huffman树
#include "stdafx.h"#include using std::cout;using std::cin;using std::endl; //存储HuffmanTree的数据结构typedef struct tagHuffmanTree{ unsigned int nWeight; unsigned int nParent,nLchild,nR
2012-10-24 14:13:30
1317
原创 C++实现Huffman树
#include "stdafx.h"#include using std::cout;using std::cin;using std::endl; //存储HuffmanTree的数据结构typedef struct tagHuffmanTree{ unsigned int nWeight; unsigned int nParent,nLchild,nR
2012-10-24 13:55:35
188
原创 C++ 操作符重载
1. 通过操作符重载,程序员能针对类类型的操作数定义不同的操作符版本。2. 重载操作符是具有特殊名称的函数:保留字operator后接需定义的操作符符号。 重载操作符的形参数目(包括this指针)要与操作符的操作数数目相同。例如:二元操作符则需要两个形参;一元操作符只需要一个形参。3. 重载操作符必须具有至少一个类类型或枚举类型的操作数。这条规则强制重载操作符不能重定义用
2012-10-22 11:15:21
386
原创 C++ 友元
一、使用方法: 1.在类体内进行说明(在函数前加上friend关键字) 2.在类体外进行实现。参数是传递的类对象 3.调用时,同普通函数一样,不要像成员函数那样调用。 注意点: 友元不是成员函数,但是它可以访问类中的私有成员.但是它破坏了类的封装性和隐藏性. 友元
2012-10-21 10:59:37
509
原创 C++ 复制构造函数
1. 概念:只有单个形参,而且该形参是对本类类型对象的引用(常用const修饰)。2. 首先看一个小例子:.h中:class Test{public: Test(int m,float n):a(m),b(n) { }private: int a; float b;};.cpp中:int main(){ Test
2012-10-19 11:51:10
518
原创 C++ 复制构造函数
1. 概念:只有单个形参,而且该形参是对本类类型对象的引用(常用const修饰)。2. 首先看一个小例子:.h中:class Test{public: Test(int m,float n):a(m),b(n) { }private: int a; float b;};.cpp中:int main(){ Test
2012-10-19 11:01:34
142
原创 常用数据结构---线索二叉树(包括线索化二叉树和遍历)
// ThreadTree.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;typedef enum Symbol{ link, Thread}Symbl;typedef struct tag
2012-10-17 14:21:02
738
原创 常用数据结构---非递归中序遍历二叉树(利用栈)
// Tree.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;const int STACKSIZE = 10;const int INCREASEMENT = 10;enum Symbol{
2012-10-17 14:19:53
653
原创 常用数据结构---栈
// Stack.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using std::cout;using std::endl;#define STACK_INIT_SIZE 100#define STACKINCREASEMENT 10
2012-10-17 14:18:33
234
原创 常用数据结构----队列
// Queue.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include using namespace std;enum Symbol{ Success, Failed};typedef struct tagNode
2012-10-17 14:05:23
223
原创 常用数据结构---双链表
// DoubleList.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using std::cout;using std::endl;typedef struct tagDoubleList{ int nData; struct
2012-10-17 14:04:00
472
原创 常用数据结构---单链表实例
#include "stdafx.h"#include using std::cout;using std::endl;typedef struct tagList{ int nData; struct tagList *pNext;}List_S;int _tmain(int argc, _TCHAR* argv[]){ List_S* pNode
2012-10-17 14:03:12
417
原创 Windows下“通用线程池+消息分发器+消息处理器”----架构流程说明
总体上,服务器端管理类是程序入口:第一条线(接收):接收线程池接收消息,将消息丢入消息队列中。(多线程同步)第二条线(取消息处理):消息处理器(派生类)在消息分发器中注册,即将“消息的CommandId”和“消息处理方法”建立对应关系。 由消息分发器循环从消息队列中取消息,丢到相应的消息处理方法中去处理。
2012-09-28 17:14:32
717
原创 Windows下“通用线程池+消息分发器+消息处理器”-----服务器端管理类
1.ServerManager.h/********************************************************************File name: ServerManager.hAuthor: lieyingshengbao Version: 1.0 Date: 2012-09-
2012-09-28 17:07:59
774
原创 Windows下“通用线程池+消息分发器+消息处理器”-----消息分发器类
1.MsgDispatcher.h/********************************************************************File name: MsgDispatcher.hAuthor: lieyingshengbao Version: 1.0 Date: 2012-09-
2012-09-28 17:06:50
639
计算机考研真题~~~~~~
2009-06-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人