读书笔记:《华为突围ERP封锁全纪实》
文章背景:
2019年5月,华为被美国制裁,其ERP系统面临断供风险。ERP系统是企业核心管理软件,一旦中断,华为的全球业务将陷入瘫痪。面对这一生死存亡的危机,华为启动了“突围”计划,历经数年艰苦奋斗,成功自主研发了MetaERP系统,完成了全球200多家子公司的系统切换,实现了业务的连续性和自主可控。
关键词:
ERP(企业资源计划,Enterprise Resource Planning)是一种集成化的管理信息系统,旨在通过整合企业内部的各种资源(如人力、物力、财力、信息等),优化业务流程,支持资源配置,提高企业的运营效率和管理水平。
原文中对ERP系统的举例说明:“假如一位个体户经营一个煎饼铺子,需要管理鸡蛋、面粉、大葱等十几种食材,他通过眼看心算就能管得过来;假如他经营一家便利店,涉及几十、上百种商品的进、销、存和价格,那光靠他的脑袋就不行了,过去要用账簿和算盘,现在要用到电脑表格;假如他经营的是一家大型超市,涉及成千上万种商品的进、销、存,以及管理、会计,即便他拥有牛顿、爱因斯坦的大脑也算不过来,单纯的电脑表格也不够用了,这时就需要用到类似ERP的管理软件系统。“
华为ERP突围过程始末:
一、华为的危机与抉择
- 背景:华为的ERP系统由甲骨文公司提供,制裁后,甲骨文停止合作,华为面临系统断供、无专家、无备件、无服务的困境。
- 抉择:华为决定自主研发ERP系统。这一决策背后是巨大的压力和不确定性,但也体现了华为的勇气和决心。
学习点: - 危机意识:企业必须具备应对极端风险的能力,提前布局,避免过度依赖单一供应商。
- 决策勇气:在生死关头,敢于做出艰难决策,即使面临巨大的不确定性和风险。
为了保证新旧ERP系统的稳步切换,华为同步采取了AB两个并行计划。
二、A计划:保障现有系统稳定运行
- 挑战:原厂专家撤离,硬件到生命周期末期,软件无补丁,安全漏洞频发。
- 措施:
- 拨款专项基金,组建自有维护团队,集中社会招聘专家。
- 构建五层保护罩(身份(防止用户账号被盗用)、网络(防止网络渗透)、主机(防止主机软件漏洞入侵)、应用(防止ERP系统原生漏洞入侵)、数据围栏(防止数据删除或篡改))。
- 实现同城双活(注释1)、异地容灾(注释2)、三重备份机制(注释3)。保障旧ERP系统的极限生存。
- 清除历史数据,降低系统容量使用占比。
- 大机切换:用华为自研服务器替换原厂软硬件一体机(俗称“大机”)。
成果:
显著延长了现有ERP系统的使用寿命,为B计划的实施赢得了5年时间窗口。
学习点:
- 应急能力:在极端情况下,迅速组建团队,采取有效措施保障系统稳定运行。
- 技术攻坚:通过技术创新(如大机切换)解决硬件瓶颈,为后续发展争取时间。
- 经验财富:在排查突发异常时,技术人员丰富的过往经验(注释4)起到了至关重要的作用。
- 团队协作:在危机中,团队成员齐心协力,攻克技术难题。
(注释1) 同城双活:同一个城市内,建立两个数据中心,同时运行,互为备份。
(注释2)异地容灾:不同城市或地区建立备份数据中心,当主数据中心因自然灾害等不可抗力因素导致业务中断时,备份数据中心可以迅速接管业务确保连续性。
(注释3)三重备份:数据存储和备份方面,采用三种不同的备份方式,通常包括本地备份、异地备份和云备份,确保数据的完整性和安全性。
(注释4)转用自研服务器的过程中,发现并发管理器和服务不可用,存在高风险,如果分析和恢复时间过长,将会造成大范围的周边系统不可用,导致业务停顿。原因还需定位,但是时间太紧,需要决策是否回退。
数据库管理员贝承发突然想到,5年前他遇到过的一个类似问题:数据库配置与ERP应用配置冲突。这是一个很隐蔽的软件缺陷。
三、B计划:研发MetaERP系统
- 目标:打造云化、服务化、自主可控的ERP系统,用3年完成主体建设,5年完成全球覆盖。
- 挑战:解耦复杂系统,开发新核心模块,确保业务无感知切换。
- 措施:
- 提出“秒针、分针、时针”模型,理清系统边界。
- 元数据多租架构:标准化共性需求,灵活扩展个性化需求。
- 云原生技术:将系统部署在华为云上,提升性能和弹性。
- 高斯数据库:自主研发高性能数据库,突破“卡脖子”技术。
成果:
华为成功摆脱了对外部技术的依赖,决心面向未来打造一个真正云化、服务化、自主可控的核心商业系统。
学习点:
- 顶层设计:通过创新的架构设计(如元数据多租、云原生)解决复杂问题。
- 技术突破:自主研发核心技术和产品,摆脱对外部技术的依赖。
- 项目管理:通过高效的项目管理体系,协调数千人团队,确保项目按时推进。
为验证MetaERP设计的可行性,项目组先在一家中等规模的子公司开发轻量级ERP系统进行“换芯”验证,成功后逐步推广至全球其他区域。
面对新制裁和紧张形势,华为领导层决定冒险优先替换中国区的ERP系统,因其对全球业务运营至关重要。这一决策犹如飞夺泸定桥,团队需通过技术攻关提升MetaERP系统性能,以支撑全球业务。
四、全球切换:从马来西亚到中国区
- 马来西亚试点:成功上线MetaERP,验证系统可行性。
- 中国区切换:采用“全量+增量”数据迁移方案,实现无感平滑切换。
- 全球扩展:分批次完成全球200多家子公司的系统切换。
学习点: - 试点先行:通过小规模试点验证方案可行性,为大规模推广积累经验。
- 创新方案:提出“全量+增量”数据迁移方案,解决大规模数据迁移难题。
- 全球协作:通过高效的组织动员和协作,完成全球范围内的系统切换。
五、文化与精神:团队的力量
- 团队精神:数千名员工团结协作,面对困难不退缩。
- 领导力:领导层的坚定支持和决策能力,为项目提供方向。
- 文化传承:华为的“奋斗文化”和“以客户为中心”的理念贯穿始终。
学习点: - 团队凝聚力:在危机中,团队的凝聚力和协作能力是成功的关键。
- 领导力:领导者的决策和动员能力对项目成败至关重要。
- 文化传承:企业文化是应对危机的精神支柱,能够激发团队的战斗力。
六、MetaERP的意义
- 技术突破:MetaERP的成功不仅是华为的胜利,也是中国软件产业的突破。
- 自主可控:实现了企业核心系统的自主可控,保障了业务连续性。
- 生态建设:通过与合作伙伴的紧密协作,构建了完整的软件生态系统。
学习点: - 自主创新:核心技术必须掌握在自己手中,自主创新是企业发展的关键。
- 生态合作:与合作伙伴共同构建生态系统,实现互利共赢。
- 产业意义:MetaERP的成功为中国软件产业树立了标杆,激励更多企业自主创新。
总结
《华为突围ERP封锁全纪实》不仅是一部技术突破的史诗,更是一部团队协作和文化传承的传奇。华为在极端困境中展现出的勇气、智慧和团队精神,值得每一个企业和个人学习。MetaERP的成功不仅是技术的胜利,更是文化和精神的胜利。
关键的创新转折点:
就像嫌疑人藏在侧写专家遇到的每个人中一样,灵感可能潜藏在每一个领域的每一个事物中。
1. 秒针、分针、时针模型
前因后果:
华为的ERP系统与业务系统数据量庞大,关系复杂,解耦工作面临巨大挑战。总架构师卢强在深夜沉思时,从时间的分割模型中获得灵感,提出了“秒针、分针、时针”模型,将系统分为实时交互数据的业务作业系统(秒针)、定期披露的报告系统(时针)和核心处理系统(分针),成功理清了系统边界。
创新思路:
通过时间维度对系统进行分割,将复杂的系统分解为多个层次,每个层次对应不同的业务需求和数据处理频率,从而实现系统的解耦和重构。
原文描述:“ “秒针”指实时交互数据的业务作业系统,包括供应、采购、销售、财经等 200 多个自研 IT 应用,它们与 ERP 系统相互连接,每一单采购合同的履行、每一个产品的完工下线、每一次库存的进出货,都要在 ERP 系统中进行交易结果的记录;“时针”指定期披露的报告系统,这部分数据应对的是月报、季报、年报等财务报告系统,并不需要实时变动,只有在特定时间点需要提取;而介于二者之间的“分针”,就是 ERP 核心系统,负责从交易到核算的处理,存放的是企业经营管理最核心的主干数据,要准确地和“秒针”“时针”进行数据交互,以确保业务信息与财务信息的一致。”
2. 分布式系统的数据一致性
前因后果:
在分布式系统中,数据一致性是一个世界性难题。MetaERP项目组在研究电动汽车的电源管理系统时,受到启发,提出了“总体控制”的设想。在各个微服务之上构建一个应用,自动监控数据不一致现象,一旦发现差异,立即报警并干预,从而无限逼近数据一致性的极限。
创新思路:
借鉴电动汽车电源管理系统的集中监控和干预机制,为分布式系统设计了一个“总体控制”应用,确保数据一致性无限逼近100%。
原文描述:“每台电动汽车都有一个集中的电源管理系统,这个系统负责数千颗锂 电池的充电、放电、散热和生命周期管理,非常强大。受此启发,他创造性地提出了ERP“总体控制”的设想,即在各个微服务之上,专门构建一个应用,自动监控数据不一致的现象,一旦发现系统或数据差异,立刻报警,并及时进行干预,这样无限逼近布鲁尔定理的极限,使数据一致性等同于 100%。”
3. 采购单大单阻塞问题
前因后果:
在处理采购订单时,大单处理成为性能瓶颈。项目组成员徐华在上班途中,受到公交车道畅通无阻的启发,提出了为不同类型的采购订单划定不同车道的方案,结合华为云的容器弹性能力,有效缓解了拥堵问题。
创新思路:
将采购订单按类型和优先级分类处理,设计不同的处理通道,结合云平台的弹性能力,优化了订单处理流程,提高了系统性能。
原文描述:“虽然其他车道很堵,但公交车道是畅通的。如果为不同类型的采购订单划定不同的车道,比如大订单跑慢车道,高优先级的跑快车道,最后再设计一条紧急车道,处理加急订单,同时再结合华为云的容器弹性能力,这样不就最大限度缓解拥堵了吗?”
4. ERP数据迁移
前因后果:
在ERP系统切换过程中,数据迁移是一个关键环节。项目组集思广益,创造性地提出了“全量+增量”的数据迁移方式,提前两周启动历史数据迁移,在正式上线时仅需处理新增数据,大大缩短了切换时间。
创新思路:
通过分阶段迁移数据,将历史数据迁移提前进行,减少了正式切换时的数据量,降低了切换风险,确保了系统的平稳过渡。
值得学习的点:
1. 华为突围ERP系统成功必备的要素:
- 经验:在突围过程中数次发生意料之外的情况,技术人员广泛的知识储备和丰富的经验,在面对复杂问题时起到了关键作用,凭此迅速定位问题。并且想出了解决方案。
- 冷静:无论面对怎样的压力和挑战,关键人物都是保持冷静,临危不乱,不但有助于做出理智的决策,也能稳定士气,鼓舞人心。
- 管理:公司愿意给紧急且重要的需求倾斜一切资源,能根据评估结果随机应变,打破规则全力支持团队完成目标。面对新的挑战管理者临危不乱,能快速制定适应需求的管理方针。
- 团结:高质量团队成员之间的紧密合作、无私奉献也是成功的关键,短时高效完成任务的背后是无数人的付出与牺牲(时间、精力、健康、陪伴…)。
2. 困境中的机遇:
- “华为要替换掉工业时代的成熟软件产品,是因为时代环境把我们逼上了梁山,但是站在另外一个角度上看,时代也赋予我们创新和超越的机遇。”
- 启示:“悲观主义者在每一个机会中看到困难,乐观主义者在每一个困难中看到机会。(温斯顿·丘吉尔)”面对挑战时,我们应该积极寻找突破点,将困难转化为创新和超越的契机。
3. 灵感的闪现:
- 灵感的到来也许是在不经意间,在掌握的每一个知识当中,在人生积攒的每段阅历中,在之前面对的每个挑战中。
- 启示:有时候,前期的积累达到一定程度,一个小小的细节或者一个不经意的联想,就能激发我们的灵感,带来新的思路和解决方案,产生出远超预期的新能力,达到灵感的“涌现”。
4. 系统与灵魂:
- “ MetaERP 并不是一个单一的技术系统,技术并不能带来智慧。要让 MetaERP 这个“大脑”变得聪明,就必须不断地把知识和经验赋予它——将华为积累的流程制度与管理经验和技术能力相结合,把场景抽象成规则,把规则变成可配的系统功能,再把功能用算法和代码来实现,从而形成成熟且灵活可配的产品,支撑全球业务的运作。”
- 启示:如果说核心技术的攻关是强健其体魄,企业管理规则的沉淀就是丰富其灵魂。技术与管理经验的结合才是系统成功的关键,只有两者相辅相成,才能打造出真正高效、智能的系统。
5. 长期合作与信任:
- 华为这次突围行动能成功,不仅因为内部有一支敢打敢拼的队伍,更是离不开外部产业链伙伴的支持,这些长期合作的供应商出于信任,在华为的危难关头提供了支持与理解。
- 启示:长期合作和深刻的信任关系是团队成功的重要保障。这种关系并非一朝一夕能够培养,而是来源于平日合作过程中发自内心的真诚和尊重。
6. 理解与妥协:
- 在追求完美方案的同时,也要考虑大局的紧迫性。有时候,我们需要在理想和现实之间找到平衡,做出适当的妥协,以确保项目的顺利推进。
- 启示:理解大局,灵活调整策略,是我们在工作中需要不断学习和实践的重要能力。
原文链接:
华为在切换ERP系统的过程中,遇到的困难和挑战远不止上述这些,本文稿所展示的只是冰山一角。若想更全面地了解其中的种种艰辛与收获,建议深入阅读原文(传送门)。
https://mp.weixin.qq.com/s/_XyO-fELEAgXB5J_cvrwqQ (原文音频约2h05分钟)
《华为突围ERP封锁全纪实》全文已由中信出版集团出版,书名《星光下的征程》。

撰稿作者视角的心得:
如果说上面的分享内容都是从这本书读者的角度出发的,那么下面就是我作为读书笔记作者的,另一个角度自己的一些感悟。
1.这篇分享稿的诞生离不开Kimi的帮助(叠保护甲:这不是广告,纯个人使用习惯,DeepSeek,豆包,智谱清言等都不错)。这篇文章对我来说长度、难度还有信息量都是非常挑战的程度,这也是我第一次写这么正式的读书笔记(因为要作为周会分享的储备,也会公开发到自己号上,所以必须认真对待,对自己和读者、听众负责)。要是没有人工智能的帮助,我肯定搞不定这么长的文章,很容易漏掉很多重要的信息。而且,作者的文笔也很了得,除了叙述事实的同时还运用了很多意味深刻的描写,文中不但有各司其职的丰富人物形象,还有相关领域的多个技术知识名词,我很难在短时间内把这么复杂的内容梳理清楚。但有了人工智能,我就能很快地把文章的结构和要点理出来,得以写出这篇条理清晰、信息详尽的读书笔记。(再次谢谢Kimi。)
2.另外,我代入运营和自媒体博主的角色也有一些感悟。以前看B站视频、微信公众号人家的产出,总觉得读书博主这个工作挺简单的,读读书写写心得就行。但真正做起来才发现,要把书里的内容完整地讲给别人听,能让别人快速高效掌握来龙去脉,还得有兴趣听下去、能从里面学到东西…要完整地把一个故事讲好,这可真的太难了。这次写分享稿,让我对自媒体行业,尤其是读书博主这个角色有了更深的理解,同时也对”伟大的背后都是苦难“这句话有了更切身的体会。
3.先努力再想回报,先付出才能收获——看到别人的作品被夸赞,很开心,羡慕,想要,就得吃咬文嚼字抠字眼赶稿的苦;看到别人发论文很了不起,很崇拜,羡慕,想要,就得吃抠破脑袋创新实验的苦。写文章也是一样,可以就为了交差,只单纯让AI火速生成一篇粗制滥造的文章,应付周会,应付读者,也应付自己,也可以反复推敲、精益求精,费心尽力不断完善做到最好。但如果想获得成长和表扬,就必须选择后者,不能选容易的路。个人的努力投入很大程度决定了做出什么样的成果,得到怎样的反馈,想要得到鲜花和掌声,就得先付出,先把自己的内容做好,先投入时间和精力,用真诚和善意创作,珍视了作品,文章才会用点赞回应,尊重了读者,才能受到大家的认可和好评。
4.创作的本质是厚积薄发。先有输入,再有输出。平时要自发地积累素材,有意识地积攒可以作为分享主题的内容,这样才不至于陷入选题荒。同时不要太过功利地只学习能带来短期回报的知识,就像文中几位专家的突发奇想一样,灵感可能来源于任何地方,即便他们看起来风马牛不相及。所有积累的经验、见识和履历、学过的知识一定就在未来不知道的某个前方等着发挥作用。
总之,这本书真的让我收获满满,也让我对人工智能创作、自媒体方面有了更深的认识。
相关文章:
读书笔记:《华为突围ERP封锁全纪实》
文章背景: 2019年5月,华为被美国制裁,其ERP系统面临断供风险。ERP系统是企业核心管理软件,一旦中断,华为的全球业务将陷入瘫痪。面对这一生死存亡的危机,华为启动了“突围”计划,历经数年艰苦奋…...
Linux的udev详解、安装和使用(dev下的设备每次开机的名称不固定怎么办?)
前言(问题与需求): 在传统的devfs 1:设备映射的不确定:一个设备多次加载设备的设备文件可能不同,比如一个hub有可能是ttyUSB0或ttyUSB2或ttyUSB3 2:devfs没有足够的主辅设备号,当设…...
单向循环链表的概念+单向循环链表的结点插入+单向循环链表的结点删除+程序设计与笔试题分析
单向循环链表的原理与应用 思考:对于单向链表而言,想要遍历链表,则必须从链表的首结点开始进行遍历,请问有没有更简单的方案实现链表中的数据的增删改查? 回答:是有的,可以使用单向循环的链表…...
【蓝桥杯嵌入式入门与进阶】2.与开发板之间破冰:初始开发板和原理图2
个人主页:Icomi 专栏地址:蓝桥杯嵌入式组入门与进阶 大家好,我是一颗米,本篇专栏旨在帮助大家从0开始入门蓝桥杯并且进阶,若对本系列文章感兴趣,欢迎订阅我的专栏,我将持续更新,祝你…...
Jetson Xavier NX 安装 CUDA 支持的 PyTorch 指南
本指南将帮助开发者完成在 Jetson Xavier NX 上安装 CUDA 支持的 PyTorch。 安装方法 在 Jetson 上安装 Pytorch 只有两种方法。 一种是直接安装他人已经编译好的 PyTorch 轮子;一种是自己从头开始开始构建 PyTorch 轮子并且安装。 使用轮子安装 可以从我的 Gi…...
“harmony”整合不同平台的单细胞数据之旅
其实在Seurat v3官方网站的Vignettes中就曾见过该算法,但并没有太多关注,直到看了北大张泽民团队在2019年10月31日发表于Cell的《Landscap and Dynamics of Single Immune Cells in Hepatocellular Carcinoma》,为了同时整合两类数据…...
[权限提升] 操作系统权限介绍
关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客 权限提升简称提权,顾名思义就是提升自己在目标系统中的权限。现在的操作系统都是多用户操作系统,用户之间都有权限控制,我们通过 Web 漏洞拿到的 Web 进程的…...
大模型本地部署流程介绍
大模型本地部署流程介绍 随着人工智能技术的快速发展,大模型(如大型语言模型、图像识别模型等)的应用越来越广泛。然而,由于这些模型通常体积庞大且计算资源要求高,如何在本地环境中高效部署成为了一个重要的议题。以…...
浅析百度AOI数据与高德AOI数据的差异性
目录 前言 一、AOI属性数据 1、百度AOI数据 2、高德AOI数据 二、AOI矢量边界 1、百度AOI空间范围 2、高德AOI空间范围 三、数据获取频次和难易程度 1、接口限制 2、数据转换成本 四、总结 前言 在当今数字化时代,地理信息数据的精准性和丰富性对于城市规划…...
LeetCode 119. 杨辉三角 II
题意:求杨辉三角(帕斯卡三角)的第n行(n从0开始) 杨辉三角的每一行是二项式排列组合的展开式 第n行为: C n 0 , C n 1 , C n 2 , … , C n n C_{n}^{0}, C_{n}^{1}, C_{n}^{2}, \dots, C_{n}^{n} Cn0,Cn1,Cn2,……...
机器学习-K近邻算法
文章目录 一. 数据集介绍Iris plants dataset 二. 代码三. k值的选择 一. 数据集介绍 鸢尾花数据集 鸢尾花Iris Dataset数据集是机器学习领域经典数据集,鸢尾花数据集包含了150条鸢尾花信息,每50条取自三个鸢尾花中之一:Versicolour、Setosa…...
设计模式Python版 原型模式
文章目录 前言一、原型模式二、原型模式示例三、原型管理器 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式:关注类和对…...
centos安装mysql
下面的方法不行,最后还是通过我自己的博客中的 https://blog.csdn.net/qq_21237549/article/details/133759503 CentOS 安装MySQL 详细教程 安装成功的 通过网盘分享的文件:服务器部署 链接: https://pan.baidu.com/s/12QwjIMgwHcwVeVoal-BKrg 提取码:…...
java 判断Date是上午还是下午
我要用Java生成表格统计信息,如下图所示: 所以就诞生了本文的内容。 在 Java 里,判断 Date 对象代表的时间是上午还是下午有多种方式,下面为你详细介绍不同的实现方法。 方式一:使用 java.util.Calendar Calendar 类…...
Jenkins安装部署(以及常见报错解决方案),jdk版本控制器sdkman
目录 零、环境介绍 一、Jenkins安装 1、插件安装以及更换插件源 2、修改jenkins时区 二、sdkman安装(可选) 1、sdkman常用方法 2、sdkman常用方法演示 2.1、查看可用的jdk 2.2、下载jdk并切换版本 三、jenkins报错解决 1、下载sdkman后systemc…...
【Linux】gdb——Linux调试器
gdb使用背景 程序的发布方式有两种,debug模式和release模式 Linux gcc/g出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项 gdb使用方法 首先进入gdb gdb test_glist显示代码 断点 b 行…...
978.最长湍流子数组
目录 题目过程解法收获 题目 给定一个整数数组 arr ,返回 arr 的 最大湍流子数组的长度 。 如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是 湍流子数组 。 更正式地来说,当 arr 的子数组 A[i], A[i1], …, A[j] 满足仅满足…...
LLM - 大模型 ScallingLaws 的指导模型设计与实验环境(PLM) 教程(4)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145323420 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scaling Laws (缩放法则) 是大模型领域中,用于描述 模型性能(Loss) 与…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.19 排序革命:argsort的十大高阶用法
1.19 排序革命:argsort的十大高阶用法 目录 #mermaid-svg-Qu8PcmLkIc1pOQJ7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Qu8PcmLkIc1pOQJ7 .error-icon{fill:#552222;}#mermaid-svg-Qu8PcmLkIc1pOQJ…...
记忆力训练day07
逻辑分类联想记忆法 一 课程目标 (1)掌握如何分类信息 (2)掌握如何运用逻辑分类方法进行记忆 小试牛刀: 核心的内容: 文字逻辑分类记忆:把文字分类后转换成画面连接记忆。 玫瑰 大树 太阳…...
RK3588平台开发系列讲解(ARM篇)ARM64底层中断处理
文章目录 一、异常级别二、异常分类2.1、同步异常2.2、异步异常三、中断向量表沉淀、分享、成长,让自己和他人都能有所收获!😄 一、异常级别 ARM64处理器确实定义了4个异常级别(Exception Levels, EL),分别是EL0到EL3。这些级别用于管理处理器的特权级别和权限,级别越高…...
算法1-1 模拟与高精度
目录 一 阶乘数码 二 麦森数 三 模拟题 一 阶乘数码 本题中n<1000,1000的阶乘为以下这么大,远超long的范围 402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901…...
(四)线程 和 进程 及相关知识点
目录 一、线程和进程 (1)进程 (2)线程 (3)区别 二、串行、并发、并行 (1)串行 (2)并行 (3)并发 三、爬虫中的线程和进程 &am…...
Tensor 基本操作2 理解 tensor.max 操作,沿着给定的 dim 是什么意思 | PyTorch 深度学习实战
前一篇文章,Tensor 基本操作1 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 目录 Tensor 基本操作torch.max默认指定维度 Tensor 基本操作 torch.max torch.max 实现降维运算,基于指定的 d…...
[牛客]公交线路(dijkstra+链式前向星)
登录—专业IT笔试面试备考平台_牛客网 #include<bits/stdc.h> using namespace std; #define endl \n typedef long long ll; const int N1e65,M1e85; int cnt0,head[N]; int n,m,s,t; struct node {int v,w,next; }edge[M]; void addedge(int u,int v,int w) {cnt;edge…...
面试被问的一些问题汇总(持续更新)
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
RocketMQ原理—5.高可用+高并发+高性能架构
大纲 1.RocketMQ的整体架构与运行流程 2.基于NameServer管理Broker集群的架构 3.Broker集群的主从复制架构 4.基于Topic和Queue实现的数据分片架构 5.Broker基于Pull模式的主从复制原理 6.Broker层面到底如何做到数据0丢失 7.数据0丢失与写入高并发的取舍 8.RocketMQ读…...
适配器模式——C++实现
目录 1. 适配器模式简介 2. 角色组成 3. 代码示例 4. 适配器模式、装饰器模式、外观模式的辨析 1. 适配器模式简介 适配器模式是一种结构型模式。 适配器模式的定义:适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不可兼容…...
C语言自定义数据类型详解(一)——结构体类型(上)
什么是自定义数据类型呢?顾名思义,就是我们用户自己定义和设置的类型。 在C语言中,我们的自定义数据类型一共有三种,它们分别是:结构体(struct),枚举(enum),联合(union)。接下来,我…...
C语言基础4
sizeof和strlen的区别 ①sizeof是运算符而strlen是函数 ②sizeof可以用类型做参数,strlen只能用char*做参数 ③数组做sizeof参数不退化,而传递给strlen则退化成指针 ④strlen结果是运行时候才能计算出来,而且计算出来的是字符串的长度不是内…...
【Elasticsearch】Elasticsearch的查询
Elasticsearch的查询 DSL查询基础语句叶子查询全文检索查询matchmulti_match 精确查询termrange 复合查询算分函数查询bool查询 排序分页基础分页深度分页 高亮高亮原理实现高亮 RestClient查询基础查询叶子查询复合查询排序和分页高亮 数据聚合DSL实现聚合Bucket聚合带条件聚合…...
第 5 章:声音与音乐系统
5.1 声音效果的应用 在游戏中,声音效果是增强游戏沉浸感和趣味性的重要元素。Pygame 提供了强大的音频处理功能,使得添加各种声音效果变得相对简单。声音效果可以包括角色的动作音效,如跳跃、攻击、受伤时的声音;环境音效&#x…...
第十四讲 JDBC数据库
1. 什么是JDBC JDBC(Java Database Connectivity,Java数据库连接),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系型数据库,并使用SQL语句来完成对数据库中数据的查询、新增、更新和删除等操作…...
2024年除夕
多少年前的除夕,一如今天这样的除夕;多少年后的除夕,也一如多少年前的除夕。 无数个这样的除夕下午,我打开电脑,望着窗外安静的小区,车声渐渐稀疏的马路,想写下一些新的感受时,多少…...
虚幻基础07:蓝图接口
能帮到你的话,就给个赞吧 😘 文章目录 作用原理事件函数 作用 实现对象间的通知。 A 通知 B 做什么。 原理 将接口抽象为蓝图,使得任意蓝图都能直接访问。 只需要再传入对象地址,就能执行对象的功能。 事件 黄色:…...
7. 马科维茨资产组合模型+金融研报AI长文本智能体(Qwen-Long)增强方案(理论+Python实战)
目录 0. 承前1. 深度金融研报准备2. 核心AI函数代码讲解2.1 函数概述2.2 输入参数2.3 主要流程2.4 异常处理2.5 清理工作2.7 get_ai_weights函数汇总 3. 汇总代码4. 反思4.1 不足之处4.2 提升思路 5. 启后 0. 承前 本篇博文是对前两篇文章,链接: 5. 马科维茨资产组…...
如何在本地部署deepseek r1模型?
DeepSeek(深度求索)正式发布了其最新推理模型DeepSeek-R1,引发业界广泛关注。这款模型不仅在性能上与OpenAI的GPT-4相媲美,更以其开源策略和创新的训练方法,为AI发展带来了新的可能性。DeepSeek-R1 在后训练阶段大规模…...
HarmonyOS:状态管理最佳实践
一、概述 在声明式UI编程范式中,UI是应用程序状态的函数,应用程序状态的修改会更新相应的UI界面。ArkUI采用了MVVM模式,其中ViewModel将数据与视图绑定在一起,更新数据的时候直接更新视图。如下图所示: ArkUI的MVVM模式…...
当AI风暴来袭:中美科技商业版图的迥异走向
当AI风暴来袭:中美科技商业版图的迥异走向 美国科技巨头的 AI 豪赌:Stargate 公司的诞生 2025 年,科技界被一则重磅消息所震动:软银、NVIDIA、Oracle 与 OpenAI 共同组建了 Stargate 公司。这一合作堪称豪华阵容,软银作为全球知名的投资巨头,拥有雄厚的资金实力和广泛的…...
马尔科夫模型和隐马尔科夫模型区别
我用一个天气预报和海藻湿度观测的比喻来解释,保证你秒懂! 1. 马尔可夫模型(Markov Model, MM) 特点:状态直接可见 场景:天气预报(晴天→雨天→阴天…)核心假设: 下一个…...
面向对象设计原则 - SOLID原则 (基于C++)
SOLID 是面向对象编程中的一组五个设计原则,这些原则旨在帮助开发者创建更灵活、可维护和可扩展的软件系统。它们最初由 Robert C. Martin 提出,并在 2000 年左右被广泛接受。每个字母代表一个不同的原则: 单一职责原则 (Single Responsibil…...
ChatGPT 搜索测试整合记忆功能
据 TestingCatalog 报道,OpenAI 正在测试 ChatGPT 搜索的整合记忆功能,被命名为 “Memory in search”2。以下是关于该功能的具体情况123: 功能特点 个性化搜索:启用该功能后,ChatGPT 能利用存储的记忆数据࿰…...
PWM频率测量方法
测量PWM(脉宽调制)信号的频率是嵌入式系统中的常见需求,尤其是在电机控制、LED调光、传感器信号处理等场景中。 在这里介绍两种测量PWM频率的方法:测频法与测周法。 1、测频(率)法 原理:在闸门…...
【B站保姆级视频教程:Jetson配置YOLOv11环境(一)镜像下载与烧录】
b站同步视频教程:https://www.bilibili.com/video/BV11r6oYkEFb/ 一、引言 在人工智能与计算机视觉快速发展的当下,Jetson系列开发板凭借强大的性能,成为众多开发者进行深度学习项目的热门选择。YOLOv11作为目标检测领域的先进算法…...
使用QSqlQueryModel创建交替背景色的表格模型
class UserModel(QSqlQueryModel):def __init__(self):super().__init__()self._query "SELECT name, age FROM users"self.refresh()def refresh(self):self.setQuery(self._query)# 重新定义data()方法def data(self, index, role): if role Qt.BackgroundRole…...
计算机网络__基础知识问答
Question: 1)在计算机网络的5层结构中,每一层的功能大概是什么? 2)交换机的功能?https://www.bilibili.com/video/BV1na4y1L7Ev 3)路由器的功能?https://www.bilibili.com/video/BV1hv411k7n…...
C语言数组详解:从基础到进阶的全面解析
在C语言中,数组是一种基本的数据结构,用于存储多个相同类型的数据。数组的引入使得C语言能够高效地存储和操作大量数据。在任何一个C语言程序中,数组都发挥着极其重要的作用。无论是在算法实现、数据存储、还是在复杂程序的设计中,…...
微前端架构在前端开发中的实践与挑战
随着单页面应用(SPA)和前端框架如 React、Vue、Angular 的快速发展,现代前端应用的复杂度日益提升。尤其是当应用规模逐渐增大时,单一的代码库往往难以应对不同团队的协作和版本管理问题。为了应对这一挑战,微前端架构…...
国内flutter环境部署(记录篇)
设置系统环境变量 export PUB_HOSTED_URLhttps://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cn使用以下命令下载flutter镜像 git clone -b stable https://mirror.ghproxy.com/https://github.com/<github仓库地址>#例如flutter仓…...
Julia DataFrames.jl:深入理解和使用
随着数据科学和机器学习的发展,数据框架广泛应用于数据处理与分析工作中。在 Julia 语言中,DataFrames.jl 是一个强大且灵活的数据框库,为数据操作提供了丰富的功能。本文旨在系统地介绍 DataFrames.jl 的基础概念、使用方法、常见实践和最佳…...