1. 安装OpenVpn客户端

iphone上的openvpn客户端是OpenVpn Connect。

但是该app在国内市场已下架, 所以需要国外区域的appid来下载。

外国的appid可以自己注册,也可以通过其他途径获取。

比如在tb上买一个美国的账号:

 account : a@icloud.com
 passwd  : p

在“设置”-个人信息-“ITunes Store与App Store”里面重新登入新的appid。

然后就到App Store搜索OpenVpn Connect就可以得到此app。

- 阅读剩余部分 -

Redis 的所有数据皆存储在内存中, 虽然现在内存越来越便宜, 但是相对于硬盘来说还是很昂贵, 因此如何高效利用Redis内存变得很重要。

内存消耗

内存消耗不可避免,但是可以通过调整参数和合理利用来规避内存浪费。 Redis内存消耗分为进程自身消耗和子进程消耗。

1. 内存使用统计

首先需要了解Redis自身使用内存的统计数据, 可以通过执行 info memory 命令获取内存相关指标。

- 阅读剩余部分 -

缓存的收益和成本分析

收益如下:

1. 加速读写,因为缓存通常是全内存的,如redis,而存储层的读写性能通常不够强悍,如MySQL,通过缓存可以有效加速读写,优化用户体验。
2. 降低后端负载,帮助后端减少访问量和复杂计算,很大程度上降低了后端负载。

成本如下:

1. 数据不一致,根据更新策略的不同,会存在存储层与缓存层数据不一致的情况。
2. 代码维护成本,加入缓存后,需要同时处理缓存层和存储层的逻辑,增加了开发者维护代码的成本。
3. 运维成本,增加了缓存服务器。

- 阅读剩余部分 -

应用场景

商家划定了服务范围, 判断用户所在位置是否在商家的服务范围等场景。

思路:

  1. 假设点在三角形内, 则点将三角形分成3个小三角形;
  2. 点分成的三个小三角形的面积之和一定等于原来三角形的面积;
  3. 如果点不在三角形内, 点也可以与原来的三角形三个顶点组成三个三角形;
  4. 点与三个顶点组成的三个三角形面积之和一定大于原三角形面积;
  5. 上述问题改成求三角形面积的问题;
  6. 考虑到php的float计算不精确的问题,比较的时候可能会存在误差,这里应该用精确计算函数BC Math;
  7. 坐标仅支持两位小数。

CODE

- 阅读剩余部分 -

应用场景

从标题来看这时两个需求:

一个是固话和手机号的自动解析, 比如某输入框同时支持手机号、固话、手机号加固话三种联系方式的输入, 但是在后台我们需要将手机号和固话保存到不同的数据字段上,便于后期做数据分析。

另一个是固话和手机号的严格校验,这里说的严格校验其实并不严谨,只能说尽量严格,比如手机号11位并且1开头,还不能是11、12等,固话要带区号,每个区号下面的固话位数是7位或8位,还要支持分机号等。

解决方案

  1. 针对11位移动电话 (mobile);
  2. 针对带3位区号加8位座机号的固定电话(tel);
  3. 针对带4位区号加7或8位座机号的固定电话(tel);
  4. 针对以上2和3场景加1到4位的分机号(tel);
  5. 针对10位的400或800电话(corp);
  6. 针对以上固话的场景,不带区号并且提供了市级行政单位名的,自动补全区号。
  7. 针对以上所有场景,允许固话区号和座机号以及分机号之间通过空格或者横杠分开;允许手机号在满足344,335,353,443,434,533(甚至满足前3后3在一起之后中间可以任意拆分)的前提下使用空格或者横杠分开;允许400或800电话在满足 334,343,433的前提下使用空格或者横杠分开。

- 阅读剩余部分 -