w h y ? y o u a r e h e r e ?

那些年我们追过的网络库 为什么要用 C++ 编写服务端程序?如果说答案是性能,那么肯定有人会满不在乎。觉得性能不够的话, 只要加机器就可以了。 然而更少的机器,意味着更低的能耗,更少的硬件投入,更少的人力资源投入去维护机器。总而言之,更低的成本。 肯定会有人说,C++的开发速度太慢了。然而这并不是绝 ...
Read more »

概述 首先对于游戏的业务,一般是玩家登陆到大厅,有一些任务、物品、好友、排行榜、聊天这种交互,其次是玩家与玩家之前的匹配与对局。以Moba游戏为例,玩家主要的行为就是登陆后进行匹配,匹配到水平差不多的10个人,分为两队,每组5个人创建对局进行pvp战斗,玩家的操作以指令的方式由客户端发到服务器。 大 ...
Read more »

概述对于大型的工程项目,依赖许多人的配合,包含大量不同的代码库与服务,有的我们能够访问程序的源代码,有的可以访问程序的可重定位文件,有的可以访问到可执行文件及其环境,假如我们想在在不同的层面改变或者添加一些逻辑,操作系统、编译器以及程序语言、代码库等都提供了 一些机制使得 开发者可以 方便的 增加或 ...
Read more »

天问一号发射 卫星发射时间表 时间表在网上有很多,善用搜索基本找是没什么问题.微博上关注了一个圈内的小姐姐,更新时间和信息都比较及时. 论坛 http://www.spaceflightfans.cn/china-launch-schedule 微博 https://weibo.com/l ...
Read more »

Linux中的段Intel 微处理器的段机制是从8086 开始提出的, 那时引入的段机制解决了从CPU 内部16 位地址到20 位实地址的转换。为了保持这种兼容性,386 仍然使用段机制,但比以前复杂。因此,Linux 内核的设计并没有全部采用Intel 所提供的段方案,仅仅有限度地使用了一下分段机 ...
Read more »

why位置信息在软件以及显示生活中有了越来越多的应用,比如微信里面附近的人,很多游戏里面也加入了地理位置的玩法,让玩家与玩家有更多的互动,提高黏性。 假想这样一个需求:玩家获取附近的人,一起开黑或者某些社交软件获取附近的人交友或者交流,需要怎么实现,假定该软件的使用者比较多。 本身学过一些硬件、传感 ...
Read more »

概述ucontext系列允许在C中实现高级控制流模式,例如迭代器,纤维和协程。 主要的4个函数 int setcontext(const ucontext_t *ucp) This function transfers control to the context in ucp. Executio ...
Read more »

什么是系统调用系统调用是应用程序(包含运行库)与操作系统内核的接口,它决定了应用程序如何与内核打交道。在现在的操作系统系统里,程序运行的时候,本身是没有权利访问系统的资源,由于系统有限的资源有可能被不同的应用程序同时访问,因此,如果不加以保护,各个应用程序的冲突在所难免。所以现代操作系统都尽可能的把 ...
Read more »

进程的建立从操作系统的角度看,一个进程最关键的特征是它拥有独立的虚拟地址空间,这使得它有别于其他进程,很多时候一个程序程序被执行同时伴随着一个新进程的创建,在有虚拟存储的情况下,创建一个进程,然后加载可执行文件并且执行,需要做三件事: 创建一个独立的虚拟地址空间 读取可执行文件头,并且建立虚拟空间 ...
Read more »

原子操作自增(++i)操作在多线程环境下出现错误是因为这个操作被编译成的代码不止一条指令,因此在执行的时候可能执行到一半被系统调度打乱,去执行别的代码。我们把单指令的操作称为原子的(atomic),因为无论如何,单条指令的执行时不会被打乱的,为了避免出错,很多体系结构都提供了一些常用操作的原子指令。 ...
Read more »