后台更新数据方案

阿邹 等级 865 0 0

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

最近公司项目要做个人脸识别,类似于门禁卡之类的。本来这也没什么,因为我接到任务后第一反应是这样的逻辑: 设备采集图片 --> 设备识别图片是否是人脸 --是人脸> 提交服务器进行身份识别 -> 服务器返回人物身份信息 我觉得这样的逻辑就是有点耗时。 然后根据公司需求是要做百度人脸的本地离线识别,也就是我要把服务器所有的人脸数据都放到本地来。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("更新完成");
                                }
                            });
                        }
                    }
                });
    }

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

收藏
评论区

相关推荐

每天学点 JS 编码规范(1):Types 和 References
每天学点 JS 编码规范(1):Types 和 References 前端大全 微信号 FrontDev 功能介绍 分享 Web 前端相关的技术文章、工具资源、精选课程、热点资讯 _前天_ 收录于话题 (给前端大全加星标,提升前端技能) 英文:AirBnB,翻译:Kak
一文读懂http缓存(超详细)
前端缓存 前端缓存可分为两大类:http缓存和浏览器缓存。我们今天重点讲的是http缓存,所以关于浏览器缓存大家自行去查阅。下面这张图是前端缓存的一个大致知识点: (https://imghelloworld.osscnbeijing.aliyuncs.com/3e161cfcbe560b9608064ec91077346
Java后端工程师学习大纲
之前自己总结过的[Java后端工程师技能树](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fwww.rowkey.me%2Fblog%2F2016%2F06%2F17%2Fjava-skill-tree%2F),其涵盖的技术点比较全面,并非一朝一夕能够全部覆盖到的。对于一些还没有入门或者刚刚
#大学生活#锐捷客户端与VMWare
![输入图片说明](https://static.oschina.net/uploads/img/201610/13231820_Rs9u.jpg "在这里输入图片标题") 在暨南大学生活了差不多一个月了,基本都适应了,不过从9月发作至今的五月病还是没有痊愈,最近一段时间都没有动力去继续研究。 众所周知大部分的大学都是用锐捷客户端,暨大用的是个暨大专用客
10大H5前端框架
转发来源作者:https://www.cnblogs.com/kingboy2008/p/5261771.html 作为一名做为在前端死缠烂打6年并且懒到不行的攻城士,这几年我还是阅过很多同门从知名到很知名的各种前端框架,本来想拿15-20个框架来分享一下,但在跟几个前辈讨教写文章的技巧时果断被无情的打击了,所以这里我还是低调的只拿出10个框架来个大锅乱炖
2018天津前端大会
![](https://oscimg.oschina.net/oscnet/6b5950fbeffb7823d13d77303b98f86c314.jpg) 一场**高质量**的**前端及小程序**大会! 业界大咖现场分享,技术人才齐聚一堂,不仅能学到**技术**,更能体验互联网技术大会带来的**思维冲击**,并与超级大咖近距离探讨交流!
2020年大前端发展趋势
### △ 是新朋友吗?记得先点web前端学习圈关注我哦~ ![](https://oscimg.oschina.net/oscnet/3f25d48d7333399bcece3b7da3df93327c1.jpg) ![](https://oscimg.oschina.net/oscnet/ac8570e239d01bc61a5a33ca7d3ac63
2018天津前端大会
![](https://oscimg.oschina.net/oscnet/6b5950fbeffb7823d13d77303b98f86c314.jpg) 一场**高质量**的**前端及小程序**大会! 业界大咖现场分享,技术人才齐聚一堂,不仅能学到**技术**,更能体验互联网技术大会带来的**思维冲击**,并与超级大咖近距离探讨交流!
2020年大前端发展趋势
### △ 是新朋友吗?记得先点web前端学习圈关注我哦~ ![](https://oscimg.oschina.net/oscnet/3f25d48d7333399bcece3b7da3df93327c1.jpg) ![](https://oscimg.oschina.net/oscnet/ac8570e239d01bc61a5a33ca7d3ac63
4982亿背后的前端技术—2020天猫双11前端体系大揭秘
![](https://oscimg.oschina.net/oscnet/ea6b2ac9-b30d-4474-92e7-222902e195bc.gif) 今年双11的整体节奏从之前的“光棍节”变为“双节棍”,具体业务上也有很多变化和调整,应了阿里的土话“唯一不变的是变化”。面对这些变化,是挑战也是机会,我们要做的就是,“既要”高效支撑保障业务先赢,“
Android SDK 在线更新镜像服务器资源
**Android SDK 在线更新镜像服务器资源:** 大连东软信息学院镜像服务器地址: * `http://mirrors.neusoft.edu.cn` 端口:80 北京化工大学镜像服务器地址: * IPv4: `http://ubuntu.buct.edu.cn/` 端口:80 * IPv4: `http://ubuntu.buct
Avue前端控件大全和表格属性
// 表格属性 // width: “100%”,//表格宽度 // calcHeight: “auto”,//表格高度差(主要用于减去其他部分让表格高度自适应) // height: “auto”,//表格高度 // maxHeight: “auto”,//表格最大高度 // border: true,//是否显示表格边框 // e
ES6理解进阶【大前端高薪训练营】
> 学习资料:拉勾课程《大前端高薪训练营》 > 阅读建议:文章较长,搭配文章的侧边栏目录进行食用,体验会更佳哦! > 内容说明:本文不做知识点的搬运工,文中只记录个人对该技术点的认识和理解以及该技术在日常开发中的使用场景 > ### 一:面向对象:类class ###### 面向对象三大特性之封装 封装是面向对象的重要原则,它在代码中
Node在大前端中的应用场景分析
![](https://oscimg.oschina.net/oscnet/5fe36d8bc594353feb41461988583d16922.jpg) 作者: 前端361 https://zhuanlan.zhihu.com/p/121055042 关于node的使用已经很久了,使用范围也很广,似乎有前
Picasso:开启大前端的未来
“道生一,一生二,二生三,三生万物。” —— 《道德经》 Picasso是大众点评移动研发团队自研的高性能跨平台动态化框架,经过两年多的孕育和发展,目前在美团多个事业群已经实现了大规模的应用。 Picasso源自我们对大前端实践的重新思考,以简洁高效的架构达成高性能的页面渲染目标。在实践中,甚至可以把Native技术向P