GitHub星标2.3k+!具有内存安全的CircleC++引热议,开发者评价:确有价值,但无人投资

C语言与CPP编程 2024-07-09 09:02

本文经授权转自公众号CSDN(ID:CSDNnews)

作者 | Sean Baxter
翻译 | 郑丽媛

近年来向开发者建议放弃 C++、使用内存安全语言的声音越来越多。面对这个情况,本文作者 Sean Baxter 提出了解决问题的关键:并非完全转向 Rust,而是要创建一个包含严格安全子集的 C++ 超集——Circle C++ 由此诞生。

截至目前,Circle 编译器在 GitHub 已拥有 2.3k+ Star,在 HN 上也有许多开发者对此表示支持。

原文链接:https://www.circle-lang.org/site/intro/

在过去两年中,美国政府愈发迫切地警告开发者不要采用内存不安全的编程语言。据了解,在美国许多关键基础设施都依赖于用 C 和 C++ 编写的软件,但其内存并不安全,政府认为这将导致系统很容易被对手利用:

  • 2022 年 11 月 10 日,NSA 发布《关于如何防范软件内存安全问题指南》;

  • 2023 年 9 月 20 日,发布《软件产品内存安全的迫切需》要;

  • 2023 年 12 月 6 日,CISA 发布《软件制造商联合指南》:内存安全路线图案例;

  • 2024 年 2 月 26 日,发布《未来软件应具有内存安全性》;

  • 2024 年 5 月 7 日,发布《国家网络安全战略实施计划》

以上这些政府文件得到了许多行业研究的支持。例如微软的漏洞遥测显示,70% 的漏洞可通过内存安全的编程语言来阻止;谷歌研究也发现,68% 的 0day 漏洞与内存损坏漏洞有关。

于是乎,不少安全专业人士大声疾呼,要求项目摒弃 C++,开始使用内存安全语言——但这绝不是喊喊口号而已。

要知道,由 C++ 所支持的产品创造了数万亿美元的价值,如今有大量的 C++ 程序员和 C++ 代码。鉴于 C 和 C++ 代码的广泛传播,业界究竟能做些什么来提高软件质量和减少漏洞?在现有项目中引入新的内存安全代码并加固现有软件的方案又有哪些?

有一种系统级/非垃圾回收语言能提供严格的内存安全性,那就是 Rust。但是,C++ 和 Rust 却大相径庭,互操作能力也有限,因此从 C++ 向 Rust 的增量迁移是一个缓慢而艰苦的过程。

Rust 缺乏函数重载、模板和继承,C++ 则缺少 traits、重定位和生命周期参数。这些差异造成了两种语言接口时的“阻抗失配”。大多数跨语言绑定的代码生成器都没有尝试用一种语言来表示另一种语言的特征。它们通常会确定一些特殊的词汇类型,具有一流的特性但也限制了其他语言的功能。

对于职业 C++ 开发者来说,Rust 是一种陌生的语言,加上缺乏互操作工具,想要用 Rust 来重写关键部分以加固 C++ 应用是非常困难的。所以说,为什么在语言内没有一个能解决内存安全问题的方法?为什么没有一个安全的 C++(Safe C++)呢?

一、为安全而扩展 C++

我的目标是创建一个包含严格安全子集的 C++ 超集。无论是启动一个新项目,还是在现有项目中编写安全代码,都可以在 C++ 中实现——这样编写的 C++ 代码,将与用 Rust 编写的安全代码一样,具有强大的安全保证。事实上,生命周期安全是通过借用检查(borrow checking)静态执行的,这正是由 Rust 首次引入的签名安全技术。

  • 选择 Rust 的理由是:这是一种为安全而设计的全新语言。

  • 选择 Safe C++ 的理由是:它提供了与 Rust 同样严格的安全保证,但由于它是对 C++ 的扩展,因此可以无缝地与现有代码互操作。

我们的目标是编写稳健且可靠的软件。虽然 Rust 已被证明是实现这一目标的有效工具,但 Safe C++ 也能成为另一种可行的选择——不可行的,是继续添加不安全、漏洞百出的代码。

你可能要问了,Safe C++ 具体有哪些特点?

(1)一种包含安全子集的 C++ 超集。在安全子集中,禁止出现未定义的行为。

(2)语言的安全部分和不安全部分界限分明,用户必须明确需离开安全部分才能进行不安全操作。

(3)安全子集必须保持实用性。如果我们去除了一些关键的不安全技术,比如联合或指针,就必须提供一个安全的替代方案,比如选择类型或借用。如果一种语言过于缺乏表达能力,即便它非常安全也无法完成工作,那它也无用的。

(4)新系统不能破坏现有代码。如果用 Safe C++ 编译器编译现有的 C++ 代码,那这些代码就必须能够正常编译,用户也可以选择是否使用新的安全机制。一定要记住,Safe C++ 是对 C++ 的扩展,而不是一种新语言。

#feature on safety#include "std2.h"
int main() safe { std2::vector<int> vec { 11, 15, 20 };
for(int x : vec) { // Ill-formed. mutate of vec invalidates iterator in ranged-for. if(x % 2) vec^.push_back(x);
unsafe printf("%d\n", x); }}
$ circle iter3.cxx safety: iter3.cxx:10:10      vec^.push_back(x);          ^mutable borrow of vec between its shared borrow and its useloan created at iter3.cxx:7:15  for(int x : vec) {               ^

考虑上面这个用 Safe C++ 写的示例,它可以捕捉到迭代器失效,而通常迭代器失效会导致 use-after-free 错误。接下来让我们逐行分析:

  • 第 1 行:#feature on safety - 在当前文件中启用与安全相关的新关键字。而翻译单元中的其他文件不受影响,这就是 Safe C++ 避免破坏现有代码的方式——-所有内容都是选择性的,包括新的关键字和语法。这个安全特性改变了函数定义的对象模型,使其支持对象重定位、部分初始化和延迟初始化。它将函数定义转换为中级中间表示(MIR),并在此基础上进行借用检查,以标记检查引用中可能潜在的 use-after-free 漏洞。

  • 第 2 行:#include "std2.h" - 引入新的安全容器和算法。加强安全性就是要减少你对不安全 API 的依赖,当前的标准库中充满了各种不安全的 API,而命名空间 std2 中的新标准库会提供相同的基本功能,但其容器将具备生命周期感知和类型安全的特性。

  • 第 4 行:int main() safe - 新的 safe 说明符是函数类型的一部分,类似于 noexcept 说明符。对于调用者来说,这个函数被标记为安全,因此可以在安全的上下文中调用。main 的定义开始于一个安全的上下文,因此不允许执行不安全的操作,例如取消引用指针或调用不安全的函数等。Rust 的函数默认是安全的,而 C++ 的函数默认是不安全的,但这只是语法上的区别。一旦在 C++ 中使用 safe 说明符进入安全上下文,就会得到与 Rust 同样严格的安全保证。

  • 第 5 行:std2::vector vec { 11, 15, 20 }; - 一个内存安全向量的列表初始化。该向量能够感知生命周期参数,因此借用检查将扩展到有生命周期的元素类型。该向量的构造函数没有使用 std::initializer_list,因为这种类型有两个问题:首先,用户会得到指向参数数据的指针,而从指针读取数据是不安全的;其次,std::initializer_list 不拥有其数据,无法进行重定位。基于这些原因,Safe C++ 引入了 std2::initializer_list,它可以在安全上下文中使用,并支持我们的所有权对象模型。

  • 第 7 行:for(int x : vec) - 对向量进行基于范围的 for 循环。标准机制返回一对迭代器,它们实际上是用类封装的指针。C++ 的迭代器并不安全,总以 begin 和 end 成对出现,但不共享共同的生命周期参数,因此对它们进行借用检查不太现实。而 Safe C++ 版本使用切片迭代器,类似于 Rust 的迭代器。这些安全类型使用生命周期参数,因此可以很好地防止迭代器失效。

  • 第 10 行:vec^.push_back(x); - 向向量中添加一个值。这里的 ^ 是什么意思?这是一个后缀对象操作符,表示对成员函数调用的对象参数进行可变借用。当启用了 #feature on safety 时,所有的修改操作都是显式的,这样在选择对象的共享借用还是可变借用时更精确。Rust 不支持函数重载,因此会隐式借用(可变或共享)成员函数的对象;而 C++ 支持函数重载,所以需要显式指定以获取我们想要的重载。

  • 第 12 行:unsafe printf("%d\n", x); - 调用 printf。这是一个非常不安全的函数,但由于我们在安全的上下文中,所以必须用 unsafe 关键字来转义。Safe C++ 不会锁定 C++ 语言的任何部分,你可以用 unsafe 关键字,但前提是要明确声明。用了 unsafe 意味着你承诺遵守函数的前置条件,而不是依赖编译器来确保这些前置条件。

如果 main 在语法上通过了检查,其 AST 会被下放到 MIR,并在那里进行借用检查。为 ranged-for 循环提供动力的隐藏迭代器,在循环执行期间保持初始化状态。push_back 通过修改迭代器的约束位置(即向量),使迭代器失效。当下次从迭代器中加载值 x 时,借用检查器会报错:在共享借用和使用之间,vec 存在可变借用。借用检查器程序可以防止 Circle 编译出可能存在未定义行为的程序——所有这些都是在编译时完成的,不会影响程序的大小或速度。

上面这个示例虽然只有几行,但我引入了许多新的机制和类型。近年来安全专家不断提醒我们说 C++ 非常不安全,这的确是事实。因此我们才需要付出系统性的努力,提供一个带有安全子集的语言超集,同时确保其具有足够的灵活性和表现力。

二、内存安全的价值主张

内存安全语言的前提,是一个对人类行为的基本观察:人们倾向于先尝试一下,如果不行再寻求帮助。放在编程中,就是开发者会先尝试用一个库,只有在不能用时才会阅读文档。事实证明,这种做法非常危险,因为能工作的代码并不一定真正安全。

许多 C++ 函数都有一些前置条件,只有在仔细阅读文档后才能了解。前置条件可能千奇百怪,开发者也不能自动知道安全的使用方式是怎样的。即使表面看起来无害,但违反这些前置条件会导致未定义行为,从而使你的软件面临攻击风险。

我认为,软件的安全和保障不应依赖于程序员是否严格遵守文档。

基于此,我想提出一个价值主张:编译器和库供应商也需要付出额外努力,提供一个稳健的环境,这样用户就不必阅读文档了。无论他们如何使用语言和库,都不会引发未定义行为,也就不会使软件面临安全相关的漏洞。当然,没有一个系统能防止所有误用,匆忙编写的代码可能会有很多逻辑错误,但这些逻辑错误不会导致内存安全漏洞。

上周,我就犯了一个低级错误:问题出在 std::isprint 函数的使用上。这个函数的参数是 int 类型,而我当时传入的是 UNICODE 代码点,没有考虑到前置条件——参数必须在 -1 到 255 之间。

我承认这是我的问题,但不得不说库的设计也违背了人性:不要期望每个程序员在使用函数之前都会仔细阅读文档!如果内存安全语言能提供一个安全稳健的环境,就能防止这种情况的发生了。

有些内存安全问题,比如上述问题,很容易修复。但在像 ISO C++ 这样不安全的语言中,有些问题是无法修复的。仅靠阅读文档、遵循 C++ 核心指南或编写单元测试是不够的。为了解决生命周期和线程安全问题,需要引入新的语言技术,而这些是全局性问题,需要系统性的解决方案。

三、这是一条未走过的路

许多库都在尝试缓解未定义行为的问题,例如检测器(sanitizers)就是一种特殊的构建目标,它们能在运行时标记出未定义行为,这类项目作为防御 C++ 代码漏洞的第一道防线非常有效。

但是,有哪些努力是直接将内存安全特性引入 C++ 语言的呢?除了 Circle C++,目前没有任何正在进行的项目试图扩展 C++ 以提供工业和政府安全研究人员所需的严格内存安全保证。没有人尝试在 MSVC、Clang 和 GCC 等主流编译器中构建安全上下文,还有那些依赖 C++ 发展的公司,如微软、谷歌、NVIDIA、英特尔、Adobe 和彭博社,也都没有采取相关措施。甚至 C++ ISO 委员会对这个问题也没有任何见解和应对策略。

为什么编译器供应商和标准化工作者不肯认真对待 C++ 中日益严重的安全漏洞问题?我认为,这是因为这个问题看起来太难,任何单一的努力都难以取得实质性进展:

(1)解决方案要适用的范围太广。内存安全漏洞种类繁多,涉及生命周期安全、边界安全、线程安全和各种类型安全等多个方面。每种漏洞都需要单独处理,这导致整体扩展的工作量非常大。因此有人认为,这些变更综合起来,对于委员会或供应商来说工作量实在过于庞大。

(2)需要对工具进行重大升级。不仅编译器前端需要全面改造,还需要一个新的中端来支持借用检查和对象重定位。同时,还必须编写一个新的标准库,逐步取代旧的库,减少不安全操作的风险——前端、后端加上标准库的改造,远远超出了编译器开发者的常规工作范围。

(3)新技术难度很大。Rust 安全模型中最独特的部分是 NLL 借用检查器,这是一个非常复杂的功能,光读一本 Rust 入门书籍或摸索着用这门语言,都无法理解它的工作原理。这个功能的复杂性吓退了很多人,他们根本不敢考虑将这项技术集成到 C++ 编译器中。虽然这是一个美好的想法,但如果你是一名前端工程师,还没有广泛接触过控制流图,那就有点像在逼你掌握外星技术了。

(4)主流编译器对实验来说过于繁琐。C++ 经过了 50 多年的演变,从 K&R C 到 C++23,语言极其复杂,编译器的编写和维护也同样很困难,在 MSVC、Clang 或 GCC 上进行这种级别的实验非常难。而 Circle 编译器只有大约 31 万行代码,相比之下非常紧凑。每一行代码都是我写的,我对每个部分的功能都非常了解,相比在主流工具链上工作的人,在这个方面我具有巨大的灵活性优势。

(5)C++ 用户的傲慢态度。C 和 C++ 的从业者常有一种“要做好”的心态,他们认为如果你把事情搞砸了,那就是你自己的错,解决办法就是提高自己。然而,软件设计是一个需要协作的过程,即使是像我这样的独立开发者也不例外。你总是依赖于他人的代码,不可能理解它是如何工作的。在大型项目中,期望每个代码都完美无误是不现实的。此时,若使用内存安全语言会让错误的代价大大降低:你的程序不会出现未定义行为,无法通过编译器检查健全性的结构会被标记为可能不安全,从而给程序员重新思考设计的机会,或许用一些内存安全的 API 重新实现这些操作。

在《国家网络安全实施计划》中曾提到:

为了开始制定安全软件开发的监管标准,政府将推动制定一个适应性安全港框架,保护那些安全开发和维护其软件产品和服务的公司免受责难……政府将与国会和私营部门合作,制定立法,确定软件产品和服务的责任。

C++ 的机构用户应该感到担忧,安全社区正在呼吁淘汰这种语言,政府也正在讨论对发布漏洞代码的公司追究责任,并为制定安全策略的公司提供免责保护。此外,禁止在某些行业中使用 C++ 的立法看起来也有可能成为现实,但 ISO 委员会并没有重视这个问题的严重性,也没有应对策略或领域专家。

我认为,光是口头反对国家安全局的说法并不能解决问题,我们需要做点实事。我希望能与 C++ 相关公司合作,努力解决根本问题。要想让 C++ 成为开发者在未来几十年中既能使用又愿意使用的语言,我们需要付出大量努力。

四、开发者热议:Circle C++ 是有价值的,但无人投资

Sean Baxter 对 Circle C++ 的设想在开发者圈内引起热议,其中有不少人对此表示支持:

  • “我认为 Sea的作品是有价格的,但目前还没有人愿意投资。

  • Circle 是唯一一个拥有类似 Typescript 进化路径的 C++ 后继者,而且还能提供高质量的编译器。不幸的是,WG21 似乎对 Circle 早期提出的任何想法都有意见,他们应该不愿意采纳 Sean 的工作。这就很可惜,因为 Sean 单枪匹马就比整个 C++ 编译器领域的人交出了更多的成果

但同时,也有人对 Circle 拥有 2.3k+ Star、却 7 个月没更新的现状提出质疑:“我开发者对 Circle 的热爱感到非常困惑——有一个 GitHub 已经 7 个月没有更了,而且还没有许可证,它真的有用户吗?看起来这只是一个雏形项目,其理念并未被 cpp 采用,编译器资源库也没更新。”

对此,有人回应称 7 个月没更新是因为 Circle 并非开源项目,并补充道企业也不会在意它是否开源:“如果 Circle 真的能实现其既定目标,那么 C++ 内存安全超集的价值主张就是巨大的。很多使用 C++ 编写关键软件的公司不会在意 Circle 是否开源,只要它能满足他们的所有要求(认证、审核等),他们就能给予它强大的企业支持。”

本文转自公众号“CSDN”,ID:CSDNnews
EOF

你好,我是飞宇,本硕均于某中流985 CS就读,先后于百度搜索字节跳动电商以及携程等部门担任Linux C/C++后端研发工程师。

最近跟朋友一起开发了一个新的网站:编程资源网,已经收录了不少资源(附赠下载地址),如果屏幕前的靓仔/女想要学习编程找不到合适资源的话,不妨来我们的网站看看,欢迎扫码下方二维码白嫖~

同时,我也是知乎博主@韩飞宇,日常分享C/C++、计算机学习经验、工作体会,欢迎点击此处查看我以前的学习笔记&经验&分享的资源。

我组建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起进群交流。

欢迎你添加我的微信,我拉你进技术交流群。此外,我也会经常在微信上分享一些计算机学习经验以及工作体验,还有一些内推机会

加个微信,打开另一扇窗

C语言与CPP编程 C语言/C++开发,C语言/C++基础知识,C语言/C++学习路线,C语言/C++进阶,数据结构;算法;python;计算机基础等
评论 (0)
  •     根据 IEC术语,瞬态过电压是指持续时间几个毫秒及以下的过高电压,通常是以高阻尼(快速衰减)形式出现,波形可以是振荡的,也可以是非振荡的。    瞬态过电压的成因和机理,IEC 60664-1给出了以下四种:    1. 自然放电,最典型的例子是雷击,感应到电力线路上,并通过电网配电系统传输,抵达用户端;        2. 电网中非特定感性负载通断。例如热处理工厂、机加工工厂对
    电子知识打边炉 2025-04-07 22:59 41浏览
  • 及时生产 JIT(Just In Time)的起源JIT 起源于 20 世纪 70 年代爆发的全球石油危机和由此引发的自然资源短缺,这对仰赖进口原物料发展经济的日本冲击最大。当时日本的生产企业为了增强竞争力、提高产品利润,在原物料成本难以降低的情况下,只能从生产和流通过程中寻找利润源,降低库存、库存和运输等方面的生产性费用。根据这种思想,日本丰田汽车公司创立的一种具有特色的现代化生产方式,即 JIT,并由此取得了意想不到的成果。由于它不断地用于汽车生产,随后被越来越多的许多行业和企业所采用,为日
    优思学院 2025-04-07 11:56 89浏览
  • 文/Leon编辑/cc孙聪颖‍转手绢、跳舞、骑车、后空翻,就在宇树、智元等独角兽企业率领“机器人大军”入侵短视频时,却有资本和科技大佬向此产业泼了一盆冷水。金沙江创投管理合伙人朱啸虎近日突然对人形机器人发难,他表示“最近几个月正在批量退出人形机器人公司”。“只是买回去做研究的,或者买回去做展示的,这种都不是我们意义上的商业化,谁会花十几万买一个机器人去干这些活?”朱啸虎吐槽。不过,朱啸虎的观点很快就遭到驳斥,众擎机器人的创始人、董事长赵同阳回怼道:“(朱啸虎)甚至问出了人形机器人在这个阶段有什么
    华尔街科技眼 2025-04-07 19:24 57浏览
  • 在科技浪潮奔涌的当下,云计算领域的竞争可谓是如火如荼。百度智能云作为其中的重要参与者,近年来成绩斐然。2024年,百度智能云在第四季度营收同比增长26%,这样的增速在行业内十分惹眼。回顾全年,智能云业务的强劲增长势头也十分明显,2024年第一季度,其收入达到47亿元,同比增长12%;第二季度营收51亿元,同比增长14%。从数据来看,百度智能云在营收方面一路高歌猛进,展现出强大的发展潜力。然而,市场对百度智能云的表现似乎并不完全买账。2024年,尽管百度智能云数据亮眼,但百度股价却在震荡中下行。在
    用户1742991715177 2025-04-06 20:25 68浏览
  • 在万物互联时代,智能化安防需求持续升级,传统报警系统已难以满足实时性、可靠性与安全性并重的要求。WT2003H-16S低功耗语音芯片方案,以4G实时音频传输、超低功耗设计、端云加密交互为核心,重新定义智能报警设备的性能边界,为家庭、工业、公共安防等领域提供高效、稳定的安全守护。一、技术内核:五大核心突破,构建全场景安防基座1. 双模音频传输,灵活应对复杂场景实时音频流传输:内置高灵敏度MIC,支持环境音实时采集,通过4G模块直接上传至云端服务器,响应速度低至毫秒级,适用于火灾警报、紧急呼救等需即
    广州唯创电子 2025-04-08 08:59 66浏览
  • 在追求环境质量升级与产业效能突破的当下,温湿度控制正成为横跨多个行业领域的核心命题。作为环境参数中的关键指标,温湿度的精准调控不仅承载着人们对舒适人居环境的期待,更深度关联着工业生产、科研实验及仓储物流等场景的运营效率与安全标准。从应用场景上看,智能家居领域要求温湿度系统实现与人体节律的协同调节,半导体洁净车间要求控制温湿度范围及其波动以保障良品率,而现代化仓储物流体系则依赖温湿度的实时监测预防各种产品的腐损与锈化。温湿度传感器作为实现温湿度监测的关键元器件,其重要性正在各行各业中凸显而出。温湿
    华普微HOPERF 2025-04-07 10:05 82浏览
  • 医疗影像设备(如CT、MRI、超声诊断仪等)对PCB的精度、可靠性和信号完整性要求极高。这类设备需要处理微伏级信号、高频数据传输,同时需通过严格的EMC/EMI测试。制造此类PCB需从材料选择、层叠设计、工艺控制等多维度优化。以下是关键技术与经验分享。 1. 材料选择:高频与生物兼容性优先医疗影像设备PCB常采用 Rogers RO4000系列 或 Isola FR4高速材料,以降低介电损耗并保证信号稳定性。例如,捷多邦在客户案例中曾为某超声探头厂商推荐 Rogers RO4350B
    捷多邦 2025-04-07 10:22 90浏览
  • 引言:POPO声的成因与影响在语音芯片应用中,WT588F08A作为一款支持DAC+功放输出的高集成方案,常因电路设计或信号处理不当,在音频播放结束后出现POPO声(瞬态噪声)。这种噪声不仅影响用户体验,还可能暴露电路设计缺陷。本文将基于实际案例,解析POPO声的成因并提供系统化的解决方案。一、POPO声的根源分析1. 功放电路状态切换的瞬态冲击当DAC输出的音频信号突然停止时,功放芯片的输入端若处于高阻态或无信号状态,其内部放大电路会因电源电压突变产生瞬态电流,通过喇叭表现为POPO声。关键因
    广州唯创电子 2025-04-07 09:01 92浏览
  •     在研究Corona现象时发现:临界电压与介电材料表面的清洁程度有关。表面越清洁的介电材料,临界电压越高;表面污染物越多的地方,越容易“爬电”。关于Corona现象,另见基础理论第007篇。    这里说的“污染物”,定义为——可能影响介电强度或表面电阻率的固体、液体或气体(电离气体)的任何情况。    IEC 60664-1 (对应GB/T 16935.1-2023) 定义了 Pollution Degree,中文术语是“污染等
    电子知识打边炉 2025-04-07 22:06 39浏览
  • 贞光科技作为三星电机车规电容代理商,针对电动汽车领域日益复杂的电容选型难题,提供全方位一站式解决方案。面对高温稳定性、高可靠性、高纹波电流和小型化等严苛要求,三星车规电容凭借完整产品矩阵和卓越技术优势,完美满足BMS、电机控制器和OBC等核心系统需求。无论技术选型、供应链保障、样品测试还是成本优化,贞光科技助力客户在电动汽车产业高速发展中占据技术先机。在电动汽车技术高速发展的今天,作为汽车电子系统中不可或缺的关键元器件,电容的选型已成为困扰许多工程师和采购人员的难题。如何在众多参数和型号中找到最
    贞光科技 2025-04-07 17:06 34浏览
  •   工业自动化领域电磁兼容与接地系统深度剖析   一、电磁兼容(EMC)基础认知   定义及关键意义   电磁兼容性(EMC),指的是设备或者系统在既定的电磁环境里,不但能按预期功能正常运转,而且不会对周边其他设备或系统造成难以承受的电磁干扰。在工业自动化不断发展的当下,大功率电机、变频器等设备被大量应用,现场总线、工业网络等技术也日益普及,致使工业自动化系统所处的电磁环境变得愈发复杂,电磁兼容(EMC)问题也越发严峻。   ​电磁兼容三大核心要素   屏蔽:屏蔽旨在切断电磁波的传播路
    北京华盛恒辉软件开发 2025-04-07 22:55 59浏览
  • 在人工智能技术飞速发展的今天,语音交互正以颠覆性的方式重塑我们的生活体验。WTK6900系列语音识别芯片凭借其离线高性能、抗噪远场识别、毫秒级响应的核心优势,为智能家居领域注入全新活力。以智能风扇为起点,我们开启一场“解放双手”的科技革命,让每一缕凉风都随“声”而至。一、核心技术:精准识别,无惧环境挑战自适应降噪,听懂你的每一句话WTK6900系列芯片搭载前沿信号处理技术,通过自适应降噪算法,可智能过滤环境噪声干扰。无论是家中电视声、户外虫鸣声,还是厨房烹饪的嘈杂声,芯片均能精准提取有效指令,识
    广州唯创电子 2025-04-08 08:40 68浏览
  • 在全球电子产业面临供应链波动、技术迭代和市场需求变化等多重挑战的背景下,安博电子始终秉持“让合作伙伴赢得更多一点”的核心理念,致力于打造稳健、高效、可持续的全球供应链体系。依托覆盖供应商管理、品质检测、智能交付的全链路品控体系,安博电子不仅能确保电子元器件的高可靠性与一致性,更以高透明的供应链管理模式,助力客户降低风险、提升运营效率,推动行业标准升级,与全球合作伙伴共同塑造更具前瞻性的产业生态。动态优选机制:构建纯净供应链生态安博电子将供应商管理视为供应链安全的根基。打造动态优选管控体系,以严格
    电子资讯报 2025-04-07 17:06 45浏览
  • 引言:小型化趋势下的语音芯片需求随着消费电子、物联网及便携式设备的快速发展,产品设计对芯片的小型化、高集成度和低功耗提出了更高要求。厂家凭借其创新的QFN封装技术,推出WTV系列(如WTV380)及WT2003H系列语音芯片,以超小体积、高性能和成本优势,为紧凑型设备提供理想解决方案。产品核心亮点1. QFN封装技术赋能超小体积极致尺寸:WTV380采用QFN32封装,尺寸仅4×4毫米,WT2003H系列同样基于QFN工艺,可满足智能穿戴、微型传感器等对空间严苛的场景需求。高密度集成:QFN封装
    广州唯创电子 2025-04-07 08:47 83浏览
  • 曾几何时,汽车之家可是汽车资讯平台领域响当当的“扛把子”。2005 年成立之初,它就像一位贴心的汽车小助手,一下子就抓住了大家的心。它不仅吸引了海量用户,更是成为汽车厂商和经销商眼中的“香饽饽”,广告投放、合作推广不断,营收和利润一路高歌猛进,2013年成功在纽交所上市,风光无限。2021年更是在香港二次上市,达到了发展的巅峰,当年3月15日上市首日,港股股价一度高达184.6港元,市值可观。然而,如今的汽车之家却陷入了困境,业务下滑明显。业务增长瓶颈从近年来汽车之家公布的财报数据来看,情况不容
    用户1742991715177 2025-04-07 21:48 51浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦