访问控制与 RBAC 模型访问控制通常的多用户系统都会涉及到访问控制,所谓访问控制,是指通过某种方式允许活限制用户访问能力及范围的一种方法。这主要是由于系统需要对关键资源进行保护,防止由于非法入侵或者误操作对业务系统造成破坏。简而言之,访问控制即哪些用户可以访问哪些资源。
一般而言,访问控制系统包括三个组成部分:
主体:发出访问请求的实体,通常指用户或者用户进程。
客体:被保护的资源,通常是程序,数据,文件或者设备。
访问策略:主体和客体的映射规则,确定一个主体是否对客体具有访问能力。
RBAC 模型基于角色的访问控制(RBAC)的概念在七十年代就已经提出,但是直到九十年代由于安全需求的发展才又引起了广泛关注。RBAC 的核心思想是将系统资源的访问权限进行分类或者建立层次关系,抽象为角色的概念,然后根据安全策略将用户和角色关联,从而实现了用户和权限之间的对照。RBAC 通过引入角色并将其作为权限管理的中介,将访问控制系统分为两个部分,即权限与角色的关联和角色与用户的关联,具有灵活易控制的优点。
RBAC 模型的建立和实现是基于角色实现访问控制研究中的两大热点。RBAC96 模型因全 ...
Paul Irish是著名的前端开发工程师,同时他也是Chrome开发者关系团队成员,jQuery团队成员,Modernizr、 Yeoman、CSS3 Please和HTML5 Boilerplate的lead developer。针对大家对WebKit的种种误解,他在自己的博客发表了《WebKit for Developers》一文,试图为大家解惑。
对许多开发者来说,WebKit就像一个黑盒。我们把HTML、CSS、JS和其他一大堆东西丢进去,然后WebKit魔法般的以某种方式把一个看起来不错的网页展现给我们。但事实上,Paul的同事Ilya Grigorik说:
WebKit才不是个黑盒。它是个白盒。并且,它是个打开的白盒。
所以让我们来花些时间了解这些事儿:
什么是WebKit?
什么不是WebKit?
基于WebKit的浏览器是如何使用WebKit的?
为什么又有不同的WebKit?
现在,特别是Opera宣布将浏览器引擎转换为WebKit之后,我们有很多使用WebKit的浏览器,但是我们很难去界定它们有哪些相同与不同。下面我争取为这个谜团做些解读。 ...
软件设计
未读自从9岁那年得到第一台Commodore 64家用电脑起,我就开始编程。然而,当面对如何写出好的代码时,我仍然感觉自己还有很多要学的。
在探索如何提高自己的过程中,我学了很多种语言。大多数是以面向对象为主的(OO)。
然而,让我惊讶的是,在我读过的大多数书本、杂志和网上文章中,有着大量遭透了的被当作面向对象例子的代码。
这些代码中,我看到的最多被违反的原则是“命令,不要去询问(Tell, Don’t Ask)”原则。这个原则讲的是,一个对象应该命令其它对象该做什么,而不是去查询其它对象的状态来决定做什么(查询其它对象的状态来决定做什么也被称作‘功能嫉妒(Feature Envy)’)。在面向对象的编程中,一个对象被定义成由对象状态和操作这个状态的方法组成。
在《Holub on Patterns: Learning Design Patterns By Looking At Code》这本书里,Allen Holub在第一章里有一节的标题是“为什么getter和setter方法有害”。他在JavaWorld上的一篇文章里也谈论了这个问题。对所有的面向对象的程序员来说,这应该是一篇“ ...
招聘程序员,永远没有万能的方法。在这里,我只希望分享一些多年来的我个人的招聘经验。
首先, 进行一系列简单的“Hello World” 类型的在线测试
对此,你是不是很惊讶呀?但确实有一些自称为程序员的人几乎不会编程。直到今天,仍会有一些招聘者告诉我,他们总会遇到一些应聘者无法通过最基本的编程测试。
所以,任何合理的招聘过程应把极简单的程序开发测试放在第一步。并且这个测试需要在线上进行,目的不是为了证明应聘者有多牛,而是看看他到底是怎样的开发者。这一过程很有必要,如果不进行这一部的筛选,你将来可能会后悔。
现在有一些服务可以帮助你解决在线测试应聘者的问题,比如Interview Zen和codility。
看开发者在互联网上的个人资料
任何名副其实的开发者应该有一份关于他们工作经历的简历。它不必十全十美,我只关注应聘者在互联网上因帮助他人而留下来的点点痕迹。向我展示你在Stack Overflow上的相关资料,凭此我可以了解你专注于哪些方面的技术信息,同时解决了哪些技术问题;给我一个你曾参与的开源代码库的链接;给我你的专业博客地址?Tumblr?Twitte ...
背景一个高效的软件开发过程对软件开发人员来说是至关重要的,决定着开发是痛苦的挣扎,还是不断进步的喜悦。国人对软件蓝领的不屑,对繁琐冗长的传统开发过程的不耐,使大多数开发人员无所适从。最近兴起的一些软件开发过程相关的技术,提供一些比较高效、实用的软件过程开发方法。其中比较基础、关键的一个技术就是测试驱动开发(Test-Driven Development)。虽然TDD光大于极限编程,但测试驱动开发完全可以单独应用。下面就从开发人员使用的角度进行介绍,使开发人员用最少的代价尽快理解、掌握、应用这种技术。下面分优势,原理,过程,原则,测试技术,Tips等方面进行讨论。
1. 优势TDD的基本思路就是通过测试来推动整个开发的进行。而测试驱动开发技术并不只是单纯的测试工作。
需求向来就是软件开发过程中感觉最不好明确描述、易变的东西。这里说的需求不只是指用户的需求,还包括对代码的使用需求。很多开发人员最害怕的就是后期还要修改某个类或者函数的接口进行修改或者扩展,为什么会发生这样的事情就是因为这部分代码的使用需求没有很好的描述。测试驱动开发就是通过编写测试用例,先考虑代码的使用需求(包括功能、过程、 ...
老陈从学习编程到现在已经经历了12年的时间,正儿八经以程序猿的身份就业是从2004年开始的,算起来也有八年了!但是我的经历较为特殊,第一次以程序猿的身份就业并不是替人打工,而是自己创业。2006年底来到北京在A公司干了一年,2007年底跳槽至B公司,而在B公司从2008年开始我又失去了打工者的身份,进入了第二次创业,一直到2012年春节过后。期间的酸甜苦辣这里不提,要说的是在创业团队解散之后,我的几次求职面试经历。
学 历
有很多人非常惊奇老陈为何年龄并不算大却做了这么多年的程序。实际上,我没有上过大学,甚至高中也是没有毕业的,也就是说,我没有文凭、没有好的学历。
很多人都对我说(实际上我自己也这么认为):学历不是那么重要,现在的企业主要看你的能力!
可是,事不关己高高挂起,你不是老陈,你如何能够体会到老陈的痛楚?大多数企业更加关注一个人的能力,大企业也是如此,这个我不反驳。然而,我们的简历在第一时间并不是送到技术官手上的, ...
Sonar 概述Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。
与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。
在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。
此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
Sonar 的安装Sonar 是 Codehaus 上面的一个开源项目,使用的是 LGPL V3 软件许可。我们可以在其官方网站上下载其源代码及安装包。
其源代码需要使用分布式 ...
以提交的一次开源代码为例,教会你步入开源的世界。
1,首先登陆到https://github.com平台上注册一个自己的账号,这个过程就不演示了
2,然后在左上部分输入一个开源项目的名字,选择的是jvalidator,回车搜索。
3,在搜索结果页面找到如下如图所示的项目,单击项目名称。
4,此时,你已经进入到了rinh/jvalidator的项目主页了,单击右上角的fork按钮,就把这个项目拉到你的账户下了,你就可以加入到这个项目中了
5,此时,页面已经跳转到你的账户下的jvalidator项目里了,单击右下方的复制按钮,将这个地址就复制下来了,稍后有用
6,此时,你需要安装一个git的客户端工具,当然这就很多了,我们演示就用它了http://msysgit.github.io,到这个页面下载此工具,选择一个最新的版本吧,下载到你的电脑里,然后安装它。
7,接着,你在你的磁盘里的一个合适位置建立一个目录,专门用来存放开源代码,比如我在我的D盘下建立了一个git文件夹,进入git文件夹
8,单击你的鼠标右键,会出现一个Git Bash 命令选 ...
最过三个星期的面试,人生的第一次转折终于尘埃落定,虽然过程很平坦,但还是颇有感慨。
有喜就有悲,其中拒了四个公司的offer, 其中有一家实在是不情愿,而且自己还有些失落,不过为了自己的目标,选择去杭州淘宝。人生就是这样,很多东西是缘分注定了的。
先说下我自己的情况,本人毕业于三流二本大学,非计算机专业,因个人兴趣而走向java这条路,其中也经历过培训机构,但个人感觉培训机构教的太浅,而且更多教会大家忽悠,导致了很多人心浮气躁。学习还是靠自己,如果不去多写和多想,肯定在技术这条路上会出现瓶颈,当然不是全针对技术这条路,这个社会本来就是浮躁的,当然一批浮躁的人也成功了。在这两年学习路上,我给自己定无数个小目标,然后一一去实现,去研究,再加上兴趣和激情,感觉这两年对互联网及java及OO有一积累了不少知识,感觉此时时机已经成熟,所以开始了为期三周的漫长而又煎熬的面试旅程。
面试从一个创业公司开始的,刚开始就是想积累下面试经验,毕竟本人属于内敛型,心里虽有千言,而有时也无从娓娓向面试官道来。所以就先锤炼一番,然后再向心中的理想公司淘宝进军。第一个创业的公司面试我的人是个博士, ...
“生死六重门”
无论你是在职,非在职,高级工程师,工程师,架构师,如果你正在面试阶段,请看完此文!
相信这篇文章对你的职业生涯和阶值观会造成重大的改变!
如果你是一名PM或者是管理者正在物色合适的开发人选,那么我相信这篇文章同样会在在你考虑如何挑选技术型人材上给你带来重大的帮助。
本系列不适合想去应聘PM,管理路线的人士!!!
作为一名技术型人材由其是程序员,用什么可以恒量自己是否合格或者我们怎么去恒量一个程序员是否质深、是否合格?
比如说:他可以适合一般的软件工程师岗位,还是适合高级工程师岗位,还是架构师、系统分析员这样的岗位呢?
作为一名JAVA开发人员来说,JAVA涉及到的面太广了,我们就拿企业级开发人员即J2EE开发人员的基本功来说事吧!
在面试前先问自己5个问题:1. 我想要什么
2. 我会什么
3. 目前的市场需要什么
4. 目前我还缺什么
5. 如何去补缺
一个J2EE高级开发人员需要具备些什么技能?
或许你会说:我会SSH,我会工作流,我会JQuery, ExtJS,我参加过数个大型项目,我带过5,6个人的队,我有SCJP, SCEA证书,我工作经验达5年。
我会告诉你 ...
