后台更新数据方案

阿邹 等级 414 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("更新完成");
                                }
                            });
                        }
                    }
                });
    }

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

收藏
评论区

相关推荐

5分钟教你用nodeJS手写一个mock数据服务器
对于前端开发者而言,javascript正扮演着越来越重要的地位,它不仅能为浏览器端赋能,在web服务器方面也有很大的价值(我们可以用nodeJS来写服务端代码
每天学点 JS 编码规范(1):Types 和 References
每天学点 JS 编码规范(1):Types 和 References 前端大全 微信号 FrontDev 功能介绍 分享 Web 前端相关的技术文章、工具资源、精选课程、热点资讯 _前天_ 收录于话题 (给前端大全加星标,提升前端技能) 英文:AirBnB,翻译:Kak
金三银四了,掌握 JS 这 36 个概念,助你一臂之力
作者:Mahdhi Rezvi 译者:前端小智 来源:dmitripavlutin 点赞再看,微信搜索【大迁世界(https://mp.weixin.qq.com/s/sY9ufGGKfcdaAQ7KJQs3HA)】,B站关注【前端小智(https://space.bilibili.com/31089477)】这个没有大厂背景,但有着
一文读懂http缓存(超详细)
前端缓存 前端缓存可分为两大类:http缓存和浏览器缓存。我们今天重点讲的是http缓存,所以关于浏览器缓存大家自行去查阅。下面这张图是前端缓存的一个大致知识点: (https://imghelloworld.osscnbeijing.aliyuncs.com/3e161cfcbe560b9608064ec91077346
前端 后端的区别
前台:眼睛看到的东西 关乎体验感。 后台:给管理人看的玩意 前端:程序员在进行编程的时候的代码编写。 后端:对应前端而言的,编写代码基本上是提供给前端调用,是不需要处理UI的内容.
vue h5 对接支付宝,微信支付,微信js支付
vue h5 实现支付(支付宝,微信) h5端实现支付难度不大,只是有些小的点需要注意下,其他的看文档撸就行了。 支付宝很简单,后端返回一个 html ,前端插入调用就行了,微信支付分两种:1、微信内支付(jsapi,微信内浏览器)2、微信外支付(h5支付)。 一、支付宝支付 // 前端啥都不用管,交给后端去干,返回 html 调用点击就好了 /
推荐程序员必备的 10 大 GitHub 仓库,前端占了 7 个!
大家好,我是你们的 猫哥,一个不喜欢吃鱼、又不喜欢喵 的超级猫 关于猫哥,大家可以看看我的年终总结 前端工程师的 2020 年终总结 乾坤未定,你我皆黑马(https://github.com/biaochenxuying/blog/issues/79)。 前言 初级前端与高级前端之间,很大原因就是投入学习前端的时间、经验的差别,其实就
7个关于"this"面试题,你能回答上来吗?
作者:Shadeed 译者:前端小智 来源:dmitripavlutin 点赞再看,微信搜索【大迁世界(https://mp.weixin.qq.com/s/sY9ufGGKfcdaAQ7KJQs3HA)】,B站关注【前端小智(https://space.bilibili.com/31089477)】这个没有大厂背景,但有着一股向上积
MySql 查询重复数大于1的数据(HAVING的使用)
在数据增加的过程中,因为某些原因,会产生重复数据,此时我们要看哪些数据重复了。 举栗: 要操作的表为test 主键id 需要排重的字段为field1,field2,field3,field4 SQL语句为 SELECT , count(id) FROM sysuser_user_pointlog_online_bak GROUP B
vue: 解决vuex页面刷新数据丢失问题
一、问题描述 1、一般在登录成功的时候需要把用户信息,菜单信息放置 vuex 中,作为全局的共享数据。但是在页面刷新的时候 vuex 里的数据会重新初始化,导致数据丢失。因为 vuex 里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载 vue 实例,vuex 里面的数据就会被清空。 2、我在一个组件(例如登录组件页面)中登录了后,其它页面要怎
后台更新数据方案
当你遇到一些让你大吃一惊的解决方案的时候你不要惊讶,要学会低头去面试它,解决它。最近公司项目要做个人脸识别,类似于门禁卡之类的。本来这也没什么,因为我接到任务后第一反应是这样的逻辑:设备采集图片 设备识别图片是否是人脸 是人脸 提交服务器进行身份识别 服务器返回人物身份信息我觉得这样的逻辑就是有点耗时。然后根据公司需求是要做百度人脸的
这些鲜为人知的前端冷知识,你都GET了吗?
背景最近公司项目不多,比较清闲,划水摸鱼混迹于各大技术博客平台,瞬间又GET了好多前端技能,一些属于技巧,一些则是闻所未闻的冷知识,一时间还消化不过来,不由的发出一声感叹! 前端可真是博大精深于是突发奇想,现分类整理出来分享给大家,也补充了一些平时的积累和扩展了一些内容,俗话说,独乐乐不如众乐乐,大家一起来接受前端的洗礼吧!!! 论被玩坏了的前端HT
游戏安全实践的一些思考
移动的游戏能够稳定健康的上线。主要需要依赖以下在四个方面:1.前端展示,或者说客户端正常运行。性能稳定不崩溃,不过热能够稳定运行。2.后端,或者游戏后台服务端的。不但要稳定。还有能在有限的服务器资源下,能承受大量的同时在线用户。而且要让游戏中的每个模块都能够承受承受大量的同时在线用户。3.安全也是重点之中。这既包括客户端,又包括服务端。客户端的安全,包括要防
从零使用electron搭建桌面端可视化编辑器
之前有朋友希望我基于H5Dooring开发一款桌面端应用, 最近刚好有时间, 就花了小半天时间从零使用electron开发了桌面端的离线软件Dooringelectron. 因为之前用electron比较少, 今天刚好学了一下, 也基本把前后端打通了, 文末我会放dooringelectron的github地址供大家参考学习. 如果大家有更好的方案, 可以随
报考指南:这所大学值得拥有
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天给我的母校【延安大学】打一波广告,985高校全国只有39所,分数也要求非常高,如果你的成绩没有达到985/211高校的要求,还想体验一下985/211高校的生活,那么报考延安大学,绝对没错。这不是阿都随便忽悠你,因为延安大学与北京理工大学、中国人民大学两个学校具有联合培养项目,每个专业都会有名