开发者对抗软件创新焦虑的“180 法则” | 对话MongoDB CTO Mark Porter

内置锂电池+外置纽扣电池,如何实现双电源自动切换? 本文探讨低功耗设备中双电源自动切换设计的关键问题:当内置锂电池电量不足时,外置CR2450纽扣电池需接管供电以维持系统运行。核心挑战在于,两路电源(3.7V锂电池经稳压后约3.0V, 阅读详情

在 MongoDB 首席技术官 Mark Porter 看来,创新滞后并不是因为公司缺乏灵感或创造力,而是因为他们被迫将时间花费在维护传统框架上,导致数据相关工作举步维艰,这是大多数组织都存在的问题。那么,对于企业而言,在开源浪潮之下,如何突破数据的枷锁,构建自身独 特的技术创新能力?在本文中,Mark Porter 给出了他的见解和 MongoDB 的创新之策。

受访嘉宾 | Mark Porter,MongoDB CTO

文 | 屠敏  责编 | 梦依丹

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

创新,是我们时常提及的一个词语。企业、技术、产品倘若没有创新,宛如没有源泉的一潭死水,其结局就是干枯。不过,创新说着容易,行动却很艰难。在主流数据库 MongoDB 公司发布的《2022 MongoDB 数据与创新报告》中,有研究人员指出,每获得一次商业成功,需要尝试 3000 个原创想法。毋庸置疑,要想在百花齐放、百家争鸣的科技领域脱颖而出,对于不少技术团队而言,经常需要周旋于技术负债、不必要的复杂的数据结构,以及截然不同的框架、工具链和编程语言之间,导致创 新面临多重挑战。

作为一款开源的 NoSQL 文档数据库,  MongoDB 自 2009 年 2 月诞生以来,率先打破了关系型数据库一统天下的局面,随后几年间,它从一家名不见经传的创业公司,迅速成长为位居第一梯队的知名数据库厂商,且稳居在 DB-Engines 的 TOP 5 榜单中。开源是否是其创新的唯一驱动力?面对复杂的数据结构问题,MongoDB 成功的背后 蕴藏着怎样的秘籍? 

因此本期《新程序员:开源深度指南&新金融背后的科技力量》与 MongoDB 首席技术官 Mark Porter 围绕开源数据库的构建、开发者工作与创新的平衡,以及 MongoDB 的创新优势等方面进行了深入的探讨,也希望能够给对业务结果直接负责的 IT 决策者、想要提升效率的开发者带来借鉴与参考。

开源与云改变新时代下的数据库

《新程序员》:许多成功的数据库产品都是开源的,这是否意味着开源是创新软件成功的一条道路?

Mark Porter:开源对 MongoDB 的成功至关重要,也是全球软件行业的一个重要趋势。开源已成为建设社区和吸引开发者的默认标准。

在 MongoDB,我们的研发支出已接近 10 亿美元,其中半数以上资金用于免费开源产品研发。2021 年,MongoDB 免费开源产品下载量甚至超过了 MongoDB 成立以来前十年的下载量之和。

《新程序员》:许多企业都在构建云原生数据库或将数据库迁移上云,那么,在云数据库这一新的竞争领域内,企业如何利用云与开源的结合,在角逐中胜出?

Mark Porter:如今,开发者需要在各种不同类型系统中使用大量的技术、数据模型、应用程序编程接口(API)和编程语言,来满足用户对现代应用程序中事务、搜索和分析功能的需求。虽然云计算给科技行业带来了革命性的变化,提供了低廉的入门成本和无限的规模以及其他各种显而易见的优势,但大多数云迁移仅复制了传统 数据中心的复杂性和弊端。

对于那些确实有必要迁移到云端的应用程序而言,“直接迁移上云(Lift and Shift)  ”听起来是一个不错的选择。然而,这些迁移很大程度上只是将团队必须在本地完成的工作复制到了云端。以数据库为例,开发者仍需处理多种类型的数据系统,才能满足企业所需构建的事务、操作和分析需求。

“直接迁移上云”并不能解决团队结构或操作流程效率低下的问题。在面对各种请求时,开发和运营团队往往各自为营,束手无策。这导致应用程序交付时间很难得到改善。除非面临紧急事件,如数据中心租约即将到期,否则,“直接迁移上云”不仅耗资巨大,还会给公司带来诸多麻烦。即便完成了“直接迁移上云”这一步,既有的应用程序也并未发生改变,依然无法满足对敏捷性和速度的需求, 区别只在于这些工作都被迁移到了云端。

但是,你将无法运用云原生的种种优势,如弹性;也不能像云厂商和 SaaS 公司那样,通过大量投入来提升韧性、安全性和合规性。“直接迁移上云”带来的成本和破坏对于企业的发展几乎没有任何助力—— 客户无法从中获得任何益处,企业也几乎没有获得任何优势。

显然,还有更好的方法,因为许多组织机构已经在上云方面取得成功。我们认为,企业在上云方法上要另辟蹊径。我们看到,一些最具创新性的企业对应用平台进行 了战略投资,从根本上改善了四大关键领域:

  • 提高开发者的工作效率;

  • 优先考虑使用优质且可重复使用的架构;

  • 轻松保护数据安全与隐私;

  • 采用既兼顾灵活部署能力又侧重于多云模式的新方法。

《新程序员》:许多人在面对数据处理的挑战时,  由于数据库的能力不足以解决问题而使用大数据技术,这是否意味着数据库领域需要一款足以比肩大数据能力的新型数据库?

Mark Porter: 自 20 世纪 80 年代被提出以来,大数据概念已经发生了重大变化。结构化数据、非结构化数据和半结构化数据都属于大数据的范畴。如今多数大数据都是非结构化数据,包括视频、图片、网页和多媒体内容。 每种类型的大数据都需要一套不同的大数据存储和处 理工具。

大数据数据库可以快速摄取、准备和存储大量不同的数据。它们负责将结构化数据和半结构化数据转换为分析工具支持的格式。鉴于这些独特需求,MongoDB  等文档(或其他非关系型) 数据库成了存储大数据的理 想选择。

《新程序员》:近两年中国涌现出了很多优秀的开源项目,也有不少走向海外。MongoDB 在全球范围内有许多用户,有什么样的经验可以分享?有人认为开源与商业毫无关系或互相矛盾,你怎么看?

Mark Porter:有这种想法的人还停留在过去的开源项目上。过去的开源项目旨在创造公平的竞争环境,为那些负担不起昂贵软件许可证的人提供支持和帮助。然而,随着开发人员的崛起和开源技术的战略性使用,市场上出现了许多令人印象深刻的开源软件公司,除了 MongoDB,还有 Confluent、HashiCorp 和 DataBricks 等。

我们承认,每个公司利用、构建和扩展开源根文件的方式都不尽相同。对 MongoDB 而言,首先,我们会构建备受开发者青睐的优秀产品。在此过程中,我们始终奉行一个简单的理念,那就是打造一款有助于大幅简化数据处理流程的产品。

其次, 我们会通过开源渠道使产品尽可能易于访问和使用,并创建尽可能多的优质培训文档和支持性文 档。创建优质文档是一个关键因素。此外,我们还会提供免费的 MongoDB 大学课程,开发者可以轻松掌握 MongoDB。

截至目前,MongoDB 的下载量已经超过 2.65 亿次,在全球 100 多个国家和地区拥有数千名员工和 35000 多家客 户。那么,MongoDB 是如何成功构建业务的?当然,成功不是单方面的因素造就的,也不是一蹴而就的。我们采取了多管齐下的市场战略,专注于为客户提供更大的价值。其中包括以下要素:

  • 许可——这是一种传统的“开源销售”方式,指出售 软件及额外支持服务的升级版许可。在这方面,我们有 MongoDB Enterprise Advanced 企业版,许多大型组织机 构都喜欢在本地和云端运行此版本。

  • 软件即服务——在这种模式下,MongoDB 将现有软件作为托管服务提供给客户,主要通过 MongoDB Atlas 来提供托管服务。在中国,开发者也可以通过阿里巴巴和腾讯获得 MongoDB 官方授权的托管服务。

  • 服务——MongoDB 还为客户提供专业服务,满足他们对额外专业知识的需求,帮助他们更好地实施战略和 转型,或从战术角度帮助他们在大型发布活动之前完善 部署工作。

  • 合作伙伴—— 当然,我们也与许多不同的合作伙伴建立了良好的关系,  包括云厂商、大型集成软件厂商  (ISV)  、咨询公司和系统集成商(SI)  等。所有这些公 司都专注于为开发者提供支持,推动业务向云端迁移, 并优化自身的数据管理能力,而 MongoDB 可以为这些公司提供最佳的数据层解决方案。

“创新税”的根源在于数据

《新程序员》:据《2022 MongoDB 数据与创新报告》显示(见图1)  ,55% 的受访者认为其组织机构的数据架构很复杂,60% 的受访者认为这种复杂性是制约创新的主要因素。你认为导致数据架构复杂的原因是什么?

 

图1 来源于《2022 MongoDB数据与创新报告》

Mark Porter:导致这种复杂性的因素有很多。其中最为明显的是许多组织机构仍在使用过时的传统技术,增加了开发的复杂性,但问题远不止于此。例如,大型企业可能拥有成百上千个应用程序,而每个应用程序都拥有各自的数据源和数据管道。

随着时间的推移,数据存储和管道成倍增加,组织机构的数据架构也变得愈发复杂,犹如一团乱麻。由于应用的技术各不相同,且每一种技术都有自己的框架、协议,甚至是语言,基础架构的扩展变得极其困难;同时每一种架构都是定制的,生产质量难以保证。团队不得不把本该用于深度技术研发的宝贵时间花在集成工作上,从而没有更多的时间构建企业需要且客户青睐的新 应用程序和特性上—这就是所谓的创新成本。

在很多情况下,创新成本表现为没有能力去思考新技术的应用,因为底层架构太过复杂且难以维护,更不用说理解和转型。很显然,组织机构应当做好采用新方法的准备。

另一方面,通过观察一些走在创新前沿的企业,  我发现这些企业并没有将创新工作外包给第三方。相反,这些组织机构的领导团队清楚构建软件的复杂性,并希望为开发团队提供有效的解决方案,帮助提升团队工作效率。

《新程序员》:应用需求千变万化,但系统设计没有唯一正解,如何设计一款简单、稳定且实用的系统架构? 如何平衡数据复杂性与开发新产品/新功能之间的关系?

Mark Porter:在我的职业生涯中,曾有幸部署过许多不同类型的软件。从最早的光盘,到从网上为客户提供软 件,再到迭代数据库实例和网络层。此外,我还负责过大型关键任务系统的在线升级工作。

我将这称之为“有幸”,是因为对于软件工程师而言,最开心的事情莫过于将软件交付到终端用户手中。然而,软件部署并非总是一帆风顺。虽然每项部署任务都有其特定的难点,但它们之间也有一个共同点,那就是焦虑。

我经常会谈到开发者在部署软件时产生的焦虑感,以及这种焦虑感对创新的负面影响。早期,我会使用“180法则”来帮助团队克服焦虑心理。也就是开发者应能够将软件部署到生产环境中。如果软件无法正常运行,应将软件快速剥离生产环境,并将系统恢复到之前的工作状 态;如果开发者有信心检测和修复问题,那么对于软件 部署的把握也会更大。

所有软件部署总体上都可以归纳为以下几个阶段:

  • 部署—— 无论你是逐步把负载迁移到生产环境,或者一次性切换到生产环境,这个阶段需要将二进制文件或配置文件可靠地部署到生产环境中,然后让系统开始使用这些文件。

  • 监控—— 系统在实时负载下的运行状况如何?我们是否会收到系统运行正常且性能良好的信号?监控阶段应更多地关注现有功能,而不是一味地追求实现新功能的“理想路径”。换句话说,首次发布是否会对系统造成损坏?

  • 回滚—— 如果出现系统运行异常的迹象,则需立即进行回滚操作,将系统从生产环境恢复到之前的状态。从某种意义上说,回滚也是一种部署,因为开发者正在 对实时系统进行另一项更改:将其返回到之前的状态。

“180法则”中的“180”有着双重含义。在这里,我们指的是回滚操作带来的“180度”大转弯。同时,它也意味着任何部署目标都是可以实现的。我相信,在任何环境中,我们都可以将软件部署到生产环境中,也可以当软件运行出现异常时,在3分钟(180秒)  内完成回滚操作。 这意味着,在第一个 60 秒内,将二进制文件部署到生产 环境中,并为客户指明路径;在第二个 60 秒内,观察事务负载是否存在问题;在最后的 60 秒内,根据需要回滚二进制或配置文件。当然,行业或产品不同,所需的时间可能更短。但底线是,故障软件在生产环境中停留的时间不能超过 3 分钟。

开发者应时刻遵循这三个步骤,并且这个过程通常需要手动完成。大家可能会想:“单纯依靠人力怎么可能在 那么短的时间内完成软件的部署、监控和回滚?”

这正是“180法则”的神奇之处。要满足时间方面的要求,唯一的办法就是流程自动化。我们必须训练计算机,使其能够自动收集信息并制定决策,而不必等待人为制定决策。遗憾的是,  对于许多公司来说,这意味着 一种根本性的改变。但是,这种改变是必要的。如果不 做出改变,企业就会陷入两难境地,一方面希望软件能 够顺利部署,另一方面又担心失败。这也会导致开发者 对软件部署产生抵触情绪。

MongoDB 的创新宝典

《新程序员》:许多企业中,员工大部分时间都花费在 维护基础设施和解决业务问题上,且工作时间比较长, 能真正用于创新的时间非常有限,很多创新也都是基于解决问题和需求的角度出发的。你怎么看待这种现象? 其根本原因是什么?

Mark Porter:你对这个问题的认识一针见血。的确,创新滞后并不是因为公司缺乏灵感或创造力,而是因为他们被迫将时间花费在维护传统框架上,导致数据相关工作举步维艰,这是大多数组织机构都存在的问题。

尽管已经认识到创新和速度的重要性,也对此投入了持续关注,但不同规模的公司内部仍然存在团队不被人理 解、管理不善、边缘化等问题。虽然不是有意为之,但组织却要为此付出高昂的代价。这些问题很快就会演变成为组织在创新数量和质量方面需要付出的成本。创新成本的一个表现就是组织未能正确认识开发者的工作内容和工作方式,或者无法为开发者提供高效的工作环境。在数字化经济时代,无法解决这一问题,将给组织带来极其严重的后果。如同要交税一样,创新成本也是真实存在的,它会严重打击员工士气,导致人员流失, 还会从其他方面影响组织机构的利润。面临创新成本问题的组织机构将人力和资源都花费在维护工作上,在创新方面的投入则少之又少,导致创新速度异常缓慢。

还可以从DIRT的角度来考虑这个问题,DIRT (Data & Innovation Recurring Tax) 是指数据与创新经常性税(成 本)。立足于根本,DIRT的根源在于数据(D),  因为企业往往试图使用传统数据库技术来支持现代应用程序,但现代应用程序却需要获取实时数据来创建丰富的 用户体验,这无异于作茧自缚。在这种情况下,团队不得不将大部分时间用于支持复杂、棘手的架构,用于创新的时间则少之又少,  因此影响了创新(I)。这种情况会经常性地(R)  出现,  因为这不是一次性税收(T)。 事实上,DIRT 适用于所有新项目,每个新项目都会添加 新的组件、框架和协议,同时需要对它们进行管理和维护,也因此变得更加复杂。

对于技术领导者而言,DIRT 并不是一个新名词。他们早已意识到这种税收的存在,只是一直没有命名而已,如今我们的研究已经明确证实了这种税收的存在。

技术领导者还可以即刻了解自身的数据架构会在多大程度上 导致或减轻这种税收。数据具有黏性、战略性、繁重性 和复杂性等特点,但其仍然是现代数字化公司的核心。 当前,  应用程序变得越来越复杂,数据需求也愈加复 杂;此外,数据量一直在不断增加,用户期望公司能够对数据蕴含的所有信号作出更快速、灵活的反应,这无 疑将技术领导者们推到了十字路口—因为单一模型、 僵化、低效且难以编程的关系型数据库等传统技术已经 无法满足当前的需求。

《新程序员》:MongoDB 有哪些技术创新实践?如何平衡工作与创新?

Mark Porter:在成功构建和完善团队方面,我想分享以 下三个理念:

  • 康威定律—— 简单地说,组织风格及沟通方式取决于领导者。例如,如果两位领导者的关系不睦,在组织中各执己见,那么他们负责的两款产品也会相互格格不入。所以,确保组织、准则和领导者步调一致,才能呈 现出受客户青睐的产品;

  • 邓巴数字—— 邓巴数字定律指一个人每一次只能维 持一定数量的社会关系。我认为,这一定律同样适用于团队构建和管理。在构建团队和进行互动交流时,确保团队人数在邓巴数字以内; 不要盲目地构建一个千人大团队,你会发现团队成员之间缺乏信任或了解。特别是,如果你将开发者最私密的东西(例如,未受保护的地址空间) 分享给他们不信任的第三方,那么结果很可能事与愿违;

  • 自治和问责—— 根据我的经验,  大多数团队都想要 并渴望拥有自治和问责权。无论是否是软件开发,  当今的头部企业都会组建起一个个小型授权团队,这些团队知道自己的任务流程和进度,拥有自主决策权,并拥有着良好的客户关系网络。在这个过程中,领导力发挥着关键作用—— 引导并帮助创建一个自由、坦诚、赋权和自主的环境。你会发现,这样的团队更乐于主动承担责任,效果远比强迫他们承担责任要好。

此外,在 MongoDB 构建自治和问责能力时,我们格外看重以下四项特质,这些特质相互交织且结合起来产生的 作用要远远大于各自相加的总和。

  • 坦诚:要想打造坦诚文化,首先需要弱化利害关系。 无论遇到什么问题,我们都希望员工能够敢于讲真话, 以善意的角度表达想法和接受反馈。

  • 背景:我们与员工分享大量企业信息和战略(甚至是 疑虑和担忧)  ,因为我们认为员工应该获得所需的所有 信息,这样才便于他们更好地做出决策。

  • 赋权:我们希望,在公司内部,员工不必事事请示。 例如,作为首席技术官,我的职责之一是审批每一位员 工的出差申请,但我并不愿意这样做,我希望员工将相 关政策抄送给我,而我有权提出质疑或反对。我们应该 授权员工,让他们自主做选择,而我们的职责是为员工 创建起这些必要的机制。

  • 心理安全感:每个人都需要在工作场所中获得心理 安全感。没有人是奔着失败来的,但失败在所难免。作 为领导者,在发现实验失败时,我们需要坦然接受,将 失败视为通往美好未来的垫脚石。

 

深入钻研永远不会过时!

《新程序员》: 中国有非常多的程序员,但据 优快云 《2021-2022 中国开发者现状调查报告》数据显示,从事数据库内核研发的人只有 7%,对于数据库核心研发人才培养,你有什么建议?

Mark Porter:首先,我不确定 7% 这个数据是好是坏。 如果我们是在讨论有多少开发者从事数据库技术研发这个问题,而答案是大多数开发者都在从事这项工作, 那么我会感到不安。如同操作系统编程一样,数据库核心技术研发需要专业技能,我认为大多数开发者应该利 用底层数据库技术来构建应用程序,而不是自己研发数据库。

对于所有应用程序来说,数据的使用、存储、保护和管理都是非常重要的环节,甚至可以说是最重要的环节, 但也只是其中的一个环节。建立数据库是一项非常困难和复杂的任务。要想建立数据库,就需要非常关注这些 问题。

我希望能够让大多数开发者都专注于为客户或组织机构创建新的价值/功能。我们的使命是打造一个理想的数据平台,让开发者不需要花费太多时间去研究,就可以快速实现迭代和创新。数据库研发不应该是开发者考虑的问题,应该交由我们来完成。对于想要从事数据库研发的开发者而言,则应该了解数据库的基本工作原理及数据库与应用程序的交互方式。

《新程序员》:在踏入工作至今,你的做事方式或工作方法是否发生了改变?有哪些感悟是受用至今的?

Mark Porter:我认为,工具进步是软件开发领域最为明显的变化。在现代开发环境中,我们可以轻松避开编 码过程中的各种失误,甚至可以自动编写和运行大多数测试。如今,只需点击一下,即可部署数百台机器,还可以进行回滚操作。在我刚进入软件开发行业那会儿,这一切都是不敢想象的,那时的我们不得不将大量时间花费在简单的低价值任务上。

谈到人生感悟,我认为做事情应该求深求精,而不是浅尝辄止。深邃的知识会转换为卓越的成果。学会钻研本身就是一种技能,深入地了解有关软件组成或技术的几 乎所有知识是一件令人振奋和自豪的事情。从我的人生经验来看,我发现懂得如何钻研技术的人比其他人更有价值。

《新程序员》:  如果回到 30 年前,你会给年轻的自己提出什么建议?

Mark Porter:不用回到那么遥远的过去。我的妻子曾给我提过一个建议,我一直铭记于心,在我担任管理者和领导者期间也一直在坚定地贯彻这个理念。

我和妻子育有五个可爱的孩子。在孩子们还不到十岁的时候,某一天,妻子走过来对我说:“如果你总是以相同的方式对待所有孩子,你会慢慢失去他们的。你觉得‘做父亲有一个正确的模板’,但实际上,你必须要认识到,我们的五个孩子需要你给予他们不同的关爱。”

听从了妻子的话, 我做出了改变,也取得了显著的效果。大概一两年后,我意识到,作为一名管理者或领导者,我也需要保持同样的心态。我们要学着成为一名多面性的领导者,成为一名每位员工都需要的领导者。在此过程中,没有诀窍可言,唯有不断投入和付出,才能得到回报。

《新程序员》:业界有不少程序员会有“35岁”危机, 大家普遍认为此时的开发者在精力和体力比不上年轻人,编程质量可能也在管理团队的过程中因为脱离一线 而下降,你怎么看待这种现象?有什么建议可以分享?

Mark Porter:首先,我完全不认可“35 岁是大龄程序员”这个说法。相反,我认为这是开发者的黄金时期。 因为这时他们大多已经步入行业多年,拥有了丰富的经验,能够避开初级开发者可能会犯的一些错误。我觉得,35岁左右的优秀开发者可以转向架构和指导方面的工作,这样可以开辟更多学习和成长的途径。作为一名成功的开发者,关键在于终身学习,而我们在任何年龄 段都可以做到这一点。

就职业发展而言,开发者应该慎重考虑是转做管理岗还是继续从事开发工作。同时,开发者还需要明确一点,无论作为个人贡献者,还是管理者,都必须要得到公司的切实支持。

在这里,我想给开发者的建议是,深入钻研永远不会过时。无论负责算法、调试还是工具链,只要你足够优秀,就会得到组织的器重。只有足够优秀的开发者,才能独具慧眼,才能抓准颠覆性迭代或重新设计的时机,也才有信心肩负起这份重任。

我不欣赏那些每两年就从一个技术转向另一个技术(或从一家公司跳槽到另一家公司)  的人。10~15 年后,他们会发现自己什么都会一点儿,又什么都不精通。在这个职业阶段,本应该考虑晋升到更高级别的职位;但不幸的是,自己一步步走下来,已经失去了最佳时机。我见过很多人在职业生涯中受挫于此。

受访者简介:Mark Porter

MongoDB首席技术官(CTO),先后担任Grab 核心技术及交通首席技术官、AW S总经理、 Oracle工程副总裁,并在MongoDB董事会、全 球移动公司Splyt董事会和数据库公司MariaDB董 事会任职。

SpringBoot+Vue+MySQL 高校学科竞赛平台 完整可运行版(源码+文档) 本项目基于SpringBoot+Vue+MySQL构建高校学科竞赛管理平台,覆盖学生、教师、领队教师、管理员四大角色,实现竞赛发布、报名、刷题、评分、公示等全流程闭环管理。系统架构清晰,技术主流,配套完整源码、数据库脚本、万字论文、开题报告、答辩PPT及部署文档,支持一键运行,适用于毕业设计、课程设计及院系二次开发,真正实现“开箱即用”。 阅读详情

相关推荐

让小米成为印度第一的“头号功臣”,9 年后宣布离职!

整理 | 郑丽媛出品 | 优快云(ID:优快云news)2010 年时,可能谁也不曾想过,彼时在中关村刚刚起步的小米,如今会成为全球知名手机厂商、甚至销量还一度超越苹果跃升全球第二——这一切的背后,离不开许多人的默默付出,其中就包括已在小米供职 9 年的小米集团全球副总裁 Manu Kumar Jain。但本周一,Manu Kumar Jain 突然在推特发文宣布离职:“过去 9 年,我很幸运...

优快云资讯 1万+

AI自动化流程在金融风控中的3个典型案例

AI自动化风控流程全流程自动化:最小化人工干预,实现从数据输入到决策输出的闭环自适应学习:通过持续数据反馈实现模型自动迭代优化实时决策能力:满足毫秒级(支付风控)至分钟级(信贷审批)的响应需求多模态数据融合:整合结构化、非结构化和实时流数据智能决策解释:自动生成符合监管要求的决策解释人机协同机制:在高风险场景下实现AI与人类专家的协同决策实施后关键绩效指标(KPI)变化指标实施前实施后改进幅度平均审批时间3.2天4.7分钟-99.7%自动审批率15%85%+467%

架构师的AI之路,分享AI应用开发架构的学习与实践。 1537

屏幕不止一种:OLED、LCD1602字符屏、TFT/IPS图形屏和串口屏怎么用,这与TTY和PTY又有什么关系

要图像、要曲线、要一块比现在更大的画面,面前的屏就不止一种了。OLED、LCD1602字符屏、TFT/IPS图形屏和串口屏怎么用,又该按什么来挑?这与TTY和PTY又有什么关系?

Lxx_Zw的博客 315

YOLOv11改进策略【模型轻量化】| 替换骨干网络为 GhostNet V1 基于 Ghost Module 和 Ghost Bottlenecks的轻量化网络结构

本文记录的是基于的YOLOv11网络模型轻量化方法研究。GhostNet中的Ghost模块和Ghost瓶颈结构是其轻量化的关键。Ghost模块克服了传统卷积层计算资源需求大的问题,Ghost瓶颈则合理设计了通道数量的变化以及与捷径连接的方式,能更好地在减少计算成本的同时保持较高性能,从而提升模型在移动设备上的应用能力和效率。

Limiiiing的博客 1431

掌握C++新特性中智能指针的综合指南

本文是一篇关于C++中智能指针的综合指南,旨在深入探讨现代内存管理的核心概念和技术。智能指针是C++中一种强大的工具,可以帮助开发人员更安全、高效地管理内存资源。通过详细解析各种类型的智能指针,包括unique_ptr、shared_ptr和weak_ptr,读者将了解它们的原理、用法和适用场景。本文将重点介绍智能指针的优势,如自动内存释放、避免内存泄漏和循环引用等问题。此外,还将讨论智能指针与传统指针的区别,并提供一些最佳实践和实用技巧,帮助读者在实际项目中正确、高效地使用智能指针。

Lion_Long的博客 1200

5个陷阱和解决方案:MongoDB源码中自动化测试平台的数

在现代软件工程实践中,自动化测试平台扮演着至关重要的角色,它确保了系统的稳定性和迭代的可靠性。然而,随着业务数据量的快速增长以及并发写入需求的不断上升,基于MongoDB构建的自动化测试平台常常面临性能瓶颈和数据一致性问题。本文将围绕MongoDB源码中一个关键模块——,通过一行一行代码的解读,揭示其设计原理、性能调优点及常见陷阱,适合希望深入理解数据库实现机制的高级工程师。

wuchangjian的专栏 172

SAP_SD模块销售开票计划预收款系统配置及前台操作说明

在 SAP SD 中,开票计划(Billing Plan)是一种允许根据时间节点或里程碑对销售订单进行分期开票的功能。其中最常见的一种应用就是预收款(Down Payment Billing),即在销售订单中直接定义某个百分比或金额作为预收款,系统在开票时自动生成预收账单。大额合同或长期项目型销售(先收 20%,交货前收 30%,交货后收 50%)。分期付款模式(分阶段收款)。必须预收款才能安排生产或交货的业务。后台路径:SPRO—销售与分享—销售—销售凭证—销售凭证项目—定义项目类别。

我小时候很黑的博客 1409

MongoDB迁移之后,Spring Data 与 Hibernate 的职责分界:一场数据访问层的静默重构

MongoDB迁移后,Spring Data与Hibernate的职责边界被重新划定:一个守护文档弹性,一个锚定关系严谨。这篇文章用对比表格和4类典型场景,帮你看清哪些请求该交给谁,避免“能做”却“不该做”的架构陷阱。😮 如果你正面临混合持久化选型,这篇盘点值得一读。

2601_94912102的博客 267

辉芒微教程第五篇《定时器0实现LED灯闪烁》

定时器定时器,一听就跟个闹钟似的,对于嵌入式定时器大部分的应用中,也的确可以这么理解,但是这只能肤浅地这么理解,实际其功能不仅仅是用来计数定时,但是对于我们这种8位单片机,这么理解就够了。

qq_41809823的博客 725

基于Simulink的固态变压器(SST)多级协同控制​

本文介绍了基于Simulink的固态变压器(SST)多级协同控制方法。SST作为智能电网关键设备,其三级架构(AC-DC整流、DC-DC隔离、DC-AC逆变)存在级间耦合问题。文章提出纵向解耦与横向联动相结合的协同控制策略,详细推导了各级控制算法,并通过Simulink实现了10kV/400V级联型SST系统建模。仿真结果显示,在±20%电网波动和0-100%负载跳变下,系统能保持直流母线电压波动<2%。文章还提供了工程部署建议和代码生成方法,为SST的研发提供了实用指导。

amy_mhd的博客 303

用Ai8051帮我写一个FX3UPLC 程序

用Ai8051帮我写一个FX3UPLC 程序AI这个需求我得先跟您确认清楚,因为"用Ai8051U写一个FX3U PLC程序"这个说法本身存在歧义,我不能凭猜测直接给您出一套代码。

czhaii的专栏 298

从通用到定制:营销Agent如何跨越数据鸿沟,实现对话SOP的个性化飞跃

从通用到定制:营销Agent如何跨越数据鸿沟,实现对话SOP的个性化飞跃

丨汀、的博客 656

MongoDB:入门与安装(一)

MongoDB是无模式的文档数据库,数据以BSON格式存储在集合(Collection)中,每条记录为灵活的文档(Document),无需统一字段结构。与MySQL的固定表结构不同,同一集合内文档可自由增删字段,适合处理不规则数据。可通过Docker或Windows安装包快速部署,使用mongosh命令行或Compass图形工具连接操作。例如,在my_test_db库的users集合中插入结构各异的文档,如{"name":"小明","age":18

梦想不只是梦与想的博客 380

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

代码小白笔记:江科大 51 单片机 LCD1602 课程详解

本文为单片机新手梳理江科大51课程中LCD1602的驱动逻辑,聚焦“看懂代码”而非深究寄存器。通过解析接线、底层函数(延时、写命令/数据)、初始化流程及光标定位,详解字符、字符串、数字(十进制、十六进制、二进制)的显示原理,核心在于理解“RS控制指令/数据”、“地址映射规则”及“数字转字符”的位运算技巧,帮助读者快速上手并自定义显示内容。

2301_81429079的博客 453

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

51 单片机入门笔记:江科大课程代码逐行讲解(按键控制 LED 流水灯)

本文为江科大51单片机课程笔记,详解用两个按键控制LED流水灯的代码。涵盖头文件、软件延时、按键消抖、位操作、循环移位与取反等核心知识点,逐行解析P3_0/P3_1按键检测、num变量控制、~(0x01<<num)实现低电平点亮LED的原理,并强调软件消抖与边界处理的重要性。代码虽短,却串联起51单片机入门关键技能,适合初学者动手实践。

2301_81429079的博客 261

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Docker Compose:搭建本地多服务开发环境

从一个 Java API、PostgreSQL 和 Redis 开始,配置服务名、端口、环境变量、健康检查、数据卷和依赖关系。理解 Compose 文件如何被解析、项目如何隔离,以及哪些数据不能依赖“重建容器”保留,能够把个人开发环境整理成团队可复用的启动入口。

m0_62221377的博客 477

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 432

【基于 WebSocket 的多用户网页五子棋】—— 数据管理模块

但行好事,莫问前程

qq_42996461的博客 250

C++算法(七)

C++ stack算法题和一些客观题

2503_94479566的博客 378

OpenClaw 深度调查:把 AI 助手做成你自己的控制平面

对 openclaw/openclaw 的完整技术尽调:Gateway 架构、Agent 运行时、工具与沙箱、30 个消息通道、181 个插件、安全信任边界、工程代价与采用建议。17 章 / 10 张图,全部数字标注口径,数据截至 2026-10-31。

厚积薄发 294

IDEA 简介:从零认识 IntelliJ IDEA

IDEA 全称,是由 JetBrains 公司开发的一款主流 Java 集成开发环境(IDE)。它集代码编辑、编译、调试、测试、版本控制、构建管理等功能于一体,被大量 Java 开发者视为日常开发的首选工具。所谓 IDE(Integrated Development Environment,集成开发环境),就是把写代码所需的各类工具整合到同一个界面中。相比只用文本编辑器加命令行编译,IDE 能显著减少重复操作,让开发者把精力集中在业务逻辑上。

ztI10的博客 176

TransactionInactiveError:await 之后事务已经不活跃了

TransactionInactiveError 出现于 IndexedDB 事务已结束(非 active 状态)时调用 put、get 等操作。常见于 await 后或 setTimeout 中执行请求,因任务已完成,事务已提交或进入 finished 状态。请求必须在创建事务的同一任务中挂起,否则无效。解决方法:在 onsuccess 回调内同步发起后续操作,或提前将所有请求挂入事务。避免在异步上下文中使用事务操作,确保请求在事务活跃期内完成。

qq_40822000的博客 159

云计算课程小组PPT汇报任务书

36人分为6组,每组6人;形式:生活案例调研 + 理论解读;汇报时长7‑9min;PPT建议10‑14页。

Michelle8023的博客 207

大表 ALTER TABLE 怎么做?NineData OnlineDDL 配置与执行实践

介绍NineData OnlineDDL大表变更实践,涵盖执行策略、切表控制、拷贝批次与可视化进度追踪。

dbasenewbie的博客 295
上一篇: 开源合规实践避坑指南
下一篇: 向凯文·凯利提问:未来 5000 天我们将走向何处?
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值