C# 动态缓冲区的实现

在网络编程的开发环境当中经常会使用缓冲区来进行数据的接收与发送,但是当我们需要发一段连续的数据的时候,使用 1 byte[] _buffer= new byte[lenght]; 显然很死板,我们需要一个更加“智能”的缓冲区来管理这些数据。 ok,我们可以编写一个动态缓冲区管理器,它在内部维护一个byte[]类型的缓冲区,还有一个数据指针,以及已使用的字节空间的计数。 1 2 3 4 5 6 7 8 9 10 11 12 13 class DynamicBufferManager { public int DataCount {get;private set;} public int DataPointer {get;private set;} public byte[] Buffer {get;private set;} public DynamicBufferManager(int size) { DataCount = 0; DataPointer = 0; BUffer = new byte[size]; } } 我们的动态缓冲管理器主要就是由一个内部缓冲区还有一个数据指针和已用数据计数器来构成的。我们的主要思路是,我们的动态缓冲区可以随时设置新的大小,可以清除指定大小/全部的数据。当然我们也可以向缓冲区内写入/读取我们所需要的数据。 下面我们来实现大小与清除数据: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 class DynamicBufferManager { public void SetBufferSize(int newSize) { if(newSize > Buffer.

SDL系列教程:第三章 游戏对象设计

每个游戏当中都会有很多的对象存在,例如玩家、敌人、非玩家角色(NPC)、陷阱、子弹等。将这些游戏对象关联起来是一项很复杂的工作,如果没有一个可靠的基础框架的话,我们的游戏会越来越笨拙,代码结构也会越来越混乱。所以我们可以完全利用面向对象编程(OOP)的力量来帮助我们实现可靠的基础框架。 我们将会在这一章介绍以下内容: 使用继承 实现多态 使用抽象基类 有效继承设计 使用继承 继承是OOP第一种强大的特性,这个特性可以帮助我们开发可复用的基础框架。通过使用继承,我们可以从现有类型当中创建新的子类。我们在这里不会花太多篇幅去讨论继承的细节,而是着重于如何将这个特性应用到我们的框架当中。 正如前面所提到的,每个游戏有各种类型的对象。在大多数情况下,这些对象拥有很多相似的数据与类似的功能。下面我们举个栗子来说明一下: 几乎所有的对象都需要被绘制到屏幕上面,所以我们需要一个draw函数来进行绘制对象。 我们的对象绘制肯定需要使用x,y来定位,所以他们肯定都会有一个x,y变量。 除非是静态图片,否则我们希望我们的对象能够对自己进行更新,所以肯定会有一个update函数进行对象更新。 对象不再被使用的时候,我们也希望他能够清理掉不使用的资源,所以我们可能会需要一个clean函数来进行资源清理。 OK,这是一个很好的开始,让我们继续创建和完善我们的“GameObject”类。 1 2 3 4 5 6 7 8 9 10 class GameObject { public: void draw(){std::cout<<"draw game object";} void update(){std::cout<<"update game object";} void clean(){std::cout<<"clean game object";} protected: int m_x; int m_y; }; 现在我们有了第一个游戏对象类了,下面我们创建一个玩家类继承自该类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 class Player : public GameObject { public: void draw() { GameObject::draw(); std::cout<<"draw player"; } void update() { GameObject::update(); std::cout<<"update player"; } void clean() { GameObject::clean(); std::cout<<"clean player"; } } 现在我们可以复用基类函数与对象的成员了,当然我们也可以在调用父类实现的功能的同时,扩展自身的功能。

IIS 的站点批量导出与备份

首先以管理员方式运行"cmd"命令控制台。 之后键入以下代码: 1 cd c:\windows\system32\inetsrv 下面就开始我们的备份了 1 appcmd add backup "xxxxx" 或者是不指定备份名称将会自动以当前时间创建一个新的备份: 1 appcmd add backup 例如: 1 appcmd add backup "20150408" 创建的备份文件将保存在C:\Windows\System32\inetsrv\backup下 还原IIS备份 1 appcmd restore backup "20150408" 后面跟的是你的backup的备份文件夹名称。

Visual Studio 开发 .NET Core 站点

首先我们先下载最新版本的Visual Studio 2015,网上一搜一大把。 然后我们去这里下载.NET Core 1.0.1 - VS 2015 Tooling Preview 2,安装即可。 注意: 在这里可能会碰到安装失败的情况,请参照以下方法: http://bbs.csdn.net/topics/391991963 https://q.cnblogs.com/q/86210/ 本文参照:http://www.cnblogs.com/gaobing/p/5663012.html重新完善。 安装完成后打开VS新建项目会发现多了.Net Core的选项: 找到工程根目录下 “project.json” 4.1 禁用 “type” 4.2 注释 “scripts"节点 4.3 添加 “runtimes"节点,centos7.1服务器 在工程文件夹目录,按住shift右键,弹出cmd窗口。 输入以下命令: 1 dotnet restore 发布 1 dotnet publish -r centos.7-x64 发布后的目录如下: 1 \bin\Debug\netcoreapp1.0\centos.7-x64\publish 在你的Linux服务器上部署.Net Core环境,请参照https://www.microsoft.com/net/core#centos进行操作。 9.1 安装jexus5.8.2 1 2 3 4 5 6 cd /tmp wget linuxdot.net/down/jexus-5.8.2-x64.tar.gz tar zxvf jexus-5.8.2-x64.tar.gz cd jexus/ cd siteconf/ vi default 9.2 添加AppHost 1 2 3 4 5 6 7 (jexus作者介绍AppHost) AppHost的配置格式是: AppHost={CmdLine=应用程序命令行; workRoot=应用程序工作目录; Port=应用程序HTTP侦听端口},其中: "CmdLine" 表示启动应用程序的命令行,如:dotnet /var/www/site1/app.

NPOI 自定义单元格背景颜色

首先,单元格背景颜色的Style里面的属性不是"FillBackgroundColor",正确的应该是FillForegroundColor。 其次我们不仅仅需要设置颜色,而且还要设置该style的FillPattern。 下面是代码: 1 2 3 4 ICellStyle style = workbook.CreateCellStyle(); style.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.Red.Index; style.FillPattern = FillPattern.SolidForeground; ICell cell = workbook.CreateSheet().CreateRow(0).CreateCell(0);cell.CellStyle = style;
Built with Hugo
主题 StackJimmy 设计