后台更新数据方案

阿邹
• 阅读 1400

当你遇到一些让你大吃一惊的解决方案的时候你不要惊讶,要学会低头去面试它,解决它。

最近公司项目要做个人脸识别,类似于门禁卡之类的。本来这也没什么,因为我接到任务后第一反应是这样的逻辑: 设备采集图片 --> 设备识别图片是否是人脸 --是人脸> 提交服务器进行身份识别 -> 服务器返回人物身份信息 我觉得这样的逻辑就是有点耗时。 然后根据公司需求是要做百度人脸的本地离线识别,也就是我要把服务器所有的人脸数据都放到本地来。enenen 当时头还是有点大的。 这种方案其实我个人来说是不太赞同的(哈哈哈 主要我懒) 怎么说呢?

如果你用户有一万个 等我同步一万个数据吗 数据更新的及时性

那么我公司的思路是俩个接口解决,第一个接口是获取所有用户数据,第二个是返回更新的数据。 enenen,我又要吐槽了。这个返回更新数据只有一次有效性。然后也没有回调。这样子就会存在问题。

虽然服务器返回的数据都做了验证,但是谁也不能确保这次的数据就更新成功了。好歹也给回调接口回调一下成功与否。

然后言归正传,设备端就是定时任务去请求同步本地数据,对没错就是定时任务。是不是有种当初第一次写通讯的时候的感觉,还不知道webscket是什么。 然后现在请求就跟麻烦,因为我这边请求完图片还要转bitmap,然后转字节,然后提取特征,然后入库。一条数据下来要个五六秒。 有点炸毛,不要说开服务,开线程。 我们要确保前台在识别的时候后台释放百度的人脸识别资源,给予最大程度的宽容。 所有我们要做的事情就是这样的 第一 保证循环的同步性,里面有许多异步操作,我们要保证数据一条条的走下去,不要给程序太大压力,我这设备配置也不高。 第二 保证我们能尽快的打断更新让出资源给前台使用 第三 在恢复以后我们要保证和断点续传一样接着刚才的走 真苦逼。。。。

直接说解决方案把,一把辛酸泪。

利用rxjava来解决异步问题 利用一段空代码来解决等待问题 利用标志位来控制是否让出资源 然后网络请求请用自调的,意思就是当访问失败的时候自调一次,更新完成是时候自调一次。

 //空跑
 private void LoadRunTime() throws InterruptedException {
        while (!is) {
            Thread.sleep(1000);
        }
    }
 private void UPnext() {
        Observable.create(new ObservableOnSubscribe<Integer>() {
            @Override
            public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
                for (int i = 0; i < dataBeans.size(); i++) {
                    LoadRunTime();
                    ...
                    emitter.onNext(i);
                }
                emitter.onNext(-1);
            }
        }).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<Integer>() {
                    @Override
                    public void accept(Integer integer) {
                        if (integer == -1) {
                            initLicense(MyApplication.getApplication(), new FinishMethod() {
                                @Override
                                public void finish() {
                                    ...
                                    System.out.println("更新完成");
                                }
                            });
                        }
                    }
                });
    }

综上,这种要本地识别的情况还是建议用长连接的解决方案把,挂后台跑浪费性能,而且数据及时性太差,而且如果一次更新太多对程序来说也是压力。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
不是海碗 不是海碗
1年前
人脸识别之人脸检测的重要性
在整个人脸识别的整个工程当中,必然是少不了人脸检测的,它承担着很重要的职责。首先摄像头在捕捉到的图像中,需要用人脸检测技术,检测这张图片当中是否有人脸,检测到人脸以及人脸的位置之后,才进行后续的特征提取、特征对比等步骤,最后才形成一个完整的人脸识别过程。
不是海碗 不是海碗
1年前
景区如何限流?竟然可以用人脸检测做到
我们可以通过人脸检测去进行景区限流。在景区门口放置摄像头,摄像头捕捉到游客的人脸图像,然后使用人脸检测技术,识别出图像中是否含有人脸,含有几张人脸,检测一张人脸,就在计数器上1。这样景区就可以通过客流量的统计,当达到最大客流量的时候,就停止进入,实现景区限流。
不是海碗 不是海碗
1年前
人脸检测之身份识别你需要的那些事
人脸检测是进行身份识别的一个重要环节,因为它可以准确地识别出图像中的人脸,这样才能保证身份识别的准确性。
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
2年前
C#实现基于ffmpeg加虹软的人脸识别
关于人脸识别目前的人脸识别已经相对成熟,有各种收费免费的商业方案和开源方案,其中OpenCV很早就支持了人脸识别,在我选择人脸识别开发库时,也横向对比了三种库,包括在线识别的百度、开源的OpenCV和商业库虹软(中小型规模免费)。百度的人脸识别,才上线不久,文档不太完善,之前联系百度,官方也给了我基于Android的Example,但是不太符合我
Stella981 Stella981
2年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
稚然 稚然
1个月前
千锋修海_人工智能OpenCV人脸识别开发
//下仔のke:https://yeziit.cn/14502/人脸识别是基于人的脸部特征信息进行身份识别的一种生物识别技术。通过摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也