接触 go 至少 5 年了。一直关注 go 的发展,期间也用 go 做过不少工具,最近一年引入了生产用来开发业务系统。简单的 api 项目非常简单轻量,但是需要手动处理的东西也很多。
生产中使用的是 gin 框架,依赖注入使用 wire ,也编写了很多工具类,该有的都有了。处理复杂场景时依然显得力不从心,也有很多令人疑惑的地方。在 java 中通过一个注解来切面,就可以实现关键接口日志的记录。比如 @Log("删除管理员")。而在 go 中就麻烦很多,需要为每个接口添加中间件,想获取后面执行方法的参数和返回值也相当困难。我们记录日志,也不可能只能记一句话,还需要操作人信息和操作参数及结果。
编译速度没有想象的快,很多时候改动文件多了后,要半天,当然没有改动,第二次启动就快的多了(我们用的 goland )。
二进制启动快,这是优点,但是好像并没有带来什么收益,只是从一个开发人员角度来看,启动很快,很爽,对业务并没有带来什么收益。因为发布的流程是很复杂的,并不是扔上去就直接给用户用,相比较验收等流程来说,1 秒和 10 秒 50 秒几乎忽略不计。
二进制包下,这也是优点,2 阶段构建,我们使用 docker 镜像可以达到整体就 20m 左右,而同样的 springboot 达到 130m 左右(进一步模块化可以达到 80 左右)。但是服务器和制品库之间都是内网,几乎没有感受到明显差别,只对第一次拉取镜像有点用,后续镜像层拉过的都不会重复拉取。
内存占用 go 真的很低,20m 左右,springboot 启动就要给 512 避免内存溢出,当前 128 甚至 64 也可以启动,但是就不能用了。我们的业务服务器都是 2 核 4G ,感觉 go 有点浪费的感觉。
大内存,这点 go 做的不好,固定频率的 GC 在大内存占用时停顿明显。毛刺明显,而不像 java 可以根据业务选择合适的垃圾收集器,调优下很平滑。go 甚至没有提供可以选择的参数。
编程体验,都说 go 好,但是我不这么认为,对于工具类,简单 api 项目,go 确实很好。简单。不需要任何复杂的依赖。但是对于有一定复杂度的项目,感觉 go 的内置库相当匮乏。比如在 java 中可以使用 stream 等一套下来就是最终的数据。而在 go 中即使借助外部库,也需要多步才能完成(别跟我说自己写一个,你去写)。
另外就是 error 问题,写的时候一步一处理。很稳健。但是也很烦。过几天回来看代码,只能看到满屏的 if err != nil 。正常的业务逻辑已经湮没在 error 的海洋里。又臭又长(等等,这个不是说的 java ?)
类型推断,声明变量时不用写类型。有好处也有坏处,好处是少巧几个字母,坏处也显而易见。比如,某个 controller 层调用 service 层代码。user := us.GetUser(ctx, uid),此时如果我想看下返回的数据结构必须到 service 层看,这层是看不到的,也点不进去,像 java UserResp user = us.GetUser(uid),直接点击 UserResp 就能快速到定义。而 go 层次一多就很烦,需要一层层,一层层到最后返回值的地方才能看到。
依然有空指针,nil pointer 。特别是解引用时遇到最多。比如*user.name
半吊子泛型,虽然 java 的泛型实现的也不怎样,但是作为程序员是不关心字节码层面和机器码层面如何实现的,只关心有无,好不好用。
生态,go 的生态云原生基础设施比较多(不是说云原生就是 go ,云原生概念反而是 spring 后面的公司提出来的),业务相关的比较少。而 java 就很多了,很多基金会的组件也很优秀,多如牛毛,java 不仅仅是一门语言,现在说 java 基本是说其对应的生态,包括 kotlin ,java 等等,选择太多甚至出现选择困难症。
说这些不是踩 go ,也不是吹捧 java 。各有各有优势的地方。在工作中依然会大量使用这两种语言。这里只是表达下自己工作中的感受,为后来者选择做个参考。
1
defunct9 159 天前 7
扔到 k8s 里就知道好处了。
|
2
hshe 159 天前
java 是方便。很多现场集成非常好的日志,切面等等。
但是 Go 选对框架也是很重要的,比如可以使用 go-kratos 框架,中间件也能做到 aop 的效果,目前使用感受,最接近 java spring cloud |
3
rrfeng 159 天前
「而在 go 中就麻烦很多,需要为每个接口添加中间件」
每个接口? |
4
StinkyTofus 159 天前 3
我也不喜欢用 Go 去写 web 服务, 缺胳膊少腿的, 好多都要自己实现, 真的很累, 而且自己写的东西, 测试不够难免也有 bug ,不如 java 的生态丰富。
如果只是写个极小的工具, 不需要依赖什么服务, 那么用 go 编译成二进制还是挺爽的, 资源占用很低。 |
5
picone 159 天前 6
|
6
FoxRiverMan 159 天前
扔到 k8s 里就知道好处了。
|
7
seers 159 天前 via Android 6
k8s 里面打开 hpa ,流量来了 java 还在呼哧呼哧启动,go 这边已经在接受流量了
|
8
StinkyTofus 159 天前
@StinkyTofus #4 我最近研究了一下 java 的 native 编译 Quarkus , 内存占用也极低, 简单测试了一下, 大部分 web 用的库都可以正常工作, 当然依然不敢用到生产环境, 怕有坑。
|
9
xiaocaiji111 OP @rrfeng 关键接口,并不是每个接口都需要加,不能放在组上,需要加的每个要单独加,目前没想到很好的办法
|
10
ryalu 159 天前
啊对对对,你说的对
|
11
xiaocaiji111 OP @StinkyTofus 有坑,我有个群,都是生产用这个的,确实很多坑,还是需要别人再踩踩。
|
13
kiripeng 159 天前
洋葱模型花点时间就可以丢进去了,主要还是前期得花时间写好框架流程
|
14
xiaocaiji111 OP @picone 主要是每层都要处理,而在 java 中下面一层抛出就不需要了。最外层捕获就行。好处就是代码干净,坏处就是不知道有没有处理,怎么处理的。要到最外层看下。当然一般 web 都会有个全局异常处理兜底。go 显式处理也有好处,每一步都知道自己干了什么,下一步改怎么干。坏处就是代码变的很长,干扰读代码的流程。
|
15
tianice 159 天前
性能和编码体验需要平衡
|
16
PiersSoCool 159 天前
有了 AI 我觉得都差不多了...体力活基本上不用写了,改改就行,以后语言简洁性的争论估计就没啥了
|
17
wysnxzm 159 天前 26
"go 有问题是你不会用"
"其他语言有问题是语言辣鸡" |
19
jonsmith 159 天前 via Android
没有完善的 web 框架,自己搭确实费时间
|
20
hshe 159 天前 4
我现在都在用 Rust 开发 Web 微服务后台,还在纠结 Go
|
21
BBCCBB 159 天前
资源可能节省了, 开发效率大概率降低了. 语言特性的缺失就要开发人员手动做更多的事情了
|
22
GooMS 159 天前
性能越高人做的也多
|
23
singer 159 天前
@xiaocaiji111 #9 java 不也得单独处理不加的日志的情况吗
|
24
Mystery0 159 天前 via Android 1
公司有个服务,他的逻辑是接收 kafka 消息,然后根据逻辑存储数据到 db ,然后调用另一个服务发短信邮件,最后通过 kafka 发送通知消息给下游服务( Java )。然后压测的时候我这边消息没有堆积,处理没有报错,cpu 曲线刚开始发力呢,下游服务给我说被消息干死了。
当然这只是一个较为极端的例子,下游服务的业务较重,还有其他的逻辑处理。 回到我自己的东西上,Java 服务写了个 api 服务,吃内存 300m+( sb 全家桶),go 写了个类似的 api 服务,吃内存几十 m ,我组的 k3s ,node 普遍是 2c4g ,你说我该选哪个 |
25
povsister 159 天前 via iPhone 4
我看到你说的:go 没有提供 gc 调整手段就已经不想看了…
ballast 在 1.19 成为 MemoryLimit 特性都不知道吗,五年就这水平? |
26
sophos 159 天前
关于切面这个点,可以看看这个项目: https://github.com/go-kod/kod
在依赖注入的基础上,支持 Interceptor ,不需要侵入到业务代码 :-) 有兴趣的话,欢迎试用 |
27
twitchgg 159 天前 via iPhone
用 go 主要实现网络相关的东西,比如需要调用系统 netlink ,没有用 go 写过 web 相关的东西都是 gRPC ,总觉得 go 用来写业务有些不合适
|
29
masterclock 159 天前
1. 生成中使用 echo ,好像没啥工具类,偶尔有个中间件,似乎没啥其他需求。
1. 编译速度感觉相比早期版本下降了,可用是错觉?不过一般十几秒内吧,再长就是 CGO 或者出问题了。 1. 二进制启动快,这个最重要啊 1. 二进制包小,这个用处一般,但跑在边缘小尺寸设备特别有用,否则尺寸、流量、性能都是问题 1. 内存占用低,省钱、大大地省钱 1. GC ,业务不敏感,不关心 1. 编程体验,其实我喜欢 rust ,不过团队没法推,Java 太啰嗦,Kotlin 不错 1. error 问题,确实是个问题,但我不喜欢混淆 error 、exception ,用 java 还是一样,rust 挺好 1. 类型推断,java 麻烦,user := us.GetUser(ctx, uid) vs code 下可以直接挑掉 GetUser 地返回类型吧? 1. 依然空指针,对,所有更喜欢 rust 1. 泛型,半吊子,语言的第一版没跟着一起出来,后来加的泛型似乎都不好用 1. 生态,我们够用,不够的用 java 的 [doge] 早期用 Scala ,ZIO 、doobie 等真是赞,但团队推不开,2.1x 、3.0 版本等一番折腾,放弃 |
30
abc950309 159 天前
@povsister 有调整手段,GO_GC 相关参数可以看下
性能还是好很多的,1c 接 20k qps 的服务都能做出来,感觉主要是没有 Spring 全家桶的 overhead ,内存用量也少很多。创业公司的小服务用 Go 能省不少服务器的钱,当然 Java 程序员一般便宜一些,这个哪个省的多就要权衡了。 |
31
guanzhangzhang 159 天前 2
go 又不是只能写 web ,很多 cli tool ,四层服务 daemon ,最近看到一个僵尸网络就是 go 写的,天然交叉编译,不依赖外部环境
|
32
cmdOptionKana 159 天前
规模小的项目,Go 还是很有优势的。
Java 千好万好,那是项目足够大,或者有钱不用节省资源的时候才能体现优势。 |
33
yooomu 159 天前 via iPhone 3
用 go 写业务纯折磨,集合用 java stream 一把梭处理完了,go 还在考虑中间变量怎么命名。用合适的工具干合适的事
|
34
xiaocaiji111 OP @povsister 说这话的时候,要想一下,别人并不是没网,也肯定查阅过相关资料的,能调和 java 的能调是不一样的。
|
35
abcde123456789 159 天前
上周末接了个小活
增删改查四个接口 让 gpt 帮我写的,用 go 然后打包直接给个 exe ,不用配置运行环境,给他们直接运行去了,这点是很爽的。 几百大钞入手 |
36
wujianhua22 159 天前
有两句话说:
1 、换个顺手的 IDE 工具,能帮你加快效率 2 、看看别人怎么实现的,目前来看你的 go 的水平不是特别高,所以多看看别人写的源代码是个很不错的方法 |
37
povsister 159 天前 4
@xiaocaiji111
你的字里行间并没有让我觉得你是完整的调研过各种语言的优缺点才做出的选择 就拿延迟这一项来说,如果你无法容忍 GC 带来的毛刺,那么选择无 GC 语言才是你的出路。 退一步讲,究竟是什么场景要吃掉大量内存造成 GCspike 你也并没有解释。 2024 年了,连 JVM 都进入 ZGC 一把梭的年代下,居然还有人在纠结 GC tune ?到底是代码写的太屎导致要在 GC 擦屁股还是其他原因我持保留意见。 再拿语言层面来说,go 在 better C 这一点上我认为非常成功,跨平台,交叉编译,不依赖 glibc ,体验都是非常好的。所以,你更多的是让我觉得:你是在试图弄清楚一把黄油刀为什么没有瑞士军刀那么多功能和易用。 所以,问题又回到选型上来。 现实问题没有既要又要,如果没有,最好的办法就是你去把它写出来。哦原来你说:“别跟我说自己写一个,你去写“ 那我觉得没什么好说的了。 |
38
InkStone 159 天前
变量类型那一条,应该说是 IDE 太烂了。Java 也支持 var ,但像样点的 IDE 都可以把变量类型显示出来的,甚至包括 VSCode 装对了插件都可以
(看到楼主用的是 Goland ,我很难想象都 2024 年了 JB 家的 IDE 居然连这种基本功能都不支持么? |
39
version 159 天前
做中台等固定业务的中间件稳定字段业务还行..以销售主导客户主导的需求..那就是深坑了..预到不好..后期就是发个版本或者兼容都要成了 数据库修改维护大师了..
开发效率自然是慢了..比起 php java 但是架构师需要从语言方面掌握主导权..未来编程卷后.就看中小公司老板反应了..要低成本还是高大上的架构. |
40
wujianhua22 159 天前 1
@InkStone goland 的强大他可能还没了解透,当然一把再好用的刀,在杀猪匠的手里也就只能杀猪呐。
|
41
fingerstyle 159 天前
@defunct9 +1
|
42
Richared 159 天前 3
不知道什么时候开始,java 垃圾都成了政治正确了。
|
43
sagaxu 159 天前
开发效率不如 C#或者 Java ,但是省资源,CPU 未必省多少,但大项目内存起码省 50%,小项目能省 80%以上。Java Spring 全家桶启动成本高,最简单的小项目内存 300M 起跳。
|
44
ShuWei 159 天前
每个语言都有自己不同的设计思路,这种对比意义可能不是特别大,根据自己的能力、需求去选择适合自己的语言和框架就可以了
|
45
pkoukk 159 天前
不敢说和别的语言比,和 java 比,节省资源这一点有问题么?
丢到 k8s 里看下每月资源账单,还是能少不少的 |
46
0o0O0o0O0o 159 天前
|
47
main1234 159 天前
还在纠结语言问题......语言只是工具而已
|
48
SUMPaul 159 天前
基于 gin 简单封装一套 mysql+redis 的框架,后面开箱即用,改改配置然后 CRUD 就行
|
49
imbigbao 159 天前
[PHP--中国互联网最好使的背锅侠]( https://mp.weixin.qq.com/s/0fw8KTEt-3vrXaBeTAFMgw)
一般的业务系统开发,Java 第一、PHP 第二。不接受反驳。Go 目前的强项不在这方面 |
50
GoodAfternoon 159 天前
@seers 为什么你能发语音😄
|
51
itskingname 159 天前
我主要的编程语言是 Python ,偶尔用 Go 。给我的最大感受就是我写出来的 Go 代码基本上写完就能运行。最爽的一次,500 多行代码,写完以后没有任何调试,直接运行,完全满足要求。但用 Python 从来没有这么爽过。
|
52
xiaocaiji111 OP @povsister 说了,只是发表个人看法,请不要带着情绪来,谢谢
|
53
securityCoding 159 天前 1
当我维护过 c++,scala 代码才知道谁才是小甜甜,一行 go mod tidy 直接起飞
|
54
xingjue 159 天前
说实话 效率和资源确实节省了太多 用了多年的经验哈 现在只用 go 和 js
|
55
dwu8555 159 天前
go 简单,好用,实用。这 3 点没有语言能出其右。
|
56
abc950309 159 天前
@imbigbao Java 最大的优点是国内的工程师红利,「深耕」 Java 的太多了,低端市场上很便宜。之前面试一个老哥,数据库索引说不明白,排序的复杂度不会算,面完之后问我为什么不问 Java 八股文。这种深入了解 Java 的人才,只能说最适合做「业务开发」了,真的是 CURD 小子的不二之选。
|
57
zoharSoul 159 天前
说的很中肯
|
58
muchengxue 159 天前
日志为什么每个接口添加中间件? 一个中间件就可以获取所有接口的请求参数和响应数据啊
|
59
Hanggi 159 天前
![图 1]( https://developer.qcloudimg.com/http-save/yehe-1391949/cf31c07c2463dba694084e15f9337f22.png)
![图 2]( https://developer.qcloudimg.com/http-save/yehe-1391949/2fc52b58f6865ec1c5459202bcdcbe8a.png) 10 年前的文章就已经解释这个问题了,不需要纠结。 只要你的需求与 go 语言的定位符合,那他就是你的首选。 如果你对开发的程序有开发效率、性能、资源利用效率、并发等方面有综合的需求,go 可以满足你。 如果你对单一方面有极高的需求,那么有很多其他语言比 go 语言更适合。 |
60
wen20 159 天前 1
基于 gin 封装的 api 框架, 也没有文档。
https://gitee.com/apiok/gofly_framework 代码自动生成工具。(发现工具不好用可以找我要最新的) https://gitee.com/apiok/gofly-gen 如果你愿意花半天时间看看, 相信会改观对 go 的看法。 配置好 mysql , 运行 gofly-gen 自动生成代码。router, handler, service, dml, dal , model 层的代码全部自动生成。 根据 mysql table 生成 model , 其他层的代码会自动生成,自动解决 include. 加载。 有业务逻辑的地方在 service 层写代码。 别喷这什么垃圾,也没文档,本来就是自用的。 |
61
bthulu 159 天前 2
```启动很快,很爽,对业务并没有带来什么收益。因为发布的流程是很复杂的,并不是扔上去就直接给用户用```
这只是你们, 我们发布流程很复杂, 但是全自动化, 很快, 非常快, 1 秒不到就可以发布完毕 |
62
jheroy 159 天前
做 web 真不好说,不过我们公司是拿来做游戏服务器,相比于 c+lua, 和 c++来说,go 还是有很大优势的。
|
63
jheroy 159 天前 1
另外我们公司很多基础库都要求自己写的,虽然都有公共库但是不让用。通讯协议自己写, 加密算法自己写,连数据库序列化的库都是自己写的, 唯一能用第三方库的地方是接了其他公司的 sdk 。
|
64
yyttrr 159 天前
公有云上 弹性部署 启动速度很关键 能节约很多成本
|
65
xieren58 159 天前
不如 rust / zig...
|
66
sampeng 159 天前
so 。。。。为啥你要拿 golang 和 spring 比。golang 又不是来抢 java 饭碗的。有一个算一个 java 换 go 的都是内部没赛道卷了,得腾出空间来可以继续卷。
当考虑 spring 和 golang 的时候 golang 就已经舒了,golang 再牛逼也不可能和几十年开源社区比。要达到 golang 同样或接近效果的 java 也有很多解决方案,只是 spring 比较是事实上的 java 框架。 |
68
tiiis 159 天前
内存便宜,Java 好招人😅
|
69
tonyVex 159 天前
go 写些小项目还是行的,你们都用什么框架自动生成数据库的对应的 CRUD 逻辑?
|
70
GTim 159 天前
找一个 Golang 程序员,相比于 Java ,购买好多服务器了,但是,一个团队用 Golang 真的是护城河有没有?
我一个朋友天天吐槽技术 Leader,就是换不了,因为用了 Golang 。 其实我后来发现,用 .net 的包管理模式才是最好的,Model 层面单独发一个包。 |
71
james122333 159 天前 via Android
日志这种东西实现方法很多
你可以学 java 直接 panic 在最外层 resolve 也可以用个 goroutine 或 rpc 作为日志中心接收信息 golang 也可以 String interpolation 写日志其实还不错用 golang 现在的缺点就是工具链变肥肿了 不然其实也还不错 还多了范型可用 |
72
james122333 159 天前 via Android
另外不建议用注解方式依赖注入
你封装个方法呼叫 new 以及其结构内置方法即可 |
73
perfectlife 158 天前 1
在 k8s 里用 hpa 才能明白启动快的好处,java 服务都没有做 hpa 的价值,启动太慢了
|
74
james122333 158 天前 via Android
不想新增 struct map 存起来就好 不过很多东西用依赖注入也就多了 直接在某 package 弄个已导出变量也就完事 就像在 java 内直接在某命名空间弄个 static 变量也就完事 什么 redistemplate XxxMapper 搞成依赖注入简直浪费时间
|
75
NizumaEiji 158 天前
写过一丢丢 go 用过 kratos 框架
就我个人而言 go 开发体验实在称不上多好 |
76
vincent7245 158 天前
我也是 Java 程序员,现在已经跳过 go 直接用 rust 了。
平时写业务用 java spring 那一套,出活快。 要效率和内存,就用 rust 。 go 是谁? 真的不熟 |
77
Breacher 158 天前 via iPhone
要是觉得编译速度慢可以 go mod vendor, 这是 vendor 的一个好处,在 CI/CD 省一点点时间 🤷♂️
|
78
rahuahua 158 天前 1
@StinkyTofus 好奇问下写 WEB 服务,go 缺啥需要自己实现的
|
79
312ybj 158 天前
写过一年 Go , 因为 CTO 要转 Go ,普通 Java 服务,最低都要 2 核 4g ,但是 go 这玩意真不挑机器,200M 跑得嗖嗖的。真能减少很多机器成本。 但是随着而来的就是匮乏的生态,很多框架都需要自己二开,但是你要说好不好,公司让转,那就带薪学习,我现在又写回 Java 了,还写写 python , 要是做大型复杂项目的话,我还挑 Java ,复杂需求不在乎那点优化
|
80
wowbaby 158 天前
go 用过几次就没欲望用了,满屏的 if err != nil 真受不了,写 web 没有优势,就是给自己找罪受,宁愿用 java 或 php ,多省点时间休息。
|
82
fzls 158 天前
go 确实感觉很多地方很原始-。-没有 Java 那样有很多封装好的现成库或范式可用
|
83
grittiness 158 天前
@rahuahua 我是 go 的初学者,最近试了一下 go 写 web 就觉得 orm 用的很不自在,复杂的关联 sql 写起来很别扭,以及常见的分页查询,都得自己封装一遍,似乎没有通用的轮子可以直接拿来用的(大概率是我菜。。)
|
84
DOLLOR 158 天前
我写 java 都是 var 声明,反正编辑器会自动提示变量类型。
|
85
dengqianyi 158 天前 1
没人试试 goframe?很好用啊
|
86
duanzhanling 158 天前
云原生,GO 是神
|
87
lolizeppelin 158 天前 via iPhone
|
88
kaktos 158 天前
老的 Java 项目可以通过 GraalVM 改造,编译成 native image ,启动速度上基本媲美 golang 了,内存占用也相对减少,但改造过程中问题也会很多,比如不支持反射等。总之,各个语言都在不断发展中,选择适合公司业务的语言就行,没必要为了选择而选择。。。
|
89
layxy 158 天前
开发效率说实话目前还是不如 java,java 的轮子足够多,流式编程确实比较爽,go 有些时候还是需要自己造(即便找到了相关开源组件有些不健全,有些还没 release)
|
90
Citrus 158 天前 via iPhone
接触了 Go 5 年,不知道 GC 可以调?是不是可以再深入了解一下。
|
91
madku 158 天前
做过几个项目就知道 Go 写业务是多么顺手
|
92
gimp 158 天前
抛开场景谈语言就是耍流氓。
|
93
dododada 158 天前
@grittiness 我以前 sql 都是手搓,因为 dba 要审核;后来试了试 orm 的那些方法,发现太罗嗦,还要去研究 orm 自身的用法,还不如手搓
|
94
Felldeadbird 158 天前 1
go error 确实痛楚。满屏代码 if err != nil 。
go 不少基础类库需要自己实现,不然就网上找,写起来挺痛苦的。这是我从 PHP 过来思考的。但是现在有了 AI ,一些库我都问 AI 拿,感觉这点已经不再是难题了。 gin 确实强大,开箱即用。结合 GORM ,虽然 GORM 用起来很奇怪,但是习惯后就很舒服了。 总的来说,开发效率感觉没有提升太大,感觉还有点慢。可能因为我刚写 go 吧。 |
95
lyxxxh2 158 天前
2 月写的吐槽注释。
/* * golang 没官方的 digest auth 支持 因此封装 http 客户端 废话吐槽:还没见过 http 客户端不支持 digest auth 的 让我开眼界了 digest auth 文章来源: https://stackoverflow.com/questions/39474284/how-do-you-do-a-http-post-with-digest-authentication-in-golang resty 有 digest auth 但是 post put 都有 bug: net/http: HTTP/1.x transport connection broken: http: ContentLength=27 with Body length 0 这个代码很差 后面再优化了 */ 这生态令我无语了,浪费我一上午的时间。 |
97
fatpower 158 天前
省资源,启动快。服务规模没上去是很难体现这两个优势。
|
98
shellcodecow 158 天前
emmm...8845HS AMD CPU 64G DDR5 , 跑了个 k3s 和 4 个 pod pod 里面是 go 就好比筷子在西湖里面乱搅
|
99
8355 158 天前
你这种 2 核 4g 的小机是 php 的舒适区。。。
复杂度上没有到 go 的舒适区 java 就更不用说了。。。 我的理解 大型 curd 项目多人维护需要大量主流中间件支持一定是 java 最好 没有之一 go 适合用到 rpc 调用个别接口很有针对性的方面优势项,普通 curd 接口真不需要用 go 来写 不论 java 还是 php 都完爆 |
100
beneo 158 天前 1
钱多的团队玩 Go ,反正啥都可以自己造,没钱的团队用 Java ,招人很简单,Java 多如狗
|