H******7 发帖数: 1728 | 1 看到有人讨论python写多线程。笑死了。
还不如用java写呢。
多线程还得看c++的。boost, std多线程甩其他语言几个光年 |
z****e 发帖数: 54598 | 2 所有脚本的多线程都是最弱的一块
可能也就是perl会好一点
不过现在多线程部分
主要是swift和scala在做咯
java提供了几个常用的pkg
但是无论server side还是client side
自己去动手搞多线程的次数也很少
server side有现成的框架,akka,vert.x,都可以直接用
client side的app,那用伪多线程就好了,反正只要伺候好一个ui线程
android我只弄双线程,一个输入线程,另外一个是主循环
ios直接用cocoa了,所以还不知道后面是几个线程
javafx用单线程足够,90fps完全可以搞定 |
z****e 发帖数: 54598 | 3 现在就是网游那种上万人国战这种我觉得还需要自己写多线程
还没有什么思路出来,其他的,包括三国杀那种卡牌对战
我觉得都不需要自己去实现了,直接用框架就好了 |
H******7 发帖数: 1728 | 4 j2ee就足够了对把。
【在 z****e 的大作中提到】 : 现在就是网游那种上万人国战这种我觉得还需要自己写多线程 : 还没有什么思路出来,其他的,包括三国杀那种卡牌对战 : 我觉得都不需要自己去实现了,直接用框架就好了
|
z****e 发帖数: 54598 | 5 稍微复杂了一点
虽然undertow说能够支持上百万的并发
我还是倾向于用vert.x来搞
自己写一个session的management的zip
我觉得vert.x的构架比j2ee那一套要灵活些
更底层一点,而且要用到共享session
这个跟j2ee模式对冲啊,j2ee每一个browser都独占一个session
所以可能不太合适
【在 H******7 的大作中提到】 : j2ee就足够了对把。
|
z****e 发帖数: 54598 | 6 什么时候html5能够把三国杀那种卡牌游戏客户端给轻松实现
差不多html5做游戏就有点曙光了
用dart不知道行不行,没试过
三国杀现在是flash做的,很烂 |
H******7 发帖数: 1728 | 7 足够了
三国杀在ipad上超火 体验也不错
【在 z****e 的大作中提到】 : 什么时候html5能够把三国杀那种卡牌游戏客户端给轻松实现 : 差不多html5做游戏就有点曙光了 : 用dart不知道行不行,没试过 : 三国杀现在是flash做的,很烂
|
z****e 发帖数: 54598 | 8 android上没有
看来以后还是要买点i什么叉叉
【在 H******7 的大作中提到】 : 足够了 : 三国杀在ipad上超火 体验也不错
|
z****e 发帖数: 54598 | 9 coltzhao要是能说说他们那些游戏前端都用啥server
具体怎么实现就好了
可惜那家伙老是盯着scala |
z****e 发帖数: 54598 | 10 三国杀要是ipad有,肯定不是flash做的
多半就是oc写的 |
|
|
d*******r 发帖数: 3299 | 11 topic 是:如果只用 Python 写并发程序,怎样选择?
而不是: 如果写并发程序,选用什么语言...
【在 H******7 的大作中提到】 : 看到有人讨论python写多线程。笑死了。 : 还不如用java写呢。 : 多线程还得看c++的。boost, std多线程甩其他语言几个光年
|
z****e 发帖数: 54598 | 12 其实就是么有什么好的库的意思
说说你为啥要这么做?
你打算用python来写网游server?
【在 d*******r 的大作中提到】 : topic 是:如果只用 Python 写并发程序,怎样选择? : 而不是: 如果写并发程序,选用什么语言...
|
d*******r 发帖数: 3299 | 13 问这个,就为了丰富知识面,真的... 我是不用 Python 写并发程序的
比如你写个科学计算的东西,基本都是写 python 程序,
然后你要写一点点并发,那你还上 C++/Java/Node? 也不是不行,就是麻烦点
【在 z****e 的大作中提到】 : 其实就是么有什么好的库的意思 : 说说你为啥要这么做? : 你打算用python来写网游server?
|
z****e 发帖数: 54598 | 14 科学计算跟并发两回事呀
科学计算因为以前很多都是c/fortran写的
一时半会,只能说先挂上再说了
python是胶水,所以用得多,并不是说python有多好
真用python去写,那就痛苦了
现在主要是都往jvm上搬,所以用scala比较多
而且你说的并发也看领域呀
不是所有的并发都是一个模式的呀
具体一点,比如app上的并发,比如网游的服务器
比如web server
【在 d*******r 的大作中提到】 : 问这个,就为了丰富知识面,真的... 我是不用 Python 写并发程序的 : 比如你写个科学计算的东西,基本都是写 python 程序, : 然后你要写一点点并发,那你还上 C++/Java/Node? 也不是不行,就是麻烦点
|
d*******r 发帖数: 3299 | 15 我意思就是几个小破 Python 程序 for prototype
【在 z****e 的大作中提到】 : 科学计算跟并发两回事呀 : 科学计算因为以前很多都是c/fortran写的 : 一时半会,只能说先挂上再说了 : python是胶水,所以用得多,并不是说python有多好 : 真用python去写,那就痛苦了 : 现在主要是都往jvm上搬,所以用scala比较多 : 而且你说的并发也看领域呀 : 不是所有的并发都是一个模式的呀 : 具体一点,比如app上的并发,比如网游的服务器 : 比如web server
|
z****e 发帖数: 54598 | 16 那也有个目的不是?
哪怕是prototype
做什么的程序?
【在 d*******r 的大作中提到】 : 我意思就是几个小破 Python 程序 for prototype
|
D***n 发帖数: 6804 | 17 Python用来写网游server很多年了,
记得EVE Online,服务器和客户端用的都是Python。
服务器集群正常同时在线5万人(单一服务器群,和那些开N个区然后号称几百万人在线
的不同)。单一节点能容纳好几千人的持续连接。
http://highscalability.com/eve-online-architecture
【在 z****e 的大作中提到】 : 其实就是么有什么好的库的意思 : 说说你为啥要这么做? : 你打算用python来写网游server?
|
w***g 发帖数: 5958 | 18 C++没啥好的轻量级线程库。C++11连pthreads,建上几万个线程
就出错了。比go, scala啥的都差大老远了。
python做科学计算也就是做个流程,真正的活都是fortran,C/C++代码,
都已经并行化了的。
【在 H******7 的大作中提到】 : 看到有人讨论python写多线程。笑死了。 : 还不如用java写呢。 : 多线程还得看c++的。boost, std多线程甩其他语言几个光年
|
d*******r 发帖数: 3299 | 19 那 python 就是一段没有 concurrency 的流程跑到底了
【在 w***g 的大作中提到】 : C++没啥好的轻量级线程库。C++11连pthreads,建上几万个线程 : 就出错了。比go, scala啥的都差大老远了。 : python做科学计算也就是做个流程,真正的活都是fortran,C/C++代码, : 都已经并行化了的。
|
w***g 发帖数: 5958 | 20 python主要是基于进程的并行化,并行的目的主要是驱动I/O或者
驱动底层的C/C++代码。python代码本身其实已经慢得要死了,
单机并行在我看来于事无补。不过对于只会写python的人来说,
并行了加快几倍速度似乎也聊胜于无。
【在 d*******r 的大作中提到】 : 那 python 就是一段没有 concurrency 的流程跑到底了
|
|
|
d*******r 发帖数: 3299 | 21 多谢大牛指点
那就是说,主要是开多个 python process (避免 GIL multiple thread), 在单机多机
上跑点简单的并行了.
那这种简单的 python process 通信,大牛推荐用什么,Redis 还是裸写 socket?
【在 w***g 的大作中提到】 : python主要是基于进程的并行化,并行的目的主要是驱动I/O或者 : 驱动底层的C/C++代码。python代码本身其实已经慢得要死了, : 单机并行在我看来于事无补。不过对于只会写python的人来说, : 并行了加快几倍速度似乎也聊胜于无。
|
s****y 发帖数: 15 | 22 知道hft的platform是咋写的吗,呵呵,low latencydesign不简单 |
z****e 发帖数: 54598 | 23 你能不能先看明白别人在文什么? 网游也有很多种,你又没写过软件,你懂啥? 除了
会google外
:Python用来写网游server很多年了,
: |
p*****2 发帖数: 21240 | 24 这样还不如上node
【在 d*******r 的大作中提到】 : 多谢大牛指点 : 那就是说,主要是开多个 python process (避免 GIL multiple thread), 在单机多机 : 上跑点简单的并行了. : 那这种简单的 python process 通信,大牛推荐用什么,Redis 还是裸写 socket?
|
p*****2 发帖数: 21240 | 25 python有异步框架 应该也不会太差
【在 d*******r 的大作中提到】 : topic 是:如果只用 Python 写并发程序,怎样选择? : 而不是: 如果写并发程序,选用什么语言...
|
z****e 发帖数: 54598 | 26 tornado或者是twist效率上都不行
甚至比不了ror,ruby已经不快了
更不要说,ror还有专门的team在做jror
可以直接搬到jvm上以提升效率
只能说比自己写的python要快一点
该慢还是慢
【在 p*****2 的大作中提到】 : python有异步框架 应该也不会太差
|
p*****2 发帖数: 21240 | 27 看看公孙大神怎么说
如果这样的话 那python真没啥玩头了
【在 z****e 的大作中提到】 : tornado或者是twist效率上都不行 : 甚至比不了ror,ruby已经不快了 : 更不要说,ror还有专门的team在做jror : 可以直接搬到jvm上以提升效率 : 只能说比自己写的python要快一点 : 该慢还是慢
|
m********2 发帖数: 89 | 28 multiprocess + asynchio + blocking multithread. Python coroutine的features跟
thread差不多是一一对应的。
【在 d*******r 的大作中提到】 : topic 是:如果只用 Python 写并发程序,怎样选择? : 而不是: 如果写并发程序,选用什么语言...
|
m********2 发帖数: 89 | 29 如果真效率不行那也是因为缺少异步库的支持吧?
【在 z****e 的大作中提到】 : tornado或者是twist效率上都不行 : 甚至比不了ror,ruby已经不快了 : 更不要说,ror还有专门的team在做jror : 可以直接搬到jvm上以提升效率 : 只能说比自己写的python要快一点 : 该慢还是慢
|
D***n 发帖数: 6804 | 30 你这个笨蛋怎么一点基本领悟力都没有?
EVE Online用的是用所谓Stackless Python实现microthread。换句话说,Python解释
器本身是驻扎在每一个内核的单一进程,但是内部提供了相应的线程切换机制。
这是另外一种async实现方法。Nodejs用的是thread pool/queue。
【在 z****e 的大作中提到】 : 你能不能先看明白别人在文什么? 网游也有很多种,你又没写过软件,你懂啥? 除了 : 会google外 : : :Python用来写网游server很多年了, : :
|
|
|
n****l 发帖数: 3375 | 31 ROR如何异步?
另外python有pypy,pypy下也有gevent
【在 z****e 的大作中提到】 : tornado或者是twist效率上都不行 : 甚至比不了ror,ruby已经不快了 : 更不要说,ror还有专门的team在做jror : 可以直接搬到jvm上以提升效率 : 只能说比自己写的python要快一点 : 该慢还是慢
|
g*****g 发帖数: 34805 | 32 我老说句不好听的吧。你说的这个EVE online, up to 40k concurrent users. 以10年
前的眼光看都很弱。single cluster支撑是因为用户少。大的MMO都多数据中心,为的
是减少latency。要拿也拿点世界级的案例学习,40K现在一台好点机器就撑住了。
【在 D***n 的大作中提到】 : 你这个笨蛋怎么一点基本领悟力都没有? : EVE Online用的是用所谓Stackless Python实现microthread。换句话说,Python解释 : 器本身是驻扎在每一个内核的单一进程,但是内部提供了相应的线程切换机制。 : 这是另外一种async实现方法。Nodejs用的是thread pool/queue。
|
D***n 发帖数: 6804 | 33 好,请来介绍一下哪个世界级别的在线游戏服务器单机能host 4万个并发链接并且
latency的质量有基本保证?
【在 g*****g 的大作中提到】 : 我老说句不好听的吧。你说的这个EVE online, up to 40k concurrent users. 以10年 : 前的眼光看都很弱。single cluster支撑是因为用户少。大的MMO都多数据中心,为的 : 是减少latency。要拿也拿点世界级的案例学习,40K现在一台好点机器就撑住了。
|
s***o 发帖数: 175 | |
D***n 发帖数: 6804 | 35 保佑他千万别google出坦克世界 ...
【在 s***o 的大作中提到】 : 等一下,他正在Google ...
|
g*****g 发帖数: 34805 | 36 看啥游戏了,棋牌类游戏多了去了,我老10年前做的Poker服务器单机并发1万都没问题
。总共30万用户,4万并发连接,这个数字实在寒碜了一点。
【在 D***n 的大作中提到】 : 好,请来介绍一下哪个世界级别的在线游戏服务器单机能host 4万个并发链接并且 : latency的质量有基本保证?
|
g*****g 发帖数: 34805 | 37 我老就是给你讲个道理。多数据中心的geo sharding,active active failover,才是
现在的state-of-art。单cluster撑4万用户实在没啥好吹嘘的。你的数据中心断电了你
就玩完了。 |
c******o 发帖数: 1277 | 38 游戏前端?Unity, 加上少量native的java/OC
后端主要是Node.JS,还有很多service,那就五花八门了,java/php/scala/ruby
我是用scala做platform service/BI 后端的。Play/Spark是我做的。
【在 z****e 的大作中提到】 : coltzhao要是能说说他们那些游戏前端都用啥server : 具体怎么实现就好了 : 可惜那家伙老是盯着scala
|
D***n 发帖数: 6804 | 39 我就知道你要狡辩。
旗牌类谈个屁,旗牌类无非开了N多局,每一局里面的人数都是局部的,人出牌下棋的
速度都按秒或者分钟计算。里面一个玩家出一张牌只需要考虑那一桌子的玩家。
EVE Online 单一节点几千个玩家并发,每一秒还有几十上百个连接进进出出,每一步
对每一个玩家的计算结果要广播给全体几百上千个玩家,几千个玩家的结果要同步更新
,而且这是按几十毫秒timeframe计算的否则下一轮结果又来了,这是一回事么?
在线FPS现在能做128个并行连接都不是很容易。你拿旗牌的思路来做这个简直是笑死人。
【在 g*****g 的大作中提到】 : 看啥游戏了,棋牌类游戏多了去了,我老10年前做的Poker服务器单机并发1万都没问题 : 。总共30万用户,4万并发连接,这个数字实在寒碜了一点。
|
D***n 发帖数: 6804 | 40 Poker服务器并发1万没问题——这完全不make sense。
按EVE Online哪种情况,相当于每个客户端每20-200毫秒给你发一个update,每2秒就
打乱player重开一局,而且每秒还有几十个客户端不停连接断线。你看你那破程序能不
能抗住1万个。我看1000个都悬。
【在 g*****g 的大作中提到】 : 看啥游戏了,棋牌类游戏多了去了,我老10年前做的Poker服务器单机并发1万都没问题 : 。总共30万用户,4万并发连接,这个数字实在寒碜了一点。
|
|
|
g*****g 发帖数: 34805 | 41 你省省吧,你根本没明白我说的啥意思。单一cluster从架构的角度是最简单的,至于
你一台服务器能撑100用户还是10万用户对failover不是大的区别,多开点机器就是了
。世界级的游戏哪个只有40K在线玩家的?你丫就是被打脸了来吹毛求疵。光我说的一
点,你数据中心断电就挂了你不服?
人。
【在 D***n 的大作中提到】 : 我就知道你要狡辩。 : 旗牌类谈个屁,旗牌类无非开了N多局,每一局里面的人数都是局部的,人出牌下棋的 : 速度都按秒或者分钟计算。里面一个玩家出一张牌只需要考虑那一桌子的玩家。 : EVE Online 单一节点几千个玩家并发,每一秒还有几十上百个连接进进出出,每一步 : 对每一个玩家的计算结果要广播给全体几百上千个玩家,几千个玩家的结果要同步更新 : ,而且这是按几十毫秒timeframe计算的否则下一轮结果又来了,这是一回事么? : 在线FPS现在能做128个并行连接都不是很容易。你拿旗牌的思路来做这个简直是笑死人。
|
D***n 发帖数: 6804 | 42 Eve Online是世界级的游戏,运营了10来年了。它的招牌就是所有人在一个服务器上玩
。实际上是若干个节点组成的Cluster。它很多年以前就能host 40K玩家同时在线。加
更多服务器当然能host更多玩家。
大家最喜欢玩的就是单一战场的大型战争,它里面的一场大型战争通常是在一台真正的
单一物理服务器节点上运行的,用不了多机。这种情况下,以前2000个就卡的不行。
你对网络游戏了解很少。
【在 g*****g 的大作中提到】 : 你省省吧,你根本没明白我说的啥意思。单一cluster从架构的角度是最简单的,至于 : 你一台服务器能撑100用户还是10万用户对failover不是大的区别,多开点机器就是了 : 。世界级的游戏哪个只有40K在线玩家的?你丫就是被打脸了来吹毛求疵。光我说的一 : 点,你数据中心断电就挂了你不服? : : 人。
|
g*****g 发帖数: 34805 | 43 你对failover一无所知,非要鼓吹单一cluster比多数据中心更复杂,实在是没法教育
。你对网络游戏比我了解很正常,但对于架构了解就差远了。
【在 D***n 的大作中提到】 : Eve Online是世界级的游戏,运营了10来年了。它的招牌就是所有人在一个服务器上玩 : 。实际上是若干个节点组成的Cluster。它很多年以前就能host 40K玩家同时在线。加 : 更多服务器当然能host更多玩家。 : 大家最喜欢玩的就是单一战场的大型战争,它里面的一场大型战争通常是在一台真正的 : 单一物理服务器节点上运行的,用不了多机。这种情况下,以前2000个就卡的不行。 : 你对网络游戏了解很少。
|
D***n 发帖数: 6804 | 44 我本来指望你能拿坦克世界来讨论,结果弄个棋牌的来糊弄。
坦克世界一个cluster能上10几万玩家,但是坦克世界,包括棋牌游戏有“局”这个概
念。一个局内的最大资源需求,比如连接和处理量是有限的。这样你可以把一局做成一
个进程并且移动到某个机器上去,只要机器足够多,可以host无数局。
但是Eve Online基本没有局的概念,只有系统/grid的概念。比如一开始20个人在对打
,你分配一个普通的资源给它,打着打着很有可能其他几百上千个人跟着加入同一个
grid,这个时候普通的资源就抗不住了。打完了几百个人可能瞬间就走了又去加入另外
一个grid。这个对单一节点的处理能力要求非常高。
还failover,搞笑呢?游戏里面关键场合每一秒都很重要,等你去failover迁移几十上
百个连接?还玩不玩了?
你拿棋牌的眼界去讨论网络游戏,也是奇葩。
【在 g*****g 的大作中提到】 : 你省省吧,你根本没明白我说的啥意思。单一cluster从架构的角度是最简单的,至于 : 你一台服务器能撑100用户还是10万用户对failover不是大的区别,多开点机器就是了 : 。世界级的游戏哪个只有40K在线玩家的?你丫就是被打脸了来吹毛求疵。光我说的一 : 点,你数据中心断电就挂了你不服? : : 人。
|
g*****g 发帖数: 34805 | 45 你太弱了。failover哪怕不能完全recover当前game,至少可以让玩家继续玩。你那单
一cluster一当,就跟这Mitbbs一样,两天不起来都可能。
【在 D***n 的大作中提到】 : 我本来指望你能拿坦克世界来讨论,结果弄个棋牌的来糊弄。 : 坦克世界一个cluster能上10几万玩家,但是坦克世界,包括棋牌游戏有“局”这个概 : 念。一个局内的最大资源需求,比如连接和处理量是有限的。这样你可以把一局做成一 : 个进程并且移动到某个机器上去,只要机器足够多,可以host无数局。 : 但是Eve Online基本没有局的概念,只有系统/grid的概念。比如一开始20个人在对打 : ,你分配一个普通的资源给它,打着打着很有可能其他几百上千个人跟着加入同一个 : grid,这个时候普通的资源就抗不住了。打完了几百个人可能瞬间就走了又去加入另外 : 一个grid。这个对单一节点的处理能力要求非常高。 : 还failover,搞笑呢?游戏里面关键场合每一秒都很重要,等你去failover迁移几十上 : 百个连接?还玩不玩了?
|
D***n 发帖数: 6804 | 46 还failover,都gameover了,继续玩个毛啊!
还failover recover,明明刚才敌人快被打死了,忽然机器一卡,居然满血复活了。
EVE以前有过这事,被人骂的要死。
【在 g*****g 的大作中提到】 : 你太弱了。failover哪怕不能完全recover当前game,至少可以让玩家继续玩。你那单 : 一cluster一当,就跟这Mitbbs一样,两天不起来都可能。
|
g*****g 发帖数: 34805 | 47 你实在太弱了,server instance也会坏,client也会丢连接。这东西是必然要有的,
只不过单一cluster的availability远不如多DC的failover可靠而已。别玩俩游戏就以
为你啥都知道了,你还没入门呢。
【在 D***n 的大作中提到】 : 还failover,都gameover了,继续玩个毛啊! : 还failover recover,明明刚才敌人快被打死了,忽然机器一卡,居然满血复活了。 : EVE以前有过这事,被人骂的要死。
|
D***n 发帖数: 6804 | 48 那你说说DC的Failover怎么实现你的1万人实时(客户端<200ms)互相可靠的一起打架?
这问题解决了,估计广大在线游戏不请你去当CTO都不行啊。
【在 g*****g 的大作中提到】 : 你实在太弱了,server instance也会坏,client也会丢连接。这东西是必然要有的, : 只不过单一cluster的availability远不如多DC的failover可靠而已。别玩俩游戏就以 : 为你啥都知道了,你还没入门呢。
|
g*****g 发帖数: 34805 | 49 DC failover做不到这个,但总比啥都没有强多了。你连单instance的failover都没整
明白呢。还以为只要一个cluster,就可以可靠打架了,一看就是啥都没做过呀。
架?
【在 D***n 的大作中提到】 : 那你说说DC的Failover怎么实现你的1万人实时(客户端<200ms)互相可靠的一起打架? : 这问题解决了,估计广大在线游戏不请你去当CTO都不行啊。
|
D***n 发帖数: 6804 | 50 既然都做不到,谈什么“可靠性”?可靠地做不到?
这不是彻底的搞笑么。连run都run不起来还要讨论failover,哈哈哈。
【在 g*****g 的大作中提到】 : DC failover做不到这个,但总比啥都没有强多了。你连单instance的failover都没整 : 明白呢。还以为只要一个cluster,就可以可靠打架了,一看就是啥都没做过呀。 : : 架?
|
|
|
g*****g 发帖数: 34805 | 51 你是不是弱智呀,当前状态不能精确保持跟当几天玩不了是一个性质吗?
【在 D***n 的大作中提到】 : 既然都做不到,谈什么“可靠性”?可靠地做不到? : 这不是彻底的搞笑么。连run都run不起来还要讨论failover,哈哈哈。
|
D***n 发帖数: 6804 | 52 我的问题是:你的什么DC 什么Failover或者别的技术,能让1万个玩家以实时(<200MS)
在同一个地图上流畅PK 2到3个小时?
一个节点fail用别的节点代替运行那早就解决了,请不要扯这些没用的。
【在 g*****g 的大作中提到】 : 你是不是弱智呀,当前状态不能精确保持跟当几天玩不了是一个性质吗?
|
g*****g 发帖数: 34805 | 53 你觉得没用就没用?你丫刚才还在扯啥精确到秒,要不你来跟我解释一下,一个用户断
线了会怎样,一个服务器当了,是怎么failover的还精确到秒的?完全没做过的东西跟
我瞎鸡巴扯。
200MS)
【在 D***n 的大作中提到】 : 我的问题是:你的什么DC 什么Failover或者别的技术,能让1万个玩家以实时(<200MS) : 在同一个地图上流畅PK 2到3个小时? : 一个节点fail用别的节点代替运行那早就解决了,请不要扯这些没用的。
|
D***n 发帖数: 6804 | 54 你那个failover在这样的context里面根本没意义。你以为是你那幼稚的棋牌游戏,掉
了还能按记录的步骤重新执行到某一点接着玩?
最常见的战术就是几十个上百个人在另外一个grid埋伏,等敌人一上钩在几秒内跳进去
猛PK,这时候是最容易断线的时候,你来个failover,回退到上钩以前状态,敌人还会
傻傻地去上钩被别人干?
你不懂就不懂,瞎鸡巴扯啥呢?
【在 g*****g 的大作中提到】 : 你觉得没用就没用?你丫刚才还在扯啥精确到秒,要不你来跟我解释一下,一个用户断 : 线了会怎样,一个服务器当了,是怎么failover的还精确到秒的?完全没做过的东西跟 : 我瞎鸡巴扯。 : : 200MS)
|
z****e 发帖数: 54598 | 55 nodejs怎么做的?
你们对战的话也是用node.js来做吗?
对了,你们游戏允许对战不?
【在 c******o 的大作中提到】 : 游戏前端?Unity, 加上少量native的java/OC : 后端主要是Node.JS,还有很多service,那就五花八门了,java/php/scala/ruby : 我是用scala做platform service/BI 后端的。Play/Spark是我做的。
|
z****e 发帖数: 54598 | 56 ror不异步一样超过django
如果非要异步,用eventmachine
实际上node.js就是抄袭eventmachine的idea
但是真正顶用的还是ror
因为不需要那么麻烦
ror比django容易不少
python用来做web会让你狠恶心滴
现在都不用了,实际上以前也不怎么用
【在 n****l 的大作中提到】 : ROR如何异步? : 另外python有pypy,pypy下也有gevent
|
z****e 发帖数: 54598 | 57 多麻烦的一个实现
你先学会数数,再来啰嗦
apache的project哪个语言多?
这么简单问题你都不敢回答
还说啥?
【在 D***n 的大作中提到】 : 你这个笨蛋怎么一点基本领悟力都没有? : EVE Online用的是用所谓Stackless Python实现microthread。换句话说,Python解释 : 器本身是驻扎在每一个内核的单一进程,但是内部提供了相应的线程切换机制。 : 这是另外一种async实现方法。Nodejs用的是thread pool/queue。
|
z****e 发帖数: 54598 | 58 是python慢
同时因为python无法用上lars bak的那些优化专利
另外加上python本身eco偏弱
尤其是做web的python eco非常弱
ruby强就强在日本人爱用
很多工具都是日本人在做
做东西,不就是图一个轮子多,省事么?
【在 m********2 的大作中提到】 : 如果真效率不行那也是因为缺少异步库的支持吧?
|
z****e 发帖数: 54598 | 59 你懂?
stackless python主要是pypy和jit的部分加上去
以提速,跟cpython已经不是一回事了
其实已经在折腾了,lol
另外,eve online没玩过,不知道到底是怎么样的
鬼知道这里面的每一个server会不会有什么能够隔绝的机制
有或者没有,不知道啊,也不知道到底是不是同一个server host的这么多玩家
游戏跟游戏是不一样的,人家说棋牌有错么?
棋牌难倒不是游戏?难倒一开始问的不就是到底是什么游戏?
你自己上来啥不看,就瞎扯蛋
【在 D***n 的大作中提到】 : 你那个failover在这样的context里面根本没意义。你以为是你那幼稚的棋牌游戏,掉 : 了还能按记录的步骤重新执行到某一点接着玩? : 最常见的战术就是几十个上百个人在另外一个grid埋伏,等敌人一上钩在几秒内跳进去 : 猛PK,这时候是最容易断线的时候,你来个failover,回退到上钩以前状态,敌人还会 : 傻傻地去上钩被别人干? : 你不懂就不懂,瞎鸡巴扯啥呢?
|
z****e 发帖数: 54598 | 60 eve online最多5万人在线
这个数量级跟coltzhao他们的那个游戏不能比
差太远了,我还是想知道coltzhao他们怎么用node.js实现host
如果能对战就太好了 |
|
|
D***n 发帖数: 6804 | 61 你直接说你没玩过网络游戏不就得了?绕这么一大弯。
【在 z****e 的大作中提到】 : eve online最多5万人在线 : 这个数量级跟coltzhao他们的那个游戏不能比 : 差太远了,我还是想知道coltzhao他们怎么用node.js实现host : 如果能对战就太好了
|
z****e 发帖数: 54598 | 62 lol
我没绕弯
网络游戏很多种
我从来不认为他们的实现都是一样的
你难倒这么认为?
对了,apache上java和python哪个用得多?
【在 D***n 的大作中提到】 : 你直接说你没玩过网络游戏不就得了?绕这么一大弯。
|
z****e 发帖数: 54598 | 63 三国杀算不算网络游戏?
【在 D***n 的大作中提到】 : 你直接说你没玩过网络游戏不就得了?绕这么一大弯。
|
D***n 发帖数: 6804 | 64 stackless python 1998年开始就有了,2002年都出2.0版本了,EVE Online
Pypy的前身psyco 2002年才开始弄。
【在 z****e 的大作中提到】 : 你懂? : stackless python主要是pypy和jit的部分加上去 : 以提速,跟cpython已经不是一回事了 : 其实已经在折腾了,lol : 另外,eve online没玩过,不知道到底是怎么样的 : 鬼知道这里面的每一个server会不会有什么能够隔绝的机制 : 有或者没有,不知道啊,也不知道到底是不是同一个server host的这么多玩家 : 游戏跟游戏是不一样的,人家说棋牌有错么? : 棋牌难倒不是游戏?难倒一开始问的不就是到底是什么游戏? : 你自己上来啥不看,就瞎扯蛋
|
g*****g 发帖数: 34805 | 65 我就问你这个时候 client当了会怎样, server当了会怎样?你丫不是精确到秒恢复吗
,给个方案呀。你原来屁都不懂就是玩过呀?
【在 D***n 的大作中提到】 : 你那个failover在这样的context里面根本没意义。你以为是你那幼稚的棋牌游戏,掉 : 了还能按记录的步骤重新执行到某一点接着玩? : 最常见的战术就是几十个上百个人在另外一个grid埋伏,等敌人一上钩在几秒内跳进去 : 猛PK,这时候是最容易断线的时候,你来个failover,回退到上钩以前状态,敌人还会 : 傻傻地去上钩被别人干? : 你不懂就不懂,瞎鸡巴扯啥呢?
|
D***n 发帖数: 6804 | 66 网络游戏很多种,你说的很正确。
那goodbug上来就用棋牌游戏的在线人数和思路去套MMORPG岂不是很愚蠢的行为?
【在 z****e 的大作中提到】 : lol : 我没绕弯 : 网络游戏很多种 : 我从来不认为他们的实现都是一样的 : 你难倒这么认为? : 对了,apache上java和python哪个用得多?
|
z****e 发帖数: 54598 | 67 人家不会在新版本中加入么?
你就一死脑筋
eve online就能代表所有网游?
嗯?我就想做一个三国杀一样得网游
行不行?三国杀不卖钱?
python老,谁都知道
没事谁喜欢抱着python不放
你不是吹牛说你用过很多种语言嘛
来来来,说说看,都是哪几个
我写过dart, swift, scala, clojure, groovy, ruby, python, java, js
c工作之后就不怎么写了,你说说你都用了什么语言先
你除了python还会啥?ruby写过没?groovy试过没?
【在 D***n 的大作中提到】 : stackless python 1998年开始就有了,2002年都出2.0版本了,EVE Online : Pypy的前身psyco 2002年才开始弄。
|
z****e 发帖数: 54598 | 68 lol
如果你丫稍微开点窍
就应该知道
coltzhao他们其实做的东西跟棋牌反而更接近
我更关心的是他的实现,而不是你的实现
你这种无非就是一装逼
其实你自己也不懂人家到底怎么做的
你要吹牛的话,akka上就写着暴雪在用
你这个冰岛的破烂跟暴雪比?
比毛
从目的出发开手段,你也搞清楚别人在问啥
我问的是coltzhao,没问你,你又不在网络游戏公司工作
你懂啥?
【在 D***n 的大作中提到】 : 网络游戏很多种,你说的很正确。 : 那goodbug上来就用棋牌游戏的在线人数和思路去套MMORPG岂不是很愚蠢的行为?
|
D***n 发帖数: 6804 | 69 Apache 上java多,比如这个:
Apache Commons Exec
A library to reliably execute external processes from within the JVM
像这样的东西都来充数?
【在 z****e 的大作中提到】 : lol : 如果你丫稍微开点窍 : 就应该知道 : coltzhao他们其实做的东西跟棋牌反而更接近 : 我更关心的是他的实现,而不是你的实现 : 你这种无非就是一装逼 : 其实你自己也不懂人家到底怎么做的 : 你要吹牛的话,akka上就写着暴雪在用 : 你这个冰岛的破烂跟暴雪比? : 比毛
|
z****e 发帖数: 54598 | 70 lol
是不是滥竽充数,你跟apache的committee去说去
而且里面不滥竽充数的也不少
视而不见?
你写个nosql我看看
【在 D***n 的大作中提到】 : Apache 上java多,比如这个: : Apache Commons Exec : A library to reliably execute external processes from within the JVM : 像这样的东西都来充数?
|
|
|
z****e 发帖数: 54598 | 71 下一个问题
apache里面java项目数量是python的几倍
自己数
【在 D***n 的大作中提到】 : Apache 上java多,比如这个: : Apache Commons Exec : A library to reliably execute external processes from within the JVM : 像这样的东西都来充数?
|
D***n 发帖数: 6804 | 72 client down了怎样?系统自动接管。server down了怎样?全体下线
难道大家还要2B一样冲过去再死一次?
【在 g*****g 的大作中提到】 : 我就问你这个时候 client当了会怎样, server当了会怎样?你丫不是精确到秒恢复吗 : ,给个方案呀。你原来屁都不懂就是玩过呀?
|
z****e 发帖数: 54598 | 73 session存在nosql/db里面
如果down的话,重启,读回来就是
或者一个backup直接接管,当场就可以继续serve
这种在一些银行这些机构里面都用过
【在 D***n 的大作中提到】 : client down了怎样?系统自动接管。server down了怎样?全体下线 : 难道大家还要2B一样冲过去再死一次?
|
D***n 发帖数: 6804 | 74 PYPI里的Python项目是apache里面java项目的几倍?
我一看光是web 就有9000多个,比个屁啊。
【在 z****e 的大作中提到】 : 下一个问题 : apache里面java项目数量是python的几倍 : 自己数
|
z****e 发帖数: 54598 | 75 lol
apache组织比较大
是第三方开源组织
应该说是最著名的一个
你说的只是一个python的综合
你不知道java的pkg是所有语言最多么?
这个我记得教科书上都这么写
当然没办法统计,因为包太多了
你觉得用一个黄页比apache一个组织
你觉得合理不?apache因为是第三方组织
所以比较适合做sample,sample跟population的差异知道不?
就这个意思
【在 D***n 的大作中提到】 : PYPI里的Python项目是apache里面java项目的几倍? : 我一看光是web 就有9000多个,比个屁啊。
|
D***n 发帖数: 6804 | 76 倒不是觉得滥竽充数,只不过你这记数方法比较奇葩。
类似的模块当然在apache下面找不到python版本。
因为python系统自带。
【在 z****e 的大作中提到】 : lol : apache组织比较大 : 是第三方开源组织 : 应该说是最著名的一个 : 你说的只是一个python的综合 : 你不知道java的pkg是所有语言最多么? : 这个我记得教科书上都这么写 : 当然没办法统计,因为包太多了 : 你觉得用一个黄页比apache一个组织 : 你觉得合理不?apache因为是第三方组织
|
z****e 发帖数: 54598 | 77 这叫sample
知道统计里面得sample吧?
apache因为本身作为第三方开源组织
是最著名一个,所以看apache就比较有代表性
否则population,你有办法做?你少来
你算算java的类库有多少个,全世界范围内
我自诩我算不出来,lol,也许某些人觉得可以
【在 D***n 的大作中提到】 : 倒不是觉得滥竽充数,只不过你这记数方法比较奇葩。 : 类似的模块当然在apache下面找不到python版本。 : 因为python系统自带。
|
z****e 发帖数: 54598 | 78 你就说吧
你到底用过什么语言的eco
除了python以外
java你没用过,你已经承认了
我估摸着你连ruby,groovy这些也都没用过
你除了python你还知道啥?
【在 D***n 的大作中提到】 : 倒不是觉得滥竽充数,只不过你这记数方法比较奇葩。 : 类似的模块当然在apache下面找不到python版本。 : 因为python系统自带。
|
D***n 发帖数: 6804 | 79 哟!开始吹stat sampling了!往学术界高大上发展了。我快被吓死了。
你这个sampling按啥分布啊?期望是啥啊?方差范围多大啊?
apache的代表性你是啥方法sampling出来的啊?
【在 z****e 的大作中提到】 : 这叫sample : 知道统计里面得sample吧? : apache因为本身作为第三方开源组织 : 是最著名一个,所以看apache就比较有代表性 : 否则population,你有办法做?你少来 : 你算算java的类库有多少个,全世界范围内 : 我自诩我算不出来,lol,也许某些人觉得可以
|
z****e 发帖数: 54598 | 80 lol
没办法考虑那么多
所以只能顺手抓一个来
你就是觉得这个证据明显不利于你
开始满地打滚
【在 D***n 的大作中提到】 : 哟!开始吹stat sampling了!往学术界高大上发展了。我快被吓死了。 : 你这个sampling按啥分布啊?期望是啥啊?方差范围多大啊? : apache的代表性你是啥方法sampling出来的啊?
|
|
|
g*****g 发帖数: 34805 | 81 哈哈,自己打脸了不是,精确到秒的 failover原来就是集体下线。那我多DC做到太容
易了。
【在 D***n 的大作中提到】 : client down了怎样?系统自动接管。server down了怎样?全体下线 : 难道大家还要2B一样冲过去再死一次?
|
D***n 发帖数: 6804 | 82 哈哈哈哈,终于回原型了。
你这番话无非说明一件事:就是java社区的包管理器不是太完善。没有一个central
hub。你自己去看看PYPI有多少包。
https://pypi.python.org/pypi?%3Aaction=browse
怪不得上次100个jar就把你吓尿了。
【在 z****e 的大作中提到】 : lol : 没办法考虑那么多 : 所以只能顺手抓一个来 : 你就是觉得这个证据明显不利于你 : 开始满地打滚
|
D***n 发帖数: 6804 | 83 还是那句话,你先做一个1万人能同时互相PK的,再来吹failover。
你上来就是fail,还谈什么failover。
【在 g*****g 的大作中提到】 : 哈哈,自己打脸了不是,精确到秒的 failover原来就是集体下线。那我多DC做到太容 : 易了。
|
z****e 发帖数: 54598 | 84 lol
自由世界,什么东西为什么都要集中搞呢?
你非要说,看看maven里面注册了多少个
http://search.maven.org/
我找了找,发现他们没统计,所以就先不管了
【在 D***n 的大作中提到】 : 哈哈哈哈,终于回原型了。 : 你这番话无非说明一件事:就是java社区的包管理器不是太完善。没有一个central : hub。你自己去看看PYPI有多少包。 : https://pypi.python.org/pypi?%3Aaction=browse : 怪不得上次100个jar就把你吓尿了。
|
z****e 发帖数: 54598 | 85 你丫除了python你还做过啥?
你就一骗子,连java都没碰过
瞎吹个鸟
【在 D***n 的大作中提到】 : 还是那句话,你先做一个1万人能同时互相PK的,再来吹failover。 : 你上来就是fail,还谈什么failover。
|
g*****g 发帖数: 34805 | 86 你丫吹牛逼精确到秒 failover,一问细节就是集体下线死给你看。我老没写过 MMORPG
,但
至少几百万在线用户的服务还是写过的。
【在 D***n 的大作中提到】 : 还是那句话,你先做一个1万人能同时互相PK的,再来吹failover。 : 你上来就是fail,还谈什么failover。
|
D***n 发帖数: 6804 | 87 几百万都能搞。那你写一个1万个实时互相PK的岂不是小菜一碟?
来来,写出来让我们瞻仰一下。
MMORPG
【在 g*****g 的大作中提到】 : 你丫吹牛逼精确到秒 failover,一问细节就是集体下线死给你看。我老没写过 MMORPG : ,但 : 至少几百万在线用户的服务还是写过的。
|
g*****g 发帖数: 34805 | 88 这种 MMO都是分场景的,你动不动就是万人 broadcast说明你完全不懂。做科学计算的
就别成天装逼探讨 server咋写了行不?
【在 D***n 的大作中提到】 : 几百万都能搞。那你写一个1万个实时互相PK的岂不是小菜一碟? : 来来,写出来让我们瞻仰一下。 : : MMORPG
|
D***n 发帖数: 6804 | 89 自由世界,什么东西为什么都要集中搞呢?
-------------------
因为不会才100个jar就吓的不行,说实话,闹这种笑话比较丢人。
【在 z****e 的大作中提到】 : lol : 自由世界,什么东西为什么都要集中搞呢? : 你非要说,看看maven里面注册了多少个 : http://search.maven.org/ : 我找了找,发现他们没统计,所以就先不管了
|
D***n 发帖数: 6804 | 90 EVE Online最多的时候2000-3000人在一个场景里PK。
你不是瞧不起吗?写一个1万人在一个场景里PK的看看。
【在 g*****g 的大作中提到】 : 这种 MMO都是分场景的,你动不动就是万人 broadcast说明你完全不懂。做科学计算的 : 就别成天装逼探讨 server咋写了行不?
|
|
|
z****e 发帖数: 54598 | 91 lol
我从来不低估现实的复杂度
wdong一用scala,马上就问jars冲突怎么办
只有你这种,没怎么认真弄过项目的
就知道狐假虎威,拿别人做过的东西瞎吹
你就是只用过python,承认吧
你除了python其他p都不知道
【在 D***n 的大作中提到】 : 自由世界,什么东西为什么都要集中搞呢? : ------------------- : 因为不会才100个jar就吓的不行,说实话,闹这种笑话比较丢人。
|
g*****g 发帖数: 34805 | 92 让你写一个三个人的你都不会,装个蛋呀。
【在 D***n 的大作中提到】 : EVE Online最多的时候2000-3000人在一个场景里PK。 : 你不是瞧不起吗?写一个1万人在一个场景里PK的看看。
|
D***n 发帖数: 6804 | 93 哈哈,当然和你的嘴巴比那肯定不会,你百万人的都写了,写个1万人的我看看。
【在 g*****g 的大作中提到】 : 让你写一个三个人的你都不会,装个蛋呀。
|
D***n 发帖数: 6804 | 94 你这个问题很无聊,这个问题问下去肯定是要抽你脸的。
你是否同意继续:1)Yes 2) No
【在 z****e 的大作中提到】 : 你丫除了python你还做过啥? : 你就一骗子,连java都没碰过 : 瞎吹个鸟
|
z****e 发帖数: 54598 | 95 lol
你还有脸?
qxc和半海这种大牛都在against你
你觉得你自己牛逼到几何?
你写没写过java你打算反悔不成?
说话犹如放屁,家常便饭?
【在 D***n 的大作中提到】 : 你这个问题很无聊,这个问题问下去肯定是要抽你脸的。 : 你是否同意继续:1)Yes 2) No
|
g*****g 发帖数: 34805 | 96 我老就是跟你说,单 DC的比 geo sharding加 active failover 的简单很多。你 CCP
做不了,人暴雪就能。同类服务器,暴雪也不止40k。
至于个人能力,写 server你是外行,跟你比那不是欺负人吗?
【在 D***n 的大作中提到】 : 哈哈,当然和你的嘴巴比那肯定不会,你百万人的都写了,写个1万人的我看看。
|
D***n 发帖数: 6804 | 97 我承认我是外行,这并不丢脸。
但是我看到的是有些笨蛋连上下文都没搞清楚,就跑来假装内行,连我这外行随便问几
句都答不上来,还在这里嘴硬。
感觉你别的没干就会failover了,说三句就不离老本行。
CCP
【在 g*****g 的大作中提到】 : 我老就是跟你说,单 DC的比 geo sharding加 active failover 的简单很多。你 CCP : 做不了,人暴雪就能。同类服务器,暴雪也不止40k。 : 至于个人能力,写 server你是外行,跟你比那不是欺负人吗?
|
z****e 发帖数: 54598 | 98 你在说你吗?
我说的网游啥意思,你搞懂了没?
【在 D***n 的大作中提到】 : 我承认我是外行,这并不丢脸。 : 但是我看到的是有些笨蛋连上下文都没搞清楚,就跑来假装内行,连我这外行随便问几 : 句都答不上来,还在这里嘴硬。 : 感觉你别的没干就会failover了,说三句就不离老本行。 : : CCP
|
D***n 发帖数: 6804 | 99 没用过java咋了?
你一看就没用过python,没用过linux,没用过mac,没用过vi,你不批判的挺欢么?
【在 z****e 的大作中提到】 : lol : 你还有脸? : qxc和半海这种大牛都在against你 : 你觉得你自己牛逼到几何? : 你写没写过java你打算反悔不成? : 说话犹如放屁,家常便饭?
|
z****e 发帖数: 54598 | 100 lol
那要是我写过python呢?
用过vi呢?
我可没跟你说过我没写过哦
小心我赌上你全家哦
【在 D***n 的大作中提到】 : 没用过java咋了? : 你一看就没用过python,没用过linux,没用过mac,没用过vi,你不批判的挺欢么?
|
|
|
D***n 发帖数: 6804 | 101 LOL
写过就算会了?这节操还真低。
照这标准我还用过Java呢,还用Java干过活呢,还帮别人写过java作业呢。
【在 z****e 的大作中提到】 : lol : 那要是我写过python呢? : 用过vi呢? : 我可没跟你说过我没写过哦 : 小心我赌上你全家哦
|
z****e 发帖数: 54598 | 102 我的python比你的java
那是要强不少滴
至少正儿八经用过,还写过项目
vi我也用过,你真以为我没用过vi?
你丫搞没搞错啊
还有linux,你悠着点啊
自以为是的傻叉,下面准备打你脸了
别造谣别撒谎,买买提上造谣从来都是死全家的重罪
【在 D***n 的大作中提到】 : 没用过java咋了? : 你一看就没用过python,没用过linux,没用过mac,没用过vi,你不批判的挺欢么?
|
z****e 发帖数: 54598 | 103 lol
不信
你自己说没用过的
现在准备反悔了?
打算在标准上纠缠了?
【在 D***n 的大作中提到】 : LOL : 写过就算会了?这节操还真低。 : 照这标准我还用过Java呢,还用Java干过活呢,还帮别人写过java作业呢。
|
D***n 发帖数: 6804 | 104 哈哈,继续显示你的节操低?
连make这么简单的东西都吓的你不清,就号称用过?
【在 z****e 的大作中提到】 : 我的python比你的java : 那是要强不少滴 : 至少正儿八经用过,还写过项目 : vi我也用过,你真以为我没用过vi? : 你丫搞没搞错啊 : 还有linux,你悠着点啊 : 自以为是的傻叉,下面准备打你脸了 : 别造谣别撒谎,买买提上造谣从来都是死全家的重罪
|
z****e 发帖数: 54598 | 105 lol
造谣会对其他人造成不必要的损失
所以造谣从来都是狠狠打击的对象
死全家也是目前证明唯一有效的手段
否则就是缠斗,我没兴趣反复纠缠下去
该死全家时候就死全家,省时省力
节操?你也配?骗子无节操
make我已经说了,大学时候弄过,工作之后没有必要嘛
就不用了,但是vi和python,你确定我没用过?
你不服就赌上全家性命咯,选择权在你手里
知道为什么不信你做过java项目不?
因为java的项目几乎都用ide,没听说谁不用的
你没用过ide,说你做过,鬼信
哪怕是学生做作业都用
【在 D***n 的大作中提到】 : 哈哈,继续显示你的节操低? : 连make这么简单的东西都吓的你不清,就号称用过?
|
N********n 发帖数: 8363 | 106
棋牌是回合制,每回合数秒才走一步,棋局易保存、易复制。实时战略数十
人上阵每秒交互N个包。棋牌比实时战略难度低至少两级,就别XJB套了。
【在 g*****g 的大作中提到】 : 看啥游戏了,棋牌类游戏多了去了,我老10年前做的Poker服务器单机并发1万都没问题 : 。总共30万用户,4万并发连接,这个数字实在寒碜了一点。
|
D***n 发帖数: 6804 | 107 哈哈,绕了这么久终于出现了一个让你能上房的梯子了。
这除了说明你节操低还能说明啥?
【在 z****e 的大作中提到】 : lol : 造谣会对其他人造成不必要的损失 : 所以造谣从来都是狠狠打击的对象 : 死全家也是目前证明唯一有效的手段 : 否则就是缠斗,我没兴趣反复纠缠下去 : 该死全家时候就死全家,省时省力 : 节操?你也配?骗子无节操 : make我已经说了,大学时候弄过,工作之后没有必要嘛 : 就不用了,但是vi和python,你确定我没用过? : 你不服就赌上全家性命咯,选择权在你手里
|
z****e 发帖数: 54598 | 108 lol
还能说明你是骗子
【在 D***n 的大作中提到】 : 哈哈,绕了这么久终于出现了一个让你能上房的梯子了。 : 这除了说明你节操低还能说明啥?
|
d*******r 发帖数: 3299 | 109 支持前端 Unity3D + 少量 Native, 我觉得这么搞才是正道.
后端是 Node.js? 大牛你们做的是回合制游戏吗? 所以 over HTTP?
或者是 real-time 的,我觉得用 Node.js with websocket 来搞 real-time 也行.
还有,请问 platform service/BI 的 BI 只什么?
【在 c******o 的大作中提到】 : 游戏前端?Unity, 加上少量native的java/OC : 后端主要是Node.JS,还有很多service,那就五花八门了,java/php/scala/ruby : 我是用scala做platform service/BI 后端的。Play/Spark是我做的。
|
z****e 发帖数: 54598 | 110
--------------
这个也是我的问题
business intelligence
【在 d*******r 的大作中提到】 : 支持前端 Unity3D + 少量 Native, 我觉得这么搞才是正道. : 后端是 Node.js? 大牛你们做的是回合制游戏吗? 所以 over HTTP? : 或者是 real-time 的,我觉得用 Node.js with websocket 来搞 real-time 也行. : 还有,请问 platform service/BI 的 BI 只什么?
|
|
|
D***n 发帖数: 6804 | 111 LOL,那怕骗子也是比你有水平,可以没事抽你脸。
哪怕骗子也不会100个jar就吓的不行。这都什么年代了。
【在 z****e 的大作中提到】 : lol : 还能说明你是骗子
|
z****e 发帖数: 54598 | 112 lol
这叫humble
你这叫装逼
动不动就搞定这个搞定那个
其实连ide都没搞定
还搞定个球啊
对吧?
不服来赌死全家
【在 D***n 的大作中提到】 : LOL,那怕骗子也是比你有水平,可以没事抽你脸。 : 哪怕骗子也不会100个jar就吓的不行。这都什么年代了。
|
z****e 发帖数: 54598 | 113 你连scipy都没装过
一开始连scipy的安装都不知道
还什么2.6,2.7
跟python版本有毛关系
继续骗,嘴巴一张
你也是linus
【在 D***n 的大作中提到】 : LOL,那怕骗子也是比你有水平,可以没事抽你脸。 : 哪怕骗子也不会100个jar就吓的不行。这都什么年代了。
|
d*******r 发帖数: 3299 | 114 grid 就是 eve-online 宇宙的最小逻辑单元吧,这个例子还挺有意思的.
我想象过这种单一世界的游戏,应该是所有 players 对应一个单一的完整世界,
平时只是激活这个世界包围着 active player 的部分.
激活是指从 DB 里面 load 出包含 active player 世界单元 (e.g. grid) 的部分,
放到内存里跑,如果是在 AWS 这种可以编程租用 server 的地方跑这个游戏的话,
就是动态起一个 instance, 从 DB load 数据,
把那个本来 inactive 的世界单元跑起来,
然后很多 active player 无缝地进入那个刚刚被激活的世界单元.
【在 D***n 的大作中提到】 : 我本来指望你能拿坦克世界来讨论,结果弄个棋牌的来糊弄。 : 坦克世界一个cluster能上10几万玩家,但是坦克世界,包括棋牌游戏有“局”这个概 : 念。一个局内的最大资源需求,比如连接和处理量是有限的。这样你可以把一局做成一 : 个进程并且移动到某个机器上去,只要机器足够多,可以host无数局。 : 但是Eve Online基本没有局的概念,只有系统/grid的概念。比如一开始20个人在对打 : ,你分配一个普通的资源给它,打着打着很有可能其他几百上千个人跟着加入同一个 : grid,这个时候普通的资源就抗不住了。打完了几百个人可能瞬间就走了又去加入另外 : 一个grid。这个对单一节点的处理能力要求非常高。 : 还failover,搞笑呢?游戏里面关键场合每一秒都很重要,等你去failover迁移几十上 : 百个连接?还玩不玩了?
|
d*******r 发帖数: 3299 | 115 哦,那就是数据分析部分了,所以是 spark + scala 这种
请问 coltzhao 大牛,硅谷的游戏公司是不是大多都是 zynga 这种,
偏 casual/social + data driven 的游戏公司啊?
【在 z****e 的大作中提到】 : 你连scipy都没装过 : 一开始连scipy的安装都不知道 : 还什么2.6,2.7 : 跟python版本有毛关系 : 继续骗,嘴巴一张 : 你也是linus
|
D***n 发帖数: 6804 | 116 哇,我好害怕。IDE这么高大上的东西咋搞的定?
你说,就apt-get install eclipse这一句话能行么?
【在 z****e 的大作中提到】 : lol : 这叫humble : 你这叫装逼 : 动不动就搞定这个搞定那个 : 其实连ide都没搞定 : 还搞定个球啊 : 对吧? : 不服来赌死全家
|
z****e 发帖数: 54598 | 117 好像听谁说过
你说过?
就是硅谷好像都是偏互联网的游戏公司
la多数是偏传统网游
偏互联网的游戏好做啊
你像三国杀这种,就不需要放到内存里面去运行
可以用上一点persistence,可以把session放到cassandra里面去,或者redis?
这样就不怕多线程并发了,也不需要自己启动一个线程去host这一局游戏了
也不怕failover,所以我想知道coltzhao他们是不是这么做的
因为他说用node.js
【在 d*******r 的大作中提到】 : 哦,那就是数据分析部分了,所以是 spark + scala 这种 : 请问 coltzhao 大牛,硅谷的游戏公司是不是大多都是 zynga 这种, : 偏 casual/social + data driven 的游戏公司啊?
|
z****e 发帖数: 54598 | 118 lol
又开始满地打滚
反正就是你没写过嘛
你都承认还辩个毛啊
浪费时间
mvn eclipse:eclipse就可以建一个sample project
便于学习,你弄半死,连ide便于学习这个常识都没搞懂
apt-get在red hat上怎么写啊?你试试在red hat上用apt-get看看有效果不?
【在 D***n 的大作中提到】 : 哇,我好害怕。IDE这么高大上的东西咋搞的定? : 你说,就apt-get install eclipse这一句话能行么?
|
D***n 发帖数: 6804 | 119 你是准备告诉我没IDE跑不了java是吗?
【在 z****e 的大作中提到】 : lol : 又开始满地打滚 : 反正就是你没写过嘛 : 你都承认还辩个毛啊 : 浪费时间 : mvn eclipse:eclipse就可以建一个sample project : 便于学习,你弄半死,连ide便于学习这个常识都没搞懂 : apt-get在red hat上怎么写啊?你试试在red hat上用apt-get看看有效果不?
|
d*******r 发帖数: 3299 | 120 我是说过,也是听CA的朋友说的
这不想问问coltzhao大牛这种, 一线开发者的看法吗
【在 z****e 的大作中提到】 : 好像听谁说过 : 你说过? : 就是硅谷好像都是偏互联网的游戏公司 : la多数是偏传统网游 : 偏互联网的游戏好做啊 : 你像三国杀这种,就不需要放到内存里面去运行 : 可以用上一点persistence,可以把session放到cassandra里面去,或者redis? : 这样就不怕多线程并发了,也不需要自己启动一个线程去host这一局游戏了 : 也不怕failover,所以我想知道coltzhao他们是不是这么做的 : 因为他说用node.js
|
|
|
z****e 发帖数: 54598 | 121 不是啊
告诉别人的是
你没写过java
你也承认了
有啥好辩的
你连java都没正儿八经用过
还谈什么软件?
【在 D***n 的大作中提到】 : 你是准备告诉我没IDE跑不了java是吗?
|
z****e 发帖数: 54598 | 122 对啊
cotlzhao总是喜欢scala
然后其他外行总是乱入
让人很是厌恶啊
【在 d*******r 的大作中提到】 : 我是说过,也是听CA的朋友说的 : 这不想问问coltzhao大牛这种, 一线开发者的看法吗
|
D***n 发帖数: 6804 | 123 感觉比较难的是这个:
“然后很多 active player 无缝地进入那个刚刚被激活的世界单元.”
对游戏服务器来说,想当于在某个单元上动态spawn很多线程。
【在 d*******r 的大作中提到】 : grid 就是 eve-online 宇宙的最小逻辑单元吧,这个例子还挺有意思的. : 我想象过这种单一世界的游戏,应该是所有 players 对应一个单一的完整世界, : 平时只是激活这个世界包围着 active player 的部分. : 激活是指从 DB 里面 load 出包含 active player 世界单元 (e.g. grid) 的部分, : 放到内存里跑,如果是在 AWS 这种可以编程租用 server 的地方跑这个游戏的话, : 就是动态起一个 instance, 从 DB load 数据, : 把那个本来 inactive 的世界单元跑起来, : 然后很多 active player 无缝地进入那个刚刚被激活的世界单元.
|
z****e 发帖数: 54598 | 124 难个毛
你那个单元就一个thread
抓个逻辑序列,然后挨个处理
每个客户端接收逻辑序列时候进行比较
如果中间有丢包,则向服务器申请重传
这样就不需要用http,tcp这些容易有状态的连接
直接上udp就可以了
这就是分布式算法的一个final project的难度
也就是你觉得难,我们在学校时候都做了个原型出来
运转良好,当然会有古德霸说的failover的问题
一旦server down了,这些数据就都丢了
古德霸诊断系统比你牛上一亿倍
但是这的确不是我要问的,我问的是coltzhao他们怎么做的
跟这个其实没有必然联系
【在 D***n 的大作中提到】 : 感觉比较难的是这个: : “然后很多 active player 无缝地进入那个刚刚被激活的世界单元.” : 对游戏服务器来说,想当于在某个单元上动态spawn很多线程。
|
z****e 发帖数: 54598 | 125 当时java就用了ConcurrentHashMap
轻松搞定并发
这个本质上其实是c写的,不过会用就行了
管他那么多 |
z****e 发帖数: 54598 | 126 当时做的是一堆人的射击游戏,中途可以加入,退出
然后当然会有丢包的问题
但是就像星际一样,客户端先卡住不动
然后等服务器的包重传过来,所以有时候你玩星际
会突然很快滴动那么一阵,然后又稳定下来
其实就是包丢了的缘故 |
z****e 发帖数: 54598 | 127 不过这种游戏,费时费力,一般人根本搞不定
尤其不适合个人创业者,做棋牌靠谱多了
卡牌游戏在日本很有市场,最近那个动画巴哈姆特之怒
就是卡牌游戏改编的,所以你懂的 |
z****e 发帖数: 54598 | 128 所谓并发,大多数时候都以绕开为主
不得不去处理时候再处理
上来就说要怎么怎么对付并发的,都是装逼
其实狗屁不通,根本没怎么做过
像卡牌游戏,多数就可以依赖redis这种来处理并发
把session存到redis里面去,然后每个thread请求加时间戳
这样就很容易搞了,所以棋牌容易很多,非要做大型网游
那再考虑复杂的,就自己去实现各种thread
也不算太难就是了,但是等到你的游戏做到这么大
你的收益也就很多了,足够雇佣牛人来帮忙搞了
阿猫阿狗就喜欢装逼,上来就是大型网游
言必称linus的都这货 |
z****e 发帖数: 54598 | 129 如果非要在国战那种网游上对付failover
那就要做write ahead log
就像做db一样,非常非常吃性能
内存消耗大概要上百倍吧
这个可以看nosql和一般db上的对比
所以一般都不会做这么无聊的事
挂了就挂了,管他那么多,hoho
重启,重连,一般server环境都比较稳定
重启的次数不会太多,我在cloud上的instance都跑了快一年了
还没有重启过,应该aws也差不多
aws不是保证99.99%还是多少running percentage嘛?
足够用了,其实一般网游经常出问题
dragon & puzzle早期server经常down |
d*******r 发帖数: 3299 | 130 问过,公孙大神说用 Tornado, 他应该是做 web 的
【在 p*****2 的大作中提到】 : 看看公孙大神怎么说 : 如果这样的话 那python真没啥玩头了
|
|
|
D***n 发帖数: 6804 | 131 你试过300个人一起同时从另外一个节点加入没有?
goodbug的1万个人加入,你这方法管用么?
【在 z****e 的大作中提到】 : 当时做的是一堆人的射击游戏,中途可以加入,退出 : 然后当然会有丢包的问题 : 但是就像星际一样,客户端先卡住不动 : 然后等服务器的包重传过来,所以有时候你玩星际 : 会突然很快滴动那么一阵,然后又稳定下来 : 其实就是包丢了的缘故
|
z****e 发帖数: 54598 | 132 你的real time游戏有300个人同时在线的时候
你再来讨论这个问题
古德霸说的是棋牌,10k个没问题
【在 D***n 的大作中提到】 : 你试过300个人一起同时从另外一个节点加入没有? : goodbug的1万个人加入,你这方法管用么?
|
D***n 发帖数: 6804 | 133
【在 z****e 的大作中提到】 : 所谓并发,大多数时候都以绕开为主 : 不得不去处理时候再处理 : 上来就说要怎么怎么对付并发的,都是装逼 : 其实狗屁不通,根本没怎么做过 : 像卡牌游戏,多数就可以依赖redis这种来处理并发 : 把session存到redis里面去,然后每个thread请求加时间戳 : 这样就很容易搞了,所以棋牌容易很多,非要做大型网游 : 那再考虑复杂的,就自己去实现各种thread : 也不算太难就是了,但是等到你的游戏做到这么大 : 你的收益也就很多了,足够雇佣牛人来帮忙搞了
|
z****e 发帖数: 54598 | 134 我没有考虑那么久远
是你在问300个同时涌入该怎么办
【在 D***n 的大作中提到】
|
D***n 发帖数: 6804 | 135 搞明白我的意思了吗?
【在 D***n 的大作中提到】 : 感觉比较难的是这个: : “然后很多 active player 无缝地进入那个刚刚被激活的世界单元.” : 对游戏服务器来说,想当于在某个单元上动态spawn很多线程。
|
z****e 发帖数: 54598 | 136 搞明白了呀,你怎么知道300个不行呢?
concurrenthashmap是做啥用的呀?
之所以说300个不考虑,很重要一点是我一开始就在问棋牌
没有问怎么做国战,你搞明白我在说什么了没有呀?
【在 D***n 的大作中提到】 : 搞明白我的意思了吗?
|
D***n 发帖数: 6804 | 137 你看过ConcurrentHashMap么?
知道那玩意为啥要用C写么?为啥你那鸟Java在这里不灵么?
棋牌类需要很多active player动态无缝进入一个小区域交互么?
【在 z****e 的大作中提到】 : 搞明白了呀,你怎么知道300个不行呢? : concurrenthashmap是做啥用的呀? : 之所以说300个不考虑,很重要一点是我一开始就在问棋牌 : 没有问怎么做国战,你搞明白我在说什么了没有呀?
|
z****e 发帖数: 54598 | 138 如果你不开窍,给你点播一下
有些网游当人多的时候,fps会下降得很厉害
并不是网络的问题,而是server上慢
想想为什么,想明白了就知道那300怎么回事了
不过说这些没有意义,都是扯蛋,现在网游比较赔钱
都不愿意做,地主家也没啥余粮
【在 D***n 的大作中提到】 : 你看过ConcurrentHashMap么? : 知道那玩意为啥要用C写么?为啥你那鸟Java在这里不灵么? : 棋牌类需要很多active player动态无缝进入一个小区域交互么?
|
z****e 发帖数: 54598 | 139 lol
纠结下去都是c
我没吃那么饱
【在 D***n 的大作中提到】 : 你看过ConcurrentHashMap么? : 知道那玩意为啥要用C写么?为啥你那鸟Java在这里不灵么? : 棋牌类需要很多active player动态无缝进入一个小区域交互么?
|
D***n 发帖数: 6804 | 140 和C毛关系没有。
我不打算胡乱抬杠了,直接告诉你答案:
不同硬件上面ConcurrencyHashMap的lock-free实现机制不同,
Intel 是Double-CAS,PowerPC/ARM是LL/SC,32和64位也不一样,具体代码是有区别的。
不过我个人非常奇怪为啥JVM没有直接实现这一点,要甩出个C库来解决。
【在 z****e 的大作中提到】 : lol : 纠结下去都是c : 我没吃那么饱
|
|
|
n****l 发帖数: 3375 | 141 你这三两句话句句是槽点啊
第一,你刚才信口雌黄, 说tornado效率比ror还低,这里回复的时候又跟django比,
这是在转移话题吧?
第二,django可以用一句话gevent优化,并发效果马上就会有很大的提升,ror如何做
这种简单的一句话优化?
第三,你除了用过django和tornado还用过什么python框架,flask用过没,bottle用过
没。
第四,用eventmachine的话写法会很恶心,ruby还有很多其他异步框架,如果非要用
eventmachine那还不如直接用node.js
第五,麻烦你信口雌黄之前先看看框架benchmark排名 http://www.techempower.com/benchmarks/
ruby社区喊ruby off rails不是一天两天了
ror写东西固然快,但是ror运行效率实在太慢,也没有一个好的并发解决方案,都是吃
北欧大牛的老本。
【在 z****e 的大作中提到】 : ror不异步一样超过django : 如果非要异步,用eventmachine : 实际上node.js就是抄袭eventmachine的idea : 但是真正顶用的还是ror : 因为不需要那么麻烦 : ror比django容易不少 : python用来做web会让你狠恶心滴 : 现在都不用了,实际上以前也不怎么用
|
z****e 发帖数: 54598 | 142 是么?
没关心过,管他那么多,能用就行
实际上人家很多网游根本就没有解决你说的300个同时涌入的效率问题
该慢还是慢,我们当时试了下,因为都在内存里
所以爆了100个问题不大,300个就懒得去试了
不过说这些木有意义,等这些东西真成了问题再说吧
网游比较没啥搞头,还是棋牌好
的。
【在 D***n 的大作中提到】 : 和C毛关系没有。 : 我不打算胡乱抬杠了,直接告诉你答案: : 不同硬件上面ConcurrencyHashMap的lock-free实现机制不同, : Intel 是Double-CAS,PowerPC/ARM是LL/SC,32和64位也不一样,具体代码是有区别的。 : 不过我个人非常奇怪为啥JVM没有直接实现这一点,要甩出个C库来解决。
|
d******e 发帖数: 2265 | 143 1万页眉关系。
游戏设计时不是你的client直接连数据库或者内存数据model的。
而是你实际练的是前端actor服务器里面的某个actor.
这样即使你断线了,actor海活着。保存你的状态什么的,你重练就是。
那么10万人好了,我先起10台机器,每台host 1万actors。
加入就是一个连接上actor而已。
【在 z****e 的大作中提到】 : 我没有考虑那么久远 : 是你在问300个同时涌入该怎么办
|
z****e 发帖数: 54598 | 144 ror没找到
既然你看到了benchmark排行
为啥不看看top那几个?
什么undertow啊,什么netty啊,什么vert.x啊
你干嘛要选其他那些呀?
我习惯于用最快的几个,其他的有很大差别么?
ruby我倒是找到了这个
rack-jruby
这个好像比各类tornado都要快啊
我不是说了jruby的效率提升了么?
你就允许python用某种方式提升效率,不允许人家jror啊?
【在 n****l 的大作中提到】 : 你这三两句话句句是槽点啊 : 第一,你刚才信口雌黄, 说tornado效率比ror还低,这里回复的时候又跟django比, : 这是在转移话题吧? : 第二,django可以用一句话gevent优化,并发效果马上就会有很大的提升,ror如何做 : 这种简单的一句话优化? : 第三,你除了用过django和tornado还用过什么python框架,flask用过没,bottle用过 : 没。 : 第四,用eventmachine的话写法会很恶心,ruby还有很多其他异步框架,如果非要用 : eventmachine那还不如直接用node.js : 第五,麻烦你信口雌黄之前先看看框架benchmark排名 http://www.techempower.com/benchmarks/
|
z****e 发帖数: 54598 | 145 他说的那种,actor估计吃不消,actor互相隔离
他说的那种互相之间有互动,你砍我一下,我砍你一下
棋牌问题不大,所以就问coltzhao node.js怎么搞法
【在 d******e 的大作中提到】 : 1万页眉关系。 : 游戏设计时不是你的client直接连数据库或者内存数据model的。 : 而是你实际练的是前端actor服务器里面的某个actor. : 这样即使你断线了,actor海活着。保存你的状态什么的,你重练就是。 : 那么10万人好了,我先起10台机器,每台host 1万actors。 : 加入就是一个连接上actor而已。
|
D***n 发帖数: 6804 | 146 不过我感觉有点日,
JVM为啥不提供一个DCAS或者LL/SC的指令抽象,
否则任何像样的Java concurrency程序都要在不同平台上编译,
还一定要Make(那些机制都要开专门的编译开关),
岂不是很恶心。
【在 z****e 的大作中提到】 : 是么? : 没关心过,管他那么多,能用就行 : 实际上人家很多网游根本就没有解决你说的300个同时涌入的效率问题 : 该慢还是慢,我们当时试了下,因为都在内存里 : 所以爆了100个问题不大,300个就懒得去试了 : 不过说这些木有意义,等这些东西真成了问题再说吧 : 网游比较没啥搞头,还是棋牌好 : : 的。
|
z****e 发帖数: 54598 | 147 这个你慢慢研究
至于你说的第三句话
实践中么有遇到,不知道你在说啥
【在 D***n 的大作中提到】 : 不过我感觉有点日, : JVM为啥不提供一个DCAS或者LL/SC的指令抽象, : 否则任何像样的Java concurrency程序都要在不同平台上编译, : 还一定要Make(那些机制都要开专门的编译开关), : 岂不是很恶心。
|
D***n 发帖数: 6804 | 148 这不是以前你告诉我的吗?
我也没遇到,但是你非说你遇到了,还特别痛苦,还特别过时。
在那里骂骂咧咧了半天。
【在 z****e 的大作中提到】 : 这个你慢慢研究 : 至于你说的第三句话 : 实践中么有遇到,不知道你在说啥
|
z****e 发帖数: 54598 | 149 否则任何像样的Java concurrency程序都要在不同平台上编译,
我什么时候告诉过你这句话?
【在 D***n 的大作中提到】 : 这不是以前你告诉我的吗? : 我也没遇到,但是你非说你遇到了,还特别痛苦,还特别过时。 : 在那里骂骂咧咧了半天。
|
D***n 发帖数: 6804 | 150 ConcurrencyHashMap是C写的...
按照你的说法,需要去prod.env上重新编译。。。
eclipse了
【在 z****e 的大作中提到】 : 否则任何像样的Java concurrency程序都要在不同平台上编译, : 我什么时候告诉过你这句话?
|
|
|
z****e 发帖数: 54598 | 151 java的不少pkg都是c写的
直接弄成字节码以跨平台
这个部分你下下来就已经是字节码了
不需要你重新编译
python很多包是c写的,然后编译成native
只有native才有跨平台的问题,所以才需要重新编译
其实你用什么都可以写出字节码,也都可以编译成native
严格说来这个跟语法没有必然联系,说的是一般上说
你果然没写过java啊
【在 D***n 的大作中提到】 : ConcurrencyHashMap是C写的... : 按照你的说法,需要去prod.env上重新编译。。。 : : eclipse了
|
n****l 发帖数: 3375 | 152 你这一个回复又一堆槽点。。。。
第一,那个rack-jruby是个最简单的echo框架,如果把ror放上面跑,比CRuby还慢,所
以你才会看不到ror,否则应该有个ror-jruby的,这个简单的逻辑自己没思考下就回复
了么;
第二,我就知道你又转进到java上了,这里讨论是ruby python,你可以另外单开个帖
子讲一下java秒杀一切语言;
第三,即使有ruby的解释器优化的再好,也改变不了ruby至今没有一个完善的、一条龙
的异步解决方案的事实, 或者说python下没有ror这种开发速度超过其他任何语言的框
架,ror下也没有python那样的兼顾开发速度和运行效率的框架
第四,那个benchmark你可能没仔细看,运行效率最快的还有cpp呢,按照你的回复cpp
做web行了,还要什么其他编程语言。
【在 z****e 的大作中提到】 : ror没找到 : 既然你看到了benchmark排行 : 为啥不看看top那几个? : 什么undertow啊,什么netty啊,什么vert.x啊 : 你干嘛要选其他那些呀? : 我习惯于用最快的几个,其他的有很大差别么? : ruby我倒是找到了这个 : rack-jruby : 这个好像比各类tornado都要快啊 : 我不是说了jruby的效率提升了么?
|
g*****g 发帖数: 34805 | 153 别扯蛋了,ConcurrentHashMap是个纯的Java实现。当然你要追究底下都用compare&
swap. 作为虚拟机,不调JNI连IO都做不了。
【在 D***n 的大作中提到】 : 你看过ConcurrentHashMap么? : 知道那玩意为啥要用C写么?为啥你那鸟Java在这里不灵么? : 棋牌类需要很多active player动态无缝进入一个小区域交互么?
|
g*****g 发帖数: 34805 | 154 你完全不知道你自己在说啥,JDK的源码都看得到,有兴趣可以读读concurrency
package,何必出来瞎说。
【在 D***n 的大作中提到】 : 不过我感觉有点日, : JVM为啥不提供一个DCAS或者LL/SC的指令抽象, : 否则任何像样的Java concurrency程序都要在不同平台上编译, : 还一定要Make(那些机制都要开专门的编译开关), : 岂不是很恶心。
|
n****l 发帖数: 3375 | 155 我搜了下ConcurrentHashMap这个文件
https://github.com/goldmansachs/gs-collections/blob/master/collections/src/
main/java/com/gs/collections/impl/map/mutable/ConcurrentHashMap.java
【在 g*****g 的大作中提到】 : 别扯蛋了,ConcurrentHashMap是个纯的Java实现。当然你要追究底下都用compare& : swap. 作为虚拟机,不调JNI连IO都做不了。
|
D***n 发帖数: 6804 | 156 太晚了就不继续无聊的抬杠了。
之所以我的这个问题有兴趣是因为我以前写过一套Concurrency库(C/汇编)。包括
Lock-free的hash map, linked-list都做过。不过这些都是专业人士的领域,我写的是
非常糙的,幸运的是实践中还比较稳定。
看到Java 提供了 AtomicStampedReference,但是byte code列表里面只字未提 Atomic
,呵呵,还是悄悄塞了平台依赖的glue code进去。
http://www.ibm.com/developerworks/library/j-jtp11234/#listing1
【在 z****e 的大作中提到】 : java的不少pkg都是c写的 : 直接弄成字节码以跨平台 : 这个部分你下下来就已经是字节码了 : 不需要你重新编译 : python很多包是c写的,然后编译成native : 只有native才有跨平台的问题,所以才需要重新编译 : 其实你用什么都可以写出字节码,也都可以编译成native : 严格说来这个跟语法没有必然联系,说的是一般上说 : 你果然没写过java啊
|
h**********c 发帖数: 4120 | 157 Is the so called two phase lock or alike?
Java I remember use the security guard, I don't recall.
Atomic
【在 D***n 的大作中提到】 : 太晚了就不继续无聊的抬杠了。 : 之所以我的这个问题有兴趣是因为我以前写过一套Concurrency库(C/汇编)。包括 : Lock-free的hash map, linked-list都做过。不过这些都是专业人士的领域,我写的是 : 非常糙的,幸运的是实践中还比较稳定。 : 看到Java 提供了 AtomicStampedReference,但是byte code列表里面只字未提 Atomic : ,呵呵,还是悄悄塞了平台依赖的glue code进去。 : http://www.ibm.com/developerworks/library/j-jtp11234/#listing1
|
D***n 发帖数: 6804 | 158 Concurrency Hash Map是Lock-based还是Lock-free based?
Lock-based不适合游戏。这个还用我提醒你么?
【在 g*****g 的大作中提到】 : 你完全不知道你自己在说啥,JDK的源码都看得到,有兴趣可以读读concurrency : package,何必出来瞎说。
|
g*****g 发帖数: 34805 | 159 这不是JDK的实现。
【在 n****l 的大作中提到】 : 我搜了下ConcurrentHashMap这个文件 : https://github.com/goldmansachs/gs-collections/blob/master/collections/src/ : main/java/com/gs/collections/impl/map/mutable/ConcurrentHashMap.java
|
h**********c 发帖数: 4120 | 160 看了看旧project,java lock 用那个叫UnSafe的东西
机器支持就用机器的锁
不支持用vm的锁
锁吗,就那么回事
UnSafe的码看不见,一直想找人给讲讲。 |
|
|
g*****g 发帖数: 34805 | 161 Unsafe就是包了一堆JNI,有兴趣看cpp源码也有。
http://stackoverflow.com/questions/6750791/source-for-native-su
【在 h**********c 的大作中提到】 : 看了看旧project,java lock 用那个叫UnSafe的东西 : 机器支持就用机器的锁 : 不支持用vm的锁 : 锁吗,就那么回事 : UnSafe的码看不见,一直想找人给讲讲。
|
D***n 发帖数: 6804 | |
h**********c 发帖数: 4120 | 163 当时还不会编jdk,oracle 的zip上 没有,不过谢你的tip
【在 g*****g 的大作中提到】 : Unsafe就是包了一堆JNI,有兴趣看cpp源码也有。 : http://stackoverflow.com/questions/6750791/source-for-native-su
|
D***n 发帖数: 6804 | 164 谢谢你的提示,原来Java搞了个JNI出来抄近路,我对Java Concurrency实现机制有所
了解了。
【在 g*****g 的大作中提到】 : Unsafe就是包了一堆JNI,有兴趣看cpp源码也有。 : http://stackoverflow.com/questions/6750791/source-for-native-su
|
z****e 发帖数: 54598 | 165 也没啥好抄近路的
我天天就在vert.x上写ruby
你说这个算不算异步?
算不算一个比较完美的解决方案?
python在jvm上也不是没有
但是jython的活跃程度跟jruby不能比
jruby光看网页就知道了
非常光鲜艳丽,日本人注重细节的特质
在ruby上表现得尤为明显
另外我真没找到jror,我也不知道为啥
jruby社区一个比较好的理念就是
他们希望做到,不需要更改源代码,就能直接在jruby上跑
我觉得挺好,jror还是很多人在搞的
相比之下,jython就相对冷清很多,也可能跟groovy比较活跃有关
cpp
【在 n****l 的大作中提到】 : 你这一个回复又一堆槽点。。。。 : 第一,那个rack-jruby是个最简单的echo框架,如果把ror放上面跑,比CRuby还慢,所 : 以你才会看不到ror,否则应该有个ror-jruby的,这个简单的逻辑自己没思考下就回复 : 了么; : 第二,我就知道你又转进到java上了,这里讨论是ruby python,你可以另外单开个帖 : 子讲一下java秒杀一切语言; : 第三,即使有ruby的解释器优化的再好,也改变不了ruby至今没有一个完善的、一条龙 : 的异步解决方案的事实, 或者说python下没有ror这种开发速度超过其他任何语言的框 : 架,ror下也没有python那样的兼顾开发速度和运行效率的框架 : 第四,那个benchmark你可能没仔细看,运行效率最快的还有cpp呢,按照你的回复cpp
|
z****e 发帖数: 54598 | 166 我找到的openjdk是纯粹的java代码
但是hotpsot不知道,src code比较容易找到openjdk上去
【在 g*****g 的大作中提到】 : 别扯蛋了,ConcurrentHashMap是个纯的Java实现。当然你要追究底下都用compare& : swap. 作为虚拟机,不调JNI连IO都做不了。
|
z****e 发帖数: 54598 | 167 多麻烦
直接用就好了
这种具体的impl其实毫无意义
也就是你喜欢折腾,我们做作业时候都懒得自己去写
都是直接用
Atomic
【在 D***n 的大作中提到】 : 太晚了就不继续无聊的抬杠了。 : 之所以我的这个问题有兴趣是因为我以前写过一套Concurrency库(C/汇编)。包括 : Lock-free的hash map, linked-list都做过。不过这些都是专业人士的领域,我写的是 : 非常糙的,幸运的是实践中还比较稳定。 : 看到Java 提供了 AtomicStampedReference,但是byte code列表里面只字未提 Atomic : ,呵呵,还是悄悄塞了平台依赖的glue code进去。 : http://www.ibm.com/developerworks/library/j-jtp11234/#listing1
|
z****e 发帖数: 54598 | 168 你那个grid的thread就一个
主次分明,有什么不合适的
我们当时都做出prototype来了
一点问题没有,如果有兴趣,你给钱,我们很愿意卖给你
【在 D***n 的大作中提到】 : Concurrency Hash Map是Lock-based还是Lock-free based? : Lock-based不适合游戏。这个还用我提醒你么?
|
D***n 发帖数: 6804 | 169 怎么可能就一个thread呢?你再想想。
你用Java基于Lock-based 的ConcurrencyHashMap用在游戏上不合适。
一个拿lock的thread停了大家都得憋死。
Lock-free一个thread挂了其他的thread可以继续。
【在 z****e 的大作中提到】 : 你那个grid的thread就一个 : 主次分明,有什么不合适的 : 我们当时都做出prototype来了 : 一点问题没有,如果有兴趣,你给钱,我们很愿意卖给你
|
z****e 发帖数: 54598 | 170 主次分开嘛
主线程不要被打断就行
其他的thread将state临时放在hashmap里面
然后主线程每次过去轮询并清空
所有的线程都是单向且无循环的
除了主线程,所以可以保证主线程不被打断
其他线程一定不会长期占用lock
根本不存在憋死的问题
是不是lock free,看你怎么实现
还是老话,我们测试无问题,你愿意买,我们就卖
就这么简单,有问题,我们负责解决,你负责掏钱就行
【在 D***n 的大作中提到】 : 怎么可能就一个thread呢?你再想想。 : 你用Java基于Lock-based 的ConcurrencyHashMap用在游戏上不合适。 : 一个拿lock的thread停了大家都得憋死。 : Lock-free一个thread挂了其他的thread可以继续。
|
|
|
z****e 发帖数: 54598 | 171 理论上主次线程才有可能冲突
辅线程跟辅线程之间不会有任何冲突
因为key不一样
只有辅线程和主线程才会有争抢lock的问题
但是辅线程一定会在短时间内释放掉lock
没有理由说会堵在那边,因为每一个thread都跟request绑定
除非说主线程堵了,那这个没办法
主线程堵了,你整个游戏也就挂了,重启呗
不过想不出为什么主线程会堵,lock就那么点
辅线程只有在写的时候才需要lock,而且肯定会释放
主线程要堵也就是那么一点的时间,如果运气不好正好遇上的话
实际操作中根本遇不到,android上双线程也是这么操作的
没觉得ui有多堵 |
D***n 发帖数: 6804 | 172 你这样实现的代价比Lock-free岂不是高太多?
你这个实现有很多严重的问题。
主线程和副线程的同步还是lock。某个副线程挂了主线程岂不是在那里干等?
你怎么保证副线程一定不会长期占用lock?你的副线程一个I/O操作都没有?
就算你可以不干等,但是你这么搞已经把那个ConcurrencyHaskMap给废了。
【在 z****e 的大作中提到】 : 主次分开嘛 : 主线程不要被打断就行 : 其他的thread将state临时放在hashmap里面 : 然后主线程每次过去轮询并清空 : 所有的线程都是单向且无循环的 : 除了主线程,所以可以保证主线程不被打断 : 其他线程一定不会长期占用lock : 根本不存在憋死的问题 : 是不是lock free,看你怎么实现 : 还是老话,我们测试无问题,你愿意买,我们就卖
|
D***n 发帖数: 6804 | 173 每个基于Lock的sync实现都是像你这样想的,但现实很残酷。
写这么一个像样的lib你知道有多难么?
就你根据写的这些,我不太相信你的测试程序质量。
Lock-free任意线程堵了都有别的线程make progress,无所谓主次。
【在 z****e 的大作中提到】 : 理论上主次线程才有可能冲突 : 辅线程跟辅线程之间不会有任何冲突 : 因为key不一样 : 只有辅线程和主线程才会有争抢lock的问题 : 但是辅线程一定会在短时间内释放掉lock : 没有理由说会堵在那边,因为每一个thread都跟request绑定 : 除非说主线程堵了,那这个没办法 : 主线程堵了,你整个游戏也就挂了,重启呗 : 不过想不出为什么主线程会堵,lock就那么点 : 辅线程只有在写的时候才需要lock,而且肯定会释放
|
z****e 发帖数: 54598 | 174 因为所有的辅线程都是单向的嘛
一个req塞入整个thread的周期就结束了
以后有req来,就重新建一个thread
你是不是要担心new一个object需要的代价?
放心,java在我电脑上测试,一秒可以new大概5w个thread对象
如果是server的话,就更强大了
没有任何理由说辅线程堵在这里
只有一个主线程
只有可能主辅线程之间争抢lock
要么主等辅,要么辅等主
而无论主辅都不会占用lock,必然释放lock
辅线程因为跟req绑定,所以只负责将command放到map上,就不管了
所以是单向的,致于客户端的output,那是主线程发送的req到客户端上
所以并不是一个thread绑定一个客户端,你的构架有问题,当然会有lock的冲突了
【在 D***n 的大作中提到】 : 你这样实现的代价比Lock-free岂不是高太多? : 你这个实现有很多严重的问题。 : 主线程和副线程的同步还是lock。某个副线程挂了主线程岂不是在那里干等? : 你怎么保证副线程一定不会长期占用lock?你的副线程一个I/O操作都没有? : 就算你可以不干等,但是你这么搞已经把那个ConcurrencyHaskMap给废了。
|
z****e 发帖数: 54598 | 175 其实跟卡牌用redis没啥太大区别
很多idea是共通的,只不过redis做了persistence
而一般网游不会做persistence而已
都是纯内存操作,以保证效率 |
z****e 发帖数: 54598 | 176 没啥难的
我们做得好好的
就用现有的concurrenthashmap就能完成
你非要自己造,那是你的事
你不行并不代表我们不行
【在 D***n 的大作中提到】 : 每个基于Lock的sync实现都是像你这样想的,但现实很残酷。 : 写这么一个像样的lib你知道有多难么? : 就你根据写的这些,我不太相信你的测试程序质量。 : Lock-free任意线程堵了都有别的线程make progress,无所谓主次。
|
D***n 发帖数: 6804 | 177 吹吧你就。
一套高质量的Concurrency Lib不是一般人能搞的,都是行业里的牛人,这样的人世界
上没几个。
别说你写Lib了,就是能写一套发现bug的test code都不是很容易的事。
说实话,按照你这要求,我发现我写concurrency库水平还是相当高的,哈哈哈哈。
【在 z****e 的大作中提到】 : 没啥难的 : 我们做得好好的 : 就用现有的concurrenthashmap就能完成 : 你非要自己造,那是你的事 : 你不行并不代表我们不行
|
z****e 发帖数: 54598 | 178 两个线程,争抢一个lock
注意,只有一个lock,不是两个
会不会有死锁的问题?
死锁不是有个条件要循环等待嘛?
我们这里不存在有循环等待的问题
所以不会堵
【在 D***n 的大作中提到】 : 每个基于Lock的sync实现都是像你这样想的,但现实很残酷。 : 写这么一个像样的lib你知道有多难么? : 就你根据写的这些,我不太相信你的测试程序质量。 : Lock-free任意线程堵了都有别的线程make progress,无所谓主次。
|
z****e 发帖数: 54598 | 179 神经病
谁说这个东西就一定是“高质量”的lib了?
我就是让低质量的lib也能运行得良好
这就是本事,这也是我所追求得目标
一个东西要是只能phd才能做,那还完蛋了
你以为eye online那些人有phd学位?
lol,搞笑了
做网游得一堆本科没毕业的
【在 D***n 的大作中提到】 : 吹吧你就。 : 一套高质量的Concurrency Lib不是一般人能搞的,都是行业里的牛人,这样的人世界 : 上没几个。 : 别说你写Lib了,就是能写一套发现bug的test code都不是很容易的事。 : 说实话,按照你这要求,我发现我写concurrency库水平还是相当高的,哈哈哈哈。
|
z****e 发帖数: 54598 | 180 有些网站上可以找到那些网游的制作者的不少照片什么的
妈蛋,不少人身上还有纹身
以前玉碧蒙特利尔那个我还有认识的师弟在里面
哎哟,呵呵
你愿意被吓住并不代表我也要被吓住
多了解了解就懂了
高质量,你真以为他们有多高质量?
【在 D***n 的大作中提到】 : 吹吧你就。 : 一套高质量的Concurrency Lib不是一般人能搞的,都是行业里的牛人,这样的人世界 : 上没几个。 : 别说你写Lib了,就是能写一套发现bug的test code都不是很容易的事。 : 说实话,按照你这要求,我发现我写concurrency库水平还是相当高的,哈哈哈哈。
|
|
|
D***n 发帖数: 6804 | 181 你别说了,都是一些初级设想,哥们你这水平我建议你先虚心做点相关research。
【在 z****e 的大作中提到】 : 两个线程,争抢一个lock : 注意,只有一个lock,不是两个 : 会不会有死锁的问题? : 死锁不是有个条件要循环等待嘛? : 我们这里不存在有循环等待的问题 : 所以不会堵
|
z****e 发帖数: 54598 | 182 这个有鸟毛research
你们ee的research就搞这个鸟蛋?
做网游的research?
呸
【在 D***n 的大作中提到】 : 你别说了,都是一些初级设想,哥们你这水平我建议你先虚心做点相关research。
|
D***n 发帖数: 6804 | 183 嗯,所以和你聊了会,忽然我发现我的水平其实不差,哈哈哈哈哈。
【在 z****e 的大作中提到】 : 有些网站上可以找到那些网游的制作者的不少照片什么的 : 妈蛋,不少人身上还有纹身 : 以前玉碧蒙特利尔那个我还有认识的师弟在里面 : 哎哟,呵呵 : 你愿意被吓住并不代表我也要被吓住 : 多了解了解就懂了 : 高质量,你真以为他们有多高质量?
|
z****e 发帖数: 54598 | 184 真想做research?
来来来,分布式算法
今年那个蓝胖有啥牛逼的论文?
说来听听?
你愿意educate我,我也很开心
如果你真有这个水平的话
【在 D***n 的大作中提到】 : 你别说了,都是一些初级设想,哥们你这水平我建议你先虚心做点相关research。
|
z****e 发帖数: 54598 | 185 lol
你以为你那个破烂有人用?
说说eye online打算不打算花钱买你的东西?
估计卖不出去吧?
【在 D***n 的大作中提到】 : 嗯,所以和你聊了会,忽然我发现我的水平其实不差,哈哈哈哈哈。
|
z****e 发帖数: 54598 | 186 你做的东西好像很牛逼
其实狗屁不通
没啥鸟用
就用最简单的就能搞定
你非要把它做复杂,我没办法
我觉得是浪费时间
【在 D***n 的大作中提到】 : 嗯,所以和你聊了会,忽然我发现我的水平其实不差,哈哈哈哈哈。
|
D***n 发帖数: 6804 | 187 慢慢看
http://timharris.uk/papers/2001-disc.pdf
【在 z****e 的大作中提到】 : 这个有鸟毛research : 你们ee的research就搞这个鸟蛋? : 做网游的research? : 呸
|
z****e 发帖数: 54598 | 188 lol
这不适用于这个场景呀
你自己去实现多麻烦
【在 D***n 的大作中提到】 : 慢慢看 : http://timharris.uk/papers/2001-disc.pdf
|
D***n 发帖数: 6804 | 189 那总要有人去实现吧?
没有那些狗屁research,就靠你这狗屁思路去实现?
嘴硬有毛用啊,晚安哈。
【在 z****e 的大作中提到】 : lol : 这不适用于这个场景呀 : 你自己去实现多麻烦
|
z****e 发帖数: 54598 | 190 lol
我们已经实现了
简单粗暴,你愿意做复杂,那就做去呗
【在 D***n 的大作中提到】 : 那总要有人去实现吧? : 没有那些狗屁research,就靠你这狗屁思路去实现? : 嘴硬有毛用啊,晚安哈。
|
|
|
D***n 发帖数: 6804 | 191 嗯,一上人数和复杂度立刻性能大幅下降。或者看到某人一枪打过去全体立正的奇异景
象。
没事,crash了还有goodbug世界级的failover来救你。
哈哈哈哈。
【在 z****e 的大作中提到】 : lol : 我们已经实现了 : 简单粗暴,你愿意做复杂,那就做去呗
|
z****e 发帖数: 54598 | 192 lol
你确定一定会性能大幅下降?
且不说我根本不想做这个东西
更不要说现在网游人多fps下来的多得去了
你过去骂他们吧
不过想那么远有个鸟用
八字还没一撇呢,就上来谈什么大并发
都是装逼,我前面就说了
【在 D***n 的大作中提到】 : 嗯,一上人数和复杂度立刻性能大幅下降。或者看到某人一枪打过去全体立正的奇异景 : 象。 : 没事,crash了还有goodbug世界级的failover来救你。 : 哈哈哈哈。
|
z****e 发帖数: 54598 | 193 发现你真要简单时候,你会把东西做复杂
真要你做考虑得时候,你又无脑上些简单得东西
你真是很神奇的一个物种
【在 D***n 的大作中提到】 : 嗯,一上人数和复杂度立刻性能大幅下降。或者看到某人一枪打过去全体立正的奇异景 : 象。 : 没事,crash了还有goodbug世界级的failover来救你。 : 哈哈哈哈。
|
z****e 发帖数: 54598 | 194 顺便跟你说一下哈
刚我试了下,爆了大概3000个进去
感觉没啥延迟
因为fps控制在30,然后平均过去每次间隔时间是
1000/30=33ms
33ms要把所有的units全部弄一遍,感觉也没有多困难
至少我的机器没有出现问题
客户端所有的命令都被简化,从本质上说
其实还没有ai思考所消耗的时间长
如果把电脑ai思考也放入那个grid的thread去做的话
其次因为server不需要处理图像,节省下来的各种资源实在是太宽裕了
你这3000个感觉还不如我自己自娱自乐时候爆的300个units耗资源呢
因为我自己玩的话,需要图像处理,需要塞入ai在主线程中,都比多线程吃资源
这种并发,很大一部分都交给了辅助线程
轻轻松松,如果再丢入几十g的内存,5w小问题,呵呵
用这种方式,最大的问题可能来自gc,不过gc停顿的latency还没有网络的latency的一半
完全可以忽略掉,lol,过两天去学校,我爆一个几十g内存的instance试试
跑个5w并发,感觉没啥难的
你前面说300多个连接都很困难,原因也很简单,你用tcp没有办法
网络游戏大部分都用的是udp,而且5w时eye online的最高在线记录
具体到每一个grid,估计能有5k就不错了,再细分下去,能有500就可以了
用我的方式,500个,我的mac可能都能撑得住,你自己用java写写就知道了
看具体到33ms,java能执行多少代吗,更何况ai和图像这种吃性能的部分都已经干掉了
就剩下逻辑,不要太容易
【在 D***n 的大作中提到】 : 嗯,一上人数和复杂度立刻性能大幅下降。或者看到某人一枪打过去全体立正的奇异景 : 象。 : 没事,crash了还有goodbug世界级的failover来救你。 : 哈哈哈哈。
|
z****e 发帖数: 54598 | 195 对,具体就是几十ms
确切点说,30fps完全可以接受
你自己在本机上做点测试
33ms,有至少一般16ms会被放到图像处理上去
剩下16ms,我的机器可以爆300个units
还包括ai,我们当时的prototype就是这么搞出来的
一台机器上运行不成问题
如果你把图像处理和ai全部干掉,完全是pvp的话
因为server不需要两个吃性能的东西
30ms足够你host几千个连接问题不大
我有信心
然后网络协议一定不要用tcp,否则每一次connection
你都要用内存资源去维护,垃圾,用udp
快很多,几千个我一定能搞定
你就说能出多少钱吧,广播什么都不是问题,我刚测了把
射击游戏,剥离ai和图像之后,33ms能做非常多事
主要latency在网络的io上,gc不会有啥问题
这个你要是搞不定,我们开价au$5w,绝对搞定
说到做到,如果搞不定,不收钱
人。
【在 D***n 的大作中提到】 : 我就知道你要狡辩。 : 旗牌类谈个屁,旗牌类无非开了N多局,每一局里面的人数都是局部的,人出牌下棋的 : 速度都按秒或者分钟计算。里面一个玩家出一张牌只需要考虑那一桌子的玩家。 : EVE Online 单一节点几千个玩家并发,每一秒还有几十上百个连接进进出出,每一步 : 对每一个玩家的计算结果要广播给全体几百上千个玩家,几千个玩家的结果要同步更新 : ,而且这是按几十毫秒timeframe计算的否则下一轮结果又来了,这是一回事么? : 在线FPS现在能做128个并行连接都不是很容易。你拿旗牌的思路来做这个简直是笑死人。
|
z****e 发帖数: 54598 | |
z****e 发帖数: 54598 | 197 游戏开发,主要问题和性能都是耗费在图像上
server side的所谓host server
第一没有图像处理,这个减轻太多压力,否则33ms里面一大半都是在处理图像
第二没有ai,多数都是pvp,这个也减轻不少资源压力,电脑别弄太聪明,傻瓜点好
如果难度高的话,把hp加上去就好了,其他不管,电脑控制的角色都应该比较傻瓜
第三就是udp替换tcp,不要维护具体的每一次的连接,用piggybaggy方式保证不丢包
搞定,几千个host在一个instance上绝对可以
只要内存够用,当然core越多越好,instance上爆一个16cores的instance
应该够用了,试试就知道
现在机器都很强大了,单纯逻辑代码,要耗费超过33ms,我看也难
我试试看1s能做多少事,我的电脑测了下
是1868,8968次操作吧
除以30的话,那就60w次左右的操作
当然复杂度可能会有所差异,但是初步判断过去
host 5k个并发,问题不大,我有信心能搞定
给钱我就开工 |
z****e 发帖数: 54598 | 198 60,0000/5,000
= 120个操作
足够了,都不要上server
内存问题不大,带宽网卡应该问题也不大吧
但是只要能保证主线程这个效率不被降低
host 5000有啥难的,过几天试试看
应该问题不大,过两天开个16 vcpu的instances
不过要申请另外8个vcpu,现在只有8个,不过也应该够用
我看undertow上百万并发都搞定了,虽然那个复杂度很低 |
z****e 发帖数: 54598 | 199 嘿嘿,我觉得问题不大
host 5k个并发玩家,用这种方式
找个xxlarge的instance应该就能够搞定
16个vcpus,64g内存,host 5k个玩家
就做射击游戏,互相打,应该可以
包括中途加入,退出这些
模型就是一张地图,然后你可以在上面移动
开枪,打敌人,敌人挨打后挂掉,就这么简单
当年老魏吹牛时候,全国一盘棋,那么大并发都敢吹
5k并发,这个小意思了,保证30fps,这样就不会感觉到延迟了
好就这么多,过两天试试 |
b*******s 发帖数: 5216 | 200 这个设计基本不可能顶住,重传可能很频繁,也没有意义
【在 z****e 的大作中提到】 : 难个毛 : 你那个单元就一个thread : 抓个逻辑序列,然后挨个处理 : 每个客户端接收逻辑序列时候进行比较 : 如果中间有丢包,则向服务器申请重传 : 这样就不需要用http,tcp这些容易有状态的连接 : 直接上udp就可以了 : 这就是分布式算法的一个final project的难度 : 也就是你觉得难,我们在学校时候都做了个原型出来 : 运转良好,当然会有古德霸说的failover的问题
|
|
|
z****e 发帖数: 54598 | 201 那你可以不用浪费时间了
【在 b*******s 的大作中提到】 : 这个设计基本不可能顶住,重传可能很频繁,也没有意义
|
D***n 发帖数: 6804 | 202 听起来真基动啊,我也学习学习。
就说最基本的cycle吧:
张三一枪把李四打死了被王五看见了,这事需要多少操作和多少次线程切换?
【在 z****e 的大作中提到】 : 嘿嘿,我觉得问题不大 : host 5k个并发玩家,用这种方式 : 找个xxlarge的instance应该就能够搞定 : 16个vcpus,64g内存,host 5k个玩家 : 就做射击游戏,互相打,应该可以 : 包括中途加入,退出这些 : 模型就是一张地图,然后你可以在上面移动 : 开枪,打敌人,敌人挨打后挂掉,就这么简单 : 当年老魏吹牛时候,全国一盘棋,那么大并发都敢吹 : 5k并发,这个小意思了,保证30fps,这样就不会感觉到延迟了
|
g*****g 发帖数: 34805 | 203 我受不了了,你先研究一下ConcurrencyHashMap咋实现的行不?为嘛不懂非要出来瞎喷
呢?得,我帮你把文档都列出来。你丫不懂,源码看不懂,连Google文档都不会。还做
个蛋research。
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/
ConcurrentHashMap.html
【在 D***n 的大作中提到】 : 怎么可能就一个thread呢?你再想想。 : 你用Java基于Lock-based 的ConcurrencyHashMap用在游戏上不合适。 : 一个拿lock的thread停了大家都得憋死。 : Lock-free一个thread挂了其他的thread可以继续。
|
D***n 发帖数: 6804 | 204 不sync读sync写。Sync写用lock,你哪点不懂?
【在 g*****g 的大作中提到】 : 我受不了了,你先研究一下ConcurrencyHashMap咋实现的行不?为嘛不懂非要出来瞎喷 : 呢?得,我帮你把文档都列出来。你丫不懂,源码看不懂,连Google文档都不会。还做 : 个蛋research。 : https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ : ConcurrentHashMap.html
|
g*****g 发帖数: 34805 | 205 你懂啥叫concurrency level吗?还一个拿lock的thread停了大家都得憋死。原来你连
英语都读不懂,是不是还得给你翻译?
【在 D***n 的大作中提到】 : 不sync读sync写。Sync写用lock,你哪点不懂?
|
D***n 发帖数: 6804 | 206 咱哪懂这高大上的东西啊,当然要砖家您给大家解释解释啥叫 concurrency level。这
玩意怎么影响hashmap的?
看了您的思路,我现在一点都不奇怪为啥你对failover这么痴迷了,哈哈。
【在 g*****g 的大作中提到】 : 你懂啥叫concurrency level吗?还一个拿lock的thread停了大家都得憋死。原来你连 : 英语都读不懂,是不是还得给你翻译?
|
g*****g 发帖数: 34805 | 207 尼玛错了死不承认,有劲吗?这文档又不是前面没给你看过。不懂concurrency level
居然还拿ConcurrentHashMap出来举例子,真是奇葩。
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/
ConcurrentHashMap.html
第一句话就说
A hash table supporting full concurrency of retrievals and adjustable
expected concurrency for updates.
你丫来给解释一下什么叫做adjustable expected concurrency for updates,为啥一
个拿lock的thread停了大家都得憋死,所有缺省的constructor都有concurrencyLevel=
16是啥意思。
【在 D***n 的大作中提到】 : 咱哪懂这高大上的东西啊,当然要砖家您给大家解释解释啥叫 concurrency level。这 : 玩意怎么影响hashmap的? : 看了您的思路,我现在一点都不奇怪为啥你对failover这么痴迷了,哈哈。
|
D***n 发帖数: 6804 | 208 我不是说了我不懂么?不是让你来解释这么高大上的概念么。
concurrencyLevel=16不懂啊,不过这么高大上的概念,这么高端的服务,16数字不咋
样,咱改成888888如何?
concurrencyLevel=
【在 g*****g 的大作中提到】 : 尼玛错了死不承认,有劲吗?这文档又不是前面没给你看过。不懂concurrency level : 居然还拿ConcurrentHashMap出来举例子,真是奇葩。 : https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ : ConcurrentHashMap.html : 第一句话就说 : A hash table supporting full concurrency of retrievals and adjustable : expected concurrency for updates. : 你丫来给解释一下什么叫做adjustable expected concurrency for updates,为啥一 : 个拿lock的thread停了大家都得憋死,所有缺省的constructor都有concurrencyLevel= : 16是啥意思。
|
b*******s 发帖数: 5216 | |
g*****g 发帖数: 34805 | 210 只要你capacity设得大一点,concurrencyLevel=888888当然没问题。你丫不懂没啥,
别错了还阴阳怪气行不?
【在 D***n 的大作中提到】 : 我不是说了我不懂么?不是让你来解释这么高大上的概念么。 : concurrencyLevel=16不懂啊,不过这么高大上的概念,这么高端的服务,16数字不咋 : 样,咱改成888888如何? : : concurrencyLevel=
|
|
|
D***n 发帖数: 6804 | 211 这还阴阳怪气?这叫循循善诱,让你自己好好去理解一下。难道你想让我上来直接猛抽
你脸你就爽了?做人别这么下贱!
我写个888888目的是测试你是否明白conrrencyLevel具体咋回事。
结果显然你根本不明白,这数已经超预设的limit了。你要不手工改limit要不降低数值
。而且一般系统预设也就几万个thread做upper limit。号称888888当然没问题除了显
示你愚蠢以外
真没意义。
就你这臭水平,还百万在线用户呢!怪不得上来就没完没了地强调failover。
【在 g*****g 的大作中提到】 : 只要你capacity设得大一点,concurrencyLevel=888888当然没问题。你丫不懂没啥, : 别错了还阴阳怪气行不?
|
g*****g 发帖数: 34805 | 212 你丫真是个傻逼,constructor自然有 capacity这个参数,你设 concurrency level想
不设 capacity 都不行。你丫狗屁不懂就知道死撑。作为语言是不假设硬件上限的,
888888看着很多,但要是一个巨牛逼的机器呢?为啥不能有那么多线程。20年后呢?
尼玛前面号称一个线程能锁死所有,现在又来满地打滚,你真够不要脸的
【在 D***n 的大作中提到】 : 这还阴阳怪气?这叫循循善诱,让你自己好好去理解一下。难道你想让我上来直接猛抽 : 你脸你就爽了?做人别这么下贱! : 我写个888888目的是测试你是否明白conrrencyLevel具体咋回事。 : 结果显然你根本不明白,这数已经超预设的limit了。你要不手工改limit要不降低数值 : 。而且一般系统预设也就几万个thread做upper limit。号称888888当然没问题除了显 : 示你愚蠢以外 : 真没意义。 : 就你这臭水平,还百万在线用户呢!怪不得上来就没完没了地强调failover。
|
z****e 发帖数: 54598 | 213 激动啥,我已经从学校回来了
弄了一个16vcpu,32g的instance
然后我们爆了3000个threads
用另外20个instances,每个是10vcpu,每个instance爆15个threads
每个thread控制一个unit,互相射
然后把hp调高,这样短时间内不会射死对方,同时用随机数降低活动频率
如果不控制,电脑计算飞快,很快就会发送一堆请求,人脑没那么灵活
.1秒能发送一个命令就不错了
最后并没有出现什么延迟的问题
server side跟我预想的一样,因为不需要处理图像和ai
所以复杂度大幅降低,33ms的主循环可以搞定
绝大多数时间在处理网络的io上,广播时候用async做点处理
这样循环就不会被打断,真正的主线程处理逻辑操作需要时间其实很少
33ms没啥问题,当然复杂度越高,能支持的并发数也就越少
你可以说我们做的游戏复杂度偏低
但是我不认为网游server需要多高的复杂度,哪怕是3d建模,也不会有多复杂
x,y,z三个维度,没啥难的,你非要做复杂来,那没办法
我搞定鸟,下次把这个写在我们的项目说明上
你不信就算了,我对这个话题已经没啥兴趣了
你就是嘴巴上扯蛋,实践动手,没有
talk is cheap,不浪费时间鸟
张三开枪- command,发送一个req到server
server接受到之后,放到hashmap中
主循环从hashmap中取出后,执行,最后得出结论李四die
然后用异步广播给所有的client,李四die
张三李四王五收到广播后,用动画显示李四die
移动,扣hp,die这些都简化成数字,比如1表示移动,然后跟着两个数字
20,30表示移动到x=20,y=30的坐标上,扣hp用2表示,2 30表示扣除30点hp
die用0表示,等等,这套都很熟悉了,这样简化下去,3000个角色
平均过去,哪怕3000个都在动,大概每次要发送1w个数字给客户端
线程不需要切换,把每一个req变成一个thread,其实可以pool
不过懒得做,等gc出现效率问题时候再说
就跟一般的web server很接近了,只不过多了output广播这一环节
3000个并发,*2=6000个并发,完全可以搞定撒
最后我发现,用这种方式搞了之后,其实跟一般的棋牌3000并发没啥本质区别
就是棋牌share了session,放在某个数据库里,而这里把数据临时放在内存中
io上的话,input应该差不太多,output压力会大不少
33ms内发送3000个udp请求,试了下,也没出啥问题,可以搞定
最关键的就是output,只要3000个客户端保证能在33ms内接受到新的改变
就没问题,不过比较头疼的是每次发送的数据可能会比较大,3000个,哪怕再简化
几千个数字还是要发的,这就给33ms内发送这么多东西带来了不少压力
光串行怕来不及,必需通过并行解决,必需用异步,这样其他cpu能够派上用场
我用我的mac,发送一万个数字的报文,3000次串行的话,大概用了38ms或者41m
大概就这个数量级
并行的话,直接除以10以上的数字,33ms内广播完毕,完全没有问题,10ms内会搞定
16个vcpu的话,input,output都搞定了之后,基本上就没啥问题鸟
剩下的问题就是threads会频繁建立和销毁,这样会导致输入和输出被gc打断
如果gc的heap调得太多的话,gc停顿会比较久,这个其实将threads分别pool起来就好了
然后还可以根据人数,自动调整threads数量,java有线程池类可以直接用
不过我把heap调低,让小gc更加频繁,尽量不触发大gc
小gc大概也就是在10ms内搞定,如果用g1的话,效率更高了
因为主要都是threads,这种类型比较单一,而且reference少,所以小gc完全可以判断
出来
基本上没有触发大gc,能够满足俺的要求,另外就是,我后来计算了下
与其每次发送改变,比如张三开枪,李四扣血这种
其实你把整个model编成数字发送过去,其实也差不多就是一万多个数字每次
这样做的好处就是,一旦出现丢包,中间的包可以直接抛弃,就看最新的model怎么说
最后还有一个,其实不用控制在30fps,因为这个是改变上的敏感
20fps其实也完全够用,一般人超过20fps的刷新频率,就感觉不出来延迟了
但是这仅仅是变化上的差异,眼睛会更敏感点,如果刷新fps太低眼睛会感觉到难受
所以客户端的图像fps可以调整到60甚至90,但是model的fps,用20或者30就好了
最后还有一个优化措施就是浓雾,你不需要把所有的model都发送给客户端
你可以把这个角色周边的消息发送给客户端,剩下的就不发了,用浓雾遮盖
这样其实每次发送的model都非常小,平均过去,3k个数字足够你用了
总得来说有很多种方式予以优化,但是基本上都懒得用了,因为已经满足要求鸟
【在 D***n 的大作中提到】 : 听起来真基动啊,我也学习学习。 : 就说最基本的cycle吧: : 张三一枪把李四打死了被王五看见了,这事需要多少操作和多少次线程切换?
|
z****e 发帖数: 54598 | 214 浓雾那个模式必需用后一种发送model的方法
不能仅发送改变的msg,后一种理论上应该是更先进的
因为同时可以防止作弊,否则把改变发送过去
中间的同步会有各种问题,多机器的同步也是分布式算法很重要的一个topic
不过这些都是扯蛋,做到这样已经足够用了
其实技术不重要,对于游戏来说,美工的重要性要大上n倍
程序员到处都可以找得到,但是好美工,非常难找 |
D***n 发帖数: 6804 | 215 1)我就知道你有此狡辩,随便找个常数测试一下,立刻就被抓了现行。气急败坏,还
开始扯20年后巨牛逼的机器,哈哈哈哈。这个事情我早就料到了,所以:
2)这个同时也可以测试出来你有没有看过具体代码,你看了自然会发现即便是巨牛逼
机器,设高了也有严重副作用以至于牛逼机器会直接S_B。具体是啥自己去看(家庭作
业)
3)那个concurrency是用来控制hask-linklist的颗粒度以提高并发能力的,如果一个
线程在某个segment拿到锁后suspended/deadlock,其他所有访问资源的其他相关线程
照样无法写入那个segment。Lock-free确保访问特定资源的相关线程每次至少有一个会
make progress。
一个口口声声要人去看文档代码的,原来自己根本就不看,哈哈哈哈哈。
【在 g*****g 的大作中提到】 : 你丫真是个傻逼,constructor自然有 capacity这个参数,你设 concurrency level想 : 不设 capacity 都不行。你丫狗屁不懂就知道死撑。作为语言是不假设硬件上限的, : 888888看着很多,但要是一个巨牛逼的机器呢?为啥不能有那么多线程。20年后呢? : 尼玛前面号称一个线程能锁死所有,现在又来满地打滚,你真够不要脸的
|
D***n 发帖数: 6804 | 216 顺便goodbug,请你看好了代码,文档,搞明白concurrencyLevel到底是怎么运作的再
来回贴。我自己实现过concurrencyhashmap,所以你到底看没看我有各种方法能测试出
来。
再不老实,我就直接拿下面你自己的话抽你了。
【在 g*****g 的大作中提到】 : 我受不了了,你先研究一下ConcurrencyHashMap咋实现的行不?为嘛不懂非要出来瞎喷 : 呢?得,我帮你把文档都列出来。你丫不懂,源码看不懂,连Google文档都不会。还做 : 个蛋research。 : https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ : ConcurrentHashMap.html
|
D***n 发帖数: 6804 | 217 一个真实例子:
Counter-strike里面的Ak-47设定的是600RPM,意味着连发的时候每秒10发子弹。
移动中扫射,不谈别的,光是发射子弹位置的指令就是0.1秒一个了。而且这个发射位
置和时间基本是随机的。
请更现实地估计情况。
然后把hp调高,这样短时间内不会射死对方,同时用随机数降低活动频率
如果不控制,电脑计算飞快,很快就会发送一堆请求,人脑没那么灵活
.1秒能发送一个命令就不错了
【在 z****e 的大作中提到】 : 浓雾那个模式必需用后一种发送model的方法 : 不能仅发送改变的msg,后一种理论上应该是更先进的 : 因为同时可以防止作弊,否则把改变发送过去 : 中间的同步会有各种问题,多机器的同步也是分布式算法很重要的一个topic : 不过这些都是扯蛋,做到这样已经足够用了 : 其实技术不重要,对于游戏来说,美工的重要性要大上n倍 : 程序员到处都可以找得到,但是好美工,非常难找
|
z****e 发帖数: 54598 | 218 cs并发数就那么点,100个顶天了
你玩过3000人的cs局?
你又开始混淆概念了是吧?
【在 D***n 的大作中提到】 : 一个真实例子: : Counter-strike里面的Ak-47设定的是600RPM,意味着连发的时候每秒10发子弹。 : 移动中扫射,不谈别的,光是发射子弹位置的指令就是0.1秒一个了。而且这个发射位 : 置和时间基本是随机的。 : 请更现实地估计情况。 : : 然后把hp调高,这样短时间内不会射死对方,同时用随机数降低活动频率 : 如果不控制,电脑计算飞快,很快就会发送一堆请求,人脑没那么灵活 : .1秒能发送一个命令就不错了
|
z****e 发帖数: 54598 | 219 另外,你说的这个一点都不难
加一个math.random而已了
难个毛啊
已经说了,主model的fps是20或者30
如果是20的话,最低限度是0.05s执行一个命令
30的话就是0.03s执行一个命令
你说0.1s,lol
你丫就是没写过,就知道瞎78吹
【在 D***n 的大作中提到】 : 一个真实例子: : Counter-strike里面的Ak-47设定的是600RPM,意味着连发的时候每秒10发子弹。 : 移动中扫射,不谈别的,光是发射子弹位置的指令就是0.1秒一个了。而且这个发射位 : 置和时间基本是随机的。 : 请更现实地估计情况。 : : 然后把hp调高,这样短时间内不会射死对方,同时用随机数降低活动频率 : 如果不控制,电脑计算飞快,很快就会发送一堆请求,人脑没那么灵活 : .1秒能发送一个命令就不错了
|
g*****g 发帖数: 34805 | 220 是那个傻逼说一个线程锁住整个 map 的?说这个的死全家就是了。你不懂也没啥的,
尼玛死撑到这份上还有啥可争的。
【在 D***n 的大作中提到】 : 1)我就知道你有此狡辩,随便找个常数测试一下,立刻就被抓了现行。气急败坏,还 : 开始扯20年后巨牛逼的机器,哈哈哈哈。这个事情我早就料到了,所以: : 2)这个同时也可以测试出来你有没有看过具体代码,你看了自然会发现即便是巨牛逼 : 机器,设高了也有严重副作用以至于牛逼机器会直接S_B。具体是啥自己去看(家庭作 : 业) : 3)那个concurrency是用来控制hask-linklist的颗粒度以提高并发能力的,如果一个 : 线程在某个segment拿到锁后suspended/deadlock,其他所有访问资源的其他相关线程 : 照样无法写入那个segment。Lock-free确保访问特定资源的相关线程每次至少有一个会 : make progress。 : 一个口口声声要人去看文档代码的,原来自己根本就不看,哈哈哈哈哈。
|
|
|
z****e 发帖数: 54598 | 221 丫还停留在hashtable的档次上
就这样还用chinglish说自己做过concurrencyhashmap
妈蛋,连名字都弄错,还写过,fortran也给写成fortain
编程是体育老师教的估计,呵呵
【在 g*****g 的大作中提到】 : 是那个傻逼说一个线程锁住整个 map 的?说这个的死全家就是了。你不懂也没啥的, : 尼玛死撑到这份上还有啥可争的。
|
D***n 发帖数: 6804 | 222 对,这是哪个傻B说一个线程锁住整个Map的,反正到目前为止我就看到你一个。
请别玩弄文字游戏,请别悄悄篡改他人原意,看不懂是某些不看文档的人傻B。
再说了,一个线程不能锁住整个concurrencyhashmap?你再想想?我要给你一个例子,
你是不是承认你是个傻B死全家?
【在 g*****g 的大作中提到】 : 是那个傻逼说一个线程锁住整个 map 的?说这个的死全家就是了。你不懂也没啥的, : 尼玛死撑到这份上还有啥可争的。
|
g*****g 发帖数: 34805 | 223 尼玛有人为了死撑不惜死全家,真他妈牛逼。
发信人: Decon (Decon), 信区: Programming
标 题: Re: 用python写多线程。刘姥姥都笑了
发信站: BBS 未名空间站 (Wed Dec 3 01:37:09 2014, 美东)
怎么可能就一个thread呢?你再想想。
你用Java基于Lock-based 的ConcurrencyHashMap用在游戏上不合适。
一个拿lock的thread停了大家都得憋死。
Lock-free一个thread挂了其他的thread可以继续。
【在 D***n 的大作中提到】 : 对,这是哪个傻B说一个线程锁住整个Map的,反正到目前为止我就看到你一个。 : 请别玩弄文字游戏,请别悄悄篡改他人原意,看不懂是某些不看文档的人傻B。 : 再说了,一个线程不能锁住整个concurrencyhashmap?你再想想?我要给你一个例子, : 你是不是承认你是个傻B死全家?
|
D***n 发帖数: 6804 | 224 chinglish是什么单词?你的小学英语老师难道没告诉你该大写的不大写是拼写错误吗?
zhaoce和goodbug还真是两个奇葩id,一个自己从不看文档却说别人不看文档,一个自
己英语拼写这么烂还有脸去讨论别人的拼写。
【在 z****e 的大作中提到】 : 丫还停留在hashtable的档次上 : 就这样还用chinglish说自己做过concurrencyhashmap : 妈蛋,连名字都弄错,还写过,fortran也给写成fortain : 编程是体育老师教的估计,呵呵
|
D***n 发帖数: 6804 | 225 这是哪个傻B把这段话理解成为“一个线程锁住整个Map的”
傻B看不懂请再看几遍文档。
【在 g*****g 的大作中提到】 : 尼玛有人为了死撑不惜死全家,真他妈牛逼。 : 发信人: Decon (Decon), 信区: Programming : 标 题: Re: 用python写多线程。刘姥姥都笑了 : 发信站: BBS 未名空间站 (Wed Dec 3 01:37:09 2014, 美东) : 怎么可能就一个thread呢?你再想想。 : 你用Java基于Lock-based 的ConcurrencyHashMap用在游戏上不合适。 : 一个拿lock的thread停了大家都得憋死。 : Lock-free一个thread挂了其他的thread可以继续。
|
g*****g 发帖数: 34805 | 226 LOL,人至贱则无敌。这是技术板块,你那八区的本事还是省省吧。
【在 D***n 的大作中提到】 : 这是哪个傻B把这段话理解成为“一个线程锁住整个Map的” : 傻B看不懂请再看几遍文档。
|
D***n 发帖数: 6804 | 227 傻B你看好了,你这臭水平真的比zhaoce还不如。随便给你一个例子
HashMap里面某个Segment里面存有某个共享对象的ref counter,每个thread在开始结
束的时候都要申请以及释放相关引用。好,这时有个thread拿起了segment锁准备执行
计数器更新,但是出于某个原因什么事都没干。那段时间所有的thread都无法新建退出
。但是lock-free情况下,某个thread idle了其他thread可以继续使用ref counter。
这个事情写的时候一不小心就会发生,当然像你这个傻B是无法想像具体场景的。
居然敢添脸吹嘘自己写过百万用户级别的程序,骗子!!!!
【在 g*****g 的大作中提到】 : LOL,人至贱则无敌。这是技术板块,你那八区的本事还是省省吧。
|
g*****g 发帖数: 34805 | 228 傻逼恼羞成怒了?你干脆说这个ConcurrentHashMap只有一个entry, 所有线程都要更新
这个entry然后拿到锁的线程没响应不就完了。那你还要ConcurrentHashMap干啥?为了
不死全家你就装傻逼程序员是吧?
【在 D***n 的大作中提到】 : 傻B你看好了,你这臭水平真的比zhaoce还不如。随便给你一个例子 : HashMap里面某个Segment里面存有某个共享对象的ref counter,每个thread在开始结 : 束的时候都要申请以及释放相关引用。好,这时有个thread拿起了segment锁准备执行 : 计数器更新,但是出于某个原因什么事都没干。那段时间所有的thread都无法新建退出 : 。但是lock-free情况下,某个thread idle了其他thread可以继续使用ref counter。 : 这个事情写的时候一不小心就会发生,当然像你这个傻B是无法想像具体场景的。 : 居然敢添脸吹嘘自己写过百万用户级别的程序,骗子!!!!
|
D***n 发帖数: 6804 | 229
【在 D***n 的大作中提到】 : 傻B你看好了,你这臭水平真的比zhaoce还不如。随便给你一个例子 : HashMap里面某个Segment里面存有某个共享对象的ref counter,每个thread在开始结 : 束的时候都要申请以及释放相关引用。好,这时有个thread拿起了segment锁准备执行 : 计数器更新,但是出于某个原因什么事都没干。那段时间所有的thread都无法新建退出 : 。但是lock-free情况下,某个thread idle了其他thread可以继续使用ref counter。 : 这个事情写的时候一不小心就会发生,当然像你这个傻B是无法想像具体场景的。 : 居然敢添脸吹嘘自己写过百万用户级别的程序,骗子!!!!
|
g*****g 发帖数: 34805 | 230 你的所谓这种一不小心会发生的叫做bug,一个类库写得再好,不能阻止像你这样的傻
逼错误使用。但因为你这样的傻逼够傻逼,所以无数应用正在使用的JDK类库就不能用
,就只能是你这种傻逼才能想出的逻辑了。
【在 D***n 的大作中提到】
|
|
|
D***n 发帖数: 6804 | 231 傻逼才会像你这么回答。除了说明你是个没写过百万在线用户的骗子还能说明什么呢?
多个线程共享一个对象这是你能从头到尾完全控制的?你是不是除了hello world以外
就没写过别的程序?
【在 g*****g 的大作中提到】 : 你的所谓这种一不小心会发生的叫做bug,一个类库写得再好,不能阻止像你这样的傻 : 逼错误使用。但因为你这样的傻逼够傻逼,所以无数应用正在使用的JDK类库就不能用 : ,就只能是你这种傻逼才能想出的逻辑了。
|
g*****g 发帖数: 34805 | 232 我只知道那里用错了就fix哪里,你这种因噎废食的傻逼逻辑真是第一次听说。按你的
逻辑因为一个线程就可能锁死整个数据库,所以数据库不能用。你丫说得越多越丢人。
【在 D***n 的大作中提到】 : 傻逼才会像你这么回答。除了说明你是个没写过百万在线用户的骗子还能说明什么呢? : 多个线程共享一个对象这是你能从头到尾完全控制的?你是不是除了hello world以外 : 就没写过别的程序?
|
D***n 发帖数: 6804 | 233 我知道你的fix,不就是多个DC failover无限重启么?
顺便,你下面这话又丢人了,你是不是又想我用一个例子抽你了?
【在 g*****g 的大作中提到】 : 我只知道那里用错了就fix哪里,你这种因噎废食的傻逼逻辑真是第一次听说。按你的 : 逻辑因为一个线程就可能锁死整个数据库,所以数据库不能用。你丫说得越多越丢人。
|
g*****g 发帖数: 34805 | 234 你丫这种外行想抽我,弄了多少笑料了已经?当然你不是第一个,你不会是魏老师的马
甲吧?
【在 D***n 的大作中提到】 : 我知道你的fix,不就是多个DC failover无限重启么? : 顺便,你下面这话又丢人了,你是不是又想我用一个例子抽你了?
|
D***n 发帖数: 6804 | 235
【在 g*****g 的大作中提到】 : LOL,人至贱则无敌。这是技术板块,你那八区的本事还是省省吧。
|
w**z 发帖数: 8232 | 236 这不关concurrenthashmap 的事吧。你这一个key,要共享,什么数据结构都没用吧。
【在 D***n 的大作中提到】 : 傻B你看好了,你这臭水平真的比zhaoce还不如。随便给你一个例子 : HashMap里面某个Segment里面存有某个共享对象的ref counter,每个thread在开始结 : 束的时候都要申请以及释放相关引用。好,这时有个thread拿起了segment锁准备执行 : 计数器更新,但是出于某个原因什么事都没干。那段时间所有的thread都无法新建退出 : 。但是lock-free情况下,某个thread idle了其他thread可以继续使用ref counter。 : 这个事情写的时候一不小心就会发生,当然像你这个傻B是无法想像具体场景的。 : 居然敢添脸吹嘘自己写过百万用户级别的程序,骗子!!!!
|
D***n 发帖数: 6804 | 237 lock-free大概是这样玩的,以intel的DCAS(双字长CAS)为例:
do
{
读取老的key+一个ver号组成的双字长到本地
根据老key做相关操作,生成新key
ver加1
} while ! DCAS(共享地址,老key+ver,新key+ver)
DCAS 一般是双倍内存地址长度,64位下是128位原子交换。ver用于防止ABA。
基本意思是说比如N个thread都试图写这个地址,如果do/while期间被别的thread改了
,那么放弃这次操作。这个从理论上证明了,不管每个thread的执行情况如何,每次总
有一个active的会在DCAS那里操作成功。
DCAS单次成本比lock贵,所以你会看到Java那些有锁的有时速度反而快。
【在 w**z 的大作中提到】 : 这不关concurrenthashmap 的事吧。你这一个key,要共享,什么数据结构都没用吧。
|
z****e 发帖数: 54598 | 238 好,这时有个thread拿起了segment锁准备执行
计数器更新,但是出于某个原因什么事都没干。
lol
搞笑了,那你怎么不设想一下外星人入侵之后
所有的thread都罢工不干了呢?
我还真没有遇到过,什么某个thread拿起lock不执行的说法
你上次遇到的让机器执行而不执行,4 no reason是什么时候?
这种几率连亿万份之一都说不上,而且毕竟这只是一个grid
你这个grid挂了,其他grid也跟着挂?
搞笑了,其他grid有其他自己的thread,到时候再重启不就行了?
更何况,你每个grid就一个thread,要是这个thread出于某种莫名的理由罢工的话
你该死不一样死?
讨论这个纯粹浪费时间,你丫就是黔驴技穷了,就知道瞎喷
代码我都写完了,测试都测完了,你丫除了瞎吹自己写过还有什么可说的?
现在连scenario让你想都想不出来,还要寄托于未知原因
你有这功夫,不如去灌点垃圾paper,没准还能骗到点稿费
在这里扯这个蛋有毛用,浪费时间
【在 D***n 的大作中提到】 : 傻B你看好了,你这臭水平真的比zhaoce还不如。随便给你一个例子 : HashMap里面某个Segment里面存有某个共享对象的ref counter,每个thread在开始结 : 束的时候都要申请以及释放相关引用。好,这时有个thread拿起了segment锁准备执行 : 计数器更新,但是出于某个原因什么事都没干。那段时间所有的thread都无法新建退出 : 。但是lock-free情况下,某个thread idle了其他thread可以继续使用ref counter。 : 这个事情写的时候一不小心就会发生,当然像你这个傻B是无法想像具体场景的。 : 居然敢添脸吹嘘自己写过百万用户级别的程序,骗子!!!!
|
z****e 发帖数: 54598 | 239 lol
没办法
我用拼音的,所以大写比较麻烦
过来咬我呀
吗?
【在 D***n 的大作中提到】 : chinglish是什么单词?你的小学英语老师难道没告诉你该大写的不大写是拼写错误吗? : zhaoce和goodbug还真是两个奇葩id,一个自己从不看文档却说别人不看文档,一个自 : 己英语拼写这么烂还有脸去讨论别人的拼写。
|
z****e 发帖数: 54598 | 240 lol
解释这么多
给你一个名词
就是checking嘛
如果你对transaction机制有所了解的话
这个东西早被人做烂了
我还以为是啥高大上的牛逼算法呢
原来就这破烂?
哎哟,你不说我还忘记了
这个逻辑用java一样实现
不用c我一样可以做出来
但是这个性能上的提升十分有限
除了装逼没鸟用,尤其是内存
如果我没记错的话,cassandra等nosql用得比较多
关于这种transaction的判断
有三种我记得,forward checking, backchecking还有一什么叉叉
忘了,一般因为硬盘上这种东西比较容易发生错误
所以主要是persistence时候用,内存不搞这个
内存中的操作以简化线程机制为主,只有分布式存储才会有这种问题
因为无法简化线程和进程之间的冲突,它一定有冲突
原理其实也很简单,就是用一个time stamp来替换lock
当你读的时候,看一下time stamp,然后当你update的时候
另外写一块,完成之后,看原来的time stamp是否被修改过
如果没有,直接用一个原子操作,把ref修改到新的地址块中去
实践中,只有nosql和db等persistence才会这么搞
因为并发冲突的确存在,而在内存中,基本上都不这么搞
因为你说的什么突然发生某个原因,导致thread罢工的可能性实在是太低
你要是去琢磨这种东西,可以,我前面说了,要做什么write ahead log之类的
你的内存使用会迅速增加,十倍吧,各种扯蛋,db就很喜欢做这种事
结果后来人们发现,90%的时间其实都是对付一些小概率事件
干脆不鸟这些小概率事件会更好,这就是nosql能够一夜之间迅速推广的原因
你这就是一装逼,其实没鸟东西,把大量时间投入在一些很trival的东西上
还洋洋自得,自以为是
【在 D***n 的大作中提到】 : lock-free大概是这样玩的,以intel的DCAS(双字长CAS)为例: : do : { : 读取老的key+一个ver号组成的双字长到本地 : 根据老key做相关操作,生成新key : ver加1 : } while ! DCAS(共享地址,老key+ver,新key+ver) : DCAS 一般是双倍内存地址长度,64位下是128位原子交换。ver用于防止ABA。 : 基本意思是说比如N个thread都试图写这个地址,如果do/while期间被别的thread改了 : ,那么放弃这次操作。这个从理论上证明了,不管每个thread的执行情况如何,每次总
|
|
|
z****e 发帖数: 54598 | 241 如果非要实现这套逻辑的话
java concurrency那个pkg里面有一个
copy&write array list
那个逻辑就跟这个很接近了
然后你根据concurrent hashmap的实现
用hashmap+copy&write array list组合
用copy&write arraylist来替换原来map里面的list
map的实现就是array+list
就可以做出这种东西来,不过内存使用会增加不少
本来concurrent hashmap就已经很吃内存了
就比一般的hashtable要吃大概10倍甚至更多内存
如果你再凑上copy&write arraylist那就100倍吧
其实没鸟用,现实中你要是花这么多时间去做这种鸟事
不是装逼就是扯蛋 |
D***n 发帖数: 6804 | 242
【在 g*****g 的大作中提到】 : LOL,人至贱则无敌。这是技术板块,你那八区的本事还是省省吧。
|
z****e 发帖数: 54598 | 243 lol
告诉你原因了
你又不敢接受
【在 D***n 的大作中提到】
|
D***n 发帖数: 6804 | 244 你这里已经彻底错了,你下面这个机制里是有bug的。
原理其实也很简单,就是用一个time stamp来替换lock
当你读的时候,看一下time stamp,然后当你update的时候
另外写一块,完成之后,看原来的time stamp是否被修改过
如果没有,直接用一个原子操作,把ref修改到新的地址块中去
【在 z****e 的大作中提到】 : lol : 告诉你原因了 : 你又不敢接受
|
z****e 发帖数: 54598 | 245 如果要用那套扯蛋逻辑
完全弃用concurrenthashmap
直接用copy&write arraylist
每一个thread都往list上add就好了
每次主线程直接读list
制造一个temp list,然后addAll并removeAll
就lock free了,那个list会在读的时候
自动生成一个snapshot,然后把其他thread的add操作
短暂寄存在另外一边,等主线程完成之后,再add回来
这就是lock free了,如果非要这么做的话 |
z****e 发帖数: 54598 | 246 lol
这就是现行体制
不信你说的
【在 D***n 的大作中提到】 : 你这里已经彻底错了,你下面这个机制里是有bug的。 : : 原理其实也很简单,就是用一个time stamp来替换lock : 当你读的时候,看一下time stamp,然后当你update的时候 : 另外写一块,完成之后,看原来的time stamp是否被修改过 : 如果没有,直接用一个原子操作,把ref修改到新的地址块中去
|
D***n 发帖数: 6804 | 247 NO, 你这个机制还是有问题,精神可嘉,但是搞成民科就不好了。
Lock-free hash map有专门的 JavaLib,你自己去看看怎么弄的。
【在 z****e 的大作中提到】 : 如果要用那套扯蛋逻辑 : 完全弃用concurrenthashmap : 直接用copy&write arraylist : 每一个thread都往list上add就好了 : 每次主线程直接读list : 制造一个temp list,然后addAll并removeAll : 就lock free了,那个list会在读的时候 : 自动生成一个snapshot,然后把其他thread的add操作 : 短暂寄存在另外一边,等主线程完成之后,再add回来 : 这就是lock free了,如果非要这么做的话
|
z****e 发帖数: 54598 | 248 你做了什么?
我代码都写完了,测试都测完了
瓶颈在哪里都弄清楚了
你还在这种狗屎事情上纠结
假设个scenario,连原因都未知
还有你这样的,你学艺术的吗?
你干脆假设主thread挂了,什么事情都over了
还聊啥?你那一个grid就一个thread
那个thread挂了咋办?
【在 D***n 的大作中提到】 : 你这里已经彻底错了,你下面这个机制里是有bug的。 : : 原理其实也很简单,就是用一个time stamp来替换lock : 当你读的时候,看一下time stamp,然后当你update的时候 : 另外写一块,完成之后,看原来的time stamp是否被修改过 : 如果没有,直接用一个原子操作,把ref修改到新的地址块中去
|
z****e 发帖数: 54598 | 249 lol
你说说哪里有问题呀?
【在 D***n 的大作中提到】 : NO, 你这个机制还是有问题,精神可嘉,但是搞成民科就不好了。 : Lock-free hash map有专门的 JavaLib,你自己去看看怎么弄的。
|
D***n 发帖数: 6804 | 250 goodbug是你的马甲吧。
你们两个咋性格都这么贱,我要稍微让了点,停止抽你们脸,就在那里浑身不自在上窜
下跳。
你先把代码和测试代码上传到github让我们瞻仰一下。
放心,我100%不会抄袭使用你的,哈哈哈哈哈。
【在 z****e 的大作中提到】 : 你做了什么? : 我代码都写完了,测试都测完了 : 瓶颈在哪里都弄清楚了 : 你还在这种狗屎事情上纠结 : 假设个scenario,连原因都未知 : 还有你这样的,你学艺术的吗? : 你干脆假设主thread挂了,什么事情都over了 : 还聊啥?你那一个grid就一个thread : 那个thread挂了咋办?
|
|
|
z****e 发帖数: 54598 | 251 lol
不是
你要是不信,赌死全家
给你一个警告
不要造谣不要散谣,否则我帮你死全家
我干嘛上传代码?
有病么?逻辑在那边,你要是不懂实现
那不是我的问题
【在 D***n 的大作中提到】 : goodbug是你的马甲吧。 : 你们两个咋性格都这么贱,我要稍微让了点,停止抽你们脸,就在那里浑身不自在上窜 : 下跳。 : 你先把代码和测试代码上传到github让我们瞻仰一下。 : 放心,我100%不会抄袭使用你的,哈哈哈哈哈。
|
D***n 发帖数: 6804 | 252 没有不信,只是这么高大上的东西我不懂啊,要认真学习学习。
你程序不传,让我们看看测试程序总可以吧?
【在 z****e 的大作中提到】 : lol : 不是 : 你要是不信,赌死全家 : 给你一个警告 : 不要造谣不要散谣,否则我帮你死全家 : 我干嘛上传代码? : 有病么?逻辑在那边,你要是不懂实现 : 那不是我的问题
|
z****e 发帖数: 54598 | 253 顺便说一下
我没听说什么non blocking hashmap
java的hashmap本身就不是blocking
non个p
我只听说过non blocking hashtable
但是性能提升十分有限
因为对于这个scenario,hashmap本身并不是冲突十分厉害的地方
用concurrenthashmap并不会造成拥堵
我前面已经说了,主要瓶颈在广播上
如果保证33ms内把数据发送到3000个客户端
这个才是最麻烦的,input根本不是问题
逻辑部分也不是问题
【在 D***n 的大作中提到】 : goodbug是你的马甲吧。 : 你们两个咋性格都这么贱,我要稍微让了点,停止抽你们脸,就在那里浑身不自在上窜 : 下跳。 : 你先把代码和测试代码上传到github让我们瞻仰一下。 : 放心,我100%不会抄袭使用你的,哈哈哈哈哈。
|
z****e 发帖数: 54598 | 254 lol
我不
逻辑在那边,瓶颈我也说了
测试方法你自己去写去
【在 D***n 的大作中提到】 : 没有不信,只是这么高大上的东西我不懂啊,要认真学习学习。 : 你程序不传,让我们看看测试程序总可以吧?
|
D***n 发帖数: 6804 | 255
瞎喷
https://github.com/boundary/high-scale-lib/blob/master/src/main/java/org/
cliffc/high_scale_lib/NonBlockingHashMap.java
【在 g*****g 的大作中提到】 : 我受不了了,你先研究一下ConcurrencyHashMap咋实现的行不?为嘛不懂非要出来瞎喷 : 呢?得,我帮你把文档都列出来。你丫不懂,源码看不懂,连Google文档都不会。还做 : 个蛋research。 : https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ : ConcurrentHashMap.html
|
z****e 发帖数: 54598 | 256 学会阅读,弄了半天,只是为了节省内存?
人家也没有说ConcurrentHashMap是错的呀
你干嘛呢?不是给你说了嘛,这里不存在瓶颈
你折腾啥?
* A lock-free alternate implementation of {@link java.util.concurrent.
ConcurrentHashMap}
* with better scaling properties and generally lower costs to mutate the
Map.
* It provides identical correctness properties as ConcurrentHashMap.
什么叫
It provides identical correctness properties as ConcurrentHashMap?
【在 D***n 的大作中提到】 : : 瞎喷 : https://github.com/boundary/high-scale-lib/blob/master/src/main/java/org/ : cliffc/high_scale_lib/NonBlockingHashMap.java
|
g*****g 发帖数: 34805 | 257 你丫是不懂没错呀。可是死撑不惜死全家呀。你自称对Java外行,没妨碍JDK的标准实
现你打死都说不能用呀。反正全家都要死了,脸皮还要它干嘛。
【在 D***n 的大作中提到】 : 没有不信,只是这么高大上的东西我不懂啊,要认真学习学习。 : 你程序不传,让我们看看测试程序总可以吧?
|
z****e 发帖数: 54598 | 258 另外它愿意起这个名字,我有什么办法?
难道github上有人起这个名字我就要信?
搞笑了,github上是圣经还是神谕?
哪天github上有个人起个名叫suicide
你是不是就要自杀?
【在 D***n 的大作中提到】 : : 瞎喷 : https://github.com/boundary/high-scale-lib/blob/master/src/main/java/org/ : cliffc/high_scale_lib/NonBlockingHashMap.java
|
z****e 发帖数: 54598 | 259 3000个对象
只要不操作图像
这种复杂度对于32g的server来说
小意思 |
D***n 发帖数: 6804 | 260
连Google文档都不会。还做个蛋research。
【在 g*****g 的大作中提到】 : 你丫是不懂没错呀。可是死撑不惜死全家呀。你自称对Java外行,没妨碍JDK的标准实 : 现你打死都说不能用呀。反正全家都要死了,脸皮还要它干嘛。
|
|
|
z****e 发帖数: 54598 | 261 lol
我已经把文档贴出来给你看了
你看不懂,你还做research?
【在 D***n 的大作中提到】 : : 连Google文档都不会。还做个蛋research。
|
D***n 发帖数: 6804 | 262 * with better scaling properties
如果没瓶颈,提供这个特性是图啥呢?
【在 z****e 的大作中提到】 : lol : 我已经把文档贴出来给你看了 : 你看不懂,你还做research?
|
z****e 发帖数: 54598 | 263 所有的应用都是一样的?
网游的server跟阿里巴巴的server是一样的?
你是不是忘了你在说啥topic了?
【在 D***n 的大作中提到】 : * with better scaling properties : 如果没瓶颈,提供这个特性是图啥呢?
|
D***n 发帖数: 6804 | 264 请教一下,你说copy&write arraylist是值的这个么?
java.util.concurrent.CopyOnWriteArrayList
源代码里为啥上来就import locks ?
import java.util.concurrent.locks.*;
【在 z****e 的大作中提到】 : 如果要用那套扯蛋逻辑 : 完全弃用concurrenthashmap : 直接用copy&write arraylist : 每一个thread都往list上add就好了 : 每次主线程直接读list : 制造一个temp list,然后addAll并removeAll : 就lock free了,那个list会在读的时候 : 自动生成一个snapshot,然后把其他thread的add操作 : 短暂寄存在另外一边,等主线程完成之后,再add回来 : 这就是lock free了,如果非要这么做的话
|
z****e 发帖数: 54598 | 265 因为这个类不仅仅是用在这里
也同时可以用在多个threads修改同一个list上
我说的只是用这个类对付某种特定的环境
并不是general滴
【在 D***n 的大作中提到】 : 请教一下,你说copy&write arraylist是值的这个么? : java.util.concurrent.CopyOnWriteArrayList : 源代码里为啥上来就import locks ? : import java.util.concurrent.locks.*;
|
c*******9 发帖数: 9032 | 266 刘姥姥能写多线程,用python的笑不出来了。
【在 H******7 的大作中提到】 : 看到有人讨论python写多线程。笑死了。 : 还不如用java写呢。 : 多线程还得看c++的。boost, std多线程甩其他语言几个光年
|
d******e 发帖数: 2265 | 267 不做多线程多年了
不过我想问一下这和spinlock有什么区别
【在 D***n 的大作中提到】 : lock-free大概是这样玩的,以intel的DCAS(双字长CAS)为例: : do : { : 读取老的key+一个ver号组成的双字长到本地 : 根据老key做相关操作,生成新key : ver加1 : } while ! DCAS(共享地址,老key+ver,新key+ver) : DCAS 一般是双倍内存地址长度,64位下是128位原子交换。ver用于防止ABA。 : 基本意思是说比如N个thread都试图写这个地址,如果do/while期间被别的thread改了 : ,那么放弃这次操作。这个从理论上证明了,不管每个thread的执行情况如何,每次总
|
d******e 发帖数: 2265 | 268 这个酒没意思了。根据我多年前的印象。
这个就是数据库里面的分段锁而已。
16就是这个map分成16个段。888888个短你内存放的下吗?
直接上persistent hash ring 把。
【在 D***n 的大作中提到】 : 我不是说了我不懂么?不是让你来解释这么高大上的概念么。 : concurrencyLevel=16不懂啊,不过这么高大上的概念,这么高端的服务,16数字不咋 : 样,咱改成888888如何? : : concurrencyLevel=
|
d******e 发帖数: 2265 | 269 说说我的简单的不用锁的对战射击:
1. 所有的对象都改actor,greenlet(python), haskell threads.
2. actor间相互发消息。砍就是砍消息,自己处理自己的状态
3. actor处理完消息把状态delta发给地图线程
4. 地图线程每20ms汇总更新一次,把状态返还用户活着用户的delegate.
特点:完全没锁,现在机器一台host 几百万的actor应该是可以的。对于游戏这种low
latency的饮用,几万肯定可以。
没有基于过于底层的c/C++来实现。 |
D***n 发帖数: 6804 | 270 本质上都是busy-waiting/CAS
区别:Spinlock本质上还是有一个lock。Spin-Lock的实现是这样的
while (__sync_lock_test_and_set(&lock, 1));
// critical section
__sync_lock_release(&lock);
比较一下lock-free实现。
【在 d******e 的大作中提到】 : 不做多线程多年了 : 不过我想问一下这和spinlock有什么区别
|
|
|
D***n 发帖数: 6804 | 271 咳,那是一个钓鱼贴,888888是勾引用的饵,前后左右都下了套等他往里钻呢。
你真写888888其实也没事,进去会有两个东西卡着你
1)官方程序里面,这个数会缩减到一个常量(64K),但是这个常量边上有个注释,说
这是一个比较保守的数字,估计测试的时候超过128K也没问题。
2)这个数实际上还有一个限制,就是系统最大线程数,这个数在我的系统里是60000来
个。
所以他要是没看过代码,不理解算法,盲目回帖的结果就是连续打脸。
【在 d******e 的大作中提到】 : 这个酒没意思了。根据我多年前的印象。 : 这个就是数据库里面的分段锁而已。 : 16就是这个map分成16个段。888888个短你内存放的下吗? : 直接上persistent hash ring 把。
|
g*****g 发帖数: 34805 | 272 哈哈,你就是个傻逼连concurrency level都不知道就来谈ConcurrentHashMap还让我钻
,连有这个东西都是我跟你讲的。你丫能再行为艺术一点吗?这东西是JDK,JDK是不假
定底下硬件如何的,谁知道这是不是个牛逼的mainframe,所以限制就是Integer.MAX_
VALUE。你丫脑残还要出来死撑,就不能怪我打脸了。
【在 D***n 的大作中提到】 : 咳,那是一个钓鱼贴,888888是勾引用的饵,前后左右都下了套等他往里钻呢。 : 你真写888888其实也没事,进去会有两个东西卡着你 : 1)官方程序里面,这个数会缩减到一个常量(64K),但是这个常量边上有个注释,说 : 这是一个比较保守的数字,估计测试的时候超过128K也没问题。 : 2)这个数实际上还有一个限制,就是系统最大线程数,这个数在我的系统里是60000来 : 个。 : 所以他要是没看过代码,不理解算法,盲目回帖的结果就是连续打脸。
|
D***n 发帖数: 6804 | 273 打脸了是不错,不过你打了自己的脸。自己去看看JDK的CODE,里面有一个常数叫
MAX_SEGMENTS
第一次见到傻B反复往套里钻的。回的时候千万别扯蛋改这个常数用在mainframe的傻B
思路。
【在 g*****g 的大作中提到】 : 哈哈,你就是个傻逼连concurrency level都不知道就来谈ConcurrentHashMap还让我钻 : ,连有这个东西都是我跟你讲的。你丫能再行为艺术一点吗?这东西是JDK,JDK是不假 : 定底下硬件如何的,谁知道这是不是个牛逼的mainframe,所以限制就是Integer.MAX_ : VALUE。你丫脑残还要出来死撑,就不能怪我打脸了。
|
g*****g 发帖数: 34805 | 274 你丫不懂了吧,JDK只是个 spec, 不拘泥一种实现。mainframe完全可以有适合自己的
实现。我给你看个 sunjdk你就出来装
逼,脸都不够打得。
尼玛自己说不懂 Java, 还非要死撑。
B
【在 D***n 的大作中提到】 : 打脸了是不错,不过你打了自己的脸。自己去看看JDK的CODE,里面有一个常数叫 : MAX_SEGMENTS : 第一次见到傻B反复往套里钻的。回的时候千万别扯蛋改这个常数用在mainframe的傻B : 思路。
|
D***n 发帖数: 6804 | 275 JDK是一个Spec不是实现?傻B直接说你不懂什么叫作Development Environment不就得
了?
Java的Spec叫 The Java Platform xxxx Edition API Specification.
顺便JDK有(TM) 别的实现除非oracle同意,不能叫JDK。傻B你能不能下次别回个贴子几
乎每一个方面都像个白痴?
JDK Readme自己读去。
http://www.oracle.com/technetwork/java/javase/jdk-7-readme-4291
【在 g*****g 的大作中提到】 : 你丫不懂了吧,JDK只是个 spec, 不拘泥一种实现。mainframe完全可以有适合自己的 : 实现。我给你看个 sunjdk你就出来装 : 逼,脸都不够打得。 : 尼玛自己说不懂 Java, 还非要死撑。 : : B
|
g*****g 发帖数: 34805 | 276 你傻逼听说过OpenJDK, IBM JDK, JRocket吗?连狗狗拿Harmony过来做Android Oracle
都告输了。你丫先把wiki page读一读再来丢人。
不经过Oracle certified不叫做certified JDK不错,但专做一个JDK给mainframe给
Oracle交钱为啥
Oracle不愿意?再说JDK就是个名称,你看人Android不叫JDK,却跟JDK 1.5兼容,人不
要certified。你丫
这傻逼道行差远了,就临时Google一下你丫你敢出来跟我老装逼,打完左脸打右脸的命
。
【在 D***n 的大作中提到】 : JDK是一个Spec不是实现?傻B直接说你不懂什么叫作Development Environment不就得 : 了? : Java的Spec叫 The Java Platform xxxx Edition API Specification. : 顺便JDK有(TM) 别的实现除非oracle同意,不能叫JDK。傻B你能不能下次别回个贴子几 : 乎每一个方面都像个白痴? : JDK Readme自己读去。 : http://www.oracle.com/technetwork/java/javase/jdk-7-readme-4291
|
D***n 发帖数: 6804 | 277 一个连spec和development kit都分不清楚的傻B。
Oracle
【在 g*****g 的大作中提到】 : 你傻逼听说过OpenJDK, IBM JDK, JRocket吗?连狗狗拿Harmony过来做Android Oracle : 都告输了。你丫先把wiki page读一读再来丢人。 : 不经过Oracle certified不叫做certified JDK不错,但专做一个JDK给mainframe给 : Oracle交钱为啥 : Oracle不愿意?再说JDK就是个名称,你看人Android不叫JDK,却跟JDK 1.5兼容,人不 : 要certified。你丫 : 这傻逼道行差远了,就临时Google一下你丫你敢出来跟我老装逼,打完左脸打右脸的命 : 。
|
g*****g 发帖数: 34805 | 278 傻逼 IBM jdk是啥东西,openjdk是啥东西,还没完了
【在 D***n 的大作中提到】 : 一个连spec和development kit都分不清楚的傻B。 : : Oracle
|
D***n 发帖数: 6804 | 279
【在 D***n 的大作中提到】 : 一个连spec和development kit都分不清楚的傻B。 : : Oracle
|
g*****g 发帖数: 34805 | 280 傻逼 jdk几个字没看见?IBM要给自己的 mainframe多开几个 thread还要你同意?你这
傻逼就是脸被打肿非说不是自己的。
【在 D***n 的大作中提到】
|