- 博客(39)
- 资源 (12)
- 收藏
- 关注
原创 开源游戏服务器框架NFShmServer 简介(二)
[**NFPluginLoader 服务器的插件加载引擎**](https://github.com/yigao/NFShmServer/wiki/Chapter-1:NFPluginLoader,Plugin,Module)* [**NFCommPlugin 构建服务器大厦的基础引擎**](https://github.com/yigao/NFShmServer/wiki/Tutorial:-NFCommPlugin)架构采用分成架构,系统分为架构层,服务器框架层,具体的游戏业务层。
2024-01-13 12:03:45
472
原创 开源游戏服务器框架NFShmServer 简介(一)
这是一个快速、可扩展、分布式的C++游戏服务器引擎/框架,包括actor库、网络库,可用作实时多人游戏引擎(MMO RPG/MOBA),支持C#/Lua script/Unity3d、Cocos2dx和计划支持虚幻。
2024-01-04 16:39:20
1340
原创 C++ 开源游戏服务器框架
1.NFShmServer 作者:gaoyi。技术开发群:QQ:762414765。2.moon:ua多线程actor架构。:lua多线程actor架构。
2024-01-04 16:06:31
993
原创 共享内存STL
部分公司,主要是腾讯出来创业搞出来的公司,使用共享内存来解决C++服务器崩溃后数据丢失和C++热更问题。但是使用共享内存创建类,缺乏stl之类的容器支持。导致使用共享内存成本太高。开源共享内存游戏服务器。
2024-01-04 15:57:46
456
转载 一种自动反射消息类型的 Google Protobuf 网络传输方案
陈硕 (giantchen_AT_gmail)Blog.youkuaiyun.com/Solstice t.sina.com.cn/giantchen 这篇文章要解决的问题是:在接收到 protobuf 数据之后,如何自动创建具体的 Protobuf Message 对象,再做的反序列化。“自动”的意思是:当程序中新增一个 protobuf Message 类型时,这部分代码不需要修改,不需要自己去注册消息...
2018-06-06 15:28:23
616
转载 EPOLL的内核实现
1. select/poll的缺点 A. 每次调用时重复的从用户态读入参数 B. 每次调用时全量的扫描文件描述符 C. 每次调用开始,将进程加入到每个文件描述符的等待队列,在调用结束后又把进程从等待队列中删除。 D. 在不修改内核的情况下,select最多支持1024个文件描述符。 2. 文件系统中的一些重要结构在linux中,进程通过file_struct...
2018-05-31 22:20:22
283
转载 EPOLL内核源代码实现原理分析
EPOLL内核源代码实现原理分析epoll的实现主要依赖于一个迷你文件系统:eventpollfs。此文件系统通过eventpoll_init初始化。在初始化的过程中,eventpollfs create两个slub分别是:epitem和eppoll_entry。epoll使用过程中有几个基本的函数分别是epoll_create,epoll_ctl,epoll_wait。涉及到四个重要的数据结构:...
2018-05-31 22:18:42
1780
转载 EPOLL的理解和深入分析
搞Linux 服务器开发的人肯定了解 select、poll、epoll,他们都是基于事件驱动的IO多路复用技术,而他们之间的区别网上已经有很多的文章了,大家可以去详细的阅读,我在这里主要想写写我对epoll的底层实现的理解。首先还是先说说 select、poll相比与epoll来说他们效率低下的原因吧:select、poll、epoll是Linux平台下的IO多路复用技术,适合用来管理大量的文件...
2018-05-31 22:09:04
987
2
转载 非常全的VsCode快捷键
按 Press功能 FunctionCtrl + Shift + P,F1显示命令面板 Show Command PaletteCtrl + P快速打开 Quick OpenCtrl + Shift + N新窗口/实例 New window/instanceCtrl + Shift + W关闭窗口/实例 Close window/instance基础编辑 Basic editing按 Press功...
2018-05-31 20:46:37
629
转载 IO多路复用之epoll总结
1、基本知识 epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epoll接口 epoll操作过程需要三个接口,分别如下:#include <sys...
2018-05-31 20:38:05
162
转载 高并发网络编程之epoll详解
在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。本文便来介绍epoll的实现机制,并附带讲解一下select和poll。通过对比其不同的实现机制,真正理解为何epoll能实现高并发。select()和p...
2018-05-31 10:00:51
196
转载 Libevent参考手册:使用libevent的DNS:高层和底层功能
译自http://www.wangafu.net/~nickm/libevent-book/Ref9_dns.htmllibevent提供了少量用于解析DNS名字的API,以及用于实现简单DNS服务器的机制。我们从用于名字查询的高层机制开始介绍,然后介绍底层机制和服务器机制。注意libevent当前的DNS客户端实现存在限制:不支持TCP查询、DNSSec以及任意记录类型。未来版本的libeven...
2018-05-31 10:00:38
660
转载 Libevent参考手册:连接监听器:接受TCP连接
译自http://www.wangafu.net/~nickm/libevent-book/Ref8_listener.htmlevconnlistener机制提供了监听和接受TCP连接的方法。本章的所有函数和类型都在event2/listener.h中声明,除非特别说明,它们都在2.0.2-alpha版本中首次出现。1 创建和释放evconnlistener接口两个evconnlistener_...
2018-05-31 10:00:28
428
转载 Libevent参考手册:evbuffer:缓冲IO实用功能
译自http://www.wangafu.net/~nickm/libevent-book/Ref7_evbuffer.htmllibevent的evbuffer实现了为向后面添加数据和从前面移除数据而优化的字节队列。evbuffer用于处理缓冲网络IO的“缓冲”部分。它不提供调度IO或者当IO就绪时触发IO的功能:这是bufferevent的工作。除非特别说明,本章描述的函数都在event2/b...
2018-05-30 22:04:36
547
转载 Libevent参考手册:evbuffer:缓冲IO实用功能
译自http://www.wangafu.net/~nickm/libevent-book/Ref7_evbuffer.htmllibevent的evbuffer实现了为向后面添加数据和从前面移除数据而优化的字节队列。evbuffer用于处理缓冲网络IO的“缓冲”部分。它不提供调度IO或者当IO就绪时触发IO的功能:这是bufferevent的工作。除非特别说明,本章描述的函数都在event2/b...
2018-05-30 22:03:21
657
转载 Libevent参考手册:Bufferevent:高级话题
译自http://www.wangafu.net/~nickm/libevent-book/Ref6a_advanced_bufferevents.html 本章描述bufferevent的一些对通常使用不必要的高级特征。如果只想学习如何使用bufferevent,可以跳过这一章,直接阅读下一章。1 成对的bufferevent有时候网络程序需要与自身通信。比如说,通过某些协议对用户连接进行隧道操...
2018-05-30 22:02:16
352
转载 libevent参考手册第六章:bufferevent:概念和入门
很多时候,除了响应事件之外,应用还希望做一定的数据缓冲。比如说,写入数据的时候,通常的运行模式是:l 决定要向连接写入一些数据,把数据放入到缓冲区中l 等待连接可以写入l 写入尽量多的数据l 记住写入了多少数据,如果还有更多数据要写入,等待连接再次可以写入这种缓冲IO模式很通用,libevent为此提供了一种通用机制,即bufferevent。bufferevent由一个底层的传输端口(如套接字)...
2018-05-30 22:01:31
445
转载 libevent参考手册第五章:辅助类型和函数
译自http://www.wangafu.net/~nickm/libevent-book/Ref5_evutil.html<event2/util.h>定义了很多在实现可移植应用时有用的函数,libevent内部也使用这些类型和函数。1 基本类型1.1 evutil_socket_t在除Windows之外的大多数地方,套接字是个整数,操作系统按照数值次序进行处理。然而,使用Windo...
2018-05-30 22:00:22
241
转载 翻译:libevent参考手册第四章:与事件一起工作
译自http://www.wangafu.net/~nickm/libevent-book/Ref4_event.htmllibevent的基本操作单元是事件。每个事件代表一组条件的集合,这些条件包括:v 文件描述符已经就绪,可以读取或者写入v 文件描述符变为就绪状态,可以读取或者写入(仅对于边沿触发IO)v 超时事件v 发生某信号v 用户触发事件所有事件具有相似的生命周期。调用libevent函...
2018-05-30 21:59:20
292
转载 翻译:Libevent参考手册第三章:与事件循环一起工作
译自http://www.wangafu.net/~nickm/libevent-book/Ref3_eventloop.html1 运行循环一旦有了一个已经注册了某些事件的event_base(关于如何创建和注册事件请看下一节),就需要让libevent等待事件并且通知事件的发生。接口默认情况下,event_base_loop()函数运行event_base直到其中没有已经注册的事件为止。执行循...
2018-05-30 21:58:01
210
转载 libevent参考手册第二章:创建event_base
译自http://www.wangafu.net/~nickm/libevent-book/Ref2_eventbase.html 使用libevent函数之前需要分配一个或者多个event_base结构体。每个event_base结构体持有一个事件集合,可以检测以确定哪个事件是激活的。如果设置event_base使用锁,则可以安全地在多个线程中访问它。然而,其事件循环只能运行在一个线程中。如果需...
2018-05-30 21:55:42
260
转载 Libevent参考手册第一章:设置libevent
翻译自:http://www.wangafu.net/~nickm/libevent-book/Ref1_libsetup.htmllibevent有一些被整个进程共享的、影响整个库的全局设置。必须在调用libevent库的任何其他部分之前修改这些设置,否则,libevent会进入不一致的状态。1 Libevent中的日志消息libevent可以记录内部错误和警告。如果编译进日志支持,还会记录调试...
2018-05-30 21:53:42
479
转载 Libevent参考手册:前言
翻译自:http://www.wangafu.net/~nickm/libevent-book/Ref0_meta.html转自:http://blog.sina.com.cn/s/blog_56dee71a0100q7j6.html1 从一万英尺外看LibeventLibevent是用于编写高速可移植非阻塞IO应用的库,其设计目标是:v 可移植性:使用libevent编写的程序应该可以在lib...
2018-05-30 21:50:53
323
原创 socket通信简介
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket...
2018-05-29 23:45:37
5202
转载 史上最全的maven的pom.xml文件详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0...
2018-05-29 14:14:48
197
转载 安装 Maven
1 安装 Maven需要事先安装所依赖的 JDK,详见文章:Linux/Windows JDK 的安装1.1 下载与安装(9M)1234### http://maven.apache.org/download.cgiwget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.t...
2018-05-29 12:51:53
266
转载 Jenkins+Github持续集成
配置前要求:1.Jenkins已经安装Github插件2.Jenkins服务器已经拥有一个公网IP地址,由于我是本地搭建的,所以我用Ngrok实现内网穿透。(一)、全局配置先配置Github连接的一些信息,打开Jenkins首页控制台--》系统管理--》系统设置选择Github--》添加Github Server选择Add输入github的账号与密码然后点击Add配置Jenkins在Hook UR...
2018-05-29 12:48:59
2128
转载 Jenkins 持续集成综合实战
Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。本文以 CentOS7 环境为例,总结了 Jenkins 的安装与配置、邮件功能使用,并接入阿里巴巴的著名开源项目 fastjson,以此演示 Java 项目(SVN+Maven)中 FindBugs/CheckStyle/PMD 等常用插件的使用、单元...
2018-05-29 10:34:49
468
转载 添加用户到sudoers
** is not in the sudoersfile. This incident will bereported.” (用户不在sudoers文件中……)处理这个问题很简单,但应该先理解其原理再操作首先要明白root的密码一般用户是不应改知道的,但一般用户有时可能要用到root的一些权限。这里就有了一个 /etc/sudoers文件,用来保存一些用户,使这些用户可以通过sudo命令来暂时...
2018-05-28 22:21:10
34528
1
转载 centos7安装mysql5.7
安装环境:CentOS7 64位 MINI版,安装MySQL5.71、配置YUM源在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/# 下载mysql源安装包shell> wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm# ...
2018-05-28 22:16:36
94
转载 sonarque插件C++安装
添加插件下载c++代码分析插件移动到sonar插件目录代码检测规则配置创建Quality Profiles添加现有规则参考添加插件下载c++代码分析插件sonar-cxx移动到sonar插件目录# mv sonar-cxx-plugin* /etc/sonarqube-5.6.7/extensions/plugins1重启sonar服务 进入Update Center查看localhost:900...
2018-05-28 22:03:30
918
转载 如何在github利用Travis CI 对项目做持续集成测试
前言一个项目如何保证代码质量是开发中非常重要的环节,对于开源项目来说更是如此,因为开源项目要面对的是来自不同水平开发者提交的代码。所以围绕开源做持续集成(Continuous Integration)变得越来越重要,而目前使用最广泛的免费CI工具当数Travis CI我们可以在github中常见到这些图标,就是集成测试的效果点链接,还可以看成集成测试的过程Travis CI能做的最主要工作是自动运...
2018-05-28 21:56:40
687
原创 利用Travis CI+SonarCloud为自己GitHub上的开源项目建立可持续集成
怎么使用Travis CI我就不说了,自己百度,这里主要讲的是利用Travis CI + GitHua + SonarCloud来实现自动编译,自动分析,就可观看自己项目的持续改进
2018-05-28 21:52:09
675
原创 SonarQube代码质量管理平台C++插件sonar-cxx的安装
SonarQube的问题,对于C/C++用户来说,SonarQube的默认C/C++插件CFamily是收费的,让人绝望啊,一度让我放弃了自己搭建SonarQube服务器, 改为了使用Travis CI持续集成自己的项目,然后让Travis CI转SonarCloud来实现自己的对项目的可持续检查监督。SonarCloud相当于一个公有的国际化的分布式SonarQube,针对全体githua上的项...
2018-05-28 21:06:08
12270
6
转载 SonarQube代码质量管理平台安装与使用
Sonar简介Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测sonarQube能带来什么?Developers' Seven Deadly Sins1.糟糕的复杂度分布 文件、类、方法等,如果复杂度过...
2018-05-28 20:05:25
256
原创 Linux中 SonarQube代码质量管理平台以及C++插件安装
SonarQube是管理代码质量一个开源平台,可以快速的定位代码中潜在的或者明显的错误。 SonarQube安装 1、环境准备 (1)sonarQube 下载地址https://www.sonarqube.org/downloads/ 注:官网显示目前最新版本是7.1 (2)sonarQube Scanners 下载地址http://docs.sonar...
2018-05-28 12:24:00
37
原创 遇到一个很古怪的问题,C++类static const成员的初始化
在我的文件里有这class NFDuration, NFDuration.h里是这样的:// A Duration represents the elapsed time between two instants// as an int64 nanosecond count. The representation limits the// largest representable du...
2018-05-27 21:49:00
32
pyserial-2.6.win32-py2.7.exe
2013-06-08
SCON工具源码
2013-05-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人