自动驾驶行业大浪淘沙的背后:头部公司商业化拐点率先来临

智能汽车设计 2023-09-25 08:02


文|李奥


经历了一段寒冬和洗牌期,中国自动驾驶行业走过了技术拐点,头部企业正加速驶出弯道。自动驾驶行业的头部公司已从上半场的技术路线竞争,转向下半场的商业化落地。


在乘用车领域,L2+智能驾驶能力在快速量产上车,从2022年开始高架/高速智能驾驶不再是稀罕物,2023年的城区智能驾驶成为众多车企的核心卖点和技术较量关键。上述智能化较量的背后是各家车企自动驾驶方案供应商之间的比拼。


经过早前的技术洗礼,目前自动驾驶行业头部公司开始呈现集聚效应,越头部的公司,越受到市场青睐,落地项目越多。这些公司依托软硬件融合的强实力,纷纷将智能驾驶技术量产,并在多个场景中寻求商业突破,扩大自身商业前景。


这个商业前景既是主机厂对提升自身竞争力,依托智能化在存量市场做增量的需求;也是消费者对智能化产品、智能化生活的向往。


例如受国内外车企青睐,并展开多个项目深度合作的Momenta,不仅具备了L4自动驾驶的前沿技术储备,同时率先切入L2.5智能驾驶应用场景,为国内外多家公司的智能驾驶产品高效落地提供了解决方案。


当下城市智能驾驶成为智能电动汽车赛道的新热点,头部公司都在积极准备今年落点。智己汽车宣称,10月开启城市NOA公测,并和Momenta一起在未来3-5年加速包括去高精地图智能驾驶等智驾产品。


技术带来的快速变革和应用,让Momenta成功入选了《财富》2023年中国最具社会影响力的创业公司榜单。


接下来伴随着行业蝶变,当下只有技术硬,商业化快的头部公司才能进入智能汽车比赛的下一轮,引领技术变革。


01. 政策推动智能车加速

智慧城市是未来社会的重要发展方向,其中自动驾驶是必不可少的应用。近年来汽车行业的智能化技术变革和各方政策的有力推动,使得自动驾驶公司如雨后春笋般显现。


七年前,智能电动汽车的概念开始弥漫整个汽车行业,“算力替代马力”“软件定义汽车”成为汽车行业转型的故事主线,自动驾驶技术成为下一代汽车的技术制高点。


2016年到2017年初,一批专研智能驾驶的公司集中涌现,如小马智行、文远知行、AutoX,还有滴滴自动驾驶团队等。Momenta也是其中之一。


这些顶着中国自动驾驶希望的“新星”企业,甫一成立便成为了资本宠儿,吸引着投资方的滚滚热钱,人人都希望投出一个自动驾驶隐形冠军。


Momenta在2016年成立之初就迅速拿到了第一笔融资。截至目前,Momenta获得了7轮以上的融资,上汽集团、通用汽车、梅赛德斯-奔驰、丰田和博世等行业巨擘都是战略投资方。累计募集了约13亿美元的资金。


图源:Momenta官方


资本之所以看重并投资头部的自动驾驶创业公司,一方面是自身技术转型的需求,另一方面看到了重要市场的政策对自动驾驶长期发展的有力支撑。


自21世纪初开始,美国就大力推动自动驾驶发展,国防部高级研究计划局(DARPA)支持推动自动驾驶汽车长距离比赛拉开了自动驾驶开发序幕,并培育了全球第一家自动驾驶路测公司——Google X。


此后,美国联邦政府发布了《联邦自动驾驶汽车政策指南》、《自动驾驶汽车立法大纲》、《智能交通系统战略规划2020-2025》、以及《自动驾驶汽车综合计划》等。这些政策不仅为自动驾驶的规范制定提供指导,更重要的是鼓励技术创新。


在政策支持下,Waymo在凤凰城和旧金山先后推出了无人驾驶出租车,美国另一家自动驾驶头部公司Cruise也在旧金山获准面向公众提供无人出租车服务。


中国作为智能电动汽车的最重要市场,也表现了后发优势。中国政府先后通过《智能汽车创新发展战略》、《新能源汽车产业发展规划(2021-2025年)》、《智能网联汽车的道路测试与示范应用规范(试行)》、《关于开展智能网联汽车准入和上路通信试点工作的通知》等一系列政策促进自动驾驶产业健康快速发展,并通过规划和指导,进一步推进自动驾驶发展。


这些政策让中国自动驾驶行业尤其是头部创业公司能够小步快跑,在短时间内赶上美国先行者们,并在智能汽车应用上取得了长足的领先。根据高工智能汽车研究院监测数据显示,中国市场高阶智能驾驶搭载率超过30%。


02. 谁是智能驾驶落地之王

中国企业在智能驾驶上的领先性,让全球传统车企赞叹,他们开始在中国寻觅强有力的合作对象。最热的莫过于近期大众汽车集团与中国车企的深度合作。大众汽车品牌与小鹏汽车达成战略技术合作,在车型平台、智能座舱以及高阶辅助驾驶系统软件方面共同开发。奥迪品牌与上汽集团签署战略备忘录,进一步深化现有合作,双方将通过共同开发高端市场智能网联电动车产品组合。


合作的背后是传统车企对智能化落地的急切,以及对中国先进科技企业的看重。毕竟随着汽车行业的内卷加剧,智能化能力被提到了一个新的高度。2022年各家还在比拼高速辅助驾驶,2023年已经开始比拼城市辅助驾驶。


这种内卷让智能驾驶快速落地成为当下最优先任务。换而言之,谁能帮助传统车企快速落地,谁是智能驾驶落地之王,谁就是智能汽车背后的隐藏冠军。


在Momenta、小马智行、文远知行、AutoX等为代表的自动驾驶第一梯队中,各家需要展现自己广泛的朋友圈以及强大的落地能力,才能称得上隐藏冠军。


从朋友圈来看,Momenta先后获得了上汽集团、通用汽车、梅赛德斯-奔驰、丰田和博世等战略投资,融资金额13亿美元,跃升成为自动驾驶独角兽。在获得战略投资的同时,Momenta还收获了深入合作机会,在全球市场与主机厂共同推动智能驾驶量产落地。


首先是Robotaxi(无人驾驶出租车)项目的落地。Momenta和上汽集团移动出行战略品牌享道出行达成合作,推动Robotaxi落地应用。


2021年12月起,享道Robotaxi在上海嘉定、苏州高铁新城两个城区开展了运营。运营初期正值冬春交替,天气复杂多变,外加运营路段中频遇多辆电动车横穿逆行、狭窄小路大量人车混行、多辆异型车并行等复杂场景,十分考验Robotaxi的技术能力。


根据百日运营报告,享道Robotaxi乘坐体验广受好评,用户满意度高达98%,有80%的用户乘坐了两次以上,最多用户乘坐了52次。“稳如老司机、安全平稳舒适、驾驶丝滑顺畅”的评价频频。


良好的运营体验,证明了相关技术能力得可靠。这种可靠性,Momenta和享道Robotaxi获得了比测试运营牌照含金量更高的首批智能网联汽车示范运营牌照。


Robotaxi的落地代表了技术可靠性的体现,和主机厂的智能驾驶量产落地则代表了另一种技术认可性和商业前景。


以Momenta和智己汽车的合作为例。成立于2020年的智己汽车,相较于当时已经发展6年左右的其他新造车势力来说,必须努力赶进度才能跟上发展。


智己汽车选择了Momenta作为智能驾驶合作伙伴,依托Momenta算法能力,共同开发IM AD智驾系统,发布了行业首个D.L.P.人工智能模型,率先将数据驱动的规划算法应用于量产项目。


智己汽车介绍,在中国道路上,IM AD碰撞事故仅 0.6次/百万公里,远低于人类驾驶1.9次/百万公里;性能体验方面,IM AD的安全接管次数仅为0.36次/千公里,泊车成功率97%,车位识别率高达99.4%。(注:数据来源816清华论坛)


近期,智己携手Momenta技术能力共同打造的城市领航辅助功能将在10月开启公测,和头部企业一同进入城市NOA时代。这背后是交付效率的快速提升,据悉2022年Momenta的交付效率比2021年提升了3-5倍,2023年将再翻一倍。


智己汽车联席CEO刘涛感慨,运用了正确的学习方法和解题思路,让智己汽车用2年时间走完了头部玩家9年的智驾路。


除国内企业外,海外巨头也在运用中国解决方案。通用汽车近期在上海开展了自动驾驶道路测试,Momenta提供AI 技术支持。据悉,下一代通用的量产车型,也将搭载Momenta的智能驾驶方案。


行业人士透露,目前仍有大量量产项目处于开发阶段,会在2023至2024年密集推出市场,届时Momenta将成为高阶智能驾驶量产项目最多的自动驾驶供应商。


Momenta创始人曹旭东认为, 2023年会是智能驾驶落地的拐点,也是技术升级的引爆点。更多的量产智能驾驶落地,将驱动行业加速实现规模化无人驾驶。


03. 落地为先靠什么

每家车企都在为智能驾驶快速上车而努力,落地为先已经被提升到新高度。隐藏于车企背后的自动驾驶公司也开始了新的比拼。


自动驾驶行业第一梯队现在面临两大挑战,如何不断建设L4以上的自动驾驶能力,如何保证智能驾驶全场景落地。


从目前技术发展来看,90%场景的自动驾驶问题已经得到了解决,剩下10%的场景问题如果得不到很好的解决,那就会影响市场信心,从而影响商业化。谁能解决更多长尾问题,谁能更好落地,谁才是掌握未来话语权的人。


按照过往常见的规则驱动算法框架来看,一个场景解决一个问题,使得单一场景实现成本高,落地效率低。


对此,Momenta认为用量产数据驱动自动驾驶技术,打造“一个飞轮,两条腿 “的核心技术与产品战略,可以成为自动驾驶公司的发展样本。


“飞轮”由数据驱动(Data-Driven)、海量数据(Massive data)以及闭环自动化(CLA)三要素组成,相互作用并高效规模化的实现算法迭代,经过数年时间的成长,已经发展为经过实践检验的、可迅速量产上车的一套技术能力。


“两条腿”中的“右腿”代表完全无人驾驶MSD(Momenta Self Driving),致力于打造L4级别完全无人驾驶技术,并反馈给量产产品技术流;“左腿”则是量产自动驾驶Mpilot,致力于提供领先行业的端到端自动驾驶解决方案,并输出源源不断的数据流。


图源:Momenta官方


可见,数据飞轮背后强调用L2的海量数据来训练L4,再通过L4技术拉动L2高级进阶。通过使用量产硬件配置,让L2和L4 的数据流和技术流实现打通。


为了实现“一个飞轮两条腿”的战略,Momenta统一了L2和L4的软件框架和算法功能框架,让两条腿的技术流和数据流互相打通,高效运转。Momenta还面向量产,打造了一套自动化工具和标准流程,让研发主线能够快速适配到不同OEM不同车型的量产项目上。


此外,Momenta还开发了一套标准的自动软件硬件开发套件,实现传感器适配与算法研发解耦,快速适配不同车型,大大缩短了量产交付周期。这些研发开发流程和工具链,是Momenta在大量量产项目中沉淀打磨出来秘密武器,也是其能够得到多家主机厂高度认可,高效交付多个量产项目的底气所在。


随着量产车型的上市,海量数据开始回流,目前自动标注比例已经超过95%,基于深度学习的规控模型数据产线每天也可以产出超过1000万公里的数据量。


例如,针对自动驾驶在极端天气、极限工况等低频场景的长尾问题,通过量产车车端针对性配置筛选器回流数据,构建评测集,可以大幅加速算法飞轮迭代。针对新功能的测试,也可以通过部署量产车端影子模式,回流高价值数据,离线迭代验证充分后,再把功能释放给用户,充分保证了软件交付质量和用户的体验。这些海量数据的收集和处理,极大提升了Momenta产品体验的进步速度。此外,通过海量数据还能自动学习人的驾驶习惯,避免急刹、重刹等问题,提升出行舒适感。


从近期笔者的体验来看,搭载Momenta方案的智己LS7,在进入匝道时会自动降低车速,汇流时更果断。在高架上过大曲率弯时,会贴近内侧确保安全行驶。遇到大货车会精准识别,并主动避让。同时,随着数据量增加,上述体验也在不断优化和迭代,不断模拟老司机驾驶体验。


上述算法和硬件的解耦的方式带来好处之一就是使得整体方案的通用性增强,人效比大大增强。


自动驾驶供应商人效比的提高对于车企来说,就是市场竞争力的提升。当下中国汽车行业内卷加剧,燃油车掀起了价格战,新能源车跟进。对于研发、材料等成本较高的车企来说,如何降本增效是紧迫任务。


此外,对通过智能化来提升产品竞争力,争夺存量市场的需求越来越迫切。从高速智能驾驶落地再到城市智能驾驶落地,仅仅过去了一年时间,背后不仅是技术的蝶变,更是市场竞争白热化下的必要之举。


上述竞争类似多年前的动力电池竞争,会产生大浪淘沙效应,没有核心竞争力,没有足够商业化项目的公司将会被淘汰;同时,这种竞争最后必将卷出具有核心竞争力的巨头和冠军。


END 

智能汽车设计 关注智能汽车发展,分享智能汽车知识!
评论 (0)
  • 托马斯微积分第十版中文
    电子书为扫描版本,自己手动添加书签作为目录供参考
  • RadarSensors_ARS308-21_cn数据手册
    RadarSensors_ARS308-21_cn数据手册
  • XPM52C规格书 65W USB PD 多协议降压芯片
    XPM52C 是一款集成同步开关的降压转换器,支持多种输出快充协议、支持 USB Type-C 和 PD 等多种快充协议,包括 USB Type-C 和 PD 协议,高通 QC2.0/3.0/3.0+,华 为 FCP/SCP/HVSCP,VOOC 2.0/4.0 协议,联发科 PE,三星 AFC,USB BC1.2 DCP 以及 Apple 2.4A 充电规范,为车载充电器、各种快充适配器、智能排插等供电设备提供完 整的解决方案。
  • 12、如何挑选立式磁棒电感厂家
    12、如何挑选立式磁棒电感厂家
  • 基于单片机的TFT-LCD液晶显示控制芯片选型表
    基于单片机的TFT-LCD液晶显示控制芯片选型表
  • 首个基于Transformer的分割检测+视觉大模型视频课程(附源码+课件)
    众所周知,视觉系统对于理解和推理视觉场景的组成特性至关重要。这个领域的挑战在于对象之间的复杂关系、位置、歧义、以及现实环境中的变化等。作为人类,我们可以很轻松地借助各种模态,包括但不仅限于视觉、语言、声音等来理解和感知这个世界。现如今,随着 Transformer 等关键技术的提出,以往看似独立的各个方向也逐渐紧密地联结到一起,组成了“多模态”的概念。

    多功能
    通过引入灵活的提示引擎,包括点、框、涂鸦 (scribbles)、掩模、文本和另一幅图像的相关区域,实现多功能性;
    可组合
    通过学习联合视觉-语义空间,为视觉和文本提示组合实时查询,实现组合性,如图1所示;
    可交互
    通过结合可学习的记忆提示进行交互,实现通过掩模 引导的交叉注意力保留对话历史信息;
    语义感知
    通过使用文本编码器对文本查询和掩模标签进行编码,实现面向开放词汇分割的语义感知。

    超大规模视觉通用感知模型由超大规模图像、文本主干网络以及多任务兼容解码网络组成,它基于海量的图像和文本数据构成的大规模数据集进行预训练,用于处理多个不同的图像、图像-文本任务。此外,借助知识迁移技术能够实现业务侧小模型部署。

    超大规模视觉通用感知模型面临的挑战:
    (1)网络参数量庞大,通常超十亿参数,训练稳定性、收敛性、过拟合等问题相较于小网络挑战大很多。
    (2)原始数据集包含数十亿异质低质量图片与海量文本,多步训练以利用异质的多模态多任务数据,流程复杂,存在灾难性遗忘,难以定位精度等问题。
    (3)实验成本高,通常需要上千块GPU并行训练数周,需要研究者有敏锐的分析能力和扎实的知识基础。
    (4)工程挑战多,海量数据的吞吐,大型GPU集群上的并行算法,超大参数量模型的内存管理。

    提示工程
    大多数视觉数据集由图像和相应文本标签组成,为了利用视觉语言模型处理视觉数据集,一些工作已经利用了基于模版的提示工程,
    text_descriptions = [f"This is a photo of a {label}" for label in cifar100.classes]  
    text_tokens = clip.tokenize(text_descriptions).cuda()

    除了此类大型视觉语言基础模型外,一些研究工作也致力于开发可以通过视觉输入提示的大型基础模型。例如,最近 META 推出的 SAM 能够执行与类别无关的分割,给定图像和视觉提示(如框、点或蒙版),指定要在图像中分割的内容。这样的模型可以轻松适应特定的下游任务,如医学图像分割、视频对象分割、机器人技术和遥感等

    从模型训练、模型分发、模型商业化,美图体系化地同创作者和开发者共建模型生态:

    (1)模型训练:提供二次训练能力,并持续不断地为创作者提供服务,包括培训、社区和模型创作大赛。

    (2)模型分发:创作者和开发者共建的模型可以在美图的产品内进行分发,在分发过程中持续优化模型。

    (3)模型商业化:行业客户可通过 MiracleVision 的 API 和 SDK 进行商业使用,创作者和开发者通过商业合作获得经济收益。
    通用视觉-语言学习的基础模型
    UNITER:结合了生成(例如掩码语言建模和掩码区域建模)和对比(例如图像文本匹配和单词区域对齐)目标的方法,适用于异构的视觉-语言任务。
    Pixel2Seqv2:将四个核心视觉任务统一为像素到序列的接口,使用编码器-解码器架构进行训练。
    Vision-Language:使用像 BART 或 T5 等预训练的编码器-解码器语言模型来学习不同的计算机视觉任务。
    模型整体结构上,抛弃了CNN,将 BERT 原版的 Transformer 开箱即用地迁移到分类任务上面,在使用大规模训练集的进行训练时,取得了极好的效果。
    同时,在大规模数据集上预训练好的模型,在迁移到中等数据集或小数据集的分类任务上以后,也能取得比CNN更优的性能。
    模型整体结构如下图所示,完全使用原始 BERT 的 Transformer 结构,主要是对图片转换成类似 token 的处理,原文引入了一个 patch 的概念,首先把图像划分为一个个的 patch,然后将 patch 映射成一个 embedding,即图中的 linear projection 层,将输入转换为类似 BERT 的输入结构,然后加上 position embedding,这里的 position 是1D的,最后加上一个learnable classification token 放在序列的前面,classification由 MLP 完成。

    这里我们用 RAM 提取了图像的语义标签,再通过将标签输入到 Grounding-DINO 中进行开放世界检测,最后再通过将检测作为 SAM 的提示分割一切。目前视觉基础大模型可以粗略的归为三类:
    textually prompted models, e.g., contrastive, generative, hybrid, and conversational;
    visually prompted models, e.g., SAM, SegGPT;
    heterogeneous modalities-based models, e.g., ImageBind, Valley.

    CoCa 通过将所有标签简单地视为文本,对 web-scale alt-text 和 annotated images 进行了从头开始端到端的预训练,无缝地统一了表示学习的自然 语言 监督。因此,CoCa 在广泛的下游任务上实现了最先进的性能,零样本传输或最小的任务特定适应, 跨越视觉识别(ImageNet,Kinetics-400/600/700,Moments-in-Time )、跨模式检索(MSCOCO、Flickr30K、MSR-VTT)、 多模式理解(VQA、SNLI-VE、NLVR2)和图像字幕(MSCOCO、NoCaps)。在 ImageNet 分类中,CoCa 获得了 86.3% 的 zero-shot top-1 准确率, frozen encoder and finetune classifier 是 90.6%,finetune encoder 可以到 91.0%。

    截止目前国内外已经发布了许多包括 NLP, CV 和 多模态在内的大规模模型,但是这些模型在应用落地上还是有待进一步探究的,目前应用落地较好的有华为 的盘古,在电网和金融圈都有应用;智源的悟道系列在诗词图文上都有广泛应用,可以帮助学生看图写作,根据文字生成插图等;百度的文心也发布了在金融方 面的应用。但截止目前为止大模型在实际中的应用还不是很理想,大模型发展的初衷是使用一个预训练好的大模型代替一堆小作坊似的根据不同任务训练的小模 型,通过模型蒸馏知识迁移等技术在小模型上使用少量数据集达到超过原来小模型性能的目标。CV 大模型在应用上的一个难点是与实际应用相结合,目前社会中 用的较多的视觉相关的深度学习模型主要包括物体检测,人脸识别以及缺陷检测(部分)相比 NLP 模型在实际中的使用少很多,因此将 CV 模型与实际生产相 结合发现更多的应用场景很关键。另外一个 CV 大模型应用的难点就是如何快速高效的使用蒸馏和知识迁移技术提升下游任务的性能,这两点难题的解决在 CV 大模型的实际应用中都刻不容缓。

    总结起来,将大模型应用于更高分辨率的下游视觉任务具有以下好处:提高感知能力、改善定位精度、提升语义理解、改善细节保留和边缘清晰度、增加鲁棒性和泛化能力,以及推动研究进展。这些好处使得大模型在处理高分辨率图像时能够获得更准确、更细致和更真实的结果。随着深度学习和计算资源的不断发展,我们可以期待更先进的大模型和相关技术的出现,进一步推动计算机视觉在高分辨率图像任务中的应用和突破

  • 13、如何解决直插差模电感的异响问题
    13、如何解决直插差模电感的异响问题
  • RadarSensors_ARS408-21_cn数据手册
    RadarSensors_ARS408-21_cn数据手册
  • [完结19章]SpringBoot开发双11商品服务系统教程下载
    如何使用SpringBoot开发一款关于双11商品服务的系统?今天就给大家说道说道,希望对大家的学习有所帮助!
    1.什么是SpringBoot?
    Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发的。
    Spring Boot是由Pivotal团队提供的基于Spring的框架,该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot集成了绝大部分目前流行的开发框架,就像Maven集成了所有的JAR包一样,Spring Boot集成了几乎所有的框架,使得开发者能快速搭建Spring项目。
    2.SpringBoot的优点
    快速集成框架,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。
    内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。
    快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
    可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。
    ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况

    后端配置
    1.1创建Springboot工程
    打开idea->file->new->project
    选择spring Initializer进行配置,java版本选择8,点击next
    - internal 应用代码
        - controllers 控制器模块
          - admin 后端控制器
          - front 前端控制器
        - listen redis监听器
        - models 模型模块
        - service 服务模块
          - product_serive 商品服务
          - wechat_menu_serive 微信公众号菜单服务
          ......
    - conf 公共配置
      -config.yml yml配置文件
      -config.go 配置解析,转化成对应的结构体
      
    - middleware 中间件
        - AuthCheck.go  jwt接口权限校验
    - cors.go 跨域处理
    ......
    - pkg 程序应用包
      - app
      - base
      - casbin
      - jwt
      - qrcode
      - wechat
      .....
    - routere 路由
    - logs 日志存放
    - runtime 资源目录
    首先,我仔细分析了需求,并且根据业务逻辑设计了合适的接口。
    对于多表关联查询,我使用了MyBatis的注解来编写SQL语句,并通过@One和@Many等注解来实现结果集的映射。
    对于数据分页,我使用了MyBatis-Plus提供的Page对象,并结合相关方法来实现数据分页查询。
    2. 上课中的优秀项目
    在课堂上,我完成了一个优秀的项目,主要是学生实体类的增删改查功能。通过这个项目,我巩固了对Spring Boot框架的理解和掌握。
    具体实现如下:
    //初始化redis
    err := cache.InitRedis(cache.DefaultRedisClient, &redis.Options{
    Addr:        global.CONFIG.Redis.Host,
    Password:    global.CONFIG.Redis.Password,
    IdleTimeout: global.CONFIG.Redis.IdleTimeout,
    }, nil)
    if err != nil {
    if err != nil {
    global.LOG.Error("InitRedis error ", err, "client", cache.DefaultRedisClient)
    panic(err)
    }
    panic(err)
    }

    //初始化mysql
    err = db.InitMysqlClient(db.DefaultClient, global.CONFIG.Database.User,
    global.CONFIG.Database.Password, global.CONFIG.Database.Host,
    global.CONFIG.Database.Name)
    if err != nil {
    global.LOG.Error("InitMysqlClient error ", err, "client", db.DefaultClient)
    panic(err)
    }
    global.Db = db.GetMysqlClient(db.DefaultClient).DB

    开发步骤
    SpringBoot 开发起来特别简单,分为如下几步:
    创建新模块,选择Spring初始化,并配置模块相关基础信息
    选择当前模块需要使用的技术集
    开发控制器类
    运行自动生成的Application类
    知道了 SpringBoot 的开发步骤后,接下来我们进行具体的操作
    shutdown.NewHook().Close(
    //关闭http server
    func() {
    ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
    defer cancel()
    if err := server.Shutdown(ctx); err != nil {
    logging.Error("http server shutdown err", err)
    }
    },

    func() {
    //关闭kafka producer(特别是异步生产者,强制关闭会导致丢消息)
    if err := mq.GetKafkaSyncProducer(mq.DefaultKafkaSyncProducer).Close(); err != nil {
    logging.Error("kafka shutdown err", err)
    }
    },
    func() {
    //关闭mysql
    if err := db.CloseMysqlClient(db.DefaultClient); err != nil {
    logging.Error("mysql shutdown err", err)
    }
    },
    func() {
    //关闭redis
    if err := cache.GetRedisClient(cache.DefaultRedisClient).Close(); err != nil {
    logging.Error("redis shutdown err", err)
    }
    },
    )
    //也可以自己实现优雅关闭
    //signals := make(chan os.Signal, 0)
    //signal.Notify(signals, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT)
    //s := <-signals
    //global.LOG.Warn("shop receive system signal:", s)
    //ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
    //defer cancel()
    //err := server.Shutdown(ctx)
    //if err != nil {
    // global.LOG.Error("http server error", err)
    //}
    //mq.GetKafkaSyncProducer(mq.DefaultKafkaSyncProducer).Close()

    选择 Spring Initializr ,用来创建 SpringBoot 工程
    以前我们选择的是 Maven ,今天选择 Spring Initializr 来快速构建 SpringBoot 工程。而在 Module SDK 这一项选择我们安装的 JDK 版本。
    type StoreProduct struct {
    Image        string         `json:"image" valid:"Required;"`
    SliderImage  string         `json:"slider_image" valid:"Required;"`
    StoreName    string         `json:"store_name" valid:"Required;"`
    StoreInfo    string         `json:"store_info" valid:"Required;"`
    Keyword      string         `json:"keyword" valid:"Required;"`
    CateId       int            `json:"cate_id" valid:"Required;"`
    ProductCate  *StoreCategory `json:"product_cate" gorm:"foreignKey:CateId;association_autoupdate:false;association_autocreate:false"`
    Price        float64        `json:"price" valid:"Required;"`
    VipPrice     float64        `json:"vip_price" valid:"Required;"`
    OtPrice      float64        `json:"ot_price" valid:"Required;"`
    Postage      float64        `json:"postage" valid:"Required;"`
    UnitName     string         `json:"unit_name" valid:"Required;"`
    Sort         int16          `json:"sort" valid:"Required;"`
    Sales        int            `json:"sales" valid:"Required;"`
    Stock        int            `json:"stock" valid:"Required;"`
    IsShow       *int8          `json:"is_show" valid:"Required;"`
    IsHot        *int8          `json:"is_hot" valid:"Required;"`
    IsBenefit    *int8          `json:"is_benefit" valid:"Required;"`
    IsBest       *int8          `json:"is_best" valid:"Required;"`
    IsNew        *int8          `json:"is_new" valid:"Required;"`
    Description  string         `json:"description" valid:"Required;"`
    IsPostage    *int8          `json:"is_postage" valid:"Required;"`
    GiveIntegral int            `json:"give_integral" valid:"Required;"`
    Cost         float64        `json:"cost" valid:"Required;"`
    IsGood       *int8          `json:"is_good" valid:"Required;"`
    Ficti        int            `json:"ficti" valid:"Required;"`
    Browse       int            `json:"browse" valid:"Required;"`
    IsSub        *int8          `json:"is_sub" valid:"Required;"`
    TempId       int64          `json:"temp_id" valid:"Required;"`
    SpecType     int8           `json:"spec_type" valid:"Required;"`
    IsIntegral   *int8          `json:"isIntegral" valid:"Required;"`
    Integral     int32          `json:"integral" valid:"Required;"`
    BaseModel
    }

    //定义商品消息结构
    type ProductMsg struct {
    Operation string `json:"operation"`
    *StoreProduct
    }
    切换web服务器
    现在我们启动工程使用的是 tomcat 服务器,那能不能不使用 tomcat 而使用 jetty 服务器,jetty 在我们 maven 高级时讲 maven 私服使用的服务器。而要切换 web 服务器就需要将默认的 tomcat 服务器给排除掉,怎么排除呢?使用 exclusion 标签
    func (e *StoreProductController) Post(c *gin.Context) {
    var (
    dto  dto2.StoreProduct
    appG = app.Gin{C: c}
    )
    httpCode, errCode := app.BindAndValid(c, &dto)
    if errCode != constant.SUCCESS {
    appG.Response(httpCode, errCode, nil)
    return
    }
    productService := product_service.Product{
    Dto: dto,
    }
    model, err := productService.AddOrSaveProduct()
    if err != nil {
    appG.Response(http.StatusInternalServerError, constant.FAIL_ADD_DATA, nil)
    return
    }

    //发消息队列
    defer func() {
    operation := product.OperationCreate
    if dto.Id > 0 {
    operation = product.OperationUpdate
    }
    productMsg := models.ProductMsg{
    operation,
    &model,
    }
    msg, _ := json.Marshal(productMsg)
    p, o, e := mq.GetKafkaSyncProducer(mq.DefaultKafkaSyncProducer).Send(&sarama.ProducerMessage{
    Topic: product.Topic,
    Key:   mq.KafkaMsgValueStrEncoder(strconv.FormatInt(dto.Id, 10)),
    Value: mq.KafkaMsgValueEncoder(msg),
    },
    )
    if e != nil {
    global.LOG.Error("send product msg error ", e, "partition :", p, "offset :", o, "id :", dto.Id)
    }
    }()

    appG.Response(http.StatusOK, constant.SUCCESS, nil)

    }


  • 15、贴片叠层电感应用测试中不良率高的原因
    15、贴片叠层电感应用测试中不良率高的原因
  • 浅谈地下污水厂智能照明控制应用

    结合某地下污水厂项目,从结构、系统组成、系统功能、控制要求、场景模式等方面介绍了地下污水厂智能照明控制系统,探索了一套适用于地下污水厂的智能照明控制策略,以确保地下污水厂正常运行的照明需求。

  • 16、谷景电子贴片电感在智能电梯领域应用取得新进展
    16、谷景电子贴片电感在智能电梯领域应用取得新进展
  • 特斯拉电路图.rar
    特斯拉电路图,欢迎大家下载
  • Geehy极海微控制器选型手册
    Geehy极海微控制器选型手册,产品基于Arm® Cortex®-M0+/M3/M4F/RISC-V内核,覆盖工业级/车规级/电机控制专用以及无线MCU,丰富的产品组合阵营,满足客户多样化产品应用需求!
  • RadarSensors_ARS404-21_cn数据手册​
    RadarSensors_ARS404-21_cn数据手册
  • 教程背景通过之前的教程,我们已经为大家演示了宏集MC-Prime控制器的连接、试运行和CODESYS的安装,并创建了一个计数器项目。在本期教程中,我们将进一步深入,教大家如何使用CODESYS的可视化界面。一、两种可视化方式在CODESYS V3中,可视化界面分为两种类型:目标可视化和网络可视化。二者之间存在着一些本质上的区别。(一)目标可视化目标可视化(Target visualization)主要是针对一些带有集成屏幕的控制器(如宏集DC系列)。如果是没有屏幕的控制器,则需要通过在控制器上运
    工业物联网技术 2023-11-30 11:45 94浏览
  • 听力危机不可不慎,助听器市场的发展概况根据世界卫生组织WHO于2021年所发布的世界听力报告(World report on hearing)统计,全球目前有20%左右的听损人口;其中「轻度」与「中度」听损人口就占了大约15亿人左右。台湾方面,根据2021年卫生福利部统计处的数据显示,台湾则约有12万人有听力损失的问题,其中更有高达56% (约71,543人)确诊为轻度听损。足以看出听力受损问题已逐渐成为全球新兴的健康议题。听力损失的成因及轻重程度因人而异,但无论如何,或多或少都会影响到我们的日
    百佳泰测试实验室 2023-11-30 17:26 118浏览
  • 数字脉冲升级功能德思特Spectrum系列全部在售数字化仪和AWG产品(包括TS-M2p,TS-M4i,TS-DN2,TS-DN6型号产品),发布了新增的数字脉冲(DPG)升级功能,于11月15日正式推出。用户购买后,可自行通过对产品内置FPGA进行固件升级获取相关功能,无需返厂。该功能可以为原本的数字化仪或AWG产品增加3~4个独立的数字脉冲发生器通道,帮助用户实现测试系统中的一系列控制功能,为客户的产品升级和系统扩建提供了一种较低成本的选项。数字脉冲发生器技术浅析#01 数字脉冲发生器是什么
    虹科测试测量TM 2023-11-30 11:23 55浏览
  • 非接触精密洁净设备在锂电池领域有广泛的应用,主要用于生产制造过程中的Roll to Roll及sliting工艺、电芯预处理等环节。针对卷板、薄膜、膜片制造工艺中的大宽幅、裁切后边部处理再清洁、除异物、毛刺等需求,非接触精密洁净设备通过高旋轴与特制气嘴的优化排列,可满足现有干燥炉、再复合、精度提升等新工艺中的洁净度要求。具体的应用环节如下:锂电池生产过程中的Roll to Roll工艺和sliting工艺,非接触精密洁净设备通过高精度的洁净环境和控制,保证了锂电池的制造质量和安全性。电芯预处理过
    SHLZ 2023-11-30 11:49 146浏览
  •    电源连接器的插针遭受损坏的情况非常普遍,这种故障会让连接器的电流传输受到影响,进而影响设备的正常使用,那是什么因素导致电源连接器的插针遭到损坏呢?下面Amass将为您分析其中的原因。   1、应用环境高温 1. 在高温环境下,电源连接器插针易受腐蚀影响,形成氧化层,损失接触压力,甚至可能发生接头烧损情况。对于这种环境,电源连接器需要具备耐高温性能,不仅需满足环境温度要求,还须考虑其在工作状态下的热量散发。  
    艾迈斯电子 2023-11-30 16:33 129浏览
  •    本文介绍在ALPS平台上进行SSL测试的内容和方法   什么是SSL SSL全称是Secure Sockets Layer,指安全套接字协议,为基于TCP的应用层协议提供安全连接;SSL介于TCP/IP协议栈的第四层和第五层之间,广泛用于电子商务、网上银行等。 SSL协议有三个版本,其中SSL2.0和3.0曾被广泛使用,其中SSLv3.0自1996提出并得到大规模应用成为了事实上的标准,在2015年才被弃用。1999年,IETF收纳了SSLv3.0并
    信而泰市场部 2023-11-30 15:08 102浏览
  • Achronix推出基于FPGA的加速自动语音识别解决方案 提供超低延迟和极低错误率(WER)的实时流式语音转文本解决方案,可同时运行超过1000个并发语音流2023年11月——高性能FPGA芯片和嵌入式FPGA(eFPGA IP)领域的领先企业Achronix半导体公司日前自豪地宣布:正式推出Achronix与Myrtle.ai合作的最新创新——基于Speedster7t FPGA的自动语音识别(ASR)加速方案。这一变革性的解决方案,实现了高精度和快速响应,可将超过1000个并发的实时
    电子科技圈 2023-11-30 11:52 157浏览
  • 前言 在网络部署之后和业务开展之前,运营商迫切希望了解当前网络的性能状态,以便为商业规划和业务推广提供必要的基础数据支持。因此,高可靠性和高精确度的性能测试方法对于运营商评判网络性能的优劣,显得尤为重要,而RFC 2544等传统测试标准已不足于鉴定当今的服务等级协议(SLA)。SLA是服务提供商(如ISP)及其最终用户之间的协议,它规定以太网服务的开通或验证必须进行测量,且必须达到SLA的规范要求。目前,对以太网服务进行测试和故障诊断的最佳选择无疑是ITU-T Y.1564标准。 &
    信而泰市场部 2023-11-30 15:06 90浏览
  • 高低温探针台是一种用于材料科学、物理、化学等领域的实验设备,主要用于在高温和低温环境下对材料进行各种实验和研究。下面是高低温探针台的工作原理。工作原理是将样品放置在加热和冷却组件上,然后使用各种测量仪器对其进行实验和测量。具体来说,其工作流程如下:将样品放置在加热和冷却组件上;启动加热系统,将样品加热到所需的温度;启动制冷系统,将冷却组件降温到所需的温度;通过各种测量仪器对样品进行实验和测量;记录实验数据并进行分析和处理;结束实验后,关闭加热和制冷系统,并解除真空状态,取出样品。总之,高低温探针
    锦正茂科技 2023-12-01 14:50 101浏览
  • 作者:Shawn Prestridge,IAR资深现场应用工程师 / 美国FAE团队负责人 安全一直都是一个非常热门的话题,似乎每周都会听到这样的消息:某某公司如何被入侵,数百万用户的数据被泄露。 我们看到这么多的安全问题,部分原因在于我们对待安全的方式:安全性通常被认为是事后考虑的问题,是在开发结束时才添加到设备上的东西。然而,复杂的系统,尤其是嵌入式系统,有一个很大的攻击面,这让攻击者有机可乘,能够在“盔甲”上找到破绽。如果你去研究大部分黑客试图入侵系统的方式,你很快就会发现,在他们的武
    电子科技圈 2023-11-30 14:43 121浏览
  • 印刷部分 这本书印刷和普通书籍不太一样,类似笔记本的手写体印刷和笔记的网格,有亲近感和新鲜感内容部分 分为通信工程 ;传感器工程;磁传感器工程;太阳电池功能几大部分通信电路是一种用于传输信息的电子电路,可以用于无线通信、有线通信和网络通信等各种通信系统中。传感器电路则是用于感知和测量环境参数的电路,可以探测光、温度、压力、湿度、运动等各种物理量。在学习通信电路方面,可能会接触到模拟通信电路和数字通信电路。模拟通信电路主要涉及模拟信号的传输和处理,如调制解调、信号放大、滤波等。数字通信电路则涉及数
    陇南有只大花猫 2023-11-30 19:01 198浏览
  • 在电力系统中,过电压保护器是一种重要的设备,它对电力设备的安全运行具有重要的作用。下面我们来了解一下过电压保护器的基本结构。过电压保护器通常由三个主要部分组成:间隙、非线性元件和触发器。1. 间隙:间隙是过电压保护器的基本结构之一,它是由两个金属电极组成的,通常采用球形或棒形结构。间隙的间距通常在几毫米到几厘米之间,它能够承受一定的电压,并在过电压条件下进行放电。2. 非线性元件:非线性元件是过电压保护器的另一个重要组成部分。它是一种特殊的电阻器,能够在高电压下呈现出非线性的特性。当电压超过一定
    保定众邦电气 2023-11-30 14:49 173浏览
  • By Toradex胡珊逢 简介 双屏显示在显示设备中有着广泛的应用,可以面向不同群体展示特定内容。文章接下来将使用 Verdin iMX8M Plus 的 Arm 计算机模块演示如何方便地在 Toradex 的 Linux BSP 上实现在两个屏幕上显示独立的 Qt 应用。 硬件介绍 软件配置 Verdin iMX8M Plus 模块使用 Toradex Multimedia Reference Image V6.4.0 版本,其包含 Qt5.15 相关运行环境。默认系统中已经使
    hai.qin_651820742 2023-12-01 11:53 117浏览
  • 随着汽车电子进入电动化+智能网联的时代,新能源、车联网、智能化、电动化四个领域带来了CAN数据的需求,企业车队管理需要数据,汽车运营需要数据,改装、解码、匹配工具打造需要数据,现在就连简单的LED汽车照明控制,也需要匹配数据。这一切,逃脱不了CAN、LIN、SENT、BSD、MOST各种协议下,不同ECU控制单元在不同年份,不同款式下的数据,可以这么说,在新能源这个前提下,我们要做的工作和要做的事情可能要更为复杂、多变。 前日,我拿出一份13年左右丰田的CAN协议,里边包括车灯控制、车
    lauguo2013 2023-11-30 15:45 109浏览
  •     按照 IPC术语,连接盘/Land 是指一块导体,通常用于连接和/或固定元器件的导电部分。    为了增强孔的机械强度,所有的金属化孔或者镀覆孔,在穿过每一层铜箔时,都应该有连接盘,连接盘的形状不限。前面提过的孔环也是连接盘的一种形式。在允许的条件下,孔环和连接盘的尺寸都要尽量大一些。    前面提到过,铜层图案(连接盘)和孔是在不同的工序制作的。由于加工公差的存在,用常见的圆形连接盘和圆孔来说,并不能保证孔和连接盘保持精确的同
    电子知识打边炉 2023-11-30 21:32 146浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦