04 2017 档案

摘要:简单地说,就是可以将一个对象(标志对象的类型)及其状态转换为字节码,保存起来(可以保存在数据库,内存,文件等),然后可以在适当的时候再将其状态恢复(也就是反序列化)。serialization 不但可以在本机做,而且可以经由网络操作。它自动屏蔽了操作系统的差异,字节顺序等。比如,在 Windows 阅读全文
posted @ 2017-04-30 15:21 sky丶尕少 阅读(168) 评论(0) 推荐(0)
摘要:圈复杂度(Cyclomatic Complexity)是很常用的一种度量软件代码复杂程度的标准。这里所指的“代码复杂程度”并非软件内在业务逻辑的复杂程度,而是指代码的实现方式的 复杂程度。说起来有点绕是么?打个比方就是嘴笨的人可以把简单的事情说得很复杂。虽然“内在业务逻辑”与“实现方式”有紧密的联系 阅读全文
posted @ 2017-04-29 17:00 sky丶尕少 阅读(1781) 评论(0) 推荐(0)
摘要:AES已经变成目前对称加密中最流行算法之一;AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据。 注意:解密的时候要传入byte数组 输出结果如下: 加密前:test解密后:test 容易出错的地方 但是如果我们将测试代码修改一下,如下: String content = 阅读全文
posted @ 2017-04-26 11:20 sky丶尕少 阅读(887) 评论(0) 推荐(0)
摘要:try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么? 注意说明: finally语句块不应该出现 应该出现 阅读全文
posted @ 2017-04-20 17:24 sky丶尕少 阅读(193) 评论(0) 推荐(0)
摘要:JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而 阅读全文
posted @ 2017-04-20 14:45 sky丶尕少 阅读(163) 评论(0) 推荐(0)
摘要:Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。 Class 阅读全文
posted @ 2017-04-20 11:06 sky丶尕少 阅读(158) 评论(0) 推荐(0)
摘要:Java 反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflec 阅读全文
posted @ 2017-04-20 09:12 sky丶尕少 阅读(126) 评论(0) 推荐(0)
摘要:为了提高系统的运行效率,引入缓存机制,减少数据库访问和磁盘IO。下面说明一下ehcache和spring整合配置。 1. 需要的jar包 slf4j-api-1.6.1.jar ehcache-core-2.1.0.jar ehcache-spring-annotations-1.1.2.jar s 阅读全文
posted @ 2017-04-11 09:48 sky丶尕少 阅读(290) 评论(0) 推荐(0)
摘要:org.apache.commons.lang.RandomStringUtils; //产生5位长度的随机字符串,中文环境下是乱码 RandomStringUtils.random(5); //使用指定的字符生成5位长度的随机字符串 RandomStringUtils.random(5, new 阅读全文
posted @ 2017-04-06 16:53 sky丶尕少 阅读(428) 评论(0) 推荐(0)
摘要:关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二种是:通过 在xml中定义init-method 和 destory-method方法 第三种是: 通 阅读全文
posted @ 2017-04-05 16:14 sky丶尕少 阅读(246) 评论(0) 推荐(0)
摘要:在创建账户及修改密码时直接把生成密码操作委托给PasswordHelper。 阅读全文
posted @ 2017-04-05 15:01 sky丶尕少 阅读(986) 评论(0) 推荐(0)
摘要:在涉及到密码存储问题上,应该加密/生成密码摘要存储,而不是存储明文密码。比如之前的600w csdn账号泄露对用户可能造成很大损失,因此应加密/生成不可逆的摘要方式存储。 5.1 编码/解码 Shiro提供了base64和16进制字符串编码/解码的API支持,方便一些编码解码操作。Shiro内部的一 阅读全文
posted @ 2017-04-05 11:36 sky丶尕少 阅读(318) 评论(0) 推荐(0)
摘要:之前章节我们已经接触过一些INI配置规则了,如果大家使用过如Spring之类的IoC/DI容器的话,Shiro提供的INI配置也是非常类似的,即可以理解为是一个IoC/DI容器,但是区别在于它从一个根对象securityManager开始。 4.1 根对象SecurityManager 从之前的Sh 阅读全文
posted @ 2017-04-05 10:44 sky丶尕少 阅读(239) 评论(0) 推荐(0)
摘要:授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等)。在授权中需了解的几个关键对象:主体(Subject)、资源(Resource)、权限(Permission)、角色(Role)。 主体 主体,即访问应用的用户,在Shiro中使用Subject代表该用户。用户只有 阅读全文
posted @ 2017-04-05 10:37 sky丶尕少 阅读(275) 评论(0) 推荐(0)
摘要:1)提供的接口数量不完全相同。 assertEquals支持boolean,long,int等等java primitiveType变量。assertSame只支持Object。 2)比较的逻辑不同,结果可能不同。assertSame是对象直接比较。assertEquals能利用被比较对象提供的比较 阅读全文
posted @ 2017-04-05 09:26 sky丶尕少 阅读(474) 评论(0) 推荐(0)
摘要:身份认证流程 流程如下: 1、首先调用Subject.login(token)进行登录,其会自动委托给Security Manager,调用之前必须通过SecurityUtils. setSecurityManager()设置; 2、SecurityManager负责真正的身份验证逻辑;它会委托给A 阅读全文
posted @ 2017-04-05 09:25 sky丶尕少 阅读(459) 评论(0) 推荐(0)
摘要:身份验证,即在应用中谁能证明他就是他本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明。 在shiro中,用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能验证用户身份: principals:身份,即主体的 阅读全文
posted @ 2017-04-05 08:55 sky丶尕少 阅读(353) 评论(0) 推荐(0)
摘要:Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。这不就是我们想要的嘛,而且Shiro的API也是非常简单;其基本功能点如下图所示: Authentication:身份认证/登录,验证用户是不是拥有相应的身份; Authorization:授权,即权限验证,验证某个已认证 阅读全文
posted @ 2017-04-02 10:27 sky丶尕少 阅读(304) 评论(0) 推荐(0)