- 博客(568)
- 资源 (92)
- 收藏
- 关注
原创 阿里云的工程师又闯祸了,github上紧急修复
最近不少用户使用阿里云提供的测试用例出现了被删除了用户目录下的所有文件,项目地址是: https://github.com/aliyun/aliyun-clialiyun-cli/cli/completion_installer_test.goLines 87 to 99 in550ccb6path := filepath.Join(u.HomeDir, ".bash...
2022-12-06 16:57:53
2885
原创 如何阅读别人的代码
会读好源码,才能写出好代码而且除了经常写代码,还要保持习惯看看别人是怎么写的,这里我只引出一个话题就是如何阅读别人的代码。 一个工整的代码就好比欣赏一个漂亮的美女一样让人赏心悦目,百看不厌,一个乱糟糟的代码就不忍直视,而且还要吐槽他,对于阅码无数的老司机而言,保持良好的编码和阅读习惯很重要,读别人的代码并不大费力,对于新手而言,我觉得这篇文章对你很有帮助。保持阅读他人代码的习...
2022-12-02 11:44:41
245
原创 如何在C++ 网络库中支持websocket
我们在一些中重度游戏中经常使用TCP,可靠UDP(参考之前的剖析KCP以及KCP在游戏中是如何使用的)来进行网络传输,不过随着一些小游戏和超轻休闲类游戏的逐步崛起,越来越多的开发者逐渐使用websocket来进行网络传输数据,像node.js/ ts , go, java等语言都有造好的轮子,直接引用现成的库并能很方便的调用,但是如果你使用的是C++,你会发现,websocket的库...
2022-11-30 11:23:27
458
原创 暴雪游戏走后,谁来接盘?对网易有何影响?
11月16日,暴雪娱乐公司宣布,由于与网易的现行许可协议将于2023年1月23日到期,将暂停在中国大陆的大部分暴雪游戏服务。 这些暴雪游戏包括《魔兽世界》《炉石传说》《守望先锋》《星际争霸》《魔兽争霸 III:重制版》《暗黑破坏神 III》《风暴英雄》。此外,《暗黑破坏神:不朽》的共同开发和发行则涉及两家公司的单独协议。 暴雪娱乐总裁Mike Ybarra...
2022-11-18 11:45:00
101
原创 剖析KCP以及KCP在游戏中是如何使用的
亲爱的各位读者你们好,由于前段时间忙于部分项目的重构和优化,未能及时更新文章,不少读者催更,哈哈,我还是很开心能抽出时间给大家再来分享下kcp的相关技术内幕,以及之前完善自己的网络库增加了KCP的客户端服务器收发支持(结尾会分享封装的客户端服务器C++源码)。KCP概述对于游戏开发,尤其是MOBA游戏,或者全球唯一服架构类型的游戏,对于网络的要求比一般游戏要高。...
2022-11-07 18:06:10
758
原创 使用KCP 加速游戏消息,让全球玩家流畅联网
kcp协议是传输层的一个具有可靠性的传输层ARQ协议。它的设计是为了解决在网络拥堵情况下tcp协议的网络速度慢的问题。kcp力求在保证可靠性的情况下提高传输速度。kcp协议的关注点主要在控制数据的可靠性和提高传输速度上面,因此kcp没有规定下层传输协议,一般用udp作为下层传输协议,kcp层协议的数据包在udp数据报文的基础上增加控制头。当用户数据很大,大于一个udp包能承担的范围时(大于mss),kcp会将用户数据分片存储在多个kcp包中。因此每个kcp包称为一个分片。
2022-10-10 12:06:30
203
原创 linux和windows环境配置安装zookpeer的dashboard可视化
有时候我们需要知道一个*.so文件或者可执行文件是debug版本的还是release版本的,这时我们有哪些方法呢? 1.readelf -S filename |grep debug导出汇编objdump -f test显示test的文件头信息objdump -d test反汇编test中的需要执行指令的那些sectionobjdump -D test与-d类似,但反汇编test中的所有sectionobjdump -h test显示test的Section H..
2022-10-10 10:23:02
559
原创 浏览器http提交protobuf二进制数据正常,微信小程序失败解决方案
最近开发微信小游戏,客户端和服务器端使用http短连接方式post数据,数据的格式使用protobuf,这样通过网络传输的数据是二进制,对于抓包的外挂使用者来说也不容易篡改数据内容。等到最后收尾的时候,开始导入微信开发者工具里,进行测试,结果出问题了,二进制数据 本应该是上面截图红色圈出来的formdata内容,但是微信开发者工具里查看到的是uint8array结构,验证发现实际上发送的字节长度是202,但是到了网络传输的时候发送了203字节,而且服务器端也收到了203字节。
2022-09-01 19:23:04
796
原创 游戏服务器缓存系统如何设计
前言不管是在业界开源领域,还是内部分享中,很少会有专门针对游戏业务特征进行专门设计的组件、类库或者框架。我们从游戏的客户端方面来看,一款专业的游戏客户端引擎,已经是游戏开发的标配,flash,Cocos,Unity,Unreal等,但是服务器端,我们几乎找不到同样重量级的产品(当然有针对海外开发者快捷开发的服务器平台,比如GAE,GameSparks,PlayFab等能满.........
2022-06-29 18:00:47
687
8
原创 深入剖析阻塞式socket的timeout
网络编程中超时时间是一个重要但又容易被忽略的问题,对其的设置需要仔细斟酌。 本文讨论的是socket设置为阻塞模式,如果socket处于阻塞模式运行时,就需要考虑处理socket操作超时的问题。 所谓阻塞模式,是指其完成指定的操作之前阻塞当前的进程或线程,直到操作有结果返回. 在我们直接调用socket操作函数时,如果不进行特意声明的话,它们都是工作在阻塞模式的, 如 connect, send, recv等.简单分类的话,可以将超时处理分成
2022-06-28 16:43:13
1494
原创 你担心大家会滥用的全局变量,大家(包括你自己)一定会滥用
前言不要使用全局变量的道理大家都懂,基本上在大家学习编程过程中很早就会被教育到,但是有时候我们也会禁不住诱惑用到一些似非实是的全局变量,只不过这些全局变量会穿上马甲,让你不会一下看穿它的巨大危害,滥用全局变量会引申带来其它更为严重的结构性系统问题。你担心大家会滥用的代码,大家(包括你自己)一定会滥用。 ...
2022-03-24 19:23:00
331
1
原创 【无标题】
每当看到代码100行的时候就出现一个全局变量,我总要戚眉变脸而后拍桌怒喝。我不否认全局变量的重要性,但我认为要十分谨慎地使用它,滥用全局变量会引申带来其它更为严重的结构性系统问题。1. 滥用全局变量会造成不必要的常量频繁使用,特别当这个常量没有用宏定义“正名”时,代码阅读起来将万分吃力。2. 会导致软件分层的不合理,全局变量相当于一条快捷通道,这在软件系统的构建初期的确效率很高,功能调试进度一日千里,但到了后期往往bug一堆,处处“补丁”,雷区遍布。说是度日如年举步维艰也不为过。3. 由于软件的分层
2022-03-24 19:04:48
1128
原创 你的代码是否按照高内聚、低耦合的原则来设计的?
我们一直强调软件开发中要按照高内聚、低耦合的设计原则来做代码结构设计。c语言和c++不同,c语言面向过程、c++面向对象。 真正的项目中,要对业务升级,原来的业...
2022-02-22 21:22:00
758
原创 Nginx 配置TCP和UDP负载均衡
前言 Nginx除了以前常用的HTTP负载均衡外,Nginx增加基于TCP协议实现的负载均衡方法。 HTTP负载均衡,也就是我们通常所有“七层负载均衡”,工作在第七...
2022-02-15 16:16:08
638
原创 使用nginx分片功能提升缓存效率,支持可拖拽式播放视频
Nginx的slice模块可以将一个请求分解成多个子请求,每个子请求返回响应内容的一个片段,让大文件的缓存更有效率。HTTP Range请求HTTP客户端下载文件时,如果发生了网络中断,必...
2021-12-28 19:31:14
763
原创 如何使用弱网环境来验证游戏中的一些延迟问题
关于弱网在当今移动互联网盛行的时代,网络的形态除了有线连接,还2G/3G/Edge/4G/Wifi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。...
2021-10-26 18:02:00
1841
原创 大型游戏后台实践浅谈
国家新闻出版署8月30日下发切实防止未成年人沉迷网络游戏的通知,要求从今天(9月1日)起,所有网络游戏企业仅可在周五、周六、周日和法定节假日每日20时至21时向未成年人提供...
2021-09-03 00:00:00
380
转载 一个通用游戏后台的设计模式实践总结
搞业务开发的时候,发现有一些代码的开发会让人感觉非常简便舒服,有一些代码的开发却有时候会让人感觉心智负担比较大。逐步总结的过程中,发现让开发人员写起来感觉舒服的代码,大概率是因为当前模块与...
2021-09-02 00:00:00
332
转载 游戏中的常见概率设计分析
前言游戏中的概率真的是让人又爱又恨,很多玩家因为自己的屌丝气质(白嫖)而弃坑玩不下去的,比如人尽皆知的某阴阳师,除了氪金,还肝,而且如果你的脸真的非常的黑,那也是打不过那些...
2021-09-01 03:48:00
3521
原创 游戏服务器架构:网络服务器端程序线程划分
服务器端高性能网络编程的核心在于架构,而架构的核心在于进程-线程模型的选择。 作为服务器需要做网络数据的收发,需要做数据库拉取和保存,需要做日志存储,需要做常规的游戏逻...
2021-08-28 00:00:00
278
转载 Unity客户端开发优化要点
脚本方面1、不需要高频率调用的函数,使用InvokeRepeating(或Time.frameCount%n)代替Update2、SetParent、Instantiate、Find、IO...
2021-08-27 09:40:14
281
原创 游戏热更新:游戏客户端热更新那点事
前言热更新的内容可以是美术资源,可以是代码,但相对来说,美术资源的更新不会受到约束,代码实际上是重灾区。本文介绍的主要是客户端代码热更新。热更新对于开发者来说是一件麻烦事,...
2021-08-24 12:39:00
704
原创 ffmpeg优化mp4以及hls参数设置
ffmpeg是开源的音频视频编解码工具然而默认的参数对MP4不友好,需要自己设置这里记录一下简单的优化参数优化MP4使moov atom位于文件开头moov atom是mp4的索引信息.浏览器获得moov atom后,可以随机搜索文件位置,让拖动自由ffmpeg默认是将moov atom放在文件末尾,我们需要前置moov atom-movflags faststart关键参数ffmpeg -i input.mp4 -movflags faststart -acodec copy -v
2021-08-20 09:21:18
1816
原创 如何使用redis来实现常见的游戏排行榜
前言前面几篇文章给大家聊了下目前的常用的排行榜做法。关于游戏排行榜设计开发的一些总结游戏排行榜-跳表实现原理分析那么这篇文章将给大家带来如何使用redis来实现常见的游戏排行榜功能。为什么...
2021-08-20 09:07:04
300
原创 游戏排行榜-跳表实现原理分析
前言做游戏的一般都有游戏排行榜的需求,要查一下某个uid的积分排名第几,这里我给大家推荐之前我们使用的一种排序算法,跳表skiplist。跳表是一个随机化的数据结构。它允许快速查询一个有序...
2021-08-11 18:00:00
968
原创 关于游戏排行榜设计开发的一些总结
前言不管是手游还是端游,貌似都离不开排行榜,没有排行榜的游戏是没有灵魂的游戏,因为排行榜可以让用户分泌多巴胺,这样日活才会上来,有了用户就有钱赚。产品想方设法的让用户留存,设计各种排行榜:...
2021-08-09 18:28:00
792
3
原创 设计模式 ---适配器模式
在一些业务场景里,你是否遇到过如下类似的需求:1、系统需要使用现有的类,而此类的接口不符合系统的需要。2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能...
2021-07-12 18:30:00
186
原创 手把手教你使用sql注入来绕过游戏后台检测
SQL注入毫无疑问是最危险的Web漏洞之一,因为我们将所有信息都存储在数据库中。其解决方案之一,有许多公司实施Web应用程序防火墙和入侵检测/预防系统来试图保护自己。但不幸的是,这些对策往...
2021-07-09 06:56:00
296
原创 危险!!!也许你的web网站或服务正在悄无声息地被SQL注入
2010年秋季,联合国官方网站遭受SQL注入攻击。2014年一个叫“TeamDigi7al”的黑客组织攻击了美国海军的一个名为“Smart Web Move”的web应用。此次事件直接造...
2021-07-07 18:30:00
276
原创 为什么我们仍然坚持用C++做游戏服务器
本篇文章纯属文字,不需要配图。首先以我个人观点来说,C ++对于我的吸引力不仅仅是它的技术优点。c++是个庞大而奇怪的语言,很多新领域会选择这个语言是因为有...
2021-07-05 18:30:00
802
1
原创 闲话目前游戏服务器的开发
我是从12年开始进入页游行业,接触到的第一个游戏项目就是淘米网的《摩尔庄园》,公司那个时候也刚在美纽交所上市,被Benson,魏震和Rock腾讯三巨头的感染下,做着喜欢的游戏...
2021-07-01 19:00:00
3406
原创 内存优化-使用tcmalloc分析解决内存泄漏和内存暴涨问题
其实我一直很想写关于tcmalloc的内存泄漏检测的文章,只是一直记不起来该如何下笔,有时项目太忙,在整理这方便的思考过少,另外遇到的问题也不是很多,直到最近用tcmalloc帮A项目排查...
2021-06-28 18:40:00
687
原创 内存优化-如何使用tcmalloc来提升内存性能?提升的结果太不可思议
无论是在游戏开发,或者其他长期运行的服务开发中,对内存的使用一直是架构师或者主程序在最初就要关注的point,如果内存使用不当,频繁申请释放内存造成系统负担过大,性能降低,到最后产生大量内...
2021-06-25 18:30:00
283
原创 一文搞懂 什么是CPU上下文?为什么要切换?如何减少切换?
自从上篇文章聊一下CPU占用高的解决方案更新后,最近收到了一些热心观众的后台留言,问到的一些问题比较集中的是关于CPU切换.实际用C/C++,go开发,你会特别注意内存和CPU的使用情况,...
2021-06-21 18:30:00
211
原创 聊一下CPU占用高的解决方案
前言: 在软件开发和性能测试中,CPU占用率是服务器开发一个很重要的指标,到底有哪些因素会导致CPU占 用率上升呢?又有哪些手段可以降低CPU的占用率呢? 如果你看了这...
2021-06-10 13:27:00
464
原创 游戏服务器架构-设计模式之观察者模式和发布订阅模式真的一样吗?
前面我给大家分享了观察者模式和发布订阅模式,有人私信给我说这俩不是一样嘛,大体没什么区别,我猜测大多数认为这两者是一样的可以继续阅读这两篇文章,如果还不能解答你的问题,我相信这篇文章对比两...
2021-06-07 18:30:00
134
原创 游戏服务器架构-设计模式之发布订阅模式
发布订阅模式场景熟悉消息中间件的同学应该对发布/订阅模式(Publish Subscribe Pattern)并不陌生。即使你不了解消息中间件,那么在平时生活中发布/订阅模式也是非常常见的...
2021-06-04 20:00:00
216
1
原创 kubelet内存异常分析
背景:kubelet被重启后, 内存再次升高, 在游戏启动后,没有进入大量玩家的情况下,2天时间占用接近10G,并且持续在增长, CPU偶尔负载高。AWS给出的解释是containerd ...
2021-05-17 06:46:46
411
原创 mysql的cpu高定位
导致数据库CPU很高的原因有很多种,一般和慢SQL也有关(因为每条SQL要么占CPU高,要么占IO高,大体是这样)。(1)、如果服务器有多个mysql实例,需要通过top命令看看是哪个my...
2021-05-13 18:30:00
210
原创 一文彻底搞懂静态库和动态库,显示链接和隐式链接
定义:运行时库 静态库 动态库运行时库:Unix中一个典型的运行时库例子就是libc,它包含标准的C函数,如,print(),exit()等等,用户能创建他们自己的运行库(在Windows...
2021-04-21 08:20:00
1169
HTML5 驴子跳一跳游戏源码
2018-01-17
编译原理实验,一个此法分析程序
2011-04-21
C++底层核心本质总结笔记
2011-04-15
银行家算法实验报告-课程设计 毕业论文 文档.doc
2010-12-24
D-操作系统课程设计报告——银行家算法
2010-12-20
zookeeper服务器依赖配置,包含了zookeeper的bin包,和相关依赖maven3.8.6,ant1.10.12
2022-10-10
win-kcachegrind.zip
2021-07-01
2020年毕业设计-jsp校园宿舍管理系统
2021-01-09
88个创业全套必备资料合集_关于创业
2021-01-09
基于node.js的高可扩展游戏服务器框架 设计与实现
2020-11-26
UDP打洞客户端和服务器打包.
2020-11-20
halcon c++ 接口参考手册
2020-11-20
最新2020年10月的geoip库下载
2020-11-20
visionPro中文版资料(pdf+ppt样例)
2018-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人