自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jimmy's Blog

IT and Investment

  • 博客(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 3662

转载 VC2005 和 VC2008 类向导脚本运行错误

环境为:WinXp + IE8 + VS2005 以及 VS2008 问题:运行类向导或者使用向导添加变量出现页面脚本运行错误。 解决方法:运行注册表编辑器regedit 第一步、 将下面内容存为一个.reg的文件,双击该文件导入注册表

2011-10-08 19:02:54 1296

转载 LINUX netlink机制

Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUT

2011-10-07 21:23:03 780

原创 设置ubuntu 默认不启动图形界面

修改/etc/X11/default-display-manager,注释掉/usr/sbin/gdm,添加语句false。

2011-09-23 14:19:11 1719

转载 泛说"COM线程模型"

<br />我对“公寓 ”一词说实在一直不太搞得清楚,而企图上论坛问人的话他们总是喜欢回答:“你还是好好把《COM本质论》看一遍吧。”其实如果其中有些关键部分不理解的话,就算看上十遍也是不行的,我们需要的是一本适合自己的教材,今天偶尔发现这篇文章,所以转上来,希望读者能发表下意见。为了方便阅读,我对原文稍微进行了一些排版。<br />===== 原文 =====<br />泛说"COM线程模型"<br /> <br />作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站<br /

2010-11-16 17:42:00 722

转载 MYSQL远程连接速度慢的解决方法

 在局域网内连接其他机器的MYSQL,发现速度慢的很,不知道什么原因,总有几秒的延迟.后来在网上发现解决方法,my.ini里面添加[mysqld]skip-name-resolve skip-grant-tables这样速度就快了!skip-name-resolve 选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。若使用–ski

2009-08-27 11:47:00 613

转载 MMORPG开发入门

 原文出处:A Beginners Guide to Creating a MMORPG译者序:这是一篇讲解如何开发一款MMORPG的入门文章,作者本人也是一款游戏的开发者,文中的内容源于实践,有很高的参考价值。很多人都想拥有自己的游戏,这篇文章对那些想自己开发游戏的人来说可能是一纸福音,也可能是一盆冷水。无论如何,开发游戏都不是一件简单的事情。以下是翻译正

2009-07-19 15:28:00 1004

原创 一日一练(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 732 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 558

原创 IOCP初探

  这个是第二个版本了,这里我用了AcceptEx这个函数,使得接收连接也可以进行重叠操作了,我暂时开了2个工作线程,你可以看到,当GetQueuedCompletionStatus需要额外的线程来处理客户数据的时候,第二个工作线程就会被唤醒。  #include #include #include #include #include #include #inc

2009-04-12 23:58:00 1617 2

原创 基于WSAEventSelect模型的TCP服务器实现

 怎么感觉标题很学术的样子。。。上次那个重叠IO的事件模型搞完之后,就觉得TCP是很不错的协议,可以将重点转移到对客户端的管理之上,而不必为了数据报的丢失和客户端keepalive的问题而绞尽脑汁(之前我做了个简单的聊天软件,面对的就是这种问题)。  WSAEventSelect是基于事件通知的,我觉得没有比这个模型更加简单实用了,编译环境:vc++ 6.0,代码如下: #include

2009-04-10 17:24:00 3354

原创 几个简单排序,外加一个快速排序

 #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 790

原创 基于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 1106

原创 两个模板元编程求阶乘的例子

 从网上偶然看来的 #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 1014

原创 关于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 4165

原创 双向链表

#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 777

原创 关于win32sdk的timer

  windows程序设计上的一段,看看吧:系统和定时器Windows定时器是PC硬件和ROM BIOS架构下之定时器一种相对简单的扩充。回到Windows以前的MS-DOS程序写作环境下,应用程序能够通过拦截者称为timer tick的BIOS中断来实作时钟或定时器。一些为MS-DOS编写的程序自己拦截这个硬件中断以实作时钟和定时器。这些中断每54.915毫秒产生一次,或者大约每秒1

2009-01-08 13:56:00 1991

转载 如何看待基础分析与技术分析的区别

  面对投资市场,我们可以选择的分析方法只有有两种:基础分析和技术分析。下面我就简单的来分析一下以上两种方法的优缺点。(1)        基础分析:就是把市场一定时期有关所有信息综合在一起,通过科学的分析方法,找出市场的内在价值,并与目前市场实际价值作比较,从而得出最终结论。基础分析属于宏观经济学范畴,最大优点是其科学性与严谨性,因果关系明确。但在实际的运用中对于绝大多数投资者来讲缺乏可操作

2008-12-10 19:00:00 1017

原创 写的几个小玩意

 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 743 3

转载 EPOLL应用详解

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __

2008-07-15 12:41:00 495

转载 使用COM方式实现不同语言之间的调用

转自某高人 :akirya的专栏 ,呵呵原文出处:http://blog.csdn.net/akirya/archive/2008/02/17/2100501.aspx---------------------------------正文:------------------------------上一篇说道了使用DLL的方式实现混合使用,但是使用过程还有一些复杂,比如VB用使用字符串

2008-05-19 20:53:00 1304

转载 内存管理内幕-动态分配的选择、折衷和实现

本文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半手工地管理内存, 以及如何使用垃圾收集自动管理内存。 为什么必须管理内存 内存管理是计算机编程最为基本的领域之一。在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管

2008-04-09 22:13:00 1261

原创 去注释程序之C++版

  额。。。昨天看到CSDN上一堆人在讨论这个,其实一点也不难,只是看你考虑是否全面,比如:注释符号如果出现在引号中。。。  写的可能难看了一点,临时之作,见谅。。。#includeiostream>#includefstream>using namespace std;int main(int argc,char *argv[])...{    fstream fin("in.cpp",

2008-04-08 16:11:00 1074

原创 求不定长序列的全排列算法

#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 2909 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 940

原创 自己编写ping

 大致模仿了一下win自带的ping程序,利用原始套接字和ICMP协议编写,同时为了防止界面不响应,采用多线程处理。程序:http://pickup.mofile.com/9345595683924658

2008-03-16 12:14:00 1034 1

原创 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 1972

原创 一个简单的字符串类

//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 856

原创 ZThread库试用小记

  昨天刚down了个ZThread,这个库主要用来开发c++的多线程应用。  那么我写的demo是使用windows平台下的dev-c++来做的,如果你用dev-c++,那么首先有1个问题要解决:http://blog.csdn.net/jimmy_w/archive/2007/12/24/1965313.aspx这里有解释为什么模板化基类里的名称不能被查到,以及怎么解决。编译好之后,在项目中可

2008-03-04 10:57:00 1249

原创 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 1264

原创 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 526

原创 几个特别版本的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 1484 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 1431 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 934

原创 求前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 1990

原创 一个简单的win32程序的结构

#include//窗口过程函数LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);//入口函数int WINAPI WinMain(HINSTANCE hInstance,//当前实例句柄                   HINSTANCE hPreInstance,//前一实例句柄                   LPSTR lp

2007-10-18 15:59:00 791

转载 数据对齐

什么是对齐,以及为什么要对齐:  现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。  对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取

2007-10-14 14:39:00 3415 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 936

原创 暑假学习计划

很不幸的,这学期模电要挂科了,哀悼一下~~~MFC、windows网络编程、多线程编程、数据结构,这些都要恶补一下,眼看就要大三了,时日不多了。另外C++永远是重中之重,暑假好好补习一下模板库和面向对象的方法。两个月时间很短暂啊~  

2007-07-07 18:58:00 707

原创 一个提取字符串的例子

//一个提取用户个人资料中邮件地址的例子 #include#includeusing namespace std;int main(){    char a[20]={0};    char b[20]={0};    //假设email地址信息以;结束     sscanf("email:[email protected];","%*[^:]:%[^;]",a);    //假设email

2007-06-12 13:41:00 913

空空如也

空空如也

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

TA关注的人

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