- 浏览: 199481 次
- 性别:
- 来自: 北京
最新评论
-
ray_linn:
eval的速度也是慢得可以
Rails每周一题(十六): Evaluation in Ruby -
orcl_zhang:
>> Thing.my_class_eval do ...
Rails每周一题(十六): Evaluation in Ruby -
andyhu1007:
robbin 写道何况多进程rails都是每进程hold一个持 ...
线程安全的Rails -
robbin:
ruby本地的lib不是线程安全的,你多线程rails读取本地 ...
线程安全的Rails -
andyhu1007:
刚帮同事trouble shoot了一个问题:def upda ...
ActiveRecord的ORM问题域 Q&A
文章列表
讨论一下几种web认证方法的优劣。
首先看一下Http协议内建的认证方法
。
其实这种认证方式是在web处于幼年期的时候经常使用的认证方式。它很简单,被所有的浏览器所支持,但它最重要的问题是不安全。
缺点:
1. 简陋的用户界面
登录窗口是浏览器内建的,而不是为站点特制的。非常简陋难看,而且不可替换。用户不可以注册新的账号。
2. 非可选
用户要么通过认证,要么得到一个401。如果得到一个401,用户将得不到任何信息。
3. 不可登出
浏览器会缓存用户名密码,而且没有提供登出 ...
简单介绍一下几种认证方式在Tomcat上的实现方式。
发现一篇文章已经讲得很详细,所以不再赘述。
应该注意的是,这篇文章讲得是tomcat内建的对几种认证方式的支持,我们在建自己的web应用时,应该建立自己的一套form-based认证逻辑。
看这里:Role based security and authentication with Tomcat
附件是这个例子的应用程序代码。
- 2009-02-23 14:56
- 浏览 1370
- 评论(0)
什么是Web认证
简而言之,web认证就是一个确认对方身份的过程。Web认证最典型的方式是通过用户名和密码。
Web认证有多种方式
A. Http协议内建的认证方法
1. Http Basic Authentication (Http基本认证)
HTTP基本认证是最简单也是曾经使用过很长时间的一种认证方式。基本认证要求为每一个保护域(realm)提供一个用户名和密码进行认证。
流程简介:
a. 客户端浏览器访问一个受http基本认证保护的资源。
b. 服务器返回401(aut ...
Firefox把记住密码的网站的用户名密码存在哪里?
首先找到profile folder:
Operation System
Profile folder location
Windows NT (NT 4.x, 2000, XP, and Vista)
"%APPDATA%\Mozilla\"
Unix/Linux
~/.mozilla/
这里只列出了Windows和Linux的位置。
在%profile_folder%\Firefox\Profiles\%xxxxx%.default文件夹下,有一个Signon%version ...
为什么需要数字证书?
1. 标志和证明网络通信双方身份,确保交易实体的真实性或者签名信息的不可否认性。(数字签名和签名验证)
2. 对在网络上传输的信息进行加密,确保信息的机密性、完整性。
总而言之,我们用数字证书核心的加密功能,提供网络安全。下面,让我们一一分析数字证书在保证网络安全的各方面所采用的方式或实施的机制。
A. 身份认证
情景:A和B双方,A要对B的身份进行验证。
初步实施机制:B用自己的私钥对自己的口令进行数字签名,然后发给A。A用B提供的公钥来来验证B用自己独有的私钥进行的数字 ...
JRuby和Ruby的主要不同点:
* 性能:显而易见,JRuby因为中间多了一个抽象层次,速度要比Ruby慢。
* 部署:JRuby的应用程序可以用war包的形式部署于Java的应用服务器。
* 兼容:对于JRuby来说,它对有些gem存在兼容问题。
* 库支持:JRuby可以调用Java的核心API,和其他的Java库。
对于Rails而言,其实没太大区别。语法相同,框架相同。所以,不要担心太多。
- 2009-02-12 16:07
- 浏览 3416
- 评论(1)
在数据库系统中,隔离
是定义一个操作对数据所做的改变如何/何时对其它的并行
操作可见。
隔离并不改变锁本身的行为,而是通过实行不同的锁机制实现的。比如是否加锁,加多长时间的锁,加什么类型的锁等。同时,也会影响排它情况下的可见性(见read uncommited)。
隔离级别
数据库系统有四个隔离级别(大多数数据库默认级别为read commited)。对数据库使用何种隔离级别要审慎分析,因为
1. 维护一个最高的隔离级别虽然会防止数据的出错,但是却导致了并行度的损失,以及导致死锁出现的可能性增加。
2. 然而,降低隔离级别,却会引起一些难以 ...
请查看 <Patterns of Enterprice Application Architecture> 的乐观和悲观离线锁模式
这两个属性都用于一多对或者多对多的关系中。而inverse特别是用于双向关系,在单向关系中我们并不需要。
Cascade代表是否执行级联操作,Inverse代表是否由己方维护关系。
Cascade:
Cascade属性的可能值有
all:
所有情况下均进行关联操作,即save-update和delete。
none: 所有情况下均不进行关联操作。这是默认值。
save-update: 在执行save/update/saveOrUpdate时进行关联操作。
delete: 在执行delete 时进行关联操作。
all-delete- ...
Java为了提升IO操作的性能,推出了nio包。
nio包跟io包的区别在于:
1. 对于数据的操作都是通过缓冲处理,这使得数据的读写可以进行“块”的操作,极大地提升了性能。而io对于数据的操作只能通过字节或者字符流。
2. 对于跟网络相关的流的操作,可以使用非阻塞模式。而io包只能进行阻塞模式的处理。在非阻塞模式下,io的操作极大地降低了对系统资源的占用。
看看基于NIO实现非阻塞Socket编程
。
- 2009-01-10 00:57
- 浏览 1128
- 评论(0)
什么是流:
流是一个抽象的概念。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文 ...
Java与Unicode:
Java的class文件采用utf8的编码方式,JVM运行时采用utf16。
Java的字符串是unicode编码的。
总之,Java采用了unicode字符集,使之易于国际化。
Java支持哪些字符集:
即Java能识别哪些字符集并对它进行正确地处理?
查看Charset
类,最新的JDK支持160种字符集。可以通过static方法availableCharsets拿到所有Java支持的字符集。
assertEquals(160, Charset.availableCharsets().size());
Set<String& ...
EasyMock的实现使用了动态代理(Dynamic Proxy)
技术。动态代理工具是 java.lang.reflect
包的一部分,在 JDK 1.3 版本中添加到 JDK,它允许程序创建代理对象,代理对象能实现一个或多个已知接口,并用反射代替内置的虚方法分派,分派对接口方法的调用。这个过程允许实现“截取”方法调用,重新路由它们或者动态地添加功能。
动态代理机制的核心是InvocationHandler
接口:
public interface InvocationHandler {
Object invoke(Object proxy, Method method, ...
1. 生成 Mock 对象
如何创建一个需要严格遵守调用顺序的mock对象?
SomeInterface mockObj = createStrictMock(SomeInterface.class);
如果你不想对每一个方法设定预期行为,对于这些非预期的方法调用你不想让EasyMock抛出AssertionError,你可以创建一个“nice”的mock对象,所有没有设定预期行为的方法会悄悄地返回一些空值(0, null或者false)。
SomeInterface mockObj = createNiceMock(SomeInterface.cl ...
EasyMock的应用分为5步:
1. 使用 EasyMock 生成 Mock 对象;
SomeInterface mockObj = createMock(SomeInterface.class);
如果想对一个类(而非接口)生成mock对象,需要EasyMock Class Extension
如果是一个相对复杂的测试用例,需要对多个接口生成mock对象,使用MockControl来管理:
IMocksControl control = createControl();
SomeInterface mockObj = control.crea ...