2024 可信数据库发展大会报名通道已开启!! 了解详情
写点什么

云时代下,云和开源软件厂商如何共存共荣?

  • 2024-06-06
    北京
  • 本文字数:8295 字

    阅读完需:约 27 分钟

云时代下,云和开源软件厂商如何共存共荣?

《企业级 Agents 开发实战营》重磅上线,10 周带你进行工具、对话及多模态等不同类型 Agents 工程化开发实战!

演讲嘉宾 | 陈守元,阿里云产品总监


云时代给软件和技术带来了巨大的变革冲击,一部分云为软件的正版化等难题提供了一个更好的商业变现手段,另外一部分为开源技术创始公司以及云厂商带来了新的思考范式,即:技术创始公司如何更好利用开源 + 云实现业务增长,同时云服务商如何用开源技术如何更好地实现云上算力增长以及商业变现。


在 QCon 北京 2024 大会上,阿里云产品总监陈守元,结合自己在阿里云的实践经历,发表了题为《云时代下开源技术商业化思考》的演讲,从云服务提供商的角度,分享他对开源技术商业化的看法,以及如何与客户和合作伙伴共同推动开源技术的发展。


本文由 InfoQ 整理,经陈守元老师授权发布。以下为演讲实录。

开源正在爆炸式增长


当初 IBM 收购红帽公司时,交易金额之大让我印象深刻。当时业界普遍曾认为开源是赚不了钱的,它更像是一个梦想或者理想主义的产物。然而,IBM 对红帽的收购颠覆了行业的观念。如今,像 DataBricks 这样的公司,尽管还未上市,但估值已达到数百亿美元,这无疑是商业市场对于开源技术认可度的体现,也是资本市场对于开源技术认可度的体现。


最初的开源主要是基础设施,比如数据基础设施、人工智能基础设施、操作系统以及数据库等。但现在,我们看到开源技术的多领域扩展,包括金融、电子商务、教育、安全等。开源技术已经渗透到了软件商业领域的各个细分市场。


开源对于创业公司来说至关重要,特别是在基础设施领域。如果创业者不选择开源技术,那么在早期阶段,他们可能会面临三个主要问题。


首先,建立客户信任关系非常困难。当我们向客户推销一个闭源技术时,如果公司的知名度不高,客户往往会问:“你们是谁?”在众多优秀产品中,要让客户了解并信任你的品牌和产品,如果没有开源这一市场营销渠道,这无疑是一项艰巨的任务。


其次,推广产品的难度会增加。决策者在考虑购买闭源产品时,往往会担心被供应商锁定,以及未来如有业务需要将如何进行迁移等问题。


最后,对于很多 CEO 和创始团队来说,由于上述两个负面因素的影响导致闭源技术产品的公司很难实现较快的市场、客户、营收增长,以至于该闭源技术产品公司最终恐怕难以支撑活到 IPO、或者被收购的时间。最终公司不得不面临破产解散的命运。

从开源的历史说起


让我们回顾一下开源软件的历史演进。


首先,自由软件时代。这个时代始于 GNU 宣言的发表,那时的开源软件更多地被视为一种理想主义的体现。自由软件的理念虽然崇高,但并不被认为是赚钱的途径。


进入企业产品时代后,情况有了巨大的转变。Linux 的成功孵化、进入企业级市场是一个标志性事件,越来越多的企业选择使用 Linux 构建服务器操作系统,并愿意为 Red Hat 等服务付费。开源软件公司通过软件增值费用和技术服务来实现盈利,尽管模式相对简单直接,且营收可能并不客观,但这个商业模式是可行的。


随后进入了 Cloud SaaS 时代,这是一个开源软件可以大展身手、带来巨大商业价值的时代。在这个时期,借助云计算的力量,开源软件迎来了一次巨大的爆发。


举个例子,Salesforce 在云上的市场开垦做得非常好,为后来者树立了一个非常成熟的 SaaS 模式,它也为 Elastic、Databricks、Confluent 等公司提供了一个很好的模板,证明了未来的 SaaS,尤其是基于云的 SaaS,是一种非常有利可图的商业模式。



如何从头开始做好开源


我想和大家分享如何构建一个成功的开源社区、开发一个优秀的开源产品,以及如何打造一个繁荣的开源市场,重点在于如何打造一个更优质的开源生态系统。


如何 setup 一个好的开源技术社区


一个活跃的技术社区是开源项目成功的起点。一个好的开源产品之所以能在技术社区中受到热烈的欢迎,主要归功于三个关键因素:技术开发的自闭环、产品管理的敏捷性,以及社区用户的互助性。


首先,技术开发的自闭环意味着技术人员之间相互服务。开源技术的第一批种子用户往往是技术人员,他们之间的互动形成了一个有效反馈和支持循环。这种自闭环不仅有助于解决问题,还能促进技术的改进和创新。


其次,产品管理的敏捷性是开源项目能够快速迭代、开发、部署和反馈的关键。开源项目通常采用敏捷的开发管理模式,这使得项目能够紧跟技术发展的步伐,及时响应社区的需求。


最后,社区用户的互助性是开源社区的核心力量。当你在社区中拥有一批忠实的技术粉丝时,他们会积极地帮助你推广技术,成为你的项目的坚定支持者。


如果你是一个技术社区的 Owner 或者开发者,你需要关注项目和社区的契合度,包括:


  1. 目标:在项目早期孵化阶段,打造一个活跃的明星项目,吸引更多的开发者和用户参与,确保社区的技术先进性。

  2. 指标:关注 GitHub Star、Pull Request、项目的进度以及贡献者数量等指标,这些是衡量项目活跃度和发展势头的关键指标。

  3. 技术开发人员、种子用户:关注并培养项目的参与人员,特别是那些种子用户,他们是项目能否持续发展和壮大的最原始动力。

如何 Create 一个好的开源技术产品


在成功构建一个技术社区之后,接下来的目标是打造一个优秀的开源技术产品。一个好的技术产品往往能够吸引广泛的用户群体,而社区用户对于技术产品的质量有着很高的鉴别能力。


在开源领域,我们面对的产品和用户都是基于“for free”或“of free”的原则。免费是一个非常经济高效的吸引用户的手段,它是转化漏斗的最顶层。相比于需要支付许可费用的闭源软件,开源产品在获取用户方面具有更大的机会。


在构建开源产品的过程中,我们需要深入理解:


  1. 用户是谁:明确目标用户群体,创建用户画像。

  2. 用户问题和痛点:识别用户面临的问题和挑战,了解痛点。

  3. 产品价值:解释为什么用户应该选择你的产品来解决他们的问题,尤其是与竞争对手的产品相比,你的产品有何独特之处和优势。


作为开源产品的 Owner,你需要关注:


  1. 打造明星开源产品:这里要关注的是产品如何满足市场需求,如何成为一个受用户欢迎的开源明星产品。

  2. 广泛活跃的用户社区:通过广泛的用户社区来培养和扩大你的用户基础。这个活跃的用户社区是未来进行商业转化的基础,是转化漏斗的最顶端。

  3. 获取标杆用户:在 To B 市场中,拥有标杆用户的 logo 非常重要。如果你的开源产品能够被大型公司采用,这表明你的产品在稳定性和成熟度上已经得到了行业的认可,能帮你更大规模地向中小型互联网用户和技术爱好者推广产品。


为了更好地讨论这个问题,我引入了两个概念:Commercial Open Source(商业开源)和 Community Open Source(社区开源)。


商业开源是指一个开源项目背后有一个商业公司主导,例如 Kafka 背后的 Confluent 公司,以及 Spark 背后的 Databricks 公司,这些公司通过商业化的方式推动开源项目的发展。


社区开源则是指没有一个主导的商业公司来推进的开源项目,例如 HBase。当前 HBase 社区遇到了一些困境,这些困境部分是由技术和产品问题导致的。但另一方面,如果从商业的角度来看,我认为当前一项技术背后没有资本、没有商业进行推动时,社区项目必然会面临挑战。


我认为,未来社区开源发展的核心竞争力将来自于商业开源。商业开源拥有市场、资本和商业力量的支持,能为开源项目提供更强的生命力和推动力。相比之下,早期的社区开源由于缺乏组织和领导,可能不足以支撑项目的长期发展和成功。

如何 Build 一个好的商业市场产品


对于许多创业者来说,尤其是那些基于开源技术进行创业的人,这一步尤为艰难。在这一阶段,最重要的任务是寻找市场价值契合点并创造收入。


如何基于开源技术创造商业价值?首先,我们需要明确商业软件中的两个关键概念:用户和客户。用户是指使用产品但不为产品付费的群体。而客户则是指不仅使用产品,而且为产品付费,为公司带来收入的群体。


在商业化的过程中,开源项目或其背后的公司会进行一个重大的优先级转变。在这个阶段,我们会更多地关注客户的诉求,而不是用户的诉求。因为客户是付费的,是为公司贡献收入的一方。用户虽然使用产品,但他们并不为我们付费,而客户则不同,他们直接会为公司创造营收。


以 Databricks 或 Confluent 为例,无论采用的是云服务模式还是本地部署模式,在商业化阶段,他们会更加关注客户的需求。因为在这个阶段,客户的需求是最需要关注的,客户是我们的衣食父母,是收入的来源。因此,我们会将更多的精力投入到满足客户需求上,以确保商业上的成功。


在开源领域,社区用户的转化漏斗是一个广泛讨论的话题。下图转化漏斗展示了从普通用户到付费用户的转化过程中,每一层用户数量的减少情况,以及相应的转化率或比例。对我来说,这个数字相当震惊,它揭示了一个广泛开源社区的转化现状。



在漏斗的最顶端,我们有所谓的“Non-paying users”,即普通用户,他们不为我们的产品或服务付费。如果以最终付费客户的数量作为基数或一个“单位”,那么在最顶端,每有一个付费客户,实际上有 50 到 500 个这样的免费用户在使用我们的产品、参与我们的社区。但需要注意的是,这些所谓“Non-paying users”用户并没有为我们带来直接收入。


随着进入商业化阶段,我们开始尝试将这些免费用户转化为付费客户。在漏斗的下一层“Casual Customer”,可以理解为个体付费用户或付费较少量的企业。这类客户的整体数量占比大约是 20 个单位,但他们的营收贡献(指营收金额)比例比例仅为 2%。这意味着,虽然他们开始为我们贡献收入,但这个营收比例相对较小。


漏斗的最底层,即“Enterprise Customer”,这部分用户通常是中大型企业或公司,是我们真正的核心付费用户。他们为我们的整体收入贡献了 98%,是收入的主要来源。这部分用户可以说是我们的“现金奶牛”。


这个转化漏斗的整体情况说明了,我们需要在早期投入大量的人力、精力、财力和物力去培养免费用户。然后在商业化阶段,逐层进行用户转化。


在这个阶段,商业产品的核心价值模型与之前的讨论非常相似,只不过这次关键问题将焦点从用户转移到了客户上:客户是谁?画像是什么?面临什么问题?决策者的痛点是什么?为什么会选择使用我们的产品而不是竞争对手的产品?


通常,在开发或销售商业产品时,我们很容易过于关注用户体验。但事实上,真正决定购买的是客户的决策者。他们关心的不仅仅是软件的易用性。如果我是 CTO,我更关心的是这套软件能否帮助我完成 CEO 下达的年度目标?是否能够帮助企业降低成本、提高效率?是否能够帮助我在职业道路上获得晋升和加薪?


因此,我们需要转换思路,不仅要关注产品的易用性等细节,更要关注决策者关心的高层次问题,如我们的企业级软件如何帮助到公司发展、降本提效、创造更大收入和增加现金流等。产品设计需要首先解决这些问题,这正是商业产品的核心价值所在。


今天,我们的讨论集中在开源产品上,这些开源产品不仅在社区用户深受欢迎,同样在商业用户中非常受欢迎。为什么?


首先,开源产品本质上采用了一种免费商业模式,极大地降低了吸引客户的门槛。免费模式是一个非常有效的获客手段,用户无需支付任何费用就能使用产品,从而降低了他们尝试产品的障碍。


其次,开源产品具有病毒式的传播方式。如果能够激发社区中更多的用户,包括布道师、铁杆粉丝和 KOL,将帮助我们免费宣传产品。虽然这种宣传可能集中在技术社区内,但这些渠道和线索同样可以帮助我们将更多的用户转化为商业客户。


市场营销方面,开源软件具有明显的优势。它不仅能够降低新客户的获取成本,还能够通过社区的力量,以一种自然而有效的方式传播产品。这些优势使得开源产品在商业化过程中成为了一个强大的工具,帮助我们在竞争激烈的市场中脱颖而出。


销售优势也是非常明显,我们的线索和商机往往来自于开源社区。开源已经帮助我们培养了大量的用户,从社区中发掘潜在的销售线索是最方便、成本最低的方式。


这也是一个产品可行性的验证过程。如果是闭源产品,我们需要到用户的环境下进行部署,这个过程的成本门槛是非常高的。但在开源方面,用户自己已经完成了部署,整个产品的可行性已经得到了验证。


此外,开源还帮助用户培养了使用习惯。以我之前负责的实时计算 Flink 产品为例,当我们向客户推广商业产品时,这些客户实际上都是来自开源社区的用户。我们不需要再向他们解释 Flink 的用法、优势,或者与传统流处理技术相比的好处。Flink 社区已经完成了这些教育工作,我们现在的核心任务是向客户清晰地传达商业产品相比开源产品的优势在哪里。


下图是我们开源商业软件的转化漏斗。通常情况下,用户会在开源网站上下载我们的开源软件包,然后进行安装和使用,这个过程自然而然地会产生潜在的销售机会。



这个漏斗的优势在于,它提供了一种直接且方便的方式来收集用户线索,并且可以根据用户的下载和使用行为来设定筛选规则,从而更高效地进行用户销售。通过这种方式,我们可以更精确地定位潜在客户,并且更有效地转化为付费客户。


然而,当社区已经培养得很好时,最大的对手往往不是他人,而是自己的开源技术产品。以我个人经历为例,如果我们在 Apache Flink 社区中已经培养了大量用户,那么当我们推广商业化 Flink 产品时,最大的挑战其实来自开源版本的 Flink。因为我们的商业产品需要收费,而开源版本是免费的,这自然形成了一种竞争关系。


围绕如何解决上述“自竞争”问题,我们需要回到之前讨论的策略:商业化软件必须解决真正决策者所关注的问题,包括降本提效、安全性、稳定性、合规性和技术服务等。


在这个商业市场产品阶段,我总结了目前开源软件的三大商业模式。


  1. Service 模式 通过为用户提供支持服务,收取相关的咨询费用。这种模式的 ROI 相对较低,可能不足以支持企业持续前进。

  2. Open Core 模式:向用户提供商业许可证,并通过许可证收费。需要注意商业产品与开源产品之间的差异,否则客户可能不愿意付费。所以,必须推出一个在对于软件采购决策者来说比开源版本更好、更有打动决策者的商业化版本是我们基于开源技术实现商业营收的关键。

  3. Cloud SaaS 模式:基于云的软件即服务模式,用户通过订阅使用软件。同样需要注意商业产品与开源产品之间的差异,以及云服务提供商直接基于该开源软件对外提供服务对我们的潜在影响。


Cloud SaaS 模式的优势在于广泛的触达和低门槛,以及避免盗版和易于维护的特点。我强烈建议技术服务提供商在商业化初期就把 Cloud SaaS 作为一个核心的商业模式来考虑。

云厂商下场带来的巨大变化


我想从云服务提供商的角度,特别是作为阿里云的产品经理,来探讨云厂商参与市场给开源软件带来的变化。


在传统的模式中,开源软件用户转化为企业客户的过程并不高效。尤其是在传统软件领域,由于部署和销售的复杂性,转化漏斗的效率更低。因此,传统软件厂商面临的最大问题是企业客户的采购基础并不稳固,难以支撑软件厂商企业的长期发展。



当云厂商参与进来时,这个问题可能会变得更加复杂。


虽然转化漏斗的过程没有变,但现在出现了一个新的链条。当我们培养好了 Flink、Spark 等开源社区后,最大的获益者其实是云厂商。许多用户会选择在云服务上购买虚拟机或集群,直接部署这些开源软件,从而立即使用它们。这意味着,这些优秀的软件实际上为云厂商带来了大量的流量。


坦白说,大部分开源软件的红利实际上被云厂商所吸收,包括 IaaS、PaaS 和 SaaS 各类层面的开源软件。最近也有开源软件厂商改变许可协议的现象,比如 Redis 和 MongoDB 等最近的变动,他们改变许可协议的核心目的并非针对普通用户,而是针对云厂商。他们不希望云厂商继续这样将他们辛勤工作的成果全部收入囊中。


作为软件服务厂商,如何在云厂商的竞争中立足?


首先,商业代差是软件服务厂商的生命线。无论云厂商是否参与市场,你的商业产品应该是该项开源技术最好的商业实现版本。如果你做不到这一点,即使没有云厂商的竞争,你也将被市场淘汰,这是毫无疑问的。


其次,多云策略是软件厂商用来应对云厂商的一个重要手段。很多厂商,比如 Databricks、Confluent 等,为了避免被特定的云厂商绑定,提供了中立的云服务,可以在多个云平台上部署,如阿里云、AWS 等。他们会告诉用户,选择他们的服务可以避免被云厂商绑定,因为他们提供的 API 接口在不同云厂商上的使用体验是完全一致的,便于用户在不同云平台之间进行迁移。这是一种常见的营销策略,也是软件厂商用来吸引客户的一种说辞。


最后,开源技术软件协议的修改是软件厂商用来限制云厂商的一种手段。为了避免所谓的“薅羊毛”现象,很多开源厂商都在调整他们的许可协议,避免云厂商无偿利用他们的开源技术。



那么,从中立一些的角度来看,云和开源厂商如何共存共生?


首先,我们需要明确云的本质是什么。云厂商,实际上是算力运营管理服务的提供商。简单来说,算力就是我们用来进行信息计算的资源。例如,在阿里云中,我们提供了多种算力的抽象形式。IaaS 是一种算力的抽象,它向用户提供了一个操作系统级别的抽象;PaaS 则是在 IaaS 之上的另一层抽象;而 SaaS 则是更接近最终用户服务的抽象。我们的客户,可能会将我们的服务进一步封装成他们自己的 SaaS 产品,向他们的用户提供服务。这些都是算力的不同层次的封装。


是否所有的算力封装都必须由云厂商来完成呢?其实并不是。如果有更好的算力服务抽象出现,云厂商并不介意其他人来做这个工作。当然,也有可能云厂商想要亲自参与进来。以 IaaS 层为例,假设我们谈论的是 CPU 卡,云厂商可能会说他们要自研这一部分,但所有云厂商下场前都需要掂量下是否在 ROI 能做得过英特尔、AMD 吗?


我认为,云厂商的本质是提供算力的运营管理服务,这是一种更高层次的抽象。算力的封装工作并不一定要由云厂商来完成,开源厂商也可以参与进来。无论是 PaaS 还是 SaaS 的抽象,都是可以的。当我们在这一层进行封装时,我们实际上也在消耗底层云厂商的资源。


当云厂商将硬件如 Intel CPU 封装为虚拟机并对外销售时,这里面也存在着超卖的利润空间。因此,这是一个云厂商和 IaaS 厂商共赢的商业模式。我想传达给大家的是,云厂商本质上是算力运营管理的提供者,而算力的抽象工作并不全都需要由云厂商来完成,开源厂商同样可以在这个领域发挥作用。



在这个大的框架和前提下,讨论云服务提供商和开源技术厂商如何共存共生就变得相对容易了。我的看法是,云服务提供商和开源技术厂商的定位是不同的。虽然我们都是技术供应商,但我们并不处在同一个层面上。严格来说,我们并不直接竞争,尽管有时候可能会出现一些冲突或重叠。


云服务是数字化的基础设施平台,提供了一个算力的平台,而开源技术厂商则提供在云平台上运行的数字化软件,就像淘宝上出售的商品一样。这是一种层次关系,而不是替换关系。对于云服务提供商来说,未来将成为数字入口的基础设施,它将是 IT 采购流量的运营中心。


在讨论云服务提供商和开源技术厂商如何共存共生时,我认为亲和力是一个关键因素。


所谓亲和力,是指在未来的用户采购决策中,他们可能会选择多云策略,而不是单一云服务提供商。用户可能会选择将一部分 IT 设施投入到阿里云,同时将另一部分投入到其他云服务提供商。在这种情况下,云服务提供商面临的一个关键问题是,如何与上层的开源产品建立良好的关系,让这些产品能够更多地将算力导向云服务商,这种亲和力会成为决定未来云厂商的市场份额重要因素。


对于云服务提供商来说,如何看待未来的开源技术公司,特别是那些拥有产品的公司?


我认为,未来的明星开源技术公司,它们就像是云计算领域的大 V,能够为云计算带来大量的算力消耗和流量。云服务提供商需要积极地邀请这些开源产品公司入驻云市场,进行技术合作,甚至资本上的合作。以 Databricks 为例,它在微软云上为微软创造了巨大的收入,因为它的产品非常优秀,并且与微软云的结合非常紧密。


技术放大效应也会在云社区中显现,因为许多用户实际上都在云平台上使用这些开源技术,所以开源社区也会在云社区用户中推进该项技术放大。


对于开源公司来说,需要探索的是如何入驻云市场,进行技术合作。如果一家公司与一个在市场上具有主导地位的云服务提供商,那么它可以帮助这家公司将开源技术推向中文社区,甚至全球市场的第一。这种合作的模式在北美市场与 AWS 和 Google 的合作是类似的,因为云平台上有大量的开发者。与云服务提供商的合作可以将开源技术在整个社区里放大,甚至可以进行资本合作。这是开源厂商需要去探索的方向。

技术和商业的飞轮关系


通过开源,我们可以建立一个活跃的用户和社区,这反过来又会吸引更多的资本投入,以支持技术和社区的发展。没有商业支持的开源,最终可能会走向衰退。未来,只有商业化的开源软件公司才能够获得更多的资金和资本,以回馈技术和发展社区,从而实现飞轮的持续转动。



在这个新的 Cloud 时代,开源不仅仅是与商业的结合,还与云紧密相关。云在这里本质上代表了商业,因为云是未来 IT 采购的流量入口,它代表了技术的商业变现的最佳渠道。云和商业将共同推动开源技术的发展,而技术也将反哺云,驱动云的增长。


2024-06-06 15:496291

评论 1 条评论

发布
用户头像
草根出热门开源的日子可能过去了,做committer可以,起炉灶要在大厂起
2024-06-07 11:35 · 广东
回复
没有更多了

用时半个月,终于把2020年各大公司的Java面试题精选整理成文档了

Java 程序员 后端

男默女泪!阿里技术官的Docker+K8S手册(1),java研发工程师面试问题

Java 程序员 后端

看一遍就理解:动态规划详解,双非渣本Java四年磨一剑

Java 程序员 后端

用10个真实案列带你掌握MySQL调优(1),springboot注解原理

Java 程序员 后端

用10个真实案列带你掌握MySQL调优,开发人员必学

Java 程序员 后端

男默女泪!阿里技术官的Docker+K8S手册,java开发视频直播

Java 程序员 后端

直击阿里“远程面试”现场,linux驱动开发入门与实战

Java 程序员 后端

架构实战营模块2课后作业

断水风春

架构实战营

看这篇就够了!RabbitMQ如何防止数据丢失,详细讲解,linux教程课后答案孟庆昌

Java 程序员 后端

架构实战营- 模块二

瓜子葫芦侠

「架构实战营」

理解RabbitMQ中的AMQP-0-9-1模型,深入java虚拟机第三版百度网盘

Java 程序员 后端

疫情降至,我只花了7天,经历三个步骤拿到了腾讯offer,springmvc面试题常问2020

Java 程序员 后端

真香现场!全网首发Spring5秘籍手册+知识导图,记得把每一次面试当做经验积累

Java 程序员 后端

疫情期间宅在家的这段时间,突然收到(余额宝,java架构师技术进阶路线图下载

Java 程序员 后端

看完这篇文章,你对Redis持久化的迷惑就全解开了,超全面

Java 程序员 后端

看完这篇,别人的开源项目结构应该能看懂了,kafka入门与实践百度云

Java 程序员 后端

知乎头条。纯干货:深度认识Sharding-JDBC,mybatis连接数据库原理

Java 程序员 后端

硬核!逛了5年的Github一口气把我收藏的JAVA开源项目分享给你

Java 程序员 后端

理解 MyBatis 是如何在 Spring 容器中初始化的,java上传视频

Java 程序员 后端

看完这篇,面试再也不怕被问 Webpack 热更新,java原理及插件

Java 程序员 后端

真666!阿里资深架构师熬夜纯手写的238页微服务容器化开发实战笔记

Java 程序员 后端

知乎:怎么评价程序员35岁了还在撸代码?,java实用教程第五版电子书答案

Java 程序员 后端

硬核图解!断网了,还能ping通 127,高性能mysql笔记

Java 程序员 后端

疫情在家刷了几个月的面试题及算法,我终于拿到了字节跳动offer

Java 程序员 后端

百度、阿里、美团,java敏捷开发模式面试题

Java 程序员 后端

瞬间霸榜,收藏第一的“kafka学习笔记,java图片转视频

Java 程序员 后端

知乎万赞:Java程序员的悲哀竟然是,java编程思想百度云

Java 程序员 后端

linux中同时移动多种格式文件

入门小站

Linux

用了这么多年分页PageHelper,你确定你真的会用吗?,mysql应用教程李辉答案

Java 程序员 后端

硬核解析,巧用案例学习jQuery框架三种事件绑定方式,最新阿里+头条+腾讯大厂Java笔试真题

Java 程序员 后端

真香!前阿里P8甩我一份内部SpringCloud笔记手册,竟然在Github上点击破百万

Java 程序员 后端

云时代下,云和开源软件厂商如何共存共荣?_云计算_傅宇琪_InfoQ精选文章