【沉淀】来到阿里云后,SRS大神杨成立说:“终于可以不用装大神了”

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 提及SRS,杨成立说其实是个意外,没有大的梦想,没有宏伟的计划,只不过是好玩而已。
《沉淀》是云栖社区展示专家风采的人物栏目。它呈现每个专家独一无二的人生经历、认识和感悟的同时,也能帮助你沉淀技术,收获对技术和人生的判断。我们的想法是:“若你想精进为一个很厉害的人,不妨细细品味这些技术牛人背后的沉淀。”如果你想了解这些云栖专家更多分享时,请点击云栖专家频道,当然我们也欢迎你往前走一步,成为我们的云栖专家(https://yq.aliyun.com/expert),与技术大牛一起“煮酒论英雄”。

最近的杨成立,幸福感有点满,他自谦地说:“终于可以不用装大神了。”
 
杨成立是阿里云CDN的高级技术专家。对于他,Tengine开源项目发起人、阿里巴巴集团开源委员会成员叔度评论称,成立是撸代码大神。似乎嫌这样的形容力度还不够,叔度又在结尾重点补充:“他是一个纯粹的技术人。”
 
2007年毕业,到今年正好是杨成立工作的第10个年头,但他却写了12年代码。在这12年里,他做过2年C#和ASP.NET、1年C++程序员,而后外包到微软做了1年测试。“软件最终是要解决问题,而对于业务的熟悉,再加上编程的能力,才能创造大价值。”这份思考和认识,让他接下来在流媒体行业沉淀7年。
 
这7年,贴给他的标签——除了前观止云CTO外,还有SRS大神。SRS(Simple Rtmp Server)是基于MIT协议的开源流媒体服务器项目,由杨成立发起并维护。谈到这段经历,已经来到阿里云的杨成立轻描淡写地说,他只是写了一个非常简单的RTMP功能,并利用业务时间维护下而已。“和阿里的牛人相比,却是名不副实的空帽子大神。”他说,“哪个更实在这很明显。”

1c6517c9a28acf3223c5fa0e75e7fa1e7c7765a9
杨成立说,十年前他就立志于工业级大规模软件系统的研发

莎士比亚在《特洛伊罗斯与克瑞西达》中说:“一个人看不见自己的美貌,他的美貌只能反映在别人的眼里。”杨成立究竟是怎样的一个人?云栖社区就此采访了这位阿里云的技术人,将他的经历呈现于各位眼中。
 
“我想象有个键盘,然后学会了盲打”
 
“我想做点有用的事情,所以从小就想怎么能独立养活自己。”谈及与计算机结缘的经历,杨成立用这句话做了开头,他说:“我是个穷小子,来自一个很穷的农村。”
 
高中时,他接触到了计算机——尽管2002年,学校教学用的还是DOS机,但仍然让他眼前一亮。敲一敲就能打出字,程序能按照自己的想法算出点什么,更为关键的是编程只依赖于自己的脑力……自此,杨成立在心中认定计算机会非常有用。并且在没有键盘的情况下,他想象有个键盘,并学会了盲打。
 
填志愿时,他毫不犹豫地选了自动化——这位高三学生认为用计算机控制机器,用处会更大。然而想法和实际总是有差距,到了大学才发现,自动化专业只是在大二会教计算机课程。
 
杨成立非常迷恋编程,后面他选择自学。自学的成效,在毕业设计时体现。“用C语言写一个简单的学生管理系统,老师给了2周上机,我用了3天左右写完,剩下的时间就是部分同学抄我代码。”他还分享了一个细节,“记得因为实现一个链表存学生信息,把Next指针直接用Fwrite写磁盘去了,读取时直接读出来,所以那个指针有时候好有时候坏,程序有时候会崩。”后来搞清楚了,他对C语言的指针有了深刻的理解。
 
大二那年,他有了自己的电脑——第一个属于他的“它”。这份记忆很清晰——3000元、CRT显示器、赛扬1GHZ、512MB。杨成立说,有钱的同学都开始上液晶了,但他不能那么奢侈,因为农民老爸挣点钱不容易。这份珍惜不止如此,“每次看着电脑,要是没有努力用好它,我就很有负罪感。”除了C语言,杨成立还自学了C++、Photoshop、Dreamweaver以及一个古老写网页的IDE,也开始着迷OO(ObjectOriented)思想——那个时候,他什么都是往00上想一想。
 
在大二下学期,他获得实践的机会。他鼓足勇气去应聘时,还很担心。旁边面试的同学被问到“C++和C的区别是什么”,当听到“C++还没有C好”时,他心中一阵窃喜:“对手是这个水平,有戏!”
 
在勤工助学中心,他主要负责学校网站,有时也承接外面的网站项目。时隔12年,杨成立还记得负责中勤在线的那位老师名字——欧旭理。在采访中,这位纯粹的技术人用了“伟大”一词形容这位老师,似乎想传递自己的感激之情。之所以如此感激,在笔者看来,除了很多宝贵收获外,还有在进入中勤在线后,杨成立终于实现了养活自己的目标。
 
中南大学南校区有个荷花池,旁边有桂花树和石桌。杨成立说,大学最美好的回忆就是:“花着中勤在线发的零花钱,九月桂花飘香,在荷花池旁的石桌旁,一点点的翻着经典的软件书籍,享受着作者所享受过的软件过程。”这一切,妙不可言。
 
“一开始应把基础打牢,而不是找最熟悉的领域多赚几块钱”
 
C++和C之外,大学期间杨成立还实践了C#,以及看了很多书。
 
看书,他都是跟着每个例子,一行一行代码反反复复的敲,如果没有弄懂就再看一遍。“比如《MFC深入浅出》,这本书比较难懂,也很厚,结果被我翻得更厚了。”杨成立说,这本书对于理解虚函数非常的有用,因为MFC里面大量的虚函数;同时对于框架的概念,也开拓了他的视野——一般比应用软件大的就是框架,比框架大的就是系统。
 
编程之外,他也看软件工程的书,譬如《设计模式》、《软件工程》和《人月神话》。这三本书,他的收获是:《设计模式》分享了解决某些通用问题的最佳路径经验;《软件工程》让他知道软件行业大规模软件用瀑布是怎么死的…等;《人月神话》让他学到不仅仅是“人月不可互换”这句话,也还有对于软件规模的本质分析——问题在哪,出路在哪。
 
毕业时,杨成立已经有10万行代码经验,而且非常擅长ASP.NET和C#。但他不想找一个C#的工作。“我很熟悉C#了,为何要找个C#的工作?”他觉得应该把基础打牢固,而不是找自己最熟悉的工作多赚几块钱。他想找C++的工作,因为高性能服务器和计算领域,都是C和C++。
 
在做了一年C++后,他又做了一年测试。去做测试,主要是他在毕业时看了TDD相关的书,认识到了测试对高质量代码的重要性,“编程能力和测试都是非常重要的。”
 
很享受客户惊讶的表情
 
“软件最终是要解决问题,而对于业务的熟悉,再加上编程的能力,才能创造比较大价值。” 到了毕业的第三个年头,杨成立决定选一个行业沉下来。
 
2010年互联网流媒体开始兴起,他来到了做网络电视台的浪弯。一开始从Flash播放器做起,Flash是Actionscript,他没接触过,但他很淡定:“没有用过,学就好了,难道能比C++还难么?!”当时浪弯有七八个播放器,一个客户就用一个(定制个功能就拷贝一份代码)。花了6个月时间杨成立调研了OSMF和FlowPlayer,选了Adobe的OSMF框架做播放器,所有客户都用一个播放器,用不同的皮肤和控制器。这些对他而言不难,因为MFC框架比这个要解决的问题多太多了,通过分层就能解决定制化的问题。活干完后的结果是,老板很满意,而杨成立也算入行了。
 
浪弯的视频文件转码系统质量很差,画面没有竞争对手的清楚,负责项目的同事离职了,老板问杨成立能不能接。彼时的杨成立,连IPB帧都搞不清楚,FFMPEG是什么也不知道,但他不觉得有什么好怕的——不懂可以学嘛。
 
杨成立除了解决编码质量的问题外,还尝试用Python调用FFMPEG命令,先将视频转码成YUV不压缩,这样对比两个不同的转码参数对于转码质量的影响。参数有很多,每一组参数的效果要隔一定的时间才能知道。经过一个多月的煎熬,用脚本对比解码后的文件大小,读取FFMPEG的输出参数,最后还是没有结果。杨成立决心在这个行业了,所以他没有放弃。这时,他记起PPS的师弟说X264那些默认的Preset非常好用。死马当活马医,调试X264的参数,问题解决。
 
迈过这个大门槛,杨成立信心大增。解决了质量问题,还需要解决速度问题。当时转码系统设计成切片转码,把大文件切成小片,然后分发到集群各个机器转码,然后再合并,这对于某个文件能达到非常高的倍速转码。对杨成立的挑战是,需要学习FFMPEG的API,了解编解码的基础知识,并和团队的编解码高手一起实现多倍速转码系统。过程很复杂,不同的策略会导致不同的结果,架构也调整了很多次。譬如把音频分离出来,单独转,只是对视频切片。
 
经过1年左右的调整,终于可以在客户那边开卖了。“当时客户看着我们一个2小时的文件,2分钟就转完时,他们真的好惊讶。”杨成立说,他很享受这个惊讶的表情。
 
客服高呼研发万岁
 
2012年,杨成立来到蓝汛,这时RTMP直播,也开始流行起来。
 
当时蓝汛用的是Adobe的FMS/AMS服务器,每年得付不少的License费用,而且随着客户量的增长,要付的费用越来越高。更重要的是,FMS/AMS没有源代码,也没有提供集成和定制服务。譬如计费就只能解析FMS的日志,这个日志本身不是用来计费的,所以有时候会出现5Gbps的流量。那时候CDN的机房都是千兆网跑满也不过1Gbps,肯定是个Bug。
 
于是,计费系统就和流媒体组商量好,如果超过1Gbps就算是异常日志,丢弃。然而蓝汛自己RTMP服务器上线时,单台服务器超过了1.5Gbps(一台双网卡服务器),结果就没有计费,免费给客户服务了。除了计费,出了问题也无法排查,只是知道连不上,推流失败,播放失败,不知道为什么,FMS的日志也没有任何信息。蓝汛只好自己研发RTMP流媒体服务器。
 
流媒体服务器一方面是服务器,一方面是流媒体。杨成立从epoll和select开始看起,学习nginx如何处理连接;看rtmpdump如何处理RTMP连接。那时候RTMP协议已经公开,对照着协议看。三个月的实习期后,他给出了可行性报告,又过了三个月RTMP源站服务器做好了。当实现RTMP边缘时,杨成立发现nginx这种epoll异步处理机制处理RTMP这种复杂协议非常麻烦,每个包都是一个状态变更,特别是需要回源时,这个状态会呈指数增长,多到无法处理。后来研发负责人引荐了当时北美的架构师Michael,一个经验丰富的老程序员,五十多岁还在写代码。杨成立说:“那时我的英语听力很差,只知道他提到要么分割状态把小状态组合成大状态,要么就用setjmp和longjmp实现类似线程的机制——我也写了7年代码了,竟然不知道还有setjmp和longjmp。”于是,他赶紧补课,看ST(StateThreads)这个库的代码,学习怎么用,看setjmp和longjmp,以及coroutine、Golang,事后他感叹到,原来程序的世界还有这么个世外桃源。
 
杨成立思考,Golang最关键的是goroutine,和ST就非常像。不过ST是解决网络IO问题,在服务器领域用的。而GOLANG是在语言级别,解决所有的通用问题。协程可以简单看成“不用加锁的线程”,因为没有锁所以不用等待,没有竞争条件所以不用小心锁这个锁那个;之前代码上很容易有很多状态需要一起处理,现在就是几个if-else直接搞定。“如果可以用多线程,你的程序会如何写?”,对于服务器来说,会简单太多(如果还不用考虑锁的话)。而对于云计算,大部分程序都是服务性质的,需要在各个连接之间切换,这就是为何Golang在云计算中大行其道的一个原因。于是,他果断把蓝汛的服务器改变架构,从epoll异步状态机,换成ST的,两周之后边缘服务器就发布了,非常非常惊人的速度,他说连自己都吓到了。
 
上线后,各种问题来了,短则半小时,长则一周,还好Bug都能找到原因,那时候杨成立每天嘴巴里都长着溃疡,压力太大了。在所有Bug中,有一个令他记忆犹新。一个月都找不到原因,每隔三五天就崩溃一次,从coredump也看不出来什么原因,堆栈信息都没有。在一个月之后某天,突然灵光一闪可能是metadata释放后被重用了,野指针的问题,果然顺利重现挖出了这个大bug。
 
在加入蓝汛仅8个月时间,就上线了服务器1.0版本。2012年底,杨成立成为蓝汛的优秀员工。后续就是各种优化和解决问题,以前排查不了的问题,现在都是清清楚楚知道哪里有问题,大部分服务器直接兼容客户的编码器或播放器,客户只需要再推流就可以接入。但也有特别的,“记得有一次有个客户的编码器很奇特,所有CDN都接入不了,客户嚷嚷着要切其他CDN,我们客服自信的说蓝汛解决不了的问题,别的CDN也解决不了,结果蓝汛最先兼容他的编码器。”杨成立清晰地记得,他们的客服因此高呼研发万岁。
 
一年之后上线2.0,所有RTMP边缘都换成了蓝汛自己的服务器。这是杨成立做过规模最大的一个系统,部署在CDN全国各地的机房,跑在很多台服务器上,7X24提供服务。
 
蓝汛的这段经历,让杨成立获得很多启发,他发现技术是山外有山,人外有人,必须要不断地学习、进步,并多交流。“有时候大神一句话,得自己摸索好几年。”也正是CDN的这段经历,让他看到了云计算广泛的市场,那是一个可以用得上工业级大规模系统的地方。
 
补上技术拼图的最后一块
 
从C、C++、C#、SQL、JS、Golang到Python,从软件工程的知识和应用到TDD和测试,再到视频行业的播放器、FFMPEG、服务器等,杨成立似乎在完成一个技术拼图,而这块拼图还差一块——团队管理。所以杨成立接下来选择去了观止云,一个需要带领团队完成目标的工作机会。
 
在蓝汛每天考虑的都是服务器问题和技术,虽然在团队管理上得到了蓝汛VP付亮的大量指导,但是管理的实践机会太少了;而在观止每天考虑的是团队该怎么带,开始定考核晋升制度、选拔干部、培训程序员,CR代码。
 
当然杨成立也在不断学习,比如AngularJS、BOOTSTRAP、Golang等。“每一门技术都有特殊的背景,想要解决的问题,还有思考问题的方式,表面看是一门语言或技术,但是只要是因为新的业务或者应用场景而诞生,背后的思维方式就会改变。”他进一步解释到,譬如C对比汇编,C++等对比C,GOLANG对比C++,JS和H5,都是完全不同的思考方式和应用场景。
 
他说,在观止云的管理经历,主要是转换了思路,以前考虑问题总是从技术牛逼不牛逼,门槛有多高,自己怎么解决问题来想。当成为管理者,考虑的有时候是值得不值得,市场是否能接受,是否有替代方案,现有的方案开源的方案如何实现,什么才是最佳的路径达到目标,如何统一团队的目标和每个成员的目标等。
 
在观止云,他还领导团队和又拍云搭建直播CDN。回顾这段经历的艰难险阻,他说,主要的阻力不是技术上的,而是又拍的业务团队和观止云的研发团队两个团队的合作问题。譬如又拍没有流媒体的经验,而又拍的直播CDN需要和现有业务系统对接;譬如又拍有空间和服务的概念,而流媒体是没有的,流媒体就是域名。因此,业务上的变更也导致对接结构有变更,甚至分发的架构也调整过几次。但后面经过一次培训后,以及差不多一年的磨合,这些问题都解决了,顺利接入客户。最后的结果是:又拍直播的指标,特别是HLS+的指标,在业内是最好的。
 
写SRS是意外,只是好玩而已
 
杨成立在SRS领域很有名,被称为SRS大神。对于SRS,杨成立首先指出,SRS是Simple RTMP Server,不是蓝汛的那个服务器。
 
之所以写SRS,主要是他在和蓝汛的同事交接工作时,因为之前的服务器功能非常多,有些没有用到,比较复杂且难懂。再加上在观止也不做服务器,于是就写了个Simple RTMP Server给蓝汛的同事看。这是一个非常简单的RTMP的功能,后面他也只是利用业余时间维护SRS。
 
正面SRS,杨成立说其实是个意外,没有大的梦想,没有宏伟的计划,只不过是好玩而已。但直播这股风在2014,特别是2015年达到顶峰,关注SRS的越来越多,所以SRS在直播领域的影响力越来越大。
 
与此同时,SRS也成了杨成立展示自己想法的平台。譬如软件的概念完整性和一致性,杨成立称,这是非常虚的事情,但是在OOAD中是一个重要强调的理念,也就是提高软件的概念完整性。“我有个ISSUE专门收集破坏概念完整性的情况,譬如HLS应该只在源站出,在边缘出没有意义,边缘需要RTMP访问才能有HLS,这个就是概念完整性性。HLS的功能应该只在源站有,加在边缘就破坏了概念的完整性,这个HLS在边缘是个残废的功能,是不完整的,不可用的。”他举例到,譬如TDD,SRS会有UTEST,不过在这个方面做的还不够,可以有机会展示TDD该怎么做,有什么好处。譬如产品的规划,对于功能的审慎,简化业务,这些都是产品研发中比较重要的理念,如果有一个开源项目,就可以一直探索和实践这些理念,不断的积累。
 
杨成立说,这些理念最终会呈现在大家面前,无处不在,最终体现在WIKI和ISSUE中。“譬如我发现很多朋友虽然不用SRS,用的是NGINX(譬如阿里云CDN),但是也非常关注SRS,把SRS的WIKI过一遍。因为SRS那些问题都是归档的,概念的变更,遇到的问题都在ISSUE中列出来,这些问题就算不用SRS,用NGINX也一样会碰到。
 
喜欢身边的人比自己牛
 
杨成立说,十年前他就立志于工业级大规模软件系统的研发。正是这样的想法,让他从浪弯到了蓝汛,又从蓝汛到了观止云,接着又来到阿里云。
 
他说,从浪弯的规模上来说,Flash播放器和转码集群都比较小,十几台转码机器的集群算很大的了,离工业级大规模集群的目标相差太远了。到了蓝汛,蓝汛流媒体集群和SRS服务器,是他做过应用最大规模的两个系统。但看到云计算广泛的市场后,他才发现那才会是用得上工业级大规模系统的地方。
 
今年2月份,杨成立于是来到了阿里云。来阿里云有两个主要原因。一是上面说的,阿里云机会有很多——因为它的规模、客户足够大,难题也足够多。第二个是叔度的一句话打动了他,杨成立还记得这段对话:“我不想去阿里还做SRS,想做点其他不会的,但是这又不会马上给阿里创造效益,怎么办?”叔度回应称,阿里云主要看人,原意给机会尝试,给时间打磨产品,用人的潜力而不仅仅是能力。“用人的潜力而不仅仅是能力。——也是这瞬间,阿里在我心中的份量变得非常高。”基于这些考虑,杨成立毫不犹豫的选择了阿里云,尽管阿里给出的offer待遇不是最高的。
 
阿里云HR衣航对杨成立的印象非常深刻,他说杨成立是个挺单纯的技术人,对收益各方面不是很在意:“当初跟他聊时说,最打动他加入阿里的是现在的CDN团队牛人很多,他喜欢身边的人比自己牛,有团队的感觉。” 衣航也透露,另一个打动杨成立的地方是阿里云所倡导的白胡子工程师的概念。
 
回顾面试过程,杨成立说,3轮技术面试,对阿里技术水平有了一个感觉,入职后越了解越觉得阿里工程师文化很好,水平很高。这让他对于大规模系统有了新的认识:大规模业务才能产生大规模系统,以此循环,而反过来却不成立。另外,这位SRS大神也感受到阿里云对于招人的严格,他认为这是非常正确的做法——不拉低团队的水平。物以类聚,聚集一万个参差不齐的程序员,不如聚集十个水平都很厉害的高手,因为高手过招水平会更高,反之只会越来越低。
 
来到阿里后,杨成立发现阿里的牛人比传说中的要多,幸福感满满的。他说:“终于可以不用装大神了,在阿里我是个小兵——是每天快速学习和成长的小兵。”他谦虚地指出,在SRS圈子我可能是大神,但是却是名不副实空有个大帽子的大神,哪个更实在是很明显的。
 
当笔者问到他在阿里云接下来的工作,杨成立说,暂时还不清楚,只是知道那一定是他暂时做不到的工作。为什么是这样?这位阿里云技术专家称,借着直播的东风,在流媒体圈子里的他的确是有了点名气,但对于他而言,并不觉得自己现在已经是技术巅峰,相反,还觉得离自己的目标非常的远。“我希望看到更多的可能,能做自己不会的事情。”而不是再次重复一遍搭建一个直播的CDN,他觉得这是在浪费“绳”命。
 
花名“忘篱”,他说是为了鞭策自己不傲娇
 
杨成立说,他非常热爱写代码,所以记性和鱼差不多。
 
鱼的记忆很差,有一句广为流传的话说,鱼的记忆只有7秒。但令我们疑惑的是,热爱代码和记忆差之间,似乎并没有什么因果关系。杨成立并没有直接给出答案,但解答却在他回忆的叙述中。
 
最直接的,或许就是他在大三一次“忘记”考试的经历。杨成立说:“还记得考试那天,我正好在学校的中勤在线写代码,把考试完全给忘记了。过了一半的时间,突然想起来今天好像是数据结构的考试!赶紧飞奔过去,还好老师让我继续考试了,三下五除二考试完了继续回去写代码。”他说,记性大约就从那个时候开始,越来越差了。
 
而这也是杨成立在阿里云花名的渊源,他的花名是“忘篱”——出门忘记关篱笆。
 
“如果在遥远的古代,我想大约每次出门,都会忘记关篱笆吧?”当然,这只是字面上的解读,他进一步解读:“严肃的说,实际上‘忘篱’是英文Winlin的中文发音,也就是Windows+Linux两个非常普及系统的名称缩写。”杨成立认为,这两系统在软件行业有着非常了不起的成就,所以他造了一个单词Winlin做英文名。
 
“希望我时时刻刻不要忘记,要不断努力,不能傲娇。因为自己的成绩离Windows和Linux还差很远。”
 
结束语:
 
在采访最后,笔者也想起他说的两件事:
 
一件是他谈及国内和国外在流媒体领域的差距。他说,技术上的差距本质是人的问题。国外重视标准,提出各种协议、做各种开源,而不仅仅是做出来一个东西,而更希望是成为标准、互利互惠,减少重复劳动——这是人素质的差距。
 
第二件是他的爱好。他非常喜欢维护SRS的微信公众号。他觉得这能解决人的问题,一个消息发布出去,几百人收到后能有提升,最终是整个行业人员水平的提升。
 
而解决人的问题,也是《人月神话》最核心的思想。

想定时阅读更多好文章,请关注微博@阿里云云栖社区
相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
容器
2021-07-21大连东软实训第二天---es6核心(二)
2021-07-21大连东软实训第二天---es6核心
81 0
|
7月前
|
NoSQL Dubbo Java
网易开发三年,现跳槽蚂蚁花呗,4面顺利通过,拿下Java岗offer
不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试:
|
JSON JavaScript Java
2021-07-21大连东软实训第二天---es6核心(一)
2021-07-21大连东软实训第二天---es6核心
83 0
|
7月前
|
弹性计算 小程序 数据安全/隐私保护
大咖与小白的日常:10分钟部署一个年会抽奖程序
本教程指导您3分钟部署一个年会抽奖程序,大屏幕滚动起来吧!
170 6
大咖与小白的日常:10分钟部署一个年会抽奖程序
|
云安全 缓存 自然语言处理
“1s? 我要0s” -- 阿里云安全产品1秒战役总结
“1s? 我要0s” -- 阿里云安全产品1秒战役总结
795 0
“1s? 我要0s” -- 阿里云安全产品1秒战役总结
|
人工智能 运维 Cloud Native
|
存储 机器学习/深度学习 开发者
开放下载!《长安十二时辰》爆款背后的优酷技术秘籍首次公开
《长安十二时辰》一经播出便红遍全网,从智能算法到音视频创新技术,从智能档的技术挑战到高可用的媒资平台,成就这华丽视效的爆款背后,优酷技术都用到了哪些“武林秘籍”?
76520 0
开放下载!《长安十二时辰》爆款背后的优酷技术秘籍首次公开
|
中间件
「Code Lab科技创新营」蚂蚁技术人才面试全攻略--线上直播
“技术助力,科技育人”,Code Lab系列是蚂蚁金服针对高校计算机信息技术专业在校生,通过蚂蚁金服科技的技术积累与产品平台,为广大在校同学提供与社会实践相结合的技术内容培训和实践经验分享的开发实践活动。
「Code Lab科技创新营」蚂蚁技术人才面试全攻略--线上直播
今晚直播预告:前辈帮帮忙——HR如何做,才能成为CEO的好伙伴
为中小创业企业的HR提供经验分享和方法论借鉴,有效提升团队效率。
今晚直播预告:前辈帮帮忙——HR如何做,才能成为CEO的好伙伴