当前位置: 首页 > news >正文

【指纹识别】基于模板匹配算法指纹识别匹配门禁系统matlab源码

一、简介

1 指纹识别的引入和原理
1.1 指纹的基本知识
指纹,由于其具有终身不变性、唯一性和方便性,已几乎成为生物特征识别的代名词。指纹是指人的手指末端正面皮肤上凸凹不平产生的纹线。纹线有规律的排列形成不同的纹型。纹线的起点、终点、结合点和分叉点,称为指纹的细节特征点(minutiae)。如图1-1所示。
在这里插入图片描述
1.2 指纹识别的原理及算法流程
指纹识别即指通过比较不同指纹的细节特征点来进行鉴别。指纹识别技术涉及图像处理、模式识别、计算机视觉、数学形态学、小波分析等众多学科。由于每个人的指纹不同,就是同一人的十指之间,指纹也有明显区别,因此指纹可用于身份鉴定。由于每次捺印的方位不完全一样,着力点不同会带来不同程度的变形,又存在大量模糊指纹,如何正确提取特征和实现正确匹配,是指纹识别技术的关键。
指纹识别技术主要包括三大部分:指纹图像采集、指纹预处理、特征提取与匹配。如图1-4所示。
在这里插入图片描述
2 指纹图像预处理
图像预处理是对原始图像进行的一种前期处理,方便后续的模块识别。无论采用何种方式获取的指纹图像, 都有一部分由于质量原因, 不能被系统直接识别,因此图像的预处理就显得非常有必要。
指纹图像的预处理目的就是将自己感兴趣的目标区域保留下来,去除背景区域和没有用的部分,同时根据指纹目标区域中脊线的结构特征,采取较好的滤波方法,提高指纹脊线清晰度,平滑脊线边缘的毛刺和空洞,抑制图像噪声,保证指纹特征的可靠提取,并使灰度图像转化成黑白的二值图像,最终得到脊线结构清晰的单像素宽的二值图像。本文预处理的主要流程如图2-1所示。
在这里插入图片描述
2.1 指纹图像的采集
因本设计重点是对指纹图像的处理,最终得到匹配结果,因此指纹图像的获取并非本设计的重点。指纹图像的获取可以借助市面上的指纹采集器货得,或者自行利用手机和数码相机等拍摄器材采集。
2.2图像的灰度处理
图像的灰度化是保留原有像素的透明度的,即透明度不参与像素的运算。该运算公式为:
gray = R 0.299 + G * 0.587 + B * 0.114
这个公式的意思是原图的一个像素区域包含了RGB的三个颜色值,而目标灰度图上相对应的像素上的颜色值为由上面的公式计算得到。这里有个问题就是,你需要结果图是24位(如果包含Alpha则是32位)还是8位,如果是24位,则结果灰度图还是RGB的,只不过R=G=B=gray,如果是8位的,一个像素就只包含一个颜色值gray。
图像的灰度化是图像处理中很基本的算法,同时也是其他图像处理或是识别的基础,有些智能算法都是基于单色8位灰度图进行的,因为他减少了计算量。
2.3 图像的二值化
二值化就是将图像上的像素点的灰度值设置为0或1,也就是将整个图像呈现出明显的黑白视觉效果。指纹图像中包括目标和背景还有众多噪声,要想从原始的指纹图像中提取出目标,一般用的方法是设定一个阈值T,用T将图像中像素数据分成两部分,若输入灰度图像的函数为:
在这里插入图片描述
通过求解阈值T,从而把图像f(x,y)分成目标和背景两个区域,其中大于T的像素群为目标区域,小于等于T的像素群为背景区域,阈值的选取原则是:(1)尽可能的多保存图像信息;(2)尽可能的减少噪声。
本文将讨论基于方向场的二值化处理。
采集到的指纹图像一般都有比较清晰的方向场,方向场估计得准确与否直接决定了图像二值化算法的效果。
为估计方向场,我们把指纹脊线的走向分为如下8个方向,如图2-6所示:
在这里插入图片描述
我们先对分割后的图像进行了平均滤波,然后对图像的每一个像素,为确定在该像素处的脊线方向,在以该像素为中心的99窗口内,分别计算8个方向上的经过处理后的灰度值,即将图2-6中数字1到8的位置的像素灰度值去除其中最大summax和最小值summin,若满足最大的summax和最小的summin与 4I(x,y))之和大于 (3
summ/8),则该像素点的脊线方向为summin,否则为summax.确定完脊线方向后再由该方向场对图像进行二值化。
结果如下:
在这里插入图片描述
2.4 图像细化
二值化处理后,脊线仍然有一定的宽度,指纹识别的匹配是只利用图像的点或线的特征,这些点或者特征只与脊线的走向或者纹理有关系,有一定宽度的二值化图像显得有些多余,所以需要对二值化图像进行细化处理,指纹二值化图像经过细化处理即可得到一个单一像素宽度的脊线,经过上述的细化处理,在后续的指纹特征提取和特征匹配的算法中大大的减少了计算的冗余量和出错率,使得指纹识别的速度和准确度有了很大的提高。
细化目的是在不破坏指纹图像连通性的情况下去除掉多余的信息(即多余的像素点),将二值化的指纹图像的脊线采用逐层剥离的方法,将图像中的指纹脊线细化成单象素宽(实际为保存原图的骨架)。
这里是利用matlab库函数bwmorph,调用格式为:BW2 = bwmorph(BW,operation,n)应用形态学操作n次,n可以是Inf,这种情况下该操作被重复执行直到图像不再发生变化为止。
‘thin’ n = Inf时,减薄目标成线。没有孔洞的目标缩成最低限度的连通边;有孔洞的目标缩成连通环。
3 图像特征提取和特征匹配
3.1 特征点提取
(1)提取指纹的端点和交叉点
端点和交叉点均是指纹图像的两个细节特征,同时在指纹识别的的过程中起着重要的作用,因为识别的首要前提就是找到图像的所有端点和交叉点。通过point.m函数来找出细化后指纹图像的所有端点及交叉点。
将八邻域中的每个点依次两两相减并取其绝对值,后将所有结果加起来,因为端点处是两个点,即和为2时细化图像有端点,和为6时图像特征为交叉点。
运行完上面的point.m函数的程序后,能把细化图像的的端点和交叉点全部找出。在定义函数的程序中有数组txy,其中t为横坐标,x为纵坐标,y为2时为端点,y为6时为交叉点。
(2)去除图像边缘的端点[去伪]
可以看出,指纹图像细化的边缘,由于采集仪器不同的关系,因此不可避免的会多出很多的端点,这些端点不仅增加了后续的工作量,还可能导致识别过程中产生错误,所以要把这些边缘的端点都去除,在matlab中这些操作都可以采用一函数来实现,本实验中设计了一cut.m函数来进行处理。
3.2 找出特征点
设置三个函数来找出图像的特征点:
(1)single_point函数
经过去除边缘端点的操作后进一步减少了指纹细化图像中的端点和交叉点的个数。下面就需要找出一些在细化图像中比较独特的端点来作为识别的特征点。在一幅细化的指纹图像中,如果在一个像素(该像素为端点)的周围半径为r(r为像素的个数)的圆内没有任何的端点或者交叉点,那么随着r的逐渐增大,这样的点就会越来越少,因此该点也就越来越独特。于是我们设计了一single_point函数来找出这样独特的点。
(2)walk函数
为了进一步找出特征点,我们还需定义一walk函数,它的主要作用就是判断某一端点在num的距离内是否还有其他的端点。
(3)last1函数
single_point函数和walk函数都是找细化图像特征点的函数,因此可以设计另一个新的last1函数,通过执行
[pxy3,error2]=last1(thin,r,txy,num)
可以找出一端点以r为半径的像素内的任何端点和交叉点且沿着脊线走向的num内没有任何的其他端点和交叉点。
3.3 特征点匹配
由上文的函数可知,已经找出了指纹细化图像中的特征点,并画出了一段独特的脊线,在图像中用红色来标示。下面就是指纹匹配[12]的问题了。在此我们设置了三层匹配。
(1)脊线长度匹配
对于上面的函数即可找出细化图像中的特征点和一段脊线,沿着该段脊线走向,每隔五个像素测量一下,看到到原始端点的距离,此段距离由一distance函数得到。
函数结果会得到一数组(内有脊线的长度信息)。如果两幅指纹细化图像中的纹路是相同的,则它们就包含相同的端点和交叉点及用distance函数找出的相同的一段脊,则这两个指纹图像中的长度数组对应的位置比例会基本相等(我们选择的指纹图像大小基本相等,因此该比例选1),因此函数最终定义了一个数f=(sum(abs((d1./d2)-1))),其中若f的值越接近于0,这两幅图像的匹配度就越高,在一定范围的阈值内我们可以认定为匹配。
(2)三角形边长匹配
找到一个指纹细化图像的特征点后,可以找出距离这个端点距离最近的两个端点或者交叉点,与这个指纹图像细化的特征点构成一个三角形,若两幅图像中的边长比例基本相等(原理同上,也选1),则说明这两幅图像匹配,越接近于1说明这两幅指纹图像越匹配。其中设置一find_point函数来找出距离最近的端点或交叉点。
函数最后定义了一个数ff=(sum(abs((dd1./dd2)-1))),因此ff值越接近于0,这两幅指纹图像的匹配度越高,在一定范围的阈值内我们可以认定为匹配。

二、源代码

function varargout = gui1(varargin)
% GUI1 MATLAB code for gui1.fig
%      GUI1, by itself, creates a new GUI1 or raises the existing
%      singleton*.
%
%      H = GUI1 returns the handle to a new GUI1 or the handle to
%      the existing singleton*.
%
%      GUI1('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in GUI1.M with the given input arguments.
%
%      GUI1('Property','Value',...) creates a new GUI1 or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before gui1_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to gui1_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help gui1% Last Modified by GUIDE v2.5 19-May-2018 10:57:01% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @gui1_OpeningFcn, ...'gui_OutputFcn',  @gui1_OutputFcn, ...'gui_LayoutFcn',  [] , ...'gui_Callback',   []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT% --- Executes just before gui1 is made visible.
function gui1_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to gui1 (see VARARGIN)
% Choose default command line output for gui1
handles.output = hObject;
A=imread('指纹3.jpg');
set(handles.pushbutton1,'CData',A);
B=imread('指纹19.jpg');
set(handles.pushbutton3,'CData',B);C=imread('指纹18.jpg');
set(handles.pushbutton7,'CData',C);D=imread('指纹6.jpg');
set(handles.pushbutton4,'CData',D);E=imread('指纹17.jpg');
set(handles.pushbutton5,'CData',E);F=imread('指纹5.jpg');
set(handles.pushbutton8,'CData',F);G=imread('指纹8.jpg');
set(handles.pushbutton9,'CData',G);
% ha=axes('units','normalized','position',[0 0 1 1]);
% uistack(ha,'down')
% II=imread('动态图片2.jpg');%里面的参数可以是你自己的图片,把名字连同格式写进去就可以了
% image(II)
% colormap gray
% set(ha,'handlevisibility','off','visible','off');guidata(hObject, handles);% UIWAIT makes gui1 wait for user response (see UIRESUME)
% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.
function varargout = gui1_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)% Get default command line output from handles structure
varargout{1} = handles.output;% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
hfigure2=Fingerprint_gui();
handles.hfigure2=hfigure2;
guidata(hObject,handles);% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
function out = thinning2(in);%thinning process obtain a one pixel wide image skeleton
% use function n_sum and t_sum[w,h] = size(in);out = in;for i= 3:h-2
for j= 3:w-2if out(i,j) == 1if 1 < n_sum(i,j,out) &  n_sum(i,j,out) < 7 if  t_sum(i,j,out) == 2if or ( and_157(i,j,out) == 0  , t_sum(i,j-1,out) ~= 2 )if or (and_357(i,j,out) == 0  , t_sum(i+1,j,out) ~=2 )   %        if and_157(i,j,out) == 0% if  and_357(i,j,out) == 0   out(i,j) = 0;elseout(i,j) = 1;end;elseout(i,j) = 1;end;elseend;end;

三、运行结果

在这里插入图片描述

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35457.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

出现了,Mac也可以玩的简单扫雷(1.0版本)

总体思路: 1.随机生成雷区 2.将每一个方块旁边有几个雷的数量算出来 3.不断的输入想要翻的方块 4.判断是否输赢 5.改变此方块的状态 直接上代码: #include <iostream> #include <ctime> #include <chrono> //计时头文件 #include <string.h> …...

axios跨域问题

项目配置 vue-cli3vue2element-ui-2.15.3 在网上找了很多方案&#xff0c;但是都没有生效&#xff0c;最后是前端添加了一段代码&#xff0c;后台添加了一段代码 解决了 添加了headers的配置 const instance axios.create({// baseURL: http://mall.huolida.com/,// baseUR…...

原创-Kafka原理

Kafka原理 2017年09月22日 22:39:45317人阅读 评论(0) 收藏 举报 分类&#xff1a; Kafka&#xff08;1&#xff09; 目录(?)[] Kafka 这段时间研究RabbitMQ、Kafka、RocketMQ消息队列&#xff0c;发现对她们原理的介绍都过于简单&#xff0c;所以整理了众多资料&…...

ef dbcontext

dbcontext class 用来crud数据库&#xff0c;也用来配置实体类&#xff0c;关系映射&#xff0c;缓存&#xff0c;事务&#xff0c;变化追踪等 using System.Data.Entity;public class SchoolContext : DbContext {public SchoolContext(){}// Entities public DbSet&l…...

【ACWing】1273. 天才的记忆

题目地址&#xff1a; https://www.acwing.com/problem/content/1275/ 从前有个人名叫WNB&#xff0c;他有着天才般的记忆力&#xff0c;他珍藏了许多许多的宝藏。在他离世之后留给后人一个难题&#xff08;专门考验记忆力的啊&#xff01;&#xff09;&#xff0c;如果谁能轻…...

《Python 编程从入门到实践》———— 创建和使用类

创建类 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。方法&#xff1a;类中定义的函数。类变量&#xff1a;类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。…...

C语言中的整型提升

C语言中的整型提升 提到整型提升,可能刚学c语言的小伙伴们很头疼这个知识点吧,下面我就我的理解简单分析一下整型提升是怎么回事. 首先还是介绍一下整型提升的概念: ​ c的整型算术运算总是至少以缺省整型类型的精度来进行的. 为了获得这个精度,表达式中的字符和短整型操作数在…...

Dubbo(一)项目架构演变过程

Dubbo&#xff08;一&#xff09;项目架构演变过程架构演变过程单体架构垂直架构SOA&#xff08;分布式架构&#xff09;微服务架构架构演变过程 dubbo是一款高性能的java rpn框架。 随着互联网的发展&#xff0c;用户群体逐渐壮大&#xff0c;网站的流量成倍增长&#xff0c;…...

Nuxt 项目完结总结

1、状态保存&#xff0c;即localstorage。 这里选择了 nuxt-vuex-localstorage&#xff08;^1.3.0&#xff09; 来做store的持久化保存。 modules: [nuxtjs/style-resources,nuxtjs/axios,[nuxt-vuex-localstorage,{localStorage: [localStorage]}] ] 2、登录token保存&…...

浅入浅出实现一个异步求和函数

简化&#xff1a;两数之和 我们先来简单的实现一个异步两数之和函数 function sumT(a, b) {return await new Promise((resolve, reject) > {asyncAdd(a, b, (err, res) > {if(!err) {resolve(res)}reject(err)})}) }// 测试 const test await sumT(1, 2) console.log…...

入门图形学:屏幕波爆特效

最近bilibili看了黑神话悟空的UE5演示视频&#xff0c;感觉是真牛逼&#xff0c;地址&#xff1a;黑神花悟空UE5实机演示视频 遥想我也算是国内第一批用ue4的开发者了&#xff0c;15年开始用ue4.7源码版&#xff0c;做了一年多就又用回u3d了&#xff0c;哈哈&#xff0c;主要因…...

unity学习笔记(一)

unity基础简介&#xff08;一&#xff09; unity是如何跨平台的&#xff08;附c和c#编译过程&#xff09; 前言 游戏引擎为了兼顾易用性和性能&#xff0c;往往使用一种高效率语言编写核心&#xff0c;使用另一种高级语言作为脚本语言&#xff0c;大部分游戏引擎的底层核心由…...

浮动布局,定位布局,伸缩盒布局

布局 默认文档流 1.元素显示的顺序和代码的顺序是一致的 2.块级元素独占一行空间&#xff0c;默认宽度为父元素的100%&#xff0c;高度由内容或者子元素决定 3.行内元素共享一行空间&#xff0c;默认宽高都由内容决定 浮动布局 float&#xff08;如果一个元…...

Python大数据分析学习基础篇(3)——数据结构

一、函数部分 1、闭包 所谓闭包其实跟回调函数有有相通之处。闭包可以延长作用时间和作用域。 def say(word):def name(name):print(word,name)return name hi say(你好) hi("小明") bye say("再见") bye("小明 ") 运行结果&#xff1a; …...

5V升压充电12.6V充电芯片

五串5911 四串HU5912 三串HU5913 两串HU5914,升压充电管理IC HU5912四节锂电池升压充电IC 概要 HU5912是一款 5V输入&#xff0c;支持四节锂电池的升压充电管理 IC。 HU5912 &#xff0c;采用异步开关架构&#xff0c;使其在应用时仅需 要极少的外围器件&#xff0c;可有效…...

SQL 之共同使用ip用户检测问题【自关联问题】-HQL面试题48【拼多多面试题】

目录 0 问题描述 1 数据分析 2 小结 0 问题描述 1 数据分析 (1)数据准备 create table log (uid string,ip string,time string )row format delimited fields terminated by \t;insert into log values (a, 124, 2019-08-07 12:0:0), (a, 124, 2019-08-07 13:0:0), (b, 1…...

thinkphp6 通过命令行快速生成多应用模块报 【Command “build“ is not defined.】错误的解决办法

在项目下执行如下命令 php think build admin报如下错误 [rootlocalhost orange]# php think build admin[InvalidArgumentException] Command "build" is not defined. 解决办法&#xff1a; 1.查看官方文档&#xff1a; https://www.kancloud.cn/manual…...

线程的安全性 - 并发基础篇

简介 当多个线程访问某个类时&#xff0c;这个类始终都能表现出正确的行为&#xff0c;那么就说这个类是线程安全的。 目录 这次分三步走&#xff1a;关于相关知识点&#xff0c;放在文末的脑图里了&#xff0c;大家想看结论的&#xff0c;可直接下拉观看哦。 1.创建一个线…...

栈?队列?Java ArrayDeque常用首尾操作方法整理

对于用Java刷leetcode的同学一定很眼熟ArrayDeque这个数据结构&#xff0c;因为它既可以作为队列也可以作为栈&#xff0c;解题时使用频率很高。补充一嘴&#xff0c;Stack也能作为栈来用&#xff0c;但是作为存在设计缺陷的Vector类的子类&#xff0c;已经不推荐使用了。 Arr…...

开发程序流程

JavaWeb程序--> 将一个请求路径( 网络地址) 变成一条sql语句&#xff0c;发送给数据库进行查询&#xff1b; 会将获取的数据&#xff0c;通过页面的方式&#xff0c;展示给用户进行操作&#xff1b; Javaweb程序如何将一个路径变成一条sql语句&#xff1f;...

java企业固定资产管理系统ssm框架

本企业固定资产管理系统SSM(SpringSpringMVCMyBatis)框架开发,主要包括系统用户管理模块、人员管理模块、资产管理、资产领用管理、维修管理、登录模块、和退出模块等多个模块。 本人通过开发此系统&#xff0c;在提高自己编程水平的同时&#xff0c;也对软件开发的过程和开发流…...

使用ffmpeg做直播推流例子

1、视频加音频直播 ffmpeg -f dshow -i audio"麦克风阵列 (Realtek(R) Audio)" -acodec aac -f dshow -i video"ov9734_azurewave_camera" -vcodec libx264 -f flv rtmp://127.0.0.1:9355/rtmp/room 其中&#xff0c;"麦克风阵列 (Realtek(R) A…...

新概念英语(第四册,旧版)复习(原文及全文翻译)——Lesson 51 - Training Elephants(训象)

Lesson 51 - Training Elephants Two main techniques have been used for training elephants, which we may call respectively the tough and the gentle. The former method simply consists of setting an elephant to work and beating him until he does what is expe...

本地jar上传到maven中央仓库

本地jar上传到maven中央仓库 前几天公司大佬让我研究下本地jar上传到中央仓库给第三方公司使用&#xff0c;我懵逼了&#xff0c;然后自己理解错了&#xff0c;去研究自己搭建私服然后开外网映射&#xff0c;然后研究了下阿里云的maven私服&#xff0c;但是大佬说研究不对&…...

Echarts 动态更新数据和样式

实现数据按月统计和按日统计的动态切换。按月统计时&#xff0c;每个月数据都会展示&#xff0c;x 轴显示 12 个标签&#xff1b;按日统计时&#xff0c;x 轴不完全显示所有标签&#xff0c;间隔显示&#xff0c;而且柱状体的宽度也会变化。主要是采用的是setOption方法。 官方…...

linux服务器部署javaweb项目全流程

目录前言一、环境配置及搭建1. Jdk的安装与配置2. Mysql的安装与配置3. Tomcat的安装与配置二、部署项目前言 我这边使用的有&#xff1a; 开发工具&#xff1a;ideajdk&#xff1a;1.8mysql&#xff1a;5.7.35tomcat&#xff1a;8.0.35ssh工具&#xff1a;FinalShell 一、环…...

51nod1144 打字的猴子

1144 打字的猴子 有一个特殊的键盘&#xff0c;上面有n个按键。一个猴子用这个键盘打字&#xff0c;每一秒钟打出其中任何1个字母的概率是1/n&#xff0c;让他无限打下去&#xff0c;可以打出任何文学作品。给出按键的数量n和一个字符串&#xff0c;求猴子打出这个串所需时间的…...

阿里云泄露信息、腾讯视频崩了,抖音使用IPFS存储!IPFS将开启一个更安全的互联网存储时代!

西部世界XLMidsummer了解到&#xff0c;近日&#xff0c;网络流传一份浙江省通信管理局7月5日对投诉人的答复函&#xff0c;核实称此前阿里云计算有限公司未经用户同意擅自将用户留存在的注册信息泄露给第三方合作公司。8月23日&#xff0c;浙江省通信管理局相关负责人独家回应…...

项目上线部署发布流程

发布流程 在已开发完毕的各系统正式部署生产环境前要严格按照以下流程进行上线前检查。 一、 提交测试 a) 开发人员在功能开发完毕后首先配置开发环境&#xff0c;并将系统部署至开发环境。在开发环境经过自测通过后提交测试代码&#xff0c;并开始撰写上线方案。(上线方案须包…...

服务器应该租用哪家好?如何选择适合自己的服务器?

当前正处于云计算的时代。现有的服务器租赁模式已发生变化。云服务器正成为很多个人开发者和企业的选择。今天咱们就简单说一下云服务器租赁哪个比较好&#xff01; 国内云平台IDC每个季度都会统计服务商在市场占有率等方面的排名&#xff0c;据IDC最新数据统计&#xff0c;国…...

动动手指自己“造”芯片,Google 推出芯片设计网站

「人人都是开发者&#xff0c;家家都是技术公司」的时代&#xff0c;不仅编程的门槛降低了&#xff0c;就连自己也可以动动手指头制造芯片“玩”了。 6 月 1 日&#xff0c;Google 硬件团队推出了一个全新的面向开发者的网站&#xff1a;http://developers.google.com/silicon…...

22 个用于网站设计的 CSS 库

点击上方 前端Q&#xff0c;关注公众号回复加群&#xff0c;加入前端Q技术交流群原文 | https://javascript.plainenglish.io/26-github-open-sources-for-learning-programming-4d0021d9f336今天我们将分享22个关于网站设计的CSS库&#xff0c;希望对您的学习与网站设计、网站…...

我用diffusion把姐妹cos成了灭霸的模样

卷友们好&#xff0c;我是rumor。关注早的朋友们应该知道&#xff0c;我有个姐妹&#xff0c;她去年回深圳老家了&#xff0c;本来我觉得还ok&#xff0c;还能再约着一起旅游。谁知道一年多了&#xff0c;我还没出过北京&#xff08;微笑。以前有个快乐源泉&#xff0c;就是照她…...

03 统计量

💖💖感谢各位观看这篇文章,💖💖点赞💖💖、收藏💖💖、你的支持是我前进的动力!💖💖 💖💖感谢你的阅读💖,专栏文章💖持续更新!💖关注不迷路!!💖 1.随机事件与概率 2. 随机变量与概率分布 3. 概率分布函数与概率密度函数_ 4. 抽样分布:卡…...

css如何美化滚动条

我们在设计样式时可能会使用overflow: scroll; 给区域设置滚动条&#xff0c;但是滚动条本身的样式又和自己页面的整体风格不搭&#xff0c;下面是我个人在项目中使用的一套优化滚动条的代码可以给大家参考一下&#xff1a; /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺…...

CSS : 去除页面滚动条

html <html style"overflow:hidden;">CSS <style type"text/css"> html{ overflow-x: hidden; overflow-y: hidden; } </style>知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可...

Linux系统下Django框架的环境准备工作流程

一&#xff1a;&#xff08;创建虚拟环境&#xff09; 首先&#xff0c;更新virtualenv库(该库用于创建虚拟环境)&#xff1a;sudo pip install -U virtualenv 然后&#xff0c;创建虚拟环境&#xff1a;virtualenv -p python venv(这里的venv是虚拟环境的名称&#xff0c;随…...

二叉树-31-37对称二叉树

31. 对称的二叉树 递归&#xff1a; 把原问题化成更小规模的问题&#xff0c;并且具有相同的问题性质&#xff0c;重复调用本身函数 二叉树的递归&#xff0c;是将某个节点的左子树、右子树看成一颗完整的树&#xff0c;那么对于子树的访问或者操作就是对于原树的访问或者操作…...

Eoapi — 一个可拓展的开源 API 工具

在社区中时常会出现“抱怨某商业产品越来越臃肿”的声音&#xff0c;API 工具也是如此。从最早期只做 API 调试的工具&#xff0c;到经过多年的演进后集成全面功能的“庞然大物”&#xff0c;它越来越成熟了&#xff0c;也越来越不适合最初的那批用户了。我们并不需要用到所有的…...

吉利安卓应用市场API

BaseURL com\ecarx\appstore\global\http\HttpUtil.smali# static fields .field private static final BASE_URL:Ljava/lang/String; "http://api.xchanger.cn/api/v1/" API smali\com\ecarx\appstore\global\http\Api.smaliLine 135: .method public abstract...

查看Android 各种API版本占据当前市场的比例

对于Android开发&#xff0c;有时候想兼顾一些低API版本手机的功能&#xff0c;例如之前兼容到Android 2.3。但是有时候&#xff0c;有些功能确实很难实现&#xff0c;为了兼容只好把功能变动一点。那如果我想看看&#xff0c;Android各种API版本占据市场比例的情况呢&#xff…...

轻量级web api_API接口管理,这15种开源工具助你管理API

API译者&#xff1a;DevOps亮哥如今&#xff0c;API已在软件、Web和移动应用程序开发领域无处不在&#xff0c;从企业内部到面向公众的应用以及与合作伙伴进行系统集成。通过使用API&#xff0c;开发人员可以创建满足各种客户需求的应用程序。而软件架构也在随着应用程序开发方…...

IDEA如何配置 Gradle 及 Gradle 安装过程(详细版)

IDEA如何配置 Gradle&#xff08;详细版&#xff09; 一、安装 Gradle 1、下载 Gradle 安装包 官网下载链接&#xff1a;https://gradle.org/releases/ 2、下载后解压 3、文件夹如图所示 二、环境变量配置 1、点击我的电脑->属性->高级系统设置->环境变量 2、新建&…...

API安全前景与趋势

在国家政策和技术革新的牵引下&#xff0c;API安全正进入一个前所未有的 阶段&#xff0c;从传统互联网到移动互联网&#xff0c;再到物联网&#xff0c;正在影响人们生活的方方面面。 1.国家政策对API安全的影响 自23015年政府工作报告中提出“制定‘互联网’行动计划&#x…...

一位信用卡业务人员到IT的转行路

说到超级菜鸟&#xff1a;女生&#xff0c;二本&#xff0c;市场营销专业&#xff0c;别说vlookup连sum是啥都不知道&#xff0c;代码一个字母都不会&#xff0c;平时工作连电脑都不咋敲&#xff0c;这个应该够超级菜了。&#xff08;确实是个小姐姐&#xff0c;没有性别歧视的…...

AI反欺诈:千亿的蓝海,烫手的山芋|甲子光年

不久前&#xff0c;一家业界领先的机器学习公司告诉「甲子光年」&#xff1a;常有客户带着迫切的反欺诈需求主动找来&#xff0c;但是&#xff0c;我们不敢接。 难点何在&#xff1f; 作者&#xff5c;晕倒羊 编辑&#xff5c;甲小姐 设计&#xff5c;孙佳栋 生死欺诈 企业越急…...

linux系统配置与管理课程,Linux系统管理与服务配置

学习完本课程&#xff0c;我们应该能够学会熟练地安装Linux操作系统&#xff0c;对Linux操作系统能够进行常用的系统管理&#xff0c;并且能够安装和配置Linux系统常用网络服务&#xff0c;能够诊断和解决系统的实际问题。本次课程的学习内容主要分为五部分&#xff1a;第一部分…...

计算机学院信息系统,计算机学院学生信息管理系统.docx

计算机学院学生信息管理系统计算机学院学生信息管理系统总体设计组长:xx组员&#xff1a;xxx时间&#xff1a;2015年12月12日1、架构设计和目标约束学生信息管理系统是学生信息管理的必不可少的部分&#xff0c;本学生信息管理系统是基于B/S架构的设计的。约束包括技术上的约束…...

回归分析-书后习题回顾总结

4-1 题目 理论基础 经典多元线性回归模型 参数β\betaβ的最小二乘估计 设rank(C)m1≤nrank(C)m1≤nrank(C)m1≤n&#xff0c;则β^b(CTC)−1CTY\widehat{\beta}b(C^{T}C)^{-1}C^{T}Yβ​b(CTC)−1CTY是β\betaβ的最小二乘估计 具体解题...

学生管理系统的mysql数据库设计_MySQL 数据库 -- 学生管理系统数据库设计

MySQL 数据库 -- 学生管理系统数据库设计目录学生管理系统数据库设计学生管理系统功能介绍数据库设计步骤第 1 步: 找对象第 2 步: 找属性第 3 步: 找关系建表遵守原则第 4 步: 找特例: 等级明显而且不包含敏感数据的信息建议保持为 1 张表遵循数据库设计三大范式总结: 数据库设…...