2024

计算几何-凸包(一)

1.定义

凸包(Convex Hull):凸包指的是包含一组点集合中所有点的最小凸多边形或凸多面体。简而言之,凸包是一个尽可能紧密包围给定点集的凸形状。橡皮筋绷紧后形成的一个凸多边形就是一个凸包。

凸集(Convex Set): 凸集是一个具有特定性质的点集合,即对于该集合内的任意两点,连接这两点的线段上的所有点也都在该集合内。凸包是一个给定点的最小凸集。

凸组合(Convex Combination): 凸组合是指在向量空间中取一组向量,并用非负的标量权重对这些向量线性组合,使得权重之和等于 1。一个点集的凸包是由该点集生成的所有可能凸组合组成的集合。例如在两个点AB组成的线段作为凸包的场景中,凸组合可为AB间的任意一点。而所有的凸组合的点构成了 AB 这个凸包线段。又比如在ABC形成的三角中,凸组合可为三角内部的任意一点,而这些点集组合成了 ABC 这个凸包。

bfcache处理

最近业务上遇到个问题:

项目里有两个app,当页面初始化的时候会跑一段代码codeA将url中的一些参数存储到WebStorage中。

当从appA跳转到appB,然后使用浏览器自带的返回按钮返回appA时,发现WebStorage中的参数还是appB的参数,也就是appA的初始化时的代码codeA没有跑。

查询过后发现是触发了浏览器的bfcache机制。

页面卸载时向后端发送接口

工作中遇到一个需求,需要在用户关闭或者刷新页面时向后端发送该用户的身份信息。

浏览器页面卸载时会触发beforeunload和unload事件,由于unload限制比较多,因此这里选择了beforeunload。

问题:常用的异步ajax请求在unload/beforeunload事件内是不可靠的,浏览器可能会无视异步请求从而导致后端收不到。可以使用下述方法。

JS 垃圾回收机制

当我们创建对象时,js 会在内存空间开辟地址来存放这个对象的内容。随着软件的运行,创建的对象会越来越多,而当新创建的对象不断添加,不再被使用的老对象却没有被及时清理时,内存占用就会越来越多,造成程序的运行缓慢直到崩溃。这个过程就称为内存泄漏(Memory Leak)