13 还是叫明

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 2w+

SQL训练题(附答案及详细讲解)

一、表结构所有题目都基于以下表,请先创建并熟悉:学生表studentCREATE TABLE student(sid VARCHAR(10),sname VARCHAR(10),sage DATETIME,sgender VARCHAR(10));INSERT INTO student VALUES('01' , '赵雷' , '1990-01-01' , '男');INSERT INTO student VALUES('02' , '钱电' , '1990-12-21' , '男');

2020-08-05 15:56:27

详解.NET实现OAuth2.0四种模式(6)RefreshToken

我们知道,为了安全起见,AccessToken的有效时间一般是比较短的(如30分钟)。在AccessToken超出有效期之后,它就不能再用于访问资源,必须重新获得。但如果每30分钟,就要让用户登录一次,那必定会让用户感到厌烦。于是就产生了RefreshToken这个概念。在获得AccessToken的同时,得到RefreshToken。在AccessToken过期之后,不需要请求用户重新输入账号,直接用RefreshToken获得新的AccessToken。下面,我们在授权码模式下,加入Refres

2020-07-20 16:05:27

详解.NET实现OAuth2.0四种模式(5)简化模式

简化模式又称为隐式授权码模式,它是授权码模式的一个简化版本。具体来说,在简化模式中,授权服务器不返回授权码,而直接返回AccessToken。这种模式一般用在无法安全保存AppSecret等信息的应用中,如HTML/JS应用(所有代码都在明文中)。授权码原先设计的目的是验证应用是合法的,但既然应用没办法证明自己,就没有必要多一步请求了。我们直接来看简化模式的实现。Startup类跟授权码模式是一致的,我们不再赘述。...

2020-07-20 15:26:31

详解.NET实现OAuth2.0四种模式(4)授权码模式

一、授权码模式认证流程授权码模式是最为安全,同时也最为复杂的一种模式。其认证流程如下图所示:可能有的人会问,为什么要多出授权码这个东西呢,没有它不行吗?(我自己一开始也有这个疑问)确实是不行,我们来看一下。我们拿“同城交友”APP微信登录这个例子来解释。首先,用户名、密码就是我们的微信号和密码,我们是不能交给“同城交友”这个APP的。所以,我们在微信官方的登录页上完成了微信号和密码的输入(当然,也可能是手机扫一扫)。完成之后,我们能不能直接把AccessToken交给APP去访问资源呢?还不

2020-07-20 14:50:27

详解.NET实现OAuth2.0四种模式(3)客户端模式

一、客户端模式的认证流程客户端模式也是一种比较简单的模式,其跟密码模式类似,只是不用用户名和密码去认证,而使用AppID、AppSecret认证。在客户端模式下,认证的主体是应用,而非用户。二、客户端模式的实现客户端模式的实现过程跟密码模式基本是一致的,相同的部分不再赘述,所以还没了解密码模式的读者请先阅读上一章。我们在上一章中,创建了一个简单的Controller作为资源示例,创建了一个Startup类,作为网站入口。这些内容在客户端模式下都是完全相同的。唯一有区别的是Authoriz

2020-07-20 10:16:18

详解.NET实现OAuth2.0四种模式(2)密码模式

一、密码模式的认证流程密码模式是比较简单的一种模式,其认证流程如下图所示:二、受限资源设计OAuth2.0设计的目的是限制某些资源的访问,用户必须认证通过之后才能访问。我们在项目中加入一个简单的Controller,作为资源示例。右击项目,添加一个Web API控制器类(v2.1),如下图所示:我们把这个类命名为ValuesController,在这个类中只添加一个函数:public IHttpActionResult Get(){ return Ok(new s

2020-07-20 09:06:43

详解.NET实现OAuth2.0四种模式(1)

一、OAuth2.0的角色在OAuth2.0协议中,有4个角色,分别是:用户:访问受限制资源的用户。应用:第三方应用,可能是手机App、Web应用或者桌面程序。授权服务器:负责用户授权、颁发令牌、管理应用等。资源服务器:存放受限制资源。授权服务器和资源服务可以是同一个服务器。举个例子,我们在“同城交友”这款应用中,需要微信登录并使用微信头像,那么,用户就是我们,应用是“同城交友”,授权服务器就是微信登录授权的服务器,而资源服务器存放了我们微信的头像。二、一般流程使用O

2020-07-17 19:54:09

C#基于任务的异步模式开发教程

任务一般是一些比较耗时的操作(IO或者复杂计算),如果在主线程运行,将影响程序的流畅性。所以,我们一般会新建线程处理任务。.NET4开始引进了Task,它对Thread做了大量方便易用的封装。我们将详细讲述Task的使用方法,以及各种多线程的使用场合。一、任务设计1.1基本设计一个简单的耗时操作如下所示:void Func1(){ Thread.Sleep(1000);}如果有返回值,将如下所示:int Func2(){ Thread.Sleep(1500.

2020-07-01 17:44:36

跨平台SCADA系统(组态软件)开发6

六、服务端实现本章所说的服务端,是“仪器-工控机-服务器-客户端”架构中的服务端,并不实现采集功能(采集功能已在前面的章节讲述)。我们要实现的服务端是有高实时性的,当数据发生改变时,迅速地推送给客户端。同时,客户端上的反控操作,能快速地反映到仪器上。MQTT是实现此类服务端较好的技术选择。以“设备名.因子名”为主题,当采集到变化的数据时,发布相应主题。客户端根据当前显示需要,订阅相关的主题。同时,工控机订阅一个专门的反控主题,任何客户端的反控操作都发布该主题。...

2020-06-03 15:37:06

跨平台SCADA系统(组态软件)开发5

五、组态功能开发事实上,整个组态功能就是在Web上开发的,而桌面软件上显示的组态界面,其实是加载浏览器内核完成的。浏览器下的组态图编辑界面:

2020-06-01 17:49:05

跨平台SCADA系统(组态软件)开发4

四、数据采集采集功能是整个系统最核心的功能,完成了这一功能,其他部分便水到渠成。数据采集的需求包括:(1)仪器各种各样,通信协议五花八门。(2)软件开发完成以后,能够让不懂代码的人配置最终产品。(3)使用多种链路,有些仪器共用一条链路。(4)快速采集,有些链路或仪器出现问题不影响整个系统的采集。(5)在采集的同时,反控能及时响应。上述五个需求,我们在不同的模块中完成,每个模块只要做好自己的事情即可。4.1设备配置和通信协议这一部分完成的是需求1和2。...

2020-06-01 14:48:45

跨平台SCADA系统(组态软件)开发3

三、模块化开发我们在第一章中提到,SCADA系统可能应用于不同的部署框架中,包括“仪器-工控机”、“仪器-工控机-服务器-客户端”和“仪器-服务器-客户端”。为了应对这种情况,有两种开发模式:1、开发一个大的系统,然后通过配置项启用或禁用某些部分的代码。2、设计好接口,每个模块独立开发,最后产品像搭积木一样拼装每个模块发布。本系统使用第二种开发模式。四、采集模块...

2020-06-01 11:43:03

跨平台SCADA系统(组态软件)开发2

二、数据模型整个SCADA系统,其功能其实是对数据流动的控制,如下图所示:(1)采集模块是系统的入口,所有数据来自采集模块。(2)采集到的数据是实时变化的,而数据库可能要求1分钟或1小时存放一条数据,这时候需要对数据进行采样。(3)原始数据或许只是数字,而我们在展现时,会要求显示单位、保留一定的小数位数,又或者,什么数字代表什么状态,这就要求对数据进行一定的格式化。(4)数据经过整理之后,按照一定的通信协议上传至服务器。那作为系统核心的数据,究竟以怎样的格式进行存放呢?上.

2020-06-01 09:22:14

跨平台SCADA系统(组态软件)开发1

一、系统概述我在上年做了一些工控软件开发的介绍(可参考我之前发过的博文),解决了两个主要问题:1、无需修改代码,简单配置,即可支持几十上百种不同通讯协议的仪器。2、开发了类似组态软件的功能,像画图软件一样编辑一个流程图,图像元素能够根据仪器数据和状态进行实时变化。当然还有其他解决的问题,但比较突出的是上面两点。(组态)(设备配置)(设备面板)(数据图表)今年接触到几位同行的朋友,他们提出了能不能提供在Web上运行的组态图的想法。确实,Web早已大行其.

2020-05-30 07:47:14

基于OpenCvSharp的数字图像处理 - 轮廓

我们在前面的章节里讲过边缘检测,本章所说的轮廓是基于边缘检测的。我们之前所做的边缘检测,结果只是基于像素的,而很多时候,我们可能需要对轮廓进行一些几何操作,例如分析区域是否连通,求出轮廓的凸包,判断一个点是不是在轮廓内,等等。我们先来看两种生成轮廓的方法,再看对轮廓的一些应用。一、从边缘得到轮廓虽然轮廓似乎就是边缘,但实际上,OpenCV只能从二值图得到轮廓,边缘被看成是非常窄的区域(宽1个像素)。所以,从边缘得到轮廓时,会出现两条轮廓基本相同,它们是边缘的内外。示例代码如下:Mat sr

2020-05-11 15:41:24

基于OpenCvSharp的数字图像处理 - 图像分割

图像分割是根据图像中各部分的特征,分割出不同的区域,这些区域可能代表了不同的物体。最简单的图像分割是区分出背景和前景。图像分割目前有一些比较成熟的技术,但想不通过一些辅助手段而达到比较好的分割效果,还是有一定难度的。一、漫水填充如果用过Photoshop的读者,应该对这项功能很熟悉。先设定一个阈值,然后在图像中的某个区域点一下鼠标,类似这个区域的像素都会被填充为某一颜色。这项功能需要我们指...

2020-05-06 16:37:39

基于OpenCvSharp的数字图像处理 - 图像优化

在直方图一章里提到的直方图均衡化就是一种图像优化的方法。本章再介绍图像修复和去噪两种方法。一、图像修复这里所介绍的图像修复是很简单的,就是用周边区域的像素填充损坏区域。代码如下:Mat src = new Mat(img_lenna_bad);//找出损坏区域Mat mask = new Mat(src.Size(), MatType.CV_8UC1, new Scalar(0...

2020-04-27 10:30:51

基于OpenCvSharp的数字图像处理 - 霍夫变换

霍夫变换最大的作用是检测图像中的直线。其原理是这样的:假设图像中有一条直线,其方程为y=kx+b。直线上有一个点,其坐标为(x1,y1)。显然,y1=kx1+b。如果我们把x、y看成是已知的,把k、b看成是未知数,有:b=-x1k+y1。我们发现,(x,y)坐标系上的一个点,对应了(k,b)坐标系上的一条直线。如果有另外一个点(x2,y2),则其必然对应(k,b)坐标系上的另一条直线。显然,(k,...

2020-04-27 09:16:41

基于OpenCvSharp的数字图像处理 - 直方图

直方图是对图像灰度信息的一个统计结果,直方图的分布能够反映图像的某些特征,可用于图像匹配。一、直方图提取图像直方图的代码如下:Mat src = new Mat(img_lenna, ImreadModes.Grayscale);Mat hist = new Mat();Cv2.CalcHist(new Mat[] { src }, new int[] { 0 }, new Ma...

2020-04-26 20:18:40

基于OpenCvSharp的数字图像处理 - 位置变换

平移、旋转、缩放、翻转、剪切等变换都属于仿射变换,而仿射变换又是透视变换的一种。所有仿射变换都可以用三个点到另外三个点去描述,而透视变换需要四个点。我们拍摄的图像里面,一般矩形的物体(例如纸张)都会变形,如果要转回规整的矩形,就要使用透视变换。在本教程中,使用的原图都是:一、翻转Mat src = new Mat(img_word);Mat map_x = new Mat...

2020-04-15 14:18:38

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取