自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 【存储系列】inode

文件系统inode

2021-12-02 08:56:41 123

原创 C\C++开发的经典魔塔小游戏--(5)运行展示

2019-08-14 10:45:49 2029 3

原创 C\C++开发的经典魔塔小游戏--(4)楼层控制,背景音乐,个人元素

楼层切换是游戏中必不可少的一个元素,总不能一直待在某一层,这样就无法享受通关的快感,在原本的设想中,我打算画十层地图,并且每层地图都添加一些新的素材进去,后来发现,太过繁琐,于是这个游戏就成了一个半成品。 但是主要的逻辑已经实现完毕,剩下的主要是画地图。如果哪位有精力的朋友,可以试试画他几百张地图我暂时只介绍逻辑实现。一旦碰触的切换楼层的元素,就需要刷新页面,将另一张图片打印出来,因为之前的二维...

2019-08-14 10:35:49 2340

原创 C\C++开发的经典魔塔小游戏--(3)主要逻辑处理,角色控制

对于一个游戏来说,最重要的是什么? 没错,是充钱,充钱,再充钱! 当然,游戏本身也要能动弹,不然钱充的不流畅。所以,我们来看看如何流畅的处理逻辑。 对于一个界面化的小游戏来说,最主要的就是角色的移动,我们通过C\C++的一个函数了处理键盘的响应,以及一个句柄API来处理一些弹窗问题。话不多说 ,上代码!userKey = _getch(); switch (userKey) { ca...

2019-08-14 10:10:29 2444 1

原创 C\C++开发的经典魔塔小游戏--(2)制作地图以及画出地图

这篇文章主要介绍如何制作以及画出地图,顺便会填充一些个人认为有趣的东西介绍给大家。C用来写图形化界面其实是一个很费力的过程,但是面向过程的语言结构,让人在做一些逻辑处理的时候更加的清晰,而不像C++一样,抽象化的方式让查看代码的人眼花缭乱,防不胜防,势必增加维护成本。但是C++更加高级的重写机制,泛型,以及STL方法,使得代码量很大的缩减,减少了开发者的劳动力输出。为了让逻辑处理更加简单易懂,本...

2019-08-14 09:56:10 4330 2

原创 C\C++开发的经典魔塔小游戏--(1)图形库的使用

最近突发奇想,想起了当年和小伙伴们一起奋斗在村里黑网吧的日子。于是乎,萌发了动手写一个下游戏的念头。这个经典的小游戏名字叫“魔塔”。大致就是你是一个骑士什么的,深入魔塔拯救大妹子的故事。设计思路还是很简单的,具体就是一些C/C++图形库的引用,将收集好的图片素材显示在界面上各个位置,然后通过接受键盘输入控制角色移动,碰到道具之后修改角色本身各项的数值来模拟打斗场景。 加入游戏背景音乐,加入其它一...

2019-08-14 09:36:08 3802 4

原创 上传项目以及克隆项目(git)

上传本地项目到github创建一个本地项目2.建立本地仓库  git init //把这个目录变成Git可以管理的仓库  git add README.md //文件添加到仓库  git add . //不但可以跟单一文件,还可以跟通配符,更可以跟目录。一个点就把当前目录下所有未追踪的文件全部add了  git commit -m “first commit” //把文件提交到仓库...

2019-08-01 16:01:07 226

原创 简单的聊天室服务器 基于Boost asio(8)--last

到此,我们的简单服务器算是基本完成了,至于以后将消息扩展,将逻辑扩展就在于每个人不同的想法了而在服务器运行中会有很多无法预知的错误出现,我们必须能把握错误出现的地方才能更好的去维护他。最后,向服务器中再添加一个日志,用来记录他的操作与行为,方便以后出现问题及时的去改正。创建一个"sample.log"文件来记录日志void init(){ boost::log::add_...

2019-08-01 12:44:45 329

原创 简单的聊天室服务器 基于Boost asio(7)--多线程+读写保护

通过几次修改,我们现在可以愉快的交流了。但是当用户越来越多的时候,我们发现,服务器顶不住了,人太多了,消息完全处理不过来。发了个消息,三年后对方才收到,于是我们想着给他"多整几个CPU",让他多些线路去处理消息首先 让我们看看什么是线程线程(thread, 台湾称"执行绪")是"进程"中某个单一顺序的控制流。也被称为轻量进程(lightweight processes)。计算机科学术语,指运行...

2019-08-01 12:37:06 418

原创 简单的聊天室服务器 基于Boost asio(6)--消息类型的控制

ok,服务器的结构已经构建完毕。尝试运行后发现,一个莫名的东西在那里不停的嘀嘀咕咕,你只知道了他在说话,你不知道他是谁。就跟QQ开启了匿名一样,有时候很好。但是,当某个键盘侠骂了你,你想提着“青龙偃月刀”去他家给他切个水果的时候,你发现不知道这个货是谁,你很生气。所以,我们要添加一个分辨用户名字的东西。这个东西可以分辨是什么人在发消息首先,我们设计这样一个结构,用来把每个消息的类型存储en...

2019-08-01 12:12:40 199

原创 简单的聊天室服务器 基于Boost asio(5)--客户端设计

ok,我们在上一次的学习中,了解到了服务器是如何去收发消息,缓存消息的。今天我们就来看看客户端是如何处理消息。依旧是使用双向队列来实现消息队列的方法。方便消息的刷新和淘汰,其实考虑过双向链表list<>也可以实现这种结构,但是链表的存储结构注定了他的占存比较大,所以最好的选择还是deque<>.###客户端的读写结构基本和服务器一样,只是对于客户端来说,他要发送的消息有...

2019-08-01 12:00:31 420

原创 消息收发的保护--序列化的方式

序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。序列化使其他代码可以查看或修改,那些不序列化便无法访问的对象实例数据。确切地说,代码执行序列化需要特殊的权限:即指定了 SerializationFormatter 标志的 Securi...

2019-08-01 11:00:00 164

原创 简单的聊天室服务器 基于Boost asio(4)--服务器设计

这篇文章主要解析,聊天室服务器的设计。首先,他是通过一个TCP连接来提供服务。通过asio的io_service来实现与底层操作系统io之间的对接。通过,async_来实现异步的收发消息。通过deque来实现存储消息的数据结构。通过tcp::endpoint来监听消息传递通过 tcp::socket 设置套接桥梁,消息传输管道**再来看完整的代码using boost::asi...

2019-07-30 09:28:00 326

原创 简单的聊天室服务器 基于Boost asio(3)--消息协议设计

客户端如果要和服务器做交流,那么肯定需要一套双方都认可的交流方式。比如说我们日常都说普通话,忽然来一个阿拉斯加“”汪汪汪“”的和你说话,这时候,就算你换成英语也没用。必须有一套双方都遵循的交流规则。 也就是 消息协议。话不多说 上代码class chat_message {public:enum { header_length = 4 };enum { max_body_length ...

2019-07-30 09:15:09 470

原创 简单的聊天室服务器 基于Boost asio(2)--io_service

这次我们来学习一下asio中,最主要的部分,也就是service_io.IO模型io_service对象是asio框架中的调度器,所有异步io事件都是通过它来分发处理的(io对象的构造函数中都需要传入一个io_service对象)。asio::io_service io_service;asio::ip::tcp::socket socket(io_service);在asio框架中,...

2019-07-30 08:57:20 429

原创 简单的聊天室服务器 基于Boost asio(1)--boost库

**最近学习了一些boost asio的知识,所以决定解读一下官方文档。继而编写一个简单的聊天服务器。 **在开始搞代码之前,得先弄清楚,这个玩意(boost asio)是干什么的。Boost.Asio是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的C++库。关于网络处理已经有很多解决方案,但是Boost.Asio是目前为止最优的方案。它在2005年就被包含进Boost,然后被大...

2019-07-30 08:46:42 575

原创 操作系统 C/C++实现的银行家算法

银行家算法是一种最有代表性的避免死锁的算法。为实现银行家算法,每一个进程进入系统时,都要查看在运行过程中需要每种资源的最大数目,其数目应该不超过系统持有的最大资源数目。数据结构:1.可利用资源向量Available。目前系统中可用的资源队列。2.最大需求矩阵 max某个进程队友各类资源的需求。3.分配矩阵Allocation表示已分配给每个进程的资源数。4.需求矩阵 Need表...

2019-07-20 10:17:29 1569

原创 OS C实现的短作业优先

用C语言和数组实现的短作业优先调度 非常简单#includeusing namespace std;#define N 3struct MM{int id;//标号int index;char name[5];//进程名int cometime;//到达时间int worktime;//服务时间int starttime;//开始时间int overtime;//结束时间...

2019-07-20 09:36:30 214

空空如也

空空如也

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

TA关注的人

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