精华内容
下载资源
问答
  • Mysql实现查询5分钟之前的数据

    万次阅读 热门讨论 2019-09-24 14:18:24
    在做交易项目的时候需要一个定时补偿来把交易异常失败但是能继续跑的交易继续跑下去,要求是5分钟跑一次程序,逻辑比较简单,就贴一个查询语句吧 SELECT * FROM 表名 t WHERE 条件一 AND 条件二 AND t.时间 <= ...

    在做交易项目的时候需要一个定时补偿来把交易异常失败但是能继续跑的交易继续跑下去,要求是5分钟跑一次程序,逻辑比较简单,就贴一个查询语句吧

    SELECT  * FROM 表名 t WHERE 条件一 
    AND 条件二
    AND t.时间 <= CONCAT(date_format(DATE_SUB(NOW(), INTERVAL 5 MINUTE),'%Y%m%d%H%i%S'),'000')
    LIMIT 0, 1000  ORDER BY t.时间 DESC
    

    这里我们的时间是yyyyMMddHHmmssSSS的字符串格式
    如果是日期格式就可以把转字符串的去掉
    如下:

    SELECT  * FROM 表名 t WHERE 条件一 
    AND 条件二
    AND t.时间 <= DATE_SUB(NOW(), INTERVAL 5 MINUTE)
    LIMIT 0, 1000  ORDER BY t.时间 DESC
    


    展开全文
  • 想知道自己30分钟能“走”多远嘛?

    万次阅读 多人点赞 2020-12-21 23:16:39
    想知道自己30分钟能“走”多远嘛?前言一、获取数据1. 交通生活圈数据2. 城市区域数据3. 城市数据4. 完整代码二、30分钟交通生活圈1. 数据分析2. 完整代码写在最后 前言 昨天在网上瞎逛的时候,看到了一个概念——...

    前言

    昨天在网上瞎逛的时候,看到了一个概念——交通生活圈,经过一番查阅后,约模知道了它的意思:在现有交通状况下,在一定的时间内乘坐现有交通工具你能抵达的范围(ps.通常是指驾车)。
    简单来说,就是:“30分钟内你能走多远?
    正好某德地图上也有类似的数据,效果如下:
    在这里插入图片描述
    它包含了20分钟、30分钟、45分钟、60分钟、90分钟这5类数据,它范围即对应的交通生活圈。感觉很厉害的鸭子~

    于是,我决定自己探索一番…

    一、获取数据

    1. 交通生活圈数据

    打开浏览器的F12调试工具,监听网络请求:
    在这里插入图片描述
    其接口地址为:

    https://report.amap.com/ajax/life/circle.do
    

    有3个参数,对应的说明如下:

    参数 说明
    districtId 表示区域的ID
    dir 0表示出发地,1表示目的地
    timeIndex 表示数据的时间

    那么,可以定义获取数据的函数:

    def get_data(disID):
        '''
        获得交通生活圈数据
        '''
        url = 'https://report.amap.com/ajax/life/circle.do'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
            'X-Requested-With': 'XMLHttpRequest',
            'Connection': 'keep-alive',
            'TE': 'Trailers',
        }
        hour = time.strftime('%H',time.localtime(time.time())) # 当前小时
        params = (
            ('districtId', disID),
            ('dir', '0'),
            ('timeIndex', hour),
        )
        res = requests.get(url, headers=headers, params=params)
        data = res.json()
        return data
    

    返回的数据为JSON格式,为一个列表,包含5个子列表,每个列表分别表示20分钟、30分钟、45分钟、60分钟、90分钟的数据。
    本以为到这里就大功告成了,然而我们发现districtId为类似“B0FFFDS1JU”的字符串编码,不便于直接利用,因此需要找到它的来源。

    2. 城市区域数据

    同样是通过F12抓包分析,可以找到一个请求,它可以返回每个城市对应的区域及相关信息(包括了我们苦苦寻找的districtId)。那么,便可以定义相应的函数:

    def get_id(cityID):
        '''
        获得城市区域ID
        '''
        url = 'https://report.amap.com/ajax/life/districts.do'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
            'X-Requested-With': 'XMLHttpRequest',
            'Connection': 'keep-alive',
            'Referer': 'https://report.amap.com/life.do?city=420100',
            'TE': 'Trailers',
        }
        params = (
            ('cityCode', cityID),
        )
        res = requests.get(url, headers=headers, params=params)
        data =res.json()
        return data
    

    通过传入城市ID,便可得到其下区域的相关信息:
    在这里插入图片描述
    如出一辙,传入的参数为城市ID,这并不直观,我们无法很快知道每个城市对应的ID是什么。
    正所谓:“探索尚未结束,同志仍需努力…”

    3. 城市数据

    如法炮制,我们找到了获取城市数据的接口,并定义如下函数:

    def get_city():
        '''
        获取城市信息(城市名、城市ID等)
        '''
        url = 'https://report.amap.com/ajax/getCityInfo.do'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
            'X-Requested-With': 'XMLHttpRequest',
            'Connection': 'keep-alive',
        }
        res = requests.get(url, headers=headers)
        data = res.json()
        return data
    

    其结果如是:
    在这里插入图片描述

    4. 完整代码

    为了更加方便地获取数据,将以上函数整合在一起,完整的代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Mon Dec 21 15:14:42 2020
    
    @author: kimol_love
    """
    import os
    import time
    import json
    import requests
    
    def get_city():
        '''
        获取城市信息(城市名、城市ID等)
        '''
        url = 'https://report.amap.com/ajax/getCityInfo.do'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
            'X-Requested-With': 'XMLHttpRequest',
            'Connection': 'keep-alive',
        }
        res = requests.get(url, headers=headers)
        data = res.json()
        return data
    
    def get_id(cityID):
        '''
        获得城市区域ID
        '''
        url = 'https://report.amap.com/ajax/life/districts.do'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
            'X-Requested-With': 'XMLHttpRequest',
            'Connection': 'keep-alive',
            'Referer': 'https://report.amap.com/life.do?city=420100',
            'TE': 'Trailers',
        }
        params = (
            ('cityCode', cityID),
        )
        res = requests.get(url, headers=headers, params=params)
        data =res.json()
        return data
        
    def get_data(disID):
        '''
        获得交通生活圈数据
        '''
        url = 'https://report.amap.com/ajax/life/circle.do'
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
            'X-Requested-With': 'XMLHttpRequest',
            'Connection': 'keep-alive',
            'TE': 'Trailers',
        }
        hour = time.strftime('%H',time.localtime(time.time())) # 当前小时
        params = (
            ('districtId', disID),
            ('dir', '0'),
            ('timeIndex', hour),
        )
        res = requests.get(url, headers=headers, params=params)
        data = res.json()
        return data
    
    if __name__ == '__main__':
        # 获取城市信息
        cityInfo = get_city()
        
        # 输入城市及片区
        while True:
            cityName = input('请输入城市:')
            flag = 0
            for city in cityInfo:
                if cityName == city['name']:
                    cityID = city['code']
                    disIDs = get_id(cityID)
                    if len(disIDs) == 0:
                        flag = 1
                    else:
                        flag = 2
                    break
            if flag == 0: # 如果没有该城市
                print('未找到相关城市!')
            elif flag == 1: # 如果该城市没有数据
                print('该城市无数据!:')
            elif flag == 2: 
                break
        print('-'*20)
        print(('0==>所有').ljust(10))
        for i in range(len(disIDs)):
            print(('%d==>%s'%(i+1, disIDs[i]['name'])).ljust(10))
        print('-'*20)
        while True:
            index = int(input('请选择:'))
            if index not in range(len(disIDs)+1):
                print('输入错误!:')
            else:
                break
        
        # 下载数据
        if not os.path.exists('./data'):
            os.mkdir('./data')
        if index == 0: # 全部下载
            if not os.path.exists('./data/%s'%cityName):
                os.mkdir('./data/%s'%cityName)
            for i in range(len(disIDs)):
                disID = disIDs[i]['id']
                data = get_data(disID)
                data.append(disIDs[i]['center']) # 加入中心点
                data = json.dumps(data)
                with open('./data/%s/%s.json'%(cityName,disIDs[i]['name']), 'w') as f:
                    f.write(data)
                    print('"%s"获取成功!'%disIDs[i]['name'])
        else:
            disID = disIDs[index-1]['id']
            data = get_data(disID)
            data.append(disIDs[index-1]['center']) # 加入中心点
            data = json.dumps(data)
            with open('./data/%s.json'%disIDs[i]['name'], 'w') as f:
                f.write(data)
                print('"%s"获取成功!'%disIDs[i]['name']) 
    

    注:为了便于后续地分析,我们将数据append了一个列表(区域的中心位置),因此data一共包含6个列表:5类数据+中心点位置。

    俗话说得好,好用不好用,拉出来run一run:
    在这里插入图片描述
    电闪雷鸣之间,只见所有的数据默默地躺入了我温暖的怀抱~
    至此,数据获取的探索便可暂告于段落。

    二、30分钟交通生活圈

    1. 数据分析

    有了数据,通过分析我们便可知道30分钟自己能“走”多远了。这里我们用到了Python中的folium库,它是一个交互式地图库,允许我们调用地图接口进行可视化分析。其安装方法如下:

    pip install folium
    

    首先,定义读取数据的函数:

    def read_data(path, Type=30):
        '''
        读取交通生活圈数据(有20分钟、30分钟、45分钟、60分钟、90分钟)
        '''
        typeMap = {20:0,
                   30:1,
                   45:2,
                   60:3,
                   90:4}
        with open(path, 'r') as f:
            data = f.read()
        data = json.loads(data)
        center = data[-1]
        data = data[typeMap[Type]]
        return (center, data)
    

    读取数据(以成都的牛王庙为例):

    center, data = read_data('./data/成都/牛王庙.json')
    data.append(data[0])
    for i in range(len(data)): # 交换经纬度,很重要
        data[i] = [data[i][1],data[i][0]]
    

    data.append(data[0])是为了使数据形成一个闭环,这样方便在地图上表示出来。
    定义地图,并设定相关参数:

    Map=folium.Map(location=[center[1],center[0]],
            zoom_start=11,
            tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
            attr='default'
        )
    

    在地图上标出起始点:

    folium.Marker([center[1],center[0]],
              popup=folium.Popup('牛王庙',max_width=1000),
              tooltip='出发点'
             ).add_to(Map)
    

    在地图上画出30分钟交通生活的区域:

    folium.Polygon(data,
                   color='#7C9F59',
                   fill=True).add_to(Map)
    

    将地图保存到本地:

    Map.save('30分钟交通生活圈.html')
    

    打开HTML之后,效果如下:
    在这里插入图片描述
    绿色区域意味着,在当前的交通情况下,我从牛王庙出发,我可以到达的范围,即30分钟我能“走”多远~

    2. 完整代码

    这一部分的完整代码如下:

    # -*- coding: utf-8 -*-
    """
    Created on Mon Dec 21 18:58:34 2020
    
    @author: kimol_love
    """
    import json
    import folium
    
    def read_data(path, Type=30):
        '''
        读取交通生活圈数据(有20分钟、30分钟、45分钟、60分钟、90分钟)
        '''
        typeMap = {20:0,
                   30:1,
                   45:2,
                   60:3,
                   90:4}
        with open(path, 'r') as f:
            data = f.read()
        data = json.loads(data)
        center = data[-1]
        data = data[typeMap[Type]]
        return (center, data)
    
    if __name__ == '__main__':
        center, data = read_data('./data/成都/牛王庙.json')
        data.append(data[0])
        for i in range(len(data)): # 交换经纬度,很重要
            data[i] = [data[i][1],data[i][0]]
        Map=folium.Map(location=[center[1],center[0]],
                zoom_start=11,
                tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
                attr='default'
            )
        folium.Marker([center[1],center[0]],
                  popup=folium.Popup('牛王庙',max_width=1000),
                  tooltip='出发点'
                 ).add_to(Map)
        folium.Polygon(data,
                       color='#7C9F59',
                       fill=True).add_to(Map)
        Map.save('30分钟交通生活圈.html')
    

    写在最后

    至此,我们大致知道了30分钟自己能“走”多远了~

    这里主要是从交通通行情况的角度出发,如果非得说坐飞机、坐火箭、坐大炮啥的。别问我,问了我也不知道(手动捂脸)~

    其实,这个数据还可以尝试从更多地角度分析,比如可以计算出30分钟最大抵达半径,并进一步比较不同城市的大小等等。如果有感兴趣的小伙伴,可以试试哦。

    我是kimol君,咋们下次再会~
    在这里插入图片描述
    创作不易,大侠请留步… 动起可爱的双手,来个赞再走呗 (๑◕ܫ←๑)

    展开全文
  • @Configuration public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } }
  • 1 清华大学的RealAI 团队15分钟解锁19款手机 刚刚,清华大学的一条重大发现,利用人脸识别技术的漏洞,“ 15分钟解锁19个陌生智能国产手机 ”的事件,引发无数网友关注。 据悉,清华大学的RealAI 团队共选取了 20 款...

    1 清华大学的RealAI 团队15分钟解锁19款手机

    刚刚,清华大学的一条重大发现,利用人脸识别技术的漏洞,“ 15分钟解锁19个陌生智能国产手机 ”的事件,引发无数网友关注。

    据悉,清华大学的RealAI 团队共选取了 20 款手机,其中1款是国外的,另外19款都是我们国产的智能手机,均来自排名前五的国产手机品牌,每一品牌下选取了 3-4 款不同价位的手机型号,覆盖低端机到旗舰机 。

    1)测试步骤如下:

    在这里插入图片描述

    • 第一步,清华大学的测试人员,把19部国产手机,人脸识别全部绑定为旁边的“ 1号同学 ”;

    • 第二步,让旁边的同学、同事,拿起他的手机,进行人脸识别。请注意,这里直接识别非绑定人员的面部是无法打开的;

    • 第三步:将1号同学的照片,特别是眼睛部位图案打印并裁剪出来,贴到我们平时戴的眼镜上面。然后,奇迹发生了,解锁成功了!

    据了解,研究团队选取了20款手机进行测试,除了一台iPhone 11外,其余安卓机型均在15分钟内破解。这19款手机覆盖排名前五的国产手机品牌的低端机到旗舰机型。其中一款是某品牌在去年12月发布的最新款旗舰机。

    从被破解的程度上看,攻击这些手机的难度几乎没有任何区别,不管是低端机,还是售价4000以上的高端手机,全都解锁成功。

    除了破解手机面部解锁系统,研究团队还通过对抗样本攻击,通过了一些政务、金融类的App人脸识别认证,甚至假冒机主,在线上完成银行开户。

    据介绍,虽然开发出核心算法的难度很大,但如果有黑客恶意开源这一算法,就会极大降低破解的难度。研究人员建议,人脸识别应用方可通过在认证过程中增加检验对抗样本的模块,来防范此类风险。

    2)那么新的攻击方式是如何实现的?

    据介绍,RealAI 使用的整个破解过程物理上只用到三样东西:一台打印机、一张 A4 纸、一副眼镜框。

    算法人员们介绍,他们在拿到被攻击者的照片后,通过算法在眼部区域生成干扰图案,然后打印出来裁剪为「眼镜」的形状贴到镜框上,测试人员戴上就可以实现破解,整个过程只花费 15 分钟左右。

    在这里插入图片描述
    左一为被攻击对象的眼部图像,右一、右二为生成的对抗样本图案。

    与生成对抗网络 GAN 的对抗样本类似的是,「眼镜」上的花纹虽然很像复制了被攻击者的眼部图案,但其实并没有这么简单。算法人员表示,这是结合攻击者的图像与被攻击者的图像通过算法计算生成的扰动图案,在 AI 学界称为「对抗样本」。

    将攻击者图像设定为输入值,被攻击者图像设定为输出值,算法会自动计算出最佳的对抗样本图案,保证两张图像相似度达到最高值。

    看似粗糙的攻击手段,核心的对抗算法研发其实极具技术门槛。

    但这也并不意味这一安全问题构不成威胁,RealAI 团队表示,「虽然开发出核心算法难度很大,但如果被黑客恶意开源的话,上手难度就大大降低了,剩下的工作就只是找张照片。」言外之意就是,只要能拿到被攻击对象的 1 张照片,大部分人都能很快制作出犯罪工具实现破解。

    对抗样本攻击,从实验室走进现实

    对抗样本攻击的概念其实并不新颖,2013 年,Google 研究员 Szegedy 等人发现机器学习容易遭受欺骗,通过故意在数据源上添加细微扰动,就可以让机器学习模型作出错误输出,对抗样本攻击也被视为 AI 安全领域的一大隐忧。

    在这里插入图片描述
    在某些神经网络中,这张图像被认为是熊猫的置信度是 57.7%,且其被分类为熊猫类别的置信度是所有类别中最高的,因此网络得出一个结论:图像中有一只熊猫。但是,只需要添加少量精心构造的噪声,可以得到一个这样的图像(右图):对于人类而言,它和左图几乎一模一样,但是网络却认为其被分类为「长臂猿」的置信度高达 99.3%。

    2人脸识别风险问题屡屡发生

    人脸识别到底存在哪些风险?风险又有多大?这些问题其实已经经常发生在社会里。

    1) 董明珠闯红灯了?原来是大巴车上的广告被人脸识别搞错了

    在这里插入图片描述
    比如之前就发生过,交通摄像头把大巴车上的董明珠广告人像错当成横穿马路的行人进行了抓拍,还在旁边打出了“桥东违法闯红灯”的字样,该事件还上了热搜榜单;同样,在去年还发生了一起“小学生轻松破解丰巢刷脸取件”的热点事件,浙江小学生发现,用一张人像的打印照片即可轻松“破解”丰巢智能柜的“刷脸取件”,取出父母的快件。事件发酵后,丰巢紧急下线了该功能,并向公众回应称,“刷脸取件”是小范围推出的测试版本,已第一时间下线,并未造成用户损失。

    2) 人脸识别安全吗?罪犯的初中文化水平让人脸识别被打脸

    在很多人的眼里,苹果手机的安全性是要高于一般的安卓手机的。

    但广西法院近日公开的一份刑事判决书,不得不让人重新审视这个安全性, 判决书显示,2019年6月8日19时许,被告人黄某到柳州市一家二手手机店,欲在此店选购手机。黄某挑选手机时,看到被害人陈某已出售在此店的一部苹果牌手机,后发现陈某的微信、支付宝账户并未退出,遂购买了该手机。

    次日2时至9时期间,黄某在柳州市鱼峰区柳石路和九头山路路口处一树下,利用该手机内陈某的照片,制作了一张人脸识别动态图在支付认证时使用,以此方式分别从陈某的微信账户、支付宝账户内转款人民币9100元、7500元至其个人账户。

    随后,黄某将该手机退还到原手机店,并将赃款挥霍。

    值得一提的是,1996年出生于广西壮族自治区柳州市的黄某,初中文化,无职业。

    3) 不能让“戴头盔看房”成为无奈

    近期,一则“戴头盔看房”的视频在网上流传。买房者为何要戴着头盔买房呢?许多人首先想到的是,他是不是怕被熟人认出来。但是通过调查发现,买房人并不是怕被熟人认出来,而是为了躲避售楼处的人脸识别系统。安装人脸识别装置,在一些地方的售楼处成为“标配”,其目的就是为了配合房企的“分销模式”,锁定购房者的身份,避免房企销售人员和中介的扯皮。
    在这里插入图片描述
    乍听起来,售楼处的这个举措,能够避免客户群体划分不清导致的争端,但仔细想想,购房者的隐私谁来保障呢?更有甚者,一旦购房者因为人脸识别系统被判定为“自然到访客户”,就不能享受到渠道优惠,也难怪购买者要戴着头盔来看房子了。

    人脸识别技术不能滥用,这在法律上已有明确的规定。在相关法律条款中都明确,信息收集者不仅要“明示收集、使用信息的目的、方式和范围”,而且必须“经被收集者同意”。就在近日,被称为“人脸识别第一案”的郭兵与杭州野生动物世界有限公司服务合同纠纷案一审宣判。在法律人士看来,宣判的结果意味着,当人们发现有单位或个人使用人脸识别设备且自己不愿意被识别,可以主动与对方沟通,要求其删除与自己相关的个人信息数据,必要时完全可以通过诉讼方式维护自己的合法权益。
    在这里插入图片描述

    2 大众点评:

    2.1 新民快评: 有关部门对于滥用人脸识别不能“赤裸裸”地无视

    在这里插入图片描述

    必须评估其使用的正当性、必要性、安全性,不能等到问题大了之后,再进行约束,这样就可能会面临更大的阻力。只有靠前一步进行监管,才能让人脸识别技术更好地造福社会,避免对于个人隐私的伤害。

    2.2 白岩松谈戴头盔看房:希望法律为我们戴头盔

    在这里插入图片描述

    2.3 支付产业网:刷脸支付存在着严峻的安全问题

    支付产业网看到,在公、检、法严谨的办案流程下,判决书中并未出现第三人相助,黄某仅凭一己之力就可以用受害人的照片生成了动态图,顺利通过了微信支付宝的支付认证。

    用户在微信支付和支付宝中的资金受到损失,无疑将会影响两者在用户心中安全性的评价。虽然微信支付和支付宝是调用了苹果手机的人脸识别接口,把身份认证交由苹果来确认,但丝毫不影响用户在支付机构的账户资金受损的事实。

    这同时也说明了刷脸支付存在着严峻的安全问题,即使如市值过万亿美元的苹果公司也未能彻底防住动态图的欺诈。
    在这里插入图片描述

    2.4 央行科技司司长李伟

    就在去年夏天,央行科技司司长李伟在一次会上表示,人脸是非常敏感的个人信息,一旦泄露或被盗取,会带来非常大的影响。现在有的技术在三公里之外可以识别人脸,如果人脸支付时,一刷脸钱就没了,一个场景不能表达客户的主观意愿是可怕的。所以有技术也不能滥用,有技术也不能任性。  在这里插入图片描述

    2.5 分析人士点评

    上个月,有分析人士撰文对刷脸支付的几点担忧。由于人脸的暴露性、被动性(不能够主动发起交易)和非接触性(不需要和设备直接接触),怎么界定是顾客主动支付的,还是被动的。

    过去,刷卡、扫码普遍有输入密码的过程,指纹至少也有去主动验证指纹的动作,这些行为都是客户交易意愿的诠释。

    而刷脸支付则使这些主动行为无从放置,后果就是客户有可能在不具有交易意愿的情况下“无感”支付而蒙受损失。

    2.6 技术专家点评

    新昕科技的CTO刘光昕则认为

    1. 刷脸支付并不安全,人脸作为公开的信息,拿人脸作为答案去验证的机制存在巨大问题,移动互联网时代不仅个人图片、甚至动态的视频在朋友圈分享, 如何保护我们的人脸是个巨大的问题。
    2. 指纹识别相对安全, 指纹被分享的可能性比较小, 但目前也存在被各中App恶意采集的可能。
    3. 短信验证则更安全, 由于短信验证码具有一次一码,所以短信验证还是作为支付、用户注册环节中的重要手段。

    但短信验证本身也存在被盗刷的风险 , 所以出现了各种烦人的图片验证码及滑动、点按之类的多余操作。 新昕科技则研发了独特的全无感短信防火墙,在无图形验证码的前提下, 确保短信验证码的安全 。

    相关阅读:
    比 REG007 更好用的查询手机注册网站的神器
    清华大学团队:人脸识别爆出巨大丑闻,15分钟解锁19款手机
    用照片做成动态图能从苹果手机盗走微信支付宝里的钱?
    支付宝风险控制怎么做到的 ?
    支付宝风控揭秘-2-在线支付及风险防范实务
    黑客想要转走你支付宝里的钱会怎样? AlphaRisk 如何对抗 ?
    揭秘支付宝风控-1-复合事件处理
    去哪儿风控揭秘(1)-如何对付网银大盗(木马钓鱼)
    最早的支付网关(滴滴支付)和最新的聚合支付设计架构

    展开全文
  • 燃烧一根不均匀的绳子需要一小时,怎么做才能问如何度量出半个小时,45分钟,75分钟? 这道题目的一个难点就是不均匀,所以并不是从一端烧到绳子的中间就是半个小时。 度量半小时解法 第一个问题度量半个小时时最...

    一、简单概述

    在各位面试的时候,阿里、字节跳动等一些公司喜欢在进行C++开发面试的时候出一些智力题来考验大家的逻辑思路。烧一根不规则的绳子,计算时间就是其中的一道经典题目。

    二、烧绳子问题介绍

    燃烧一根不均匀的绳子需要一小时,怎么做才能问如何度量出半个小时,45分钟,75分钟?

    这道题目的一个难点就是不均匀,所以并不是从一端烧到绳子的中间就是半个小时。

    三、解法思路

    想解出烧绳子的问题,有两个关键度量时间点30分钟和15分钟:

    1. 度量半个小时

    第一个问题度量半个小时时最简单的,绳子虽然是不均匀的,但是一根绳子完整烧完所用的时间是固定的。从两端烧绳子,等绳子全部烧完所用的时间就是半个小时。

    2. 度量15分钟

    已经可以度量出半个小时与一个小时了,所以想要度量出45分钟与75分钟只需要度量出15分钟就可以了。

    15分钟怎么度量的方法就是将半个小时的绳子从两端烧,绳子烧尽时所用的时间就是15分钟。而我们只有不均匀一个小时的绳子,从绳子两端烧尽可以获得半个小时,但是这根绳子不能用来进行15分钟的度量了,所以一个绳子是度量不出15分钟的,解决问题需要两根绳子。

    去两根绳子分别编号1和2,绳子1从两端开始烧,绳子2从一段开始烧。当绳子烧尽时,熄灭绳子2。此时绳子2燃烧尽所需要的时间就是半个小时,从绳子2两端烧的话燃尽就是15分钟。关键点15分钟已经可以度量出来的了,那么剩下的问题就迎刃而解了。

    四、具体解法

    1. 度量30分钟:

    取一根绳子,从两端燃尽所欲要的时间就是半个小时。

    2. 度量15分钟:

    取两根绳子,第一根从一段燃烧,另二根从两端同时燃烧。当第二根燃尽的时候,将第一根剩余绳子从两端燃烧,第一根绳子剩余从两端燃烧耗尽所需要的时间就是15分钟。

    3. 度量45分钟:

    取两根绳子,采用上述方法所需的总时间就是45分钟(30+15)

    4. 度量75分钟

    取三根绳子,其中两根采用上述方法得到燃尽需要半个小时的绳子,然后从两端烧燃尽需要15分钟,取第三根绳子从一段烧,总共需要75分钟(15+60).

    展开全文
  • java时间转换,分钟转天小时分钟

    千次阅读 2020-06-03 15:47:27
    java时间转换,分钟转格式为天小时分钟,给前端做展示使用 public static String turnDayHourMinuteString(int minute) { //如果传入的分钟是0,默认24小时 if (0 == minute) { return 24 + "小时"; } //如果...
  • <!-- 开发环境版本,包含了有帮助的命令行警告 --> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <!-- 引入组件库 --> <script src=...
  • 面试经常会被问到的节流和防抖,一分钟理解

    万次阅读 多人点赞 2020-09-02 22:32:09
    分钟学会它们。 微信搜索 【web小馆】,回复 ”全栈博客项目“,即可获取 项目源码和后续的实战文章教程。 这里写目录标题一,防抖1,定义和原理2,用处一,节流1,定义和原理2,用处 一,防抖 1,定义和原理 ...
  • 这里讨论的不是如何画k线,而是如何生成特定周期k线的最高价,最低价,开盘价,收盘价。...但怎么生成3分钟,5分钟,10分钟,15分钟的k线呢? 从群里的讨论,目前有两种方式: 1、利用tick.datetime.minute, 如
  • 分钟转换为小时加分钟方法

    千次阅读 2017-11-02 18:35:00
    分钟转换为小时加分钟方法 140分 ==> 2时40分 求除以60剩下的数,作为分钟 <?php functionconvert($num){//140分==>2时40分求除以60剩下的数,作为分钟 $xiaoshi=floor($num/60);//取小时 i...
  • 3分钟内实现人脸检测

    万次阅读 多人点赞 2019-10-09 09:44:03
    人脸检测是人工智能最常见的应用之一。从智能手机的摄像头应用到Facebook的标签建议(Tag Suggestions),人脸检测的应用每天都...在这篇文章中,我将教你如何在3分钟内为自己建立一个人脸检测程序。 你需要安装以下p...
  • 题目要求:编制程序,将引导用户输入分钟制的时间,并将其转换为小时和分钟并存的形式,返回给用户 话不多说,上代码: #include <stdio.h> //题目:将输入的分钟数转换为用小时和分钟表示 int main() { //...
  • Java 秒数分钟转小时分钟

    千次阅读 2018-10-30 15:56:33
    //Util.java public static String getHour(String date) { //秒数 // Integer dt = Integer.parseInt(date) ; // if (dt &lt; 3600) return Math....分钟"; // int hour = Math.round(dt / 3600);...
  • mysql按天,小时,半小时,N分钟分钟进行数据分组统计mysql不同时间粒度下的分组统计按天统计按小时统计按半小时统计按N分钟统计按分钟统计 mysql不同时间粒度下的分组统计 我们在做项目或者数据分析时,经常遇到...
  • 手把手教你1分钟接入腾讯地图

    万次阅读 2020-12-19 14:46:03
    一篇直接上干货的文章,只需要1分钟手把手教你通过Web端直接接入腾讯位置服务中的地图服务。。 好上干货。在上干货的前,先去腾讯位置服务注册一个用户以便获得相应的key(不注册也可以)。 好,咱们正式开始,仅...
  • 比如定时任务的需求:间隔 多少秒/分/时( 每隔99秒,每隔100分钟执行等) 每隔90分钟执行一次 90*2= 180 = 3个小时 需要添加2个cron,间隔3小时 表达式: cron1 0 30 1/3 * * ? (1.30,4.30,7.30,,,,) c...
  • 假如只有time,quality两个字段,现在的时间是一分钟一条的粒度,想把它变成30分钟粒度的,quality字段将30分钟的数据相加!
  • 此为示例代码,详解讲解请参考 http://blog.csdn.net/sinyu890807/article/details/9255575
  • 分钟了解自动化测试

    万次阅读 多人点赞 2018-07-29 11:34:30
    ## 引子 ...本文共有2410字,阅读需要大约一分钟。 首先我们从招聘岗位需求说起。看近期的职业机会,提到“软件测试工程师”,基本上都有关于自动化测试的要求。例如: 了解 selenium、ap...
  • [转载]一分钟讲明白区块链数据不可篡改和51%攻击原理 如果你回家过年需要向亲戚朋友讲区块链,这篇文章能让你一分钟讲明白区块链最大的优点——数据不可篡改。 图片发自简书App 第1章 不可篡改的数据库其实并...
  • 使用wordpress在百度云免费搭建个人网站,2分钟即可学会,10分钟即可建成!适用于任何大神与小白!–杜凯杰 有人私信给我说,让我发点前端的知识,数据获取的一个重要渠道就是网站数据的爬取,写爬虫又必须了解些...
  • Java线程池,你五分钟讲完,而我和面试官聊了半小时 找Java工作的时候,线程池是一个必问的知识点,面试时,有的人只能讲五分钟,而有些人可以讲半个小时,差别在哪?在于知识的深度。下面几个面试高频题,你会吗?...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 264,655
精华内容 105,862
关键字:

分钟