- 博客(45)
- 收藏
- 关注
原创 pthread_cond_wait的一个例子
关于条件变量的一个例子,其中的重点是:1.pthread_cond_wait会先将调用线程放到等待条件的线程列表上,也就是说线程会阻塞,传递进去的互斥量会解锁;2.pthread_cond_wait返回时互斥量会再次锁住。带着这两个要点去看下面的程序,thread1负责打印i的值,thread2负责决定打印的条件。thread1首先锁住lock是为了保证在pthread_cond_si
2014-08-14 23:26:09
3836
转载 VC2005 和 VC2008 类向导脚本运行错误
环境为:WinXp + IE8 + VS2005 以及 VS2008 问题:运行类向导或者使用向导添加变量出现页面脚本运行错误。 解决方法:运行注册表编辑器regedit 第一步、 将下面内容存为一个.reg的文件,双击该文件导入注册表
2011-10-08 19:02:54
1363
转载 LINUX netlink机制
Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUT
2011-10-07 21:23:03
855
原创 设置ubuntu 默认不启动图形界面
修改/etc/X11/default-display-manager,注释掉/usr/sbin/gdm,添加语句false。
2011-09-23 14:19:11
1798
转载 泛说"COM线程模型"
<br />我对“公寓 ”一词说实在一直不太搞得清楚,而企图上论坛问人的话他们总是喜欢回答:“你还是好好把《COM本质论》看一遍吧。”其实如果其中有些关键部分不理解的话,就算看上十遍也是不行的,我们需要的是一本适合自己的教材,今天偶尔发现这篇文章,所以转上来,希望读者能发表下意见。为了方便阅读,我对原文稍微进行了一些排版。<br />===== 原文 =====<br />泛说"COM线程模型"<br /> <br />作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站<br /
2010-11-16 17:42:00
751
转载 MYSQL远程连接速度慢的解决方法
在局域网内连接其他机器的MYSQL,发现速度慢的很,不知道什么原因,总有几秒的延迟.后来在网上发现解决方法,my.ini里面添加[mysqld]skip-name-resolve skip-grant-tables这样速度就快了!skip-name-resolve 选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。若使用–ski
2009-08-27 11:47:00
655
转载 MMORPG开发入门
原文出处:A Beginners Guide to Creating a MMORPG译者序:这是一篇讲解如何开发一款MMORPG的入门文章,作者本人也是一款游戏的开发者,文中的内容源于实践,有很高的参考价值。很多人都想拥有自己的游戏,这篇文章对那些想自己开发游戏的人来说可能是一纸福音,也可能是一盆冷水。无论如何,开发游戏都不是一件简单的事情。以下是翻译正
2009-07-19 15:28:00
1142
原创 一日一练(2)
#include #include using namespace std;#define ARRAY_SIZE(array) (sizeof(array) / sizeof(*array))int main(){ int iArray[] = {1, 2, 3, 4, 5, 6, 99}; nth_element(iArray, iArray + ARR
2009-07-14 22:48:00
764
1
原创 一日一练(1)
#include #include #include #include #include using namespace std;struct fun_int_to_str{ string operator()(int iPara) { char szBuf[32] = {0}; itoa(iPara, szBu
2009-07-12 20:03:00
590
原创 IOCP初探
这个是第二个版本了,这里我用了AcceptEx这个函数,使得接收连接也可以进行重叠操作了,我暂时开了2个工作线程,你可以看到,当GetQueuedCompletionStatus需要额外的线程来处理客户数据的时候,第二个工作线程就会被唤醒。 #include #include #include #include #include #include #inc
2009-04-12 23:58:00
1673
原创 基于WSAEventSelect模型的TCP服务器实现
怎么感觉标题很学术的样子。。。上次那个重叠IO的事件模型搞完之后,就觉得TCP是很不错的协议,可以将重点转移到对客户端的管理之上,而不必为了数据报的丢失和客户端keepalive的问题而绞尽脑汁(之前我做了个简单的聊天软件,面对的就是这种问题)。 WSAEventSelect是基于事件通知的,我觉得没有比这个模型更加简单实用了,编译环境:vc++ 6.0,代码如下: #include
2009-04-10 17:24:00
3435
原创 几个简单排序,外加一个快速排序
#include #include using namespace std;#define _SWAP(x, y) if (x == y){}else x ^= y ^= x ^= y//插入排序 void Insert_sort(int *begin, int *end){ int n; int *p; for (int *pdwCur
2009-01-23 21:29:00
830
原创 基于Overlapped IO的TCP服务器模型
用了一个工作线程,可管理64个TCP连接。 // OverlappedIO.cpp : Defines the entry point for the console application.//#include "stdafx.h"using std::map;#define DATA_BUFSIZE 4096DWORD g_udwIndexEvent = 0;
2009-01-17 22:38:00
1129
原创 两个模板元编程求阶乘的例子
从网上偶然看来的 #include using namespace std;templateclass fac{public: enum{var = n * fac::var};};template<>class fac{public: enum{var = 1};};int main(){ cout::var<
2009-01-17 17:21:00
1050
原创 关于map::erase
用map::erase的时候要注意,这个函数是有版本差异的,vc下使用的stl是P.J. Plauger stl版本,dev下使用的是sgi stl。这两个版本的map::erase有所区别,前者有返回值,后者没有返回值,标准库中提供的接口是没有返回值的,所以对于P.J. Plauger stl版本的使用者,在使用这个函数时,为了能保证移植性,最好能写成以下形式: #include
2009-01-16 20:46:00
4276
原创 双向链表
#ifndef _LIST_H_#define _LIST_H_#include #define _ASSERT_RET(cond, ret) if (!(cond)){printf("file: %s,line: %d/n", __FILE__, __LINE__);return ret;}else{}typedef struct _VALUE_{ void *pvDa
2009-01-14 21:17:00
814
原创 关于win32sdk的timer
windows程序设计上的一段,看看吧:系统和定时器Windows定时器是PC硬件和ROM BIOS架构下之定时器一种相对简单的扩充。回到Windows以前的MS-DOS程序写作环境下,应用程序能够通过拦截者称为timer tick的BIOS中断来实作时钟或定时器。一些为MS-DOS编写的程序自己拦截这个硬件中断以实作时钟和定时器。这些中断每54.915毫秒产生一次,或者大约每秒1
2009-01-08 13:56:00
2048
转载 如何看待基础分析与技术分析的区别
面对投资市场,我们可以选择的分析方法只有有两种:基础分析和技术分析。下面我就简单的来分析一下以上两种方法的优缺点。(1) 基础分析:就是把市场一定时期有关所有信息综合在一起,通过科学的分析方法,找出市场的内在价值,并与目前市场实际价值作比较,从而得出最终结论。基础分析属于宏观经济学范畴,最大优点是其科学性与严谨性,因果关系明确。但在实际的运用中对于绝大多数投资者来讲缺乏可操作
2008-12-10 19:00:00
1124
原创 写的几个小玩意
v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} Normal 0 7.8 磅 0 2
2008-09-28 20:02:00
781
3
转载 EPOLL应用详解
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __
2008-07-15 12:41:00
534
转载 使用COM方式实现不同语言之间的调用
转自某高人 :akirya的专栏 ,呵呵原文出处:http://blog.youkuaiyun.com/akirya/archive/2008/02/17/2100501.aspx---------------------------------正文:------------------------------上一篇说道了使用DLL的方式实现混合使用,但是使用过程还有一些复杂,比如VB用使用字符串
2008-05-19 20:53:00
1397
转载 内存管理内幕-动态分配的选择、折衷和实现
本文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半手工地管理内存, 以及如何使用垃圾收集自动管理内存。 为什么必须管理内存 内存管理是计算机编程最为基本的领域之一。在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管
2008-04-09 22:13:00
1293
原创 去注释程序之C++版
额。。。昨天看到优快云上一堆人在讨论这个,其实一点也不难,只是看你考虑是否全面,比如:注释符号如果出现在引号中。。。 写的可能难看了一点,临时之作,见谅。。。#includeiostream>#includefstream>using namespace std;int main(int argc,char *argv[])...{ fstream fin("in.cpp",
2008-04-08 16:11:00
1111
原创 求不定长序列的全排列算法
#includeiostream>#includeiterator>#includetchar.h>using namespace std;int array[]=...{1,2,3,4};int _tmain(int argc,char *argv[])...{ int *const end=array+sizeof(array)/sizeof(*array); int *p=N
2008-04-07 21:43:00
2955
1
原创 遍历一个目录(含子目录)下所有文件
#include#include#includeusing namespace std;static long total = 0;void ListFile(void){ HANDLE hSearch; WIN32_FIND_DATA data; hSearch = FindFirstFile("*", &data); do{ if (strcmp(da
2008-03-28 14:13:00
1001
原创 自己编写ping
大致模仿了一下win自带的ping程序,利用原始套接字和ICMP协议编写,同时为了防止界面不响应,采用多线程处理。程序:http://pickup.mofile.com/9345595683924658
2008-03-16 12:14:00
1101
原创 10进制转16进制
这个和转2进制的原理一样,不过我这个程序可以很容易的拓展到n进制: #includeiostream>using namespace std;void ToHex(char *buf,int x)...{ char *pNum="0123456789ABCDEF"; char *t=buf; for(;x;x/=16)...{ *t++=*(pNum+(
2008-03-13 20:43:00
2128
原创 一个简单的字符串类
//str.h#includeiostream>#ifndef _STR_H#define _STR_Hclass CStr...{public: CStr(); CStr(const char*); CStr(int,char); CStr(const CStr&); ~CStr();public: const char* c_str(); int
2008-03-13 19:24:00
904
原创 ZThread库试用小记
昨天刚down了个ZThread,这个库主要用来开发c++的多线程应用。 那么我写的demo是使用windows平台下的dev-c++来做的,如果你用dev-c++,那么首先有1个问题要解决:http://blog.youkuaiyun.com/jimmy_w/archive/2007/12/24/1965313.aspx这里有解释为什么模板化基类里的名称不能被查到,以及怎么解决。编译好之后,在项目中可
2008-03-04 10:57:00
1289
原创 dev下模板化基类的问题
#includetemplateclass base{public: base():n(10){} void func1(){std::coutprotected: T n;};templateclass derived:public base{public: //dev下,这里会无法通过编译,原因是func1的调用取决于模板参数 , //这实际上是由于模板特化机
2007-12-24 17:14:00
1299
原创 10000的阶乘第二版
#include#include#includevoid mul(std::vector &n1,int n2){ for(size_t i=0;i!=n1.size();++i){ n1[i]*=n2; } for(size_t i=0;i!=n1.size()-1;++i){ n1[i+1]+=(n1[i]/10); n1[i]%
2007-12-23 15:02:00
560
原创 几个特别版本的HelloWorld
第一个版本是利用ascii码输出,这个一眼就能认出:#includeint main(){ unsigned long msg[3]={0x6c6c6568,0x6f772c6f,0x00646c72}; std::cout return 0;}第二个版本比较STL化,将数据copy到标准输出流上:#include#includeint
2007-12-13 18:32:00
1595
6
原创 二维数组螺旋式打印算法
螺旋式打印就是如:1 2 3 4 5 6 7 8 9输出结果为:1 2 3 6 9 8 7 4 5下面给出代码:#includeusing namespace std;void print(int p[6][6],int row,int col){
2007-11-14 18:12:00
1483
1
原创 10000的阶乘
#include#define N 10000//设阶乘数为10000#define SIZE 40000//预留40000位保存结果using namespace std;void mul(int *n1,int n2)//两数相乘{ for(int i=0;i!=SIZE;++i) n1[i]*=n2; for(int i=0;i!=SIZE;++i){
2007-11-12 20:54:00
1002
原创 求前n个素数之和
#includeiostream>#includecmath>#includectime>#includevector>#includenumeric>#includetchar.h>using namespace std;bool IsPrime(const int n)...{ if(n%2==0||n==1)return false; int j=sqrt((double)n
2007-11-10 22:23:00
2035
原创 一个简单的win32程序的结构
#include//窗口过程函数LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//入口函数int WINAPI WinMain(HINSTANCE hInstance,//当前实例句柄 HINSTANCE hPreInstance,//前一实例句柄 LPSTR lp
2007-10-18 15:59:00
824
转载 数据对齐
什么是对齐,以及为什么要对齐: 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取
2007-10-14 14:39:00
3560
3
原创 二维数组的一些问题
先谈一下二维数组的动态创建和撤销,代码如下: //动态建立10*10的二维数组 int **p=new int*[10]; for(int i=0;i!=10;++i) { p[i]=new int[10]; } for(int a=0;a!=10;++a) { for(int b=0;b!=10;++b
2007-09-23 21:45:00
982
原创 暑假学习计划
很不幸的,这学期模电要挂科了,哀悼一下~~~MFC、windows网络编程、多线程编程、数据结构,这些都要恶补一下,眼看就要大三了,时日不多了。另外C++永远是重中之重,暑假好好补习一下模板库和面向对象的方法。两个月时间很短暂啊~
2007-07-07 18:58:00
732
原创 一个提取字符串的例子
//一个提取用户个人资料中邮件地址的例子 #include#includeusing namespace std;int main(){ char a[20]={0}; char b[20]={0}; //假设email地址信息以;结束 sscanf("email:jimmywhr@gmail.com;","%*[^:]:%[^;]",a); //假设email
2007-06-12 13:41:00
956
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人