0%

最近在做一款PCB加热台,可以给3D打印机用,也可以用来做贴片加热,当然,还有一个用途就是烧烤^_^。他的原理是利用金属铜的电阻效应来加热,功率P=U^2/R,其中U是PCB上铜箔两端的电压,R是铜箔的电阻值。

铜箔的电阻计算公式是R=ρL/S,其中ρ是金属铜的电阻率ρ=0.0175Ωmm^2/m(国际上,电阻率定义为横截面积为1平方毫米,长度为1米的导线的电阻),L是铜箔长度,S是横截面积。假设PCB是用1盎司的,它的厚度是35微米,布线线宽是1毫米,总长度为5米,则器电阻为0.0175x5/(1x35x10e-3)=2.5欧姆。用20V供电,其功率为20x20/2.5=160瓦。

这两天在弄一个小项目,纯js的,没用框架,所有东西都是一点点堆起来的,渲染的时候用到了模板引擎,相对于虚拟DOM,它更简单。原理上跟拼字符串差不多,但是它能实现结构和数据分离,看起来代码更清晰。

阅读全文 »

回文,是正读反读都能读通的句子。如何通过程序判断一个字符串是不是回文呢?最简单的方法就是把字符串反转,再与原字符串比较,如果相等那就是回文。但是如果再变换一下,比如html解析的时候,允许标签嵌套,但不允许标签交错,比如允许<div><p></p></div>不允许<div><p></div></p>,或者模板引擎匹配括号比如()[]{},但是不能是([)]这该如何处理呢?

阅读全文 »

esp8266在烧录固件的时候,如果先前已经烧录过其他不同固件,就有可能导致新烧写的固件无法工作,这时候就需要擦除整个flash,再从新烧录。

阅读全文 »

前几天碰到一个地方需要在js中判断一个变量是不是对象,参考了几个实现,都不一样,索性自己写一个。要判断变量类型,首先可能会想到typeof或instanceof,但是typeof只用于区分基本类型,instanceof只适合用于区分类的实例,这两个方法通过组合,也能判断出准确类型,但是太复杂,有没有简单点的方法呢?

阅读全文 »

前端开发经常会调用各种后端接口,这些操作都是异步的,有的接口还有并发限制,这时候就需要对接口调用进行管理,限制同时请求的接口数量,对于这种情况,一般都使用队列来解决并发问题。其难点在于异步流程的设计。

举一个简单的例子:我们想了解某个网站提供的一系列数据,从这些数据做辅助分析,所以需要获取大量数据,但是这个网站做了并发限制,同一时间内最多有3次请求,如果超了,就会返回错误,如果我们不处理并发,后面就会一直得到报错。

阅读全文 »

上次用js实现了一个简单的中间件,它在同步的中间件中工作的很好,但是涉及到异步操作的时候就GG了,如何实现一个支持异步的中间件呢?回想一下,我们调用中间件时使用的是map来便利数组,这个动作本来就是同步的,如果中间件中有异步,也就丢失了,我们需要把遍历改成在next函数中去获取中间件并执行就可以了。

阅读全文 »

中间件可以在调用目标函数之前插入其他函数对数据预先进行处理,是一种很常见的模式。可以像流水线一样对数据进行层层加工,最终到达目标函数。它的实现可以通过在中间件中调用next更新游标,通过游标的值来确定是否进行下一步,游标是在中间件的框架中维护的。这也是js强大的地方。

阅读全文 »

前端大部分应用都是事件驱动的,如何自己动手实现一个事件系统呢?事件具有订阅和发布功能,还有频道。有时候还需要设计只执行一次的事件。原理非常简单,把事件回调用一个数组保存起来,触发的时候再按顺序从数组中取出来执行就行了,为了区分不同事件类型,需要用一个对象根据不同键值存放。

阅读全文 »

在用户注册流程中,经常会用到手机验证码,这种验证码通常是6位不重复数字。如何生成一个随机不重复的数字呢?
大致思路如下:
1.先生成一个从0到9的数组
2.把数组随机顺序打散
3.取出需要的6为数字

代码如下:

1
2
3
4
5
function randomCode (n) {
return [0,1,2,3,4,5,6,7,8,9]
.sort(()=>Math.random()-0.5)
.slice(0,n)
}