【万字长文】开源之播对话白鲸开源CEO郭炜--乐观主义的开源精神走得更远
本文为白鲸开源科技CEO郭炜1小时深度访谈全记录
来源于:开源之播」·Episode15:对话郭炜–乐观主义的开源精神走得更远
大家好,我是郭炜,开源圈的“郭大侠”。作为 Apache 基金会的成员,我曾参与并孵化了多个开源项目,如早期的 ClickHouse,以及 Apache DolphinScheduler(中文名:海豚调度)和 Apache SeaTunnel。这些都是 Apache 的顶级项目。现在,我创办了 白鲸开源,致力于通过开源打造中国的开源商业公司。今天很高兴与大家分享我的一些经历与思考。
去年,我写了一篇文章,标题非常直白:“2024 年开源商业到底行不行?”——这篇文章的确是非常及时的。在 2024 年,许多公司面临着前所未有的压力,尤其是 IT 行业。许多 IT 公司,特别是一些初创企业,正经历着生存的挑战。
大环境变化:裁员潮与创业压力
我们所处的孵化器空间曾经是满满当当的,但现在却空荡荡的。许多大厂裁员,小厂的生存也变得更加艰难。这是一个不争的事实。但与此同时,我认为,开源商业模式反而在这个困难的环境中展现出了它的潜力。为什么呢?
良好的商业模式在困难环境中脱颖而出
在经济和市场环境不佳时,传统的商业模式和公司运营方式往往会面临更多困难。在资本市场较好时,很多公司看起来都很成功,大家的评分都很高,但当“卷子变难”时,能维持高分的公司就会更为突出。与此同时,那些效率不高、商业模式不成熟的公司会逐渐沉寂。
开源商业模式在这个过程中展现了它独特的优势。开源本身具有低成本、高扩展性的特点,它能够在困难时刻依然吸引用户并保持竞争力。这就是为什么我坚定认为开源商业是一种正向的增长模式。
让我们来看一下白鲸开源的实际情况。在过去一年里,成功吸引了许多重要行业的客户。我们不仅覆盖了 IT 行业,还跨足了多个领域,像 券商(如中信证券、申万恒源等)、保险行业(如中国人寿、中国人保等)以及 消费品领域(如旺旺集团、快乐蜂等),这些大公司都是我们的客户。
这些客户之所以选择我们,是因为他们在使用我们的开源软件时,发现开源版无法完全满足他们的需求,因此转向了我们的商业版。我们的商业版刚刚推出不久,但已经在多个场景中得到了应用,效果非常好。显然,开源模式与商业化相结合,为我们打开了跨行业、跨领域的市场。
开源商业模式的进阶
在开源商业中,除了产品本身的质量,信任也是一个至关重要的因素。通过开源,用户可以直接接触到代码,自由地试用和修改,这不仅让他们更加信任产品,也让开源产品自身拥有了强大的生命力。
开源模式提供了一个透明的环境,用户可以自由地查看和修改代码。对于一些技术能力较强的公司,他们完全可以基于开源版本定制自己的解决方案。因此,开源不但解决了很多用户的技术难题,还帮助企业节省了雇佣开发人员的成本,尤其是在人员短缺的情况下。
当企业需要对接更多的数据源,公司对稳定性、企业级功能、可视化监控有更高要求的其实,选择商业版软件往往会成为一个更具吸引力的选择
回想过去几年,我们可能会认为,开源公司需要投入更多的资源去做销售、做市场推广。但是,经过实际运营的验证,我意识到,从一开始,我们就不需要大量的销售团队。产品驱动才是开源商业模式的核心。
产品会“说话”
开源产品的优势之一就是产品本身说话。比如,我们的 Apache SeaTunnel,虽然没有开源 UI 界面,但很多用户依然可以直接使用它进行数据同步和调度任务。虽然没有图形化界面,使用起来可能不如商业版那么直观,但它的功能性和稳定性足以满足大多数用户的需求。很多用户在体验过开源版本之后,发现自己可能还需要更多的功能或更好的支持,这时他们自然会转向商业版。
在开源的商业模式中,我们公司不做所有的解决方案,而是专注于产品本身——做数据同步、ETL、数据调度。剩下的部分,比如数据中台、数据治理等,我们的合作伙伴可以接手。在这个模式下,我们的合作伙伴将我们的产品整合到他们的整体解决方案中,而我们依然保持专注,做我们最擅长的部分。这种分工合作的方式,不仅提高了效率,也避免了资源的浪费。
开源商业模式在未来无疑将继续在多个行业中发挥更大的作用,推动企业实现更好的创新和发展。
我如何做时间管理?
在我看来,开源商业的成功不仅仅依赖于一个好产品,更需要深入了解用户需求和掌握市场动态。在日常的运营中,我有意识地将时间和精力分配到不同的领域,确保公司能够健康、持续地发展。
以下是我自己在公司运营中的时间管理和角色分配的分享。
产品是核心:50%的时间投入
在我的日常工作中,产品占据了我大约50%的时间。作为创始人,我深知每一个细节都至关重要。从产品的功能实现到用户体验的设计,每一部分我都会亲自参与。
-
产品RoadMap设计:作为创业公司一把手,不做什么比做什么更重要,到底哪些功能需要做。
-
开源&商业权衡:什么时候哪些功能开源出去,哪些架构需要与开源协同,哪些是就给商业产品是开源商业CEO最重要的决策。
-
用户痛点需求优先级:同步和调度产品从开源社区和商业客户那里获取了10000多个需求项,在有限资源情况下哪些应该先做?哪些后做?对商业、社区、回款都有哪些影响。
我每天都会花大量时间与产品经理和设计团队密切合作,确保每一个产品版本都能通过细节的打磨来提升用户体验。
了解用户需求:客户接触与社区洞察
除了产品,客户交流也是我重要的工作之一。虽然我不直接做销售,但我会通过以下几种方式与客户保持紧密在开源的同时联系,深入了解他们的需求:
- 参与售前会议:尽管我们公司销售团队不大,但我会参与到一些售前会议中,了解客户的痛点和需求。这不仅帮助我更好地理解市场,还能为产品的后续迭代提供直接反馈。
- 售后服务反馈:我常常参与到售后服务的反馈环节中,倾听用户在使用产品后遇到的问题和吐槽,收集他们的意见与建议。
- 开源社区观察:作为Apache基金会的成员,我也时常潜伏在开源社区中,观察用户对我们项目的反馈,了解他们的使用体验以及对产品的期望。这种第一手的反馈让我能够精准把握产品未来的发展方向。
通过这些方式,我能够深刻洞察到用户需求的变化,并及时调整我们的产品路线图。
CEO角色:融资与战略布局
作为CEO,除了产品和客户工作,我还需要投入一部分精力在融资上。虽然我大部分时间都在关注产品和用户,但公司的发展离不开资金的支持。需要与投资人、潜在合作伙伴保持联系,寻找战略合作机会,确保公司能够获得长期发展所需的资源。
但我始终认为,真正能够推动公司前进的是产品和用户需求的紧密结合,只有把这两者做好,公司才会有持续的竞争力。
开源与商业如何平衡?
说实话,对于一个开源商业公司来说,如何选择什么功能开源,什么功能保留为商业版是非常难的。这种平衡不像表面看上去那么简单。我们公司的商业模式,其实有点类似于Databricks。虽然开源和商业有一些重叠,但它们的核心是不同的。我们更多的是依托于商业核心功能来进行商业化运作,而开源核心则更多是用来支持用户社区的建设和产品的基础发展。
何时开源?何时保留?
我们会逐步地将一些商业功能合并到开源版本中,但这一过程并不是简单的“开源出去”。合并的时机和策略取决于市场状况和经济形势。在开源项目的初期,我会尽量将一些基础功能开源,帮助更多的开发者使用和贡献。但如果经济形势不好,商业收入可能受到影响,我就会调整策略,将一些关键功能的开源时间延后,甚至暂时不完全开源。
以Apache SeaTunnel为例,最初我将一些前端页面功能开源,但随着经济环境的变化,我逐渐意识到,如果继续全开源这些功能,可能会影响我们商业收入的稳定性。因此,我决定在一定的条件下推迟这些功能的开源,确保公司在经济不稳定时能够有足够的资金支持运营。
开源与商业的竞争
像Apache DolphinScheduler这类开源项目,尽管开源,但仍然存在大量的商业低价竞争者,他们通过使用DolphinScheduler的代码并且提供定制化服务来与白鲸开源竞争。面对这样的挑战,白鲸开源的优势就要把团队的理解、社区的支持优势体现在产品上,商业版产品技术创新,行业理解,功能扩展上和开源版有明显差距。
同时,尽力推动社区不停迭代,大多数用Apache DolphinScheduler的软件厂商还停留在1.x.x阶段,而社区和白鲸开源早已经是3.x.x时代。让开源的洪流自然留下最主流的开源商业公司,让过去用DolphinScheduler做定制开发软件的厂商成为我们的渠道和合作伙伴。
总的来说,开源与商业的平衡是一个动态的、不断调整的过程。作为一个开源公司,我们不仅要做技术上的创新,还要根据市场需求和公司战略不断优化产品和商业模式。同时,我们也不能忽视运营和社区建设。定期的Meetup和文章发布等活动不仅是对外传播的工具,也是我们不断了解用户需求、提升产品质量的重要手段。
开源公司的运营策略
- 持续合并新功能:我们会定期将商业版本的功能合并到开源中,但这是根据市场需求和公司战略来决定的,并非固定的规则。
- 灵活应对市场变化:面对市场环境和经济形势的变化,我们需要调整开源的节奏,确保公司的可持续发展。
- 专注于产品本身:开源公司不应该仅仅依赖传统的销售模式,而是通过产品本身的质量和社区的力量来吸引用户。
话说回来,作为一个在开源和商业之间权衡的CEO,我个人的理想目标是让开源和商业的差距尽可能地缩小。从我的角度来看,社区是我们很重要的贡献者之一,但真正推动产品发展的是我们对各行业的洞察,以及对产品未来迭代方向的掌控。作为PMC,我的责任是为社区贡献,但作为商业公司CEO,我的目标是更多的东西开源,这样才能推动公司成功。封闭自己的功能是对公司的最大伤害。越封闭,未来发展越受限,而越开放,反而竞争力更强。只有通过开放,逼着自己的团队不停地创新和前进,才能保持市场竞争力。通过开源,企业能不断推动自己走得更远,而不会被封闭的商业模式所困住。
赛道选择与商业模式
其次,商业和开源的平衡,还要取决于选择的赛道。赛道的多样性决定了开源的上限。如果选择了一个多样性强的赛道,你的开源只是其中的一部分,商业价值通过比开源更多的投入来获得。例如,白鲸开源公司的产品,调度也好数据同步也好场景非常丰富,天花板非常高,因此,即使大量功能开源,依然不会受到天花板的限制。我们的开源项目和商业已经积累了1万+的未完成的需求,开源版本和商业版本远不到相互竞争的时候。
云与商业合作模式
在云计算环境下,控制与云厂商的合作模式也是一个挑战。选择一个多元化场景的赛道能够带来更高的上限,因为它能帮助开源和商业之间建立清晰的界限。如果你所在赛道天花板不够高,场景相对固定,商业版与开源版的差异化就会逐渐消失。云厂商进入后,可能会将你的产品“fork走”,甚至推出云厂商自己的开源版本,这时如果你没有足够的差异化,你就可能会面临价格竞争压力。
反之,赛道天花板足够高,商业版和开源版差异明显,例如白鲸开源的WhaleStudio是融合了Apache DolphinScheduler和SeaTunnel的产品,对标的是跨云的Informatica,Talend,Dataworks,DataArts这样产品,和开源项目明显差异,云厂商反而会因为你的用户基数和产品力达成高效合作。
如何保持差异化?
对于一些产品,如果只是专注于某一个垂直领域,产品场景的限制可能会使得开源与商业的区分变得非常难。如果你选择了像Apache SeaTunnel这样多元化的数据集成平台,虽然一开始开源的功能不多,但随着社区的增长,连接器的数量迅速增加,这种开放性帮助我们不断扩展新的场景,而商业版也依然能够保持强大的竞争力。
许可协议的选择
随着竞争的加剧,许可协议的选择变得尤为重要。开源初创公司通常不太会考虑这一点,但随着企业的成长,你会发现:许可协议和商业模式是紧密相连的。选择一个合适的开源许可协议,尤其是在云厂商激烈竞争的环境下,可以为你带来更多的市场空间。如果你的开源项目场景单一,云厂商可能会以低成本打入市场,而你很难脱颖而出。
商业价值与开源的关系
商业价值并不等于技术价值,而是市场和客户群体认为你的产品有价值。当你选择了合适的开源许可协议后,能帮助你形成清晰的商业模式。如果你面临的是像云厂商这样的竞争者,你的开源项目必须能够体现出独特的商业价值,而不仅仅是功能上的差异化。
开源与商业的平衡是一个不断调整的过程。你要选择合适的赛道,选择适当的开源许可协议,并在适当的时机开放功能。最重要的是,开源与商业不是对立的,开源能为商业带来更多的机会,反之,商业模式的成功也能支撑开源项目的持续发展。最终,商业价值与开源的关系是相辅相成的,只有两者结合才能推动企业的持续创新和发展。
生态的重要性
Apache DolphinScheduler
Apache DolphinScheduler 专注于数据调度和工作流管理,能够帮助用户在大数据平台中调度和协调各种数据任务。它的设计和实现与 Apache 生态中的许多项目都有良好的兼容性,尤其是 Hadoop 相关的项目。由于 DolphinScheduler 是一个任务调度系统,它自然会需要与 Hadoop、Hive、HBase 等大数据组件进行深度集成,实现复杂的数据处理和调度需求。例如:
- 与 Hadoop 集成: 通过任务调度来管理 Hadoop 的 MapReduce 任务,或者调用 Hive 进行批处理。
- 与 Kafka 集成: 用于实时数据流的处理,可以调度 Kafka 消费者任务,处理实时数据流。
- 与 Spark 集成: 用于处理大规模数据计算, 可以调度 Spark 作业,支持批处理和流处理。
因此,Apache DolphinScheduler 在 Apache 生态中作为一个调度系统,实际上是将 Hadoop 生态内的各个组件连接起来,形成一套完整的数据工作流管理系统。
Apache SeaTunnel
SeaTunnel 专注于数据集成和 ETL(Extract, Transform, Load)工作流,尤其是在批处理和流处理的结合上,能够无缝地处理来自不同数据源的数据同步和整合。SeaTunnel 的优势在于,它不仅与 Apache 生态中的许多项目深度集成(例如 Kafka、Hadoop、HBase、Iceberg、Hudi 等),还能与外部的云平台和 SaaS 服务进行数据交互,扩展了其适用范围。
- Apache 生态内的整合: 与 Hadoop 系列产品(如 Hive、HBase)、Kafka、Flume 等无缝集成,用于实现大数据的同步和处理。
- 与外部平台的对接: 比够对接 Snowflake、Google Cloud、Elasticsearch 等外部服务,实现跨平台的数据同步。
- 实时数据同步: 它支持流数据和批数据的结合,处理异构数据源的同步,能够对接多种数据库(如 MySQL、PostgreSQL)、时序数据库,甚至支持向量数据库和大模型的整合。
两者的协同作用
整个 Apache 生态的角度来看,Apache DolphinScheduler 和 SeaTunnel 各自有不同的专长,但它们可以很好地协同工作。两者结合,可以在数据调度和处理的多个层面提供强大的支持,特别是在需要跨平台或跨场景的数据处理时,它们的协同作用将极大地提升企业的数据架构能力
因此,白鲸开源的商业版把这两者紧密的通过可视化方法结合到一起,让用户一站式解决数据获取,加工,调度的ETL问题
云厂商的挑战
对于云厂商来说,尽管他们提供了强大的云计算和存储服务,但他们面临的挑战是如何处理多样化且复杂的数据整合需求。云厂商往往无法将所有项目聚焦于同一领域,导致在数据整合和开发上存在一定的不足。例如:
- 数据整合工具的需求多样性: 数据的场景复杂且多样,云厂商很难兼顾所有的应用场景和技术需求。
- 海量的生态系统: 云厂商面临的技术栈繁杂,很多时候他们的基础设施和云服务并不足以覆盖所有数据整合工具所需的功能。
为什么成为 AWS 合作伙伴?
像白鲸开源 WhaleStudio 这样的专注于数据整合的工具,能与云厂商进行深度合作,而不是竞争。例如,AWS 可以利用 白鲸开源 WhaleStudio 将数据导入到其 S3 和 Redshift 中,以便进一步开发。合作的原因在于,云厂商虽然提供强大的计算资源,但他们并不擅长所有类型的数据整合和开发。
- WhaleStudio 作为数据整合的合作伙伴: 在数据进入 AWS 平台(如 S3 和 Redshift)之前,提供了强大的数据同步和转换功能,帮助 AWS 弥补这一空白。
- 竞争与合作并存: 云厂商在数据整合领域,往往更倾向于竞争,比如 Databricks、EMR 和 Spark 是 AWS 自己开发的工具,而像 WhaleStudio 这样的项目则主要聚焦于数据整合,避免与云厂商的直接竞争。
大模型的快速爆发
过去几年,人工智能和大模型的发展速度令很多人惊叹,但与之相比,数据基础设施(Data Infra)的发展则呈现出不同的节奏和趋势。
大模型的爆发性增长
大模型的特征是快速、突破性的进展。
例如:
- 突破性创新: 大模型的进展可以在短时间内突破某些技术瓶颈,出现大量的新技术和新应用。
- 短时间内的爆发: 就像春天里竹笋的快速生长,几小时内可能就会有大量的进展和新技术诞生。
- 竞争与资源: 大模型能在短期内获得资源,吸引投资并迅速吸引用户,但最终能成功的只有那些能争取到更多资源、获取更多用户的公司。
数据基础设施的稳步上升
与大模型的爆发性不同,数据基础设施是一个长期而稳定的发展过程。
例如:
- 积累和稳步增长: 数据基础设施并不是一夜之间能成型的,而是像滚雪球一样,随着时间的推移,积累越多,项目的影响力也会逐渐扩大。
- 长期性: 数据基础设施的增长是一个五年甚至更长时间的过程,需要企业在技术和用户教育上的持续投入。
- 稳步提升: 类似于Apache DolphinScheduler 这样的项目,虽然已经在一些领域取得了较大进展,但仍然有许多公司未能快速过渡到新的技术,这反映了数据基础设施的缓慢转型。
投资预期与节奏的差异
在过去的一年里,2021年可能出现了一些不切实际的预期,尤其是在数据基础设施领域。投资者对这些技术的发展预期过高,导致市场出现了一定的波动。与此相比,数据基础设施更多的是一个 “稳步上升、滚雪球” 的过程,需要时间和耐心。
用户转型的难度
对于很多企业来说,转向新技术并不是一件容易的事。即使是像Apache DolphinScheduler 这样的流行项目,仍然有许多公司在转型时面临着:
- 技术更换的阻力: 很多公司依然依赖旧的技术栈,如 Azkaban 和 Airflow。即使这些公司意识到转型的必要性,实施的过程也往往是缓慢的。
- 变革的动力不足: 许多公司并没有遇到足够的痛点,迫使他们立刻做出技术转型。因此,数据基础设施的用户转型往往是渐进式的,而非一蹴而就的。
从大模型到数据基础设施的对比,揭示了两种不同的技术发展轨迹:
- 大模型 的发展更为突发和快速,但其成功往往依赖于是否能够争取到足够的资源。
- 数据基础设施 的发展则更加稳步、缓慢,虽然短期内可能难以看到突破性的进展,但其长期积累将带来稳定且强大的市场影响力。
对于数据基础设施的公司而言,保持对自身节奏的坚持、做好基本功,并不断积累用户的认知和使用场景,最终将能够像滚雪球一样,将其影响力不断扩展。
开源与商业化的平衡
开源版本和商业版本的发展是不同的。在开源项目中,用户的增长是逐年稳定上升的,而不是像传统的商业产品那样突然增长。这是一个长期积累的过程,开源用户群的积累并不是“烧钱”能快速提升的,而是逐步通过口碑和社区的扩展吸引更多的用户。
- 商业化转化的过程: 随着开源用户的积累,商业用户的转化是渐进的。例如,如果开源用户数量已经达到7,000个,转化到100-200个甚至更多的商业用户并不困难,但这个过程是逐步进行的。
- 行业扩展: 随着用户群体的扩大,商业产品也能够覆盖更多行业,逐步满足不同场景的需求。
中国的技术优势
中国的独特场景
中国在近二十年的互联网高速发展过程中,特别是在数据基础设施和大数据处理方面,积累了独特的技术经验。这些技术优势源于中国庞大的用户基础和数据量,这为开源公司出海提供了一个强有力的基础。
- 大数据场景的创新: 中国的互联网公司在处理海量数据方面积累了丰富的经验。例如,DolphinScheduler 这样的调度系统在中国已经能够支持数以万计的计算节点,而这种规模和复杂度在美国等发达国家几乎是无法想象的。
- 技术和需求的倒逼: 由于中国用户众多,数据量庞大,技术不断被实际需求所倒逼,许多技术创新和优化都是为了解决系统负荷过大带来的问题。因此,尽管技术本身并无过多差异,但中国的特殊场景要求本地公司不断调优和创新,从而推动了技术的快速发展。
- 数据量与创新: 中国庞大的数据量和独特的互联网场景促使了更多基础设施的创新。例如,云计算、大数据存储和调度系统等技术,在中国的验证和优化,最终形成了独特的竞争优势。
对于开源和商业化公司来说,出海是一个必然的选择。随着全球市场的逐渐开放,中国的技术优势和独特的互联网场景,将为中国公司在国际市场上提供竞争力。通过从东南亚、日本等相对容易接受的市场入手,逐步向北美和欧洲市场扩展,中国公司可以利用自身的创新和技术积累,在全球市场中占据一席之地。
大模型对工程师的挑战
大模型的出现无疑对工程师的要求提出了更高的标准。低水平的工程师可能会被大模型所取代,因为大模型能够高效地完成很多重复性工作。比如在开发过程中,大模型能够生成大量代码、优化文档甚至进行自动化测试,这些任务原本需要工程师手动完成。
然而,这并不意味着所有的工程师都面临淘汰。相反,那些具备深厚技术背景和业务场景理解的工程师,依旧会在大模型的生态中占据重要位置。大模型虽然能够提升效率,但它仍然需要工程师在架构设计、业务需求分析等方面提供指导和优化。因此,未来的工程师角色将更多是与大模型协作,解决更为复杂的技术难题。
开源项目中的大模型应用
对于开源项目来说,大模型将显著改变贡献者的角色。例如,在像 Apache SeaTunnel 这样的开源项目中,大模型已经开始被用于生成连接器代码,尤其是在SaaS产品的连接器开发方面。大模型通过爬取文档并理解API请求的模式,可以自动化生成连接器代码,极大地减少了开发者的工作量。
这种自动化的内容生成方式,为开源项目带来了新的活力,同时也提出了如何管理自动生成内容的挑战。未来,开源贡献者可能不再是单纯的开发者,而是通过 RAG (Retrieval-Augmented Generation) 技术生成文档和代码的“机器贡献者”。
程序员的职业发展与分化
随着大模型的普及,程序员的职业将面临明显的分化。未来5-10年内,程序员将分为两类:
-
高级程序员:能够利用大模型设计架构、开发框架,并且高效地生成代码。高级程序员将能够通过大模型在短时间内实现复杂的功能和代码,完成更多的项目任务。
-
低级程序员(码农):这些程序员将更多地依赖大模型来辅助完成工作,类似于传统的外卖配送员,他们的工作将主要是监督大模型的生成结果,并进行代码审查和修改。
在这个过程中,那些能利用大模型提升效率、加速项目进展的工程师,将处于职业生涯的上游。而那些无法快速适应并提高自身技术深度的工程师,可能会面临更大的生存压力。
如何应对这一范式变化?
面对这个范式的变化,最重要的是要迅速适应并融入大模型生态:
务必使用大模型:对于每一个工程师来说,必须开始学习如何利用大模型来辅助开发。大模型并不是取代你,而是作为一个强大的助手,能够提升工作效率。
聚焦产品场景:大模型的真正价值在于如何结合实际业务场景来应用它。不要陷入仅仅学习各种皮毛的培训课程,而是应该专注于如何将大模型应用到自己所在的产品中,解决实际问题。
不断学习与进步:对于程序员来说,技术的不断学习和自我提升至关重要。未来的程序员将不再仅仅依赖于手写代码,而是要设计和规划如何通过大模型高效地完成任务。
挑战与机遇并存:大模型带来了前所未有的工作效率提升,但也意味着对于技术人员的要求将更高。只有那些能够利用大模型优化工作流并创新的工程师,才能在这个快速发展的技术环境中脱颖而出。
总的来说,大模型将极大地改变开源社区和软件开发行业的生态。工程师需要在技术深度、业务理解和大模型应用能力上不断提升,以便在未来的职业竞争中占据有利位置。
在未来的5-10年中,程序员将进入一个分化的时代,那些能够驾驭大模型的工程师将成为高端人才,而不适应变化的工程师可能会被淘汰。因此,快速学习和适应新的技术范式将是每个工程师不可回避的挑战。
相关文章:
【万字长文】开源之播对话白鲸开源CEO郭炜--乐观主义的开源精神走得更远
本文为白鲸开源科技CEO郭炜1小时深度访谈全记录 来源于:开源之播」Episode15:对话郭炜–乐观主义的开源精神走得更远 大家好,我是郭炜,开源圈的“郭大侠”。作为 Apache 基金会的成员,我曾参与并孵化了多个开源项目,如…...

机试刷题_674. 最长连续递增序列【python】
674. 最长连续递增序列 class Solution:def findLengthOfLCIS(self, nums: List[int]) -> int:if not nums:return 0if len(nums)1:return 1left 0right len(nums)-1tmp []tmp.append(nums[0])res 0while left<right:if nums[left]<nums[left1]:tmp.append(nums[l…...

ipe网络安全
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 什么是IDS? IDS是英文"Intrusion Detection Systems"的缩写,中文意思是"入侵检测系统"。 大家还记得「网络安全」安…...

QT:QPen、QBrush、与图形抗锯齿的关联
QPen QPen 是 Qt 框架中用于定义绘图时使用的画笔属性的类。在使用 QPainter 进行 2D 绘图时,QPen 可以控制线条的外观,比如线条的颜色、宽度、样式(如实线、虚线等)、端点样式(如方形端点、圆形端点等)和…...

android keystore源码分析
架构 Android Keystore API 和底层 Keymaster HAL 提供了一套基本的但足以满足需求的加密基元,以便使用访问受控且由硬件支持的密钥实现相关协议。 Keymaster HAL 是由原始设备制造商 (OEM) 提供的动态加载库,密钥库服务使用它来提供由硬件支持的加密服…...

【12】智能合约开发入门
12-1 在线合约开发 Cloud IDE简介 基本框架 Cloud IDE是BaaS合约平台提供的在线合约开发工具 IDE是一个去中心化应用(Dapp),通过JavaScript SDK直接与区块链平台通信,进行合约部署和调用 核心功能 合约工程管理 合约编辑与编…...
web安全——分析应用程序
文章目录 一、确定用户输入入口点二、确定服务端技术三、解析受攻击面 一、确定用户输入入口点 在检查枚举应用程序功能时生成的HTTP请求的过程中,用户输入入口点包括: URL文件路径 通常,在查询字符?之前的URL部分并不视为用户输入入口&am…...
Wpf 之Generic.xaml
在 WPF 中,Generic.xaml 是一个特殊的资源文件,它会被自动加载,不需要显式添加。这是 WPF 的命名约定。当 WPF 初始化自定义控件时,它会专门查找这个名字的文件。 这个名字是硬编码在 WPF 框架中的,不能改变。 Generi…...

VidSketch:具有扩散控制的手绘草图驱动视频生成
浙大提出的VidSketch是第一个能够仅通过任意数量的手绘草图和简单的文本提示来生成高质量视频动画的应用程序。该方法训练是在单个 RTX4090 GPU 上进行的,针对每个动作类别使用一个小型、高质量的数据集。VidSketch方法使所有用户都能使用简洁的文本提示和直观的手绘…...
解锁C# XML编程:从新手到实战高手的蜕变之路
一、引言:XML 在 C# 中的关键地位 在 C# 开发的广袤领域中,XML(可扩展标记语言,eXtensible Markup Language)宛如一颗璀璨的明星,占据着举足轻重的地位。它以其独特的结构化和自描述特性,成为了…...

kafka-leader -1问题解决
一. 问题: 在 Kafka 中,leader -1 通常表示分区的领导者副本尚未被选举出来,或者在获取领导者信息时出现了问题。以下是可能导致出现 kafka leader -1 的一些常见原因及相关分析: 1. 副本同步问题: 在 Kafka 集群中&…...

超大规模分类(四):Partial FC
人脸识别任务里,通常利用全连接层,来做人脸的分类。会面临三个实际问题: 真实的人脸识别数据噪声严重真实的人脸识别数据存在严重的长尾分布问题,一些类别样本多,多数类别样本少人脸类别越来越多,全连接层…...
uniapp 小程序如何实现大模型流式交互?前端SSE技术完整实现解析
文章目录 一、背景概述二、核心流程图解三、代码模块详解1. UTF-8解码器(处理二进制流)2. 请求控制器(核心通信模块)3. 流式请求处理器(分块接收)4. 数据解析器(处理SSE格式)5. 回调…...
因子分析详解:从理论到MATLAB实战
内容摘要: 本文系统解析因子分析的核心原理与MATLAB实战,涵盖数学模型、载荷矩阵估计、因子旋转及得分计算。通过上市公司盈利能力、消费者偏好等案例,演示数据标准化、因子提取与解释的全流程,并提供完整代码实现。深入对比因子分…...

【组态PLC】基于三菱西门子S7-200PLC和组态王液料混合系统组态设计【含PLC组态源码 M016期】
控制要求 总体控制要求:如面板图所示,本装置为三种液体混合模拟装置,由液面传感器SL1、SL2、SL3,液体A、B、C阀门与混合液阀门由电磁阀YV1、YV2、YV3、YV4,搅匀电机M,加热器H,温度传感器T组成。…...
js:根据后端返回的数组取出每一个数组的keyword字段然后拼接成一个逗号分隔的字符串
问: 现在有一个el-select, 后端接口返回数据为keyword:xxx,referenceNum:1,tagId:132sf32fasdfaf组成的数组, 现在select是多选, 但是但我选择多个下拉框选项后,后端需要前端返回的数据tagIds字段需要时一个字符串…...
基于大模型的肺纤维化预测及临床方案研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与方法 二、大模型技术概述 2.1 大模型的基本原理 2.2 大模型在医疗领域的应用现状 三、肺纤维化相关知识 3.1 肺纤维化的病因与发病机制 3.2 肺纤维化的临床症状与诊断方法 3.3 肺纤维化的治疗现状与挑战 四、大模型…...
7. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--微服务基础工具与技术--Ocelot 网关--路由
路由是API网关的核心功能,对系统性能和可靠性至关重要。路由通过定义规则,将客户端请求准确地转发到相应的后端服务,确保请求能够正确处理,简化了微服务架构中的服务调用逻辑。有效的路由配置能够提高系统的灵活性和可维护性。 一…...

【GESP】C++二级模拟 luogu-b3995, [GESP 二级模拟] 小洛的田字矩阵
GESP二级模拟题,多层循环、分支语句练习,难度★✮☆☆☆。 题目题解详见:https://www.coderli.com/gesp-2-luogu-b3995/ 【GESP】C二级模拟 luogu-b3995, [GESP 二级模拟] 小洛的田字矩阵 | OneCoderGESP二级模拟题,多层循环、分…...
监督学习——基于线性回归的波士顿房价预测:理论、实践与评估
基于线性回归的波士顿房价预测:理论、实践与评估 文章目录 基于线性回归的波士顿房价预测:理论、实践与评估一、引言二、线性回归基础理论2.1 线性回归原理2.2 线性回归在房价预测中的应用逻辑三、波士顿房价数据集介绍3.1 数据集概述3.2 特征说明3.3 目标变量四、波士顿房价…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...