从“挂科大王”到网络安全布道者,云舒的那些“面壁”时刻[通俗易懂]

从学习、工作和创业经历出发,走近网络安全布道者云舒的人生。

大家好,又见面了,我是你们的朋友全栈君。

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

作者 | 杨阳    嘉宾 | 云舒

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

六年前,云舒离开阿里,他引用陈胜的那句“燕雀安知鸿鹄之志”引来议论纷纷;六年间,他很少发声,原本在知乎的阵地也只偶尔更新;六年后,我们重新寻迹。

究竟是什么,成就了这样一位厚积薄发的网络安全“云神”?他曾经被误读的那段经历的背后,有哪些鲜为人知的故事?网络安全二十载,他又有哪些最新的实践和思考?

在此,我们将从他的学习、工作和创业经历出发,走近网络安全布道者云舒的人生,了解他对网络安全领域独特的认知。

从“挂科大王”到网络安全布道者,云舒的那些“面壁”时刻[通俗易懂]

魏兴国(云舒),默安科技创始人兼CTO,

原阿里巴巴集团资深安全专家

1.如果想做计算机,但选错专业了怎么办? 

当问及“如果想做计算机,但选错专业了怎么办?”

云舒给到的答案是:选择所爱,义无反顾。

记得2000年,互联网泡沫席卷全球。那时的中国刚诞生了如今家喻户晓的科技三大巨头:腾讯、阿里、百度。它们与搜狐、网易和新浪共同开启了“中国互联网1.0”时代。

此时的云舒刚刚进入大学校园,初次接触电脑的他发现“世界上居然还有这么好玩的东西”。但他的“好玩”并非沉迷于网络游戏,而是探索网络世界背后的“神秘”。

四年间,从Photoshop到网页设计,从C语言到Java,他在计算机领域开启了废寝忘食的学习模式,而原本自己所选的国贸专业课则无暇顾及。不出意外,大学期间,云舒的专业课几乎全挂,临近毕业的他在外人看来“前途堪忧”,最终毕业证也没有拿到。

然而,值得庆幸的是,2004到2008这四年可以说是互联网的黄金期。“我毕业的时候正值产业发展的爆发,大厂的原始积累就是从这个时候开始。各个岗位都很缺人,无论是技术开发,还是做业务。”

就这样,云舒先是在一家上海公司做起了技术客服,一年后跳槽去到绿盟,作为安全工程师的职业生涯就此开启。

初为技术人,他非常享受这种纯粹的自由:“我就像是一把‘刀’,项目经理让我砍哪里我就去砍,砍完之后看达到了怎样的效果。那个时候不喜欢和人交流,纯技术的挑战让我非常享受。”

在绿盟的一年间,云舒在攻击、入侵等技术上出师,他也很喜欢做授权的渗透测试。正当他乐在其中的时候,有一天道哥(吴翰清)找到他,希望他可以去雅虎(中国)。此时雅虎已被阿里收购,安全很需要人。

这个契机也成为他职业生涯的转折点,从单纯做技术,开始接触到项目管理、团队组建等更具挑战的管理工作。

然而,云舒最初的面试并不顺利,不善言辞让他给面试官留下难以有效沟通的第一印象。但因为阿里与雅虎的相关业务整合急需用人,那么公司迁址急需有人设计一套安全的无线网络,就在这样的机缘巧合下,云舒获得了机会:“当时国内在搞安全网络的人几乎没有专门做无线的,大部分是做Web,或者是系统底层溢出,但都不是基于无线网络的架构体系。”

攻克一个“从无到有”的项目,不仅是云舒大展拳脚的机遇,也是稳步入职的敲门砖。在实际操作中,从做攻击、入侵,到架构无线安全网络,这个跨度相当之大,压力可想而知。但对于云舒而言,没有退路可言,就只能硬着头皮上。就这样,整整一个星期,他都在昏天黑地地查阅各种资料。

“就和‘面壁’一样,有一天就明白了无线网安全是怎么回事,豁然开朗。”

搭建网络的同时,云舒身兼数职,包括项目上和供应商谈判、做产品测评,也开始着手组建团队。在此期间,他所缺乏的沟通能力得到了极大锻炼。终于,在新办公室启用前,无线网络顺利开通。

万事开头难,在顺利拿下入职的第一个项目后,云舒在后来成为安全专家的道路上也越来越顺,直到两年后去到阿里。

2.沉淀到爆发:技术得意“少年时”

入职雅虎两年后,云舒被调到阿里总部,和道哥一个部门。在人生际遇上,道哥也非常励志,15岁考上西安交大少年班,他和云舒同样“叛逆”,对大学刻板的教育方式不感兴趣,开始在计算机的世界里寻找着自己的天空。

就这样,云舒负责系统网络,道哥负责应用安全,两位“技术得意少年时”的黑客开启了他们在阿里巴巴的“创世纪”。

初入阿里的一年里,云舒只是把在从雅虎两年的锤炼中学到的体系架构在阿里进行了推广和落地,此外日常业务对他而言,没有更多挑战,就这样,他们经历了一年的沉淀期。

“真正的挑战从2009年开始”,云舒说道。在这一年年初,阿里正式组建了集团研究院。同年9月,云计算公司在研究院基础上成立,刚任职阿里软件首席技术官的王坚博士担任公司总裁。这一战略布局宣誓了阿里做云的决心,但实际上当时国内在云计算领域几乎一片空白。

“这是一个非常重要的转折点”,云舒表示:“我们最开始所理解的云计算其实是错误的,从2009年到2012年的研究方向都不对,当时就感觉很低落,整个人处于崩溃的边缘。有一天实在撑不住了,我就请假开车到西湖边,越想越委屈,然后就大哭了一场。”

回忆起当时的心境,云舒觉得那种痛苦的感受主要来源于“挫败感”。当全身心地投入、完全沉浸在研发中时,不管怎么努力却都无济于事的无力感。而且不仅仅是他,整个团队三、四十人,做安全的五、六个人,所有人似乎都是做什么、错什么。

就这样,煎熬了一年、两年、三年,直到一种名为“弹性计算”技术的出现。

“当时我们是做ODPS(Open Data Processing Service,海量数据离线处理服务,后更名为MaxCompute),有点像Hadoop,用于分布式计算和分布式存储,当时花了很多时间去做这个项目,直到后来发现弹性计算。”

在他看来,“弹性计算”这个最初被认为是边角料的技术,却在落地过程中被证明是行之有效的。

自此之后,不仅是阿里的安全团队,也包括整个阿里,在云计算方面越做越顺。2013年底,阿里云计算获得全球首张云安全国际认证金牌(CSA-STAR),同年余额宝核心系统全部迁移至阿里云。一年后,通过云合计划和MaxCompute的发布,一方面构建起了云生态系统,另一方面优惠的产品价格也让更多中小企业参与其中,阿里云正式腾飞。

“整个人就从那种极度压抑的状态中重新焕发起来了,像在一个极度缺氧的黑屋子里,突然进来了新鲜空气,阳光也照了进来。”

当阿里云走上快车道,云盾业务也发展平稳之后,云舒带着3个人的团队开始了内部创业,成立了安全研究实验室,孵化出三个有影响力的产品:基于用户行为分析的风控、IoT安全,以及聚焦在黑客群体的“黑客情报”。

然而,就在一切都朝向更好的时候,云舒的心境却在潜移默化中改变。

3.为理念而拼搏的时候到了!

阿里十年,云舒度过了他的青春时光,也留下了很多美好记忆。这所“黄埔军校”也让他从初出茅庐的懵懂,成长为胸有成竹的资深专家。在决定离职时,他已成为很多“粉丝”追随的“安全大神”。

没过多久,他即将离开阿里的消息传遍圈内,尽管本人没有发声,但网络上已经炸开了锅。甚至有人还专门发起了一则“如何看待云舒离开阿里巴巴?”的讨论,引来20多万浏览量,100个人回答,其中有“阴谋论”的,有猜测因为“安全大事件”的,也有人认为他是想要实现自己最初的梦想:黑客精神,侠义情怀。

面对众说纷纭,云舒只回答了一句话:“别瞎猜了,我离开阿里只为创业,仅此而已。

事实证明确实如此。实际上,从阿里走出创业并非新鲜事,在云舒之前,道哥先他一步,加盟了后来成为百度副总裁马杰在当时创立的安全宝,后来又在王坚博士的邀请下,道哥带着他的一部分团队重返阿里。半年多之后,安全宝被百度全资收购。

云舒的出走也是其来有自。在离开之前,他已经逐渐对传统的安全防御理念感到“担忧”:“还在阿里的时候有个问题一直困扰我,就是我们购买的入侵检测产品每天报警数量都在1万条以上,但又不能显示问题出现在哪里,这让我感觉这个产品其实毫无意义。”

这个问题在安全行业普遍存在,关键在于传统安全产品的架构理念。入侵检测看似是在建一道道坚固的墙,但实际却有不少漏洞。他打比方说:“传统做法是在需要保护的资产周围建立围墙,然后在每一道‘门’处都放一个‘保安’,但这些‘保安’在识别准确率上往往差强人意,为了提升准确率就得设定更为严格的规则,但这会让很多良性的信息被误判。而真正的病毒是很会伪装的,可以巧妙的避开各个规则,反而又能蒙混过关。”

如何能够更加快速和精准的抓到病毒?

“动机”很重要。偏好竞技思维和逻辑推理的云舒开始从人的心理下手,毕竟在病毒的背后是人在操控。一旦有了这种想法,就想要挖掘背后的本质,不断深入了解,最终形成理念。就这样,在阿里的最后一段时间里,他已经和传统防御理念“貌合神离”,出走是必然的,只是早晚。

“有一天,老聂(聂万泉,原阿里云平台安全总监)找到我,问我要不要一起创业?”

尽管众多亲朋好友劝阻,但云舒还是没有太多犹豫,这份底气或来自于“十年磨一剑”的自信,而更多的,是为理念而拼搏的时候,“到了!”

就这样,默安科技在阿里巴巴“出走小分队”的带领下,在2016年4月正式创立。三位创始人分别是:CEO聂万泉、COO汪利辉,以及CTO是云舒本人。除了经营管理上的分工,他们还有一个共同的头衔——“欺骗防御”理念的重要布道者。

说起这一理念,正是他们在思考如何快速抓到病毒“动机”的基础上,透过现象看本质,通过系统的架构从而形成的新型攻防思维:“这就好比警察抓罪犯,传统防御通过围堵处处设防,贴出一堆罪犯的外貌特征和行为习惯,但这些其实都是可以通过刻意避免而伪装的。”

在云舒看来,网络病毒既然是人做出来的,它们的行为方式背后也是人的心理。

就像犯罪分子在作案的时候总会形迹可疑,网络病毒在隐藏攻击时也会露出马脚。这样一来,云舒和他的合伙人就设定了“欺骗防御”的“三步抓”战略:

第一步:布控,引“罪犯”。

“我们在围墙上挖个洞,装上一个似有似无的木门,看上去和墙一样,但可以用‘脚’踹开,这个洞连着一个房子,里面是‘金银珠宝’,最后在门口安上‘监控’。”

第二步:预警,抓“现行”。

“第一步布控好之后,第二步就是抓现行。只要到了这个地方踹门,就不是好‘人’。好‘人’都会走大门,不会在这里踹门。看到踹门的‘人’我们就会把它抓起来。”

第三步:收网,清“漏鱼”。

“如果第二步不小心漏掉,‘坏人’进来了怎么办?也没有关系,我们在屋子里、门口都装了监控,而且‘珠宝’都打了标签,只要动了手脚就能发现入侵者。”

对现实世界“犯罪心理学”的活学活用,云舒和他的伙伴们另辟蹊径,开辟了安全新事业:“我们在国内开创了一个新的领域,这是让我很开心的事。”

成立半年,默安科技在2016年秋天发布了第一款基于“欺骗防御”理念产品。据云舒介绍,经历了两年沉淀期,到2019年产品逐渐得到市场认可,2020年开始爆发。如今,进入这个领域做类似产品的已有三四十家企业。

2022年3月30日,默安科正式宣布完成3亿人民币D轮融资。目前,公司围绕左移开发安全(DevSecOps)与智慧运营安全(AISecOps)两大主线提供安全产品与服务,覆盖上线前和上线后全场景。其中,以欺骗防御为核心的AISecOps业务线主要针对云化的数据中心场景,通过AI,智能化地替代需要传统人力的安全运营和运维工作。

4.开发者成长启示:从“普通”到“卓越”

看了云舒的成长经历,你肯定会发现这并不是一个天才少年手执仗剑、披荆斩棘的故事。他并非天才,用他自己的话说只是在理工科上有天赋,但有天赋者众多,能够真正走出自己技术人生的却鲜少。

事实上,在他每一次成就的背后,都有一些不得不的“隐忍”:选错专业,但为了成为开发者,需要忍受作为“差生”的不被期待;研发没有起色,但为了成就“爆款”,需要忍受“做什么都错”的漫长历练;理念不被理解,但为了证明自己,需要忍受“一切重新开始”的潜在不安。

当年那句被恶意揣测的“燕雀安知鸿鹄之志”,时至今日,他用实际行动证明了这个“志”究竟是什么。就如电影里的那句台词:“追求卓越,成功才能在不经意之间追上你”。

最后,云舒在接受《新程序员》采访时,对当下的网络安全行业,以及对开发者也谈到不少他的深刻认知和精彩观点,在这里一并呈上,以飨读者。

5.未来趋势:深度学习加持、云端分发、“零信任”理念

《新程序员》:近十年网络安全行业出现了哪些颠覆性的技术?

云舒:我觉得近十年来最重要的技术是“深度机器学习”,也就是很多人说的AI。AI技术通用性很好,基本上在所有的安全领域都能发挥作用,也确实实现了很多以前无法实现的目标,像Web shell检测、流量检测、Web攻击检测。

这些检测以前难度很大,不管怎么写规则都会被混淆、加密之类的攻击技术绕过。深度机器学习第一次让检测方没有那么被动,甚至在渗透测试等方面出现了一些基于AI的自动化渗透机器人,不知疲倦、7*24小时全天候对指定目标进行渗透攻击。

有时候我觉得,误报极高的SAST(Static Application Security Testing,静态应用程序安全测试)产品,只有真正实现AI技术赋能才能够“拯救”。如果有一天AI能够低误报、高精度地实现白盒代码审计,就说明实现了接近真人的智能。

《新程序员》:在数字经济,或者说数字化转型的时代背景下,网络安全技术会出现哪些新的发展趋势?呈现怎样的特点?

云舒:一个重要趋势是越来越多的安全能力分发自云端,而且是以SaaS的方式分发。其实数字化转型很大程度上得益于云计算的发展,云计算的普及让非常多的企业,甚至是一些中小企业无需拥有强大的技术团队,就可以获得强大的计算资源和大数据存储、处理能力,进而提升业务的发展速度。同样的,这类企业也缺乏强大的安全团队,就需要和同样便捷的来自云端的安全能力相匹配。

第二个趋势是数据安全和隐私计算得到充分发展。更多的东西从传统的线下来到了线上,甚至要在不同组织之间协同计算,甚至是流转数据。那么,如何安全的存取这些数据,在保证隐私的情况下协同分析数据,就成为了非常关键的问题,可能涉及到多方安全计算、同态加密等方面。

第三个是零信任理念加快落地。在越来越多的企业实现数字化转型之后,移动办公、远程办公将会成为常态,传统的VPN接入设备并不是针对大量的日常使用而设计的,零信任的方式将是一个很好的选择,这也会和第一点关于云端分发安全能力相结合,零信任能力变成云端分发的多种安全能力中最基础的一种。

《新程序员》:谈到“零信任”,它作为新兴的网络安全防护理念,在落地应用上都有哪些新的突破?

云舒:这一理念可以落地在很多产品中。零信任默认对任何接入都不信任,而是通过一系列的认证机制取得系统的信任,并且此信任并不是一次认证一直信任,而是动态的、变化的,通过行为数据、UEBA动态调整的权限,高危行为触发二次认证甚至封禁,这对传统的信任机制是一个比较大的升级。

在落地上,零信任目前的趋势是取代VPN,作为一种更合理、更安全的接入方式,具备对VPN的明显优势,因此目前很多零信任项目都以替代VPN的名义立项,但是对落地来说最值得参考的还是Google的BeyondCorp架构中提到的落地方式。

稍微长远来看,零信任会成为SASE(安全访问服务边缘)的标准模块,最终通过云的方式分发。另一个层面,零信任很多时候是作为一个内网门户在使用,作为一个IT产品在使用。企业内部不再需要建立专门的内网门户,而是直接使用零信任产品作为内网应用的统一入口,在这里发布,在这里访问。

6.新的挑战:5G、云原生和开源

《新程序员》:5G的普及让网络安全出现哪些新的挑战?该如何应对?

云舒:5G的应用场景主要是可以移动的设备。随着5G的普及,越来越多的东西可以云服务化,比如云电脑、云手机、汽车的云端实时协调等等。这样一来,云上的攻击会更直接影响个人生活。万物依托云来互联的时代下,云上安全问题会进一步被放大。

所以,5G时代开发安全的重要性进一步凸现。因为更多的移动终端被连接到网上,而传统的设备制造商很可能不具备开发出安全的、面向互联网业务系统的能力,包括设备自身系统的安全能力,也包括云端API的安全能力。

《新程序员》:云原生取代传统IT已成为很多企业在中台架构上的新选择。这一方面打通了传统信息化系统壁垒,但同时也带来了新的网络安全问题。从日常实践来看,您主要发现了哪些新问题?又是如何解决的?

云舒:现在的云原生主要依托K8s(Kubernetes)容器云,以及更底层的虚拟化云作为主体,因此云原生在包含云安全的基础上,加入了新的东西。事实上,很多企业还没有掌握云及云服务的安全使用方法,而新的K8s及其生态系统又是非常复杂,这里面新引入了大量的新名词和新配置,极易出现错误理解、错误配置导致的严重安全问题。K8s作为一个中心化方式管理的体系,出现问题经常就意味着被“一锅端”。

除了K8s外,云原生将业务拆分成多个微服务,微服务之间存在大量的API调用和数据传输。在这个层面上,传统的安全产品都失效了,需要新的安全工具。

另一方面,云原生采用DevOps敏捷交付,传统的SDL(Security Development Lifecycle,安全开发生命周期)方案太重、太慢跟不上,需要全新的高自动化、高速、低误报的DevSecOps工具与之匹配,以满足DevOps对发布成功率、发布速度方面的要求。

此外,还需要注意部署上的问题。云原生业务和环境打包为一个整体并且快速上线,这样的话,传统先部署环境、再部署安全产品、最后部署业务的模式就完全不可行了。云原生体系不额外提供部署时间差,它需要原生的安全,申明需要后可立即获得保障。

所以,云原生需要全新的、整合的安全方案,要横向跨越虚拟化云、公有云OSS、RDS等SaaS化云服务,以及多集群的容器云。在这样复杂的运行环境下,纵向打通从代码到镜像打包、测试、分发、运行等各个节点,提供更高的可见性和可控性。方案必须具备高度的敏捷性、灵活性和弹性,从而紧跟业务自动化的实施和变更,我们一般称之为CNAPP(Cloud-Native Application Protection Platform,云原生应用保护平台)。

《新程序员》:人们会从直观上感觉开源更不安全,您怎么看这个问题?应该如何防范开源的风险?

云舒:如果有两条河,一条非常清澈,能看到河底有碎玻璃和钉子,一条河水是黑色的,看不到河底,那么哪条河更安全?我们可以将前面一条河看做开源软件,后面一条河看做闭源软件。安不安全与开源与否关系不是很大,关键是这个软件的提供商的安全开发能力,安全管理能力。从数据来看,也很难说开源与闭源谁更安全,有些使用面很广的闭源软件也出现过大量高危安全问题,也有非常安全的使用面很广的开源软件。

开源安全作为开发安全的一部分,重要的是在CISO(Chief Information Security Officer,首席信息安全官)层面提供支持,建立一套完整的覆盖产品经理、研发、测试、配置管理、运营的安全体系,包括安全意识培训、安全开发能力培训,以及安全流程开发等等环节。流程部分偏传统一些的可以使用SDL体系,偏敏捷的可能需要DevSecOps体系,引入SCA(Software Composition Analysis,软件成分分析)、IAST(Interactive Application Security Testing,交互式应用安全测试)等各种工具相配合。

7.To开发者:亲力亲为、人品+实践、沉浸式学习

《新程序员》:您曾说:“不能站在岸上对田里插秧的人指手画脚,要自己站在田里。”现在日常还会参与研发或者更基础的编写代码吗?您如何将自己做开发的思维和价值理念传递给开发人员?

云舒:这个问题非常有趣。2020年我们研发人员非常短缺的时期,我想参与写代码,但被我们的研发总监拒绝了,他担心我写的代码质量,因为我从来没有经受过正规项目的考验,最多写过一些小工具。

我是在2016年讲的这句话。创业之前,我在阿里做了十年安全,对安全产品有一些自己的想法,跟很多厂商讲过我的思路,但是他们并没有做出什么实质性的动作。于是我想可能是因为我站在岸上,没有说服力,也有可能是我看错了。于是我自己跳到田里“插秧”。

这句话我是创业之前讲给自己听的,因为我给很多安全供应商讲了我的理念,但他们并没有真的认可,于是我出来创业,自己做一点不一样的东西。对程序员而言,大部分都是非常务实的,大家都喜欢讲“Talk is cheap,show me the code”,所以不需要我去传达类似的东西。

程序员,或者说技术人员,更需要的是理解和认同,需要成就感。我更关注的是这方面的事情。技术员最大的挫折莫过于项目失败、产品失败。所以我在条件允许的情况下,尽量参加每一个重要版本的需求评审、原型评审、技术架构评审,确保版本可靠,不会出现后面返工的情况,以至于打击积极性。这方面做好了,大家就会相处得很愉快。

《新程序员》:目前安全领域人才总体上是供不应求、供大于求,还是基本处于平衡?您在招聘技术开发人才上主要看重哪些方面?

云舒:优秀的人才是供不应求的,各大互联网公司,各大银行、券商,各大安全公司,全都在抢人。技术人才,第一看人品,第二看实践能力,学历是其次。曾经有人说可以带前公司的代码过来,我直接拒绝录用,人品有问题是不能做安全行业的。

《新程序员》:对于开发者,您有哪些技术发展路径的建议?根据您自身的经历,该如何达成高效快速的学习,且更具前瞻性?

云舒:我有三个建议。

第一,能不上网的时候不要上网,尤其不要去问答类、知识付费类的网站,那里没有知识,而且还会造成一种在学习的错觉。我们可以买本书,认真的看,纸质的、电子的都可以。

第二,实践。每当学了一个新的东西,做大量的实践。

第三,坚持。

技术路线方面,最火的有三个常规方向:操作系统相关技术、网络流量相关技术,以及WEB安全相关技术。通用类的,在每个方向都可以发挥作用的,如数据分析技术、继续学习技术等等,都可以考虑。

本文为《新程序员004》内容,二十年前,《程序员》创刊时,我们要全面关注软件人的成长。今天,我们依然初心不变:在一行行代码的背后,是一颗颗鲜活的开发者想要改变世界的雄心壮志。因此,《新程序员》从潘爱民到 MySQL 之父、MariaDB 创始人 Michael “Monty” Widenius,PostgreSQL 全球开发组联合创始人 Bruce Momjian,阿里巴巴副总裁贾扬清,著名科技作者吴军,Vue.js 作者尤雨溪……共谈我们的程序人生,我们的技术时代。《新程序员》即将上市,敬请期待。

从“挂科大王”到网络安全布道者,云舒的那些“面壁”时刻[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129358.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号