章文嵩:开源为我打开一扇窗

提及中国开源早期的自由软件,LVS具有代表意义,其作者章文嵩对自己的评价是“一个比较注重做实际工作的、有用的人”。该评价贯彻了他的职业生涯始终,从LVS到淘宝、阿里云、再到滴滴、高瓴,他也一直在践行“有用”。《新程序员》特邀刘韧采访了这位声名在外的“技术行者”,讲述他编程人生中鲜为人知的故事。

受访嘉宾 | 章文嵩    采访嘉宾 | 刘韧

作者 | 李欣欣、谷磊、刘韧    责编 | 田玮靖

出品 | 《新程序员》编辑部

章文嵩

2012年11月11日零时,中国杭州,在淘宝“双11”购物节作战室的大屏幕上,每秒钟的实时交易数据急速翻滚。突然,一个异常数据显示,一部分交易系统因为发生网络拥塞访问不到主数据库,交易自动切到了数据库。此时,若停止交易则来不及排错,且容易引发其他未知错误;若不停止交易,交易系统则会出现超卖现象。快速讨论后,作战室决定让交易继续,从而不影响用户体验。 

“双11”的补贴销售与超卖让商家蒙受了巨大损失,但因淘宝团队的诚恳道歉,大部分商家选择原谅并承担损失;而另一部分无法承担超卖损失的商家,淘宝向其赔偿了数亿元。此次事故中,虽然淘宝内部无人因此受罚,但教训依然深刻。

2012年“双11”前,淘宝所有团队按照既定流程,依照过去三年的作战经验和步骤,使每一步、每个人都做到了位,每个组件都各自测压,唯独忽略了整体链路衔接中各个组件的畅通性。这次事故超出了当时所有人的经验,从那以后,“压力测试”便多了一道防线, 以买家购物的实际流程对生产系统进行全链路压测,尽管这样做成本很高,但这是保障生产系统稳定性的最有效手段。

时间倒回2009年11月11日,这天是淘宝第一个“双11”购物节。章文嵩依然记得他们面对的严峻考验:一过零点,系统瞬间涌入如海啸般凶猛的交易数据。做LVS负载均衡起家的章文嵩,不仅知晓计算机系统运转的底层逻辑,而且对理论基础有深刻理解。他善于拆解问题,能看清问题背后的本质,并提前进行技术布局和团队建设,找到实际有效的解决之道。

彼时,淘宝成交量不断创新高,成为国内最大的商业系统。章文嵩为淘宝带来的技术积累,使系统得以支持飞速发展的业务,扛住了一次又一次购物狂潮的冲击。而淘宝也给章文嵩带来了颇丰厚的股票收入。

而在2009年7月,章文嵩还宅在妻子单位分的房子里,苦闷地反思其失败的创业经历并思考下一次创业。妻子每天上班前问:“你今天准备在家待着啊?”中午回家吃饭问:“你下午还待在家里啊?”晚上下班回家问:“你今天一天都在家里啊?”面对妻子的灵魂拷问,章文嵩只能尴尬说“是”。一个月后,见他仍没动静,妻子终于摊牌:“你不要整天坐在家里啊,看得我心烦。 你要么去创业,要么找份工作,做什么都行。” 章文嵩赶紧坦白:“其实淘宝已经找我很久了,我还没答应。”妻子道:“那你赶紧去吧!” 

2009年9月,36岁的章文嵩加入淘宝,任资深技术总监。淘宝看中章文嵩做负载均衡系统的能力,章文嵩则从淘宝学习和掌握了操盘国内最大商业系统的实践经验。“淘宝当时有七八千台服务器,但没有真正做底层基础设施软件的团队。”章文嵩组建的核心系统团队,为淘宝的底层系统高速成长打好了“地基”,使其能够承载超大规模访问量的冲击。

2010年某天,章文嵩和彼时的淘宝运维负责人刘振飞正在杭州机场候机。新闻播报玉树发生了地震,所有网站首页变成了黑白色,全国娱乐场所歇业。刘振飞接到同事的汇报电话:淘宝流量暴增,是平时的数倍。刘振飞正犹豫是否要返回杭州总部时,章文嵩计算后对他说:“应该能扛住,不用回。”结果如章文嵩所料, 淘宝扛住了流量暴增,这是因为半年前他带着团队构建了强大且高效的CDN系统。CDN系统在基于LVS实现了高性能负载均衡组件的同时,大量采用低功耗服务器对规模、性能、成本做了优化和容量扩展。于章文嵩而言,“系统建设最好走在前面,不能等网站瘫痪后再亡羊补牢,这样成本低一点,当然网站瘫痪有时也不能避免。”

本文节选自《新程序员004》 『纸质书+电子刊』已开启预售

1、从阿里云、滴滴出行到高瓴集团

章文嵩路过负责SLB(负载均衡)同事的工位时问:“两个星期前遇到的技术故障处理得如何了?”同事一边思考该怎么回答,一边指着代码说,“可能是这附近出了问题,一直在调试。”章文嵩凑过去看了看,出了个主意,同事照做:发一个报文SLB立即崩溃了。故障重现后问题马上得到了解决,同事很兴奋:“哇!姜还是老的辣! ”

2013年,章文嵩和团队在帮忙解决“飞天5K”的关键问题后,整个团队被并入阿里云。并入阿里云有两个目的,一方面是提升现有ECS等主要云产品的稳定性和性能;另一方面是把淘宝技术沉淀为一百多个云产品,并形成矩阵。此时,阿里云正以每年三位数的增长进入飞速发展期。

在阿里云,章文嵩管理着很大的技术团队:“管理是门技术,也是门艺术。”章文嵩直言,他做过LVS开源项目,在淘宝管理团队时也真心实意地认可团队成员的工作,帮助团队解决遇到的问题,让大家获得荣誉。“我和大家一起探讨团队目标和核心KPI指标,深挖系统的度量体系,制定出清晰而准确的长期目标和短期目标,让团队成员自主定制时间进度表,主动完成对结果的承诺。”在章文嵩看来,“做管理不是强加于人,即使有人完成工作的时间进度比我脑子里的时间表晚一小段,我也是认可的。”

彼时,交通行业的变革悄然袭来,章文嵩察觉到其中蕴藏着的巨大机会,如智慧交通、自动驾驶等。而以当时的代表企业滴滴来看,滴滴的业务对IT技术的要求非常高。若自动驾驶到来,其背后所需的计算系统则更加庞大。用章文嵩的话说,订单调度问题的复杂度远高于围棋,“用户的订单进来,派附近哪一台车才是最优解?这是个非常复杂的问题,里面涉及诸多因素,如系统撮合、用户画像、供需预测、空间分布、全局最优等。”

在2016年5月25日,章文嵩出任滴滴出行高级副总裁,如他所料,他面临的技术挑战非常大,一方面需要不断加强平台的稳定性建设,另一方面要为滴滴业务打造使用效率、性能更高,成本更低的技术平台。在滴滴工作近五年,章文嵩主要负责中台、后台的建设,还做了一些垂直的创新业务,如智慧交通、车载摄像头、滴滴云。

目前,章文嵩身在高瓴集团,自2021年4月19日加入以来,主要做科与技相关的投资、孵化和赋能。他坦言,比起只投资钱,他更喜欢做孵化。看准一个领域,判断有前景后,以投资合伙人的身份攒局,再找合适的人一起做项目,和企业一起发展,还可以发挥自己的技术长处。谈及为何会切换到投资赛道,章文嵩说,“想尝试新东西,投资的涉及面会更广,可以帮助更多年轻人成功。” 

2、波折的转学经历

转学要考三门课,章文嵩只有数学及格。从学校出来,章文嵩跟在妈妈身后,两人默默走向客车站。妈妈突然转身带着章文嵩往另一个方向走,她想到有个同学是东方红小学五年级一个班的班主任。老同学说“没关系,就到我班上来吧。”章文嵩总算转学成功了。

1973年8月1日,章文嵩在浙江台州黄岩区头陀镇出生。爸爸从东南大学毕业后分在上海工作,妈妈中专毕业在镇上供销社当采购和会计,带着章文嵩姐弟三人在农村生活。爸爸只有春节才能回家。

妈妈带着章文嵩姐弟三人

章文嵩喜欢把爸爸带回家的玩具拆开再组装,他会打麻将和下象棋,无师自通。村里大多数人都下不过他,但他下象棋赢不了爸爸,直到高中才扳回局面。

暑假,8岁的章文嵩独自坐船从台州到上海,爸爸会在上海十六铺码头接他。上海对章文嵩来说很新奇,“但农村带给我的乐趣比上海多。”章文嵩不仅会抓鱼、采野果、钻山洞,还会干各种农活。除了小学第一学期在学习,其他时间缺乏老师的教导,无人看管,章文嵩就趁机逃学去山上晃荡。放飞的日子一直到四年级结束,转入东方红小学。

章文嵩从此寄宿在县城亲戚家,平常自己洗衣服。认真学习一年后,章文嵩考上了当地最好的黄岩中学。初二下学期,受益于国家解决高级知识分子两地分居的政策,1986年春节后全家在上海团聚。来到上海的章文嵩迷上了《魂斗罗》之类的街机游戏,每月零花钱很快在街机厅消耗完。“初二最喜欢几何,觉得严谨的逻辑推演过程太迷人!语文较差。”那时的章文嵩偏科已经明显了,他先在爸爸单位附近的中学上完初二,分到公房后,又转到上海闸北区的中学读完初三。

中考,章文嵩考得不好。“我上学早,当时上海的小学已改为六年制,所以初中毕业时我只有14岁,比同班同学小一两岁。个子也最矮,高一的时候我才1米49。我也不喜欢死记硬背,只靠理解力内化知识,凭兴趣爱好分配投入度,所以只有数、理、化学得好。”

 3、只想上国防科大

高考前一个月,爸爸收到班主任发来的警告:“章文嵩再这么玩下去,恐怕连大学也考不上!”爸爸回家转达:“你是我儿子,怎么会考不上大学?!”章文嵩自此开始备战高考,结果考了全校第一名,被国防科技大学(以下简称“国防科大”)提前录取。

1987年,上高一的章文嵩每逢周日就背上干粮,去上海青少年科学技术指导站(以下简称“少科站”),从早到晚待在机房玩游戏。少科站教编程的老师毕业于华东师范大学计算机系,很理解孩子们爱玩游戏的心理,放任大家玩了一个多月后,突然问道:“游戏好玩儿吗?”大家异口同声地说好玩。“那,你们知道怎么写游戏吗?”这一下子就激发出了同学们的好奇心。

接着,老师拿出事先在白纸上写好的BASIC程序代码让同学们照着敲,机房里响起一阵噼里啪啦敲击键盘的声音。章文嵩敲完十几行代码后,屏幕上出现现了精美的图案,再敲个空格,又变化成另一幅图案,章文嵩惊呆了:“除了游戏,计算机还可以这么玩!”就这样,章文嵩将对游戏的兴趣转移到了学习编程上,很快学完了BASIC、Pascal和6502汇编。还把游戏改成“不死版”,分发给其他人玩。

高二,本校有了计算机中心。章文嵩幸运地拥有了一把机房钥匙,实现玩计算机自由。这份幸运来自高中第一堂化学课,老师“突袭”摸底考试,同学们毫无准备,几乎全军覆没,只记逻辑的章文嵩却考得很好。一年后升任教导处主任的化学老师给“很喜欢的学生”章文嵩配了把机房钥匙。

1990年,国防科大在上海仅招5人,竞争很激烈。招生老师出于照顾贫困生的善意,综合考量后,跟章文嵩商量,要把他转到上海交通大学(以下简称“上海交 大”),将章文嵩的名额让给排在第6名的家庭困难的同学。章文嵩拒绝了,他知道国防科大的计算机系位居国内顶尖水平,研发了银河巨型计算机。当国防科大录取通知书寄到家里时,家人才知道章文嵩自作主张填报志愿,埋怨他为何不选上海交大或复旦大学继续留在上海,但也只能随他了。

4、21岁撑起湖南信息港扩容

国防科大实验室里,章文嵩在即将淘汰的SUN工作站搭建起MUD游戏,午休和周末同学们都沉迷于其中。章文嵩很享受通过文本发号施令的过程,“一个文嵩天神出现了,把他抓到另一个地方去”,在游戏中某个角色被抓到另一个地方,费半天周折才能出来。为了在游戏中享受特殊优待,不少同学私下要请章文嵩吃饭,被章文嵩一概拒绝了。

1995年,章文嵩和师姐到北京调研,期间参观了师姐在清华大学(以下简称“清华”)读研的同学的实验室,清华机房里仅有PC(个人计算机),比章文嵩1990年入校时用的机器都差。“我们学校的计算机设备有SUN全系列机器,型号从低端到高端一应俱全。”章文嵩由衷赞叹了国防科大。

章文嵩很喜欢国防科大简单而充实的生活,学费不用交,吃饭不花钱,衣服学校发,每月还有22元的津贴。章文嵩和同学制作了打开机房门的工具,在机房不开放时可以泡在那里,自然就逃了很多课。《概率论与数理统计》考试时,老师盘问说没见过他。而章文嵩认真备考了3天,依然拿了高分。

大二,老师选中章文嵩做项目,让他有机会进入对部分人限定开放且设备更好的实验室。1993年,章文嵩利用SUN机器自带的TCP/IP协议,对照着手册搭建了局域网。1994年,章文嵩本科毕业,以年级前5%的成绩保送本校研究生。

1995年,湖南要建信息港,精通TCP/IP协议的章文嵩被一家叫国讯的公司聘为专家顾问,21岁的他开始负责价值几千万的项目。章文嵩给长沙电信局局长讲解方案,局长质疑国讯:“怎么派个毛头小子来?你们公司没人了?”国讯回答:“他是我们公司最厉害的!”章文嵩负责信息港的整体规划、管理,直至交付验收。虽然在学校搭建的局域网是孤岛状态,但章文嵩很早就精通TCP/IP,在项目中边干边学。

为了保险起见。湖南信息港花“巨资”购买了SUN公司的邮件系统SIMS(Sun Internet Mail Server)。SUN公司派来的工程师从未安装过系统,枯坐很久无从下手。章文嵩只能一边看英文手册和电子资料一边安装,SUN公司的工程师旁观安装过程并写下笔记。在国讯,不管是否有工作,章文嵩每月都有固定收入——6000元,外加项目奖励。章文嵩用这笔钱给在上海交大上学的弟弟买了一台计算机。

1997年,硕士毕业的章文嵩打算找工作,而他的导师胡守仁教授屡次劝他读博。胡守仁是银河巨型机的贡献者之一,计算机领域的权威科学家。章文嵩也听话,继续在本校读博,这为一年后开发LVS埋下伏笔。

硕士毕业的章文嵩

 读博期间的章文嵩

5、LVS诞生即开源

湖南电信系统集成项目需要多台服务器做负载均衡,但一套思科LocalDirector要几万美元,章文嵩觉得:“这东西并不难写,为什么要卖那么贵?”1998年5月,章文嵩花两周写好了负载均衡器代码,跑通后,免费放在了互联网上,并在Linux Kernel邮件列表里广而告之。这就是后来广为人知的LVS(Linux Virtual Server,Linux虚拟服务器) 开源软件。章文嵩为Linux内核系统独立贡献约一万行代码,是中国第一人。

很快,一位澳洲的用户反馈LVS集配置简单、稳定可靠、可扩展性于一体。来自实际应用场景的持续反馈,激发着章文嵩继续开发的热情。开源的LVS很快聚集了来自世界各地的问题解决高手和技术专家,他们一起为LVS的优化添砖加瓦,章文嵩也从他们身上学习良多。保加利亚的Julian Anastasov一直是维护LVS的中坚力量,而章文嵩至今没有见过他。

1999—2000年,章文嵩经常参加Linux的会议,主动邀请Julian Anastasov参会并提供差旅费,“他都没来”。他们甚至没视频过,“可能都不需要,这可能也是开源的精神体现。”

凡是对LVS有贡献的人,其名字都会被章文嵩写入项目历史中,以尊重“同济者”。Horms想出一个让配置调度更简洁的办法:基于Firewall Marking值来做调度。他写了一个补丁发给章文嵩,章文嵩认为他的代码实现路径不够高效,帮他修改了代码,Julian Anastasov在此基础上修改后最终定版。尽管Horms的源代码已经被改得面目全非,Horms仍然被写入项目历史,“Horms的创意更重要,哪怕我和Julian改了很多代码。”

章文嵩(中)、Horms(左)和Richard M Stallman(右)

著名的RealPlayer播放器的制造商Real Networks对外提供视频服务,它的IT主管Jerry Glomph Black说:“我们试过所有的商用负载均衡器,LVS比它们都好,无论是可靠性、可管理性,还是成本等能想到的所有方面。”

后来,章文嵩有机会加入了Red Hat Kernel Team,此后Red Hat出资,使章文嵩能够有更多的出国参会机会。因为军人的身份,必须要有一名老师陪同章文嵩前往,陪同的老师也很开心。

瑞士LVS用户给章文嵩寄来一大包瑞士饼干。“饼干很好吃,但太多,吃不完,我分给同学们,还送给了我未来丈母娘。她开玩笑说:‘原来你每天加班加点写这个软件,就是为了饼干啊’。”

Ottawa Linux Symposium大会上,章文嵩和Netfilter的作者Rusty Russell在酒吧相谈甚欢,临了,章文嵩写邮件给Rusty Russell问:LVS代码能否合到Netfilter下面,作为Linux负载均衡的一个模块。邮件石沉大海,章文嵩有点意外:“我猜是LVS使用文档里第一句话,如果要追求高性能,请卸载Netfilter Connection Tracking的Module,估计Rusty Russell不喜欢。”

2003年,章文嵩意外收到Linux内核网络层总管David Miller的邮件:“LVS代码还没进官方内核吗?”章文嵩在回复“是的,还没进去”后,收到的答复是:“今天晚上我给你加进去。”LVS进入Linux内核后,很多人在网上冲浪都在用LVS的调度,阿里、腾讯、百度、谷歌等企业都在使用LVS。商用负载均衡产品F5在中国的总代理曾对章文嵩说:“F5在中国最大的竞争对手就是你的LVS。”

6、创业六年做了六个产品

1999年,章文嵩的上海老乡参加复旦大学的MBA竞赛。章文嵩趁机把LVS包装成创业项目帮助老乡参赛,结果获奖了。两人开始把参赛的思路落地,将LVS做成集群网络,售卖自带管理功能的定制软件集成盒子。到2001年春节,此前融到的350万天使投资额花得差不多了,但新的融资还没着落,运转了一年多的公司没有做成一个商业项目。“那时候我也没有运作公司的经验,加上2000年底,互联网疯狂烧钱的泡沫破了,很快公司关了。”

2003年,国防科大与中科院软件所合作,章文嵩被派往北京,很快被朋友们游说一起创业。他们看到从中心大型机到个人计算机给计算机产业带来的翻天覆地 的变化,相信智能从中心往边缘移动的趋势也会让通信行业发生巨大变革,所以选择符合这一理念的SIP协议做产品。彼时因非典(SARS)封闭在家的章文嵩写了Power Access帮助SIP穿越(NAT Traversal)家庭网关,后来合并了只有两人的硅谷创业公司(主要做SIP Proxy)。有了技术,但做什么呢?首先,他们做了一款语音会议室产品Meet2Talk,“我们找来亲友一试,发现大家没有共同话题,聊不起来。”于是,团队中一部分人转向做聊天工具TelTel,另一部分人做比酷网,意思是大家一起来比酷、炫才艺,号召用户把自己制作的动画、音乐、视频等传到网上,比谁更酷,这比2005年推出的YouTube早了一年多时间。然而,当流量突然暴涨时,“我们却付不起宽带费”。后来为了省流量转做 “阿比酷”,即可管理的P2P下载,类似后来的迅雷。“我们收到好莱坞关于侵犯版权的律师函后,就没坚持做下去了。”

2004年6月,TelTel正式对外推出,“产品发布后我们才发现市场上已有类似产品,是2003年8月推出的Skype”,TelTel依旧迎来用户量的爆发式增长。章文嵩在2005年收到MySpace一亿美金的收购邀约,但团队想自己发展,后来发现不能仅依赖TelTel Out的商业模式。团队开始为D-Link做通过SIP协议管理的设备,在做了如VoIP话机、录音盒、数码相框之后,转向做下载播放盒,同时又做了用户可以创建频道的9×9 TV,包含81个频道。“因为广播电视总局发布58号文,通过中心平台可以管控到两个以上的设备属于广播系统,需要广电审批,9×9 TV事情就没法做了。”

创业时的章文嵩

2009年夏天,这是章文嵩创业的第6年,他感慨道,“六年间我们至少做了六个产品,尝试了很多方向,累计融资了五千万美金,都花光了。”2011年,世纪互联上市,因为章文嵩的创业公司持有一些世纪互联股份,清算时投资机构拿回了略高于投资的回报,但离投资机构期待的数倍或数十倍回报差得很远。“创业,时机和运气都很重要。现在看,当时很多产品理念超前,但没有坚持做下去,可能当时的认知没有跟上。因为创业失败自己也苦恼过,现在想想还是自己的修行不够,要有平常心,享受创业的过程。”

7、受益于开源,推动开源

参与开源对章文嵩的成长帮助极大:“开源为我打开了一扇窗户,我可以跟全世界互动,了解问题和需求,与他们共同开发开源产品,相互学习和成长,并从中获得快乐。”他受益于开源,也积极参与国内的开源活动,在2000年和国家863专家共创开源联盟,积极参与陆首群老先生领导的中国开源软件推进联盟(COPU)活动,经常开展开源讲座。

在阿里工作期间,章文嵩积极推动阿里的开源。时任淘宝CTO的吴泳铭非常支持开源:即使别人用淘宝的开源代码搭建了类似的网站,但淘宝的数据是日积月累的,谁也拿不走。对于用户而言,也更愿意在拥有信誉体系而非空空如也的平台上交易。比起外部的竞争,淘宝更需要在意自身业务飞速发展带来的技术挑战。

淘宝的基础平台除了自主开发,还建立在开源的基础上,淘宝本身是开源的受益者,应该回馈开源。淘宝首次开源,选择了Memory Cache与Key/Value Store–TAIR。2010年3月,章文嵩向团队提出对外开源TAIR,团队成员的第一反应是用三个月时间把代码清理干净再对外,虽说TAIR在生产系统中运行稳定,但技术人员很在乎自己的声誉,希望代码更干净且有更强的可读性。2010年6月,TAIR如期开源。TFS和Tengine等也相继开源,章文嵩说:“很快其他兄弟部门也响应开源计划,说明技术人员是喜欢做开源的。”截至2014年,阿里已开源百余款软件。而章文嵩在离开阿里前是ATA执行会长和开源委员会主席。

章文嵩到滴滴出行工作后,2017年夏天也发起了滴滴出行的开源计划,得到了滴滴技术团队的热烈响应,三年多的时间对外开源了72个项目,在GitHub累计获得超8.4 万个Star,这再次证明了技术人喜欢做开源这一论断。

2021年,章文嵩作为主要发起人之一,成立了CCF开源发展委员会。其实,自2012年开始,章文嵩作为志愿者一直参加中国计算机学会(CCF)的活动,担任CCF常务理事。他说,“CCF已服务超十万人,将CCF和开源社团的治理结合起来,可能是开源社团建设的一种实践。”CCF开源发展委员会的使命是“构建产学研深度融合的开源生态,加速基础开源软件和硬件的快速发展,培养开源人 才”,做长期对开源生态有帮助的事情。例如,建设本身开源的开源代码托管平台GitLink(产学研共建的软件工程创新平台),孵化开源项目,成为开源开发者沟通和交流的平台。

他想在今后的人生中,为国内的开源与技术生态发展再贡献一点点力量。

受访嘉宾:章文嵩,LVS(Linux Virtual Server,Linux虚拟服务器)开源软件创始人。现为高瓴投资合伙人,曾任滴滴出行高级副总裁、阿里云CTO、TelTel首席科学家、ChinaCluster的共同创办人等。

采访嘉宾:刘韧,互联港湾董事。1998年共同发起中国第一个互联网启蒙组织数字论坛;1999年发布中国第一个博客系统DoNews;2001年获北京大学中国经济研究中心财经奖学金。曾在《中国计算机报》《计算机世界》《知识经济》和人人网等媒体或互联网公司任记者、总编辑和副总裁等职。出版《中国.com》《知识英雄》《企业方法》《网络媒体教程》等十余本专著。

本文节选自《新程序员004》,从MySQL之父、MariaDB创始人 Michael "Monty" Widenius,到PostgreSQL全球开发组联合创始人Bruce Momjian、阿里巴巴副总裁贾扬清、指令集创始人兼 CEO潘爱民、著名科技作者吴军,再到 Vue.js 作者尤雨溪……《新程序员004》以「我们的技术时代,我的程序人生」为主题,与多位国内外知名的技术先锋和新生代程序员代表进行了深度对话,希望行业优秀人物的技术之路与人生感悟给大家带来启发。

评论 16 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:成长之路 设计师:Amelia_0503 返回首页

打赏作者

《新程序员》编辑部

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值