V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  neoblackcap  ›  全部回复第 30 页 / 共 100 页
回复总数  1984
1 ... 26  27  28  29  30  31  32  33  34  35 ... 100  
2019-07-26 11:28:49 +08:00
回复了 lastright 创建的主题 程序员 C++真的有那么不堪吗?
C++是不管怎么骂,在抽象与效率方面它都是顶尖的。关键是这个语言需要你了解很多知识才能避开那些坑。
为什么电脑存的是 01 的信息,你却能看到中文?这中间是不是有一个映射的过程?你理解的是中文,跟不理解电脑存的 01 信息,有没有关系?
你可以这样做,不过我觉得这个队列也不是很必要。
因为可以以用户积分排序,然后按照每居人数进行匹配。人数一旦满足,就由世界服务器将用户移交到游戏房间服务器,这时候用户也就不可能再排队了。
我记得拳头好像是这样设计英雄联盟的,你可以搜一下,我记得他们分享过他们的服务器架构。
你可以粗略地用两个 List 来表示这个过程,不过一般都是两个独立的模块,互不影响,中间是通过通讯来进行沟通的。房间可以固定也可以不固定,不过我觉得为了游戏体验,可以通过检测服务器配置进行预分配。
因为我也不是搞游戏服务器开发的,所以我也只能通过之前看到的文章告诉业界是怎么做的。我建议你最好先去读读别人是怎么设计的,GDC 上面有游戏开发的分享,各个游戏公司的技术博客好像一般也有提及。可能老了一些,不过你可以尝试去找找 EVE 他们的分享,还有魔兽世界,还有国内的云风。他们的经验都是很好的。不懂就先读,否则你造的东西真的会玩具。
@devh0407 你为什要存房间 ID ?房间应该是临时的,用完就删除或者回收了,房间我想不到为什么需要跟游戏之后的数据关联,哪怕是游戏回放功能都不需要房间 ID,你需要记录什么数据,就放在一个赛后记录表就可以了。
没看懂你这个历史战绩跟房间有什么关系
房间当然是临时的,这个根据服务器状况来分配创建,不是很好理解么?房间的信息都是存在服务器内存,不是很明白有什么存储影响。
你战绩系统,游戏结束之后入库就可以了,跟房间有什么关系呢?

PS:没玩过王者荣耀,不是很了解,只是根据之前观看的网游架构回答
我记得 signal 模块也是很简单地封装一下系统信号处理的回调而已。
你这样的情况啊,用 bpftrace 试试看看?
2019-07-17 20:20:20 +08:00
回复了 SsuchingYu 创建的主题 Go 编程语言 Go 社区否决了新的 try 语句提议
@secondwtq 我只是发了一次言,其实还好。我只是说明一下这东西的优势在哪里,为什么 Monad 是更好的异常处理而且。毕竟一次回复不仅仅是一个人看到。大家也可以看到。大家各取所需,觉得 golang 好的就继续写,觉得其他更好的就去写其他就好了。我觉得没什么必要纠结什么天下第一,毕竟电锯跟锤子不一样,CNC 机床也不能替代凿子。当然爱一样东西,自己能出力去让它变得更好,这样也不错。
2019-07-17 18:27:04 +08:00
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@Buffer2Disk 本身集合一般就是用哈希表实现
2019-07-17 15:43:09 +08:00
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@Buffer2Disk
简单的理解就是只是用其中迭代其中一个集合,然后判断一下这个元素是否在,每次查询是否在集合的操作是 O(1),n 个就是 O(n)
2019-07-17 15:21:07 +08:00
回复了 SsuchingYu 创建的主题 Go 编程语言 Go 社区否决了新的 try 语句提议
@xfriday rust 里面是学习 haskell 的 monad,除非你是消费以及最终求值的阶段,否则不会有人会去用 match 来处理错误。
rust 的错误处理最大的优势就是,之前步骤的异常,并不会影响你的业务逻辑,以及强制错误处理。你完全可以使用 and_then 或者 map 方法对一个 Result 进行结果转换,完全不用什么 match。?只是一个相对简洁的语法糖,就算不用 rust 也比现有的什么异常以及返回值优秀。
当然你不了解 monad,强制每一步都 match 一下,那就认为 rust 也是返回值吧。毕竟宝马跟单车都是靠轮子走的,而且都是圆的。
2019-07-17 00:31:32 +08:00
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
@Buffer2Disk 你每次调用 range 都要申请内存,创建一个列表啊,能快才奇怪。你用 top 来计算 CPU 耗时的方法本身就不对。
而且你只是判断一个元素是否在另外一个列表里面,你转成集合,用求交集的方法啊。那个才 O(n),你现在这个粗糙的实现方式可是 O(n^2)。
你觉得是循环在耗时,那么请你在 Python 里面创建好两个列表,然后再开始你的循环计时,而且停 5s 有什么用啊?你写日志不好么?
2019-07-17 00:10:08 +08:00
回复了 Buffer2Disk 创建的主题 程序员 Python 和 Go 在循环时候的性能对比
range 返回列表,耗时在这
2019-07-16 16:09:02 +08:00
回复了 miniyao 创建的主题 Python Flask-SQLAlchemy 用 db.session.commit() 失败之后,事务会自动回滚吗?
@coolair 哦!
我是建议用 with 来改写着部分代码,不要用 try-catch 模式。还是你觉得这样改写有什么问题?
2019-07-16 15:56:42 +08:00
回复了 EthanDon 创建的主题 程序员 Mac 电脑, wireshark 很多 http 包抓不到!
wireshark 是我用过那么多个抓包软件里面,抓包抓得最好的了。你所说的 http 漏掉,你不会是指 https 吧
2019-07-16 13:04:16 +08:00
回复了 miniyao 创建的主题 Python Flask-SQLAlchemy 用 db.session.commit() 失败之后,事务会自动回滚吗?
用 with 语法不好么?
2019-07-10 17:25:30 +08:00
回复了 orqzsf1 创建的主题 Apple 🍎Apple 发布了新的 MacBook Pro
@duumvir 改个口而已,协议还是 nvme 协议
2019-07-10 01:18:41 +08:00
回复了 bbdk 创建的主题 程序员 为嘛编程语言都是免费的呢?
@bbdk redhat 在之前当然不是靠 IBM 吃饭啦,Redhat 自家的技术支持,咨询,认证卖得飞起。它是开源软件界第一家营收过 10 亿的。
还有就是 Redhat 是涉及了 Linux 内核,虚拟化,容器,Java。IBM 是自身云计算这方面做得不行,想找一个来快速补强自己。
Redhat 的技术支持你一般小企业还用不起呢,还不如你直接去买套标准版的 Windows Server,Windows 相对还便宜
百万并发,我用两百万台机器解决一百万的并发算不算解决?还是说一台 1 核 1G 的虚拟机就可以?
只是想吹嘘那不用学习什么书,观看各种大会那些上台嘉宾的 PPT 就可以了。里面已经有各种考点了。
要实打实地用合理数量的机器解决 1M 问题,老实地从底层学起,搞懂计算机体系结构,搞懂 JVM,找到系统瓶颈,榨干机器性能
1 ... 26  27  28  29  30  31  32  33  34  35 ... 100  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1990 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 51ms · UTC 12:09 · PVG 20:09 · LAX 04:09 · JFK 07:09
Developed with CodeLauncher
♥ Do have faith in what you're doing.