/images/avatar.svg

谷中仁的博客

所有文章观点仅代表本站观点,与他人无关。

Js 数据精度之 521.3*100

原罪

1
2
> 521.3*100
< 52129.99999999999

用你的浏览器来执行上面的计算,你应该能得到这个神奇的结果(52129.99999999999)。 Why?

JS 数字丢失精度的原因

1
2
 s eeeeeee eeeeffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
|1|       11   |                    52                                  |

1 位用来表示符号位 11 位用来表示指数 52 位表示位数

对 forEach 和 for 两种循环类型中执行异步函数的复盘

问题

有这么一个需求,有一个合法的数组,需要每隔 3 秒执行一个异步函数,直到最后得到所有异步函数执行结果。

伪解决方案

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// testForEach.js
const sleep = () => {
  return new Promise((resolve, reject) => {
      setTimeout(resolve, 3000)
  })
}

const getDifferent = (startDate, endDate) => {
  return Math.floor((endDate - startDate) / 1000)
}

const startDate = new Date()
let list = [1, 2, 3, 4, 5, 566, 7, 78, 8, 89, 9, 0]

async function testForEach() {
  let promiseList = []
  list.forEach(async item => {
      console.log('================1forEach================')
      await sleep()
      promiseList.push(await item * 2)
      console.log('================2forEach================')
  })
  const result = await Promise.all([...promiseList])
  const endDate = new Date()
  console.log(getDifferent(startDate, endDate))
  return result
}
testForEach().then(result => {
  console.log(result)
})

解释就是

sleep 函数用来等待函数执行;

Test With 3rd Party Library

场景

一般的前端开发情况下,我们都会用到其他的第三方库,比如 UI 库 Ant Desgin, 请求库 axios 等,通常对于 UI 库,我们可以通过快照等操作对其进行测试,但是对于像 axios 这类第三方库,我们必须通过 mock 的方式来实现。

导出并保存 GPG 公密钥

简介

GPG 是开源免费的身份验证工具,简单一句话就是对于公钥使用者可以和密钥拥有者秘密通信;对于密钥使用者,可以像外界证明某句话是你说的;在现实场景中,你可以写了一份信,但是大家怎么知道这份信是你写的呢?如果你身边有熟悉你的人,那 TA 可以通过你的笔迹或者你家生产的信纸来知道这份信是你的,但是对于别人呢?他们对你不了解,所以他们很难证明:你就是你?

[翻译] 初探性能测试

什么是性能测试

https://www.guru99.com/images/why_performance_testing.jpg

性能测试是一种软件测试过程,用于测试特定工作负载下软件应用程序的速度、响应时间、稳定性、可靠性、可伸缩性和资源使用情况。性能测试的主要目的是识别和消除软件应用程序中的性能瓶颈。它是性能工程的一个子集,也被称为"Perf Testing"。

租房之弱势群体

最近忙完了结婚大事,按计划接下来要开始装修房子了,那么第一件事就是找个容身之地-租房。在陪着媳妇逛了太白南路的两个房子和航天城那边的一个房子,又约了装修公司来家里看情况,半天下来累的都不想动了。然而之前联系的一个小哥,给我们推荐了朱雀大街上的一个酒店式公寓。在媳妇的催促下,只好抱着试试看的心态去看房。

成长性思维

人总是要成长的,尤其在毕业之后,进入社会这所大学,你所有的行为都得自己负责。

最好的方式,就是让自己成长,只有不再犯错或者可以避免犯错,你才有更多的时间和能力去解决更复杂的问题,获得更多的人生财富。以下几个思维方式可以借鉴。

2021 01 Insight

Key words

你创造的服务只能满足一小部分人

企业家思维-发现问题,找到解决方案,规模化。

GIS 是个好东西,可惜在现在的传统行业中体现不出它的价值。既不能让大众使用,更不能让大众看,对比最明显的就是红绿灯,敢问哪个 ZF 部门做的 GIS 产品敢投放到群众经常出现的地方。

今年疫情不回家

疫情

2020 年,魔幻的一年,记得小学一年级的时候有个什么疫情,导致期末都没考试,下学期就直接上了二年级;五年级的时候在外面骑自行车把右胳膊给整折了,又在遇到了非典;接着就是各种国家大事,什么汶川地震,舟曲泥石流。….. 貌似二十一世纪就是多灾多难的一个世纪。

Tech Debt

缘由

做软件开发,不可避免的事就是用户需求的变化或者细化,和业务的不断迭代,那么对于开发者而言,最重要的事什么呢?我想有一条非常重要:及时将系统中存在的各种 bug,或者遗留问题快速解决。