自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(117)
  • 收藏
  • 关注

原创 zz Winsock服务器内存资源管理

一般来讲, 在服务器上,如果有足够的资源,Winsock server,理论上可以支持成千的并发连接。而现实是,我们没有足够的资源可供使用,分配。本文主要来讨论一下内存资源之于Winsock server开发的重要性。一)基本概念。-> Pages,Locked Pages.        在现代操作系统中,内存管理会把主存(RAM)分成Pages来管理。 Paging(或者swapping)指

2008-05-10 09:19:00 761

原创 zz高性能服务器软件开发

关于这本书的简单介绍: 注意,在这里我们讨论的高性能服务器软件设计并不是通常意义上的高性能web程序设计,比如说在J2EE、.NET框架下如何使用线程池提高性能,如何优化ASP,PHP程序,或者如何调整apache,IIS等Web服务器以获得更好的性能等等。 这里讨论的是真正高性能的从硬件到操作系统底层,然后到IO模型、应用模型的服务器设计,当然,作为一家之言,里面同样充满了误解、偏见和无知,但

2008-05-09 15:46:00 917

原创 软件开发基本知识

软件开发的基本知识 韩慧健 一、软件的概念 1、软件:是计算机系统中与硬件相互依存的部分,它包括程序、数据及相关文档的完整集合。其中 Ø 程序-是按照事先设计的功能和性能的要求执行的指令序列 Ø 数据-是使程序正常操纵信息的数据结构 Ø 文档-是程序开发、维护和使用有关的图文资料 2、软件分类(按功能划分) Ø 系统软件:如操作系统、数据库管理系统、设备驱动程序等 Ø 支撑软件:协助用户开发软件

2008-05-06 19:45:00 7756

原创 zz C++程序员常用工具集

【声明】如需复制、传播,请附上本声明,谢谢。原文出处:http://morningspace.51.net/  所谓"工欲善其事,必先利其器",从程序员的角度来讲,好工具的使用总会给人带来事半功倍的效果。面对众多工具/软件,我们应该如何取舍呢。前不久,笔者在csdn的c++论坛发了一篇贴文,以期能征求大家的广泛意见,得到了不错的反响。本文在对该贴进行整理的基础上,又做了一些补充。在这里要特别感谢

2008-05-06 16:51:00 878

原创 zz 软件体系结构的概念

一 从软件危机谈起  软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。20世纪60年代末至20世纪70年代初,"软件危机"一词在计算机界广为流传。事实上,几乎从计算机诞生的那一天起,就出现了软件危机,只不过到了1968年在原西德加密施(Garmish)召开的国际软件工程会议上才被人们普遍认识到。  1 软件危机的表现  (1)软件成本日益增长  在计算机发展的早期,大型计算机系

2008-05-02 15:14:00 815

原创 zz Windows体系结构

  这是整个windows的体系结构的总览。从图上可以看出系统被分成内核模式和用户模式。 内核模式的构成文件是系统的核心文件她包含: hal.dll ntoskrnl.exe 设备驱动 文件系统驱动 图形设备驱动 win32k.sys 1.首先来看第一层HAL(硬件抽象层)   HAL使得reactOS  内核可以运行在不同的x86母板上。HAL为内核抽象母板的特定代码也许是对不同母

2008-05-02 14:18:00 2434

原创 zz static_cast揭秘

本文讨论static_cast。 介绍大多程序员在学C++前都学过C,并且习惯于C风格(类型)转换。当写C++(程序)时,有时候我 们在使用static_cast时可能会有点模糊。在本文中,我将说明 static_cast 泛型(Generic Types) float f = 12.3; float* pf = &f; int n = static

2008-04-17 19:21:00 564

原创 zz More Effective C++读书笔记

条款1:指针与引用的区别二者之间的区别是:在任何情况下都不能用指向空值的引用,而指针则可以;指针可以被重新赋值以指向另一个不同的对象,但是引用则总是指向在初始化时被指定的对象,以后不能改变。在以下情况下使用指针:一是存在不指向任何对象的可能性;二是需要能够在不同的时刻指向不同的对象。在以下情况使用引用:总是指向一个对象且一旦指向一个对象之后就不会改变指向;重载某个操作符时,使用指针会造成语义误解

2008-04-17 14:39:00 791

原创 zz使用界面库LibUIDK制作界面

LibUIDK简介:LibUIDK是专业开发Windows平台下图形用户界面的开发包,该开发包基于Microsoft的MFC库。使用此开发工具包可轻易把美工制作的精美界面用VC实现,由于使用LibUIDK创建的所有窗口都支持控件的从控件工具栏中拖入创建,所以极大的提高了新产品的开发速度,并大大增强图形用户界面(GUI)的亲和力。LibUIDK还可以使您的软件轻松具有当今流行的换肤功能,以提高产品

2008-04-09 21:51:00 5095 1

原创 zz传奇源码分析-服务器端

LoginGate服务器 服务器端: 1.首先从LoginGate.cpp WinMain分析:     1) CheckAvailableIOCP : 检查是不是NT,2000的系统(IOCP)     2) InitInstance: 初始化界面,加载WSAStartup 3)  MainWndProc窗口回调函数. 2.MainWndProc.CPP中分析回调函数MainWndProc s

2008-04-06 11:11:00 2561

原创 Windows自定义exe文件注册系统服务方法

1将目录中的两个可执行文件(instsrv.exe, srvany.exe)放到C:/WINDOWS/system32 目录下 2在命令行下输入 instsrv 您的服务名 C:/WINDOWS/system32/srvany.exe 例如:instsrv cmpp_sms C:/WINDOWS/system32/srvany.exe 3“运行”regedit修改注册表找到 HKEY_LOCAL

2008-03-31 20:37:00 1539

原创 zz UML要点与应用

UML(Unified Modeling Language)伙伴组织于1996年由Rational公司创立。对象管理组织(OMG)于1997年11月采纳了它。此后,UML继续改进,目前最新的版本是UML1.3。 UML是多种方法相互借鉴、相互融合、趋于一致、走向标准化的产物。这样的统一建模语言将为软件开发商及其用户带来诸多便利。美国等计算机技术发达国家已有大量的软件开发组织开始用UML进行系统建

2008-03-23 21:43:00 703 1

原创 zz UML活动图示例

UML 活动图记录单个操作或方法的逻辑、单个用例或商业过程的逻辑流程。在很多方面,活动图是结构化开发中流程图和数据流程图 (DFD) 的面向对象等同体。本提示改编自 The Object Primer 2nd Edition 的第 6 章。 图 1 中的活动图描述了大学新生第一次将如何办理入学的商业逻辑。 实心圆表示活动图的起点,实际上是一个占位符,带边框的实心圆表示终点。 圆角矩形表示

2008-03-23 21:34:00 1629

原创 zz DLL 编写教程

DLL的优点 简单的说,dll有以下几个优点: 1) 节省内存。同一个软件模块,若是以源代码的形式重用,则会被编译到不同的可执行程序中,同时运行这些exe时这些模块的二进制码会被重复加载到内存中。如果使用dll,则只在内存中加载一次,所有使用该dll的进程会共享此块内存(当然,像dll中的全局变量这种东西是会被每个进程复制一份的)。 2) 不需编译的软件系统升级,若一个软件系统使用了dll,则该

2008-03-14 15:45:00 875

原创 zz CreateThread() and _beginthread()

_beginthread Header File process.h Category Process Control Routines Prototype unsigned long _beginthread(void (_USERENTRY *__start)(void *), unsigned __stksize, void *__arg); Description Starts exec

2008-02-29 14:30:00 1716

原创 zz UML类图关系全面剖析和C++代码表现

本文随便转载,请保留出处:http://blog.csdn.net/dylgsy/ UML的类图关系分为: 关联、聚合/组合、依赖、泛化(继承)。而其中关联又分为双向关联、单向关联、自身关联;下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里。1、关联双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关

2008-02-29 13:16:00 725

原创 常用的几种设计模式

一 Bridge模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。Bridge模式将继承关系转换为组合关系,从而降低了系统间的耦合,减少了代码编写量.抽象化 存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一些信息,从而把不同的实体当做同样的实体对待【LISKOV94】。 实现化 抽象化给出的具体实现,就是实现化。 脱耦 所谓耦合,就是两个实体的行为的某种强关

2008-02-27 21:38:00 800

原创 zz 简单的HashTable

近期工作中要处理100W条记录,前一个同事使用SQLLite数据作为数据结构存储,采用数据库查询一条记录,时间当然不成问题.后来,我将数据库的数据导出来,发现由原来的150M多变成20M 多,而装载数据库存需要25S,这种用空间换时间的做法未免牺牲太大.所以我想到不用数据库.而用普通的文件存储,要解决查询一条记录肯定要使用某种数据结构.首先想到的是STL中的hash_set,它采用hash_ta

2008-02-27 21:28:00 591

原创 zz 一个Hash实例:Blizzard的MPQ文件

星际、魔兽和WOW里面都有一个非常大的.MPQ文件,这个文件存储了游戏中大部分的资源数据,比如对话中的文字等等。Blizzard使用了hash table来组织对这个庞大文件的读写。 在WOW中,如果我跑到荆棘谷和地精卫兵聊天,那些绿色小矮人头上冒出来的叽叽咕咕的文字,就是从那个奇大无比的资源文件里取出来的。嗯,小绿人有那么多台词,怎么从这么一个庞大的字符串数组里找出某个特定的呢?或者,给你一

2008-02-26 15:42:00 1596

原创 zz VC DEBUG和RELEASE的区别(二)

I.    内存分配问题      1.    变量未初始化。下面的程序在debug中运行的很好。      thing    *    search(thing    *    something)      BOOL    found;      for(int    i    =    0;    i       {      if(whatever[i]->field    ==   

2008-02-23 14:42:00 961

原创 关闭Socket

1. 关闭Socket时究竟做了什么        关闭socket分为主动关闭(Active closure)和被动关闭(Passive closure)两种情况。前者是指有本地主机主动发起的关闭;而后者则是指本地主机检测到远程主机发起关闭之后,作出回应,从而关闭整个连接。    起初每个socket都是CLOSED状态,当客户端初使化一个连接,他发送一个SYN包到服务器,客户端进入SYN_S

2008-02-22 16:52:00 2619

原创 [zz] VC Debug/Release

在VC中当整个工程较大时,软件时常为出现在DEBUG状态下能运行而在RELEASE状态下无法运行的情况。由于开发者通常在DEBUG状态下开发软 件,所以这种情况时常是在我们辛苦工作一两个月后,满怀信心的准备将软件发行时发生。为了避免无谓的损失,我们最好进行以下的检查:1、时常测试软件的两种版本。2、不要轻易将问题归结为DEBUG/RELEASE问题,除非你已经充分对两种版本进行了测试。3、预处理

2008-01-20 22:09:00 663

原创 zz基于完成端口的服务器代码

#include "stdio.h"#include "stdlib.h"#include "winsock2.h"#include "mswsock.h" #pragma comment(lib, "ws2_32.lib")#pragma comment(lib, "mswsock.lib") /*重叠IO有三种方法:1. 一次投递分配一次IO,完成时释放2. 为每个套接口绑定一个IO3. 采

2008-01-14 09:53:00 633

原创 zz一个简单的epoll服务器示例

文章地址:http://www.cublog.cn/u/17999/showart.php?id=159057运行这个程序需要预先设置栈内存和文件描述符上限, 否则运行失败ulimit -n 16384ulimit -s 4096文件名:server.c编译: gcc server.c -Wall -O2 -pthread -o server程序源码如下(请自行编辑宏定义SERVER_IP为自己

2008-01-14 09:51:00 650

原创 zz游戏服务器架构探讨

这里讨论的游戏服务器架构大概是目前国内乃至世界上的网游通用的一种架构了:http://bbs.gameres.com/showthread.asp?threadid=93775作者:qinglan有段时间没有研究技术了,这次正好看到了新版的mangos,较之以前我看的版本有了比较大的完善,于是再次浏览了下他的代码,也借此机会整理下我在游戏服务器开发方面的一些心得,与大家探讨。 另外由于为避免与公

2008-01-13 21:07:00 2324

原创 用环形缓冲实现拼包函数

大家都知道,网络tcp,流socket是不能保证收到的包是逻辑完整的,也许一个逻辑完整的被分成两段发送,所以我们使用流socket就需要将接收的包(物理包),经过整理变成逻辑包。然后再处理。这个整理包的函数就是所说的拼包函数。下面的代码用环形缓冲实现了一个拼包函数。环形缓冲可以减少不必要memcpy,从而提高效率。 // 这是per-I/O数据。它包含了在套节字上处理I/O操作的必要信息str

2008-01-13 20:53:00 1390

原创 zz深入浅出Win32多线程程序设计之基本概念

引言  从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操作系统却可以一边听音乐,一边编程,一边打印文档。  理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环,当我们精通了Win32多线程程序设计后,理解和学习其它操作系统的多任务控制也非常容易。许多程序员从来

2008-01-12 13:49:00 633

原创 深入浅出Win32多线程程序设计之线程通信

简介  线程之间通信的两个基本问题是互斥和同步。  线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。  线程互斥是指对于共享的操作系统资源(指的是广义的"资源",而不是Windows的.res文件,譬如全局变量就是一种共享资源),在各线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只

2008-01-12 11:33:00 544

原创 深入浅出Win32多线程程序设计之线程控制

深入浅出Win32多线程程序设计之线程控制 2007-12-14 15:18 /**********************************************/ 转:http://blog.chinaunix.net/u1/44087/showart_346523.html /**********************************************/ WIN32

2008-01-12 11:27:00 686

原创 zz用多路复用I/O模型实现多个客户端的通信

用多路复用I/O模型实现支持多个客户端的通信服务整理:Ackarlix 引言  多路复用I/O模型是UNIX/LINUX用得的最多的一种I/O模型。这种I/O模型在技术上的实现是包括select()以及FD_XXX的几个宏及常量。在单个进程中支持的客户端数量由FD_SETSIZE决定。Solaris 10和Linux 9.0默认为1024个,Windows 2000是64个。本文用代码给出该I

2008-01-12 10:45:00 635

原创 zz Unix下编写Socket程序一般步骤

Unix下编写Socket程序的一般步骤 作者:Ackarlix 理解几个常用的socket函数#include #includeint socket(int domain,int type,int portocol);domain指所使用的协议族(family)可以为AF_UNIX和AF_INET,一般只用AF_INET(指Internet)type指所用的传输类型,可以为SOCK_STER

2008-01-12 10:42:00 529

原创 zz Linux环境下串口通信的编程

Linux 环境下串口通信的编程 整理:Ackarlix 串口设备无论是在工控领域,还是在嵌入式设备领域,应用都非常广泛。而串口编程也就显得必不可少。偶然的一次机会,需要使用串口,而且操作系统还要求是Linux,因此,趁着这次机会,综合别人的代码,进行了一次整理和封装。    具体的封装格式为C代码,这样做是为了很好的移植性,使它可以在C和C++环境下,都可以编译和使用。代码的头文件如下://

2008-01-12 10:31:00 782

原创 搜索引擎分类和工作原理

搜索引擎分类与工作原理 整理:Ackarlix 搜索引擎分类 搜索引擎按其工作方式主要可分为三种,分别是全文搜索引擎(Full Text Search Engine)、目录索引类搜索引擎(Search IndexDirectory)和元搜索引擎(Meta Search Engine)。 ■全文搜索引擎 全文搜索引擎是名副其实的搜索引擎,国外具代表性的有Google、FastAllTheWeb

2008-01-12 10:19:00 3901

原创 ADO数据库

多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。 80040e21 -- 插入或更新时出现 ODBC 错误 当服务器尝试处理包含"更新记录"或"插入记录"服务器行为的页时,会出现此错误。数据库无法处理该服务器行为尝试执行的更新或插入操作。 可能的原因和解决方案如下: 该服务器行为正尝试更新数据库表的自动编号字段或者尝试在自动编号字段中插入记录。由于自

2008-01-03 20:59:00 490

原创 JavaScript: The World's Most Misunderstood Programming Language

JavaScript:The Worlds Most Misunderstood Programming Language Douglas Crockfordwww.crockford.com JavaScript, aka Mocha, aka LiveScript, aka JScript, aka ECMAScript, is one of the worlds most popula

2007-12-29 13:19:00 484

原创 用Windows Live Writer离线发表blog

2007-12-29 11:16:00 527

转载 如何实现类的成员函数创建线程

class CMySocket {public:    DWORD WINAPI WorkThread(LPVOID CompletetionPortID);    ...};有如上类,在类中某函数想以函数(WorkThread)CreateThread(NULL, 0, WorkThread, &param, 0, &ThreadID))编译会报错:cannot convert paramete

2007-12-29 10:04:00 924 1

原创 VC-Debug-Release出错的问题解决办法

DEBUG和RELEASE 版本差异及调试相关问题:I.        内存分配问题1.          变量未初始化。下面的程序在debug中运行的很好。      thing * search(thing * something)        BOOL found;        for(int i = 0; i        

2007-12-05 13:36:00 2520

原创 [算法之归并排序] MergeSort

 // 将a[p...r] 和a[r+1...q] 合并到 b[0...q-p]void Merge2Sort(int *a, int *b, int p, int r, int q){ int i = p, j = r+1, k = 0; while(ir && jq){  if(a[i]  a[j])   b[k++] = a[i++];  else   b[k++] = a[j++]

2007-09-21 21:42:00 831

原创 例程:最大子段和

“最大子段和” Int MaxSubsequenceSum(const int A[], int N) ...{        int ThisSum, MaxSum, j;        ThisSum = MaxSum = 0;        For(j=0; j   N; j++)        ...{              ThisSum += A[j];          

2007-09-20 23:04:00 772

空空如也

空空如也

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

TA关注的人

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