自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

怒放的生命

一个男人的人生……

  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

转载 高性能大容量SOCKET并发(五):锁和对象分离 .

锁和对象一起封装的危险在多线程编写中,绝大多数编码风格喜欢把锁和要访问的对象封装在同一个对象,释放对象的时候也释放锁,这样会造成死锁。我们写一个测试例子,我们创建一个锁,把锁锁住,然后再创建一个线程,一直不停的等待锁返回,然后我们把锁释放,这时线程就死锁,代码如下:定义接口:[delphi] view plaincopyprint?type    TLo

2012-09-20 16:28:12 734

转载 高性能大容量SOCKET并发(四):粘包、分包、解包

粘包使用TCP长连接就会引入粘包的问题,粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。粘包可能由发送方造成,也可能由接收方造成。TCP为提高传输效率,发送方往往要收集到足够多的数据后才发送一包数据,造成多个数据包的粘连。如果接收进程不及时接收数据,已收到的数据就放在系统接收缓冲区,用户进程读取数据时就可能同时读到多个数据包。粘

2012-09-10 10:08:13 1901

转载 高性能大容量SOCKET并发(三):接收、发送、缓存

接收完成端口是结合重叠端口一起使用的,在接收数据之前,我们需要投递一个接收请求,使用function WSARecv(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;  var lpNumberOfBytesRecvd, lpFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED;  lpCompl

2012-09-10 10:07:15 2927

转载 高性能大容量SOCKET并发(二):IOCP完成端口控件封装

IOCP完成端口介绍:完成端口模型是Windows平台下SOCKET端口模型最为复杂的一种I/O模型。如果一个应用程序需要同时管理为数众多的套接字,而且希望随着系统内安装的CPU数量的增多,应用程序的性能也可以线性提升,采用完成端口模型,往往可以达到最佳的系统性能。完成端口可以管理成千上万的连接,长连接传文件可以支持5000个以上,长连接命令交互可以支持20000个以上。这么大并发的连

2012-09-10 10:04:18 1428

转载 高性能大容量SOCKET并发(一):IOCP完成端口例子介绍

例子主要包括IOCP控件封装、服务端实现、传输协议和日志、控制、SQL查询、上传、下载等协议实现,并包括一些初步的性能测试结果。服务端:界面截图如下:提供服务和桌面方式运行,桌面方式可直接打开程序,方便日常调试,可以使用命令行注册或卸载服务,在CMD中输入D:\DEMO\IOCPDemo\Bin\IOCPDemoSvr.exe -install来注册服务,在CMD输入D:\DE

2012-09-10 09:48:14 1511 1

原创 C#多线程,静态锁static lock和非静态锁lock的区别及附跨线程访问UI的代码

本文只针对C#中,多线程同步所用到的锁(lock)作为研究对象。由于想更直观的显示结果,所以,在做demo的时候,就把多线程通过事件操作UI的代码也写了出来,留作备忘和分享吧。 其实多线程的同步,使用同步锁的方法用了好多次,今天无意中看到MSDN中,建议用:1 private static readonly object locker1 = new object();2

2014-11-17 22:49:47 13905 1

原创 DELPHI、FLASH、AS3、FLEX使用Protobuf(google Protocol Buffers)的具体方法

最近因为工作需要,需要在不同的开发环境中应用Protobuf,特此,我专门研究了一下。为了防止自己忘记这些事情,现在记录在这里!需要的朋友可以借鉴一些,因为这些东西在GOOGLE和百度上搜索起来真的很费劲!一、首先说DELPHI的。因为DELPHI现在用的人不多了,所以找这个东西真心不好找!还好,加了几个QQ群,有用过的朋友告诉了我!具体步骤如下:1、下载D

2013-11-22 10:03:20 2708

转载 C++数组定义和操作

一、数组定义和初始化 1: 一维数组初始化: 2: 标准方式一: int value[100]; // value[i]的值不定,没有初始化 3: 标准方式二: int value[100] = {1,2}; // value[0]和value[1]的值分别为1和2,而没有定义的value[i>1] 4:

2012-10-08 10:18:49 3555

转载 C++指针的教程

第一章。指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让 我们分别说明。 先声明几个指针放着做例子: 例一: (1)int *ptr; (2)char *ptr; (3)int **ptr;

2012-10-07 19:59:08 763

转载 关于指针和内存的几个问题

关于指针和内存的几个问题一、"delete p" 会删去 "p" 指针,还是它指到的资料,"*p" ?该指针指到的资料。"delete" 真正的意思是:「删去指针指到的东西」(delete the thing pointed to by)。同样的英文误用也发生在 C 语言的「释放」指标所指向的记忆体("free(p)"真正的意思是:"free_the_stuff_pointed_t

2012-10-07 18:31:36 458

转载 C语言入门之多维数组的指针变量

C语言入门之多维数组的指针变量一、多维数组地址的表示方法    设有整型二维数组a[3][4]如下:    0 1 2 3    4 5 6 7    8 9 10 11    设数组a的首地址为1000,各下标变量的首地址及其值如图所示。 在前面曾经介绍过, /data/c/C语言允许把一个二维数组分解为多个一维数组来处理。因此数组a可分解为三个一

2012-10-07 18:29:01 962

转载 C语言入门之指针的慨念

1 C语言入门之指针的慨念指针是/data/c/C语言中广泛使用的一种数据类型。 运用指针编程是/data/c/C语言最主要的风格之一。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象/data/huibian/汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了/data/c/C语言的功能。 学习指针是学习/data/c/C语言中最重要的一环, 能

2012-10-07 18:26:34 961

转载 线程!线程!!线程!!!(Delphi版)

以下内容仅供初学者参考看到有的同学对Delphi的线程认识不够深,特开一贴给同学们讲讲。主要给出两种常用的线程形式。1、长等待型线程示例,等待命令,执行不定长的工作,但每个工作的时间不会太长。2、长工作型线程示例,执行一个很长时间的工作,但可以很快响应取消操作。注:对于在线程中取消存储过程的执行仍然无解以下程序所用的知识为:消息机制以及常用的API函数

2012-09-10 10:19:11 644

DELPHI2010 source的源代码

有些朋友安装的DELPHI2010文件不全,安装后,没有source文件夹,或者文件不全。现在公布一份吧……

2010-09-11

空空如也

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

TA关注的人

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