发动态
开源文章:开源5周年!投稿送彩色丝印券!\n\n简介:\n\n文章链接:[https://oshwhub.com/article/open-source-5th-anniversary-contribution-sends-color-silk-screen-voucher]\n#活动资讯#
CW32 USB VAmeter(CW32充电检测仪-双向直通版)评测 #CW32L010# #CW32单片机#
22次播放
开源项目:立创·衡山派D133EBS开发板\n\n简介:立创开发板联合匠芯创与玄铁推出,极致性价比的RISC-V工业级点屏开发板!RT-Thread与LVGL-V9开发,支持RGB与LVDS屏幕720P@60FPS刷新率的流畅运行!\n\n开源链接:[https://oshwhub.com/li-chuang-kai-fa-ban/li-chuang-heng-shan-pai-d133ebs-kai-fa-ban]\n#显示模块# #工业电子# #WiFi/以太网#
哪位大佬MS2130芯片的数据手册和开发板原理图?求一份,正在学习采集卡方案。
最近正在学习采集卡的技术,但是宏晶微好像资料都是保密的。。。
AD中为什么新画符号添加封装后在原理图通没有模型
开源文章:太原工业学院晋速北极星方程式赛车队致谢嘉立创EDA\n\n简介:太原工业学院晋速北极星方程式赛车队全体成员由衷感谢嘉立创EDA,在自主研发制作中国大学生方程式汽车大赛所用PCB的道路上,感谢嘉立创对我们车队的大力支持。\n\n文章链接:[https://oshwhub.com/article/thanks-to-jialichuang-eda]
寻找高手帮忙做一个原理图和PBC板,付费
全在线模式同步问题?
#嘉立创PCB# #EDA软件# 我使用的是专业版全在线模式,现在有一个工程,我做了修改之后保存就关闭了,第二天打开有一个提示云端同步到本地 本地同步到远端,我没注意就点了第一个,发现做的修改都没了,又回到了原来的样子,还能恢复吗
作者:21Pilots一次代码CR引发的困惑“你这块的代码,没有做异常捕获呀,要是抛出了异常,可能会影响后续的代码流程”。这是一段出自组内代码CR群的聊天记录。代码类似如下: const asyncErrorThrow = () => { return new Promise((resolve, reject) => { // 业务代码... // 假设这里抛出了错误 throw new Error('抛出错误'); // 业务代码... }) } const testFun = async () => { await asyncErrorThrow(); console.log("async 函数中的后续流程"); // 不会执行 } testFun(); 在 testFun 函数中,抛出错误后,await 函数中后续流程不会执行。仔细回想一下,在我的前端日常开发中,对于错误捕获,还基本停留在使用 Promise时用 catch 捕获一下 Promise 中抛出的错误或者 reject,或者最基本的,在使用 JSON.parse、JSON.stringfy等容易出错的方法中,使用 try..catch... 方法捕获一下可能出现的错误。后来,这个同学将代码改成了:const asyncErrorThrow = () => { return new Promise((resolve, reject) => { // 业务代码... throw new Error('抛出错误'); // 业务代码... }) } const testFun = async () => { try { await asyncErrorThrow(); console.log("async 函数中的后续流程"); // 不会执行 } catch (error) { console.log("若错误发生 async 函数中的后续流程"); // 会执行 } } testFun(); 而这次不同的是,这段修改后的代码中使用了 try...catch...来捕获 async...await... 函数中的错误,这着实让我有些困惑,让我来写的话,我可能会在 await 函数的后面增加一个 catch:await asyncErrorThrow().catch(error => {})。因为我之前已经对 try..catch 只能捕获发生在当前执行上下文的错误(或者简单理解成同步代码的错误)有了一定的认知,但是 async...await... 其实还是异步的代码,只不过用的是同步的写法,为啥用在这里就可以捕获到错误了呢?在查阅了相当多的资料之后,才清楚了其中的一些原理。<顺便吆喝一句内推,技术大厂捞人捞人,前后端测试,东莞深圳等地急招~感兴趣来>Promise 中的错误我们都知道,一个 Promise 必然处于以下几种状态之一:待定(pending):初始状态,既没有被兑现,也没有被拒绝。已兑现(fulfilled):意味着操作成功完成。已拒绝(rejected):意味着操作失败。当一个 Promise 被 reject 时,该 Promise 会变为 rejected 状态,控制权将移交至最近的 rejection 处理程序。最常见的 rejection 处理程序就是 catch handler或者 then 函数的第二个回调函数。而如果在 Promise 中抛出了一个错误。这个 Promise 会直接变成 rejected 状态,控制权移交至最近的 error 处理程序。 const function myExecutorFunc = () => { // 同步代码 throw new Error(); }; new Promise(myExecutorFunc); Promise 的构造函数需要传入的 Executor 函数参数,实际上是一段同步代码。在我们 new 一个新的 Promise 时,这个 Executor 就会立即被塞入到当前的执行上下文栈中进行执行。但是,在 Executor 中 throw 出的错误,并不会被外层的 try...catch 捕获到。 const myExecutorFunc = () => { // 同步代码 throw new Error(); }; try { new Promise(myExecutorFunc); } catch (error) { console.log('不会执行: ', error); } console.log('会执行的'); // 打印 其原因是因为,在 Executor 函数执行的过程中,实际上有一个隐藏的机制,当同步抛出错误时,相当于执行了 reject 回调,让该 Promise 进入 rejected 状态。而错误不会影响到外层的代码执行。 const myExecutorFunc = () => { throw new Error(); // 等同于 reject(new Error()); }; new Promise(myExecutorFunc); console.log('会执行的'); // 打印 同理 then 回调函数也是这样的,抛出的错误同样会变成 reject。在一个普通脚本执行中,我们知道抛出一个错误,如果没有被捕获掉,会影响到后续代码的执行,而在 Promise 中,这个错误不会影响到外部代码的执行。对于 Promise 没有被捕获的错误,我们可以通过特定的事件处理函数来观察到。new Promise(function() { throw new Error(""); }); // 没有用来处理 error 的 catch // Web 标准实现 window.addEventListener('unhandledrejection', function(event) { console.log(event); // 可以在这里采取其他措施,如日志记录或应用程序关闭 }); // Node 下的实现 process.on('unhandledRejection', (event) => { console.log(event); // 可以在这里采取其他措施,如日志记录或应用程序关闭 }); Promise 是这样实现的,我们可以想一想为什么要这样实现。我看到一个比较好的回答是这个:传送门。我也比较赞成他的说法,我觉得,Promise 的诞生是为了解决异步函数过多而形成的回调地狱,使用了微任务的底层机制来实现异步链式调用。理论上是可以将同步的错误向上冒泡抛出然后用 try...catch... 接住的,异步的一些错误用 catch handler 统一处理,但是这样做的话会使得 Promise 的错误捕获使用起来不够直观,如果同步的错误也进行 reject 的话,实际上我们处理错误的方式就可以统一成 Promise catch handler 了,这样其实更直观也更容易让开发者理解和编写代码。async await 的问题那么回到我们最开始的问题,在这个里面,为什么 try catch 能够捕获到错误? jconst asyncErrorThrow = () => { return new Promise((resolve, reject) => { // 业务代码... throw new Error('抛出错误'); // 业务代码... }) } const testFun = async () => { try { await asyncErrorThrow(); console.log("async 函数中的后续流程"); // 不会执行 } catch (error) { console.log("若错误发生 async 函数中的后续流程"); // 会执行 } } testFun(); 我思考了很久,最后还是从黄玄大佬的知乎回答中窥见的一部分原理。这...难道就是浏览器底层帮我们处理的事儿吗,不然也没法解释了。唯一能够解释的事就是,async await 原本就是为了让开发者使用同步的写法编写异步代码,目的是消除过多的 Promise 调用链,我们在使用 async await 时,最好就是不使用 .catch 来捕获错误了,而直接能使用同步的 try...catch... 语法来捕获错误。即使 .catch 也能做同样的事情。只是说,代码编写风格统一性的问题让我们原本能之间用同步语法捕获的错误,就不需要使用 .catch 链式调用了,否则代码风格看起来会有点“异类”。这就是为什么 async MDN 中会有这样一句解释:参考文档:《使用Promise进行错误治理》- zh.javascript.info/promise-err…《为什么try catch能捕捉 await 后 promise 错误? 和执行栈有关系吗?》www.zhihu.com/question/52…
前端:为什么 try catch 能捕捉 await 后 Promise 的错误?
#嘉立创PCB# 求助 如何开窗露铜
我要积昏!!!
我要积昏!!!
在大型电子设备的散热领域,我们已见证了众多成熟方案的光辉岁月,这里就不一一赘述了。但随着微电子技术的日新月异,芯片正朝着更小尺寸、更快运算速度的方向迈进,而伴随而来的,是日益严峻的散热挑战。比如,英特尔3.6G奔腾4终极版处理器,其峰值运行时产生的热量竟可达115W!这无疑对芯片的散热设计提出了更为苛刻的要求。�� 芯片散热新挑战面对这样的高热挑战,设计人员必须祭出先进的散热工艺与性能卓越的散热材料,以确保芯片能在其耐热极限内稳定工作。与此同时,随着电子设备及终端产品日益追求轻薄化,从CRT电视到液晶平板,从台式电脑到笔记本,再到数字机顶盒、便携式CD等,它们的散热设计已无法沿用传统模式,因为产品的轻薄化对散热设计提出了全新的要求。�� 温度与可靠性的紧密关联统计数据揭示了一个令人警醒的事实:电子元器件的温度每升高2度,其可靠性就会下降10%;当温升达到50度时,其寿命仅为温升25度时的1/6。由此可见,温度是影响设备可靠性的关键因素。因此,我们必须从技术层面入手,限制机箱及元器件的温升,这也就是我们常说的“热设计”。�� 热设计的两大原则热设计的核心原则有二:一是减少发热量,通过选用更优的控制方式和技术(如移相控制技术、同步整流技术等),以及低功耗器件,减少发热器件数量,加大粗印制线宽度,提高电源效率等手段来实现;二是加强散热,利用传导、辐射、对流等技术将热量有效转移。�� 扁平产品的散热难题然而,对于扁平化的电子产品而言,散热设计尤为棘手。由于空间限制,无法使用更多的散热铝片和风扇,也无法采用加强冷式散热设计或对流散热方式。因此,大家纷纷将目光投向了机壳散热。机壳散热的好处显而易见:无需额外添加风扇电源,避免了因风扇带来的灰尘和噪音问题。�� 软性硅胶导热绝缘材料的妙用那么,如何才能充分利用机壳进行散热呢?这时,软性硅胶导热绝缘材料便应运而生。作为传热界面材料的一种,软性导热硅胶绝缘垫可根据发热功率器件的大小及形状进行任意裁切,其导热能力和绝缘特性均表现出色。它能够有效填充发热功率器件与散热器之间的间隙,是替代导热硅脂+云母片二元散热系统的最佳选择。�� 材料性能详解傲琪电子的这款软性导热硅胶绝缘垫的导热系数高达13W/mK(而空气的导热系数仅为0.03w/mk),抗电压击穿值在4000伏以上,满足大部分电子设备的绝缘要求。其工艺厚度从0.5mm至5mm不等(特殊要求可增至10mm),方便设计者根据PCB板及发热功率器件的位置进行选择。此外,该材料还具备阻燃防火性能(符合U.L 94V-0要求),并通过了欧盟SGS环保认证。其工作温度范围在-50℃至220℃之间,因此是极佳的导热材料。�� 特别柔软,适用广泛值得一提的是,这款材料特别柔软,专为利用缝隙传递热量的设计方案而生。它能够填充缝隙,完成发热部位与散热部位的热传递,增加导热面积。同时,它还具有减震、绝缘、密封等多重功效,完全能够满足设备小型化、超薄化的设计要求。其厚度适用范围广,特别适用于汽车、显示器、计算机和电源等电子设备行业。如果您对这款软性硅胶导热绝缘材料感兴趣,或者想进一步了解我们的产品,请随时联系我们。张先生,18656456291。我们非常欢迎贵公司索取样品进行检测,我们将免费提供样品给您试用。期待与您的合作!
电子产品散热设计深度探讨
开源项目:多功能雪花灯\n\n简介:可以通过语音、Touch、APP 进行控制,拥有氛围灯、小夜灯、自拍神器等多项功能\n\n开源链接:[https://oshwhub.com/it_zzc/snowflake]\n#彩色丝印# #ESP8266/32# #WiFi/以太网#
开源文章:彩色丝印帮助文档以及下单操作\n\n简介:嘉立创独有的彩色丝印工艺来啦~大家快来体验看看吧!\n\n文章链接:[https://oshwhub.com/article/color-screen-printing-help-document-and-order-operation]\n#使用技巧#
开源项目:【自动驾驶】迷你智能车Liguanxi-smart-car\n\n简介:这是一台智能小车,只有手掌大小,运行ROS1机器人系统,可进行基础的激光雷达2维建图与导航功能,可用手机APP辅助控制,还有雷达追踪,视觉识别与跟踪等扩展功能。\n\n开源链接:[https://oshwhub.com/liguanxi/mini-smart-car]\n#星火计划2024# #ESP8266/32# #Linux#
开源项目:P1自动驾驶仪(飞控)\n\n简介:ArduPilot固件做的一款自动驾驶仪,适用于实验室开发,行业应用,\n\n开源链接:[https://oshwhub.com/shuyedeye/p1-flight-control]\n#星火计划2024# #STM单片机#
优质硬件创作分享平台
推荐话题 换一批
#嘉立创PCB#
#畅聊专区#
#DIY设计#
#PCB有什么好玩的#
#星火计划2024#
#嘉立创#
#ESP8266/32#
#WiFi/以太网#
查看更多热门话题
粤ICP备2023121300号 · 用户协议 · 隐私政策 · 侵权举报 · ISO/IEC · Copyright © 2024 嘉立创社区版权所有
服务热线:18682363881 ·  服务时间:周一至周六 9::00-18:00 · 联系地址:中国·深圳(福田区商报路奥林匹克大厦27楼) · 媒体沟通:pr@jlc.com · 集团介绍