精华内容
下载资源
问答
  • Java实战之Spring Boot入门到精通

    千人学习 2019-12-24 15:22:48
    本课程主要是从最基础的技术要点一步一个脚印的介绍Spring Boot2.0相关的核心技术栈,包括如何基于Spring Boot2.0搭建一个企业级的多模块项目、整合Spring MVC和Mybatis实现项目中功能模块的CRUD,校验器Validator、...
  • 基于51单片机的交通灯控制系统设计

    万次阅读 多人点赞 2018-11-24 13:38:11
    本设计为基于51单片机交通灯系统的设计,采用模块化、层次化设计。运用单片机AT89C51进行数据的分析和处理,为显示提供信号,显示部分采用8位数码管显示倒计时值。系统电路简单、集成度高、工作稳定、调试方便、检测...

    第一章 硬件设计与原理
    以AT89C51单片机为核心,起着控制作用。系统包括数码管显示电路、复位电路、时钟电路、发光二级管电路和按键电路。设计思路分为六个模块:复位电路、晶振电路模块、AT89C51、数码管显示电路、发光二级管电路和按键电路这六个模块。

    在这里插入图片描述

    1.2 硬件设计分析
    1.2.1 电源的设计
    系统电源使用直流5伏。
    由电脑USB接口提供电源。
    USB是通用串行总线(Universal Serial Bus)接口的简称。它是目前使用比较广泛的电脑接口之一,主要版本有1.0、1.1和最新的2.0三种版本。根据USB总线的工业标准,它可以提供额定功率为5V/500mA的电源供USB设备使用。
    1.2.2 单片机最小系统
    51单片机是对目前所有兼容intel 8031指令系统的单片机的统称。该系列单片机的始祖是intel的8031单片机,后来随着技术的发展,成为目前广泛应用的8为单片机之一。单片机是在一块芯片内集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称为MCU。51系列单片机内包含以下几个部件:
    一个8位CPU;一个片内振荡器及时钟电路;
    4KB的ROM程序存储器;
    一个128B的RAM数据存储器;
    寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;
    32条可编程的I/O口线;
    两个16位定时/计数器;
    一个可编程全双工串行口;
    5个中断源、两个优先级嵌套中断结构。
    如图1-2-1所示为AT89C51单片机基本构造,其基本性能介绍如下:
    图1-2-1 AT89C51单片机

    AT89C51本身内含40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中端口,3个16位可编程定时计数器,2个全双工串行通信口,STC89C51RC可以按照常规方法进行编程,但不可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
    AT89C51的主要特性如下表所示:

    在这里插入图片描述

    AT89C51为40脚双列直插封装的8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P0~P3 为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
    P0口:P0口是一组8位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
    P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51不同之处是,P1.0和P1.1还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX)。Flash编程和程序校验期间,P1接收低8位地址。
    P2口:P2是一个带有内部上拉电阻的8 位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX @DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX @RI指令)时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制信号。
    P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能P3口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。
    RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
    ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个AL脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条 MOVX 和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
    PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
    EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
    XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。
    XTAL2:振荡器反相放大器的输出端。
    单片机最小原理图如图1-2-2所示。
    图1-2-2 单片机最小系统

    单片机最小系统说明:
    时钟信号的产生:在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟振荡电路。
    时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
    一般地,电容C2和C3取30pF左右,晶体的振荡频率范围是1.2-12MHz。如果晶体振荡频率高,则系统的时钟频率也高,单片机的运行速度也就快。
    单片机复位使CPU和系统中的其他功能部件都处在一个确定的初始状态下,并从这个状态开始工作。单片机复位条件:必须使9脚加上持续两个机器周期(即24个振荡周期)的高电平。
    1.2.3 显示系统
    数码管是一种半导体发光器件,其基本单元是发光二极管。
    数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。
    数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
    1) 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动(要知道一个89C51单片机可用的I/O端口才32个呢),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
    2) 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
    本设计中数码管采用的是动态驱动方式。
    数码管外形如图1-2-3,数码管电路结构如图1-2-4。

    图1-2-3 数码管外形图
    图1-2-4 数码管电路结构示意图

    在这里插入图片描述
    图1-2-5 数码管显示电路
    1.2.4 发光二级管电路

    图1-2-6 发光二级管电路
    1.2.5 按键电路
    图1-2-7 按键电路

    第二章 软件设计与分析
    2.1 软件设计的组成
    该系统由延时子函数、数码管显示子函数、定时器0中断子函数、主函数和数据定义这几部分组成。
    在这里插入图片描述

    在这里插入图片描述

    //----------------------------------------------------------------------//
    上传过程感觉繁琐,里面可能有不全面的地方,请见谅。下面的是实现的目的。以及电路原理图

    **本次设计的主要目的是设计一个城市十字路口的交通灯控制系统,设计中将交通灯控制系统分为东西方向(主干道)和南北方向(次干道)两个方向,且在东西南北四个路口的每个路口设置红、绿、黄三个交通信号灯(用发光二极管模拟)和一个二位的LED数码显示管。设计的要求是规定在每一段时间内东西和南北两个方向中只有一个方向能够通行,另一个方向处于禁行状态,然后在经过一段时间后,禁行的方向和通行的方向互相转换状态,原来通行的状态变禁行状态,原来禁行的状态变为通行状态,如此循环下去。详细过程如下图2-1:
    状态① 状态②
    图 1图2-1 交通灯状态图
    状态①:东西方向的交通灯黄灯闪烁3秒后,红灯熄灭,绿灯点亮(东西方向允许车辆和行人通行),同时南北方向绿灯熄灭,红灯点亮(南北方向禁止车辆和行人通行),LED数码管倒计时显示40秒,在倒计时3秒时进入状态②。
    状态②:南北方向黄灯闪烁3秒后,红灯熄灭绿灯点亮(南北允许车辆和行人通行);同时东西方向绿灯熄灭,红灯点亮
    (东西方向禁止车辆和行人通行),LED数码管倒计时显示40秒,在倒计时3秒时进入状态①。
    接下来在没有人为干涉下将会一直按照上述进行循环。设计中还外设6个按键实现对交通灯控制系统的调控作用。

    电路原理图

    在这里插入图片描述

    在这里插入图片描述

    //——————————————————————————-——————————//
    相应的代码已经上传

    下载地址
    https://download.csdn.net/download/weixin_43442020/12231456

    下载链接里可以下载,解压后里面有压缩文件,压缩文件里面的资料更详细

    展开全文
  • 手势识别 技术

    万次阅读 多人点赞 2019-04-19 16:02:27
    手势识别可以分为基于可穿戴设备的识别、基于触摸技术的识别和基于计算机视觉的识别。 一、基于可穿戴设备的识别 1、在手势交互过程中,可以直接采集每根手指的弯曲姿态,通过数据归一化和平滑处理两根手指之间...

    手势识别可以分为基于可穿戴设备的识别、基于触摸技术的识别和基于计算机视觉的识别。

    一、基于可穿戴设备的识别

    1、在手势交互过程中,可以直接采集每根手指的弯曲姿态,通过数据归一化和平滑处理两根手指之间方位的时空参数。然后,手势识别模型训练可以选择有效的特征参数。所采集的位置参数一般具有较高的精度。因此,手势模型训练方法的选择对手势识别效果影响较大。

    Mehdi S A, Khan Y N. Sign language recognition using sensor gloves. In: Proceedings of the 9th International Conference on Neural Information Processing. 2002, 2204−2206 DOI:10.1109/ICONIP.2002.1201884

    使用人工神经网络(ANN)模型进行基于感觉手套的美国手语识别,然后将其翻译成英语

    Shi J F, Chen Y, Zhao H M. Node-Pair BP Network Based Gesture Recognition by Data Glove. System Simulation Technology, 2008, 4(3): 154−157 DOI:10.3969/j.issn.1673-1964.2008.03.003 

    通过传感器获得不同输出节点的实测值,并将这些节点配对成一个BP神经网络来识别手势

    Rung-Huei L, Ming O. A real-time continuous gesture recognition system for sign language. In: Proceedings Third IEEE International Conference onAutomatic Face and Gesture Recognition. 1998, 558−567 DOI:10.1109/AFGR.1998.671007 

    用数据手套采集了51个基本姿势,包括6个方向,8个动作原始数据。然后利用隐马尔可夫模型进行建模,建立了一个能识别250种台湾手语的词汇系统。由这些手势组成的连续句平均识别率达到80.4%

    Liu M T, Lei Y. Chinese finger Alphabet flow recognition system based on data glove. Computer Engineering, 2011, 37 (22): 168−170 

    使用数据手套Ultra 5进行数据采集,并结合BP神经网络和Markov对汉语拼音进行识别

    Wu J Q, Gao W, Chen L X. A system recognizing Chinese finger-spelling alphabets based on data-glove input. Pattern Recognition andArtificial Intelligence, 1999(1): 74−78 

    将神经网络与学习决策树相结合,建立了一个识别模型,利用数据手套构建了一个中文手指拼写手势识别系统。

    Weissmann J, Salomon R. Gesture recognition for virtual reality applications using data gloves and neural networks. In: IJCNN'99 International Joint Conference on Neural Networks Proceedings. 1999, 2043−2046 DOI:10.1109/IJCNN.1999.832699 

    通过数据手套获得了18个不同手指关节的测量值,并利用BP和径向基函数建立了多个不同的神经网络模型用于手势识别。一些神经网络模型能够识别特定的手势,其准确率甚至达到了100%

    2、此外,当输入数据手套的数据转换为虚拟手模型与对象交互,通常需要进行碰撞检测来确定对象和手之间的接触情况,并通过接触情况确定手的操作条件。

    Xu Y H, Li J R. Research and implementation of virtual hand interaction in virtual mechanical assembly. Machinery Design & Manufacture, 2014(5): 262−266 

    边界框法进行碰撞检测,并将检测结果与手势库,它决定此时角是否符合定义的动作,从而实现了虚拟装配技术的虚拟手。该方法的精度相对较差,不可能实现相对复杂的交互。在未来,将有可能通过虚拟力分析和运动分析来确定手和物体之间的相对位置。

    3、随着MEMS技术的发展,传感器变得小型化、智能化,进一步推动了基于传感器的手势识别可穿戴设备的发展。利用传感器获取目标的角速度、加速度等运动信息,可以直接获取手势的空间位置,不需要进行手势分割。通过对信息的建模和分析,可以对交互手势进行识别。

    Mirabella O, Brischetto M, Mastroeni G. MEMS based gesture recognition. In: 3rd International Conference on Human System Interaction. 2010, 599−604 DOI:10.1109/HSI.2010.5514506 

    创造了一种手势识别系统,允许用户浏览数码照片、家庭电视或通过预定义的手势为身体残疾的人提供特殊服务。系统利用加速度传感器读取手势的输入数据,通过HMM训练,识别用户自定义手势的状态,用户可以根据应用程序的需要向手势列表中添加一个新的手势。

    Kela J, Korpipää P, Mäntyjärvi J, Kallio S, Savino G, Jozzo L, Marca D. Accelerometer-based gesture control for a design environment. Personal & Ubiquitous Computing, 2006, 10(5): 285−299 DOI:10.1007/s00779-005-0033-8 

    使用加速度计控制器和HMM来收集和识别用户的输入手势,研究手势模态对用户交互的影响。结果表明,不同的人对同一任务偏好不同的交互手势。对于某些任务,手势比语音、激光笔、平板电脑等交互方式更加自然,甚至可以增强与其他方式的交互。

    Xu J, Liu C H, Meng Y X. Gesture recognition base on wearable controller. Application of Electronic Technique, 2016, 42(7): 68−71 

    定义了六种简单手势类型,通过陀螺仪和加速度计获取手势数据,提取手势长度和能量等六个特征,并使用决策树分类器识别出六种手势

    He Z Y, Jin L W, Zhen L X, Huang J C. Gesture recognition based on 3D accelerometer for cell phones interaction. In: APCCAS2008 - 2008IEEEAsia Pacific Conference on Circuits and Systems. 2008, 217−220 DOI:10.1109/APCCAS.2008.4745999 

    在手机上添加加速度计,获取用户操作时手势的运动状态,提取离散余弦变换(DCT)快速傅里叶变换(FFT)和小波包分解(WPD)的三个不同特征,并使用SVM进行分类训练。与其他两种特征相比,基于wpd的特征提取方法对17种复杂手势识别的准确率较高,达到了87.36%

    Schlömer T, Poppinga B, Henze N, Boll S. Gesture recognition with a Wii controller. In: Proceedings of the 2nd international conference on Tangible and embedded interaction. Bonn, Germany,ACM, 2008: 11−14 DOI:10.1145/1347390.1347395 

    研究了基于wii控制器的交互式应用程序的手势识别效果。该系统允许用户对操作手势进行预训练。首先,用滤波方法对原始数据进行平滑处理。平滑后,通过k-均值数据压缩得到训练样本。然后利用HMM训练得到识别系统,将该系统的手势识别结果与其他模式融合,应用于多媒体交互

    4、利用生物电获取用户的手势信息已成为近年来的研究热点。肌电(electromyography, EMG)识别用户手势的原理是根据运动过程中肌肉信号的变化来识别用户当前的动作。

    获取肌肉信号的方法主要有两种。一种是在皮肤下植入电极,直接获得生理信号。虽然这种方法不容易受到外界环境的影响,但它具有侵入性,对使用者有物理损伤的风险。另一种常用的方法是通过放置电极检测皮肤表面电流的变化来分析使用者的运动状态。该方法虽然容易受到外界环境的影响,但操作简便,对用户的危害小,符合人机交互的交互原理。

    Saponas T S, Tan D S, Morris D, Balakrishnan R. Demonstrating the feasibility of using forearm electromyography for muscle-computer interfaces. In: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems. Florence, Italy,ACM, 2008: 515−524 

    研究了人类肌肉活动信号和计算界面之间的感知交互,用户不需要依赖特定的动作或其他物理设备进行交互。在用户上臂附近的窄带区域布置了10个传感器。以250ms为间隔获取用户的EMG信号,提取包括频域功率和相位相干性在内的74个特征。利用SVM训练分类模型。结果表明,该方法可以区分手指运动或点击、手指位置差、压力等级等四种手势集

    Amma C, Krings T, Böer J, Schultz T. Advancing Muscle-Computer Interfaces with High-Density Electromyography. In: Proceedings of the 33rd Annual ACM Conference on Human Factors in Computing Systems. Seoul, Republic of Korea,ACM, 2015: 929−938 DOI:10.1145/2702123.2702501 

    按8×24的栅极排列192个电极,间隔10mm。排列整齐的电极阵列被放置在前臂肌肉上,以获得高密度的肌电图信号。电极间的差异由两个电极记录。每八个电极中就有一个不包含有意义的数据,所以有168个可用的数据通道。使用提取通道的均方根(RMS)作为输入特征,使用朴素贝叶斯分类器识别预定义的27个手势。此外,分类器还进一步分析了电极数量和电极位置对识别结果的影响。

    Huang D, Zhang X, Saponas T S, Fogarty J, Gollakota S. Leveraging Dual-Observable Input for Fine-Grained Thumb Interaction Using Forearm EMG. In: Proceedings of the 28th Annual ACM Symposium on User Interface Software & Technology. Charlotte, NC, USA,ACM, 2015: 523−528 DOI:10.1145/2807442.2807506 

    由于前臂拇指运动的肌电图信号相对较弱,黄提出使用双通道手机训练数据法来识别拇指的细粒度手势,包括左键、右键、点击、长按或更复杂的手指运动。其中一个通道是利用电极获取用户的手势运动,另一个通道是通过触摸屏手机加速度计获取的手势运动状态作为输入信号。最后,利用k近邻(KNN)算法对拇指手势进行分类识别。该识别结果对基于拇指的交互式系统具有重要意义。

     

    二、基于触摸技术的识别

    触摸手势是用手指或其他工具在触摸屏上直接执行的操作。基于触摸手势输入法,触摸手势识别主要分为单触摸手势识别和多触摸手势识别。

    经典的单触摸手势识别算法有如下两种:

    1、Rubine算法

    Rubine D H. The automatic recognition of gestures. Carnegie Mellon University, 1992

    通过提取任意输入手势的起始角正弦值、余弦值、手势总长度等13个特征,构造手势特征集,并基于统计识别方法构造分类器。对于包含30个单点位置的手势路径,分类器的准确率可达97%。该算法的关键是能否准确地选择识别特征。

    2、$1算法

    Wobbrock J O, Wilson A D, Li Y. Gestures without libraries, toolkits or training: a $1 recognizer for user interface prototypes. In: Proceedings of the 20th annual ACM symposium on User interface software and technology. Newport, Rhode Island, USA,ACM, 2007: 159−168 DOI:10.1145/1294211.1294238 

    核心思想是对输入的手势轨迹进行重新采样,将采样轨迹中心点与x轴的连线旋转到0度,将旋转后的手势缩放到标准的正方形大小并进行手势平移。然后,对处理过的手势和搜索匹配模板使用“黄金选择搜索”(GSS),得到每个模板的最佳匹配得分。得分最高的手势是最终识别的手势。由于$1算法只能识别单笔手势,研究人员提出了$N算法和$P算法。

    (1)、$N算法

    Anthony L, Wobbrock J O. A lightweight multistroke recognizer for user interface prototypes. In: Proceedings of Graphics Interface 2010. Ottawa, Ontario, Canada, Canadian Information Processing Society, 2010: 245−252 

    可以在不知道方向或轨迹顺序的情况下识别多笔画手势。其原理是N个手势轨迹可以根据顺序和方向生成2N种情况。根据手势的顺序将手势轨迹从头部连接到尾部,得到估计的N个手势模板集。然后按照$1的方法将手势轨迹与模板设置匹配,以最高分手势作为最终匹配手势。由于排列和组合的多样性,它可能会导致大量的N美元内存消耗和执行成本变得很高。

    (2)、$P算法

    VatavuR-D, Anthony L, Wobbrock J O. Gestures as point clouds: a $P recognizer for user interface prototypes. In: Proceedings of the 14th ACM international conference on Multimodal interaction. Santa Monica, California, USA, ACM, 2012: 273−280 DOI:10.1145/2388676.2388732

    提出删除多个动作的时间序列信息,把它变成一组点云。这将输入gesture-matching问题转化为点对点匹配的时间复杂度O (n)问题,并利用匈牙利算法减少搜索时间复杂度O (n3),可有效解决时间复杂度问题$ n的一代。目前,很多触控交互都是基于多点触控手势交互,例如Apple touchpad的多点手指手势触控。对于多点触摸手势识别,可以对多点触摸手势进行预处理。然后,计算一个虚拟单点,然后使用一个触摸手势识别它。

     

    三、基于计算机视觉的识别

    手势图像信息由一个或多个摄像头采集,采集的数据进行预处理,包括去噪信息增强。然后,利用分割算法获取图像中的目标手势。通过视频处理和分析得到当前手势的分类和描述,最后通过手势识别算法对目标手势进行识别。基于手势的手势识别主要由手势分割手势分析手势识别三部分组成。

    1、手势分割

    第一步是对输入图像执行手势分段。手势分割过程主要包括手势定位手势分割两部分。

    (1)、手势定位

    手势定位过程在包含手势的图像帧序列中从复杂背景中提取手势区域,实现手势与背景的分离。手势定位后,通过算法将当前手势从背景区域分割出来。静态手势只需要提取单个帧图像的手势特征,而动态手势则需要对提取的帧序列进行手势分析。常用的手势分割方法有基于运动信息的检测分割、基于视觉特征的检测分割和基于多模式融合的检测分割。基于运动信息的检测分割主要包括光流法和差分法。光流法不需要预先获取图像背景来表示复杂环境下的手势运动,但要求背景图像保持静止,对光照要求较高。

    Hackenberg G, McCall R, Broll W. Lightweight palm and finger tracking for real-time 3D gesture control. In: 2011 IEEE Virtual Reality Conference. 2011, 19−26 DOI:10.1109/VR.2011.5759431

    使用光流方法实时跟踪手势。在静态背景下,差分法对手势的分割效果较好。对于一个移动的背景,需要对背景进行建模和区分。

    Freeman W T, Weissman C D. Television control by hand gestures. International Workshop on Automatic Face & Gesture Recognition, 1995: 179−183 

    使用Running Average方法对背景进行建模,然后进行手势分割

    (2)、手势分割

    基于明显特征的分割方法主要包括肤色分割、纹理分割、手形分割和轮廓分割。

    (a)、肤色分割

    肤色分割方法是最常用的方法:

    Kaufmann B, Louchet J, Lutton E. Hand Posture Recognition Using Real-Time Artificial Evolution. In: Applications of Evolutionary Computation. Berlin, Heidelberg, Springer Berlin Heidelberg, 2010, 251−260 DOI:10.1007/978-3-642-12239-2_26 

    Flasiński M, Myśliński S. On the use of graph parsing for recognition of isolated hand postures of Polish Sign Language. Pattern Recognition, 2010, 43(6): 2249−2264 DOI:10.1016/j.patcog.2010.01.004 

    使用集群的肤色在颜色空间建立肤色模型,如肤色建模通过RGB颜色空间:

    Bergh M V d, Gool L V. Combining RGB and ToF cameras for real-time 3D hand gesture interaction. In: Proceedings of the 2011 IEEE Workshop onApplications of Computer Vision (WACV). IEEE Computer Society, 2011: 66−72 DOI:10.1109/WACV.2011.5711485 

    Jones M J, Rehg J M. Statistical Color Models with Application to Skin Detection. International Journal of Computer Vision, 2002, 46(1): 81−96 DOI:10.1023/A:1013200319198 

    Weng C, Li Y, Zhang M, Guo K, Tang X, Pan Z. Robust Hand Posture Recognition Integrating Multi-cue Hand Tracking. In: Entertainment for Education Digital Techniques and Systems. Berlin, Heidelberg, Springer Berlin Heidelberg, 2010, 497−508 DOI:10.1007/978-3-642-14533-9_51 

    翁等人使用贝叶斯手势分割,建立肤色模型,然后结合皮肤的颜色,运动,和手势识别的轮廓形状信息,大大提高了分割精度。

    这些分割方法不受手形的影响,但由于光照引起的肤色变化,分割错误率大大提高。

    (b)、基于多模式融合的分割方法主要是为了克服复杂环境对分割条件的影响,并结合各种特征,如表观特征和运动信息。当使用单色可穿戴设备或背景来简化场景分割时,为了提高分割的准确性,有时会用手进行标记,这极大地影响了交互的自然度,从而限制了应用范围。其次,对手势进行建模和分析。

    主要包括基于外观的手势建模基于三维模型的手势建模

    基于外观的手势建模可以分为二维静态模型运动模型。常用的策略有颜色特征、轮廓几何、可变形gabarit:

    Ju S X, Black M J, Yacoob Y. Cardboard People: A Parameterized Model of Articulated Image Motion. In: Proceedings of the 2nd International Conference onAutomatic Face and Gesture Recognition. IEEE Computer Society, 1996: 38 70

    Kervrann C, Heitz F. Learning structure and deformation modes of nonrigid objects in long image sequences. 1995 

    和移动图像参数。颜色特征是最常用的建模方法。

    Ren H B, Xu G H, Lin X Y. Hand gesture recognition based on characteristic curves. Journal of Software, 2002, 13(5): 987−993

    用单台相机捕捉手部运动图像,用颜色、运动、边缘等多种信息建模,建立手部运动的坐标系来识别手势[71]。利用圆周、质心、边界盒等几何特征建立轮廓几何模型。

    Priyal P S, Bora P K. A robust static hand gesture recognition system using geometry based normalizations and Krawtchouk moments. Pattern Recognition, 2013, 46(8): 2202−2219 DOI:10.1016/j.patcog.2013.01.033

    使用旋转归一化方法对手势区域的图像进行对齐,并使用KravtCouk矩作为轮廓特征训练模型来识别静态手势。通过一组能够描述全局运动的物体轮廓插值节点,建立了基于gabarit的可变形模型。

    最简单的插值方法是分段线性函数。

    Ju S X, Black M J, Minneman S, Kimber D. Analysis of Gesture and Action in Technical Talks for Video Indexing. In: Proceedings of the 1997 Conference on Computer Vision and Pattern Recognition. IEEE Computer Society, 1997: 595 

    Ju等人利用snake算法分析了课堂上的视频浏览和索引手势。

    基于运动图像参数的模型与其他模型的不同之处在于,它们是由视频序列中对象的平移、旋转和方向等运动参数建模的。

    Luo Q, Kong X, Zeng G, Fan J. Human action detection via boosted local motion histograms. Machine Vision and Applications, 2010, 21(3): 377−389 DOI:10.1007/s00138-008-0168-5

    提出在真实场景中使用一个新的描述符和一个局部运动直方图来描述运动模式,然后通过增强方法选择特征。该方法仅利用局部特征建立了明显的手势建模,计算复杂度较低。利用基于三维的手势模型建立当前图像的三维模型,并根据相关参数计算手势状态。常用的手势模型包括三维骨架模型、三维纹理体模型和三维几何模型。

    骨架模型是最常用的三维模型。

    Shotton J, Fitzgibbon A, Cook M, Sharp T, Finocchio M, Moore R, Kipman A, Blake A. Real-time human pose recognition in parts from single depth images. In: CVPR 2011, 2011, 1297−1304 DOI:10.1109/CVPR.2011.5995316 

    使用Kinect生成的深度数据进行骨建模。

    2、手势分析

    手势分析由特征检测和参数估计两部分组成。

    特征检测用于从分割后的手势中提取图像特征参数。图像特征主要包括视觉特征和语义特征。视觉特征包括颜色、纹理和轮廓,语义特征代表对图像内容的理解。

    参数估计根据模型的不同使用不同的方法。

    Lu W-L, Little J J. Simultaneous Tracking and Action Recognition using the PCA-HOG Descriptor. In: Proceedings of the The 3rd Canadian Conference on Computer and Robot Vision. IEEE Computer Society, 2006: 6 DOI:10.1109/CRV.2006.66 

    先用方向梯度直方图(HOG)描述运动员的面积,然后用主成分分析(PCA)将HOG投影到线性子空间中,得到PCA-HOG描述特征。曲棍球和足球的实验表明,该方法在光照、姿态和视角的变化下,对跟踪和识别结果具有较强的鲁棒性。

    3、手势识别

    手势识别主要是基于传统的机器学习方法和神经网络。使用传统的机器学习模型识别基于视觉的手势有很多方法。

    Moni M A, Ali A B M S. HMM based hand gesture recognition. A review on techniques and approaches. In: 2009 2nd IEEE International Conference on Computer Science and Information Technology. 2009, 433−437 DOI:10.1109/ICCSIT.2009.5234536

    静态手势识别采用模板识别,动态手势识别采用与时域信息相关的HMM。

    所选择的识别方法与手势的类型有很大的相关性。

    Keskin C, Erkan A, Akarun L. Real time hand tracking and 3D gesture recognition for interactive interfaces using HMM. In: Proceedings of International Conference onArtificial Neural Networks. 2003 

    戴着有色手套,用一对普通的网络摄像头捕捉用户的手势数据,训练HMM模型对用户预定义的八个手势进行实时跟踪和识别。

    近年来,随着深度学习的发展,该技术已广泛应用于手势识别领域。

    Chai X, Liu Z, Yin F, Liu Z, Chen X. Two streams Recurrent Neural Networks for Large-Scale Continuous Gesture Recognition. In: 2016 23rd International Conference on Pattern Recognition, 2016, 31−36 DOI:10.1109/ICPR.2016.7899603 

    同时采集彩色图像和深度图像,提取手势的骨骼特征和梯度直方图特征。然后将提取的特征融合起来,建立快速rnn,将连续的手势分割成孤立的手势。通过一个简单的递归神经网络(SRNN)。通过简单递归神经网络(SRNN)和长短时记忆(LSTM),建立了用于连续手势识别的双流递归神经网络2S-RNN。

    Tsironi E, Barros P, Wermter S. Gesture recognition with a convolutional long short-term memory recurrent neural network. In: Proceedings of the European Symposium on Artificial Neural Networks, Computational Intelligence and Machine Learning (ESANN). Bruges, Belgium, 2016, 213−218 

    Tsironi等结合卷积神经网络(CNN)对视觉特征的敏感性和LSTM对连续事件的有效性,提出了卷积长短时记忆递归神经网络(CNNLSTM)。

    四、多模态交互技术与手势识别

    在日常交流中,人们不仅使用手势,还通过语音、触觉、眼神等多种感知方式来表达信息。因此,多模态交互提供了两种或两种以上模态协作交互方法。利用用户的不同感知方式与计算机交互更加自然和有效,是未来交互的方式。对于不同的模态,模态之间的信息具有互补性和冗余性。例如,当用户用语言描述对象时,他或她会无意识地摆动手臂来增强或补充描述。在虚拟现实场景中,选择合适的多模态交互技术和融合方法,对于提高交互协作效率至关重要。手势和声音的结合可以直观地表达用户的意图。用户可以通过语音命令来确认手势的含义,手势可以消除噪声对操作的影响。因此,手势在VR交互中经常被用到。

    Bolt R A.“Put-that-there” : Voice and gesture at the graphics interface. Acm Siggraph Computer Graphics, 1980, 14(3): 262−27

    Bolt提出的“Put that there”系统是最早的多模态交互系统之一。该系统将手势和语音结合起来,使用户可以通过语音和指向手势在大屏幕显示界面中生成和编辑图形的形状、颜色、大小等属性

    Cohen P R, Johnston M, McGee D, Oviatt S, Pittman J, Smith I, Chen L, Clow J. QuickSet: multimodal interaction for distributed applications. In: Proceedings of the fifth ACM international conference on Multimedia. Seattle, Washington, USA,ACM, 1997: 31−40

    开发的QuickSet系统通过实时分析语音和手势,建立了支持军事训练的地图导航系统

    Chatterjee I, Xiao R, Harrison C. Gaze + Gesture: Expressive, Precise and Targeted Free-Space Interactions. In: Proceedings of the 2015 ACM on International Conference on Multimodal Interaction. Seattle, Washington, USA, ACM, 2015: 131−138 DOI:10.1145/2818346.2820752

    除了语音模式,手势也可以与其他模式融合,比如凝视。手势模态与凝视相融合,在不同场景下进行离散或连续的交互。例如,当用户执行关闭web窗口的任务时,当关闭图标被注视时,可以在任何位置轻击图标

    Velloso E, Turner J, Alexander J, Bulling A, Gellersen H. An Empirical Investigation of Gaze Selection in Mid-Air Gestural 3D Manipulation. In: Human-Computer Interaction – INTERACT 2015. Cham: Springer International Publishing, 2015, 315−330 DOI:10.1007/978-3-319-22668-2_25 

    当移动对象的位置时,没有必要直接指向要移动的对象。用户可以用自己的视线选择要移动的物体,然后通过手势在任意起始位置的轨迹来指定物体移动的轨迹。通过视觉选择的对象将跟随手势轨迹到达最终位置

    目前的多模态融合方法主要包括早期融合和晚期融合。早期融合是指原始数据在信号级的融合。这种融合方法适用于模式间的紧密耦合。后期融合采用统一的数据表示,对每种模态的数据进行独立处理,然后进行语义融合和分析。该融合方法更适合于不同时间尺度特征的多模态融合;因此得到了广泛的应用

    Sim K C. Speak-as-you-swipe (SAYS): a multimodal interface combining speech and gesture keyboard synchronously for continuous mobile text entry. In: Proceedings of the 14th ACM international conference on Multimodal interaction. Santa Monica, California, USA,ACM, 2012: 555−560 DOI:10.1145/2388676.2388793

    提出了一种将语音和手势键盘两种模式相结合的say多模态交互系统,提高了文本输入的效率和准确性。利用隐马尔可夫模型对手势和语音模型进行训练,然后利用概率方法对模型进行融合。融合模型表明,两种模式提供的互补信息能够有效区分一些混淆词,从而提高了文本输入预测的准确性。在20000字输入系统中,仅使用手势键盘的文本预测准确率为92.2%。但在正常噪声条件下,与两种模式相结合,文本预测准确率为96.4%。在噪声环境下,文本预测准确率为94%

    Kopp S, Tepper P, Cassell J. Towards integrated microplanning of language and iconic gesture for multimodal output. In: Proceedings of the 6th International Conference on Multimodal Interfaces. New York, NY,ACM Press, 2004: 97−104

    由Kopp等人建立的NUMACK导航系统将语音和手势结合起来,可以回答用户提出的关于校园建筑及其位置的问题。该系统首先将获取的特定地标性手势(如手势表示和运动轨迹)映射到图像描述特征,然后将获取的语音信息转换为文本,并使用描述语句规划(SPUD)系统对获取的文本信息进行分析。然后对现有的SPUD系统进行扩展,将图像描述转换为语法树的一部分,并基于文本信息构造集成到语法树中。最后,构建了基于多模态融合的层次本体结构。这样,手势表示使用户在交流过程中保持较高的注意力,通过文本的准确表达减少手势信息中的歧义,从而获得更好的表达准确性和表意效果

    表中列出了近年来发展起来的具有代表性的手势识别和交互技术。在实际操作中,可以根据不同的交互场景选择合适的交互设备,建立手势识别系统。不同的手势识别系统具有不同的特征。基于数据手套等可穿戴设备的手势识别系统能够直接获取用户与虚拟世界对象接触的信息,具有较高的准确性。然而,传感器的性能、数量和位置对识别能力有很大的影响。MEMS进一步提高了传感器获取数据的能力,但由于它主要捕捉对象的运动信息,所以主要用于动态手势识别。肌电作为一种重要的生理信号,通过运动过程中生理信号的变化来识别使用者当前的状态。它通常用于动态手势交互场景。对于肌肉表面信号的识别方法,电极的位置、数量和环境对识别能力有很大的影响。基于触摸技术的手势识别的外部干扰相对较小。单触摸识别效果较好。对于多点触控,通常将其转化为单点触控问题进行预处理识别。基于计算机视觉的手势识别包括单目、双目、多视点和深度相机识别方法。主要包括手势分割、手势特征提取与分析以及识别模型的建立。对于单目相机来说,信息量相对较小,识别速度较快,但结果受外部环境的干扰较大,精度较低。该双目相机可以利用相机的相对位置坐标恢复手势的空间位置,建立三维手势模型。具有识别范围大、精度高等特点。然而,该装置需要校准,其精度受基线和分辨率的限制。此外,它包含更多的信息,需要更高的计算能力。深度照相机不需要校准。利用结构光或ToF方法可以获得手势的深度信息,但测量范围相对较小,容易受到阳光的影响。因此,它主要应用于室内场景。由于单个手势模态所表达的信息相对有限,将手势与其他模态结合使用,不仅提供了更多的交互信息,而且使交互更加自然。这将是未来VR的主要交互方式。如何针对不同的交互场景选择合适的融合方法,建立有效的多模态融合模型,是未来研究的重点。

    展开全文
  • 基于Java模板技术动态生成Word文档

    万次阅读 热门讨论 2016-09-14 11:31:23
    result.put("topic", "基于Java模板技术动态生成Word文档"); result.put("count", stuList.size()); result.put("maleCount", dynamicallyGeneratedWordMapper.getManNumber()); result.put("femaleCount", ...

    一.使用word文档编辑好模版,如下图:



    编辑好模板之后选择另存为,保存为xml格式。

    二.编写java代码

    采用的是FreeMarker模板引擎。需要下载对应的jar包,如果用的是Maven,只需在pom.xml中加入以下代码即可。

    <!-- 模版引擎用到的jar包 -->
        <dependency>
    	  <groupId>org.freemarker</groupId>
    	  <artifactId>freemarker</artifactId>
    	  <version>2.3.25-incubating</version>
    	</dependency> 

    Service:

    package Solin.service;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import java.net.URL;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Locale;
    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import Solin.domain.Student;
    import Solin.mapper.DynamicallyGeneratedWordMapper;
    import freemarker.cache.URLTemplateLoader;
    import freemarker.core.ParseException;
    import freemarker.template.Configuration;
    import freemarker.template.MalformedTemplateNameException;
    import freemarker.template.Template;
    import freemarker.template.TemplateException;
    import freemarker.template.TemplateNotFoundException;
    
    @Service
    public class DynamicallyGeneratedWordService {
    	private static Configuration freemarkerConfig;
    	
    	static {
    		freemarkerConfig = new Configuration(Configuration.VERSION_2_3_22);
    		freemarkerConfig.setEncoding(Locale.getDefault(), "UTF-8");
    	}
    	
    	@Autowired
    	private DynamicallyGeneratedWordMapper dynamicallyGeneratedWordMapper;
    	
    	/**
    	 * 生成word文档
    	 * @param filePath
    	 * @throws TemplateNotFoundException
    	 * @throws MalformedTemplateNameException
    	 * @throws ParseException
    	 * @throws IOException
    	 * @throws TemplateException
    	 */
    	public void genWordFile(String filePath) throws TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException, TemplateException{
    		List<Student> stuList = dynamicallyGeneratedWordMapper.getStudentList();
    		Map<String,Object> result = new HashMap<String,Object>();
    		result.put("date", new Date());
    		result.put("teacher", "Solin");
    		result.put("topic", "基于Java模板技术动态生成Word文档");
    		result.put("count", stuList.size());
    		result.put("maleCount", dynamicallyGeneratedWordMapper.getManNumber());
    		result.put("femaleCount", dynamicallyGeneratedWordMapper.getFemaleNumber());
    		result.put("stuList", stuList);
    		
    		freemarkerConfig.setTemplateLoader(new URLTemplateLoader() {
    			
    			@Override
    			protected URL getURL(String arg0) {
    				return DynamicallyGeneratedWordService.class.getResource("/test.xml");//此处需要注意test.xml模板的路径,不要搞错了,否则获取不到模板,我是放在src/main/java目录下
    			}
    		});
    		
    		Template temp = freemarkerConfig.getTemplate("test.xml");
    		
    		File targetFile = new File(filePath);
    		Writer out = new OutputStreamWriter(new FileOutputStream(targetFile),"UTF-8");
    		
    		//执行模板替换
    		temp.process(result, out);
    		out.flush();
    	}
    }

    我的test.xml文件的位置:


    Student实体类:

    package Solin.domain;
    
    /**
     * @author Solin
     * 学生信息实体类
     *
     */
    public class Student {
    	private Integer id;//主键
    	private String name;//姓名
    	private String sex;//性别
    	private String age;//年龄
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public String getAge() {
    		return age;
    	}
    	public void setAge(String age) {
    		this.age = age;
    	}
    }
    
    Controller:

    package Solin.controller;
    
    import java.io.IOException;
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import Solin.domain.Student;
    import Solin.service.DynamicallyGeneratedWordService;
    import freemarker.core.ParseException;
    import freemarker.template.MalformedTemplateNameException;
    import freemarker.template.TemplateException;
    import freemarker.template.TemplateNotFoundException;
    
    /**
     * @author Solin
     * 基于Java模板技术动态生成Word文档 
     */
    @Controller
    public class DynamicallyGeneratedWordController {
    	@Autowired
    	private DynamicallyGeneratedWordService dynamicallyGeneratedWordService;
    	
    	@ResponseBody
    	@RequestMapping("/getStudentList")
    	public String getStudentList(){
    		String result = "成功";
    		try {
    			dynamicallyGeneratedWordService.genWordFile("d://stu.doc");
    		} catch (TemplateNotFoundException e) {
    			result = "失败";
    			e.printStackTrace();
    		} catch (MalformedTemplateNameException e) {
    			result = "失败";
    			e.printStackTrace();
    		} catch (ParseException e) {
    			result = "失败";
    			e.printStackTrace();
    		} catch (IOException e) {
    			result = "失败";
    			e.printStackTrace();
    		} catch (TemplateException e) {
    			result = "失败";
    			e.printStackTrace();
    		}
    		return result;
    	}
    }
    

    XML模版中需要做以下修改:


    表格数据是多行的,所以要循环。


    我们在xml模版中做以下修改:找到上图中红色框框所在的地方,然后按下图修改


    里面的内容依次改为对应的:${stu.id} ${stu.name} ${stu.sex} ${stu.age}这里的id name sex age是和Student实体类对应的。


     三.到此基本完成了动态模版的生成,测试结果图下图:








    展开全文
  • 目录 一、属性加密技术......二、基于属性的访问控制技术... 5 2.1基于属性的访问控制介绍... 5 2.2属性加密方案的形式化定义和安全模型... 6 2.2.1属性加密方案的形式化定义... 6 2.2.2属性加密方案的安...
     
    

    一、属性加密技术

    1.1基于身份的加密体制简介

    基于身份的加密体制可以看作一种特殊的公钥加密,它有如下特点:系统中用户的公钥可以由任意的字符串组成。这些字符串可以是用户在现实中的身份信息,如:身份证号码、用户姓名、电话号码、Email地址等,因为用户的公钥是通过用户现实中的相关信息计算得到的,公钥本质上就是用户在系统中的身份信息,所以公钥真实性问题和证书管理问题在基于身份加密的系统中就不再需要。基于身份加密体制的优势在于:

    (1)用户的公钥可以是描述用户身份信息的字符串,也可以是通过这些字符串计算得到的相关信息。

    (2)不需要存储公钥字典和处理公钥证书。

    (3)加密消息只需要知道解密者的身份信息就可以进行加密,而验证签名也只需要知道签名者的身份就可以进行验证。

    正是因为基于身份的加密系统具备以上优点,这使基于身份加密有关研究成为当前公钥密码学的一个研究热点。近年来研究者们对基于身份加密系统进行了较深入的研究,得到了很多研究成果。

    1.2基于属性的加密体制的研究背景和意义

    Sahai和Waters两位密码学家为了改善基于生物信息的身份加密系统的容错性能,在2005年欧洲密码年会上发表了《模糊基于身份加密方案》一文,并在这篇文章中首次提出了基于属性加密(Attribute-Based Encryption  ABE)的概念。  在基于属性加密的体制中用属性集合表示用户的身份,这是与基于身份加密(Identity-Based Encryption,IBE )根本的区别。在基于身份加密系统中,只能用唯一的标识符表示用户的的身份。而在基于属性加密系统中,通过属性集合表示用户的身份,其中的属性集合由一个或多个属性构成。从用户身份的表达方式来看,基于属性加密的属性集合比基于身份加密的唯一标识符具有更强、更丰富的表达能力。

    基于属性加密可以看作是基于身份加密的扩展和延伸。基于属性加密把基于身份加密中表示用户身份的唯一标识,扩展成为由多个属性组成的属性集合。从基于身份加密体制发展到基于属性加密体制,这不仅是用户身份的表达形式从唯一标识符扩展到多个属性,还将访问结构融入到属性集合中,使公钥密码体制具备了细粒度访问控制的能力(如:通过密文策略和密钥策略来限制用户对密文的访问和解密能力)。

    从唯一标识符扩展成属性集合,不仅是用户身份信息表示方式上的改变,而且属性集合能够非常方便地和访问结构相结合,实现对密文和密钥的访问控制。属性集合同时还可以方便地表示某些用户组的身份(即:实现了一对多通信),这也是基于属性加密方案所具备的优势。

    密文和密钥中引入访问结构,这是基于属性加密体制的一大特征,也是与基于身份加密体制本质区别之处。访问结构嵌入到密钥和密文中的好处在于:系统可以根据访问结构生成密钥策略或者密文策略,只有密文的属性集合满足了密钥策略,或者用户的属性集合满足了密文策略,用户才能解密。这样一方面限制用户的解密能力,另一方面也保护了密文。在基于属性加密系统中,密钥生成中心(负责生成用户的密钥)由于用户的身份信息通过属性集合表示,而用户组也具备一些相同属性也可以用属性集合表示。因此在基于属性加密方案中属性集合既可以表示单独的用户,也可以表示多个用户组成的用户组。密文和密钥也是根据属性集合生成的,相对应地密文的解密者和密钥的接收者既可以是单独的用户也可以是用户组。在基于属性加密方案中,可以通过描述用户身份信息的具体或概括,来灵活调整属性集合是代表单独用户还是某个用户组。

    在Sahai和Waters方案中引入了秘密共享的门限访问结构,如果一个用户能够解密一个密文,当且仅当该用户的属性集和密文的属性集合共有属性的数量达到门限要求。在基于属性加密方案中加密密文需要在属性集合参与下才能进行,参与加密的属性集合所表示的身份信息就是解密者的身份,也是解密密文需要满足的条件。在上述过程中,由于用户的私钥和密文都是根据各自属性集合生成的,因此在基于属性加密方案中,一方面密文是在属性集合参与下生成的,这个属性集合隐含地限定了解密者所要满足的条件。另一方面,一个用户私钥也是根据属性集合生成的,这个属性集合也隐含地确定了用户可以解密的范围,如果密文是以这个属性集合生成的,那么用户就可以解密文。

     

    通过一个实例,简单说明一下基于属性的加密体制中的一些细节。假设系统中门限为3的门限结构,因此只有用户的属性集合中至少有3个属性与密文属性集合相同,用户才能解密。设a,b…h;表示系统中的属性,若系统中有三个用户分别为:A(a,b,c,d,e)、B(b,c,e,f)、C(a,d,g)他们从认证中心获取各自的私钥。现有一个密文,其密义的属性集合为(b,c,d,f)。因为系统的门限是3,这就要求解密用户的属性集合至少含其中三个或三个以上的属性。从ABC三个用户的属性集合可以看出A和B满足条件,他们的属性集合满足了解密条件,能够解密密文。而用户C属性集合不满足要求,因此不能解密。

    通过上面的例子可以看出,基于属性加密方案中加密和解密具有动态、灵活的特性,能够实现对系统中用户的解密能力和密文的保护方而的细粒度控制,因此属性加密方案有着广阔的应用前景。

     

    1.3基于属性加密的研究现状

    目前,基于属性加密体制取得了很多具有应用价值的方案,这些方案可以按照保护策略的部署方式不同可以分成三类:

     

    (1)基于属性的密钥策略加密方案

    2006年,Goyal等人提出了基于属性的密钥策略加密方案。一般来说,基于属性的密钥策略加密系统中包含以下四个过程:

    ①系统初始化:

    系统初始化只需要一个隐含的安全参数作为输入参数,不需要其它输入参数。输出系统公共参数PK和系统主密钥MK 。

    ②消息的加密:

    以消息M,系统的公共参数PK和一个属性集合S为输入参数。输出消息M加密后的密文E。

    ③密钥的生成:

    以一个访问结构A,系统的公共参数PK和系统的主密钥MK为输入的参数。生成一个解密密钥D。

    ④密文的解密:

    以密文E,解密密钥D和系统的公共参数PK为输入参数,其中密文E是属性集合S参与下生成的,D是访问结构A的解密密钥。如果S∈A,则解密并输出明文M。

    在基于属性的密钥策略加密的方案中,通过引入访问树结构,将密钥策略表示成一个访问树,并且把访问树结构部署在密钥中。密文仍然是在一个简单的属性集合参与下生成的,所以如果一个用户能解密密文当且仅当该密文的属性集合满足用户密钥中的密钥策略。通过访问树的引入,非常方便地实现了属性之间的逻辑与和逻辑或操作,增强了密钥策略的逻辑表达能力,更好地实现细粒度的访问控制。

    2007年,Ostrovsky等提出了一个可以实现逻辑非的基于属性加密方案(属性之间的逻辑关系可以表达逻辑非),丰富了保护策略的逻辑表达能力,完善了文献不能表示逻辑非的空白。该方案中不但构成一个完整的逻辑表达系统,而且也将基于属性加密方案中的访问结构从单调的扩展成非单调的。

    该方案中访问结构的功能相当于一个线性秘密共享方案的访问结构。另外该方案的安全性证明是在选择属性集合的攻击模型和基于判定双线性困难问题下完成的。

    基于属性的密钥策略加密方案可以应用在服务器的审计日志方面。服务器的审计日志是电子取证分析中的一个重要环节。通过基于属性的密钥策略加密方案中的方法,可以使取证分析师只能提取与目标有关的日志内容,从而避免了日志中全部内容的暴露。基于属性的密钥策略加密方案的另一个用途就是有针对性的广播加密,特别是在一些收费的电视节目中,用户可以根据个人喜好制定接受的节目。

     

     

    (2)基于属性的密文策略加密方案

    2007年,Bethencourt等首次提出了基于属性的密文策略加密方案。在该方案中,用户的私钥仍然是根据用户的属性集合生成,密文策略表示成一个访问树并部署在密文中,这种部署方式和基于属性的密钥策略加密方案相反。当且仅当用户的属性集合满足密文中密文策略时,用户才能解密密文。

    一般情况下,一个基于属性的密文策略加密方案包括由以下四个过程

    • 系统初始化:以一个隐含的安全参数为输入,而不需要其它输入参数,输出系统公共参数PK和系统主密钥MK。
    • 消息的加密:以加密消息M,系统的公共参数PK和访问结构A为算法的输入参数,其中A是在全局属性集合上构建的。该算法的输出消息M用A加密后的密文CT。
    • 密钥的生成:以一个属性集合S,系统的公共参数PK和系统的主密钥MK作为算法的输入参数。该算法输出私钥SK。
    • 密文的解密:以密文CT,系统的公共参数PK和解密密钥SK作为算法的输入参数,其中密文CT包含访问结构A,SK是S的解密密钥。如果属性集合S满足访问结构A,则解密密文。

    根据以上描述,可以看出基于属性的密文策略加密和广播加密非常相似。该方案还支持密切代理机制,即:如果用户A的访问结构要包含用户B的访问结构,那么A可以为B生成私钥。另外,该方案中通过cpabe程序包,对方案的性能和效率进行了实验分析。但方案的缺陷在于:方案的安全性证明是在通用群模型和随机预言模型下完成的。

     

    (3)基于属性的双策略加密方案

    2009年,基于属性的双策略加密方案由Attrapapdung等首先提出,该方案是基于属性的密钥策略加密方案和基于属性的密文策略加密方案的组合。即:方案中的加密消息同时具备两种访问控制策略,在密钥和密文中同时部署两种策略。密文的两种访问控制策略一个表示加密数据自身客观性质的属性,另一个表示对解密者需要满足条件的主观性质属性。密钥的两种访问策略一个表示用户凭证的主观属性,另一个表示用户解密能力的客观属性。只有当用户的主观属性和客观属性满足了密文的主观属性和客观属性时,用户才能解密密文。

    一般情况下,一个基于属性的双策略加密方案包含以下四个过程:

     

        ①系统初始化:以一个隐含的安全参数作为输入,而不需要其它输入参数。输出系统公共参数PK和系统主密钥MK。

        ②消息的加密:以输入消息M,系统的公共参数PK,一个主观的访问结构S和一个客观的属性集合。为输入参数。输出密文CT。

        ③密钥的生成:这是个随机化算法,以系统的公共参数PK,系统的主密钥MK,

    一个访问结构O和一个主观的属性集合为输入参数。输出一个解密密钥D。

    ④密文的解密:以系统的公共参数PK,解密密钥D和与密钥对应的访问结构O和属性集合,密文CT以及密文对应的访问结构s和属性集合作为输入参数。如果密钥的属性集合必满足密文的访问结构S,同时密文的属性集合。满足密钥的访问结构.,则解密密文输出消息M。

        因为基于属性的双策略加密方案可以看做是基于属性的密钥策略加密方案和基于属性的密文策略加密方案的结合,所以基于属性的双策略加密方案可以根据实际需要转换成单个策略的基于属性加密方案(KP-ABE或CP-ABE )。另外该方案的安全性证明是基于判定双线性Diffie-Hellman指数困难问题完成的。( Bilinear Diffie-Hellman Exponent  BDHE)。

     

    (4)其它相关研究

        Pirretti等提出一种新的安全信息管理体系结构,该系统对基于属性加密方案的实际应用做了专门的研究。该文通过基于属性加密系统作为核心组件,构建了一个安全的信息系统。同时还优化了基于属性加密方案中加密算法和解密算法,明显提高了算法的运行效率。另外,该文还实现了基于属性加密的两个重要应用。

    二、基于属性的访问控制技术

    2.1基于属性的访问控制介绍

    基于属性的加密(Attribute-Based Encryption, ABE),又称为属性基加密,是公钥加密和基于身份加密(Identity-Based Encryption, IBE)的一种扩展,由Sahai和Waters两位密码学家在2005年欧洲密码年会上提出,他们为了解决基于生物特征的身份认证系统的容错问题,基于双线性对困难问题,提出了基于模糊身份的加密方案《Fuzzy identity based encryption》一文,在该文献中,基于属性加密的概念第一次被提出。在该方案中,用属性集合描述用户身份信息特征,打破了以往的身份“完全匹配”关系,这也是它区别于基于身份加密的特征之一。

    一个基于属性的加密机制一般包含四个实体:密钥生成中心(权威Authority) ,加密者(数据所有者DataOwner, DO)、解密者(用户User)和数据存储服务器,具体如下图所示。密钥生成中心负责产生公共参数PK和主密钥MK。当有用户User发出请求时,为其分配属性,生成与权限索引相关的解密钥SK。数据所有者DO根据密文索引A和自己要共享的数据Data的安全需要生成密文C,然后发送给数据存储服务器。User想获取某个被共享的数据时,向服务器发起请求,服务器为User发送请求访问的密文数据C。当用户User满足A的要求时,可以利用Authority分配的解密钥SK和收到的密文C,得到授权并获得Data。

     

    在属性加密体制中,访问结构被引入到密文和密钥中,密文和密钥根据属性集合生成,即用户私钥与属性集关联,密文与访问结构关联,或者用户私钥与访问结构关联,而密文与属性集关联,用户的解密能力通过用户属性集与访问结构之间的匹配关系确定,从而实现数据拥有者对密文和密钥的访问控制。数据拥有者无需要为每一用户分发属性密钥,只需要通过访问结构进行权限管理,大幅度地降低了权限管理的复杂度,提供了更加灵活的访问控制,从功能上实现了“一对多”的加密文件访问控制,解决了这一应用瓶颈问题。由于用户的身份信息表示为属性集合,由两个或以上的用户组成的用户组也可以具备相同的属性集,所以既可以用属性集合表示单独的用户,也可以表示多个用户组成的用户组,因此可以通过对用户身份信息的全方位描述,灵活调整属性集合,让其表示一个单独的用户还是一个用户组,即单独的用户和用户组都可以成为属性密钥的接收者和对应密文的解密者,这也是基于属性加密方案所具备的优势。所以,基于属性加密的属性集合具有更强、更丰富表达能力。

    在属性加密机制中,不仅用户权限的可描述性和加密策略的灵活性被极大地丰富了,加解密模式也被从以往的一对一模式扩展成了一对多模式,而且,它还具有下述四个卓越的特点:

    (1)高效性,加解密计算花费和密文长度与系统中用户的数量无关,只与相应属性个数相关;

    (2)动态性,用户的解密能力仅取决于他的属性集合是否满足密文的访问策略,而与他在密文生成之前或之后加入这个系统无关;

    (3)灵活性,该类方案中的访问策略支持复杂的访问结构;

    (4)隐私性,数据所有者在加密数据时无需获悉解密者的身份信息。

    综合上述特点,基于属性加密机制可以有效地实现细粒度的非交互的访问控制。

     

    2.2属性加密方案的形式化定义和安全模型

    2.2.1属性加密方案的形式化定义

    一个属性加密方案包含以下四个基本算法:

    Setup(K, U):该算法输入安全参数K和系统属性全集U,输出公共参数Params和主密钥MK。

    KeyGen(MK,X):该算法输入主密钥MK和一个权限索引X,输出一个密钥skx。

    Enc(Params, Y, M):该算法输入公共参数Params,一个密文索引Y和一个要加密的消息M,输出一个密文CTy。

    Dec(Params, skX, C界):该算法输入公共参数Params,密钥skx和密文CTy,输出解密结果M'。

    如果一个属性加密方案是正确的,当且仅当对任意用户权限X和密文索引Y,且X满足Y,则

                Dec(Params, KeyGen(MK, X), Enc(Params, Y,M))=M

    其中,公共参数Params和主密钥MK都是正确生成的。

    在CP-ABE方案中,X表示用户的属性集合,密文索引Y表示一个访问结构,X满足Y当且仅当X是Y的授权集;在KP-ABE方案中则反过来了,即Y表示一个属性集合,X表示一个访问结构,y满足X当且仅当Y是X的授权集。

    2.2.2属性加密方案的安全模型

    在公钥密码方案中,根据要实现的安全目标不同,密码体制通常被分为四类:语义安全性(Semantic Security, SEM)、不可区分性(Indistinguishablity, IND)、不可展性(Non-malleable, NM)和明文可意识性(Plaintext-aware, PA)。当前公钥密码方案的证明一般都采用的形式化模型为不可区分性的安全模型,属性密码学中的方案证明也在此基础上进行。

    基于属性加密系统的安全性,一般由一个攻击者和一个挑战者之间的交互游戏来刻画。当且仅当任意多项式攻击者的优势都是可忽略的,则称一个属性加密方案是自适应安全的。但是,在实际证明中,由于在属性加密方案中,其属性集的空间要比基于身份的身份空间大很多,复杂性比较高,所以通常会考虑一种弱化了的安全模型,称为选择模型。在选择安全模型中,通常要求攻击者必须提前选择自己的攻击目标,即挑战权限索引X,在此模型下的安全则称为选择安全。

    Init:攻击者选择自己的攻击目标,即挑战权限索引X;

    Setup:挑战者运行属性加密的Setup算法,将生成的公共参数发给攻击者;

    Phase 1:攻击者对权限索引X进行私钥询问,

    Challenge:攻击者提交两个等长的消息M0和M1。挑战者进行随机掷币b,并根据密文索引Y加密Mb,然后把密文发送给攻击者。

    Phase 2:重复Phase 1中的步骤;

    Guess:攻击者输出对b的猜测b'。

    在上述游戏中,如果不存在多项式时间的攻击者以不可忽略的优势攻破上述游戏,则一个基于属性加密方案在选择模型下是安全的。

     

    2.3访问结构

    在属性密码学中,访问结构用于描述访问控制策略的逻辑结构,占有很重要的位置。访问结构定义为:

    定义访问结构):设P={P0,p1…pn}一个用户集。集合A包含于2{p0,p1..,pn}是单调的,如果B, C:如果B∈A且B包含于C,则C∈A。一个访问结构(单独地,单调的访问结构)是{P1,p2, ..., Pn}的一个非空子集A(单独地,单调的访问结构)。

    属性密码系统中,一般采用一些访问结构表示访问策略,比如门限访问结构、基于树的访问结构、基于正负属性值的“与,门结构、基于多属性值的“与”结构、支持通配符的基于多属性值的“与’,门结构和线性访问结构。基于门限的访问结构实际表达的含义是:拥有不同属性集的用户可以通过不同的路径到达该门限所在节点的路径的数目;在基于树的访问结构中,树的每一个非叶子节点由一个门限值和它的孩子节点来描述,而树的每一个叶子节点都对应一个属性;在基于正负属性值的“与”门结构中,如果一个用户拥有某个属性,则表示为正属性,如果不用有某个属性,则表示为负属性。

    展开全文
  • 基于物品的协同过滤算法实现图书推荐系统

    万次阅读 多人点赞 2019-09-14 21:20:24
    本文首先介绍了推荐系统的发展历史,及目前常用的几种推荐算法的介绍与比较,然后以基于物品的协同过滤算法为基础,详细介绍图书推荐系统的构建。在该系统中,主要功能分为用户功能和图书推荐功能...
  • 15 个优秀开源的 Spring Boot 学习项目,一网打尽!

    万次阅读 多人点赞 2019-12-12 11:44:43
    Spring Boot 算是目前 Java 领域最火的技术栈了,松哥年初出版的 《Spring Boot + Vue 全栈开发实战》迄今为止已经加印了 8 次,Spring Boot 的受欢迎程度可见一斑。经常有人问松哥有没有推荐的 Spring Boot 学习...
  • 基于Java技术的大型网站架构设计方案 笑游江湖 发表于 2014-03-16 16:56:00 | 分类标签: 网站架构 JAVA 高并发 1、Web层 主体架构可以基于 Struts 1.X/2.X,当然有很多更好的控制层框架供选择,以快速敏捷为...
  • 动态网站开发技术学习1:走进ASP.NET

    千次阅读 2015-11-02 20:28:42
    打开微软官网搜索ASP.NET,首先进入我们视线的就是... ASP.NET是.NET FrameWork的一部分,是一项微软公司的技术,是一种使嵌入网页中的脚本可由因特网服务器 执行的服务器端脚本技术,它可以在通过HTTP请求文档时再在
  • 《ASP+Access动态网站案例开发》由浅入深讲解了ASP+Access网站开发技术,并且通过具体的实例讲解了具体开发流程。《ASP+Access动态网站案例开发》内容分为三篇,共12章,其中z的第1章和第2章为《ASP+Access动态网站...
  • 基于系统负载的动态限流组件 dynamic-limiter 背景 动态限流原理 测试效果 总结 基于系统负载的动态限流组件 dynamic-limiter 最早发在了:Qunar 技术沙龙 背景 一个系统的处理能力是有限的,当请求量...
  • 一种基于A* 算法的动态多路径规划算法 本文转自:http://www.chinaaet.com/article/3000017595 2016年微型机与应用第04期 刘斌,陈贤富,程政 (中国科学技术大学 信息科学技术学院,安徽 合肥 230027) 摘要: 车载...
  • 网站以实际情况为开发背景,采用PHP技术,MySQL数据库构建一个基于WEB的动态新闻发布网站。本系统主要包括两个层面,其一是前台界面,用户可以浏览分栏新闻,发表新闻评论,注册普通会员,友情链接等功能,实现...
  • 智慧城市是国际社会发展的方向,虽然各国有着各种样式的定位,但都离不开这些核心技术,这也是当今社会对智慧城市的评判标准,尽管我们对智慧城市现在有足够的认识,但是实施起来规模巨大,所需的人力物力财力难以...
  • 基于WEB的多媒体素材管理库的开发与应用5.网络教学软件中的教学设计与应用6.小型教育网站的开发与建设7.基于图像的风景旅游模拟漫游系统8.网上报名系统9.电脑配件网络购物10.房产网站11.计算机组成原理网站12.软件...
  • Tomcat是一个被广泛使用的Java WEB应用服务器,下面将认识Tomcat:先来了解Tomcat与Java技术的关系、以及在WEB中的应用场景;再来了解Tomcat的安装目录结构、Tomcat配置文件、Tomcat部署Web应用程序的目录结构;最后...
  • 三种动态网页技术的简要分析

    万次阅读 2016-11-25 22:12:37
    动态网页可以根据用户的选择、点击、输入等操作而...1 ASP技术ASP技术基于.NET平台的一种动态网页技术。它有非常强大的后台处理能力,但却有一些安全性、稳定性、跨平台性的问题。它的原理为:通过服务器端的解释器将
  • 路径规划基本介绍(一)

    万次阅读 多人点赞 2019-04-24 21:30:03
    路径规划中有静态路径规划以及动态路径规划。这里仅针对静态路径规划方法进行简单的介绍,以下路径规划仅指在静态环境下的路径规划。 在进行路径规划的时候,我们首先需要考虑的有以下几个方面: a.起点与终点的位置...
  • 这篇文章将介绍基于机器学习的恶意代码检测技术,主要参考郑师兄的视频总结,包括机器学习概述与算法举例、基于机器学习方法的恶意代码检测、机器学习算法在工业界的应用。同时,我再结合自己的经验进行扩充,详细...
  • 基于分位数回归的动态CoVaR计算 案例与代码

    千次阅读 热门讨论 2020-04-05 14:11:35
    实现对相关期刊论文进行论文重现,解决实证分析和论文写作中的技术操作问题。里面包含了数据、代码、步骤,可以方便的利用这个手册解决大部分利用分位数回归计算动态CoVaR的论文的模型实现问题。即从数据下载到模型...
  • 基于Packet Tracer的校园网络设计与规划

    万次阅读 多人点赞 2019-01-07 22:52:06
    本文仅仅为本人课程要求而设计的方案,本文仅仅使用RIP动态路由协议,HSRP协议,浮动路由,静态路由,等价路由,DHCP地址分配,NAT技术,VLAN划分。如有问题请大佬们在本博客下留言。 一、设计要求 模拟设计并实现...
  • 基于深度学习的人脸识别技术综述

    万次阅读 2018-10-30 14:37:37
    原文地址:基于深度学习的人脸识别技术综述 简介:人脸识别是计算机视觉研究领域的一个热点,同时人脸识别的研究领域非常广泛。因此,本技术综述限定于:一,在LFW数据集上(Labeled Faces in the Wild)获得优秀...
  • 前两天我协助朋友解决了一个技术问题,在此稍作记录和总结。具体来说,就是在使用基于Webkit引擎...最终,我借助动态生成代码技术,纯手工书写了几行X86机器指令,人肉编译形成一个fastcall调用约定的回调函数,传递给
  • 这是一篇近万字的文章,关于基于图像的渲染(Image-Based Rendering,简称IBR)技术的方方面面,将总结《RTR3》书中第十章提到的16种游戏开发中常用的IBR渲染技术。他们包括: 渲染谱 The Rendering Spectrum 固定视角...
  • 基于图像识别的火灾探测技术

    万次阅读 多人点赞 2017-08-21 20:52:09
     由于火灾火焰识别算法复杂且对环境要求高,提出了基于图像多特征的火焰识别方法。本文针对火灾探测领域的特点,重点分析了火灾发生早期烟雾及火焰的多特征性,在火灾发生早期,烟雾形成至火焰的产生,利用烟雾及...
  • 基于知识图谱的用户画像技术

    万次阅读 2018-12-29 15:17:52
    随着互联网上用户访问数量的迅速增长,用户创建和访问的信息数量呈指数级递增,因此,众多互联网企业一方面希望能在用户使用产品的过程中,...近年来兴起的用户画像技术正是为了解决这一难题而成为当前用户行为---1....
  • web开发框架技术有哪些?

    万次阅读 2018-11-07 16:07:30
    如果你是做Web开发的,Web框架一定会很熟悉,框架是Web架构开发中必不可少的工具,不仅可以提高...Node.js是运行在服务器端的非阻断、异步I/O、事件驱动的JavaScript,是基于Chrome JavaScript 运行时建立的一个平台...
  • AOP

    万次阅读 多人点赞 2019-04-10 14:07:17
    AOP基于IOC基础,是对OOP的有益补充。 AOP将应用系统拆分为个部分:核心业务逻辑及横向的通用逻辑,也就是所谓的切面。 举例:所有大中型应用都要涉及到的持久化管理、事务管理、权限管理、日志管理和调试管理等。...
  • 基于vue的动态表单自助建站工具

    千次阅读 2019-02-22 11:45:55
    基于vue的拖拽式动态表单自助建站工具 根据自己需求自助搭建移动端营销、投放、信息采集、推广、宣传等页面 使用vuecli3生成项目,主要用到的技术如下: "element-ui": "^2.4.5", "vuedraggable": "^2.23.0", ...
  • 5G无线接入网架构及关键技术

    千次阅读 2019-10-19 17:19:54
    基站功能虚拟化:实现无线资源“云”化,在“池”层面分配平台资源和无线网络资源,按需分配,动态调整基带处理单元(BBU),同时需要解决实时处理关键技术。 软件定义RAN拓扑和协议栈:首先通过业务感知和预测...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 562,207
精华内容 224,882
关键字:

动态网站技术是基于