Redian新闻
>
我可以铁口直断,golang是近20年编程语言最大的突破!
avatar
我可以铁口直断,golang是近20年编程语言最大的突破!# Programming - 葵花宝典
b*u
1
前一段时间把护照邮寄出去办点事情,今天收到护照。我用剪刀去开信封,万没料到(
没绷那根弦),居然剪到护照,等发觉的时候,已经晚了:除了前面几页,护照包括封
底已经整体被剪了一条长约3厘米的口子。
这个护照包含美国的有效签证,现在该如何好啊?用透明胶带粘上行吗?肯定是能看出
来的。
影响使用吗?(护照没有任何缺失部分,只是被从中间剪开一个口子)。估计是要长驱
好长时间到芝加哥换新的了。可是上面的有效签证还能用吗?
快疯掉了!!!!!!!!!!!!!!!!
avatar
c*b
2
有经验的同学请过来分享一下
avatar
T*i
3
说啥golang是语法糖的不客观。golang关键字才几个?能糖到哪里去?
golang根本上,是系统语言。专注解决的是I/O问题。内存管理的效率和java和.net比
较有所降低。但是降低的不多,我个人认为是完美平衡。纯科学计算没有必要使用
golang。
至于稳定性。我个人的信心强于其他任何语言。毕竟用户需要的不仅仅是编译器,而是
加上各种用户库一整套。golang代码量在那里摆着。多快好省是硬道理。
至于功能其他的语言有没有?天生的和后天的区别大了。你再努力,能跑马拉松世界冠
军么?
avatar
c*b
4
ding
avatar
p*u
5
王垠五年前写的关于golang的,不知道是不是还relevant:
http://www.yinwang.org/blog-cn/2014/04/18/golang

【在 T********i 的大作中提到】
: 说啥golang是语法糖的不客观。golang关键字才几个?能糖到哪里去?
: golang根本上,是系统语言。专注解决的是I/O问题。内存管理的效率和java和.net比
: 较有所降低。但是降低的不多,我个人认为是完美平衡。纯科学计算没有必要使用
: golang。
: 至于稳定性。我个人的信心强于其他任何语言。毕竟用户需要的不仅仅是编译器,而是
: 加上各种用户库一整套。golang代码量在那里摆着。多快好省是硬道理。
: 至于功能其他的语言有没有?天生的和后天的区别大了。你再努力,能跑马拉松世界冠
: 军么?

avatar
g*t
6
老王说这些都是皮毛。关键是go提供了一个靠谱而且相对容易用的N:M的scheduler。
语言特性没什么毒点就好,不是很重要。在go上面写一个domain specific language也
是可以的。
另外go也比较适应新时代,现在就是intc,ARM两个架构,静态编译不算缺点。今天
其实已经没几个年轻人真的理解当初JVM的最大卖点是compile once,run everywhere。

【在 p*u 的大作中提到】
: 王垠五年前写的关于golang的,不知道是不是还relevant:
: http://www.yinwang.org/blog-cn/2014/04/18/golang

avatar
g*t
7
差不多. 比不了C,C plus,C sharp,java,javascript,python。
剩下的首选就是go了。
swift越来越差了.

【在 T********i 的大作中提到】
: 说啥golang是语法糖的不客观。golang关键字才几个?能糖到哪里去?
: golang根本上,是系统语言。专注解决的是I/O问题。内存管理的效率和java和.net比
: 较有所降低。但是降低的不多,我个人认为是完美平衡。纯科学计算没有必要使用
: golang。
: 至于稳定性。我个人的信心强于其他任何语言。毕竟用户需要的不仅仅是编译器,而是
: 加上各种用户库一整套。golang代码量在那里摆着。多快好省是硬道理。
: 至于功能其他的语言有没有?天生的和后天的区别大了。你再努力,能跑马拉松世界冠
: 军么?

avatar
n*t
8
比較實用是事實。突破談不上。
這東西用GC,註定了不會是一個很好的系統語言,只能用來做應用層的東西。
我還是那個問題,go倒底哪個地方讓你這麼爽?

【在 T********i 的大作中提到】
: 说啥golang是语法糖的不客观。golang关键字才几个?能糖到哪里去?
: golang根本上,是系统语言。专注解决的是I/O问题。内存管理的效率和java和.net比
: 较有所降低。但是降低的不多,我个人认为是完美平衡。纯科学计算没有必要使用
: golang。
: 至于稳定性。我个人的信心强于其他任何语言。毕竟用户需要的不仅仅是编译器,而是
: 加上各种用户库一整套。golang代码量在那里摆着。多快好省是硬道理。
: 至于功能其他的语言有没有?天生的和后天的区别大了。你再努力,能跑马拉松世界冠
: 军么?

avatar
n*t
9
靜態編譯是很大的優點。但是這不是golang的特性。我20年來部署到生產狀態的系統,
從來沒用過共享binary,統統靜態編譯。
golang有很多plan 9 bell labs的血統,裡面很多想法是本來就該這麼搞,go撥亂反正
而已。

everywhere。

【在 g****t 的大作中提到】
: 老王说这些都是皮毛。关键是go提供了一个靠谱而且相对容易用的N:M的scheduler。
: 语言特性没什么毒点就好,不是很重要。在go上面写一个domain specific language也
: 是可以的。
: 另外go也比较适应新时代,现在就是intc,ARM两个架构,静态编译不算缺点。今天
: 其实已经没几个年轻人真的理解当初JVM的最大卖点是compile once,run everywhere。

avatar
h*c
10
Goroutine到底有啥好处??
avatar
g*t
11
Goroutine 鍙槸涓啓娉曘
application, kernal ,澶欳PU閫欎笁灞よ鏄犲皠鍜岃搴︺澶ц妯$敤璧蜂締
閭勬矑澶ф瘺鐥咃紝闆e害寰堥珮鐨勩
銆鍦hnpc(鐖辨厱鎷嗚吇瀛愷焽焽仇焽) 鐨勫ぇ浣滀腑鎻愬埌: 銆br />

:
Goroutine鍒板簳鏈夊暐濂藉锛燂紵

avatar
g*t
12
application thread, kernel thread, CPU這三個數不是固定的1:1:1而且大規模應用
。這是
第一家吧。
算不算突破這個是主觀的。
就是今天如果有別的調度系統。應該也可以出頭的。


: 比較實用是事實。突破談不上。

: 這東西用GC,註定了不會是一個很好的系統語言,只能用來做應用層的東
西。

: 我還是那個問題,go倒底哪個地方讓你這麼爽?



【在 n******t 的大作中提到】
: 靜態編譯是很大的優點。但是這不是golang的特性。我20年來部署到生產狀態的系統,
: 從來沒用過共享binary,統統靜態編譯。
: golang有很多plan 9 bell labs的血統,裡面很多想法是本來就該這麼搞,go撥亂反正
: 而已。
:
: everywhere。

avatar
n*t
13
嗯,不過一個應用程序為啥要去幹這件事?

【在 g****t 的大作中提到】
: application thread, kernel thread, CPU這三個數不是固定的1:1:1而且大規模應用
: 。這是
: 第一家吧。
: 算不算突破這個是主觀的。
: 就是今天如果有別的調度系統。應該也可以出頭的。
:
:
: 比較實用是事實。突破談不上。
:
: 這東西用GC,註定了不會是一個很好的系統語言,只能用來做應用層的東
: 西。
:
: 我還是那個問題,go倒底哪個地方讓你這麼爽?

avatar
g*t
14
摩爾定律失效。任務調度多一個自由度。這個方向我覺得是對的。過去例如effective
java的作者認為,複雜的調度不可取。1:1完事。


: 嗯,不過一個應用程序為啥要去幹這件事?



【在 n******t 的大作中提到】
: 嗯,不過一個應用程序為啥要去幹這件事?
avatar
T*i
15
注意我给golang的定性:是系统语言。专注解决的是I/O问题。
也就是说,除了纯科学计算,其他的任何应用其实都是I/O应用。对于这种应用,
golang应该是综合起来最好的方案。没有之一。
avatar
h*c
16
这不就是green thread吗,别的语言又不是没有

【在 g****t 的大作中提到】
: Goroutine 鍙槸涓啓娉曘
: application, kernal ,澶欳PU閫欎笁灞よ鏄犲皠鍜岃搴︺澶ц妯$敤璧蜂締
: 閭勬矑澶ф瘺鐥咃紝闆e害寰堥珮鐨勩
: 銆鍦hnpc(鐖辨厱鎷嗚吇瀛愷焽焽仇焽) 鐨勫ぇ浣滀腑鎻愬埌: 銆br />
:
:
: Goroutine鍒板簳鏈夊暐濂藉锛燂紵
:

avatar
l*s
17
go只有这一种,更傻瓜。 魏老师评价这么高,看来要好好学习下了。 :-)

) 的大作中提到: 】

【在 h**c 的大作中提到】
: 这不就是green thread吗,别的语言又不是没有
avatar
n*t
18
應用程序不應該去管這個事情,幹這件事情的是OS。

effective

【在 g****t 的大作中提到】
: 摩爾定律失效。任務調度多一個自由度。這個方向我覺得是對的。過去例如effective
: java的作者認為,複雜的調度不可取。1:1完事。
:
:
: 嗯,不過一個應用程序為啥要去幹這件事?
:

avatar
T*i
19
你应该这么想,操作系统有两种,一种是用来玩的,一会儿写写邮件,一会儿打打游戏
,上面几十个应用程序。这种操作系统大家还是用windows,linux都没戏,已经主动放
弃了。
另外一种,是一台机器主要只干一样事情,比如数据库,web服务等等。这种基本就是
网络和存储的I/O。连个monitor都不接,键盘都很少用。
这第二种,要操作系统有鸟用?操作系统就是帮着读写个网络磁盘之类的,这事儿操作
系统能干好就不错了。这些操作的api,加起来也就10个出头而已。


: 應用程序不應該去管這個事情,幹這件事情的是OS。

: effective



【在 n******t 的大作中提到】
: 應用程序不應該去管這個事情,幹這件事情的是OS。
:
: effective

avatar
p*u
20
好像golang就适合Network I/O,做数据库写硬盘的它不行吧?

【在 T********i 的大作中提到】
: 你应该这么想,操作系统有两种,一种是用来玩的,一会儿写写邮件,一会儿打打游戏
: ,上面几十个应用程序。这种操作系统大家还是用windows,linux都没戏,已经主动放
: 弃了。
: 另外一种,是一台机器主要只干一样事情,比如数据库,web服务等等。这种基本就是
: 网络和存储的I/O。连个monitor都不接,键盘都很少用。
: 这第二种,要操作系统有鸟用?操作系统就是帮着读写个网络磁盘之类的,这事儿操作
: 系统能干好就不错了。这些操作的api,加起来也就10个出头而已。
:
:
: 應用程序不應該去管這個事情,幹這件事情的是OS。
:
: effective

avatar
n*w
21
去年有人比较了一下aws lambda上各个语言的性能。go比最快的几个慢不少。不知道是
不是aws对go的配置问题。
avatar
e*o
22
只看io的话归根结底就是concurrency mode, goroutine是green thread里比较优秀的,
但还是比不过erlang process。Go的schedule只能说是partially preemptive. 高效
的io还是需要preemptive schrduler。
论语言突破的话我觉得rust才算是真的突破,可以保证compile time memory safety,
在这基础上可以实现各种concurrency mode,不仅限于green thread。
avatar
g*t
23
操作系统本身就是大的软硬件公司互相合作和斗争的结果。
乱的一屁。linux本身的设计也没有预见到多核这个硬件的趋势。


: 應用程序不應該去管這個事情,幹這件事情的是OS。

: effective



【在 n******t 的大作中提到】
: 應用程序不應該去管這個事情,幹這件事情的是OS。
:
: effective

avatar
g*t
24
语言也包括它的实现。不仅仅是语法。go的语法严重落后于时代。但是它确实是第二梯
队语言里面有比较靠谱多任务处理办法的唯一一种。golang也已经好几年了,后段大型
项目的趋势据我观察是在增长。


: 只看io的话归根结底就是concurrency mode, goroutine是green thread里比较
优秀的,

: 但还是比不过erlang process。Go的schedule只能说是partially preemptive.
高效

: 的io还是需要preemptive schrduler。

: 论语言突破的话我觉得rust才算是真的突破,可以保证compile time memory
safety,

: 在这基础上可以实现各种concurrency mode,不仅限于green thread。



【在 e**o 的大作中提到】
: 只看io的话归根结底就是concurrency mode, goroutine是green thread里比较优秀的,
: 但还是比不过erlang process。Go的schedule只能说是partially preemptive. 高效
: 的io还是需要preemptive schrduler。
: 论语言突破的话我觉得rust才算是真的突破,可以保证compile time memory safety,
: 在这基础上可以实现各种concurrency mode,不仅限于green thread。

avatar
d*c
25
程序员喜欢追语言的流行,越是大公司支持越容易流行,然后形成正反馈。
所以成功与否很大程度上不靠语言的优劣。那些草根语言还能成长起来的是真的有优势
或者适应市场。
前段时间看tensorflow的swift接口,有个文档在讨论他们为什么选swift,貌似客观地
比较了半天,说他们自己对swift“比较熟悉”然后选了swift
后来一看,整个项目就是swift/llvm创始人从apple到tesla然后到google后搞的,就这
还遮遮掩掩说“The engineers on the project were previously familiar with
Swift (and several other languages), but the choice was guided by the goals
of our project, which imposed specific technical requirements (explained
below)”。
看最近对golang的鼓吹比较多,再去看了老王的批评,又解毒了
avatar
h*i
26
我说过go基本上是个反动的语言,是逆程序语言的发展方向而行的:即从低级到高级,
逐步远离机器逻辑,逼近人的思维,这么一个大方向的。老王的评论还是比较中肯的,
go的设计烂点很多,这些解决了之后又是个C++。
go的主要特点是把CSP放进了语言,让不会concurrent programming的程序猿也可以搞
concurrent了。但是CSP只是一个trick,有很大的副作用,作为库比较合适,作为语言
primitive是不合适的。

goals

【在 d******c 的大作中提到】
: 程序员喜欢追语言的流行,越是大公司支持越容易流行,然后形成正反馈。
: 所以成功与否很大程度上不靠语言的优劣。那些草根语言还能成长起来的是真的有优势
: 或者适应市场。
: 前段时间看tensorflow的swift接口,有个文档在讨论他们为什么选swift,貌似客观地
: 比较了半天,说他们自己对swift“比较熟悉”然后选了swift
: 后来一看,整个项目就是swift/llvm创始人从apple到tesla然后到google后搞的,就这
: 还遮遮掩掩说“The engineers on the project were previously familiar with
: Swift (and several other languages), but the choice was guided by the goals
: of our project, which imposed specific technical requirements (explained
: below)”。

avatar
c*v
27
后现代主义语言都是关注人为重点啊,哈哈。
鼻祖是basic。visual basic当年据说全球2/3程序员在用。
那么流行不是偶然的。今天用户最多的肯定是javascript这棵树上的。
话说回来,语言语法什么的不是大问题。不管什么语言,
设计都有逻辑在里面。IDE,框架很多都是剧毒。毫无理性.
学了脑子就坏了。

【在 h*i 的大作中提到】
: 我说过go基本上是个反动的语言,是逆程序语言的发展方向而行的:即从低级到高级,
: 逐步远离机器逻辑,逼近人的思维,这么一个大方向的。老王的评论还是比较中肯的,
: go的设计烂点很多,这些解决了之后又是个C++。
: go的主要特点是把CSP放进了语言,让不会concurrent programming的程序猿也可以搞
: concurrent了。但是CSP只是一个trick,有很大的副作用,作为库比较合适,作为语言
: primitive是不合适的。
:
: goals

avatar
T*i
28
成天谈论concurrency的,可能是最不懂concurrency的。
哪里有那么多concurrency?
通用的电脑系统,一般都是有多少个核心,才有多大的concurrency!那是你能得到的
concurrency的上限。那些专用的SIMD, MIMD架构,有几个人玩过?
通用多核心系统,普及也就只有20年而已!
你如果自己不知道如何调度你的东西,指望系统来调度,你还能指望什么?没有比
preemptive更扯淡的了。
我做的那个12306系统,只用了2个核而已,所有计算都是一个核完成的。把这2个核的
代码理解了,就不会把concurrency挂在嘴边了。
avatar
c*v
29
多核架构的流行实际上是手机要不发热以及省电推动的。我说多核必将大兴。
10年前pda版有很多人辱骂我。其实intc几十亿打水漂,没进去手机,很大一
个原因就是在这里。要没有手机,cpu架构进化会慢的多。

【在 T********i 的大作中提到】
: 成天谈论concurrency的,可能是最不懂concurrency的。
: 哪里有那么多concurrency?
: 通用的电脑系统,一般都是有多少个核心,才有多大的concurrency!那是你能得到的
: concurrency的上限。那些专用的SIMD, MIMD架构,有几个人玩过?
: 通用多核心系统,普及也就只有20年而已!
: 你如果自己不知道如何调度你的东西,指望系统来调度,你还能指望什么?没有比
: preemptive更扯淡的了。
: 我做的那个12306系统,只用了2个核而已,所有计算都是一个核完成的。把这2个核的
: 代码理解了,就不会把concurrency挂在嘴边了。

avatar
h*i
30
你说golang有什么好处?
“近20年编程语言最大的突破”, 哪里突破了?

【在 T********i 的大作中提到】
: 成天谈论concurrency的,可能是最不懂concurrency的。
: 哪里有那么多concurrency?
: 通用的电脑系统,一般都是有多少个核心,才有多大的concurrency!那是你能得到的
: concurrency的上限。那些专用的SIMD, MIMD架构,有几个人玩过?
: 通用多核心系统,普及也就只有20年而已!
: 你如果自己不知道如何调度你的东西,指望系统来调度,你还能指望什么?没有比
: preemptive更扯淡的了。
: 我做的那个12306系统,只用了2个核而已,所有计算都是一个核完成的。把这2个核的
: 代码理解了,就不会把concurrency挂在嘴边了。

avatar
T*i
31
好处就是简单有效地解决了multiple request/response chain的问题。
就是这么简单。Microsoft office还简单呢。不妨碍为微软带来上千亿的收益。
就这一点就够了。

【在 h*i 的大作中提到】
: 你说golang有什么好处?
: “近20年编程语言最大的突破”, 哪里突破了?

avatar
T*i
32
另外,专用系统的scheduling的问题,永远都不可能是OS的责任。
这玩意儿,2个核以上,都是NP问题。
Everybody shall learn how to schedule their own shit.
avatar
h*i
33
I agree with this.
既然如此,golang的优点不就被你自己否定了么?golang does the scheduling for
you.

【在 T********i 的大作中提到】
: 另外,专用系统的scheduling的问题,永远都不可能是OS的责任。
: 这玩意儿,2个核以上,都是NP问题。
: Everybody shall learn how to schedule their own shit.

avatar
h*i
34
Nowadays every popular languages has this.
What's the point?

【在 T********i 的大作中提到】
: 好处就是简单有效地解决了multiple request/response chain的问题。
: 就是这么简单。Microsoft office还简单呢。不妨碍为微软带来上千亿的收益。
: 就这一点就够了。

avatar
T*i
35
不schedule就对了。比乱schedule好无穷多倍。
我说了,解决multiple request/response chain的问题。
啥叫request/response?那不是通用图灵机好不好?这是递归语言集合。response是
guarantee的。请求来了,行不行也得放个屁给回个话。
还有一个chain,那意思是啥?就是一个request来了,可能trigger几个request,
response有依赖性。这依然是递归的。
这TM有啥好schedule的?就那么多core。需要计算的时候就一直算下去。死循环了是程
序员写的烂,烂程序无论如何都是死循环对吧?写的对了,该算多久就算多久,有啥好
扯淡的?只有算完了,发出request等response的时候,才把 core空出来给别的请求。

【在 h*i 的大作中提到】
: I agree with this.
: 既然如此,golang的优点不就被你自己否定了么?golang does the scheduling for
: you.

avatar
T*i
36
看谁解决问题最简单粗暴有效呗?golang只不过做的最好而已。

【在 h*i 的大作中提到】
: Nowadays every popular languages has this.
: What's the point?

avatar
h*i
37
我觉得纯算的不是主要问题。当前主要问题是IO和计算混在一起。
所谓schedule,也就是几个policy选一个。
golang你没得选,是语言层面的东西,你什么都干不了。
java.util.cocurrent给用户几个选项,还可以自己搞。所以JVM上的语言都自己搞了
CSP, kotlin, clojure, 等等,都有自己的CSP。
其他语言,javascript, python,也都有了CSP。
所以我真的不明白golang有什么好处。

【在 T********i 的大作中提到】
: 不schedule就对了。比乱schedule好无穷多倍。
: 我说了,解决multiple request/response chain的问题。
: 啥叫request/response?那不是通用图灵机好不好?这是递归语言集合。response是
: guarantee的。请求来了,行不行也得放个屁给回个话。
: 还有一个chain,那意思是啥?就是一个request来了,可能trigger几个request,
: response有依赖性。这依然是递归的。
: 这TM有啥好schedule的?就那么多core。需要计算的时候就一直算下去。死循环了是程
: 序员写的烂,烂程序无论如何都是死循环对吧?写的对了,该算多久就算多久,有啥好
: 扯淡的?只有算完了,发出request等response的时候,才把 core空出来给别的请求。

avatar
h*i
38
好在什么地方?CSP放入语言里面?这个是好还是坏,debatable. 大佬们都在撕逼。
前面有人post了golang CSP实现细节,实现上,引入了machine的概念,不就是在往虚
拟机的路上走么?
All these, has been done in JVM.
我不认为golang的实现比JVM的实现好。
我不明白对JVM的反感来自什么地方,但我看见的,是golang在走JVM的老路。

【在 T********i 的大作中提到】
: 看谁解决问题最简单粗暴有效呗?golang只不过做的最好而已。
avatar
T*i
39
没得选就对了。天然最优。
就当前码工们对所谓concurrency的理解,有的选肯定就是选错。
再说golang也不是没得选,其实也是啥花样都可玩。而且更加简单粗暴。问题是,你有
任何玩花样的理由么?
反正我是基本上找不着任何理由玩任何花样。

【在 h*i 的大作中提到】
: 我觉得纯算的不是主要问题。当前主要问题是IO和计算混在一起。
: 所谓schedule,也就是几个policy选一个。
: golang你没得选,是语言层面的东西,你什么都干不了。
: java.util.cocurrent给用户几个选项,还可以自己搞。所以JVM上的语言都自己搞了
: CSP, kotlin, clojure, 等等,都有自己的CSP。
: 其他语言,javascript, python,也都有了CSP。
: 所以我真的不明白golang有什么好处。

avatar
T*i
40
golang当然比JVM好了,对于I/O应用来讲。
这里有golang和.net比较的。
简单说吧,啥peak,mean throughput都不是事儿。那是针对数学计算来讲的。
I/O应用就是GC pause。200 G的内存,.Net做多会pause 125多秒。go也就1.3秒。
golang大多数时间是 < 1ms。
JVM其实还不如.Net,而且差很多。这么说吧,每天最忙的时候,guarantee死机125秒
,导致所有客户都下线。而且每天guarantee来一把,而且最忙的时候,每天一次,这
不是做服务,这是玩客户。
https://medium.com/servicetitan-engineering/go-vs-c-part-2-garbage-
collection-9384677f86f1
这是go blog
https://blog.golang.org/ismmkeynote
avatar
E*1
41
要讨论,就得几大语言都用的很熟练,最好相同的Project你用几大语言包括C,C++,
Java,JS,Python,Go 都给写一遍,做一个report放在blog上,否则在这嘴炮听起来
全他妈专家一样,听完了一点屁营养没有
avatar
n*t
42
你說的都是對的,但是你卻喜歡go。這是我覺得非常不理解的。

【在 T********i 的大作中提到】
: 成天谈论concurrency的,可能是最不懂concurrency的。
: 哪里有那么多concurrency?
: 通用的电脑系统,一般都是有多少个核心,才有多大的concurrency!那是你能得到的
: concurrency的上限。那些专用的SIMD, MIMD架构,有几个人玩过?
: 通用多核心系统,普及也就只有20年而已!
: 你如果自己不知道如何调度你的东西,指望系统来调度,你还能指望什么?没有比
: preemptive更扯淡的了。
: 我做的那个12306系统,只用了2个核而已,所有计算都是一个核完成的。把这2个核的
: 代码理解了,就不会把concurrency挂在嘴边了。

avatar
n*t
43
golang和jvm語言上其實很類似。
問題在於:關鍵是傻逼的sun不搞編譯版本,再說一遍,不搞編譯版本。
那種wirte once的話,蹭熱度的時候說手可以,一直搞下去就是傻逼了。
golang的人都是system背景,所以這鍋湯就是混了java的討喜的地方加上system的想法
。帶來的好處就是,門檻低,同時還比較實用。同樣的壞處就是誰都可以亂填代碼,看
起來也差不多能用。
我自己覺得寫外圍,尤其是快速成型做demo,騙投資都還是不錯的。底層在我這裡沒有
特別大的需求。

【在 h*i 的大作中提到】
: 好在什么地方?CSP放入语言里面?这个是好还是坏,debatable. 大佬们都在撕逼。
: 前面有人post了golang CSP实现细节,实现上,引入了machine的概念,不就是在往虚
: 拟机的路上走么?
: All these, has been done in JVM.
: 我不认为golang的实现比JVM的实现好。
: 我不明白对JVM的反感来自什么地方,但我看见的,是golang在走JVM的老路。

avatar
h*i
44
same here.

【在 n******t 的大作中提到】
: 你說的都是對的,但是你卻喜歡go。這是我覺得非常不理解的。
avatar
g*t
45
golang做底层有一定风险的。如果我没理解错的话,golang在编译时
会在go channel或者什么的地方插入yield把任务交给scheduler的。
这种自动加yield的algorithm,在不同的golang版本都未必是一致的。
Correct Setup/Path may not lead to correct solution if the developer do not
understand the setup/path.

【在 n******t 的大作中提到】
: golang和jvm語言上其實很類似。
: 問題在於:關鍵是傻逼的sun不搞編譯版本,再說一遍,不搞編譯版本。
: 那種wirte once的話,蹭熱度的時候說手可以,一直搞下去就是傻逼了。
: golang的人都是system背景,所以這鍋湯就是混了java的討喜的地方加上system的想法
: 。帶來的好處就是,門檻低,同時還比較實用。同樣的壞處就是誰都可以亂填代碼,看
: 起來也差不多能用。
: 我自己覺得寫外圍,尤其是快速成型做demo,騙投資都還是不錯的。底層在我這裡沒有
: 特別大的需求。

avatar
h*i
46
垃圾回收需要配置,如果JVM忙的时候要125秒GC, 这个GC肯定是配错了。出现一秒以上
GC,都是配错了。
现在JVM的GC,配置对了,完全不会出现old generation GC, 所以半秒以上的GC都不可
能出现的。
golang也一样用GC,而且是用很原始的mark and sweep算法,不过是因为golang没有太
多很大的objects,内存压力小一些,所以你还现在没碰到问题而已,Scale up,肯定
会有问题。mark my words.

【在 T********i 的大作中提到】
: golang当然比JVM好了,对于I/O应用来讲。
: 这里有golang和.net比较的。
: 简单说吧,啥peak,mean throughput都不是事儿。那是针对数学计算来讲的。
: I/O应用就是GC pause。200 G的内存,.Net做多会pause 125多秒。go也就1.3秒。
: golang大多数时间是 < 1ms。
: JVM其实还不如.Net,而且差很多。这么说吧,每天最忙的时候,guarantee死机125秒
: ,导致所有客户都下线。而且每天guarantee来一把,而且最忙的时候,每天一次,这
: 不是做服务,这是玩客户。
: https://medium.com/servicetitan-engineering/go-vs-c-part-2-garbage-
: collection-9384677f86f1

avatar
h*i
47
无非是现在Linux一统天下,所以人们不觉得write once,run everywhere的好处。
Linux is not going to last forever. Mark my words.

【在 n******t 的大作中提到】
: golang和jvm語言上其實很類似。
: 問題在於:關鍵是傻逼的sun不搞編譯版本,再說一遍,不搞編譯版本。
: 那種wirte once的話,蹭熱度的時候說手可以,一直搞下去就是傻逼了。
: golang的人都是system背景,所以這鍋湯就是混了java的討喜的地方加上system的想法
: 。帶來的好處就是,門檻低,同時還比較實用。同樣的壞處就是誰都可以亂填代碼,看
: 起來也差不多能用。
: 我自己覺得寫外圍,尤其是快速成型做demo,騙投資都還是不錯的。底層在我這裡沒有
: 特別大的需求。

avatar
n*t
48
問題是write once,run everywhere是ok的,C就是。
關鍵是編譯其實不是個事.

【在 h*i 的大作中提到】
: 无非是现在Linux一统天下,所以人们不觉得write once,run everywhere的好处。
: Linux is not going to last forever. Mark my words.

avatar
T*i
49
stop the world GC,肯定都没戏。
做这个benchmark的那个人是死忠C#粉。你要是不服气,自己port到Java试试
啊。
https://github.com/alexyakunin/GCBurn/tree/master/src
Side note。如果GC需要tune,那已经败了。这不是脱了裤子放屁么?有那个闲工夫,
就上C++了。

【在 h*i 的大作中提到】
: 垃圾回收需要配置,如果JVM忙的时候要125秒GC, 这个GC肯定是配错了。出现一秒以上
: GC,都是配错了。
: 现在JVM的GC,配置对了,完全不会出现old generation GC, 所以半秒以上的GC都不可
: 能出现的。
: golang也一样用GC,而且是用很原始的mark and sweep算法,不过是因为golang没有太
: 多很大的objects,内存压力小一些,所以你还现在没碰到问题而已,Scale up,肯定
: 会有问题。mark my words.

avatar
g*t
51
我个人认为选这种异步run time毫无道理。第一基础不如jvm稳固。第二不如golang这
种大公司几十个人维护。第三学术上技术上没有新意。
业余学习的时间也是投资。一转眼距离赵策最后出现鼓吹vertx又两年了。第二梯队只
有golang, nodejs往上走。后端短期内我觉得很难再有其他变化的。


: he is still right.

: for I/O performance, I'd pick Rust and use something like tokio

: https://github.com/tokio-rs/tokio



【在 n***p 的大作中提到】
: he is still right.
: for I/O performance, I'd pick Rust and use something like tokio
: https://github.com/tokio-rs/tokio

avatar
g*t
52
古代CPU很多。支持各种硬件还是很麻烦的。就是今天,各家半导体公司的C,和汽车公
司的C那也不一样。


: 問題是write once,run everywhere是ok的,C就是。

: 關鍵是編譯其實不是個事.



【在 n******t 的大作中提到】
: 問題是write once,run everywhere是ok的,C就是。
: 關鍵是編譯其實不是個事.

avatar
n*t
53
問題是,你真正要port code的時候就會發現,C其實是最簡單的。
portabilty的關鍵在於simple和少依賴,不在於嘴上說我想portable。

【在 g****t 的大作中提到】
: 古代CPU很多。支持各种硬件还是很麻烦的。就是今天,各家半导体公司的C,和汽车公
: 司的C那也不一样。
:
:
: 問題是write once,run everywhere是ok的,C就是。
:
: 關鍵是編譯其實不是個事.
:

avatar
r*z
54
这个讨论的上下文是说JVM的write once, run everywhere。真要是古代CPU,难不成先
等着JVM有了再说?显然port C代码是最可靠和简单的做法。

【在 g****t 的大作中提到】
: 古代CPU很多。支持各种硬件还是很麻烦的。就是今天,各家半导体公司的C,和汽车公
: 司的C那也不一样。
:
:
: 問題是write once,run everywhere是ok的,C就是。
:
: 關鍵是編譯其實不是個事.
:

avatar
g*t
55
各种库的依赖性是现在的新问题。在90年代java开始的时候。后端各种服务器非常多。
桌面上,Msft也没有一统天下。所以那时候java这个口号还是很有卖点的。
Solaris 等于是跑自己硬件上的系统,也可以跑在别人的服务器上。别的服务器自己提
供搭售的软件系统,那时候有不少是独占的。


: 問題是,你真正要port code的時候就會發現,C其實是最簡單的。

: portabilty的關鍵在於simple和少依賴,不在於嘴上說我想portable。



【在 n******t 的大作中提到】
: 問題是,你真正要port code的時候就會發現,C其實是最簡單的。
: portabilty的關鍵在於simple和少依賴,不在於嘴上說我想portable。

avatar
s*o
56
架打完了? 很久没看到这种有意思的争论了
avatar
g*t
57
大家都要感谢魏老师把自己的项目实战经验拿出来讲。


: 架打完了? 很久没看到这种有意思的争论了



【在 s***o 的大作中提到】
: 架打完了? 很久没看到这种有意思的争论了
avatar
T*i
58
几位老司机不喜欢golang的理由
一个认为不如Java,还有认为不如erlang的,还有说不如直接C/C++的
比如现在有个服务要重写,前端是web,后台接几级服务器,几种数据库。重头开始,
你要用什么语言么?
C/C++/erlang就算了,实际也没有这么干的。就是Java和golang,2选一,答案很清晰
么。golang一直都能从Java口里抢食,是有深刻原因的。
avatar
g*t
59
Q:
有个服务要重写,前端是web,后台接几级服务器,几种数据库。重头开始,
你要用什么语言么?
My Personal Answer:
python
但我不会排斥node/golang/ruby这三个第二梯队。

【在 T********i 的大作中提到】
: 几位老司机不喜欢golang的理由
: 一个认为不如Java,还有认为不如erlang的,还有说不如直接C/C++的
: 比如现在有个服务要重写,前端是web,后台接几级服务器,几种数据库。重头开始,
: 你要用什么语言么?
: C/C++/erlang就算了,实际也没有这么干的。就是Java和golang,2选一,答案很清晰
: 么。golang一直都能从Java口里抢食,是有深刻原因的。

avatar
h*i
60
有Web,后面几种数据库,几级服务器,听上去是一种商业应用,而不是一个基础系统
,这种用例,这个APP其实主要是在作各种乱七八糟的数据之间的转换,而且需求还经
常要变。如果符合这种场合,Clojure是最合适的。还有就是作AI, 还是得Lisp才行,
当然这个目前还没有实现,但大方向是不错的。这是我个人觉得的Clojure的两个比较
合适的场合,原因都是因为人的需求是不系统的和不自洽的,这些需要FP和dynamism
来对付。
不符合上面的场景的话,比如魏老师作的这种IoT的系统,可能我也会考虑golang,主
要看我的商业模式。如果我的商业模式是卖这一套IoT东西给人on-prem用,而且我的用
户不是大企业,而是中小企业,golang是个不错的选择,对资源的需求小一些。但如果
我的商业模式是SaaS,或者我的用户是大企业,我会选JVM这个平台,更成熟,risk比
较小,不会出现掉坑里出不来的情况,资源不是问题。
反正是要具体问题具体看,不能光从技术角度出发看问题,而是要从商业和技术结合看。

【在 T********i 的大作中提到】
: 几位老司机不喜欢golang的理由
: 一个认为不如Java,还有认为不如erlang的,还有说不如直接C/C++的
: 比如现在有个服务要重写,前端是web,后台接几级服务器,几种数据库。重头开始,
: 你要用什么语言么?
: C/C++/erlang就算了,实际也没有这么干的。就是Java和golang,2选一,答案很清晰
: 么。golang一直都能从Java口里抢食,是有深刻原因的。

avatar
h*i
61
python用在production需要太多baby sitting了, 不推荐。我们的ML/DL compute
nodes是用python,但出问题总是这儿,就没有运行几个月不出问题的时候。而Clojure
的东东deploy了忘了就行了,所以我们都在想着发达了有资源了把ML也全用Clojure写
一遍。

【在 g****t 的大作中提到】
: Q:
: 有个服务要重写,前端是web,后台接几级服务器,几种数据库。重头开始,
: 你要用什么语言么?
: My Personal Answer:
: python
: 但我不会排斥node/golang/ruby这三个第二梯队。

avatar
n*3
62
mxnet has decent clojure API now;
I plan to use transducer/xforms + MXNET clojure API(DL) or h2o(simple ML)
for my coming next ML project to replace python pandas + pytorch/sciklearn

Clojure

【在 h*i 的大作中提到】
: python用在production需要太多baby sitting了, 不推荐。我们的ML/DL compute
: nodes是用python,但出问题总是这儿,就没有运行几个月不出问题的时候。而Clojure
: 的东东deploy了忘了就行了,所以我们都在想着发达了有资源了把ML也全用Clojure写
: 一遍。

avatar
g*t
63
每天至少好几万python的算法应用的 open source项目出来。
5年内数值计算的一定还是python, c plus plus的基本盘。
从原理上来讲,数学物理模型相关的计算服务器比web 服务器难多了。
出问题是对的。没有挑战就没有价值。

Clojure

【在 h*i 的大作中提到】
: python用在production需要太多baby sitting了, 不推荐。我们的ML/DL compute
: nodes是用python,但出问题总是这儿,就没有运行几个月不出问题的时候。而Clojure
: 的东东deploy了忘了就行了,所以我们都在想着发达了有资源了把ML也全用Clojure写
: 一遍。

avatar
g*t
64
很多年前我就抱怨java没有数值计算了。后来不知道想了多少办法。数值计算就老老实
实走python,cpp。别多想。没什么意义。现在python AI/ML/算法社区增长太快。新
的办法出来很难坚持跟上。
除非你做新算法。没有负担。那可以用别的办法。

sciklearn

【在 n*****3 的大作中提到】
: mxnet has decent clojure API now;
: I plan to use transducer/xforms + MXNET clojure API(DL) or h2o(simple ML)
: for my coming next ML project to replace python pandas + pytorch/sciklearn
:
: Clojure

avatar
h*i
65
问题都不是数值计算的问题,而是平台质量的问题,库的质量烂,不能支持生产应用的
需求。
比如python接kafka的库,就没有高质量的生产可用的。aiokafka三天两头,莫名其妙
,就自己在那里不停的re-balance,我看他们的github history, 修了几年了都修不好
。不知道是水平问题,还是python这个平台的问题。个人觉得是二者都有。
连一个跟人家的轮子接的东西都弄不好,就不要提作这些轮子了。

【在 g****t 的大作中提到】
: 每天至少好几万python的算法应用的 open source项目出来。
: 5年内数值计算的一定还是python, c plus plus的基本盘。
: 从原理上来讲,数学物理模型相关的计算服务器比web 服务器难多了。
: 出问题是对的。没有挑战就没有价值。
:
: Clojure

avatar
h*i
66
我让小弟研究了一下mxnet,发现还差得远, decent is not enough.
个人觉得,Clojure社区应该团结起来,就支持龙哥的 Neanderthal 就行了,
现在的证据看,neanderthal 性能比numpy要好。龙哥正在科普从零开始写一个DL平台
,我司要是发达了,还是想给他点支持。
https://github.com/uncomplicate/neanderthal

sciklearn

【在 n*****3 的大作中提到】
: mxnet has decent clojure API now;
: I plan to use transducer/xforms + MXNET clojure API(DL) or h2o(simple ML)
: for my coming next ML project to replace python pandas + pytorch/sciklearn
:
: Clojure

avatar
c*v
67
python那些数据端的问题,都是可以处理的。
远有reedit,近有今日头条,都是python跑的。
数值计算库很难搞的。光是最基本的正交多项式插值,如果要做成库,细节就有很多。
难倒是不难。但是考虑到程序员的平均知识面,那就是大问题。
pandas其实毛病很多,但是一出来就是指数增长。讲取代python的,先出一个类似于
pandas的东西再说。jvm也好,别的什么platform也罢。走到numpy那个质量,5年内我
认为不现实。

【在 h*i 的大作中提到】
: 问题都不是数值计算的问题,而是平台质量的问题,库的质量烂,不能支持生产应用的
: 需求。
: 比如python接kafka的库,就没有高质量的生产可用的。aiokafka三天两头,莫名其妙
: ,就自己在那里不停的re-balance,我看他们的github history, 修了几年了都修不好
: 。不知道是水平问题,还是python这个平台的问题。个人觉得是二者都有。
: 连一个跟人家的轮子接的东西都弄不好,就不要提作这些轮子了。

avatar
l*m
68
jvm搞不定SIMD,光靠c binding搞DL没啥希望

【在 h*i 的大作中提到】
: 我让小弟研究了一下mxnet,发现还差得远, decent is not enough.
: 个人觉得,Clojure社区应该团结起来,就支持龙哥的 Neanderthal 就行了,
: 现在的证据看,neanderthal 性能比numpy要好。龙哥正在科普从零开始写一个DL平台
: ,我司要是发达了,还是想给他点支持。
: https://github.com/uncomplicate/neanderthal
:
: sciklearn

avatar
h*i
69
reddit, 今日头条, 都是简单应用,流量大,但还是简单,搞这些python应该还行。
企业应用领域,远远比这些复杂,python搞不定,也没啥大不了得,本来就不是设计来
搞企业应用的。
现在ML人士还体会不到python的局限性,是因为ML在企业里面还没有什么真正的用处,
没有什么真正的应用场景。大家都在找什么地方有用,目前还没有什么大的能带来万亿
产值的用例。
我们算是真正在用的,一用就发现不行。
老实说,我对python ecosystem的代码质量没有什么好感,不认为numpy有啥质量。

【在 c*******v 的大作中提到】
: python那些数据端的问题,都是可以处理的。
: 远有reedit,近有今日头条,都是python跑的。
: 数值计算库很难搞的。光是最基本的正交多项式插值,如果要做成库,细节就有很多。
: 难倒是不难。但是考虑到程序员的平均知识面,那就是大问题。
: pandas其实毛病很多,但是一出来就是指数增长。讲取代python的,先出一个类似于
: pandas的东西再说。jvm也好,别的什么platform也罢。走到numpy那个质量,5年内我
: 认为不现实。

avatar
h*i
70
生产环境关心的主要是inference,谁管你怎么trained。所以这些都不是问题。

【在 l*******m 的大作中提到】
: jvm搞不定SIMD,光靠c binding搞DL没啥希望
avatar
C*l
71
numpy是从matlab里面继承过来的一套线性代数的东西,非常powerful,现在的ML都是
在numpy的interface上面改。这一套东西也算是久经考验了。

【在 h*i 的大作中提到】
: reddit, 今日头条, 都是简单应用,流量大,但还是简单,搞这些python应该还行。
: 企业应用领域,远远比这些复杂,python搞不定,也没啥大不了得,本来就不是设计来
: 搞企业应用的。
: 现在ML人士还体会不到python的局限性,是因为ML在企业里面还没有什么真正的用处,
: 没有什么真正的应用场景。大家都在找什么地方有用,目前还没有什么大的能带来万亿
: 产值的用例。
: 我们算是真正在用的,一用就发现不行。
: 老实说,我对python ecosystem的代码质量没有什么好感,不认为numpy有啥质量。

avatar
h*i
72
These are the standards originally from Fortran
==> Everybody, no matter which language you are on, uses exactly the same
thing.
So the real competition is a level above.

【在 C*****l 的大作中提到】
: numpy是从matlab里面继承过来的一套线性代数的东西,非常powerful,现在的ML都是
: 在numpy的interface上面改。这一套东西也算是久经考验了。

avatar
m*n
73
Anaconda的一套小清新作为搞研究还是很好的
但是单线程,谁能产业化应用算法?
还是得上GO啊
所以我说Py和GO就是给我们这帮半路出家的搞计算的打狗棍法
avatar
g*t
74
你了解不到numpy的质量和难度是因为你不熟悉数值计算。这个没什么。如果真要了解
。找人写个插值的库就可以了。一般人api都不会设计。
还是那句话。其他社区的先弄好pandas类似的东西。和numpy比较现阶段没有意义。
Page Rank就是ML的典型应用啊。马尔科夫矩阵推断。


: reddit, 今日头条, 都是简单应用,流量大,但还是简单,搞这些python
应该还
行。

: 企业应用领域,远远比这些复杂,python搞不定,也没啥大不了得,本来
就不是
设计来

: 搞企业应用的。

: 现在ML人士还体会不到python的局限性,是因为ML在企业里面还没有什么
真正的
用处,

: 没有什么真正的应用场景。大家都在找什么地方有用,目前还没有什么大
的能带
来万亿

: 产值的用例。

: 我们算是真正在用的,一用就发现不行。

: 老实说,我对python ecosystem的代码质量没有什么好感,不认为numpy
有啥质
量。



【在 h*i 的大作中提到】
: These are the standards originally from Fortran
: ==> Everybody, no matter which language you are on, uses exactly the same
: thing.
: So the real competition is a level above.

avatar
g*t
75
我前面资料不是转了吗。今日头条2015前是python, c plus plus. 人民日报都批判他
家算法了。怎么还找产业化的例子呢


: Anaconda的一套小清新作为搞研究还是很好的

: 但是单线程,谁能产业化应用算法?

: 还是得上GO啊

: 所以我说Py和GO就是给我们这帮半路出家的搞计算的打狗棍法



【在 m*****n 的大作中提到】
: Anaconda的一套小清新作为搞研究还是很好的
: 但是单线程,谁能产业化应用算法?
: 还是得上GO啊
: 所以我说Py和GO就是给我们这帮半路出家的搞计算的打狗棍法

avatar
T*i
76
大家不在一个频道属于鸡同鸭讲。
说实话我在考虑golang应用的时候根本就不会考虑深学。python才是秀逗了基本一无是
处。竖子成名主要是偶然性。资源已经投入太多不能回头了而已。
话说,对于99%的需求来讲,根本和深学就没啥关系。那是锦上添花,给你一堆数据你
给个结果出来。自己关上门乐意咋搞就咋搞。别人为啥要在乎那些什么python,erlang
,clojure之类的妖蛾子?你用quick basic都没人管。有种你用nodejs试试?你的生产
语言和别人的生产语言是两码事。
avatar
g*t
77
楼确实歪了。你说python一无是处也过了。python这个体系成熟了。第一梯队生产语言
妥妥的。
五年前我在本地社区聚会给过一个一小时掌
握80%常用python 语法的talk。说python 可以管5年。
现在的情况hci已经说明了一个例子。多数其实都是后端至少一个python microservice
node. 原因
很简单,AI/ML那么多包。还有大公司那么多服务。用好就可以多一个有价值的产品
feature. 绩效划算。昨晚电视就看到msft/ai的广告。
你这个IoT偏低层。卖的量上去了,回头在上面加应用的话,很可能会加python的node
的。


: 大家不在一个频道属于鸡同鸭讲。

: 说实话我在考虑golang应用的时候根本就不会考虑深学。python才是秀逗
了基本
一无是

: 处。竖子成名主要是偶然性。资源已经投入太多不能回头了而已。

: 话说,对于99%的需求来讲,根本和深学就没啥关系。那是锦上添花,给
你一堆
数据你

: 给个结果出来。自己关上门乐意咋搞就咋搞。别人为啥要在乎那些什么
python,
erlang

: ,clojure之类的妖蛾子?你用quick basic都没人管。有种你用nodejs试
试?你
的生产

: 语言和别人的生产语言是两码事。



【在 T********i 的大作中提到】
: 大家不在一个频道属于鸡同鸭讲。
: 说实话我在考虑golang应用的时候根本就不会考虑深学。python才是秀逗了基本一无是
: 处。竖子成名主要是偶然性。资源已经投入太多不能回头了而已。
: 话说,对于99%的需求来讲,根本和深学就没啥关系。那是锦上添花,给你一堆数据你
: 给个结果出来。自己关上门乐意咋搞就咋搞。别人为啥要在乎那些什么python,erlang
: ,clojure之类的妖蛾子?你用quick basic都没人管。有种你用nodejs试试?你的生产
: 语言和别人的生产语言是两码事。

avatar
n*t
78
你說的情況,後台如果有真正性能要求我用C.前面別人愛用什麼用什麼,我自己寫可能
會用go。如果沒有性能要求,我覺得我也沒必要寫,別人都有能用的方案了,我沒要去
參合。
此外,C++和C在開發的時候是完全不同的mentality。C++的程序員都有一種又不喜歡別
人幫自己把飯煮好,但是又缺輪子的複雜心態。我自己感覺很難打交道。所以我自己開
始的項目很少用C++,我一般只改別人的C++代碼,或者一般最好只是用。
golang的target群體其實就是兩種,一種是C++,一種是java.一定要說哪個更容易搶,
我覺得是C++.

【在 T********i 的大作中提到】
: 几位老司机不喜欢golang的理由
: 一个认为不如Java,还有认为不如erlang的,还有说不如直接C/C++的
: 比如现在有个服务要重写,前端是web,后台接几级服务器,几种数据库。重头开始,
: 你要用什么语言么?
: C/C++/erlang就算了,实际也没有这么干的。就是Java和golang,2选一,答案很清晰
: 么。golang一直都能从Java口里抢食,是有深刻原因的。

avatar
T*i
79
随便说说,对性能有要求,单机concurrent TCP connection 1M+,system capacity无
上限,从1到几十亿都有可能,提供web+TCP sessions,后台就算一个mysql吧。
你用C写一个稳定性和性能达到golang的程度的系统需要多久?

【在 n******t 的大作中提到】
: 你說的情況,後台如果有真正性能要求我用C.前面別人愛用什麼用什麼,我自己寫可能
: 會用go。如果沒有性能要求,我覺得我也沒必要寫,別人都有能用的方案了,我沒要去
: 參合。
: 此外,C++和C在開發的時候是完全不同的mentality。C++的程序員都有一種又不喜歡別
: 人幫自己把飯煮好,但是又缺輪子的複雜心態。我自己感覺很難打交道。所以我自己開
: 始的項目很少用C++,我一般只改別人的C++代碼,或者一般最好只是用。
: golang的target群體其實就是兩種,一種是C++,一種是java.一定要說哪個更容易搶,
: 我覺得是C++.

avatar
n*t
80
取決於幾個情況:
1. 看你這個TCP connection 連進來幹什麼
2. 硬件。
沒有特殊要求,這件事情我沒有必要自己寫。而且這種應用最後是1M+還是10K+,這個
年頭和軟硬件tuning關係很大。

【在 T********i 的大作中提到】
: 随便说说,对性能有要求,单机concurrent TCP connection 1M+,system capacity无
: 上限,从1到几十亿都有可能,提供web+TCP sessions,后台就算一个mysql吧。
: 你用C写一个稳定性和性能达到golang的程度的系统需要多久?

avatar
l*m
81
DL serving其实就c++写一个简单的rest或者 rpc
server就好了,其他的用你喜欢的语言写

:生产环境关心的主要是inference,谁管你怎么trained。所以这些都不是问题。
avatar
n*3
82
mxnet 差得远 or clojure API for mxnet 差得远?
mxnet is relative new, so it's share is not as big as
tensorflow(I really think it has some very bad design) and
pytorch, but it is from amazon/aws, alexa depends on it,
it will get better and better
why you say it 差得远?
neandertal seems cool, but he can not do everything by himself, right?
also considering clojure does not have the biggest community..
在 hci (海螺子) 的大作中提到: 】
avatar
h*i
83
Clojure API for mxnet差得远, unlikely to get where we want it to be.
Cognitect has a couple of people working on it, they urged us to try it, so
we did.
But it looks like Clojure support there will be 2nd class citizen for a long
time, so we are not in a hurry to switch to it.
python is a pain in the ass, but it has much more resources for us to
leverage...

【在 n*****3 的大作中提到】
: mxnet 差得远 or clojure API for mxnet 差得远?
: mxnet is relative new, so it's share is not as big as
: tensorflow(I really think it has some very bad design) and
: pytorch, but it is from amazon/aws, alexa depends on it,
: it will get better and better
: why you say it 差得远?
: neandertal seems cool, but he can not do everything by himself, right?
: also considering clojure does not have the biggest community..
: 在 hci (海螺子) 的大作中提到: 】

avatar
h*i
84
It's going to be more complicated than that.
Some non-trivial computation will take longer than REST or RPC to handle,
and you will have to use async things and/or messaging queue like Kafka to
distribute the workload etc, then python's limitation will hit you.

【在 l*******m 的大作中提到】
: DL serving其实就c++写一个简单的rest或者 rpc
: server就好了,其他的用你喜欢的语言写
:
: :生产环境关心的主要是inference,谁管你怎么trained。所以这些都不是问题。
: :

avatar
m*n
85
计算方面肯定是用C++
对前端的接口用Python

【在 g****t 的大作中提到】
: 我前面资料不是转了吗。今日头条2015前是python, c plus plus. 人民日报都批判他
: 家算法了。怎么还找产业化的例子呢
:
:
: Anaconda的一套小清新作为搞研究还是很好的
:
: 但是单线程,谁能产业化应用算法?
:
: 还是得上GO啊
:
: 所以我说Py和GO就是给我们这帮半路出家的搞计算的打狗棍法
:

avatar
s*k
86
golang的兴起正是作为middleware的兴起,主要是各种高效率的dispatch service 需
求大增,需要并发优势好,可牺牲OO特性,典型如Uber的dispatch 司机和客户,
Google的Ads连接广告和publisher等等。
做复杂一点商业逻辑的系统,尤其涉及很多数据这样的,还是老的OO这些合适

【在 h*i 的大作中提到】
: 我说过go基本上是个反动的语言,是逆程序语言的发展方向而行的:即从低级到高级,
: 逐步远离机器逻辑,逼近人的思维,这么一个大方向的。老王的评论还是比较中肯的,
: go的设计烂点很多,这些解决了之后又是个C++。
: go的主要特点是把CSP放进了语言,让不会concurrent programming的程序猿也可以搞
: concurrent了。但是CSP只是一个trick,有很大的副作用,作为库比较合适,作为语言
: primitive是不合适的。
:
: goals

avatar
s*k
87
其实不见得,Golang抢的最多的我估计是Python的份额
要考虑语言特性,也得考虑历史进程和公司政治,很多startup先起来的都是糙快猛用
python,大了之后发现hold不住,但是JVM要想过来摘桃子那是坚决不干,golang很合适

【在 n******t 的大作中提到】
: 你說的情況,後台如果有真正性能要求我用C.前面別人愛用什麼用什麼,我自己寫可能
: 會用go。如果沒有性能要求,我覺得我也沒必要寫,別人都有能用的方案了,我沒要去
: 參合。
: 此外,C++和C在開發的時候是完全不同的mentality。C++的程序員都有一種又不喜歡別
: 人幫自己把飯煮好,但是又缺輪子的複雜心態。我自己感覺很難打交道。所以我自己開
: 始的項目很少用C++,我一般只改別人的C++代碼,或者一般最好只是用。
: golang的target群體其實就是兩種,一種是C++,一種是java.一定要說哪個更容易搶,
: 我覺得是C++.

avatar
n*3
88
Thanks for the info, hoepfully it will
get bettter in the near future....

so
long

【在 h*i 的大作中提到】
: Clojure API for mxnet差得远, unlikely to get where we want it to be.
: Cognitect has a couple of people working on it, they urged us to try it, so
: we did.
: But it looks like Clojure support there will be 2nd class citizen for a long
: time, so we are not in a hurry to switch to it.
: python is a pain in the ass, but it has much more resources for us to
: leverage...

avatar
n*3
89
Thanks for the info, hoepfully it will
get bettter in the near future....

so
long

【在 h*i 的大作中提到】
: Clojure API for mxnet差得远, unlikely to get where we want it to be.
: Cognitect has a couple of people working on it, they urged us to try it, so
: we did.
: But it looks like Clojure support there will be 2nd class citizen for a long
: time, so we are not in a hurry to switch to it.
: python is a pain in the ass, but it has much more resources for us to
: leverage...

avatar
w*m
90
java真是tmd啰嗦啊
就比如print一句hello world吧。main函数里print一下?太面向过程,太low了。
得封装一个类。叫Printer. Printer有个成员方法,叫print。但是!光一个类太low
了,以后要是有不同的实现怎么办?所以得加一个接口。PrinterInterface。
但是!interface是没有实现的,还是要有默认实现才行。所以得加个虚拟类,
AbstractPrinter实现PrinterInterface,然后Printer继承AbstractPrinter。但是!
你有了那么一套,该怎么创建实例呢?直接new Printer()?太low了,那叫实现依赖。
肯定不行的,所以要搞一个工厂类,PrinterFactory,PrinterFactory用
PrinterInterface返回实例,这样就隐藏了实现细节了。但是!PrinterFactory本身也
是实现类啊,太low了,所以得有PrinterFactoryInterface, AbstractPrinterFactory
. 而且在PrinterFactory里面该怎么写呢?直接new Printer()? 太low了。还是实现依
赖。
最后,你要把这一堆玩意在代码里组装起来,也太难看了,各种new实现类。太low!好
在我们有个高级玩意,叫依赖注入!把程序对象结构全写到配置文件里面。这一套当然
是不能自己造轮子的。配置Spring吧。搞了那么多lib,靠命令行或者IDE的项目管理肯
定不够啊,得有依赖管理。
Maven啊Gradle啊使劲上。最最后,要print的东西怎么传给程序呢?硬编码?命令行传
参数?太low!当然得写在XML里头。光是XML当然还不够企业级,再加上DTD验证吧。然
后就涉及到了XML解析的问题了。代码里直接操起parser吗?太low! 当然要写个parser
的包装类,interface, abstract class, implementation class, factory class再来
一套。
毕竟,不能依赖实现啊,以后我要是换parser了怎么办。所以最后是成品是一堆配置文
件,一堆jar,compile出来的程序200MB。IDE得装上300个插件,打开项目硬盘响老半
天吃掉2GB内存,然后一堆插件弹提示要求升级。哦对了,在这一切发生之前,还得画
UML图呢。三年后项目完工了,部署到客户的服务器上一跑,立马崩溃,一地的stack
trace。
原来客户服务器上用的是JDK 8而新项目需要JDK 11. 然后问客户你们不能升级吗,答
案是不行,因为另外一个企业级开发组给做的企业级解决方案只支持JDK 8。接着客户
把你们的架构师臭骂了一顿,你搞了那么多设计就没有想过可能会换JDK吗?
avatar
h*i
92
That's where Clojure becomes appealing.
If you have not worked in that Java world, you will probably not appreciate
why you want to do Clojure.
2/3 of Clojure people came from Java: you got the same shit done (charge the
same, if not more), but with a language you love.

low
AbstractPrinterFactory

【在 w********m 的大作中提到】
: java真是tmd啰嗦啊
: 就比如print一句hello world吧。main函数里print一下?太面向过程,太low了。
: 得封装一个类。叫Printer. Printer有个成员方法,叫print。但是!光一个类太low
: 了,以后要是有不同的实现怎么办?所以得加一个接口。PrinterInterface。
: 但是!interface是没有实现的,还是要有默认实现才行。所以得加个虚拟类,
: AbstractPrinter实现PrinterInterface,然后Printer继承AbstractPrinter。但是!
: 你有了那么一套,该怎么创建实例呢?直接new Printer()?太low了,那叫实现依赖。
: 肯定不行的,所以要搞一个工厂类,PrinterFactory,PrinterFactory用
: PrinterInterface返回实例,这样就隐藏了实现细节了。但是!PrinterFactory本身也
: 是实现类啊,太low了,所以得有PrinterFactoryInterface, AbstractPrinterFactory

avatar
h*i
93
With Clojure, you charge the same, but do it in 1/10 of code and 1/3 of time.
Cognitect is a consultancy, so they designed Clojure to be an ideal language
for such use.

【在 w********m 的大作中提到】
: 所谓的企业级编程就是这样的
: https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
: 总而言之,就是一天可以做的事做三年,charge客户

avatar
s*k
94
还有一个不能忽视的推动力是基于k8s的各种相关系统,比如现在风起云涌的operator
,其他各个分布式应用都在写Golang针对k8s的operator,不管你是NoSQL,message
queue,还是DB

【在 s********k 的大作中提到】
: golang的兴起正是作为middleware的兴起,主要是各种高效率的dispatch service 需
: 求大增,需要并发优势好,可牺牲OO特性,典型如Uber的dispatch 司机和客户,
: Google的Ads连接广告和publisher等等。
: 做复杂一点商业逻辑的系统,尤其涉及很多数据这样的,还是老的OO这些合适

avatar
h*c
95
举几个java的例子,比较一下,
jvm 的核心代码应该说jdk的核心代码比如SSL/TLS库,heart bleed时候,openssl 出
状况,java我记得没有问题
你挑些jdk unit tests 看看很多A+B不等于B+A的edge cases,非常依赖硬件,sun 的工
程师测试的很系统。
java 很早就是javadoc,代码和文档是一体的。
我不知道怎么看linux的核心代码,我觉得写作风格象狗爬拉一样。然后更多的狗再一
起爬拉。java的工程师基本都受过技术写作训练。
其它语言比如node, 把代码下下来编编看看,没有历史,单元测试太少,代码可移植性
难说。
总结,jdk核心代码,文档,测试,可靠性,是工程。

low
AbstractPrinterFactory

【在 w********m 的大作中提到】
: java真是tmd啰嗦啊
: 就比如print一句hello world吧。main函数里print一下?太面向过程,太low了。
: 得封装一个类。叫Printer. Printer有个成员方法,叫print。但是!光一个类太low
: 了,以后要是有不同的实现怎么办?所以得加一个接口。PrinterInterface。
: 但是!interface是没有实现的,还是要有默认实现才行。所以得加个虚拟类,
: AbstractPrinter实现PrinterInterface,然后Printer继承AbstractPrinter。但是!
: 你有了那么一套,该怎么创建实例呢?直接new Printer()?太low了,那叫实现依赖。
: 肯定不行的,所以要搞一个工厂类,PrinterFactory,PrinterFactory用
: PrinterInterface返回实例,这样就隐藏了实现细节了。但是!PrinterFactory本身也
: 是实现类啊,太low了,所以得有PrinterFactoryInterface, AbstractPrinterFactory

avatar
m*n
96
要不我说Linux是丐帮呢~~

【在 h**********c 的大作中提到】
: 举几个java的例子,比较一下,
: jvm 的核心代码应该说jdk的核心代码比如SSL/TLS库,heart bleed时候,openssl 出
: 状况,java我记得没有问题
: 你挑些jdk unit tests 看看很多A+B不等于B+A的edge cases,非常依赖硬件,sun 的工
: 程师测试的很系统。
: java 很早就是javadoc,代码和文档是一体的。
: 我不知道怎么看linux的核心代码,我觉得写作风格象狗爬拉一样。然后更多的狗再一
: 起爬拉。java的工程师基本都受过技术写作训练。
: 其它语言比如node, 把代码下下来编编看看,没有历史,单元测试太少,代码可移植性
: 难说。

avatar
T*i
97
怎么可能?只要底层依赖openssl,不可能不出问题。
Java的TLS恰恰是最烂的。你网上搜一下Java TLS async就知道了。属于多年没解决的
疑难问题。近几年才有几个勉强可用的第三方库。
Java轻易地被node吊打的屁滚尿流,一点也不冤。TLS异步比吃屎都费劲,妈的绝大多
数时间系统都是不可控的,想正常关闭都是不可能的奢侈。


: 举几个java的例子,比较一下,

: jvm 的核心代码应该说jdk的核心代码比如SSL/TLS库,heart bleed时候,
openssl 出

: 状况,java我记得没有问题

: 你挑些jdk unit tests 看看很多A B不等于B A的edge cases,非常依赖硬件,
sun 的工

: 程师测试的很系统。

: java 很早就是javadoc,代码和文档是一体的。

: 我不知道怎么看linux的核心代码,我觉得写作风格象狗爬拉一样。然后更多的
狗再一

: 起爬拉。java的工程师基本都受过技术写作训练。

: 其它语言比如node, 把代码下下来编编看看,没有历史,单元测试太少,代码可
移植性

: 难说。



【在 h**********c 的大作中提到】
: 举几个java的例子,比较一下,
: jvm 的核心代码应该说jdk的核心代码比如SSL/TLS库,heart bleed时候,openssl 出
: 状况,java我记得没有问题
: 你挑些jdk unit tests 看看很多A+B不等于B+A的edge cases,非常依赖硬件,sun 的工
: 程师测试的很系统。
: java 很早就是javadoc,代码和文档是一体的。
: 我不知道怎么看linux的核心代码,我觉得写作风格象狗爬拉一样。然后更多的狗再一
: 起爬拉。java的工程师基本都受过技术写作训练。
: 其它语言比如node, 把代码下下来编编看看,没有历史,单元测试太少,代码可移植性
: 难说。

avatar
a*g
98
好的东西正反馈还是坏的东西正反馈,这才是根本

goals

【在 d******c 的大作中提到】
: 程序员喜欢追语言的流行,越是大公司支持越容易流行,然后形成正反馈。
: 所以成功与否很大程度上不靠语言的优劣。那些草根语言还能成长起来的是真的有优势
: 或者适应市场。
: 前段时间看tensorflow的swift接口,有个文档在讨论他们为什么选swift,貌似客观地
: 比较了半天,说他们自己对swift“比较熟悉”然后选了swift
: 后来一看,整个项目就是swift/llvm创始人从apple到tesla然后到google后搞的,就这
: 还遮遮掩掩说“The engineers on the project were previously familiar with
: Swift (and several other languages), but the choice was guided by the goals
: of our project, which imposed specific technical requirements (explained
: below)”。

avatar
h*c
99
孟子说,学问之道无他 求其放心而已矣。
首先openssl 是ssl 的一个实现。 Sun/Java有自己的SSL 实现,应该叫sun cipher
suite.
你魏老师linux很熟,但说白了讲我觉得DOS听好,操作系统三块,command.com相当于
shell,autoexec是init,config.sys指示哪里装载驱动。当然是说MS DOS, NOVELL也有
DOS。有点打差了。
linux/unix everything is a file number.socket 不就是这个吗。你说的SSLEngine
我好像debug过后来觉得烂,就直接调socket,一个一个字节从buffer里读出来,然后注
入解密stream.sync 不 async自己select.不过没有保证不missing signal,所以另外还
得加逻辑。我好几年不玩这个了很多细节。当年heart bleed我特以又把java socket
库过了一边,同意网上java 服务器端没有问题的结论,当时。本质上,你在c下面怎么
写,
java 一样的写法。我就是照我们系操作系统教材做到java上。不对您更正。
我强烈建议不是CS的不要自己写一门语言要别人用,不是说不让写,我就是想办公室少
点FWORD或更难听的,我意思你民科写的别逼着别人用。missing signal这个问题,我
想一下,肝就颤一下。多特么戏剧
啊。
node 写的不错,这我不否认,我现在也不是靠bench mark维升。如果您老魏也不拿
bench mark 来说事,是否有些民科。

【在 T********i 的大作中提到】
: 怎么可能?只要底层依赖openssl,不可能不出问题。
: Java的TLS恰恰是最烂的。你网上搜一下Java TLS async就知道了。属于多年没解决的
: 疑难问题。近几年才有几个勉强可用的第三方库。
: Java轻易地被node吊打的屁滚尿流,一点也不冤。TLS异步比吃屎都费劲,妈的绝大多
: 数时间系统都是不可控的,想正常关闭都是不可能的奢侈。
:
:
: 举几个java的例子,比较一下,
:
: jvm 的核心代码应该说jdk的核心代码比如SSL/TLS库,heart bleed时候,
: openssl 出
:
: 状况,java我记得没有问题

avatar
a*8
100
魏老师掉链子啦?内存管理,任务调度,IO抽象,这三样缺了哪个你能写出数据库?

【在 T********i 的大作中提到】
: 你应该这么想,操作系统有两种,一种是用来玩的,一会儿写写邮件,一会儿打打游戏
: ,上面几十个应用程序。这种操作系统大家还是用windows,linux都没戏,已经主动放
: 弃了。
: 另外一种,是一台机器主要只干一样事情,比如数据库,web服务等等。这种基本就是
: 网络和存储的I/O。连个monitor都不接,键盘都很少用。
: 这第二种,要操作系统有鸟用?操作系统就是帮着读写个网络磁盘之类的,这事儿操作
: 系统能干好就不错了。这些操作的api,加起来也就10个出头而已。
:
:
: 應用程序不應該去管這個事情,幹這件事情的是OS。
:
: effective

avatar
p*o
101
数据库一般都自己轮内存管理和IO抽象。

【在 a****8 的大作中提到】
: 魏老师掉链子啦?内存管理,任务调度,IO抽象,这三样缺了哪个你能写出数据库?
avatar
T*i
102
任务调度也必须是自己轮的,你看看任何一个靠谱的数据库,任务thread的数量,必须
小于等于CPU core的数量。
常识啊常识。。。

【在 p***o 的大作中提到】
: 数据库一般都自己轮内存管理和IO抽象。
avatar
a*8
103
人家魏老师明明说的是“一台机器主要只干一样事情,。。。要操作系统有鸟用?操作
系统就是帮着读写个网络磁盘之类的”。Oracle自己管文件系统不代表别家的数据库不
用OS提供文件系统的抽象。任务调度,线程管理,这些事不用OS的?

【在 p***o 的大作中提到】
: 数据库一般都自己轮内存管理和IO抽象。
avatar
T*i
104
说别的和你扯不清楚,就说任务调度吧,你看到哪一家用了比core还多的thread去调度
任务了?
典型的,吃过猪肉,没见过猪跑。。。

【在 a****8 的大作中提到】
: 人家魏老师明明说的是“一台机器主要只干一样事情,。。。要操作系统有鸟用?操作
: 系统就是帮着读写个网络磁盘之类的”。Oracle自己管文件系统不代表别家的数据库不
: 用OS提供文件系统的抽象。任务调度,线程管理,这些事不用OS的?

avatar
a*8
105
怎么就没见过一个直接不用OS,接POST就自启动的数据库呢?

【在 T********i 的大作中提到】
: 任务调度也必须是自己轮的,你看看任何一个靠谱的数据库,任务thread的数量,必须
: 小于等于CPU core的数量。
: 常识啊常识。。。

avatar
a*8
106
您自己说的“是一台机器主要只干一样事情,比如数据库,web服务等等”。哪家web服
务自己轮内存管理,任务调度,文件系统的,愿闻其详。

【在 T********i 的大作中提到】
: 说别的和你扯不清楚,就说任务调度吧,你看到哪一家用了比core还多的thread去调度
: 任务了?
: 典型的,吃过猪肉,没见过猪跑。。。

avatar
T*i
107
golang的web就是啊,操作系统比你识相多了。
系统memory都拿出来让你自己管理GC。
系统的core都拿出来让你调度。用户指定用多少个core,这几个core操作系统就不管了
。每个core顶多一个thread,不管你有多少goroutine都要在这几个thread里面去调度。
web一般不管文件系统是因为没必要。数据库是要管的。OS创建一个raw file,提供出
来memory map/page access API给你用啊。
你new grad吧?学习的路还很漫长。。。。

【在 a****8 的大作中提到】
: 您自己说的“是一台机器主要只干一样事情,比如数据库,web服务等等”。哪家web服
: 务自己轮内存管理,任务调度,文件系统的,愿闻其详。

avatar
a*8
108
golang我真不熟。但是进程利用系统memory自己管理GC就代表不用OS了?你自己管理GC
就不用管VMM了?Core拿出来给userland process调度,就不会被pre-empt掉了?OS出
一个raw file,上面db自己调,下面fs/volume management/硬件driver都不需要了?
从技术问题探讨能被您转到人身,推断是new grad,而不是就事论事,您这么资深的职
场人士,是不是自我修养也有可以提高的空间?

度。

【在 T********i 的大作中提到】
: golang的web就是啊,操作系统比你识相多了。
: 系统memory都拿出来让你自己管理GC。
: 系统的core都拿出来让你调度。用户指定用多少个core,这几个core操作系统就不管了
: 。每个core顶多一个thread,不管你有多少goroutine都要在这几个thread里面去调度。
: web一般不管文件系统是因为没必要。数据库是要管的。OS创建一个raw file,提供出
: 来memory map/page access API给你用啊。
: 你new grad吧?学习的路还很漫长。。。。

avatar
T*i
109
硬件driver是需要,操作系统也需要,毕竟多了这么个玩意儿,远程管理无比的方便。
你自己去post boot,那些工具不是也需要么?为啥要自己去写啊。
我说过操作系统识相,是因为你不需要的,可以很容易关掉。
自己管GC当然不需要VMM了,系统要分配那么多物理内存给你,而且VM swap之类的都必
须关掉。这个很容易,一行代码而已。
至于数据库,稍微正经一点的场合,都要直接分配hugepage保留的。数据库不但在乎保
留专用内存,连内存插在哪个memory bank上都在乎。现代多核都是NUMA内存,内存离
CPU core远还是近,会影响30%的效率的。
至于core,当然runtime不希望被preempt了。这方面OS也很识相,各种配置/API去保证
这一点。。。
所以,关键的是,要识相,要懂事,OS知道,哪些是它永远也不可能管好的,这些,都
要放手。
当然,你自己管理的机器,你自己乱配,自己捣乱,别人也不能拦着你。蛋那是你自己
的问题好不好?

GC

【在 a****8 的大作中提到】
: golang我真不熟。但是进程利用系统memory自己管理GC就代表不用OS了?你自己管理GC
: 就不用管VMM了?Core拿出来给userland process调度,就不会被pre-empt掉了?OS出
: 一个raw file,上面db自己调,下面fs/volume management/硬件driver都不需要了?
: 从技术问题探讨能被您转到人身,推断是new grad,而不是就事论事,您这么资深的职
: 场人士,是不是自我修养也有可以提高的空间?
:
: 度。

avatar
a*8
110
所以您说的“要操作系统有鸟用?”也许并不太确切的表达您的意思?

【在 T********i 的大作中提到】
: 硬件driver是需要,操作系统也需要,毕竟多了这么个玩意儿,远程管理无比的方便。
: 你自己去post boot,那些工具不是也需要么?为啥要自己去写啊。
: 我说过操作系统识相,是因为你不需要的,可以很容易关掉。
: 自己管GC当然不需要VMM了,系统要分配那么多物理内存给你,而且VM swap之类的都必
: 须关掉。这个很容易,一行代码而已。
: 至于数据库,稍微正经一点的场合,都要直接分配hugepage保留的。数据库不但在乎保
: 留专用内存,连内存插在哪个memory bank上都在乎。现代多核都是NUMA内存,内存离
: CPU core远还是近,会影响30%的效率的。
: 至于core,当然runtime不希望被preempt了。这方面OS也很识相,各种配置/API去保证
: 这一点。。。

avatar
a*8
111
能再细点讲“ 自己管GC当然不需要VMM了”是什么吗?进程能直接看到物理内存?不需
要任何映射?你看内存一页一页的,不是操作系统给你抽象出来的?
avatar
T*i
112
对那些应用来讲,那些方面要操作系统参与确实没鸟用啊。
所以操作系统本来也没掺和啊。不掺和没有任何不好,为啥还要哭着喊着让OS去参与啊?
至于VM映射,那归根结底是CPU的设计好不好?其实对这些服务器应用,没有TLB肯定效
率更高啊。但是CPU一定要设计成通用的。做个专用的多贵啊。
总之,分配一大块一望到底的几百G平坦内存,然后老老实实待着不能换出去,是大家
都期望的。这是对的。而且不难。

【在 a****8 的大作中提到】
: 所以您说的“要操作系统有鸟用?”也许并不太确切的表达您的意思?
avatar
a*8
113
您确定没有OS的工作,您的进程能看见“几百G的平坦内存“,随机调用?


: 对那些应用来讲,那些方面要操作系统参与确实没鸟用啊。

: 所以操作系统本来也没掺和啊。不掺和没有任何不好,为啥还要哭着喊着让OS去
参与啊?

: 至于VM映射,那归根结底是CPU的设计好不好?其实对这些服务器应用,没有TLB
肯定效

: 率更高啊。但是CPU一定要设计成通用的。做个专用的多贵啊。

: 总之,分配一大块一望到底的几百G平坦内存,然后老老实实待着不能换出去,
是大家

: 都期望的。这是对的。而且不难。



【在 T********i 的大作中提到】
: 对那些应用来讲,那些方面要操作系统参与确实没鸟用啊。
: 所以操作系统本来也没掺和啊。不掺和没有任何不好,为啥还要哭着喊着让OS去参与啊?
: 至于VM映射,那归根结底是CPU的设计好不好?其实对这些服务器应用,没有TLB肯定效
: 率更高啊。但是CPU一定要设计成通用的。做个专用的多贵啊。
: 总之,分配一大块一望到底的几百G平坦内存,然后老老实实待着不能换出去,是大家
: 都期望的。这是对的。而且不难。

avatar
T*i
114
你纠结这个有意思么?那才几行代码?rocket science么?
OS做了它应该做的。通用的专用的,人家都考虑到了。用得着你就用。用不着它就放。
但是你要承认,没有今天我告诉你,很多东西你其实是不知道怎么用的。。。

TLB

【在 a****8 的大作中提到】
: 您确定没有OS的工作,您的进程能看见“几百G的平坦内存“,随机调用?
:
:
: 对那些应用来讲,那些方面要操作系统参与确实没鸟用啊。
:
: 所以操作系统本来也没掺和啊。不掺和没有任何不好,为啥还要哭着喊着让OS去
: 参与啊?
:
: 至于VM映射,那归根结底是CPU的设计好不好?其实对这些服务器应用,没有TLB
: 肯定效
:
: 率更高啊。但是CPU一定要设计成通用的。做个专用的多贵啊。
:
: 总之,分配一大块一望到底的几百G平坦内存,然后老老实实待着不能换出去,
: 是大家

avatar
a*8
115
1. 一个core一个thread就不需要调度了?每个线程自己跑无限循环?没有闲着的时候
?没有中断和被中断的时候?
2. 处理客户连接的部分呢? 尤其高并发的情况下,不会有线程被挂起来?这个我不懂
golang是怎么实现的。但是,如果编译到底层调用system calls,那还不是用OS提供的
接口完成的吗?而且只用线程,不需要进程管理吗?不需要进程间通信吗?这些不都是
OS提供的服务吗?

【在 T********i 的大作中提到】
: 说别的和你扯不清楚,就说任务调度吧,你看到哪一家用了比core还多的thread去调度
: 任务了?
: 典型的,吃过猪肉,没见过猪跑。。。

avatar
a*8
116
只有几行代码==“没有鸟用”?hugepage就不用内存管理了?不就是OS给分的长一点的
页面吗?不需要映射?不需要分配?你确定那几百G真是连续平坦的?还是OS做了一系
列工作让你的进程看到那段存储是平坦的?

【在 T********i 的大作中提到】
: 你纠结这个有意思么?那才几行代码?rocket science么?
: OS做了它应该做的。通用的专用的,人家都考虑到了。用得着你就用。用不着它就放。
: 但是你要承认,没有今天我告诉你,很多东西你其实是不知道怎么用的。。。
:
: TLB

avatar
T*i
117
不懂就要去学。本版其实并不是一个学习的好地方。
我本人也不善于教学。。。


: 1. 一个core一个thread就不需要调度了?每个线程自己跑无限循环?没有闲着
的时候

: ?没有中断和被中断的时候?

: 2. 处理客户连接的部分呢? 尤其高并发的情况下,不会有线程被挂起来?这个
我不懂

: golang是怎么实现的。但是,如果编译到底层调用system calls,那还不是用OS
提供的

: 接口完成的吗?而且只用线程,不需要进程管理吗?不需要进程间通信吗?这些
不都是

: OS提供的服务吗?



【在 a****8 的大作中提到】
: 只有几行代码==“没有鸟用”?hugepage就不用内存管理了?不就是OS给分的长一点的
: 页面吗?不需要映射?不需要分配?你确定那几百G真是连续平坦的?还是OS做了一系
: 列工作让你的进程看到那段存储是平坦的?

avatar
a*8
118
呵呵

【在 T********i 的大作中提到】
: 不懂就要去学。本版其实并不是一个学习的好地方。
: 我本人也不善于教学。。。
:
:
: 1. 一个core一个thread就不需要调度了?每个线程自己跑无限循环?没有闲着
: 的时候
:
: ?没有中断和被中断的时候?
:
: 2. 处理客户连接的部分呢? 尤其高并发的情况下,不会有线程被挂起来?这个
: 我不懂
:
: golang是怎么实现的。但是,如果编译到底层调用system calls,那还不是用OS
: 提供的

avatar
T*i
119
你随便牵狗搜一下,都不会问这种问题。不可以拿无知当有趣。从头到尾,都是你的态
度有问题。
go的scheduler从来都不需要OS preemption的参与。OS也参与不了。随随便便创建几个
deal loop goroutine,就能把程序搞死。So他妈what?自己犯傻写了烂代码,你期待
啥结果?
颠覆你世界观了么?那我可以100%确定地告诉你。你的世界观有问题。仅此而已。

【在 a****8 的大作中提到】
: 呵呵
avatar
a*8
120
昵称叫“魏老师”的自述“我本人也不善于教学”不是有点好笑吗?别人心平气和和你
讨论问题,你两三句就上升到人身攻击,这样也能带队伍干初创,我不呵呵还能怎样?
avatar
n*t
121
還是一句話,結果你用GO了,繼續困惑中。

啊?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
你這麼想顯然和Go不兼容。

【在 T********i 的大作中提到】
: 对那些应用来讲,那些方面要操作系统参与确实没鸟用啊。
: 所以操作系统本来也没掺和啊。不掺和没有任何不好,为啥还要哭着喊着让OS去参与啊?
: 至于VM映射,那归根结底是CPU的设计好不好?其实对这些服务器应用,没有TLB肯定效
: 率更高啊。但是CPU一定要设计成通用的。做个专用的多贵啊。
: 总之,分配一大块一望到底的几百G平坦内存,然后老老实实待着不能换出去,是大家
: 都期望的。这是对的。而且不难。

avatar
n*t
122
嗯。嚴格來說這是不對的,這個thread數目除了core的數目之外還和磁盤和網絡I/O有
關係。
當然,如果做具體實現是小白,你的搞法基本上OK,可能不會死很慘。

【在 T********i 的大作中提到】
: 任务调度也必须是自己轮的,你看看任何一个靠谱的数据库,任务thread的数量,必须
: 小于等于CPU core的数量。
: 常识啊常识。。。

avatar
a*8
123
我不理解golang编译出来的可执行程序是怎么能做到不被OS pre-empt的,像魏老师说
的那样。难道golang不仅仅是语言库和编译器,还包括类似LXC/KVM之类针对硬件的
container/VM binding吗?还是说跑在kernel land?否则一个userland的程序,
kernel忙的时候分分钟会被context switch出去。

【在 n******t 的大作中提到】
: 嗯。嚴格來說這是不對的,這個thread數目除了core的數目之外還和磁盤和網絡I/O有
: 關係。
: 當然,如果做具體實現是小白,你的搞法基本上OK,可能不會死很慘。

avatar
T*i
124
我不认为你做过任何严肃的生产型高性能应用,偏底层的那种。
我多年前就在本版指出过,NIC最优的配置是每个CPU socket (注意不是core)一个网卡
,每个网卡一个core。
本地磁盘或者SSD,一个core最优。
当然,这些不是重点。重点是我说了,实际的工作线程一定是 <= core数量。本身就是
肯定对的。

【在 n******t 的大作中提到】
: 嗯。嚴格來說這是不對的,這個thread數目除了core的數目之外還和磁盤和網絡I/O有
: 關係。
: 當然,如果做具體實現是小白,你的搞法基本上OK,可能不會死很慘。

avatar
T*i
125
同学,你这样眉毛胡子一把抓的问问题是不行的。
完全不依赖OS pre-empt和不能被OS pre-empt是两个概念好不好?
另外,你以为OS像Java做的那些垃圾一样,动不动就CPU 100%死在那里?
跟你说过很多遍了,OS设计的很识相,很懂事。。。不识相不懂事是其他的那些人而已。

【在 a****8 的大作中提到】
: 我不理解golang编译出来的可执行程序是怎么能做到不被OS pre-empt的,像魏老师说
: 的那样。难道golang不仅仅是语言库和编译器,还包括类似LXC/KVM之类针对硬件的
: container/VM binding吗?还是说跑在kernel land?否则一个userland的程序,
: kernel忙的时候分分钟会被context switch出去。

avatar
n*t
126
不要說你的嚴肅的"生產型高性能應用"就是金融IT啊.其實就算那個,你這個搞法很多
時候也是不對的。尤其是你還說道database,那完全說明你沒做過複雜的高性能I/O應
用.
不是所有的程序都是只做傻快的事情,別的什麼都不用care的。用多少錢做多少事,這
才是高性能的難點。

~~~~~~~~~~~~~~~~~~~~~~~~~~
先不說你這個結論有沒有道理,這是hardware 配置,和一個應用程序應該起多少線程
沒關係。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
很多情況這麼搞會虧到褲子都沒得穿的。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
請你定義一下你的"實際工作線程",不要說這叫做實際在cpu上運行的線程,那你的
argument有什麼意義嗎?一個人就算起10000個線程也是這樣。打嘴炮就算了,我沒興
趣。

【在 T********i 的大作中提到】
: 我不认为你做过任何严肃的生产型高性能应用,偏底层的那种。
: 我多年前就在本版指出过,NIC最优的配置是每个CPU socket (注意不是core)一个网卡
: ,每个网卡一个core。
: 本地磁盘或者SSD,一个core最优。
: 当然,这些不是重点。重点是我说了,实际的工作线程一定是 <= core数量。本身就是
: 肯定对的。

avatar
n*t
127
哈哈,因為他覺得你是小白。技術吵架,其實很多時候個大媽沒區別,就是看氣場。

【在 a****8 的大作中提到】
: 我不理解golang编译出来的可执行程序是怎么能做到不被OS pre-empt的,像魏老师说
: 的那样。难道golang不仅仅是语言库和编译器,还包括类似LXC/KVM之类针对硬件的
: container/VM binding吗?还是说跑在kernel land?否则一个userland的程序,
: kernel忙的时候分分钟会被context switch出去。

avatar
T*i
128
我的搞法对不对,你说了真不算。只有我说了算。其他人,顶多有选择用还是不用的自
由。
我说的“实际工作线程”,当然是指数据库代码实际上在CPU上开的线程。这个线程数
,当然是少于CPU core的数量为最优。稍微靠谱的数据库系统,任务调度,包括IO任务
(包括网络和磁盘/SSD的IO)都是自己调度的。和OS调度没有任何鸟关系。这个有啥好
犟的呢?
我告诉你I/O一个核的性能是最优,你扯我沒做過複雜的高性能I/O應用。不管应用多复
杂,你一个核要是还调度不灵,再多给你几个,复杂度反倒还能降低?说实话要不是老
网友的话,看到这里以后都不用看了。
另外,我在金融行业干过很多年是事实,但是没在金融IT干过一天。我在任何企业的IT
的从业经历为0。

【在 n******t 的大作中提到】
: 不要說你的嚴肅的"生產型高性能應用"就是金融IT啊.其實就算那個,你這個搞法很多
: 時候也是不對的。尤其是你還說道database,那完全說明你沒做過複雜的高性能I/O應
: 用.
: 不是所有的程序都是只做傻快的事情,別的什麼都不用care的。用多少錢做多少事,這
: 才是高性能的難點。
:
: ~~~~~~~~~~~~~~~~~~~~~~~~~~
: 先不說你這個結論有沒有道理,這是hardware 配置,和一個應用程序應該起多少線程
: 沒關係。
: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

avatar
g*t
129
老魏是体验派演员,或者在往这个方向靠拢。需求吃透后,solution可以用看的,很多
时候是可以有“傻快”的solution的。
一个大型项目打不过几百行excel vba
但有一点我觉得az2008说的是对的。golang应该是编译器自己插入一些yield 什么的调
度。不知道是不是会和io引起的os调度冲突。这点目前golang社区没什么人理解所以讨
论不多。
老魏选golang很容易理解啊。java对他的device来说太大了。cpp, c开发效率很低。嵌
入式需要各种修。


: 不要說你的嚴肅的"生產型高性能應用"就是金融IT啊.其實就
算那個,你這個搞
法很多

: 時候也是不對的。尤其是你還說道database,那完全說明你沒做過複雜的
高性能
I/O應

: 用.

: 不是所有的程序都是只做傻快的事情,別的什麼都不用care的。用多少錢
做多少
事,這

: 才是高性能的難點。

: ~~~~~~~~~~~~~~~~~~~~~~~~~~

: 先不說你這個結論有沒有道理,這是hardware 配置,和一個應用程序應
該起多
少線程

: 沒關係。

: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

: 很多情況這麼搞會虧到褲子都沒得穿的。



【在 n******t 的大作中提到】
: 哈哈,因為他覺得你是小白。技術吵架,其實很多時候個大媽沒區別,就是看氣場。
avatar
T*i
130
老顾,和你讲了多次了,隔行如隔山。当然,反正你也是闲。闲着也是闲着。
golang 1.2开始,编译器在函数入口边界插入yield,用来实现cooperative preempt。
这个不用猜。牵狗搜一下也就几十秒。当然,我是早搜过了的。
实话说,我迄今为止,golang的关键字都认不全。但是巨大的项目都自己做了好几个了。
至于我的device,包括中控,都是C/C++。和golang没有一毛钱关系。尤其是中控,
spec有点用力过猛。2G内存空闲1.9G。一个arm板子控制一片楼群都行了。当然,最终
必须一家一台。
golang的项目,就是让几十亿设备能在世界上任何地方找到中控而已。各种双层加密,
端到端加密,多级zero knowledge proof零知识证明,保证0信息泄露保护隐私。

【在 g****t 的大作中提到】
: 老魏是体验派演员,或者在往这个方向靠拢。需求吃透后,solution可以用看的,很多
: 时候是可以有“傻快”的solution的。
: 一个大型项目打不过几百行excel vba
: 但有一点我觉得az2008说的是对的。golang应该是编译器自己插入一些yield 什么的调
: 度。不知道是不是会和io引起的os调度冲突。这点目前golang社区没什么人理解所以讨
: 论不多。
: 老魏选golang很容易理解啊。java对他的device来说太大了。cpp, c开发效率很低。嵌
: 入式需要各种修。
:
:
: 不要說你的嚴肅的"生產型高性能應用"就是金融IT啊.其實就

avatar
n*t
131
我說了,嘴炮沒意思,不要和我急,你自己的項目怎麼搞你自己的事情。這個世界很多
事情work就行,大部分差別不大,所以我也說了,如果小白,我可能也會讓他這麼搞,
如果不差錢,也可以這麼搞。但是你告訴別人這麼搞是最好的,這就不妥了。
同學,I/O線程不算實際工作線程?啥叫做實際在CPU上開的線程?我們還是限制在之前
的話題上比較好,I/O怎麼調度那個是更複雜的問題。我再說一遍,你之前那句話in
general是不對的,一般也不是這麼干的。如果你說的是任何一個時間點上實際能在CPU
上面能跑的線程,這是句沒有營養的話,沒意義。
而且我非常震驚你是認為我的意思是一個I/O設備要多幾個core,說明你理解的方向完
全錯了。這才是我覺得為什麼你沒有處理過複雜的I/O的原因。
如果你介意金融IT這個詞,說金融技術行業好了,我提這個事情exactly是因為我知道
這裡面做哪個方向的人會有你這種想法,這種想法有時候make sense,但是很多時候是
不行的。

IT
很多
O應
,這
線程

【在 T********i 的大作中提到】
: 我的搞法对不对,你说了真不算。只有我说了算。其他人,顶多有选择用还是不用的自
: 由。
: 我说的“实际工作线程”,当然是指数据库代码实际上在CPU上开的线程。这个线程数
: ,当然是少于CPU core的数量为最优。稍微靠谱的数据库系统,任务调度,包括IO任务
: (包括网络和磁盘/SSD的IO)都是自己调度的。和OS调度没有任何鸟关系。这个有啥好
: 犟的呢?
: 我告诉你I/O一个核的性能是最优,你扯我沒做過複雜的高性能I/O應用。不管应用多复
: 杂,你一个核要是还调度不灵,再多给你几个,复杂度反倒还能降低?说实话要不是老
: 网友的话,看到这里以后都不用看了。
: 另外,我在金融行业干过很多年是事实,但是没在金融IT干过一天。我在任何企业的IT

avatar
n*t
132
我也用golang,這點沒有衝突。再說我一般做底層的事情,前面的東西我一般不碰。實
在要我自己做的時候做一點。
我只是就事論事告訴他,他的某個觀點是不對的, 告訴別人某個東西最優,有誤人的嫌
疑。
他這種老司機一般我也不指望他能去聽別人的意見。

【在 g****t 的大作中提到】
: 老魏是体验派演员,或者在往这个方向靠拢。需求吃透后,solution可以用看的,很多
: 时候是可以有“傻快”的solution的。
: 一个大型项目打不过几百行excel vba
: 但有一点我觉得az2008说的是对的。golang应该是编译器自己插入一些yield 什么的调
: 度。不知道是不是会和io引起的os调度冲突。这点目前golang社区没什么人理解所以讨
: 论不多。
: 老魏选golang很容易理解啊。java对他的device来说太大了。cpp, c开发效率很低。嵌
: 入式需要各种修。
:
:
: 不要說你的嚴肅的"生產型高性能應用"就是金融IT啊.其實就

avatar
g*t
133
说说golang scheduler和os scheduler会不会冲突?
golang怎么处理的。假如我们自己写个while loop处理上下文切换,也会碰到os调度引
起的问题。


: 老顾,和你讲了多次了,隔行如隔山。当然,反正你也是闲。闲着也是闲
着。

: golang 1.2开始,编译器在函数入口边界插入yield,用来实现
cooperative
preempt。

: 这个不用猜。牵狗搜一下也就几十秒。当然,我是早搜过了的。

: 实话说,我迄今为止,golang的关键字都认不全。但是巨大的项目都自己
做了好
几个了。

: 至于我的device,包括中控,都是C/C 。和golang没有一毛钱关系。尤
其是中
控,

: spec有点用力过猛。2G内存空闲1.9G。一个arm板子控制一片楼群都行了
。当然
,最终

: 必须一家一台。

: golang的项目,就是让几十亿设备能在世界上任何地方找到中控而已。各
种双层
加密,

: 端到端加密,多级zero knowledge proof零知识证明,保证0信息泄露保
护隐私。



【在 T********i 的大作中提到】
: 老顾,和你讲了多次了,隔行如隔山。当然,反正你也是闲。闲着也是闲着。
: golang 1.2开始,编译器在函数入口边界插入yield,用来实现cooperative preempt。
: 这个不用猜。牵狗搜一下也就几十秒。当然,我是早搜过了的。
: 实话说,我迄今为止,golang的关键字都认不全。但是巨大的项目都自己做了好几个了。
: 至于我的device,包括中控,都是C/C++。和golang没有一毛钱关系。尤其是中控,
: spec有点用力过猛。2G内存空闲1.9G。一个arm板子控制一片楼群都行了。当然,最终
: 必须一家一台。
: golang的项目,就是让几十亿设备能在世界上任何地方找到中控而已。各种双层加密,
: 端到端加密,多级zero knowledge proof零知识证明,保证0信息泄露保护隐私。

avatar
T*i
134
你去打听一下,一颗靠谱的生产数据库,PS一下看看,数据库process的产生的OS
thread加起来,应该有多少个?和core的数量上什么关系?
看事情要抓本质。你做的那些,离本质还很远。这些,对那些研发数据库系统的来讲,
都是常识,只是人家不告诉你罢了。

CPU

【在 n******t 的大作中提到】
: 我說了,嘴炮沒意思,不要和我急,你自己的項目怎麼搞你自己的事情。這個世界很多
: 事情work就行,大部分差別不大,所以我也說了,如果小白,我可能也會讓他這麼搞,
: 如果不差錢,也可以這麼搞。但是你告訴別人這麼搞是最好的,這就不妥了。
: 同學,I/O線程不算實際工作線程?啥叫做實際在CPU上開的線程?我們還是限制在之前
: 的話題上比較好,I/O怎麼調度那個是更複雜的問題。我再說一遍,你之前那句話in
: general是不對的,一般也不是這麼干的。如果你說的是任何一個時間點上實際能在CPU
: 上面能跑的線程,這是句沒有營養的話,沒意義。
: 而且我非常震驚你是認為我的意思是一個I/O設備要多幾個core,說明你理解的方向完
: 全錯了。這才是我覺得為什麼你沒有處理過複雜的I/O的原因。
: 如果你介意金融IT這個詞,說金融技術行業好了,我提這個事情exactly是因為我知道

avatar
T*i
135
这是两个层面的问题。
你要是想故意搞事,我可以告诉你如何做肯定造成冲突,如何做guarantee不会有冲突。
你要是一切take default,一般不会有冲突,冲突可忽略。。。因为做golang的和做os
的都不是傻子,能帮你做好的都做好了,谁也不会没事找事。

【在 g****t 的大作中提到】
: 说说golang scheduler和os scheduler会不会冲突?
: golang怎么处理的。假如我们自己写个while loop处理上下文切换,也会碰到os调度引
: 起的问题。
:
:
: 老顾,和你讲了多次了,隔行如隔山。当然,反正你也是闲。闲着也是闲
: 着。
:
: golang 1.2开始,编译器在函数入口边界插入yield,用来实现
: cooperative
: preempt。
:
: 这个不用猜。牵狗搜一下也就几十秒。当然,我是早搜过了的。

avatar
a*8
136
系统忙的话,当然会冲突。gloang的绿线程不过是进程里面自己合作式统筹。没有类似
lxc类似的东西,os scheduler分分钟把golang的进程调度出去。
“go的scheduler从来都不需要OS preemption的参与。OS也参与不了。”
前一句是对的。后一句是常识错误。也不知道是转行半路出家,没有受过完整的CS本科
教育,所以知识面有缺门,还是嵌入式干久了,看什么都是嵌入式。

【在 g****t 的大作中提到】
: 说说golang scheduler和os scheduler会不会冲突?
: golang怎么处理的。假如我们自己写个while loop处理上下文切换,也会碰到os调度引
: 起的问题。
:
:
: 老顾,和你讲了多次了,隔行如隔山。当然,反正你也是闲。闲着也是闲
: 着。
:
: golang 1.2开始,编译器在函数入口边界插入yield,用来实现
: cooperative
: preempt。
:
: 这个不用猜。牵狗搜一下也就几十秒。当然,我是早搜过了的。

avatar
T*i
137
我老楼上给了comprehensive的回答,你就在楼下胡扯?
我玩多核的时候,你没准还在穿开裆裤呢。
一般冲突可忽略,也可以guarantee不会有冲突你眼睛瞎了没看到?guarantee的方案你
不会是不是?那我就不告诉你了。

【在 a****8 的大作中提到】
: 系统忙的话,当然会冲突。gloang的绿线程不过是进程里面自己合作式统筹。没有类似
: lxc类似的东西,os scheduler分分钟把golang的进程调度出去。
: “go的scheduler从来都不需要OS preemption的参与。OS也参与不了。”
: 前一句是对的。后一句是常识错误。也不知道是转行半路出家,没有受过完整的CS本科
: 教育,所以知识面有缺门,还是嵌入式干久了,看什么都是嵌入式。

avatar
a*8
138
你这种对操作系统一知半解的二百五就算了。半瓶子醋不满晃荡得最响。

【在 T********i 的大作中提到】
: 我老楼上给了comprehensive的回答,你就在楼下胡扯?
: 我玩多核的时候,你没准还在穿开裆裤呢。
: 一般冲突可忽略,也可以guarantee不会有冲突你眼睛瞎了没看到?guarantee的方案你
: 不会是不是?那我就不告诉你了。

avatar
g*t
139
你见过我故意搞事吗。
之前我不是贴了golang三层调度的文献吗。它就是没说如何处理和Os scheduler的冲突
。这部分其实是最难搞的。所以我想看看别的用户怎么想。


: 这是两个层面的问题。

: 你要是想故意搞事,我可以告诉你如何做肯定造成冲突,如何做guarantee不会
有冲突。

: 你要是一切take default,一般不会有冲突,冲突可忽略。。。因为做golang的
和做os

: 的都不是傻子,能帮你做好的都做好了,谁也不会没事找事。



【在 T********i 的大作中提到】
: 我老楼上给了comprehensive的回答,你就在楼下胡扯?
: 我玩多核的时候,你没准还在穿开裆裤呢。
: 一般冲突可忽略,也可以guarantee不会有冲突你眼睛瞎了没看到?guarantee的方案你
: 不会是不是?那我就不告诉你了。

avatar
a*8
140
一个userland程序,还能怎么干?要么整个系统就跑他一个进程,要么借助容器和VM。
这是操作系统常识。

【在 g****t 的大作中提到】
: 你见过我故意搞事吗。
: 之前我不是贴了golang三层调度的文献吗。它就是没说如何处理和Os scheduler的冲突
: 。这部分其实是最难搞的。所以我想看看别的用户怎么想。
:
:
: 这是两个层面的问题。
:
: 你要是想故意搞事,我可以告诉你如何做肯定造成冲突,如何做guarantee不会
: 有冲突。
:
: 你要是一切take default,一般不会有冲突,冲突可忽略。。。因为做golang的
: 和做os
:
: 的都不是傻子,能帮你做好的都做好了,谁也不会没事找事。

avatar
n*t
141
我的感覺,Teacherwei是貨真價實用x86手上一堆core出身的程序員。所以他從來手上
不缺core,一個nic一個core,一個drive一個core。

【在 a****8 的大作中提到】
: 系统忙的话,当然会冲突。gloang的绿线程不过是进程里面自己合作式统筹。没有类似
: lxc类似的东西,os scheduler分分钟把golang的进程调度出去。
: “go的scheduler从来都不需要OS preemption的参与。OS也参与不了。”
: 前一句是对的。后一句是常识错误。也不知道是转行半路出家,没有受过完整的CS本科
: 教育,所以知识面有缺门,还是嵌入式干久了,看什么都是嵌入式。

avatar
g*t
142
OS跑进来之后,等于是两个scheduler在联动。那么golang公开文献里面的几条启发式
的working steal之类的算法的稳定性如何处理的。这是我有兴趣的地方。
我以前做过芯片算法(你们每个人手机和电脑里可能都有),设计过while loop,
yield和硬件寄存器值的改变信号互动。


: 系统忙的话,当然会冲突。gloang的绿线程不过是进程里面自己合作式统筹。没
有类似

: lxc类似的东西,os scheduler分分钟把golang的进程调度出去。

: “go的scheduler从来都不需要OS preemption的参与。OS也参与不了。”

: 前一句是对的。后一句是常识错误。也不知道是转行半路出家,没有受过完整的
CS本科

: 教育,所以知识面有缺门,还是嵌入式干久了,看什么都是嵌入式。



【在 a****8 的大作中提到】
: 一个userland程序,还能怎么干?要么整个系统就跑他一个进程,要么借助容器和VM。
: 这是操作系统常识。

avatar
g*t
143
你说的应该不是很确切。这个还是应该看文档文献才可以。


: 一个userland程序,还能怎么干?要么整个系统就跑他一个进程,要么借助容器
和VM。

: 这是操作系统常识。



【在 a****8 的大作中提到】
: 一个userland程序,还能怎么干?要么整个系统就跑他一个进程,要么借助容器和VM。
: 这是操作系统常识。

avatar
T*i
144
OS应该空闲的时候CPU利用率一直接近0%。golang用户可以设置GOMAXPROCS,就是要用
多少OS thread。你要知道用户也不傻。一个专用机器,有多少个core还是知道的。怎
么分配给专用进程也是基本懂的。
所以,一句话,还要用户懂点才行。而且用户需要调。给一个数。
至于OS的thread,偶尔用一下就用一下呗。golang的应用需要的实时性,也没那么强。
如果你要确保,core isolation和process thread affinity,也就一行命令,跟玩儿
一样。这些,OS提供了就是给人用的。不知道的话是自己的问题。

【在 g****t 的大作中提到】
: 你见过我故意搞事吗。
: 之前我不是贴了golang三层调度的文献吗。它就是没说如何处理和Os scheduler的冲突
: 。这部分其实是最难搞的。所以我想看看别的用户怎么想。
:
:
: 这是两个层面的问题。
:
: 你要是想故意搞事,我可以告诉你如何做肯定造成冲突,如何做guarantee不会
: 有冲突。
:
: 你要是一切take default,一般不会有冲突,冲突可忽略。。。因为做golang的
: 和做os
:
: 的都不是傻子,能帮你做好的都做好了,谁也不会没事找事。

avatar
n*t
145
user space可以yield。kernel裡面的可以run的進程就算切到別人CPU上一般來說也會
繼續跑,除非需要阻塞。
但是userspace 去yield絕大部分沒有point,一件事趕緊干完就最好了。

【在 g****t 的大作中提到】
: 说说golang scheduler和os scheduler会不会冲突?
: golang怎么处理的。假如我们自己写个while loop处理上下文切换,也会碰到os调度引
: 起的问题。
:
:
: 老顾,和你讲了多次了,隔行如隔山。当然,反正你也是闲。闲着也是闲
: 着。
:
: golang 1.2开始,编译器在函数入口边界插入yield,用来实现
: cooperative
: preempt。
:
: 这个不用猜。牵狗搜一下也就几十秒。当然,我是早搜过了的。

avatar
a*8
146
OS scheduler调度golang的thread不会有问题。golang的scheduler spawn on/off自己
的thread也没有问题。但是一个userland的程序,经常还是普通用户权限,连超级用户
权限都没有,怎么和OS scheduler联动啊?普通用户跑一个golang的程序,就可以控制
OS scheduler了,这系统还有没有安全性啊?

【在 g****t 的大作中提到】
: OS跑进来之后,等于是两个scheduler在联动。那么golang公开文献里面的几条启发式
: 的working steal之类的算法的稳定性如何处理的。这是我有兴趣的地方。
: 我以前做过芯片算法(你们每个人手机和电脑里可能都有),设计过while loop,
: yield和硬件寄存器值的改变信号互动。
:
:
: 系统忙的话,当然会冲突。gloang的绿线程不过是进程里面自己合作式统筹。没
: 有类似
:
: lxc类似的东西,os scheduler分分钟把golang的进程调度出去。
:
: “go的scheduler从来都不需要OS preemption的参与。OS也参与不了。”
:
: 前一句是对的。后一句是常识错误。也不知道是转行半路出家,没有受过完整的

avatar
T*i
147
这个是对的,本来userspace去yield基本没有道理。golang 1.2加这个feature纯粹就
是给某些人一点心里安慰而已。更何况,一般情况下也不会trigger。

【在 n******t 的大作中提到】
: user space可以yield。kernel裡面的可以run的進程就算切到別人CPU上一般來說也會
: 繼續跑,除非需要阻塞。
: 但是userspace 去yield絕大部分沒有point,一件事趕緊干完就最好了。

avatar
n*t
148
嗯,又開始加了"靠譜的生產數據庫"這種沒法扯的事情。算了,你已經是論壇吵架高手
瞭。
我再說一遍,你在機器core和外設配置都不確定的情況下,扯線程數目應該小於core數
目,就是扯蛋的。either你知道,但是不願意承認,要不就是你只寫某一種類型的程序
導致你缺乏這方面的經驗。

很多
搞,
之前
in
向完
知道

【在 T********i 的大作中提到】
: 你去打听一下,一颗靠谱的生产数据库,PS一下看看,数据库process的产生的OS
: thread加起来,应该有多少个?和core的数量上什么关系?
: 看事情要抓本质。你做的那些,离本质还很远。这些,对那些研发数据库系统的来讲,
: 都是常识,只是人家不告诉你罢了。
:
: CPU

avatar
a*8
149
是不是小魏的程序都是自己写自己用超级用户跑,也不用通过security audit的,
instead of 通用的,开发出来给别的用户部署使用的?

【在 n******t 的大作中提到】
: 嗯,又開始加了"靠譜的生產數據庫"這種沒法扯的事情。算了,你已經是論壇吵架高手
: 瞭。
: 我再說一遍,你在機器core和外設配置都不確定的情況下,扯線程數目應該小於core數
: 目,就是扯蛋的。either你知道,但是不願意承認,要不就是你只寫某一種類型的程序
: 導致你缺乏這方面的經驗。
:
: 很多
: 搞,
: 之前
: in

avatar
g*t
150
我的浅见:尽管golang scheduler本身是在user space,也就是一个cooperating
scheduler。但是它内部有个preemptive scheduler 的小模型或者观测器。golang
scheduler做决定不是常见的绿线程。它多了一层。
我说的联动的意思是,它内部那个
小模型的数值或者状态是OS给的。然后它的schedule是被这些数值影响的。这是个非常
复杂
的动态过程。
我感兴趣的是。假如假设IO是什么时候都可以发生,并且假设os scheduler一定会被IO
引起状态变化。那必然会有些情况引起这套系统的失效。所以它一定有防错机制。不能
全部解决这个问题。但是可以把问题降低一个数量级。
我以前设计过芯片的while loop, yield算法。这个算法你们每个人的手机和电脑里可
能都有。这部分是最关键的。没有这部分没办法出货。
简答说,golang scheduler看着是三个数字PMG调度。为了调度不出大错,必然有更上
面的一层。这个更上面的一层是怎么做的,是我感兴趣的部分。


: OS scheduler调度golang的thread不会有问题。golang的scheduler
spawn on/
off自己

: 的thread也没有问题。但是一个userland的程序,经常还是普通用户权限
,连超
级用户

: 权限都没有,怎么和OS scheduler联动啊?普通用户跑一个golang的程序
,就可
以控制

: OS scheduler了,这系统还有没有安全性啊?



【在 a****8 的大作中提到】
: 是不是小魏的程序都是自己写自己用超级用户跑,也不用通过security audit的,
: instead of 通用的,开发出来给别的用户部署使用的?

avatar
a*8
151
估计小魏说的是这个
Add the parameter isolcpus=[cpu_number] to the Linux kernel command line
from the boot loader during boot. This will instruct the Linux scheduler not
to run any regular tasks on that CPU unless specifically requested using
cpu affinity.
Use IRQ affinity to set other CPUs to handle all interrupts so that your
isolated CPU will not receive any interrupts.
Use CPU affinity to fix your specific task to the isolated CPU.
这个真心和golang没有任何关系。而是像我说过的,借用了VM的功能。

【在 g****t 的大作中提到】
: 你说的应该不是很确切。这个还是应该看文档文献才可以。
:
:
: 一个userland程序,还能怎么干?要么整个系统就跑他一个进程,要么借助容器
: 和VM。
:
: 这是操作系统常识。
:

avatar
g*t
152
设想一个启发式的working share, working steal之类的策略,小孩子都可以办到。但
是修好那就难了。


: 我的浅见:尽管golang scheduler本身是在user space,也就是一个cooperating

: scheduler。但是它内部有个preemptive scheduler 的小模型或者观测器。
golang

: scheduler做决定不是常见的绿线程。它多了一层。

: 我说的联动的意思是,它内部那个

: 小模型的数值或者状态是OS给的。然后它的schedule是被这些数值影响的。这是
个非常

: 复杂

: 的动态过程。

: 我感兴趣的是。假如假设IO是什么时候都可以发生,并且假设os scheduler一定
会被IO

: 引起状态变化。那必然会有些情况引起这套系统的失效。所以它一定有防错机制
。不能

: 全部解决这个问题。但是可以把问题降低一个数量级。



【在 g****t 的大作中提到】
: 我的浅见:尽管golang scheduler本身是在user space,也就是一个cooperating
: scheduler。但是它内部有个preemptive scheduler 的小模型或者观测器。golang
: scheduler做决定不是常见的绿线程。它多了一层。
: 我说的联动的意思是,它内部那个
: 小模型的数值或者状态是OS给的。然后它的schedule是被这些数值影响的。这是个非常
: 复杂
: 的动态过程。
: 我感兴趣的是。假如假设IO是什么时候都可以发生,并且假设os scheduler一定会被IO
: 引起状态变化。那必然会有些情况引起这套系统的失效。所以它一定有防错机制。不能
: 全部解决这个问题。但是可以把问题降低一个数量级。

avatar
g*t
153
这个我还不知道。我和你的理解类似。golang在user space,
Kernel信息单向进入。


: 估计小魏说的是这个

: Add the parameter isolcpus=[cpu_number] to the Linux kernel command
line

: from the boot loader during boot. This will instruct the Linux
scheduler not

: to run any regular tasks on that CPU unless specifically requested
using

: cpu affinity.

: Use IRQ affinity to set other CPUs to handle all interrupts so that
your

: isolated CPU will not receive any interrupts.

: Use CPU affinity to fix your specific task to the isolated CPU.

: 这个真心和golang没有任何关系。而是像我说过的,借用了VM的功能。



【在 a****8 的大作中提到】
: 估计小魏说的是这个
: Add the parameter isolcpus=[cpu_number] to the Linux kernel command line
: from the boot loader during boot. This will instruct the Linux scheduler not
: to run any regular tasks on that CPU unless specifically requested using
: cpu affinity.
: Use IRQ affinity to set other CPUs to handle all interrupts so that your
: isolated CPU will not receive any interrupts.
: Use CPU affinity to fix your specific task to the isolated CPU.
: 这个真心和golang没有任何关系。而是像我说过的,借用了VM的功能。

avatar
T*i
154
数据库系统单核也可以跑,人家做数据库系统的也不傻,而且人家知道的比你多多了。
但是地但是,人家都是自己调度,不会利用OS来调度。
CPU核一旦多起来,数据库肯定会自动优化任务调度的。比如把所有网络IO优化到顶多
一个core上面去。
但是地但是,他还是要用户告诉他最多有多少个core可以用。所以,你那个機器core和
外設配置都不確定的假设没有任何道理。
我重要的事情问你三遍:你当用户是傻逼么?你当用户是傻逼么?你当用户是傻逼么?
有哪个生产数据库的管理员,在配置的时候不指定core的数量的?有么?有么?有么?

【在 n******t 的大作中提到】
: 嗯,又開始加了"靠譜的生產數據庫"這種沒法扯的事情。算了,你已經是論壇吵架高手
: 瞭。
: 我再說一遍,你在機器core和外設配置都不確定的情況下,扯線程數目應該小於core數
: 目,就是扯蛋的。either你知道,但是不願意承認,要不就是你只寫某一種類型的程序
: 導致你缺乏這方面的經驗。
:
: 很多
: 搞,
: 之前
: in

avatar
T*i
155
这事儿,我在本版说过好多次了。都是我很多年前玩烂了的。
你不知道是你的事情。你不能假定别人不知道。
你需要知道的是,这已经是全覆盖的solution。简单有效。不需要和golang有关。也不
关VM鸟事,保留多少物理CPU core,有没有VM都行。和是不是root也没关系。不是root
也能指定affinity。
最关键的,系统管理员不是傻逼。这些,人家都应该知道。

【在 g****t 的大作中提到】
: 这个我还不知道。我和你的理解类似。golang在user space,
: Kernel信息单向进入。
:
:
: 估计小魏说的是这个
:
: Add the parameter isolcpus=[cpu_number] to the Linux kernel command
: line
:
: from the boot loader during boot. This will instruct the Linux
: scheduler not
:
: to run any regular tasks on that CPU unless specifically requested
: using

avatar
n*t
156
一樣的。一堆的userspace thread lib都在干這個事情.很多年前就有了。

IO

【在 g****t 的大作中提到】
: 我的浅见:尽管golang scheduler本身是在user space,也就是一个cooperating
: scheduler。但是它内部有个preemptive scheduler 的小模型或者观测器。golang
: scheduler做决定不是常见的绿线程。它多了一层。
: 我说的联动的意思是,它内部那个
: 小模型的数值或者状态是OS给的。然后它的schedule是被这些数值影响的。这是个非常
: 复杂
: 的动态过程。
: 我感兴趣的是。假如假设IO是什么时候都可以发生,并且假设os scheduler一定会被IO
: 引起状态变化。那必然会有些情况引起这套系统的失效。所以它一定有防错机制。不能
: 全部解决这个问题。但是可以把问题降低一个数量级。

avatar
n*t
157
你這個習慣很不好,成天人家人家的,感覺像個妹子。:)
話說,你現在這個吵架風格我覺得大公司其實也挺有用的,首先喜歡discredit別人。
我告訴你我自己就是干這個方向的,所以這些我都做過。但是既然妳知道單核也可以跑
,專門做這個的可以自己調度(先假定不修改kernel的前提下),那這個thread數目肯
定不是一定小於core的對吧。我並沒有說你只能做最naive的那種實現。
此外,要不要制定硬件配置和core的數目一定小於磁盤,或者nic的數目沒有必然聯繫。

【在 T********i 的大作中提到】
: 数据库系统单核也可以跑,人家做数据库系统的也不傻,而且人家知道的比你多多了。
: 但是地但是,人家都是自己调度,不会利用OS来调度。
: CPU核一旦多起来,数据库肯定会自动优化任务调度的。比如把所有网络IO优化到顶多
: 一个core上面去。
: 但是地但是,他还是要用户告诉他最多有多少个core可以用。所以,你那个機器core和
: 外設配置都不確定的假设没有任何道理。
: 我重要的事情问你三遍:你当用户是傻逼么?你当用户是傻逼么?你当用户是傻逼么?
: 有哪个生产数据库的管理员,在配置的时候不指定core的数量的?有么?有么?有么?

avatar
a*8
158
我觉得这事你想多了。在信息不完备的情况下,golang scheduler去根据系统
scheduler调整自身调度是徒劳无功的,更可能把问题提高而不是降低。core
isolation是随VM发展起来的技术,用起来简单有效,虽然 **不能100%保证**线程不会
被中断,但是对非实时性要求的应用足够了。

IO

【在 g****t 的大作中提到】
: 我的浅见:尽管golang scheduler本身是在user space,也就是一个cooperating
: scheduler。但是它内部有个preemptive scheduler 的小模型或者观测器。golang
: scheduler做决定不是常见的绿线程。它多了一层。
: 我说的联动的意思是,它内部那个
: 小模型的数值或者状态是OS给的。然后它的schedule是被这些数值影响的。这是个非常
: 复杂
: 的动态过程。
: 我感兴趣的是。假如假设IO是什么时候都可以发生,并且假设os scheduler一定会被IO
: 引起状态变化。那必然会有些情况引起这套系统的失效。所以它一定有防错机制。不能
: 全部解决这个问题。但是可以把问题降低一个数量级。

avatar
a*8
159

这话怎么看着这么外行呢。DB的线程自己摆好姿势,可以影响OS的调度怎么干,你躺着
,他就传教士,你趴着,他就小狗式。但是归根到底是OS调度干,DB线程是被干的好不
好。
IT

【在 T********i 的大作中提到】
: 这事儿,我在本版说过好多次了。都是我很多年前玩烂了的。
: 你不知道是你的事情。你不能假定别人不知道。
: 你需要知道的是,这已经是全覆盖的solution。简单有效。不需要和golang有关。也不
: 关VM鸟事,保留多少物理CPU core,有没有VM都行。和是不是root也没关系。不是root
: 也能指定affinity。
: 最关键的,系统管理员不是傻逼。这些,人家都应该知道。

avatar
T*i
160
不识相,不懂事的原因有两种:
1. 傻逼
2. 没事找事
不论如何,没事找事总是可以的,谁也拦不住。当然了,傻逼也是拦不住的。
要是这两种都不是,事情就很简单了。根本没有事情。

【在 a****8 的大作中提到】
:
: 这话怎么看着这么外行呢。DB的线程自己摆好姿势,可以影响OS的调度怎么干,你躺着
: ,他就传教士,你趴着,他就小狗式。但是归根到底是OS调度干,DB线程是被干的好不
: 好。
: IT

avatar
T*i
161
你也想多了。
哪有那么复杂?core isolation都用不着,毛姑姑,大概齐就好了。
比如一个机器有4和core。给两个golang任务专用。每个2个core。即使最大load,你
ssh上去,某个core被OS抢先用用,也就是不到1%的损失。So what?
本来很简单的问题。世上本无事。。。

【在 a****8 的大作中提到】
: 我觉得这事你想多了。在信息不完备的情况下,golang scheduler去根据系统
: scheduler调整自身调度是徒劳无功的,更可能把问题提高而不是降低。core
: isolation是随VM发展起来的技术,用起来简单有效,虽然 **不能100%保证**线程不会
: 被中断,但是对非实时性要求的应用足够了。
:
: IO

avatar
a*8
162
哇靠。你上线生产环境不跑监控,不跑NTP,不跑log forwarder,不跑log rotation?
不上VM/容器也不跑puppet,不跑ip tables?连routine的cron都不跑?

【在 T********i 的大作中提到】
: 你也想多了。
: 哪有那么复杂?core isolation都用不着,毛姑姑,大概齐就好了。
: 比如一个机器有4和core。给两个golang任务专用。每个2个core。即使最大load,你
: ssh上去,某个core被OS抢先用用,也就是不到1%的损失。So what?
: 本来很简单的问题。世上本无事。。。

avatar
T*i
163
跑又如何,现代CPU,这些平均用不到单个core的1%。直接忽略掉就好了。
实在做的太烂,才需要都粘到一个core上面约束一下。真正微秒级别的hard realtime
也用不着golang。当年俺做的可是single micro-seconds guaranteed。
golang的应用,延迟从毫秒到几秒都可接受。断开后隔几秒钟重连接,重复n次都能接
受。基本没啥不能忽略的。
基本上,属于咋搞都行。。。

【在 a****8 的大作中提到】
: 哇靠。你上线生产环境不跑监控,不跑NTP,不跑log forwarder,不跑log rotation?
: 不上VM/容器也不跑puppet,不跑ip tables?连routine的cron都不跑?

avatar
a*8
164
看来你是真不知道生产环境里监控,配置管理里面有多少坑啊。都让我有点怀疑你是不
是见过真正规模的生产环境了。少年人有勇气是好的,对自己不懂的事骂人就不对了。

realtime

【在 T********i 的大作中提到】
: 跑又如何,现代CPU,这些平均用不到单个core的1%。直接忽略掉就好了。
: 实在做的太烂,才需要都粘到一个core上面约束一下。真正微秒级别的hard realtime
: 也用不着golang。当年俺做的可是single micro-seconds guaranteed。
: golang的应用,延迟从毫秒到几秒都可接受。断开后隔几秒钟重连接,重复n次都能接
: 受。基本没啥不能忽略的。
: 基本上,属于咋搞都行。。。

avatar
T*i
165
狗屁坑,当年我的生产环境都是自己搞的,几十台机器每天上亿的真金白银在上面跑,
真失控了一秒钟可以把全美国卖了。跑了10来年也没出过啥大问题。
还是那句话,世上本无事。。。

【在 a****8 的大作中提到】
: 看来你是真不知道生产环境里监控,配置管理里面有多少坑啊。都让我有点怀疑你是不
: 是见过真正规模的生产环境了。少年人有勇气是好的,对自己不懂的事骂人就不对了。
:
: realtime

avatar
T*i
166
当然了,我也不知道别人都是咋搞的?也不想知道没兴趣知道。
avatar
a*8
167
关键字:几十台 这可以解释很多事情


: 狗屁坑,当年我的生产环境都是自己搞的,几十台机器每天上亿的真金白银在上
面跑,

: 真失控了一秒钟可以把全美国卖了。跑了10来年也没出过啥大问题。

: 还是那句话,世上本无事。。。



【在 T********i 的大作中提到】
: 当然了,我也不知道别人都是咋搞的?也不想知道没兴趣知道。
avatar
g*t
168
你查一下我之前给的几个link的文档和测试什么的吧。有些细节你说的不准。
是不是徒劳无功不讲。golang确实是观测OS scheduler的。这是它和过去绿线程不同的
地方。

【在 a****8 的大作中提到】
: 我觉得这事你想多了。在信息不完备的情况下,golang scheduler去根据系统
: scheduler调整自身调度是徒劳无功的,更可能把问题提高而不是降低。core
: isolation是随VM发展起来的技术,用起来简单有效,虽然 **不能100%保证**线程不会
: 被中断,但是对非实时性要求的应用足够了。
:
: IO

avatar
T*i
169
我现在连几十台都不需要。几十台可以服务全世界了。
世上本无事。。。我做事情,就是愿大家都无事可做。。。

【在 a****8 的大作中提到】
: 关键字:几十台 这可以解释很多事情
:
:
: 狗屁坑,当年我的生产环境都是自己搞的,几十台机器每天上亿的真金白银在上
: 面跑,
:
: 真失控了一秒钟可以把全美国卖了。跑了10来年也没出过啥大问题。
:
: 还是那句话,世上本无事。。。
:

avatar
a*8
170
要服务全世界 没有CDN 没有remote pop那就是瞎扯。几十个POP布下去,上百台搞不好
还不够。


: 我现在连几十台都不需要。几十台可以服务全世界了。

: 世上本无事。。。我做事情,就是愿大家都无事可做。。。



【在 T********i 的大作中提到】
: 我现在连几十台都不需要。几十台可以服务全世界了。
: 世上本无事。。。我做事情,就是愿大家都无事可做。。。

avatar
T*i
171
我核心服务连web服务都不要,就是一TCP连接。协议都是自己的。要CDN有个鸟用啊?
顶多就是几个前端服务器。内容都是端到端加密的。传输密钥都是零知识证明的。
就算我全部前端机都被黑了,顶多用户的远程接入不能用,但是不会有任何安全信息泄
露。
其实,不祸害用户,省了太多事。到了无事可做的程度。
再说了,我为什么要服务全世界啊?真有那么一天,这几台服务器还算事么?

【在 a****8 的大作中提到】
: 要服务全世界 没有CDN 没有remote pop那就是瞎扯。几十个POP布下去,上百台搞不好
: 还不够。
:
:
: 我现在连几十台都不需要。几十台可以服务全世界了。
:
: 世上本无事。。。我做事情,就是愿大家都无事可做。。。
:

avatar
m*n
172
你们吵得我有点看不懂啊!
我给个简单问题,双方各位辩手麻烦回答一下?
假设Centos操作系统
4核8线程的云主机21台做分布式
负载均衡和20台计算(你可以理解为类似于人工智能那种,不是简单IO)都用GO来做
且加上了自动重启功能
无间断或间断程度很低的持续工作,多久会出事故?
事故原因?严重程度?
avatar
p*u
173
魏老师,flash crash之后有各种监控手段啦,一秒钟卖美国只有上帝能做到了。

【在 T********i 的大作中提到】
: 狗屁坑,当年我的生产环境都是自己搞的,几十台机器每天上亿的真金白银在上面跑,
: 真失控了一秒钟可以把全美国卖了。跑了10来年也没出过啥大问题。
: 还是那句话,世上本无事。。。

avatar
g*t
174
我感觉他们的都是io处理的经验和知识。多少年来本版没几个做过cpu bound问题的。
你也别考虑啥人工智能了。测一下手机你的手机或者汽车 map 导航,
看多少次就freeze屏幕一次。

【在 m*****n 的大作中提到】
: 你们吵得我有点看不懂啊!
: 我给个简单问题,双方各位辩手麻烦回答一下?
: 假设Centos操作系统
: 4核8线程的云主机21台做分布式
: 负载均衡和20台计算(你可以理解为类似于人工智能那种,不是简单IO)都用GO来做
: 且加上了自动重启功能
: 无间断或间断程度很低的持续工作,多久会出事故?
: 事故原因?严重程度?

avatar
m*n
175
对,我做的就是这种low latency的计算型应用
现在都很差么?

【在 g****t 的大作中提到】
: 我感觉他们的都是io处理的经验和知识。多少年来本版没几个做过cpu bound问题的。
: 你也别考虑啥人工智能了。测一下手机你的手机或者汽车 map 导航,
: 看多少次就freeze屏幕一次。

avatar
l*m
176
大多数compute bound问题,一半问题还是io问题,只不过不是网络硬盘,而是内存,
缓存问题,和pcie的问体题。另一半是算法和数值稳定性相关。
老Wei上手应该快,至少pcie irq affinity的经验直接就有用。

:我感觉他们的都是io处理的经验和知识。多少年来本版没几个做过cpu bound问题的。
:你也别考虑啥人工智能了。测一下手机你的手机或者汽车 map 导航,
avatar
T*i
177
一样啊。你没干过不知道。
DMA - Direct Market Access根本控制不住。
drop copy都是旁路的。
我单机100微秒可以送1000个order出去。那是0.0001秒。
10台机器一块儿干会怎样?


: 魏老师,flash crash之后有各种监控手段啦,一秒钟卖美国只有上帝能做到了。



【在 p*u 的大作中提到】
: 魏老师,flash crash之后有各种监控手段啦,一秒钟卖美国只有上帝能做到了。
avatar
n*t
178
我能夠選擇的的時候絕對不用雲機器。我覺得那個是給別人送錢的行為。

【在 m*****n 的大作中提到】
: 你们吵得我有点看不懂啊!
: 我给个简单问题,双方各位辩手麻烦回答一下?
: 假设Centos操作系统
: 4核8线程的云主机21台做分布式
: 负载均衡和20台计算(你可以理解为类似于人工智能那种,不是简单IO)都用GO来做
: 且加上了自动重启功能
: 无间断或间断程度很低的持续工作,多久会出事故?
: 事故原因?严重程度?

avatar
m*n
179
怎么个送钱法?
是租费贵
还是商业秘密保不住?

【在 n******t 的大作中提到】
: 我能夠選擇的的時候絕對不用雲機器。我覺得那個是給別人送錢的行為。
avatar
s*k
180
云确实很贵,上了大规模更贵

【在 m*****n 的大作中提到】
: 怎么个送钱法?
: 是租费贵
: 还是商业秘密保不住?

avatar
c*v
181
jvm算东西,忽快忽慢。imac,win 10 laptop,linux 单机表现很不稳定。
似乎go还好一点。
我怀疑主流服务器系统都是多年来针对io各种问题polish的。
大厂都是以客户无法投诉为朝向的。

的。

【在 l*******m 的大作中提到】
: 大多数compute bound问题,一半问题还是io问题,只不过不是网络硬盘,而是内存,
: 缓存问题,和pcie的问体题。另一半是算法和数值稳定性相关。
: 老Wei上手应该快,至少pcie irq affinity的经验直接就有用。
:
: :我感觉他们的都是io处理的经验和知识。多少年来本版没几个做过cpu bound问题的。
: :你也别考虑啥人工智能了。测一下手机你的手机或者汽车 map 导航,

avatar
m*n
182
敢上大规模,一般赚上钱了,想怎么着都可以
反之,刚起步用云还是挺有性价比的

【在 s********k 的大作中提到】
: 云确实很贵,上了大规模更贵
avatar
p*u
183
同意前面有人讲的,魏老师你这不认识就直接discredit别人的习惯确实不太好。
从price上讲,有很多监控手段例如Circuit-breaker。从volume上讲,即使是DMA的
clients,exchanges对每个session也都有各种throttling。你想一下子发一百万个
orders进market根本没戏,这种crazy的情形从flash crash之后基本就绝迹了。

了。

【在 T********i 的大作中提到】
: 一样啊。你没干过不知道。
: DMA - Direct Market Access根本控制不住。
: drop copy都是旁路的。
: 我单机100微秒可以送1000个order出去。那是0.0001秒。
: 10台机器一块儿干会怎样?
:
:
: 魏老师,flash crash之后有各种监控手段啦,一秒钟卖美国只有上帝能做到了。
:

avatar
p*u
184
咋memory/cache也成IO问题啦??

的。

【在 l*******m 的大作中提到】
: 大多数compute bound问题,一半问题还是io问题,只不过不是网络硬盘,而是内存,
: 缓存问题,和pcie的问体题。另一半是算法和数值稳定性相关。
: 老Wei上手应该快,至少pcie irq affinity的经验直接就有用。
:
: :我感觉他们的都是io处理的经验和知识。多少年来本版没几个做过cpu bound问题的。
: :你也别考虑啥人工智能了。测一下手机你的手机或者汽车 map 导航,

avatar
T*i
185
所有的措施只能部分缓解而已。
Circuit-breaker之类的,都是要求客户自己实现的。Exchange的Circuit breaker很宽
松的。
你既然在做,那你说说exchange一个session的throttle rate是多少?100个session一
个毫秒能送多少个order出去?
你根本用不着发100万order。一个burst 10000个已经很多了。
现在事实上是事后算账。这种disrupt市场的方式无利可图而已。系统有问题,胡搞一
把,其实是防不住的。而且从exchange的角度,没必要去防。而且,exchange基本没有
啥防护措施。
话说我的代码,根本没第二个人看过。我也不允许第二个人看。照样一路绿灯拿到各种
certificate。

【在 p*u 的大作中提到】
: 同意前面有人讲的,魏老师你这不认识就直接discredit别人的习惯确实不太好。
: 从price上讲,有很多监控手段例如Circuit-breaker。从volume上讲,即使是DMA的
: clients,exchanges对每个session也都有各种throttling。你想一下子发一百万个
: orders进market根本没戏,这种crazy的情形从flash crash之后基本就绝迹了。
:
: 了。

avatar
p*u
186
抬杠了吧?DMA throttling rate都在specs里面了:
https://www.nyse.com/publicdocs/NYSE_Pillar_Gateway_Binary_Protocol_
Specification.pdf
你能有100个DMA sessions同时发orders?exchange会卖这么多sessions给你一个公司?

【在 T********i 的大作中提到】
: 所有的措施只能部分缓解而已。
: Circuit-breaker之类的,都是要求客户自己实现的。Exchange的Circuit breaker很宽
: 松的。
: 你既然在做,那你说说exchange一个session的throttle rate是多少?100个session一
: 个毫秒能送多少个order出去?
: 你根本用不着发100万order。一个burst 10000个已经很多了。
: 现在事实上是事后算账。这种disrupt市场的方式无利可图而已。系统有问题,胡搞一
: 把,其实是防不住的。而且从exchange的角度,没必要去防。而且,exchange基本没有
: 啥防护措施。
: 话说我的代码,根本没第二个人看过。我也不允许第二个人看。照样一路绿灯拿到各种

avatar
T*i
187
知道为什么throttle是500messages per rolling 100milliseconds么?
就是允许有人1ms以内,发500个order出去。S&P 500,burst,打你个措手不及。
真要搞事,不可能一直发order。100个session有点难。10个session很轻松。其实足够
了,根本用不完。
你要承认,exchange除了message throttle,基本没有其他的防护措施。更不用说
check buying power了。对不对吧?你认为这个防护力度很大么?

司?

【在 p*u 的大作中提到】
: 抬杠了吧?DMA throttling rate都在specs里面了:
: https://www.nyse.com/publicdocs/NYSE_Pillar_Gateway_Binary_Protocol_
: Specification.pdf
: 你能有100个DMA sessions同时发orders?exchange会卖这么多sessions给你一个公司?

avatar
p*u
188
你不是sell/short吗,干嘛check buying power?S&P 500 index的circuit breaker有
10%,加上其它防止你短时间内获取暴利的trading curbs,我觉得可以了。

【在 T********i 的大作中提到】
: 知道为什么throttle是500messages per rolling 100milliseconds么?
: 就是允许有人1ms以内,发500个order出去。S&P 500,burst,打你个措手不及。
: 真要搞事,不可能一直发order。100个session有点难。10个session很轻松。其实足够
: 了,根本用不完。
: 你要承认,exchange除了message throttle,基本没有其他的防护措施。更不用说
: check buying power了。对不对吧?你认为这个防护力度很大么?
:
: 司?

avatar
T*i
189
大哥,buying power只管买么?long是不是很长啊?short是不是很短啊?只是一种叫
法而已。

【在 p*u 的大作中提到】
: 你不是sell/short吗,干嘛check buying power?S&P 500 index的circuit breaker有
: 10%,加上其它防止你短时间内获取暴利的trading curbs,我觉得可以了。

avatar
p*u
190
谁给不一样的东西起一个名字,闲的?

【在 T********i 的大作中提到】
: 大哥,buying power只管买么?long是不是很长啊?short是不是很短啊?只是一种叫
: 法而已。

avatar
T*i
191
不敢discredit任何人。不过在这个行业里面干的,包括所有做交易系统的。要是不知
道这个词啥意思,我只能无话可说。
当然,如果压根没干过,另当别论。

【在 p*u 的大作中提到】
: 谁给不一样的东西起一个名字,闲的?
avatar
p*u
192
https://www.investopedia.com/terms/b/buyingpower.asp
呵呵,whatever。

【在 T********i 的大作中提到】
: 不敢discredit任何人。不过在这个行业里面干的,包括所有做交易系统的。要是不知
: 道这个词啥意思,我只能无话可说。
: 当然,如果压根没干过,另当别论。

avatar
n*t
193
這麼說吧,你覺得用云主機的好處是什麼?

【在 m*****n 的大作中提到】
: 怎么个送钱法?
: 是租费贵
: 还是商业秘密保不住?

avatar
p*u
194
不用机器机房和网管。

【在 n******t 的大作中提到】
: 這麼說吧,你覺得用云主機的好處是什麼?
avatar
r*t
195
刚发布产品,用得少的时候省钱,2005年以前,发布一个互联网产品成本,得自己买机
器,
有云以后成本接近 0 了。当然,现在自己买机器成本也接近0,但自己 scale up 成本
不低。

【在 n******t 的大作中提到】
: 這麼說吧,你覺得用云主機的好處是什麼?
avatar
a*8
196
比方说你发现你的app在中东很流行。但是忽然有几个国家连接数大幅下降。你一查,
发现你美国的主机的IP段在沙特阿拉伯被block掉了。你也不知道是就是blocked的你,
还是被误伤,但是也没有讲理的地方。你不想放弃中东市场,这时候你发现有两个中东
的数据中心提供云服务,由于就建在利雅得,保证不block。你说用他家的云主机有没
有好处?

【在 n******t 的大作中提到】
: 這麼說吧,你覺得用云主機的好處是什麼?
avatar
n*t
197
問題是他好像care的是性能和穩定度。

【在 p*u 的大作中提到】
: 不用机器机房和网管。
avatar
a*8
198
server farm的scale上去了之后,脱离你的上游厂商:数据中心,电力,UPS,空调,
网络服务提供商,网络设备,主机,存储服务商,脱离了你的数据中心管理:网络工程
师,存储工程师,系统管理员,SRE,系统安全防护,DBA,提性能和稳定度都是扯。
用云服务,实质上是把上面提到的大部分管理工作,包括对Vender的管理,outsource
出去。

【在 n******t 的大作中提到】
: 問題是他好像care的是性能和穩定度。
avatar
n*t
199
嗯,你們可能沒有搞清楚我exactly想問的問題。
他為啥需要用虛擬雞?

outsource

【在 a****8 的大作中提到】
: server farm的scale上去了之后,脱离你的上游厂商:数据中心,电力,UPS,空调,
: 网络服务提供商,网络设备,主机,存储服务商,脱离了你的数据中心管理:网络工程
: 师,存储工程师,系统管理员,SRE,系统安全防护,DBA,提性能和稳定度都是扯。
: 用云服务,实质上是把上面提到的大部分管理工作,包括对Vender的管理,outsource
: 出去。

avatar
n*t
200
對的,我問為啥是virtual machine?

【在 a****8 的大作中提到】
: 比方说你发现你的app在中东很流行。但是忽然有几个国家连接数大幅下降。你一查,
: 发现你美国的主机的IP段在沙特阿拉伯被block掉了。你也不知道是就是blocked的你,
: 还是被误伤,但是也没有讲理的地方。你不想放弃中东市场,这时候你发现有两个中东
: 的数据中心提供云服务,由于就建在利雅得,保证不block。你说用他家的云主机有没
: 有好处?

avatar
g*t
201
把VM下面一层OS和hardware变的replaceable啊。自己组个圈子,韭菜圈起来慢慢割当
然爽了。
MSFT就不需要VM. IBM当初把DOS给了Bill Gates ,结果...


: 對的,我問為啥是virtual machine?



【在 n******t 的大作中提到】
: 對的,我問為啥是virtual machine?
avatar
m*n
202
你怎么实现保密的?

【在 T********i 的大作中提到】
: 不敢discredit任何人。不过在这个行业里面干的,包括所有做交易系统的。要是不知
: 道这个词啥意思,我只能无话可说。
: 当然,如果压根没干过,另当别论。

avatar
m*n
203
自己搞能比云服务替我搞更稳定?
稳定不稳定是硬件+软件决定的吧

【在 n******t 的大作中提到】
: 問題是他好像care的是性能和穩定度。
avatar
S*n
204
就jvm这体量,在现在这些云服务器上就不占优势,动不动就8个g,16g起跳。在一台
machine里面得像皇帝一样供着,养着,看护着。用golang写的程序能屈能伸,轻快便
捷,好养活。
一般现在和go抬杠的就是rust了。但是我的体验是,比如2个月后从其他项目切换回来
,又得熟悉一遍用法……但go因为规则简单,很快能切过来
avatar
n*t
205
自己如果能搞,肯定是自己更穩定。
不會也不願意學的,本來也只能被宰,有什麼別的辦法嗎?

【在 m*****n 的大作中提到】
: 自己搞能比云服务替我搞更稳定?
: 稳定不稳定是硬件+软件决定的吧

avatar
n*t
206
你這說的是雲服務商的動機,沒有問題。我是問用戶的角度point在哪裡?

【在 g****t 的大作中提到】
: 把VM下面一层OS和hardware变的replaceable啊。自己组个圈子,韭菜圈起来慢慢割当
: 然爽了。
: MSFT就不需要VM. IBM当初把DOS给了Bill Gates ,结果...
:
:
: 對的,我問為啥是virtual machine?
:

avatar
a*8
207
术业有专攻。你自己搞未必有AWS稳定。

【在 n******t 的大作中提到】
: 自己如果能搞,肯定是自己更穩定。
: 不會也不願意學的,本來也只能被宰,有什麼別的辦法嗎?

avatar
a*8
208
多了去了。
1. fractional cost comparing physical host
2. easy and fast scale up and down. bring up instance in seconds instead of
weeks (order host, delivery, installation, test)
3. easy and fast migration across data centers
4. better availability, performance because of 2,3
5. tax implications: monthly fee OPT-X, instead of CAP-X and depreciation.

【在 n******t 的大作中提到】
: 你這說的是雲服務商的動機,沒有問題。我是問用戶的角度point在哪裡?
avatar
n*t
209
所以我覺得這個屬於信仰的問題,沒有辦法去絕對說對錯。

【在 a****8 的大作中提到】
: 术业有专攻。你自己搞未必有AWS稳定。
avatar
s*d
210
我猜你在 Amazon
用过ec2感觉还是挺快的

of

【在 a****8 的大作中提到】
: 多了去了。
: 1. fractional cost comparing physical host
: 2. easy and fast scale up and down. bring up instance in seconds instead of
: weeks (order host, delivery, installation, test)
: 3. easy and fast migration across data centers
: 4. better availability, performance because of 2,3
: 5. tax implications: monthly fee OPT-X, instead of CAP-X and depreciation.

avatar
T*i
211
这样搞下去,本版只需要着一个主题一条龙就可以了?
avatar
a*8
212
这个不是信仰问题,是经验问题。没搞过的看起来简单得很,搞过了才知道水有多深。
真那么容易,干掉AWS挣大钱啊。狗云那么多牛逼工程师还不仅没搞定AWS,还把自己从
老三搞成老五了。

【在 n******t 的大作中提到】
: 所以我覺得這個屬於信仰的問題,沒有辦法去絕對說對錯。
avatar
a*8
213
猜错了。而且和本讨论无关。

【在 s**d 的大作中提到】
: 我猜你在 Amazon
: 用过ec2感觉还是挺快的
:
: of

avatar
g*t
214
example:几十个国家deploy给石油公司的项目,你自己组机房不现实。

【在 n******t 的大作中提到】
: 你這說的是雲服務商的動機,沒有問題。我是問用戶的角度point在哪裡?
avatar
n*t
215
你覺得我說這個話,是我沒事找事還是自己自己做過?
自己搞得好,不等於你能幹掉aws。說的難聽點,一個人想解決性的問題,
搞老婆,還是搞雞,還是看A片,人和人不同,沒法強求。

【在 a****8 的大作中提到】
: 这个不是信仰问题,是经验问题。没搞过的看起来简单得很,搞过了才知道水有多深。
: 真那么容易,干掉AWS挣大钱啊。狗云那么多牛逼工程师还不仅没搞定AWS,还把自己从
: 老三搞成老五了。

avatar
n*t
216
問題是aws做起來不是靠這種use case。
而且組機房沒有你想的那麼難。而且這些公司去用aws也不是因為組機房,我這麼說我
是因為我exactly在這個position上幹過。
public cloud對於大公司來說,是政治鬥爭的利器,沒看懂這件事情,就不會理解為什
麼會大公司的人去用aws.

【在 g****t 的大作中提到】
: example:几十个国家deploy给石油公司的项目,你自己组机房不现实。
avatar
r*z
217
能否多讲几句?谢谢

【在 n******t 的大作中提到】
: 問題是aws做起來不是靠這種use case。
: 而且組機房沒有你想的那麼難。而且這些公司去用aws也不是因為組機房,我這麼說我
: 是因為我exactly在這個position上幹過。
: public cloud對於大公司來說,是政治鬥爭的利器,沒看懂這件事情,就不會理解為什
: 麼會大公司的人去用aws.

avatar
m*n
218
你扯得天上去了
就我一个只会Python,Linux靠自学的,办公司
不用云服务直接租主机,难道让我三天两头的往电信的机房去跑?
还是我自己买几台服务器搁家里?

【在 n******t 的大作中提到】
: 問題是aws做起來不是靠這種use case。
: 而且組機房沒有你想的那麼難。而且這些公司去用aws也不是因為組機房,我這麼說我
: 是因為我exactly在這個position上幹過。
: public cloud對於大公司來說,是政治鬥爭的利器,沒看懂這件事情,就不會理解為什
: 麼會大公司的人去用aws.

avatar
m*r
219
网鬼, 怎么aws就是政治斗争利器了 ? 我司也在改革, 分成好几排,改革派(aws)
,保守党(数据仓库),还有墙头草 。 我也觉得这事和政治有关,但具体怎么有关,
就看不出名堂了, 网鬼这么一说,我还真想听听, 按说aws是个挺烧钱的东西,虽然
也挺时髦, 但为什么ceo就被底下一帮人忽悠呢? 还是他假装被忽悠呢?
请赐教。
avatar
s*d
220
不上 aws 老板没业绩

【在 m******r 的大作中提到】
: 网鬼, 怎么aws就是政治斗争利器了 ? 我司也在改革, 分成好几排,改革派(aws)
: ,保守党(数据仓库),还有墙头草 。 我也觉得这事和政治有关,但具体怎么有关,
: 就看不出名堂了, 网鬼这么一说,我还真想听听, 按说aws是个挺烧钱的东西,虽然
: 也挺时髦, 但为什么ceo就被底下一帮人忽悠呢? 还是他假装被忽悠呢?
: 请赐教。

avatar
n*t
221
公司裡面鬥爭的關鍵是你能不能用最小的資源去惡心人,讓你的對手幹不了事情。然後
同時做出一些順利成章的好事。
大公司一般各項ops都依賴vendor,如果新來的某官僚想出政績就需要取代之前的
vendor。但是一般來說,這些都在公司裡面有根深蒂固的關係。你要想從任和一個地方
入手都會受到極大的阻撓。所以人就需要以最少依賴之前的架構去證明自己的策略是
work的。aws這種東西的很多契合都是契合這個目的的。
而且,AWS這樣的public cloud有很多的accouting trick可以玩,因為各項收費都
highly customizable,所以你可以弄出至少說short term來說一個cost 比之前很低的
方案。至於用了一兩年後真正花了多少錢,那就是後面的人的事情了。

【在 m******r 的大作中提到】
: 网鬼, 怎么aws就是政治斗争利器了 ? 我司也在改革, 分成好几排,改革派(aws)
: ,保守党(数据仓库),还有墙头草 。 我也觉得这事和政治有关,但具体怎么有关,
: 就看不出名堂了, 网鬼这么一说,我还真想听听, 按说aws是个挺烧钱的东西,虽然
: 也挺时髦, 但为什么ceo就被底下一帮人忽悠呢? 还是他假装被忽悠呢?
: 请赐教。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。