【万字长文】开源之播对话白鲸开源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 基金会的成员,我曾参与并孵化了多个开源项目,如…...
Verilog 位运算符和逻辑运算符的使用
Verilog 位运算符和逻辑运算符的使用 目录 前言 一、逻辑运算符 二、位运算符 总结 前言 本文详细描述了Verilog 逻辑运算符和位运算符的使用,随着编程的熟练,有时候总是喜欢混用它们,虽然能实现同样的功能,但最好还是注意一下…...
压测报告:DeepSeek-R1-Distill-Qwen-32B模型性能评估
1. 实验背景 本实验旨在评估DeepSeek-R1-Distill-Qwen-32B模型在特定硬件配置下的性能表现。测试硬件为GPU服务器。实验主要关注模型在不同并发请求数下的峰值生成速度。 吞吐量(Throughput): 测试模型在单位时间内可以处理多少请求,通常以“每秒生成的令牌数(tokens/s)…...
【论文笔记】ClipSAM: CLIP and SAM collaboration for zero-shot anomaly segmentation
原文链接 摘要 近年来,CLIP 和 SAM 等基础模型在零样本异常分割 (ZSAS) 任务中展现出良好的性能。然而,无论是基于 CLIP 还是基于 SAM 的 ZSAS 方法,仍然存在不可忽视的关键缺陷:1) CLIP 主要关注不同输入之间的全局特征对齐&am…...
DeepSeek:面向效率与垂直领域的下一代大语言模型技术解析
本文将深入剖析DeepSeek模型的核心算法架构,揭示其在神经网络技术上的突破性创新,并与主流大模型进行全方位技术对比。文章涵盖模型设计理念、训练范式优化、应用场景差异等关键维度,为读者呈现大语言模型领域的最新发展图景。 一、DeepSeek…...
win32汇编环境,加速键的应用示例
;运行效果 ;win32汇编环境,加速键的应用示例 ;加速键,就是按某个键,开启某个功能。不用鼠标点来点去的东西。 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>>…...
【计算机网络】OSI模型、TCP/IP模型、路由器、集线器、交换机
一、计算机网络分层结构 计算机网络分层结构 指将计算机网络的功能划分为多个层次,每个层次都有其特定的功能和协议,并且层次之间通过接口进行通信。 分层设计的优势: 模块化:各层独立发展(如IPv4→IPv6,…...
[Web 安全] 反序列化漏洞 - 学习笔记
关注这个专栏的其他相关笔记:[Web 安全] Web 安全攻防 - 学习手册-CSDN博客 0x01:反序列化漏洞 — 漏洞介绍 反序列化漏洞是一种常见的安全漏洞,主要出现在应用程序将 序列化数据 重新转换为对象(即反序列化)的过程中…...
每日一题——字母异位词分组
字母异位词分组 1. 问题描述示例提示 2. 解题思路具体步骤 3. 代码实现4. 代码解析(1)排序法(2)哈希表存储(3)动态内存分配(4)释放内存1. HASH_FIND_STR 的作用2. 宏的定义4. 详细解…...
力扣 807. 保持城市天际线(Java实现)
题目分析 给定一个二维数组,行列长度相等,要保持四个方向仍一观察高度不变的情况下,适当添加建筑高度,问最大高度增量和。所谓四个方向高度不变的增量,其实就是arr[i][j]与同i行最大值同j列最大值之间的最小值的差&…...
【视频2 - 4】初识操作系统,Linux,虚拟机
📝前言说明: ●本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,主要跟随B站博主灵茶山的视频进行学习,专栏中的每一篇文章对应B站博主灵茶山的一个视频 ●题目主要为B站视频内涉及的题目以及B站视频中提到的“课后作业”。…...
重启securecmd失败
重启securecmd失败 问题描述:KES集群部署工具中,节点管理里新增节点下一步报错无法检查securecmd端口进程情况,安装依赖包后再次下一步提示如下报错: 解决办法: [rootlocalhost cluster]# cd /home/kingbase/cluster…...
python学习四
python运算符与表达式 表达式: Python中的表达式是一种计算结果的代码片段。它可以包 含变量、运算符、常数和函数调用,用于执行各种数学、逻辑 和功能操作 算术运算符: 比较(关系)运算符: 赋值运算符: 逻辑运算符: 位运算符: 成员运算符: 身份运算符 <...
LeetCode 236.二叉树的最近公共祖先
题目: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节…...
react 中,使用antd layout布局中的sider 做sider的展开和收起功能
一 话不多说,先展示效果: 展开时: 收起时: 二、实现代码如下 react 文件 import React, {useState} from react; import {Layout} from antd; import styles from "./index.module.less"; // 这个是样式文件&#…...
2025-02-26 学习记录--C/C++-C语言 整数格式说明符
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 C语言 整数格式说明符 【例如 】🎀 :在 C 语言中,%ld 是 printf 或 scanf 等格式化输入输出函…...
绕过过滤order by
一、常见绕过技术 1、注释符截断 利用注释符(如 --、#)截断后续查询,消除过滤逻辑的影响。 ORDER BY 1-- 若原查询为 SELECT * FROM table ORDER BY 用户输入,注入后可能忽略后续过滤逻辑。 2、大小写混淆/编码绕过 若过滤是大…...
NLP09-加强1-对比SVM
支持向量机(SVM) (一)导入 SVM 相关库 (二) 修改模型初始化 (三) 比较 朴素贝叶斯分类器 SVM分类器 支持向量机(SVM) 代码修改基于NLP09-朴素贝叶斯问句…...
STM32——HAL库开发笔记22(定时器3—呼吸灯实验)(参考来源:b站铁头山羊)
本文利用前几节所学知识来实现一个呼吸灯实验:两颗led灯交替呼吸。 一、STM32CubeMX配置 step1:配置调试接口 step2:配置定时器 定时器1位于APB2总线上,如上图所示。 step3:配置时基单元 按照下图配置 时钟来源配置…...
Vue3+TypeScript 封装一个好用的防抖节流自定义指令
一、前言:为什么需要防抖节流? 在前端开发中,高频触发的事件(如滚动、输入、点击等)容易导致性能问题。防抖(debounce) 和 节流(throttle) 是两种常用的优化手段&#x…...
2025年中国最新安防行业数字安全现状与未来趋势:内生安全成核心共识,从零基础到精通,收藏这篇就够了!
本次,我将为大家剖析由**安奇信发布的《中国安防行业数字安全建设与发展情况白皮书**》。该报告共_37_页,涵盖了众多重要信息和核心论点。若您希望深入了解,请参阅原报告,获取方法已在文档的最后部分提供。 报告核心内容 随着数字…...
项目管理的新理念主要有哪些
随着时代的发展和市场需求的变化,项目管理的理念也在不断地创新和演变。项目管理的新理念包括敏捷管理、精益管理、知识管理、变革管理、协作式管理和项目生命周期管理等。这些新理念不仅能够提高项目的管理效率,还能帮助团队在复杂的环境中更好地应对挑…...
Spring如何解决循环依赖?
一、Spring的三级缓存 关键就是提前暴露未完全创建完毕的Bean。 三级缓存来解决循环依赖: 一级缓存:用于存储完全初始化完成的单例Bean。 二级缓存:用于存储尚未完全初始化,但已实例化的Bean,用于提前暴露对象&#x…...
vscode java环境中文乱码的问题
先说我的结论: 由于我的系统是windows的,所以vscode使用的是默认gbk的编码进行的。 但是我的目的是全部都使用utf-8,因为我的程序始终是要去linux上去运行的,总不能在本地是好的,然后到服务器上就不行了吧,…...
十、大数据资源平台功能架构
一、大数据资源平台的功能架构图总体结构 大数据资源平台功能架构图 关键组件: 1.用户(顶行) 此部分标识与平台交互的各种利益相关者。 其中包括: 市领导 各部门分析师 区政府 外部组织 公民 开发人员 运营经理 2.功能模…...
OpenEuler学习笔记(三十五):搭建代码托管服务器
以下是主流的代码托管软件分类及推荐,涵盖自托管和云端方案,您可根据团队规模、功能需求及资源情况选择: 一、自托管代码托管平台(可私有部署) 1. GitLab 简介: 功能全面的 DevOps 平台,支持代码托管、C…...
使用Spring AI调用Ollama的DeepSeek模型实现结构化输出
在 Docker 环境中部署 Ollama 并使用 Spring AI 框架实现结构化输出,你可以按照以下步骤进行操作: 1. 部署 Ollama 模型 首先,需要在 Docker 中部署 Ollama 并下载 deepseek-r1:1.5b 模型。 1.1 准备部署文件 version: 3.8services:ollam…...
微信小程序调用火山方舟(字节跳动火山引擎)中的DeepSeek大模型
微信小程序的轻量化特性与DeepSeek大模型的AI能力结合,可快速构建智能问答、内容生成等场景化服务。通过火山方舟平台提供的标准化接口,开发者无需深入算法细节即可调用模型能力。 一、注册火山引擎账号,创建API Key和model(接入…...
threejs:射线拾取封装
射线拾取封装代码: import * as THREE from three; // 点击事件// 1.坐标转化(鼠标单击的屏幕坐标转标准设备坐标)// 2.射线计算(通过鼠标单击位置相机参数计算射线值)// 3.射线交叉计算// ObjectsArr是用来做射线拾取的对象数组,一个二维数组 export f…...
2024年国赛高教杯数学建模D题反潜航空深弹命中概率问题解题全过程文档及程序
2024年国赛高教杯数学建模 D题 反潜航空深弹命中概率问题 原题再现 应用深水炸弹(简称深弹)反潜,曾是二战时期反潜的重要手段,而随着现代军事技术的发展,鱼雷已成为现代反潜作战的主要武器。但是,在海峡或…...
爬虫框架与库
爬虫框架与库是用于网络数据抓取的核心工具,帮助开发者高效地从网页中提取结构化数据。 Requests:用于发送HTTP请求。 BeautifulSoup:用于解析HTML和XML。 Scrapy:强大的爬虫框架,适合大规模爬取。 Selenium&#…...
从电子管到量子计算:计算机技术的未来趋势
计算机发展的历史 自古以来人类就在不断地发明和改进计算工具,从结绳计数到算盘,计算尺,手摇计算机,直到1946年第一台电子计算机诞生,虽然电子计算机至今虽然只有短短的半个多世纪,但取得了惊人的发展吗,已经经历了五代的变革。计算机的发展和电子技术的发展密切相关,…...
LeetCode 15.三数之和
15.三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组…...
c#笔记-基础知识
目录 整数 浮点 decimal bool 引用 object string 值 枚举 关键字 enum 类型转换 隐式转换 编辑 显式转换 装箱,拆箱 常量 表达式 编辑 字符串的使用 比较字符串 字符格式化 编辑 截取字符串 字符串的分割 插入字符串 删除字符串 …...
el-table fixed滚动条被遮挡导致滚动条无法拖动
/* 设置默认高度-滚动条高度 */ .el-table__fixed { height: calc(100% - 16px) !important; } .el-table__fixed:before { height: 0px; }...
如何在个人电脑本地部署Deepseek大模型?Windows10 + Ollama+Deepseek+ChatBox
第一阶段:下载并安装Ollama 1,打开浏览器,进入 Ollama 官方网站 2,点击“Download”,在新页面选择“Windows”,再点击“Download for Windows”。 3,下载完成后,在文件名࿰…...
链表题()
1、环形列表 141 方法一、 卡节点数量,或者值范围的bug 方法二、 快慢指针(最实用)寻找环 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NUL…...
ZIP64扩展和普通ZIP文件有什么区别?
ZIP64扩展是ZIP文件格式的一个扩展,旨在解决传统ZIP格式的限制,尤其是文件大小和数量的限制。以下是ZIP64扩展与普通ZIP文件的主要区别: 1. 文件大小限制 普通ZIP文件: 单个文件大小限制为 4GB(2^32字节)。…...
smolagents学习笔记系列(五)Tools-in-depth-guide
这篇文章锁定官网教程中的 Tools-in-depth-guide 章节,主要介绍了如何详细构造自己的Tools,在之前的博文 smolagents学习笔记系列(二)Agents - Guided tour 中我初步介绍了下如何将一个函数或一个类声明成 smolagents 的工具&…...
使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力
作者:陈子康,Apache Dubbo Contributor 2025年1月20日,国产大模型公司深度求索(DeepSeek)正式发布了大语言模型 DeepSeek-R1,并同步开源其模型权重。通过大规模强化学习技术,DeepSeek-R1 显著提…...
【星云 Orbit-F4 开发板】03b. 按键玩法二:独立按键双击双击触发
【星云 Orbit-F4 开发板】03b. 按键玩法二:独立按键双击触发 引言 在嵌入式系统中,按键是常用的输入设备。通过检测按键的状态变化,可以实现多种功能,例如单击、双击、长按等。本文将详细介绍如何使用STM32F103的GPIO引脚检测独…...
ave-form.vue 组件中 如何将产品名称发送给后端 ?
如何将产品名称发送给后端。 在这段代码中,产品名称(productName)的处理和发送主要发生在 save() 方法中。让我逐步分析: 产品ID的选择: <w-form-selectv-model"form.productId"label"涉及产品&q…...
2025年电气工程与智能系统国际学术会议(IC2EIS 2025)
重要信息 官网:www.ic2eis.org(点击了解参会投稿等) 时间:2025年3月14-16日 地点:中国河南省郑州市 简介 2025年电气工程与智能系统国际学术会议(IC2EIS 2025)将于2025年3月14-16日在中国郑州举行。会议旨在为电气…...
Android TextView 使用.9图片文字不展示
参考文章 Android的TextView设置padding无效。 实现如上图效果的时候,选择框使用了.9,代码如下: LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(0,...
【PyTorch][chapter-33][transformer-5] MHA MQA GQA, KV-Cache
主要翻译外网: 解剖Deep Seek 系列,详细见参考部分。 目录: Multi-Head Attention (MHA) KV-Cache KV-Cache 公式 Multi-Query Attention(MQA) Grouped-Query Attention(GQA) Multi-Head Latent Attention …...
MS SQL 2008 技术内幕:T-SQL 语言基础
《MS SQL 2008 技术内幕:T-SQL 语言基础》是一部全面介绍 Microsoft SQL Server 2008 中 T-SQL(Transact-SQL)语言的书籍。T-SQL 是 SQL Server 的扩展版本,增加了编程功能和数据库管理功能,使得开发者和数据库管理员能…...
seacmsv9注入管理员账号密码+orderby+limit
seacmsv9注入管理员账号密码 安装海洋CMS(seacms) 将upload文件夹里的文件全部上传至网页服务器后,执行以下操作: 请运行http://域名/install/index.php进行程序安装 SQL语句尝试注入 http://127.0.0.1/upload/comment/api/index.php?g…...
智能生活综合平台需求规格说明书
一、引言 1.1 编写目的 本需求规格说明书旨在明确智能生活综合平台的功能、性能、用户界面等方面的需求,为平台的开发、测试和部署提供详细的指导,确保平台能够满足用户在社交、购物、教育、医疗、政务等多个领域的智能生活需求,提升用户的…...
应用的负载均衡
概述 负载均衡(Load Balancing) 调度后方的多台机器,以统一的接口对外提供服务,承担此职责的技术组件被称为“负载均衡”。 负载均衡器将传入的请求分发到应用服务器和数据库等计算资源。负载均衡是计算机网络中一种用于优化资源利…...
TDengine 中的数据类型
简介 数据类型是数据库产品中一个非常重要的概念,它决定着能处理不同类型数据的范围。 TDengine 支持了所有通用的数据类型,同时还支持了一些特色数据类型,如地理坐标,未来准备支持 decimal 数据类型,方便银行等场景中…...