设置,你所不知道的权限

我们知道Android中权限分为 normal, dangerous,其实官方介绍中还有signature and special

正常权限,对用户风险小,声明后系统会在安装时自动授予该应用该权限。不提示用户授予正常权限,用户无法撤消这些权限。

危险权限,涉及用户隐私,需要用户授权。且用户授权后也可以再修改拒绝。所以每次使用危险权限时都得先检查用户是否赋予该权限。

签名权限则是相同签名的应用可以使用。

特殊权限,与正常、危险权限不同,特别敏感。SYSTEM_ALERT_WINDOWWRITE_SETTINGS

Read More

蓝牙和WIFI在智能硬件中的应用

某天加班后在一个苍蝇馆子吃完饭开发票。老板娘用手机将公司信息录入后一个黑暗的角落里付出了吱吱..吱吱吱的打印声,整个店里面没有电脑。好奇解决小店摆不下电脑,不会使用电脑,不愿多花钱买电脑的黑科技如何实现手机连接打印机打印发票

手机无线传输有三种,蓝牙、WIFI,还有NFC。这种场景下可以排除NFC。

在我古老认知中,蓝牙可以传照片、文件,还有蓝牙耳机。

WIFI可以上网,还有在换手机时备份数据也是用WIFI。

Read More

人脸支付怎么敢采用后4位手机号

我们的人脸支付产品只需要后4位手机号(用户号码)即可辨识用户,这是比支付宝、微信自助机,蜻蜓优秀的地方(需要11位手机号)。但是今天猛然发现唯一的优势不再。

优势是一种市场说法,对于技术人来讲,原理是少量用户比对。因为注册用户少,用户号码能做到1:1,个别需要1:N(N<=4)。所以目前用户体量下无需担心影响用户体验。而支付宝、微信用户体量那么大,采用11位手机号才能1:1。

支付宝、微信到底如何做到只需后4位用户号码,甚至不需要输入手机号的呢?

支付宝用户超10亿

去除海外用户

去除尚未开通刷脸支付用户[后期越来越多]

剩下的数据依然庞大,还能怎么办呢?

Read More

C++模板多类型形参

C++模板与Java泛型有共通之处,为了参数化代码。所以也疑惑C++中的类模板是否与Java泛型相同只能指定一个类型?
C++模板格式
1、 函数模板格式

1
2
3
template<typename T1, typename T2, ...> 返回类型 函数名(参数列表){
...
}

2、类模板格式
1
2
3
template<typename T1, typename T2, ...> class 类名{
...
};

Read More

刷脸支付-人脸比对效率

支付宝、微信刷脸支付时都要求先输入手机号,再刷人脸支付。马上刷脸付输入手机后4位,再刷脸认证支付。
都刷脸了,为啥还要输入手机号,不如掏出手机扫一扫。极其不理想
这个问题主要由目前人脸识别算法处理方式导致。我们基于传统业务想象中,应当是

  1. 抓取人脸
  2. 提取特征
  3. 查询验证数据
  4. 支付

如此,果然不再需要手机号。但是“基于人脸特征点的识别算法”,提取的特征并非是唯一数值可供直接比对查询。需要与所有特征点计算以匹配度最高来判断(1:N)。所以真实流程是
1.抓取人脸
2.提取特征
3.查询所有用户特征计算
4.获取最匹配数值与阈值比对
5.支付
如果输入了全的手机号后,就不再有耗时的1:N,而是1:1。
以上

推荐
支付宝怎么敢采用后4位手机号人脸支付

— END —
分享程序员所看、所想、所悟、所望

支付是同步还是异步

我们一直认为支付是异步的,从未有过其它可能。最近却被收银员实力打脸。线下门店支付时,平台告诉收银员支付中,客人拿走商品后最终却支付失败,谁来买单?谁背锅?如何面对这样的声色俱厉?

异步支付

异步双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,同时在结束时有停止位。
异步的另外一种含义是计算机多线程的异步处理。与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。
以上是百度百科的概念。所以我们的支付服务一定是异步处理接收、查询支付最终结果,否则所有请求都处于等待支付状态,服务器资源不够,带宽不够,无法支撑大并发。
但是我们仍然无法如此回怒收银员。所以我们要告诉她我们是“
同步支付”(对,就是这么没节操)。

Read More