![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络
文章平均质量分 77
IT 哈
这个作者很懒,什么都没留下…
展开
-
联机游戏原理入门即入土 -- 入门篇
联机游戏转载 2022-09-15 10:06:50 · 4772 阅读 · 0 评论 -
路由器,集线器,交换机,网桥,光猫有啥区别?
故事就从一个车轱辘说起吧。先来看一个车轱辘。辐条从车轱辘边缘,一直汇聚到 中心的轴,这个轴在英文里叫hub。而我们今天要讲到的集线器,英文里也叫hub。都叫hub,多少有点关系,看下这面这个图大概能明白,其实两者有点像。hub的由来大概想表达的意思是,它是汇聚网线的中心,因此就叫集线器。所以可以理解,大家常逛的Github,Docker Hub, 还有P**hub,都是为了表达它们是某类资源的中心了吧。那么集线器是什么呢?那就要从电脑是怎么互联的这个话题说起。..转载 2021-11-08 13:08:48 · 554 阅读 · 0 评论 -
网络编程:epoll
前言前面讲了IO多路复用的API,select和poll的缺点是性能不够,客户端连接越多性能下降越明显,epoll的出现解决了这个问题,引用The Linux Programming Interface的一个统计对比如下:fd数量 poll CPU时间(秒) select CPU时间(秒) epoll CPU时间(秒)---------------------------------------------------------------------10转载 2021-11-06 10:01:27 · 285 阅读 · 0 评论 -
Java NIO浅析
NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。那么NIO的本质是什么样的呢?它是怎样与事件模型结合来解放线程、提高系统吞吐的呢?本文会从传统的阻塞I/O和线程池模型面临的问题讲起,然后对比几种常见I/O模型,一步步分析NIO怎么利用事件模型处理I/O,解决线程池瓶颈处理海量连接,包括利用面向事件的方式编写服务端/客户端程转载 2021-11-05 18:52:29 · 120 阅读 · 0 评论 -
我画了19张图,帮你彻底搞懂Redis
又到了金三银四跳槽季,好多同学已经开始行动了。今天我来助力一把,送出这套 Redis 面试题,助力大家通关。图片来自 PexelsRedis 为什么响应快①数据保存在内存中Redis 数据保存在内存中,读写操作只要访问内存,不需要磁盘 IO。②底层数据结构如下:Redis 的数据以 key:value 的格式存储在散列表中,时间复杂度 o(1)。 Redis 为 value 定义了丰富的数据结构,包括动态字符串、双向链表、压缩列表、hash、跳表和整数数组,可以根据 v转载 2021-11-04 19:31:33 · 219 阅读 · 0 评论 -
Linux I/O 原理 和零拷贝技术
导言如今的网络应用早已从 CPU 密集型转向了 I/O 密集型,网络服务器大多是基于C-S模型,也即客户端 - 服务端模型,客户端需要和服务端进行大量的网络通信,这也决定了现代网络应用的性能瓶颈:I/O。传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和用户进程地址空间定义的缓冲区之间进行传输。设置缓冲区最大的好处是可以减少磁盘 I/O 的操作,如果所请求的数据已经存放在操作系统的高速缓冲存储器中,那么就不需要再进...转载 2021-11-04 18:42:53 · 320 阅读 · 0 评论 -
玩转直播:如何从 0 到 1 构建简单直播系统
一、前言随着5G时代的到来,音视频行业也可能迎来一个行业的春天,直播则是新视频行业一直以来的一个重要的产品形态,从最初的秀场直播,游戏直播,到今年由于疫情,目前比较火的在线教育直播,带货直播等,各类新的直播形式则是越来越多的展示在大众面前。作为技术开发的我们,今天我们一起简单的了解一下,如何快速搭建一套最简单的直播系统,简单地了解一下主流直播的架构模型。二、推拉流模型首先我们先看一张完整的直播推拉流的模型图,我们可以很清楚地看到直播宏观上的架构模型图2.1 直转载 2021-10-22 15:30:11 · 1186 阅读 · 0 评论 -
系统架构的漫长演变之路
阶段一:单体应用架构网站发展的初期,所有的应用都部署在同一台服务器。阶段二:应用服务器和数据库服务器分离随着互联网的发展,网站上线之后,用户的访问量持续增加,服务器的负载压力变大,而在代码层面的优化没有什么进步,所以从硬件方面考虑,增加服务器的数量,应用服务器和数据库服务器分离,尽可能提高性能。阶段三:应用服务器集群随着互联网的进一步发展,访问人数日益增加,应用服务器的负载压力急剧增大,选择增加应用服务器的数量,搭建集群,将访问的流量分发到各个服务器,从而提升转载 2021-10-22 13:18:14 · 278 阅读 · 0 评论 -
HTTP服务器的本质:tinyhttpd源码分析及拓展
已经有一个月没有更新博客了,一方面是因为平时太忙了,另一方面是想积攒一些干货进行分享。最近主要是做了一些开源项目的源码分析工作,有c项目也有python项目,想提升一下内功,今天分享一下tinyhttpd源码分析的成果。tinyhttpd是一个非常轻量型的http服务器,c代码500行左右,可以帮助我们了解http服务器运行的实质。在分析之前,我们先说一下http报文。一.http请求http请求由三部分组成,分别是:起始行、消息报头、请求正文Request Line<CRLF>转载 2021-09-16 10:37:37 · 369 阅读 · 0 评论 -
服务器返回的14种常见HTTP状态码
当我们从客户端向服务器发送请求时服务器向我们返回状态码状态码就是告诉我们服务器响应的状态通过它,我们就可以知道当前请求是成功了还是出现了什么问题状态码是由3位数字和原因短语组成的(比如最常见的:200 OK)其中第一位数字表示响应类别,响应类别从1到5分为五种add:其实我查阅资料发现还有一个6打头的一个 600 Unparseable Response Headers表示服务器没有返回响应头部,只返回实体内容,也算做服务器错误状态码吧,不过绝对不常见状态码响应类别的的定义...转载 2021-05-04 18:08:08 · 806 阅读 · 0 评论 -
C语言CGI编程入门(一)
CGI是指web服务器调用编程语言编写的程序的一个接口。比如我们可以编写一个用户注册的页面,用户将其输入的邮箱、用户名、密码输入并点击注册,此时浏览器就将用户输入的内容发送给了我们后台的CGI程序,我们的CGI程序接受到这些信息,可以对其进行处理。比如送入数据库、判断输入的信息是否合法等。 主流的CGI程序用Perl编写,Perl是一款强大的脚本语言,不过我这里不太懂,我也不去比较某两个语言间的优劣。我说一下用C和C++如何编写CGI程序,告诉大家用C语言也能编写web应用程序,用C语言也能写一个..转载 2021-03-30 20:05:53 · 1743 阅读 · 0 评论 -
CGI是什么
转自https://www.jianshu.com/p/c4dc22699a42转载 2021-03-30 19:22:05 · 97 阅读 · 0 评论 -
路由器、交换机、集线器的区别
转自https://blog.csdn.net/zwj_jyzl/article/details/78639754转载 2021-03-30 15:42:14 · 76 阅读 · 0 评论 -
图解说明——究竟什么是Windows句柄
图解说明——究竟什么是Windows句柄参考资料:http://blog.csdn.net/newjerryj/article/details/4383701http://www.cnblogs.com/yellowyu/archive/2009/06/07/1497910.html写在前面: 对于“句柄”,在下一直停留在一知半解的认识层面,近日在下学习Windows编程,决定趁此机会将句柄彻底搞清楚。查阅了一些网络上的资料,发现网络上的讲解大概可以分为两类:一种...转载 2021-03-29 22:46:43 · 155 阅读 · 0 评论 -
基于nodejs做一个简单的http/web服务器
基于nodejs做一个简单的http/web服务器nodejs是什么简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。创建项目环境,执行下面的命令fuc.js根据不同请求方法做不同的处理...转载 2020-10-09 11:01:21 · 582 阅读 · 0 评论 -
经典游戏服务器端架构概述
架构的分析模型一. 讨论的背景现代电子游戏,基本上都会使用一定的网络功能。从验证正版,到多人交互等等,都需要架设一些专用的服务器,以及编写在服务器上的程序。因此,游戏服务器端软件的架构,本质上也是游戏服务器这个特定领域的软件架构。软件架构的分析,可以通过不同的层面入手。比较经典的软件架构描述,包含了以下几种架构: 运行时架构——这种架构关心如何解决运行效率问题,通常以程序进程图、数据流图为表达方式。在大多数开发团队的架构设计文档中,都会包含运行时架构,说明这是一种非常重要的设计方面。这种架转载 2020-10-05 21:16:17 · 4227 阅读 · 1 评论 -
Node.js 游戏服务器开发
项目名称:四川麻将统一简称:scmj参考资料:https://v.qq.com/x/page/o0522mo58vj.html基本概念代开房间带开房间表示代理创建一个新的房间,让其它玩家加入。为什么要代开房呢?首先可以帮助没有房卡的朋友开房来提升尚未买卡的玩家积极性,其次代理开房可以更高的对玩家进行管理以防止玩家自己创房。代开流程客户端新增代开选项,代理创房的消息内附带代开标识。 大厅服中区分不同类型的房间并分别处理 房间服添加对代开的数据读写 客户端获取代开房列表 房间服获取转载 2020-07-30 15:52:34 · 2081 阅读 · 0 评论 -
CGI是什么
CGI早期的Web服务器,只能响应浏览器发来的HTTP静态资源的请求,并将存储在服务器中的静态资源返回给浏览器。随着Web技术的发展,逐渐出现了动态技术,但是Web服务器并不能够直接运行动态脚本,为了解决Web服务器与外部应用程序(CGI程序)之间数据互通,于是出现了CGI(Common Gateway Interface)通用网关接口。简单理解,可以认为CGI是Web服务器和运行其上的应用程序进行“交流”的一种约定。Web系统结构CGI是Web服务器和一个独立的进程之间的协议,它会把HTT转载 2020-07-17 16:56:38 · 11615 阅读 · 0 评论 -
理解水平扩展和垂直扩展
当一个开发人员提升计算机系统负荷时,通常会考虑两种方式垂直扩展和水平扩展。选用哪种策略主要依赖于要解决的问题 以及系统资源的限制。在这篇文章中我们将讲述这两种策略并讨论每种策越的优缺点。如果你已经有一个软件系统需要不断成长,那么你将有意或者无意中选择这两 种策略中的一种。垂直扩展在垂直扩展模型中,想要增加系统负荷就意味着要在系统现有的部件上下工夫,即通过提高系统部件的能力来实现。例如,假设你现在负责一批木材采伐的操作。在这个例子中,我们假设有3辆卡车,每辆车一次可以运25根木材,计算花.转载 2020-07-01 17:08:22 · 2494 阅读 · 1 评论 -
游戏服务端开源引擎GoWorld教程——(3)手把手写一个聊天室
看完示例,接着开始写代码。本节完成的功能是从零开始搭建一个简单的聊天室,包括服务端和Unity客户端两部分。界面如图,客户端点击链接登录,输入聊天内容,所有连接的客户端都能够在调试窗口中看到消息。系列文章罗培羽:游戏服务端开源引擎GoWorld教程—— (1)安装和运行罗培羽:游戏服务端开源引擎GoWorld教程——(2)Unity示例双端联调罗培羽:游戏服务端开源引擎GoWorld教程——(3)手把手写一个聊天室罗培羽:游戏服务端开源引擎GoWorld教程——(4)制作多频道聊天室转载 2020-06-24 16:43:11 · 1474 阅读 · 0 评论 -
游戏服务器架构
一、游戏服务器特征游戏服务器,是一个会长期运行程序,并且它还要服务于多个不定时,不定点的网络请求。所以这类服务的特点是要特别关注稳定性和性能。这类程序如果需要多个协作来提高承载能力,则还要关注部署和扩容的便利性;同时,还需要考虑如何实现某种程度容灾需求。由于多进程协同工作,也带来了开发的复杂度,这也是需要关注的问题。功能约束,是架构设计决定性因素。基于游戏业务的功能特征,对服务器端系统来说,有以下几个特殊的需求:游戏和玩家的数据存储落地对玩家交互数据进行广播和同步重要逻辑要在服务器上运转载 2020-06-24 16:31:44 · 678 阅读 · 0 评论 -
一种适合竞技和MMO的无单点游戏服务端集群模式
一、众所周知,在大厅+子游戏模式中,最容易现实集群的部分,就是子游戏部分。 我们只需要在创建房间的时候使用负载均衡算法选择适合的服务器进程就行。常见的集群模式有下面两种情况 。1、中央集群模式,消息通过中央服转发 中央集群式的优点就是架构简单,每个进程只需要维护与中心服的连接就行。中心服还能够实时监测各进程状态,并向所有节点广播。中央集群式的缺点就是这个中心服单点。中心服故障,或者压力过大时,都会出现整个系统架构不稳,响...转载 2020-06-24 16:04:45 · 258 阅读 · 0 评论 -
深入浅出 Node.js 游戏服务器开发 -- 分布式聊天服务器搭建
在上一篇文章中, 我们介绍了游戏服务器的基本架构、相关框架和 Node.js 开发游戏服务器的优势。本文我们将通过聊天服务器的设计与开发,来更深入地理解 pomelo 开发应用的基本流程、开发思路与相关的概念。本文并不是开发聊天服务器的 tutorial,如果需要 tutorial 和源码可以看文章最后的参考资料。为什么是聊天服务器?我们目标是搭建游戏服务器,为什么从聊天开始呢?聊天可认为是简化的实时游戏,它与游戏服务器有着很多共通之处,如实时性、频道、广播等。由于游戏在场景管理、客户端动画等方转载 2020-06-15 14:59:57 · 842 阅读 · 0 评论 -
深入浅出 node.js 游戏服务器开发 1——基础架构与框架介绍
游戏服务器概述没开发过游戏的人会觉得游戏服务器是很神秘的东西。但事实上它并不比 web 服务器复杂,无非是给客户端提供网络请求服务,本质上它只是基于长连接的 socket 服务器。当然在逻辑复杂性、消息量、实时性方面有更高的要求。游戏服务器是复杂的 socket 服务器。如果说 web 服务器的本质是 http 服务器,那么游戏服务器的本质就是 socket 服务器。 它利用 socket 通讯来实现服务器与客户端之间的交互。事实上有不少游戏是直接基于原生 socket 来开发的。 相对于简单的转载 2020-06-15 14:56:31 · 2006 阅读 · 0 评论 -
Node.js 之网游服务器实践
随着Node.js的不断发展与壮大,应用范围也越来越广泛,从传统的企业应用,到互联网使用,再到云计算的发展,它的身影也是随处可见。当然,它的受欢迎程度能在短时间内得到这么快的发展,除却与其本身的事件模型及V8的性能优化等一系列特性有关之外,还和国内外很多互联网公司的攻城师的大量应用和参与到开源项目中有密切关系,如网易的游戏开发,淘宝的数据之美等等。随着 HTML5 应用和移动互联网平台的指数增长,越来越多的用户使用了移动平台的休闲服务,采用 Node.js 实现高性能和可扩展性的游戏服务将是一件有意...转载 2020-06-15 14:50:38 · 354 阅读 · 0 评论 -
学习WebSocket协议—从顶层到底层的实现原理(修订版)
从RealTime说起自从即时Web的概念提出后,RealTime便成为了web开发者们津津乐道的话题。实时化的web应用,凭借其响应迅速、无需刷新、节省网络流量的特性,不仅让开发者们眼前一亮,更是为用户带来绝佳的网络体验。近年来关于RealTime的实现,主要还是基于Ajax的拉取和Comet的推送。大家都知道Ajax,这是一种借助浏览器端JavaScript实现的异步无刷新请求功能:要客户端按需向服务器发出请求,并异步获取来自服务器的响应,然后按照逻辑更新当前页面的相应内容。但是这仅仅是拉取啊,转载 2020-06-11 16:31:32 · 2127 阅读 · 0 评论 -
Socket.IO打造基础聊天室
01 Socket.io 简介一个100%由 JavaScript 实现、基于Node.js的用于实时通信、跨平台的开源框架,它包括了客户端的 JavaScript 库和 服务器端的 Node.js 服务。 实现了对于其他语言的支持,如 Java、C++、Swift。 提供了一个与 WebSocket 类似的通用 API:Socket.io方法与事件【主要特点】:(1) 可靠性(Reliability):依赖 Engine.IO, 首先建立长轮询,然后试着升级到更好的传输方式,如 ..转载 2020-06-11 15:54:14 · 1868 阅读 · 0 评论 -
搭建WebSocket简易聊天室
写在前面:随着越来越多的新人开始接触白鹭引擎,创作属于自己的游戏。考虑到初学者会遇到一些实际操作问题,我们近期整理推出“菜鸟”系列技术文档,以便更好的让这些开发者们快速上手,Egret大神们可以自动忽略此类内容。本文,我们通过Egret和Node.js实现一个在线聊天室的demo。主要包括:聊天,改用户名,查看其他用户在线状态的功能。大致流程为,用户访问网页,即进入聊天状态,成为新游客,通过底部的输入框,可以输入自己想说的话,点击发布,信息呈现给所有在聊天的人的页面。用户可以实时修改自己的昵称,用户离线转载 2020-06-06 18:41:51 · 958 阅读 · 0 评论 -
我写了一份操作系统词典送给你!
1. 操作系统(Operating System,OS):是管理计算机硬件与软件资源的系统软件,同时也是计算机系统的内核与基石。操作系统需要处理管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。2. shell:它是一个程序,可从键盘获取命令并将其提供给操作系统以执行。在过去,它是类...转载 2020-04-28 09:10:14 · 1088 阅读 · 1 评论 -
深度:手写一个WebSocket协议 [7000字]
写在开头:为什么要使用websocket协议(以下简称ws协议),什么场景会使用?我之前是做IM相关桌面端软件的开发,基于TCP长链接自己封装的一套私有协议,目前公司也有项目用到了ws协议,好像无论什么行业,都会遇到这个ws协议。想自己造轮子,可以参考我之前的代码和文章:原创:从零实现一个简单版React (附源码)原创:如何自己实现一个简单的...转载 2020-04-27 11:58:17 · 839 阅读 · 0 评论 -
入门操作系统知识,这一篇就够啦!
弱弱的问一问: 要操作系统干嘛?这里先不讲操作系统的概念了,因为文字太生硬了,我们只需要看一个简单的例子: 在我们的JS代码里,只需要输入console.log(1+1); 就可以在浏览器面板中看到2,这其中发生了什么事情呢?(简单扫一眼) 首先键盘输入代码1+1到显示器输出2, 需要CPU控制键盘(输入设备) ,将获取的1+1指令放入内存 然后CPU的控制器从...转载 2020-04-19 17:19:00 · 1770 阅读 · 0 评论 -
Pomelo框架总结
Pomelo框架总结A fast,scalable,distributed game server framework for Node.js联系我Pomelo交流群 @老顽童-NextZeus 微信群 BJ NodeJS Club @老顽童适用场景多人游戏:手游,社交游戏,网页游戏,MMORPG ,ARPG 实时应用:聊天,消息推送,等等特点高性能:基于Node.js...转载 2020-04-05 21:09:13 · 1870 阅读 · 0 评论 -
C++后台实践:古老的CGI与Web开发
谈到web开发,大家首先想到的PHP、JavaEE/JSP、.NET/ASP、Ruby on rails、Python的Django等等。可谓百花齐放,你一般不会想到C++和Web开发有什么关系,但其实动态网页的开发(web开发)可是在这些动态网页语言诞生之前就存在了的。所以C/C++也是可以做web开发的,它利用的技术是——CGI。在天地初开,混沌未分之时,动态网页语言尚未出...转载 2020-04-03 15:51:56 · 640 阅读 · 0 评论 -
Web服务器工作原理概述
很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的?它们在幕后做了什么动作?Java Servlet API(例如ServletContext,ServletRequest,ServletResponse和Session这些类)在其中扮演了什么角色?这些都是web应用开发者或者想成为web应用开发者的人必须要知道的...转载 2020-04-01 17:56:38 · 364 阅读 · 0 评论 -
Web服务器工作原理详解(基础篇)
概述:Web服务器概念较为广泛,我们最常说的Web服务器指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的网络应用程序都可以是Web客户端。 Web服务器和HTTP服务器可以说是同一个东西,当然非得细分的话,HTTP服务器是建立在HTTP协议之上的提供...转载 2020-04-01 17:27:11 · 2728 阅读 · 0 评论 -
[开源]实现一个简易的Unity网络同步引擎——netgo
目录数据通信格式 定义proto文件 生成c#和golang API接口文件 服务端网络模型 客户端代码结构 相关概念 数据同步 Custom Event 接口介绍 房间相关接口 Player相关接口 CustomEvent接口 View Sync RPC Demo演示 服务端部署 客户端编译安装 功能测试 Road Ma...转载 2020-01-10 14:13:26 · 815 阅读 · 1 评论 -
游戏编程干货! 如果这篇文章说不清epoll的本质,那就过来掐死我吧!
目录一、从网卡接收数据说起二、如何知道接收了数据?三、进程阻塞为什么不占用cpu资源?四、内核接收网络数据全过程五、同时监视多个socket的简单方法六、epoll的设计思路七、epoll的原理和流程八、epoll的实现细节九、结论从事服务端开发,少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要,nginx、redis、skynet和大部分游戏服务器都使...转载 2019-11-07 14:15:28 · 194 阅读 · 0 评论 -
彻底理解epoll
网卡接收数据image.pngimage.png在 ① 阶段,网卡收到网线传来的数据; 经过 ② 阶段的硬件电路的传输; 最终 ③ 阶段将数据写入到内存中的某个地址上。 这个过程涉及到 DMA 传输、IO 通路选择等硬件有关的知识,但我们只需知道:网卡会把接收到的数据写入内存。通过硬件传输,网卡接收的数据存放到内存中,操作系统就可以去读取它们。如何知道接收了数据?要...转载 2019-11-07 13:59:34 · 1524 阅读 · 0 评论 -
游戏中的网络同步机制——Lockstep
0x00 前言每个人或多或少都接触过网游,那个虚拟的世界给予了我们无穷的乐趣,而这个虚拟世界是如何完美的将身处天南地北的玩家连接在一起的呢?我们每个人的电脑配置都不一样,网络延迟也不同,但是在玩FPS(第一人称射击)游戏时,战斗感受与真实世界并无二致,网游是如何做到这一点的呢?本文将介绍和分析早期广泛在RTS(即时策略)游戏中应用的同步机制——LockstepRTS游戏有很多,比如我们...转载 2019-10-29 19:15:07 · 538 阅读 · 0 评论 -
帧同步和状态同步
帧同步和状态同步参考:腾讯游戏学院:Unity3D RTS游戏中帧同步实现unity帧同步游戏极简框架及实例(附客户端服务器源码)腾讯游戏学院:程序丨网络同步和卡顿有多要命?《球球大作战》客户端优化分享帧同步网页小游戏,一个乐观帧同步的最简单示例多人实时对战网络同步方式研究《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了腾讯游戏...转载 2019-10-24 21:19:49 · 876 阅读 · 0 评论