为什么字节大量用GO而不是Java?

为何字节青睐Go与Rust,而阿里执着于Java? 在考虑技术选型时,一家公司是否切换编程语言并非单纯看开发效率,还必须评估团队的学习成本、代码库迁移的复杂性,以及在现有技术基础上累积的代码质量和稳定性。但当淘宝的用户基数和交易量急剧增加时,PHP逐渐暴露出它在高并发和海量数据处理方面的不足,特别是在处理敏感的交易数据时,PHP的性能和稳定性明显“顶不住”。以阿里为例,Java之所以继续“主宰”技术栈,除了它的稳定性外,更多的是由于这个架构体系下技术积累的“沉没成本”过于庞大。因此,Java不仅是阿里历史技术选择的产物,还是业务需求和团队沉淀的自然延续。 阅读详情
AI摘要

本文分析了字节跳动选择Go而非Java的原因,包括Go的轻量级、无历史包袱以及适合快速开发;同时提到早期团队领导者可能的个人喜好和Java学习门槛。作者还将分享个人成长秘诀,预告周三直播讲座。,

见字如面,我是军哥。

我看很多程序员对字节编程语言选型很好奇,为此我还特地问了在字节的两位4-1的技术大佬朋友,然后加上自己的思考,总结了一下就以下 2 个原因:

1、 选型上没有历史包袱

字节的早期的程序员大多来自于百度、360,本身就是 php / c++ 的背景,一开始选择了 python ,后来发现 python 的性能抗不住了,选择了go。再后边来的人也继续用 go 是因为 go 的各种工具链配备比较完备了,换其他语言成本就高了。

2、为什么不选Java?

适合做业务开发还有就是 Java ,字节的程序员相对年轻,普遍 95 后,早期成员肯定也思考过选择 Java 的问题,但是 Java 的体系比较庞大需要学习的东西也很多,想一下子上手还是比较困难的,而语法也相对简单,相对来说上手还是比较容易的。补充一句,字节也有 Java 也有 rust ,只是 go 的占比最大。

3、其他猜测原因 

还有一种可能性猜测,说字节早期当时最大技术负责人不喜欢 Java 或者说他自己也不擅长 Java ,这个说法还是讲的通的。

网上还有一种说法是,说选了 GO 之后对于达成 OKR 有帮助,为什么呢?因为很多中间件 GO 缺失,正好可以自己自研一款,这 OKR 就达成了~这种我觉得大概率不是,是一些人 yy 的想法。

聪明的读者,你觉得为什么字节选 GO 而不是 Java 呢?欢迎留言区说说你的看法和意见~

最后,经常有读者后台问我,为什么不论在职场还是自己干,都成长这么快!有什么秘诀吗?!说句掏心窝的话,这里面还是有秘诀和方法的,我准备本周三晚上21点开直播分享,全是掏心窝子的干货,记得点击下方预约,我们不见不散~

以往热文推荐:

如何做好向上管理?来自一个真实案例!

破局35岁危机:技术人如何做好职业规划?!


更多精彩,关注我公号,一起学习成长

73d73175fb5457850d4576ccc58b04ae.png

Java map和golang map的一些点 Java map和golang map的一些点hash函数Javagolang内存存储模型:JavaConcurrentHashMapJDK7的分段锁思想JDK8的红黑树golang 背景:Java 1.8.40 Golang 1.13.5 hash函数 Java 哈希函数代码如下: static final int hash(Object key) { int h; ... 阅读详情

相关推荐

字节跳动推新语言潮流,阿里为何坚守Java?背后的技术与战略分析

摘要:技术巨头字节跳动和阿里巴巴在编程语言选择上呈现显著差异。字节跳动积极引入Go、Rust等新语言,以提升高并发性能和开发效率;而阿里巴巴坚守Java,看重其成熟生态、稳定性和企业级应用优势。这种差异源于两家公司的业务需求和技术积累不同:字节跳动追求技术创新和灵活性,阿里巴巴则更注重系统稳定性和团队技术储备。语言选择不仅是技术决策,更是战略考量,最终都是为了更好地服务业务发展。(147字)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1341

Go vs Java:为什么越来越多大厂开始青睐 Go?

Goroutine 是 Go 语言原生支持的并发单元,相当于用户态的轻量线程,由 Go runtime 调度。}()Goroutine 是非阻塞的,不会阻塞主线程每个Goroutine的初始栈的大小很小(约 2kb)并且支持动态扩容支持成千上万的并发执行,资源占用远小于操作系统的线程。

2302_76222359的博客 1170

无需上下文,MCP新机制让大模型主动“提需”:节约 98% token 开销,并保持准确率基本不变!

值得注意的是,MCP 协议定义的服务器描述通常较为简洁。为了提升匹配效果,我们引入 Qwen2.5-72b-Instruct 模型,对所有服务器的原始资料(通常为 ReadMe 文档)进行总结提炼,参考其 capabilities、features、usage patterns 等要素,生成服务器的 summary 信息,作为相对详尽的描述文本用于匹配。然而,现有的 MCP 调用机制下,所有工具的描述信息都被注入大模型的系统提示词,导致了非常长的上下文开销,也为大模型的表现带来了影响,降低了模型的性能。

我爱计算机视觉 1171

Go vs Java:为什么 Go 适合短平快,Java 统治大厂?这篇讲透了

对比了 Go 和 Java 在中小企业与大型业务中的适用场景。Go 凭借轻量镜像和原生 NIO 支持,适合短平快的项目;Java 则依靠 JIT 和生态优势,胜任复杂场景。文章深入剖析 BIO、NIO、VT 等技术原理,梳理 Java 的历史遗留与 Go 的现代设计,并展望 Java 21 的虚拟线程革新。适合对语言选型和底层优化感兴趣的开发者阅读。

RedDragon_Will的博客 1034

接地设计的本质:按电流类型选择物理连接方式

接地是电子系统中实现电位参考、噪声抑制与安全保护的基础技术,其核心原理在于为不同性质的电流提供可控的低阻抗返回路径。从直流到GHz频段,电流的频率特性、能量等级和持续时间决定了接地的物理实现方式——工频安全电流依赖低电阻导体,高频噪声需低感平面或磁珠衰减,ESD脉冲要求受控泄放电阻,浪涌能量则必须通过独立短路径导入大地。这种‘目的决定方式’的设计逻辑,直接关联EMC合规性、信号完整性与系统可靠性。本文聚焦PCB级与设备级工程实践,详解安全地、功能地、浪涌地与静电地的判据差异及六种典型连接策略,帮助硬件工程师

weixin_36369848的博客 258

从零开始Cubemx配置STM32搭载freeRTOS以及lwip实现tcp网络通信(二)

Cubemx配置LWIP,实现网络通信

qq_30623327的博客 1万+

字节为何选择go语言作为开发语言,gin框架实现一个webSocket聊天功能的案例

我们可以理解进程是计算机资源分配的最小单元,也是CPU分配资源的最小单位,具有独立的内存。go天生支持高并发,符合字节跳动这种流媒体的业务场景,而JAVA的优势是生态比较强大,从web应用到大数据、云计算,JAVA都有成熟的解决方案。go诞生于Google公司的工程师,是出自c语言之父之手,底层是拿c开发的,所以可想而知go具备高性能和天生支持高并发的特性。,像docker,k8s,底层都是拿go语言实现的。所以java有它的优势,go也有它的优势,没有谁比谁更好这一说,只有合适。

m0_46168848的博客 1087

【实用教程】使用AlphaFold2进行蛋白质结构在线预测

使用Colab进行简单快速的AlphaFold2在线的蛋白质三维结构预测

Eumenidus的博客 14万+

最全字节跳动在 Go 网络库上的实践,2024年最新一招彻底弄懂

RPC 调用通常采用短连接或者长连接池的形式,一次调用绑定一个连接,那么当上下游规模很大的情况下,网络中存在的连接数以 MxN 的速度扩张,带来巨大的调度压力和计算开销,给服务治理造成困难。上一章中我们说了业务层的零拷贝,而众所周知,当我们调用 sendmsg 系统调用发包的时候,实际上仍然是会产生一次数据的拷贝的,并且在大包场景下这个拷贝的消耗非常明显。而上述 Nocopy Buffer 基于其灵活切片和拼接的特性,很好的支持了 nocopy 的数据分包和合并,使得实现高性能连接多路复用方案成为可能。

2401_84925284的博客 1132

(25.08)Ubuntu20.04+ROS1复现FAST-LIO2

请确保在。

m0_69023437的博客 3989

麒麟V10服务器多硬盘安装与分区实战:告别自动分区,手动分配/boot、swap和/根目录

本文详细介绍了麒麟V10服务器在多硬盘环境下的手动分区策略,包括/boot、swap和/根目录的优化分配方案。通过SSD与HDD混合存储架构的合理规划,提升系统性能和运维效率,适用于企业级定制化系统部署需求。

weixin_26976635的博客 405

字节大量使用新语言,Go、Rust等,为什么阿里抱着Java不松手?

近几年流行把 Java 项目改写成 Go,再从 Go 改成 Rust,理由大多是为了“省资源”,但其实只要坚持使用 Java,升级到 Java 21 并结合虚拟线程和分代 ZGC,就能轻松获得多倍性能提升和大幅内存节省,而大部分业务代码基本不用改动。相比频繁换语言折腾,不如抱紧 Java 这个成熟生态的大腿,紧跟官方最佳实践,既稳定又高效。很多所谓的“重写”行为,说到底更多是为了刷绩效、做汇报,而非真正的技术或业务收益。Java面试题库,以备不时之需!

程序员高级码农的博客 1994

【Lua面试】2021年Lua面试题分享(4.25更新)

lua深拷贝和浅拷贝的区别?如何实现深拷贝? lua中ipairs和pairs的区别? 链接: link.

qq_21407523的博客 2万+

为什么劝你要学习Golang以及GO语言(Go语言知识普及)

为什么劝你要学习Golang以及GO语言

m0_69234258的博客 4973

MTK(基础篇)ROM烧录以及分区的作用

本文介绍了MTK芯片设备的刷机流程及关键分区功能。首先通过MTK烧录工具加载ROM文件(包括引导文件和分区表),重点解析了各分区的核心作用:preloader类似BIOS负责硬件初始化;lk作为二级引导程序加载内核;vbmeta验证系统完整性;boot包含Linux内核;dtbo调整硬件配置;modem管理通信功能;tee保护生物识别数据;system/vendor分别存放系统核心和硬件驱动。特别指出preloader、vbmeta等关键分区损坏会导致设备变砖,而recovery分区是重要的救砖入口。全文简

weixin_49303682的博客 443

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

字节大量使用新语言,包括go,rust等,为什么阿里一直都抱着java不松手?

与当年从 Java 转向 PHP 的情况类似,从 Java 迁移至 Go 带来的收益有限,但成本很高:Go 缺乏面向对象的设计理念,同属 C 系语言,从 Java 切换过来需要巨大的范式转换,而所带来的内存等方面的优化,对大厂来说吸引力并不足够。它以接近 PHP/Java 的开发效率和接近 C++/Java 的运行性能,吸引了许多原属于 C++/PHP 生态的大厂,包括百度、腾讯、美团、滴滴和字节等,纷纷引入 Go,用于替代业务层中某些固定、偏底层的模块,或系统层中更接近业务的上游服务。

2501_93078354的博客 822

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

为什么要学习Golang

第一讲 为什么要学习Golang 首先我们看一下官网的介绍: Go 编程语言是一个开源项目,旨在提高程序员的工作效率。 Go 具有表现力、简洁、干净和高效。它的并发机制可以轻松编写程序,充分利用多核和联网机器,而其新颖的类型系统可以实现灵活和模块化的程序构建。Go 可以快速编译为机器代码,且具有垃圾收集的便利性和运行时反射的能力。它是一种快速的、静态类型的、编译的语言,感觉就像一种动态类型的解释型语言。 1、背景 go是一个Google公司推出的一个开源项目(系统开发语言),它是基于编译、

u010887012的博客 692

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

为什么要使用Golang以及如何入门

Go是一种开放源代码的编程语言,于2009年首次发布,由Google的Rob Pike,Robert Griesemer和Ken Thompson开发。基于C的语法,它进行了一些更改和改进,以安全地管理内存使用,管理对象,并提供并发静态或严格的键入。使用简单,同时提高生产率提供高水平的代码效率企业的高级绩效。许多著名的公司已经采用了Golang,包括Google,Apple,Facebook和BBC。为了弄清楚为什么应该使用Golang,我们要利用一个明显的优势。

kelai_6792的博客 1270

Dubbo为什么要用Go重写

先说两句 我常常在散步时思考很多技术上的「为什么问题」,有时一个问题会想很久,直到问题的每一个点都能说服自己时,才算完结。于是想把这些思考记录下来,形成文章,可以当做一个新的系列。这些文章中你可能看不到代码,但能窥探到一些容易被忽视的问题,以及问题更深层次的「为什么」。 今天带来第1篇,Dubbo为什么要用Go重写? 诞生于阿里巴巴,2011年开源的Dubbo已经走过了10个年头。在2019年,它被用Go重写并开源,如今两年过去,已经从当初的V1.0.0版本发展到了V3.0.0,截止目前star数3.8K

捉虫大师 712

为什么阿里、字节、腾讯都在用 Go?揭秘这门语言的赚钱密码!

为什么阿里、字节、腾讯都在用 Go?揭秘这门语言的赚钱密码!

gopher123的博客 1219

golang和Java比较

Golang(也被称为Go)和Java都是流行的编程语言,都有自己的优点和用途。下面是Golang和Java之间的一些比较。

runqu的博客 2718

为什么最近听说 Go 岗位很少很难?

其实不单单 Go 岗位少了。由于宏观的影响,我们常接触到的招聘岗位都少了。普遍来讲,还是建议如果没想明白就先苟着,降低负债、现金为王。人是环境的反应器,常常会受到各种因素的影响。但在这种时期,可能想清楚自己的目标和感兴趣的内容、方向,会是一个不错的提高机会。而在缩量的环境下,如果想找到增量。就要去一个风口或上行周期的领域。例如最近比较火的 AI。之前的新能源,不过也要警惕是个新坑。

IT界那些事儿 4019

Go语言很难吗?为什么 Go 岗位这么少?

其实不单单 Go 岗位少了。由于宏观的影响,我们常接触到的招聘岗位都少了。普遍来讲,还是建议如果没想明白就先苟着,降低负债、现金为王。人是环境的反应器,常常会受到各种因素的影响。但在这种时期,可能想清楚自己的目标和感兴趣的内容、方向,会是一个不错的提高机会。而在缩量的环境下,如果想找到增量。就要去一个风口或上行周期的领域。例如最近比较火的低代码,比如JNPF 快速发平台,采用的是前后分离框架(SpringBoot+Mybatis-plus+Ant-Design+Vue3)。

wofacailo的博客 1563

java golang tcp socket导致线上服务器出现大量close_wait的完整示例

tcp断开连接的四次挥手 先说说tcp的四次挥手,这里假定A端为主动发起关闭端,B端为被动接收关闭请求端。A把tcp的数据包中标识位FIN置为1,seq为一个随机数,发送这个包给B端,自己进入FIN_WAIT_1状态;B端收到了马上给A端回复ack(A端收到ack进入FIN_WAIT_2状态),然后自己进入CLOSE_WAIT状态。然后这个时候需要业务代码处理,把自己需要发给客户端的数据发送完,然...

Anteoy的博客 2222

一文告诉你Golang和Java的区别

Golang和Java是两种非常流行的编程语言,它们分别具有自己的优点和特点。是否选择Golang或Java作为开发语言,往往要基于项目的实际需求和具体情况来进行准确的选择。在本文中,我们将探讨Golang和Java在性能、语法、标准库、生态系统等方面的区别与差异,涉及到实战经验以及多个案例分析。我们希望在深入了解Golang和Java之后,能够做出更为准确、理性的判断,以此为您带来更好的编程体验。

2301_78348935的博客 7647
上一篇: 如何搭建一个拖垮公司的技术架构?!
下一篇: 18年互联网老兵:技术人如何快速成长?!
军哥手记
军哥手记 业界专家认证 业界专家认证
博客等级 码龄21年 661粉丝 608原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值