g****t 发帖数: 31659 | 1 例如你想找一个在windows,mac,linux都能用的concurrent TCP server来用。
c/cpp肯定有开源的或者免费的代码。
但是第一,跨平台net programming的代码,那可不是一般的工作量。
可以说不多见。代码质量很难讲。
第二,维护多半不如golang自带的网络库靠谱。
这种情况,golang相当于提供了一个多个平台之上网络编程的接口。
当然,cpp之后的语言,java什么的也有。但是如果你需要一个static 编译的语言的话。
除了golang,你没别的选择。
当然,golang掩盖了很多OS提供的和网络有关的各种设置参数。但是,除非5年以上
netowork
programming经验的人,一般也不需要去调这些参数。 |
n******t 发帖数: 4406 | 2 這是跨平臺沒難度啊。20年前就這麼寫過了,幾個ifdef而已。ps. windows也是抄的
bsd的 socket,所以除了那個wsastartup,基本上是一樣的。
话。
【在 g****t 的大作中提到】 : 例如你想找一个在windows,mac,linux都能用的concurrent TCP server来用。 : c/cpp肯定有开源的或者免费的代码。 : 但是第一,跨平台net programming的代码,那可不是一般的工作量。 : 可以说不多见。代码质量很难讲。 : 第二,维护多半不如golang自带的网络库靠谱。 : 这种情况,golang相当于提供了一个多个平台之上网络编程的接口。 : 当然,cpp之后的语言,java什么的也有。但是如果你需要一个static 编译的语言的话。 : 除了golang,你没别的选择。 : 当然,golang掩盖了很多OS提供的和网络有关的各种设置参数。但是,除非5年以上 : netowork
|
n*********2 发帖数: 357 | 3 你的这个需求用基于Java的Netty库就可以了。
话。
【在 g****t 的大作中提到】 : 例如你想找一个在windows,mac,linux都能用的concurrent TCP server来用。 : c/cpp肯定有开源的或者免费的代码。 : 但是第一,跨平台net programming的代码,那可不是一般的工作量。 : 可以说不多见。代码质量很难讲。 : 第二,维护多半不如golang自带的网络库靠谱。 : 这种情况,golang相当于提供了一个多个平台之上网络编程的接口。 : 当然,cpp之后的语言,java什么的也有。但是如果你需要一个static 编译的语言的话。 : 除了golang,你没别的选择。 : 当然,golang掩盖了很多OS提供的和网络有关的各种设置参数。但是,除非5年以上 : netowork
|
g****t 发帖数: 31659 | 4 Java不是静态编译的。
【在 n*********2 的大作中提到】 : 你的这个需求用基于Java的Netty库就可以了。 : : 话。
|
g****t 发帖数: 31659 | 5 光是Windows就有一堆网络参数在注册表里。对不同windows还未必一样。buff size什
么的弄错了会慢死。
Linux, macos除了配置参数,可能还有posix问题。
你查查Github,跟网络编程相关的库,cpp的同时支持windows,Linux, macos的很少见。
另外,除了开发,还有维护问题。以前这些东西主要都是cpp写的。确实20年前就有。
但是go毕竟有大公司维护,这是不一样的。
: 這是跨平臺沒難度啊。20年前就這麼寫過了,幾個ifdef而已。ps.
windows也是
抄的
: bsd的 socket,所以除了那個wsastartup,基本上是一樣的。
: 话。
【在 n******t 的大作中提到】 : 這是跨平臺沒難度啊。20年前就這麼寫過了,幾個ifdef而已。ps. windows也是抄的 : bsd的 socket,所以除了那個wsastartup,基本上是一樣的。 : : 话。
|
n******t 发帖数: 4406 | 6 我20年前幹過的事情,你叫我看github?
你告訴我這東西的配置參數有啥? ip, port, 沒了。
【在 g****t 的大作中提到】 : 光是Windows就有一堆网络参数在注册表里。对不同windows还未必一样。buff size什 : 么的弄错了会慢死。 : Linux, macos除了配置参数,可能还有posix问题。 : 你查查Github,跟网络编程相关的库,cpp的同时支持windows,Linux, macos的很少见。 : 另外,除了开发,还有维护问题。以前这些东西主要都是cpp写的。确实20年前就有。 : 但是go毕竟有大公司维护,这是不一样的。 : : : 這是跨平臺沒難度啊。20年前就這麼寫過了,幾個ifdef而已。ps. : windows也是 : 抄的
|
c*******v 发帖数: 2599 | 7 For example:
https://docs.microsoft.com/en-us/biztalk/technical-guides/settings-that-can-
be-modified-to-improve-network-performance
Oracle也有相关文档,以前搞数据库我也看过。
问题的核心似乎是TCP底层有个算法dilemma,buffer size vs delay。
跟最早bbs人的反应时间有关。
70年代时候的原始作者在hacknews发过言。
以前我在本版贴过这条,
你找找看。
【在 n******t 的大作中提到】 : 我20年前幹過的事情,你叫我看github? : 你告訴我這東西的配置參數有啥? ip, port, 沒了。
|
w********m 发帖数: 1137 | 8 Go是AIO
学java的都是弄BIO
zhaoce看到NIO的vertx
惊呼天人,一辈子都弄这个
他还没看过AIO
所以要open minded一点
各个语言都要学一点
ken thompson相当于这行业的祖师爷吧
尊敬一点没有坏处 |
n******t 发帖数: 4406 | 9 Linux改這些東西一般用setsockopt, windows也是支持的。不支持的,自己寫個
windows的wrapper,比依賴某個語言給你設的靠譜。
最關鍵的是,如果你真的想跨平臺還是做產品的,就應該儘量在不要改動系統缺損參數
的情況下,寫出用戶能用的程序,除非你有非常明確的目的。
can-
【在 c*******v 的大作中提到】 : For example: : https://docs.microsoft.com/en-us/biztalk/technical-guides/settings-that-can- : be-modified-to-improve-network-performance : Oracle也有相关文档,以前搞数据库我也看过。 : 问题的核心似乎是TCP底层有个算法dilemma,buffer size vs delay。 : 跟最早bbs人的反应时间有关。 : 70年代时候的原始作者在hacknews发过言。 : 以前我在本版贴过这条, : 你找找看。
|
g****t 发帖数: 31659 | 10 以前我也是不改的。后来是网络服务出问题,一点点查,才学了一点经验。
我对这些仍然是半懂不懂,只是到有感觉“哪里可能会比较麻烦?”这个水平。
【在 n******t 的大作中提到】 : Linux改這些東西一般用setsockopt, windows也是支持的。不支持的,自己寫個 : windows的wrapper,比依賴某個語言給你設的靠譜。 : 最關鍵的是,如果你真的想跨平臺還是做產品的,就應該儘量在不要改動系統缺損參數 : 的情況下,寫出用戶能用的程序,除非你有非常明確的目的。 : : can-
|
|
|
k***e 发帖数: 1931 | 11 这和tcp本身有关,性能极度追求的话不管在哪个平台都需要调参。
can-
【在 c*******v 的大作中提到】 : For example: : https://docs.microsoft.com/en-us/biztalk/technical-guides/settings-that-can- : be-modified-to-improve-network-performance : Oracle也有相关文档,以前搞数据库我也看过。 : 问题的核心似乎是TCP底层有个算法dilemma,buffer size vs delay。 : 跟最早bbs人的反应时间有关。 : 70年代时候的原始作者在hacknews发过言。 : 以前我在本版贴过这条, : 你找找看。
|
k***e 发帖数: 1931 | 12 一般你遇到的出问题,和tcp底层的算法参数都没有关系,检查一下api用的对不对比较
靠谱。
【在 g****t 的大作中提到】 : 以前我也是不改的。后来是网络服务出问题,一点点查,才学了一点经验。 : 我对这些仍然是半懂不懂,只是到有感觉“哪里可能会比较麻烦?”这个水平。
|
l***p 发帖数: 358 | |
y****w 发帖数: 3747 | 14 网络参数大部分都在操作系统层面,应用里还是少碰底层接口。从这个角度也就那么几
个API。go自己也不是重新发明各个平台上的轮子,
【在 g****t 的大作中提到】 : 以前我也是不改的。后来是网络服务出问题,一点点查,才学了一点经验。 : 我对这些仍然是半懂不懂,只是到有感觉“哪里可能会比较麻烦?”这个水平。
|
a********c 发帖数: 3657 | 15 Java 1.0 bio
Java 1.4 nio
Java 1.7 aio
都是10多年前的事了。。。各个io都有自己的好,没哪个绝对好
【在 w********m 的大作中提到】 : Go是AIO : 学java的都是弄BIO : zhaoce看到NIO的vertx : 惊呼天人,一辈子都弄这个 : 他还没看过AIO : 所以要open minded一点 : 各个语言都要学一点 : ken thompson相当于这行业的祖师爷吧 : 尊敬一点没有坏处
|
a********c 发帖数: 3657 | 16 Java 出生就是aot,只不过sun为了marketing加了动态。。。但sun也一直保留了aot
的选项
btw说一个语言不是xx态本身就totally wrong,啥态跟compiler有关系,语言本身美态
。当然java有些feature确实不支持静态,比如reflection。
【在 g****t 的大作中提到】 : Java不是静态编译的。
|
g****t 发帖数: 31659 | 17 我這條說的不準確。
十個字十個字
【在 a********c 的大作中提到】 : Java 出生就是aot,只不过sun为了marketing加了动态。。。但sun也一直保留了aot : 的选项 : btw说一个语言不是xx态本身就totally wrong,啥态跟compiler有关系,语言本身美态 : 。当然java有些feature确实不支持静态,比如reflection。
|
S**********r 发帖数: 284 | 18 Rust 呢, 你说的,rust都具备了。 说说看,为啥 golang 会比rust 好 |
g****t 发帖数: 31659 | 19 rust能走的板子不多。golang支持的cpu多。我之前看的时候是这样。而且我对rust的
网络库有点疑虑。当时看github issues讨论的印象。最后,rust学习成本高,安排人
帮忙维护下golang code容易,rust就很难了。
【在 S**********r 的大作中提到】 : Rust 呢, 你说的,rust都具备了。 说说看,为啥 golang 会比rust 好
|
s********g 发帖数: 9 | |