Shiro-ini配置

Shiro的配置十分灵活,支持ini、XML等方式.它的配置是从根对象securityManager开始的.

根对象SecrityManager

回顾Shiro的架构图可以知道,shiro是从根对象SecurityManager进行身份验证和授权的,这个对象是线程安全且整个应用只有一个,shiro提供了SecurityUtils让我们绑定它为全局的,方便后续使用.

Shiro-Authorization(授权)

Authorization

授权,也叫访问控制,即在应用中控制控制谁能访问那些资源(比如访问页面,编辑数据等).在授权中,有几个关键的对象需要了解:主体(Subject)资源(Resources)权限(Permission)角色(Role).
主体:即访问应用的用户,在shiro中使用Subject代表主体,用户只有在授权之后才能访问相应的资源.
资源:在应用中用户可以访问、操作的任何东西都可以称作为资源(某个页面,按钮等),用户只有授权之后才能访问.
权限:安全策略中的原子授权单位,通过权限可以表示用户在应用中有没有操作某个资源的权利.Tips:权限仅仅反映了用户在某个资源上的操作允不允许,不反应谁去执行此操作,权限赋予给用户这个操作Shiro并不关心,而是需要应用系统自己去实现。Shiro支持粗粒度权限细粒度权限,后续在深入.

Oracle-数据库实例、表空间、用户、表之间的关系(转)

完整的Oracle数据库通常由两部分组成:Oracle数据库数据库实例

1)数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等);
2)Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区;

在启动数据库服务时,实际上实在服务器内存中创建一个Oracle实例(即在服务器内存中分配共享内存的后台内存),然后由这个oracle数据库实例来访问和控制磁盘中的数据文件。Oracle有一个很大的内存块,称为全局区(SGA)

面向过程、面向对象的本质思考

前言

不久前有人在面试的时候被问及面向对象和面向过程的本质区别是什么?对于这个问题以前也没有做过多的思考,今天在此做一个总结,探求一些面向对象和面向过程本质的区别在哪里。

简单对比

面向过程就像是一个细心的管家,事无具细的都要考虑到。而面向对象就像是个家用电器,你只需要知道他的功能,不需要知道它的工作原理。

“面向过程”是一种是事件为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这写步骤实现,并按顺序调用。面向对象是以“对象”为中心的编程思想。

简单的举个例子:汽车发动、汽车到站。这对于“面向过程”来说,是两个事件,汽车启动是一个事件,汽车到站是另一个事件,面向
过程编程的过程中我们关心的是事件,而不是汽车本身。针对上述两个事件,形成两个函数,之后依次调用。

然而这对于面向对象来说,我们关心的是汽车这类对象,两个事件只是这类对象所具有的行为。而且对于这两个行为的顺序没有强制要求。

两种思想的对比

面向过程其实最为实际的一种思考方式,因为我们总是一贯一步一步的解决问题。(举个简单的事情,在初学面向对象的语言例如Java时,我们也总是不经意的面向过程了!)。其实笔者觉得就算是面向对象思想也是包含有面向过程思想的,面向过程需形成事件、也就是函数,面向对象需抽象出类,并且也会定义出这类对象的“行为”及方法。但是不论是面向过程的函数,还是面向对象的方法,两者所完成目的都是一致的。

可以说面向过程是一种基础的方法,它考虑的是实际的实现,一般情况下,面向过程是自顶向下逐步求精,其最重要的是模块化的思想方法。面向对象的方法主要是把事物给对象化,包括其属性和行为。这里在程序较小的时候,面向过程就会体现出一种优势,其程序流程十分清楚。

如同上述汽车发动、到站这一过程,面向过程可以很清晰的将这一过程体现出来。而面向对像仅仅是抽象出一个Bus类,包括发动、到站之两个行为,具体的执行顺序不能体现出来。

面向过程和面向对象的本质理解

面向过程就是分析出解决问题所需的步骤,面向对象则是把构成问题的事物分解成对象,抽象出对象的目的并不在于完成某个步骤,而是描述其再整个解决问题的步骤中的行为。
面向过程的思维方式是分析综合,面向对象的思维方式是构造
例如c语言解决问题时,一般是先定义数据结构,然后在构造算法。而是用Java面向对象求解时则是先抽象出对象,构造一个“封闭”的环境,这个环境中有定义的数据和解决问题的算法。面向过程的设计更具挑战性,技巧性,面向对象主要在于对象抽象的技术性,一旦完成抽象,任何人都可以做后面的工作了。从代码层结构上来说的话,面向对象和面向过程的主要区别就是数据是单独存数还是与操作存储在一起。面向对象提供了数据的封装后,是的对某一操作而言,数据的访问变得可靠了。面向过程就是将coding当做一件事,一步一步完成,面向对象就是将coding当做一件事物,需要做什么的时候由事物(对象)本身的行为去完成。

总结

总的来说:

面向对象是将事物高度抽象化。
面向过程是一种自顶向下的编程
面向对象必须先建立抽象模型,之后直接使用模型就行了。


本文链接: http://kiritor.github.io/2015/12/15/面向过程,面向对象的本质思考/

-- EOF --

Shiro-Authentication(身份验证)

Authentication

Authentication是指身份验证的过程:即在应用中能证明他就是他本人.一般需要提供身份标识信息例如:ID,用户名/密码等.
在Shiro中,用户需要提供Principals和Credentials给Shiro,从而来验证用户的身份.
Principals: 身份,即是Subject的标识属性,可以是任何东西,诸如用户名、邮箱等,唯一即可.一个主题可以有多个Principal,但是只有一个Primary principal一般是用户名/密码.
Credentials: 证明/凭据,只有主体才知道的安全值,如密码/数字证书.
principal/credential配对最常见的就是用户名/密码.

Shiro简介

简介

Apache Shiro是apache的一个强大而灵活的开源安全框架,它干净利落的处理身份认证、授权、企业会话管理和加密.Shiro首要的目标是易于使用和理解,提供一个干净而直观的API,来简化开发人员在使用它们的应用程序安全上的努力.这也是Shiro可能并没有Spring Security使用的人却越来越多的因素之一吧.

Shiro不强制依赖其他第三方框架、容器、或者应用服务器,不仅可以应用在JavaSE环境,也可以用在JavaEE环境.

Shiro Features

Apache Shiro是一个拥有许多功能的综合性的程序安全框架,帮助我们完成:认证、授权,加密、会话管理、与web集成、缓存等功能.shiro提供的功能如下图:

Spring MVC + Velocity实现国际化配置

web开发中,国际化是需要考虑的一个问题,而且这个问题一般是越早敲定越好(不然等到系统大了,翻译是个问题).下面是结合实际项目(Spring MVC+Velocity)对实现国际化的一些总结,项目地址:https://github.com/kiritor/hr
需要说明的是,该项目使用的是基于Cookie的国际化配置,其他方式参考本文.

Spring国际化

I18N:作为”国际化”的简称,其来源是英文单词internationalization的首末字符i和n,18为中间的字符数.

Golang:go get现实显示进度(转)

    golang在使用go get下载package时,有些package如果比较大的话,下载时间比较的久(会给我们造成卡死的情况),希望可以有一个下载进度。google一下,已经有人解决了,自己也尝试了下,发现没问题,果断转载过来了.

    原文地址如下:http://www.leanote.com/blog/view/544ca9a824ab0a1dbd000000