研究了一下OAuth

假设你的网站有这样一种功能:如果用户同意,你的网站可以代表他去拿他在Facebook上的非公开照片; 然后在线下打印,把照片寄给你。 简单的解决办法是用户把他的facebook用户名/密码提交给你的网站,然后你的网站再用这个用户名/密码去调Facebook的web service. 问题是:    1. 用户不愿意把他在Facebook的用户名和密码给你的网站    2. 即使他愿意给你,他也会担心你的网站在拿到照片之后,又去进行“获取聊天记录”之类的未授权操作    3. 用户现在允许你现在去拿照片,但不代表允许你明天也可以拿 OAuth就是用来解决这种典型问题 :“Allowing one party(你的网站) to access someone else’s resources(用户在Facebook的照片) on their behalf(代表用户)”      1. 用户不用提供用户名/密码给你的网站,相反他的浏览器会跳转到facebook,他在facebook端输入用户名/密码,然后再跳转回来。回来时会在URL里加上一个token    2. 你的网站可以根据这个token去facebook拿照片。这个token将专用于“拿照片”。如果你想趁机窃取更多的个人资料,facebook会拒绝    3. 这个token也有时限,超过一段时间即失效。差不多你只能拿一次照片。

维基给的标准定义:Sales process

See http://en.wikipedia.org/wiki/Sales_process Specific steps or stages in a sales process vary from company to company but generally include the following elements:    1. Initial Contact    2. Application of Initial Fit Criteria    3. Sales lead    4. Need identification    5. Qualified prospect    6. Proposal    7. Negotiation    8. Closing    9. …

维基给的标准定义:Sales process Read More »

Oracle:字段顺序也会影响效率

摘自《Troubleshooting Oracle Performance》 Oracle从数据块中取某个字段的数据时,它需要知道这个字段在该行数据中所处的位置;而确定位置的方法很土: 要像知道第2个字段的位置,必须先知道第1个字段所占的长度,然而用这个偏移量去找第2个字段;同理,取第3个字段时,要先知道第2个字段的位置和长度。 所以说, 取越靠后的字段,效率就越低。 所以,越要频繁读取的字段,越应该放前面。

Oracle: 通过数组接口实现批量数据传输

摘自《Troubleshooting Oracle Performance》 如果要按相同的SQL插入一万条数据,一条一条插的效率是很低的;可以把所有数据组装成“数组”,然后只执行一次插入即可。 JDBC的batch update的实现其实就是利用了数据库的这种机制

Oracle行预取

没有行预取时,数据是一条一条传到客户端的; 而有了行预取,比如10,则数据会按每次10条传给客户端。 这样做可以明显降低网络传输次数,提高效率。 Oracle Jdbc Driver 提供了行预取的设置:    connectionProperties.put("defaultRowPrefetch","1")

Oracle:Nested Loops, Merge Join, Hash Join

摘自《Troubleshooting Oracle Performance》 Nested Loops   一个Outer Loop,一个Inner Loop,外部的循环驱动内部的循环 Merge Join   两边的数据集会先按连接的字段排序,然后再连接 Hash Join   左边的数据集会用来构建一个哈希表,等哈希表建好之后,再逐条查看右边的数据集,看它们是否可以命中这张哈希表 比较    Nested Loops可以在产生第一条记录时即开始返回数据,Hash Join有时可以,Merge Join完全不行    如果目标是尽快返回所有记录      1.若查询的选择性较高,则Hash Join最佳      2.否则,则应使用Nested Loops