基于角色访问控制的UML表示

UML系列文章(11)---接口、类型和角色 接口,UML 阅读详情

摘要


在基于角色访问控制(role-based access control,RBAC)中,权限和角色相关,用户被当作相应角色的成员而获得角色的权限。RBAC背后的首要动机是为了简化管理。已经有文章介绍了一些基于角色系统的开发框架,但目前很少有文章使用系统开发者或软件工程师易于理解的方式来阐述RBAC。统一建模语言(UML)是一种通用的可视化建模语言,我们可以使用它阐述、可视化和文档化软件系统的组成部分。本文使用UML表示RBAC模型,缩短了安全模型和系统开发之间的鸿沟。我们使用三种视图表述RBAC模型:静态视图、功能视图、动态视图。另外,我们简短地讨论了将来的方向。

1 介绍


在RBAC中,权限和角色相关,用户(user)被当作相应角色(role)的成员而获得角色的权限(permission)。这大大简化了权限的管理。角色针对组织中的各种功能创建,用户依据他们的责任和资历被指派角色。用户被指派的角色可以容易地从一个跳到另一个。用户对信息的访问在指派角色的基础上被管制。自从RBAC被广泛接受,许多安全领域的研究者和安全系统开发者已经花了很多时间来开发基于角色的系统。一些文章介绍了一些基于角色系统的开发框架 [2, 11 , 12 ]。这些以前的工作有一些很难被开发人员理解,因为它们太抽象、太形式,另外一些则是关注面向应用或专门领域框架的具体解决方案。这些框架都不足够为系统开发者给出一份合理的蓝图。

我们的主要目标是缩短安全模型和系统开发之间的鸿沟。本文使用通用的可视化建模语言UML来表示RBAC模型。我们选择UML的原因是它已经成为建模的标准语言。我们的表示包括RBAC模型的静态视图、功能视图、动态视图。

本文按以下方式组织:在第2部分,我们描述一种广为人知的基于角色访问控制模型,通常称为RBAC96。第3部分简短介绍UML。第4部分用UML表示RBAC96模型。第5部分给出结论。

2. RBAC模型


作为有希望取代传统自主式访问控制(DAC)和强制式访问控制(MAC) [3,4, 6, 9]的替代者, RBAC目前已经得到了很大的关注。RBAC的策略基于角色,可以使用映射组织结构的方式来阐述安全策略。Sandhu等发布了称为 RBAC96的RBAC通用模型家族[9]。图1展示了家族中最通用的模型。关于在开发这个模型家族时所作设计决定的一些动机和讨论可参见[9]。

 

图1 RBAC模型

图1显示了 (regular)管制对数据和资源的访问的角色和权限。直观上,一个用户是一个人或一个自治的agent,一个角色是一项在组织中的工作功能或工作头衔。而权限是对系统中一个或多个object的特定访问模式的许可或执行某些动作的特权。角色以偏序关系≥组织,如果x≥y那么角色x就继承了角色y的权限。x的成员也意味着是y的成员。每次会话( session)把一个用户和可能的许多角色联系起来。用户建立一次会话,激活一些他或她是成员(直接获得或通过角色继承的方式间接获得)的角色子集。RBAC模型有以下组成部分,这些组成部分从以上的讨论中形式化。

一个用户可以成为很多角色的成员,一个角色可以有许多用户。类似地,一个角色可以有多个权限,同一个权限可以被指派给多个角色。每个会话把一个用户和可能的许多角色联系起来。一个用户在激发他或她所属角色的某些子集时,建立了一个会话。用户可用的权限是当前会话激发的所有角色权限的并集。每个会话和单个用户关联。这个关联在会话的生命期间保持常数。一个用户在同一时间可以打开多个会话,例如,在不同的工作站屏幕窗口各一个。每个会话可以有不同的活动角色。会话的概念相当于传统的访问控制中主体(subject)的标记。一个主体是一个访问控制单位,一个用户在同一时间可以拥有多个不同活动权限的主体(或会话)。

3. UML概览


UML是通用的可视化建模语言,我们可以使用它阐述、可视化和文档化软件系统的组成部分。现在UML已经是软件工程的标准语言。UML包括用例建模,静态建模和动态建模。在用例建模中,通过用例和执行者阐述系统的功能需求。用例由执行者引发,描述了执行者和系统之间的交互。静态建模提供系统的结构视图信息,在这个视图中,通过类、类属性和与其他类的关系( relationship)表示。关系包括关联(association)、泛化/特化(generalization/specialization)、聚合。动态建模表现系统的行为视图。它可以通过对象协作图、顺序图或状态图来描述。对象协作图和顺序图用来描述对象和其他对象在执行用例时的协作。依赖于状态的对象使用状态图来描述 [5]。

本文中,我们使用类图、用例图和对象协作图分别作为RBAC模型的静态视图、功能视图、动态视图。在本文的剩下内容中,我们使用了 [1, 7, 10]中介绍的UML标记符。

4. 基于UML的 RBAC表示


RBAC中的组成部分是用户、角色、权限、会话和约束。为了使用UML表示RBAC模型,我们使用对象类的标记分析每个组成部分。在本文后面部分中,我们的分析分为三个不同的视图:静态视图、功能视图和动态视图。

4.1 静态视图

 

图2 类图:概念静态模型

RBAC的概念静态模型如图2所示,包括类、类之间的关系和关系的势。基本的实体是用户、角色、权限、约束和会话类。角色和权限类分别特化出两种类别:使用者和管理者。这个特化依赖于用户的资历。RBAC模型的约束可以有很多种形式,依赖于应用系统。为了简化分析模型,我们静态模型中的约束只有三个:用户约束、权限约束、会话约束。另外,静态模型还有一个特殊的类session hour,当用户建立一个会话来激活他/她的角色时,该类被使用。这对表达基于会话的约束很有用。例如,一个组织可以要求用户只能在某些时间建立会话。为了强化这类约束,我们需要跟踪每个会话的会话时间。实体类的属性在图3中定义。

 

图3 实体类的属性

在静态视图中,UA关系和PA关系用多对多的“assinged to”关系表示。用户-会话关系看作一个用户可以建立一个或多个会话,在常数的会话生命期中每个会话激活至少一个或多个角色。角色继承关系表示为一个角色inherits另外的角色。

4.2 功能视图

本文中,我们也作了更具体的功能需求来表示在图2中没有清晰定义的、RBAC系统应该提供的功能。使用用例模型描述的功能视图如图4所示,有三个执行者:安全管理员(security administrator)、用户(user)和角色领域工程师(role domain engineer)。角色领域工程师从可能组织一组权限的应用系统中抽取出基本的知识,构造角色层次和指定约束。安全管理员管理基于角色的系统,指派用户到角色和指派权限到角色。用户是真实的人或外系统,可以建立会话、请求权限许可和关闭会话。

 

图4 用例模型

下面是建立会话(session establishing)用例的简要叙述:

用例:建立会话

执行者:用户

前置条件:系统空闲

说明:用户提交信息以建立会话;系统显示用户可以激活的角色;用户选择要激活的角色;系统以用户所选择的角色激活一个会话。

在以所选择角色建立会话之后,用户可能需要访问需要基于角色信息的授权过程的系统资源。换句话说,和角色相关的权限应该得到系统的许可。以下是“权限许可”用例的简要描述:

用例:权限许可

执行者:用户

前置条件:用户的会话已经激活

说明:用户提交权限许可信息,系统通知用户权限是否许可。

我们也可以考虑其他情况。例如,我们可能需要额外的功能来让安全管理员监视会话或让用户查询自己的状态。

4.3 动态视图

在动态视图中,用例被精化以显示参与用例的对象之间的交互。“建立会话”的协作图如图5所示。

 

图5 协作图:建立会话

用户通过UserInterface引发用例, RBAC Controller coordinates协调对象之间的交互。“权限许可”的协作图如图6所示,需要一个前置条件:会话已经被激活。

 

图6 协作图:权限许可

5. 结论
本文中,我们简要描述了广为人知的基于角色访问控制模型。我们使用可视化建模语言UML来描述这个模型。这是使用建模语言描述RBAC模型的第一次尝试。我们相信我们的工作可以帮助系统开发者更容易地理解RBAC模型和建立基于角色的系统。我们也识别了在安全模型的初期被排除的有用功能和约束。在此工作的基础上,我们将研究基于UML的模型如何能适应于阐述RBAC的组成部分。也包括如何用可能的UML扩展表示角色继承和约束。因为模型通过简化细节来帮助我们理解系统,这个方向应该比较实用。

致谢


感谢Jaehong Park的帮助审阅此文。

参考文献
[1] G. Booch, J. Rumbaugh, and I. Jacobson. The Unified Modeling Language User Guide. Addison Wesley , 1999.

[2] Pete Epstein and Ravi Sandhu. Tow ards A UML Based Approach to Role Engineering. In Pr oceedingsof the 4th ACMWorkshop on Role-Based AccessControl, pages 135-142, Fairfax, VA, October 28-29 1999.

[3] David Ferraiolo and Richard Kuhn. Role-based access con trols. In Proceedings of 15th NIST-NCSC National Computer Security Conferenc e, pages 554-563, Baltimore, MD, October 13-16 1992.

[4] M.-Y. Hu, S.A. Demurjian, and T.C. Ting. User-role based security in the ADAM object-oriented design and analyses environment. In J. Biskup, M. Morgernstern, and C. Landwehr, editors, Database Security VIII: Status and Pr ospects . North Holland, 1995.

[5] Hossan Gomaa. Object Oriented Analysis and Modeling for Family of systems with the UML. T echnicalReport, ISE Dept. George Mason University, 1999.

[6] Imtiaz Mohammed and David M. Dilts. Design for dynamic user-role-based security. Computers & Security, 13(8):661-671, 1994.

[7] J. Rumbaugh, G. Booch, and I. Jacobson. The Unified Modeling Language Reference Manual. Addison Wesley , Reading MA, 1999.

[8] Ravi S. Sandhu. Lattice-based access control models. IEEE Computer, 26(11):9{19, November 1993.

[9] Ravi S. Sandhu, Edward J. Coyne, Hal L. Feinstein, and Charles E. Y ouman. Role-based access con trolmodels. IEEE Computer, 29(2):38{47, February 1996.

[10] National Soft w areet al. Unified Modeling Language Notation Guide, Version 1.1. September 1, 1997.

[11] Charles Y ouman, Ed Coyne, and Ravi Sandhu, editors. Pr oceedingsof the 2nd ACM Workshop on R ole-Based Access Control, Nov. 6-7. ACM, 1997.

[12] Charles Y ouman, Ed Coyne, and Ravi Sandhu, editors. Pr oceedingsof the 3rd ACM Workshop on R ole-Based Access Control, Oct. 22-23. ACM, 1998.

 

引用:http://hi.baidu.com/lingyunj/blog/item/0abc2aad7678e90d4b36d680.html

14、访问控制开发中的角色方法探索 本文探讨了基于URBAC的访问控制开发方法,阐述了权限、角色、功能等核心概念及其相互关系。通过UML用例图和顺序图实现角色与权限的自动识别与分配,明确了应用开发者与安全管理员在系统不同阶段的职责分工。文章还介绍了安全约束(授权、义务、条件)的建模方式,提出了从UML模型到URBAC元素的映射机制,并总结了实际应用中的协作、一致性和动态管理要点,为信息系统安全架构的设计提供了系统化的方法支持。 阅读详情

相关推荐

RBAC权限体系设计UML

RBAC权限体系设计UML 下面是转载关于描述RBAC体系的文章。 关于RBAC权限的说明。 权限往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式: 判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真。 针对不同的应用,需要根据项目的实际情况和具体架构,在维护性、灵活性、完整性等N多个方案之间比较权衡,选择符合的方案。

你能用uml画一个简单的权限管理系统的模型吗?

当然可以,权限管理系统通常会包含以下几个部分: 用户:表示系统中的每一个人员,通常会有一个用户名和密码来标识唯一的用户。 角色:表示用户的身份和权限,比如管理员、普通用户等。 资源:表示系统中可以被访问的资源,比如文件、数据库表格等。 权限:表示用户对资源的操作权限,比如读取、修改、删除等。 用 UML 画出来可能长这样: [用户]1-[角色] [角色]1-[权限] [权限]1-*[资...

weixin_35756373的博客 573

Enterprise Architect 中文经典教程

本文使用到的EA工程文件下载 一、Enterprise Architect简介 Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engineering)。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发及部署等方面有着强大的支持,...

2万+

设计模式02——UML类图

一、UML简介  统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标准。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。  统一建模语言能为软件开发的所有阶段提供模型化和可视化支持。而且融入了软件工程领域的新思想、新方法和新技术,使软件设计人员沟通更简...

如不來的博客 842

PVT(Process Voltage Temperature)

芯片PVT

网始如芯个人博客 3万+

基于STM32与毫米波雷达的非接触式睡眠监测系统

物联网和嵌入式系统技术正在推动医疗健康设备的智能化发展。通过传感器网络采集生理信号,结合信号处理算法实现健康监测已成为主流技术方案。毫米波雷达凭借其非接触检测特性,在呼吸、心率等生命体征监测中展现出独特优势。STM32系列MCU凭借丰富外设和低功耗特性,成为医疗级嵌入式设备的首选平台。本系统整合60GHz毫米波雷达、红外测温与无线传输模块,构建了完整的睡眠质量评估解决方案,其硬件架构设计、信号处理算法和低功耗优化策略对可穿戴医疗设备开发具有参考价值。

weixin_36369848的博客 614

用例图介绍

 用例图 用例图(Use Case Diagram)是由软件需求分析到最终实现的第一步,它描述人们如何使用一个系统。用例视图显示谁是相关的用户、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务,以便使系统的用户更容易理解这些元素的用途,也便于软件开发人员最终实现这些元素。用例图在各种开发活动中被广泛的应用,但是它最常用来描述系统及子系统。当用例视图在外部用户出现以前出现时

GAME-LAB(游戏开发,微信公众号:fury-programer) 1万+

SAP成本中心费用分割(KSS2)实战:从原理到月末调整全解析

本文详细解析了SAP成本中心费用分割(KSS2)的核心逻辑与实战操作,从成本要素分组配置到月末调整全流程。通过KSS2将初级成本要素按作业类型重新分类为次级成本要素,确保成本结算准确。文章还提供了常见错误处理方法和典型业务场景实战,帮助用户高效完成SAP成本结算。

weixin_29279101的博客 1267

基于角色访问控制的UML 表示

图1 显示了 (regular)管制对数据和资源的访问的角色和权限。直观上,一个用户是一个人或一个自治的agent,一个角色是一项在组织中的工作功能或工作头衔。

rolt的专栏 548

钣金设计高薪进阶:从材料工艺到DFMA降本增效全解析

钣金设计是机械制造领域的核心技术之一,它涉及将金属板材通过切割、折弯、焊接等工艺成型为所需零件。其核心原理在于深刻理解材料特性、制造工艺约束与结构力学,以确保设计在功能、成本与可制造性之间取得最佳平衡。这项技术的价值在于,优秀的钣金设计能直接驱动产品降本增效,通过优化材料利用率、简化装配工序和避免设计缺陷,为企业节省大量模具与生产成本。其应用场景广泛,从机箱机柜、汽车部件到电子设备外壳无处不在。本文将聚焦于实现这一价值的关键路径,深入探讨面向制造与装配的设计(DFMA)原则在钣金领域的实战应用,并剖析如何通

weixin_34301132的博客 395

高通Camx相机防抖分析分析一:概率性EIS防抖功能失效

摘要:文章分析了高通Camx平台EIS电子防抖失效问题。通过日志排查发现NCS服务在启动时出现gyro传感器探测超时(error 9),导致无法获取陀螺仪数据。虽然sensor模块上电和注册正常,但由于性能问题触发了超时机制。解决方案是增大QSEEConnectionTimeout阈值,经测试有效解决了该问题。后续文章将继续深入相关技术专题。

628

基于角色访问控制的UML 表示05

这是使用建模语言描述RBAC 模型的第一次尝试。我们相信我们的工作可以帮助系统开发者更容易地理解RBAC 模型和建立基于角色的系统。

rolt的专栏 436

单细胞转录组数据分析中的基因ID注释转换问题:如何解决才能注释所有的UMIcount数据?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1129

基于角色访问控制的UML 表示02

RBAC 的概念静态模型如图2 所示,包括类、类之间的关系和关系的势。基本的实体是用户、角色、权限、约束和会话类。

rolt的专栏 670

GEE:计算非水体概率影像(水体淹没次数)

本文记录了在GEE平台上使用哨兵数据计算沿海地区非水体概率图像的计算方法和代码。基于像素,概率范围0-100。首先使用哨兵数据(s2)和大津算法(OTSU)计算的水体指数阈值来提取水体,然后计算研究区非水体像素在时间段内出现的概率。

养乐多的博客 2142

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

基于角色访问控制的UML 表示04

在动态视图中,用例被精化以显示参与用例的对象之间的交互。“建立会话”的协作图如图5 所示。

rolt的专栏 592

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

基于角色访问控制的UML表示(http://www.mmmbook.com/xprogrammer/issue/25/rolebased.htm)

基于角色访问控制的UML表示Michael E. Shin、Gail-Joon Ahn著,UMLChina 译  摘要在基于角色访问控制(role-based access control,RBAC)中,权限和角色相关,用户被当作相应角色的成员而获得角色的权限。RBAC背后的首要动机是为了简化管理。已经有文章介绍了一些基于角色系统的开发框架,但目前很少有文章使用系统开发者或软件工程师易于理解的方式

刘丹的专栏 4205

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

设计模式(十三)结构型:代理模式详解

代理模式(Proxy Pattern)是 GoF 23 种设计模式中的结构型模式之一,其核心价值在于为其他对象提供一种间接访问的机制,以控制对原始对象的访问。

谦与谦寻的神隐 1420

基于角色的访问控制rbac

基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依...

564

RBAC基于角色的访问控制

[摘自百度百科] RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派...

iteye_3366的博客 253
上一篇: 技术网站
下一篇: 常用表单验证
janejava
博客等级 码龄19年 0粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值