粉丝85获赞722




大家好,这里是扣顶茶水间,今天给大家带来的是一个基于优乐算法的考试作弊检测系统,这个项目呢是我们做好的一个成品项目,如果有定制开发需求的也可以找我们定做项目。 我们的主要技术站业务范围包括计算机视觉领域,支持 python 与 metlab 的 开发,主要承接的方向包括目标检测、图像分类与识别、图像分割增强以及深度学习算法的复现与改进。好的,我们废话不多说,继续来看我们这个项目。好了,首先我们来登录一下账号, 登录进来以后我们可以看一下左侧的功能按钮。首先图像选择是选择一张单一的图片,对图片中的目标进行一个检测。视频选择是选择一个视频文件,对视频中的每一帧进行一个实时的识别。检测 文件夹选择是选择文件夹下所有的图片,对每一张图片依次进行一个目标检测。摄像头是通过连接电脑的 usb 摄像头对实时的视频帧进行一个识别。检测模型选择是可以选择其他的模型,我们默认选择的是优漏十二模型,也可以选择 v 五、 v 八或者十一。 识别历史是对检测历史的一个列表展示。好了,我们这边选择一下图像选择,选择一张图片点击开始识别, 由于模型第一次需要加载,所以时间会比较长,我们可以看到已经能够识别出来作弊和没作弊的,我们这边可以对类别进行一个过滤, 比如说选择作弊就只框选出来一个作弊的目标,同样下方的列表,我们可以点击列表中的元素,点击以后在识别结果中只框选出来这个元素所对应的一个位置和坐标,我们可以看到这是它的知性度,这是它的一个位置坐标, 我们的检测耗时是一百一十五毫秒,好了,我们可以选择一下视频,点击开始识别,可以看到对每一帧进行了一个实时的识别检测, 识别结束后会对识别结果进行一个保存,我们还可以选择结果导出和结果保存,结果导出是将识别的一个结果 excel 的 形式进行了一个导出的保存, 我们可以看到这边有识别的一个类别知信度,还有这一这个目标的一个坐标,最后这一列代表的是他在视频中的一个播放的一个时间点,我们选择文件夹, 点击开始识别,可以看到是对文件夹下的每一张图片依次的进行的一个识别, 我们还可以选择一下摄像头,打开一张图片,我们把摄像头对准这张图片, 可以看到也是能够对这个视频真进行一个实时的识别的。点击模型选择,可以选择一下检测的一个模型,我们默认加载的是十二,我们可以选择一下优乐 v 八下面的 wait, 选择这个 best 提示模型加载成功以后,我们换一张图片可以测试一下, 可以看到结果其实差不多,模型和模型之间的训练结果是有细小的差别。我们点击识别历史,可以看到这是我们刚才识别的一个历史记录,我们可以点击图片进行一个放大,我们这个系统还可以进行个人信息的编辑和修改,我们点击图片 头像都是在 media 下面的 avengers, 我 们可以更改一下头像,点击保存,可以看到这个头像已经更改成功了。退出登录以后,我们登录一下管理员的账号, 管理员可以对用户信息进行一个编辑和删除,可以更改他的密码以及他的头像。识别历史记录,可以对识别历史进行一个单条的删除,也可以进行一个批量删除。 我们这套系统除了完整的 ui 功能以外,还预制了三个脚本文件来可以对目标进行检测。 run single image, 这个是一个对单一图片进行的一个目标检测, 这一块是加载的一个权重文件,这一块是一个带识别的一个图片的路径,是在 test media 下面的这个图像,零四幺是这个图像,我们点击一下运行, 左侧是原图,右侧是一个结果图,可以看到这都是没有作弊的。 同理,我们这边还支持对视频的检测和对摄像头的检测,视频检测的话,这一块是带检测的一个视频的路径, 我们就不做一一的展示了。我们这套系统还包含了一个对数据集进行训练的脚本,这一块是要训练的一个模型列表,依次是 v 五、 v 八、十一、十二, 下面这一块是一个训练的参数,这个代表的是训练的轮次,我们一般是训练一百轮,这个代表的是每批次的一个图像的数量,我们一般选择一个八,如果你的电脑性能或者 gpu 性能比较好的话,也可以选择三十二。我们点击一下运行, 可以看到我们的这个训练级一共是七千七百九十四张图像, 这个验证机一共是五百二十三张图像。由于训练的时间比较长,我们这里就不做展示了,暂停一下 训练的结果会保存在 rest 目录下面,我们打开目录可以看到为此代表的是一个训练结果的权重文件, best 代表的是最好的一次, last 代表的是最后一次。 关于训练结果中的图表的含义,大家可以参考一下之前我们发布的一条视频,叫做一条视频,讲清楚优乐训练结果的含义,里面有非常详细的描述和介绍。好了,今天我们的展示就到这里。

你的业务系统还在手动维护组织架构,在平台后台,进入钉钉或企业微信的服务配置。 g n p f 第三方服务集成模块消息推送配置。在平台后台,进入钉钉或企业微信的服务配置,填入应用 id 和密钥。配置完成后,你的系统就能直接调用钉钉起微的消息接口,实现审批提醒、任务通缉的自动推送。 组织架构同步 g n p f 支持将平台的组织架构、 it 部门也不用维护多套人员数据,也可以反向将钉钉起微的通讯录同步到平台用户数据打通。 同步策略支持双向选择,员工无需在多个系统间切换账号,这个密钥来自企微后台的内部通讯录。应用。组织架构同步 j n p f 支持将平台的组织架构、用户数据打通。同步策略支持双向选择。 企业微信相比钉钉多了一个同步密钥参数,既可以以平台数据为准,覆盖第三方业务系统的权限管理、消息触达。组织架构填入应用 id 和密钥。配置完成后, j n p f 第三方服务集成模块消息推送配置。

这节我们要搭建一个什么呢?就是要搭建一个门户页面,然后让不同的这个角色人员可以根据自己的角色进入自己的工作台,在 d 代码中,然后像这种的话,呃,一般我们把它称之为应用。 呃,你再打开我们的控制台之后,然后在左侧这个找到微打 d 代码,然后在应用列表里头新建应用呢?它现在是带一个这种 ai 对 话式的,这种属于代码式的,我们就不用了,因为我们是用那种格式化的方法去做。 呃,他有三种,一种是第一个是可以创建小程序 web 应用的话,就通常是指我们这种通过手机号登录的叫 web 应用管理应用的话,就是通过账号密码,然后,呃,一般是给这种超级管理员,然后去使用的应用。 像我们这次搭建的,我们就是主要是用手机号登录,然后选择这个外部应用,然后选择从空白新建应用的名称的话,我们这个这次叫 mba 培训管理系统,是吧? 哎,然后你这样点击这个创建空白应用就可以。 创建之后,然后我们去怎么去搭建我们的门户页面呢?呃,它这里头就点这个页面设计,然后回到我们的设计台,我们先登录一下超管的账号, 默认的话它会给创建空白页,是吧?我们把它作为首页,然后点这个三个点,然后重命名一下,然后把它命名成首页。 哎,这样的话,呃,这个页面命名好,命名好了之后就是这个布局了,我们看一下我们原线,原线其实是分成这种一行三列布局, 默认的话它这个网络布局就可以了,可以以后它它这个常用布局是一四三,我们把它改一下,改成这种,呃,那有没有四比四是吧?四比四,这这种的话,它就是呃这种三列,三列之后,然后呃那这里头的这个 第一个部分的话,这个相当于是有一个这个卡片的概念,是吧?卡片在 d 代码里头专门有个叫卡片组建,然后你可以把这个卡片组建,然后呃去添加进来。 呃卡片的话它是分成三部分,一个是卡片的这个顶部中间内容的底部,我们在顶部的话,呃,像现在的话就是放这个一个图标,一个文本组建去来表示,是吧?我们把这个 重新做一下,然后通常站位的话是外头放一个普通容器,然后里头放一个图标组建,你在这里直接搜就行。 哎,然后把这个标题挪到这里头来,然后我们把它这个,呃看这里头有没有一个盾牌的一个图标 啊?没有没有的话呢,我们随便去选一个吧。呃,选一个之后,然后可以把这个尺寸改成这个超小,是吧?超小之后,然后我们呃让他站在一行呢,就是切换到样式里头,然后选择横向排列,然后你让他这个垂直居中, 然后两边有点距离的话,可以放一个用十十 ps 外边距,然后呃把这个改成叫管理员,是吧? 哎。下头这个呢?呃在底部是吧?卡片的底部我们就可以直接添加一个按钮,哎,我们叫这个叫,呃几个管理员工作台, 那你可以把它设成通蓝,是吧?设通蓝之后,然后我们这里头可以设一个黑色的背景色,选择这个颜色的背景去拾取一下这个背景色, 把它这个颜色纸放在这,它就变成黑的,然后给一个十 p x 的 圆角半径好看一点。呃,中间这一部分内容的话,我们先把标题删掉 看一下这个布局,啊。布局是,呃,也是,其实是网格布局是吧?是一行两列,那我们就可以在这里头继续添加一个网格布局, 把它改成这个六比六是吧?六比六每一个呢?呃,其实和上头这个是雷同的是吧?雷同呢?你就可以把这个直接这样去 复制到它的列里头,哎,我把这个改一下,是吧?这个标题,呃,我们就不要改成标题了,改成这个正文吧。 哎,变成这种黑白色的,然后之后这样把它复制到列,是吧? 因为你你这个是一共是三行是吧?三行,然后我们把再再添添加两行两行进来,然后把这个列都占好位。 哎,这就是,呃,一个这种卡片的一个搭建,卡片搭建好之后剩下这些就是可以直接复制粘贴了,把这个粘贴到这个第二列以后,然后到第三列, 然后呃网格布局这里再再添加行,再添加三行是吧?三行我们一共是六种角色嘛。 呃,然后就是这个可能有点挤,有点挤的话我们可以设置它一点外边距,给左右之间留一点空间。 哎,你把这个设好了之后就可以点这个预览按钮,预览按钮以后你可以看到具体的一个效果。哎,这就是我们整个这个门户页面的搭建过程。

我发现了一个能让你七天从 open cloud 小 白变大神的神仙网站,每天一个神奇网站第四十六集。这波真的是把自学捷径给你铺到家门口了,再也不用瞎找资料乱踩坑了,他直接给你把学习路径规划的明明白白。从 入门认识 open cloud, 到深度玩转对话功能,再到技能拓展升级,甚至连自动化任务配置、多模型协调这种高阶玩法都给你安排的循序渐进, 哪怕是纯新手跟着一步步走,都能搓出来属于自己的 a 贾维斯。这不比瞎逛 b 站找零散教程相好? 更离谱的是,他还藏了彩蛋,精选了三百多篇全网优质 open cloud 的 教程,足足整理了三十一个分类的实用技能,从基础到高阶全覆盖,堪称行走的知识库。想知道明天又更什么好玩的新神器?蹲住更新就完事!

上一节我们已经完成了这个岗位的配置,有了岗位之后,然后对于我们这种管理性系统最重要的是角色。 什么是角色呢?角色其实是一个权限的一个集合代表,是吧?他知道如果把人添加到角色,他其实就默认,呃具备着访问这个各种各样的权限。 然后我们需要做的就是首先有一个角色的管理,然后可以管理他的成员,同样可以进行添加,是吧?让某个人进入到角色中,呃,这个在 d 代码中如何实现呢?就是我们首先你需要还是一样的,先需要有一个这种角色的表, 角色的表的话呢?我们,呃这里头也是一样,基本信息就有科技了,也是角色名称、状态描述还有编码。呃,在这里头唯一需要注意的就是我们要有一个中间表,是吧? 那我们来去区分是,呃,就是一个多对多的关系嘛?多对多我们这里当然你可以在角色里加一个多对多关系,那样的话它是, 呃效果是在分配的时候是复选,但是我们呃因为这个它比较复杂一点,我们就建一个中间表,可以用表格的形式更快的操作一下。然后两个列是吧?也一列是关联到卷四,一列是关联到我们的用户表里头,这是数据源的部分。呃,这个 应用的部分的话呢,我们就是一样按照我们那个套路去去做, 我们先先打到我们这这个视频教程里面,那个时候已经做好 创建页面呢,肯定是一样的,我们先要创建角色管理,是吧? 哎,然后选择我们的管理员布局,哎,搭建了这个之后,我们首先是要添加菜单,是吧?选择我们管理员布局,然后 把这个菜单加一下,这时候加的时候你就因为我这个已经是一二级目录了,所以你在这里头直接点加号添加子集,然后选择一下我们这个角色管理,他就到这个子目录里头去了, 然后我们搭建右边的这个功能,右边的话,呃是先把某个布局清掉,哎,然后呃把这个布局组建,呃去搭建一下 数据表格,数据表格,然后这里头,呃选择一个角色表就可以,然后勾选这个场景, 哎,这是一个内容有了之后,然后就是要怎么添加这个,呃分配人员这个内容呢?也是一样一样的,我们是也是继续创建一个页面叫角色用户,哎,然后布局的话还是选择管理员布局, 但一个小技巧的话,就是像这种二级页面的话就不加菜单了,要不然你这个二级页面也出现在这个菜单上就不太好,是吧?也比较乱,这里头就不加菜单,然后一样的话也是先加一个这种布局主键,是吧? 知道我们现在来在哪里?主要是加布局主键,就是为了它自动有这种返回上一个页面的功能, 你也不知道你现在处在哪一层级,是吧?加个数据表格组建 数据表格组建,然后我们在这里头加一个矩阵用户表,然后把这个插件勾上, 需要注意的就是,呃,像这种的话,你点新建的时候就要默认带进来是哪个角色啊?这种需要加一个要参数,加一个这个 id 知道是从上一页的传入的, 呃,到这个的话就是它这里头,它这这种配置,它它是有 bug, 把它清掉,自己重新加一个表单容器,要不然的话,呃,它那个带不进来这个参数, 然后我们只选择新增场景,选择角色用户表, 这个角色 id 呢,我们就绑定一个什么呢?选中值就可以了 啊。呃,这也是一个 bug, 是 吧?选中的时候没参数的,那你那你不用管,然后先保存一下页面,然后我们把浏览器刷新一下它,有时候它这个编辑器就是这种,右侧呢,会出不来,出不来你就刷新一下,让它重新生效一下。 这产品发展到现在了,基本也就这样了, bug 一 直存在,也不会再给你优化,它也就是锁定到这个版本上,很难再说是去改进,因为它它这产品也不太, 用户不太多,我几乎上最最近这一年几乎就没有任何任何改进了, 反正是凑合能用。 哎,这样的话,然后就这样就选中了,是吧?选中之后,然后因为你自己加这个表单容器呢,它还没有这种返回的事件,是吧? 我们把它加一下,就是在这个表单提交成功之后,然后呃弹窗的话,我们先把它关闭, 哎,然后把这个数据表格做一下刷新, 哎,这就是一个完整的链式调用,是吧?你要知道这个数据提交成功要给用户一个反馈, 哎,这是我们的这个新增的这个概念,新增概念,然后,呃,我们去走一下测试,是吧?先从哪?先从这个虎头用户, 先从角色管理里头来啊?这里头我们还没加一个按钮,在这里头,呃,再添加一个按钮,叫这个管理用户, 把它这个类型改成链接,让它小一点,然后点击的时候,是吧?点击的时候我们打开页面,然后到这个角色用户这一块,然后传入这个表格所在行的这个数据标识, 这样的话它它就它就配置好,配置好之后然后我们给超管分配用户,是吧?点击管理用户, 哎,啊?这里头我们,呃,还有一个问题,就是在这个数据表格里头,然后也需要加一个筛选条件,是吧?要不然的话他把所有数据都查出来,我们让什么呢?让角色,然后等于我们传入的这个 id, 哎,就过滤一下,只只看当前这个角色下面,哎,这样他就没有了,是吧?没有之后我们点新建的时候,哎,他就默认把这个角色变成超管,然后给一个张三,然后提交一下。

今天我们来聊一下灰度发布,这里用 g s 简单模拟了一下灰度发布,展示在不同用户手上的状态,看下代码,这里模拟了几个按钮。 那么当被 miss 刚问到应用如何做灰度发布时,我们要如何进行回答呢?其实这个问题是想看看大家在上线一个新功能或者新版本时,有没有风险意识,懂不懂怎么稳妥地把东西交到用户手上? 他想知道你是否理解,为什么我们不一下子把新代码给所有用户用,以及具体有哪些招数可以只让一小部分用户用上新版本,看看效果没问题再逐步放开。这背后考察的是你对发布流程、用户体验和系统稳定性的综合考量。 回答这个问题是否可以这样展开, 第一,先给惠度发布下个定义,告诉面试官你明白这是个啥,就是让新版本小心翼翼的上线,先给一小抽人试试水,也就是明确定义。 第二,说说为啥要这么干?它的好处是啥? 比如能减少上限犯车的概率,早点知道用户喜不喜欢新东西,出了问题也能急刹车。第三,说明核心原理, 简单讲讲他是怎么做到的。简单来讲,核心就是把用户分成两波,一波用新的,一波用老的,得有个分流器。那怎么将用户分成两波呢?有通过流量控制、用户标签这些。第四,业绩常见的策略或者方法, 具体有哪些分流的招数,可以按用户是谁,在哪,用啥设备,或者干脆随机抽一部分人。系统上呢,可以用 ngx 这类工具控制流量,或者在代码里加入开关。 第五,概述指示步骤。大致说一下搞一次微度发布的完整流程 大白话就是定制计划,准备环境配置规则。先找几个人试试,盯着数据看,没问题就慢慢放量,或者赶紧撤回来,最后全部搞定。第六, 特别强调两点,一是远近要监,时刻监控数据。二是手要快,万一出问题,得有办法迅速退回到旧版本。 微度发布原理要理解微度发布的原理,我们得抓住几个关键词,第一是隔离和渐近。 隔离就是说新的版本同时在线,互不干扰,渐近就是一点点的放量,从小众用户开始,慢慢扩大到所有人,像挤牙膏一样安全。第一、 第二个是流量切换和用户定向, 这就是基础上的核心流量切换。就好比在马路口设置一个智能红绿灯,比如 n、 g、 x 或者云上的复杂均衡器,它能决定请求去哪些新版本,哪些去旧版本。 可以按比例分,比如百分之十的流量给新版,百分之九十给旧版。也可以看请求你带的标记,比如特定的 port 或者 head 来分用户定向就是更精确的挑人,比如先让咱们公司内部员工用,或者 vip 用户先用。 第三个是数据驱动监控与反馈路由发布不是 pad 来决定的,全程都要盯着各种数据,看 新版本有没有让用户下单更多,网站速度有没有变慢,有没有出现些错误,数据好就继续往前推,数据不好赶紧停下来看看咋回事。第四个特别提醒一下, feature flex 作用特别灵活,尤其对我们渠道来说,你可以把一个新按钮、新页面或者新逻辑,用一个 if 包起来,这个 if 的 条件就是开关,开关是开时关,可以让服务器控制或者根据用户信息动态决定,这样代码早就上线了,但功能啥时候对谁,可见 咱们可以灵活配置。说到问题,一秒钟就能把新功能关掉,非常的方便。具体时间方案,方案一,基于 dns 微度发布 这段话比较简单粗暴,就是在 dns 服务器那里设置,比如 app 点 excel 点 com 这个域名,让它解析到新服务器 ip 的 概率是百分之十, 解析到旧服务器 ip 的 概率是百分之九十,一般用的比较少,或者只是作为大方向的一个控制。优点是实现简单,无需修改应用代码。 缺点一,密度较粗,通常只能做到 ip 级别或者区域级别的流量分配。 二, dns 缓存可能导致用户在切换时有延迟。三,不以动态调整比例 方二,基于色彩均衡器反向代理简单来看一个例子,首先我们定了两个黑端服务器集群, v 一 表示着旧版本用的服务器, v 二表示着新版本用的服务器。 然后根据 cookie 灰度,如果请求库中包含这个 user, 那 么则等下新版本没有就默认旧版本。 然后这一块呢,利用 split 加 ins 实现更复杂的按百分比随机分配容量,今天代码就这些,这种方式对前端代码基本没啥侵入。方案三,基于 apa 网关 如果你的应用是微服务架构,那么 api 网关就是一个很好的选择,它就像是所有服务的大行,管家可以在这里配置复杂的规则,把请求导向不同的版本,很多云服务商提供的 api 网关都自带了微度发布的功能 原理与复杂计算过程。在微服架构中, api 网关是所有请求的入口,更适合进行精细化的流量控制和策略管理。优点,功能强大,集中管理适合微服。 缺点,引入新的主角有一定的学习和维护成本。 方案四, feature flex 我 们来看一下之前的案例。 首先我们 cos 一个 feature flex service, 帮我们判断是不是应该开启 feature, 应该 import 这个函数是核心,在真实项目中,它会去请求一个后端的 feature flex 管理服务,这个服务会根据预测的规则,比如用户 id、 用户标签、地区、设备等来决定这个功能开关对这个用户是开还是关。 在私密中,我们简单的模拟指纹判断,如果用户 id 以贝特 tencent 结尾就开启,如果用户在加拿大,就有百分之十的几率开启,如果用户是 vip 就 开启。这么业务代码里,比如要渲染个人用户页时, 我们先调用这个功能来询问新的个人主页这个功能是否对当前用户开放。 根据返回的结果,我们决定是显示新版本个人主页还是旧版本个人主页。对于按钮也是类似的逻辑。这样做的好处是新旧两套逻辑代码都可能存在于同一个部署包里,但是用户看到哪个是由 faker flag 动态决定的,我们来模拟调用一下, 可以看到不同用户根据他们的属性会看到不同版本的功能组合。

找 apple 开发团队,你是不是也只会看报价和工期?结果做到一半才发现这家公司根本没几个技术,全靠外包?今天教你三个内行人的判断标准,外行看价格,内行看代码。 评估一个 apple 开发团队的技术实力,关键看这三点。第一,看代码质量,让他们展示 get, 提交记录, 这就是团队的体检报告。如果全是修复 bug, 紧急修改,说明开发流程很混乱。第二,看技术文档,正规的 app 开发团队一定有设计文档、 api 文档和部署手册,连注视都写不清楚的代码,你敢用吗?第三,看问题解决能力, 掏出你的实际业务场景,看他们是敷衍你还是能给出定制建议。真正的高手能把你的业务痛点转化为技术方案,与其后期花大价钱填坑,不如一开始就找靠谱的 app 开发团队。如果你正在找 app 开发团队,不用再看了, 十多年开发经验,五十人技术团队,我们就是你要找的靠谱团队。