<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[信言的笔记]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/doraeimo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; doraeimo]]></copyright><item><title><![CDATA[spring AOP 笔记]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/45198685</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/45198685</guid><author>doraeimo</author><pubDate>Thu, 23 Apr 2015 10:49:03 +0800</pubDate><description><![CDATA[AOP的目的就是要把共通的切面（Aspect）抽出来，允许不同的对象复用。比如打日志，记录方法执行时间等。
于是一个Aspect的实例（advisor），需要表达清楚两点：
1.pointCut，即准入条件。类名和方法名符合什么样的要求，才可以触发切面执行。如方法签名具有annotation @Monitor。
2.advice，即触发的动作。一般会在如下几种时机触发：方法执行before、]]></description><category></category></item><item><title><![CDATA[CompletableFuture 用法示例]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/38226899</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/38226899</guid><author>doraeimo</author><pubDate>Mon, 28 Jul 2014 11:30:52 +0800</pubDate><description><![CDATA[如 Figure 1. Application task flow 所示，TASK1求值，分别代入TASK2和TASK3，对结果求和]]></description><category></category></item><item><title><![CDATA[Http/1.1 （RFC 2616）阅读笔记]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/22041141</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/22041141</guid><author>doraeimo</author><pubDate>Tue, 25 Mar 2014 10:19:16 +0800</pubDate><description><![CDATA[我们每天都在跟http打交道，却未必敢说对它了如指掌。最近花了点时间阅读了这份十年前的协议，借此机会分享感受较深的几点。

1.请求/响应链（Request and Response Chain）

如图，一则请求在最终抵达我们的应用服务器之前，可能会经过像A、B、C那样层层的代理服务器、缓存服务器的中转，请求和响应就像接力棒一样在整个网络中穿梭。这种结构给分布式缓存埋下了伏笔，也让我意识]]></description><category></category></item><item><title><![CDATA[为什么oauth 2.0规范里 先后两次提交并验证redirect_uri]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/19192139</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/19192139</guid><author>doraeimo</author><pubDate>Fri, 14 Feb 2014 10:34:50 +0800</pubDate><description><![CDATA[耗子写了篇关于 oauth 的文章，其中第二个bug没有看懂。翻了原文又翻了规范，后来才想通。


原文是 Bug 2. Lack of redirect_uri validation on get-token endpoint 换token（指的是access token）的时候缺少重定向地址的校验。

OAuth 2.0的规范 http://tools.ietf.org/html/r]]></description><category></category></item><item><title><![CDATA[ssl运行机制中，为什么不直接采用pms作为会话密钥]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/18995781</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/18995781</guid><author>doraeimo</author><pubDate>Sat, 08 Feb 2014 22:16:25 +0800</pubDate><description><![CDATA[阮一峰写了一篇不错的文章介绍ssl的运行机制 http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
对于”为什么一定要用三个随机数，来生成会话密钥”，dog250解释恐怕有误。


首先，前两个随机数分别来自客户端和服务端，其目的是为了防止重放攻击，因此所有计算都要带上它俩，而非为了增加随机性。


退一步说，如果pms被猜到，引入前]]></description><category></category></item><item><title><![CDATA[广播地址设为自己的ip地址，子网掩码设为255.255.255.255 是什么意思]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/17352725</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/17352725</guid><author>doraeimo</author><pubDate>Mon, 16 Dec 2013 15:17:06 +0800</pubDate><description><![CDATA[最近看《构建高性能web站点》（老版）第12章讲LVS-DR的配置，有一段针对Real Server的配置不明所以：
ifconfig lo:0 125.12.12.77 broadcast

125.12.12.77 netmask 255.255.255.255 up

route add -host 125.12.12.77 dev lo:0
查了些资料，netmask设为4个2]]></description><category></category></item><item><title><![CDATA[关于JS的this和容易混淆的Call(), Apply(), Bind()]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/17141189</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/17141189</guid><author>doraeimo</author><pubDate>Thu, 05 Dec 2013 14:48:22 +0800</pubDate><description><![CDATA[http://dailyjs.com/2012/06/18/js101-this/


在new出来的函数中，this指代对象实例，这点和大部分OO语言一致；
其它情况下，this指代全局对象（浏览器中是window，node.js里是global）；但严格模式下为undefined。


http://dailyjs.com/2012/06/25/this-binding/

]]></description><category></category></item><item><title><![CDATA[初步理解AQS]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/17097223</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/17097223</guid><author>doraeimo</author><pubDate>Tue, 03 Dec 2013 16:16:10 +0800</pubDate><description><![CDATA[摘要

AQS全称AbstractQueuedSynchronizer，它是concurrent包中最重要的基础设施类之一，负责作为模板类向业务层提供对临界区的管理。本文以FutureTask的实现机制作为引子，介绍了AQS的业务背景和设计思路，最后梳理了AQS的代码实现。

目录

摘要.................................................]]></description><category></category></item><item><title><![CDATA[深入理解java内存模型]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/15812789</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/15812789</guid><author>doraeimo</author><pubDate>Wed, 13 Nov 2013 15:46:19 +0800</pubDate><description><![CDATA[原文见 http://ifeve.com/java-memory-model-0/
文章讲得很细致了，关键几点：
1、原来只知道重排序是编译时（编译器行为）和运行时（虚拟机行为）产生的，目的是提高性能；此文交代了运行时重排序是由于cpu写缓冲出于性能考量没有及时刷到内存，导致事实上的重排序。cpu多级缓存之于内存，就像内存之于硬盘。
扩展阅读：http://faculty.kfupm.edu]]></description><category></category></item><item><title><![CDATA[DHT网络 学习笔记]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/11875609</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/11875609</guid><author>doraeimo</author><pubDate>Sat, 21 Sep 2013 18:56:03 +0800</pubDate><description><![CDATA[原文见：http://codemacro.com/2013/05/19/crawl-dht/
【学习笔记】
原bt下载依赖于tracker，后者不存储资源本身，但存储着拥有资源（片段）的peer列表。这样一来，tracker即扮演着中心节点的角色，一旦移除，会因为无法找到其它peer而下载失败。


DHT网络致力于通过去中心化解决上述问题，在tracker失效的情况下仍然能找到其它pe]]></description><category></category></item><item><title><![CDATA[Learn CSS Positioning in Ten Steps]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/11801209</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/11801209</guid><author>doraeimo</author><pubDate>Wed, 18 Sep 2013 11:24:07 +0800</pubDate><description><![CDATA[原文见 http://www.barelyfitz.com/screencast/html-training/css/positioning/
很直观的文章，一次性说清楚了position和float，同时提到了脱离文档流和清浮动的概念。]]></description><category></category></item><item><title><![CDATA[图解五种I/O模型]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/8767803</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/8767803</guid><author>doraeimo</author><pubDate>Sun, 07 Apr 2013 16:09:48 +0800</pubDate><description><![CDATA[原文见 http://www.quora.com/Computer-Programming/How-is-asynchronous-IO-implemented-in-programming-languages
带下划线的部分是我的理解和译注


有五种I/O模型。
下图针对网络I/O,但磁盘I/O等其它I/O形式都是类似。


1,阻塞I/O模型
请求无法立即完成则保持阻塞。]]></description><category></category></item><item><title><![CDATA[d3js入门之数据绑定]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/8707773</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/8707773</guid><author>doraeimo</author><pubDate>Fri, 22 Mar 2013 21:00:15 +0800</pubDate><description><![CDATA[引子
d3js 是一款上手容易的js类库,专门用于绘制svg图形图表,其关键理念为data-join 意即数据绑定.搞清这个概念非常重要,它将以简洁优雅的形式体现数据驱动编程.
以下是Thinking with Joins的拙译 ,原作者Mike Bostock




假设你要用D3画一副散点图,因此需要生成一些 SVG circle 元素来直观地展现数据. 你会惊讶地发现D3没有]]></description><category></category></item><item><title><![CDATA[一种直观表达系统状态和网络流量传导的图表]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/8668390</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/8668390</guid><author>doraeimo</author><pubDate>Wed, 13 Mar 2013 14:42:54 +0800</pubDate><description><![CDATA[d3 是一个基于js和svg的图表类库,里面实例丰富.本想找一个现成的,用于表达系统状态和网络流量传导,可惜最接近需求的这个只支持树状结构Using D3.js to visualise Hierarchical Classification 于是自己动手改造了一番,效果如图所示:




特性：
同时支持树状和网状结构
节点可拖动，数据刷新后位置信息保留


完整demo见]]></description><category></category></item><item><title><![CDATA[网店店主刷信违法吗？]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/8530358</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/8530358</guid><author>doraeimo</author><pubDate>Tue, 22 Jan 2013 16:15:35 +0800</pubDate><description><![CDATA[乍一听，好像不违法，最多算违反了网店主和电商平台签订的合同。
闲来无事查了下相关的法律法规：



商业贿赂犯罪案件“谋取不正当利益”的认定


《商业贿赂犯罪意见》第九条拓展了“谋取不正当利益”的范围，增加规定两种类型的不正当利益：（1）谋取违反规章、政策规定的利益；（2）要求对方违反规章、政策、行业规范的规定提供帮助或者方便条件。可见，谋取不正当利益仍以违法性（违规性）判断为基]]></description><category></category></item><item><title><![CDATA[jvm线程状态的流转]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/8500236</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/8500236</guid><author>doraeimo</author><pubDate>Mon, 14 Jan 2013 13:55:29 +0800</pubDate><description><![CDATA[最初是有这样一个疑问：
“使用concurrent包里的lock和传统的synchronized相比，等在同步块之外的线程处于一样的状态吗？是blocked还是waiting？”
看图说话：


因为lock的实现往往是通过LockSupport.park()方法，因此结论是：
传统synchro块：blcoked
lock：waitting


两者有什么区别呢？
wait]]></description><category></category></item><item><title><![CDATA[聊聊高性能I/O设计模式与快餐店的点餐机制]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/8490798</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/8490798</guid><author>doraeimo</author><pubDate>Thu, 10 Jan 2013 21:56:55 +0800</pubDate><description><![CDATA[最近接触了NIO，类名涉及不少术语，查了下原来这些术语均出自Reactor/Proactor两种经典的IO设计模式。读了《两种高性能I/O设计模式的比较》（附于文末）之后，中午在麦当劳点餐的时候突然意识到I/O过程和点餐这回事儿可以很好地类比：



=====================




场景1、餐厅闲时点餐的情景：

1、客户向接待员请求下单，点套餐（可乐+薯]]></description><category></category></item><item><title><![CDATA[javascript Event Loop 小结]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/8019213</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/8019213</guid><author>doraeimo</author><pubDate>Wed, 26 Sep 2012 00:29:31 +0800</pubDate><description><![CDATA[原文见：http://heroicyang.com/blog/javascript-event-loop.html
读完一遍后，有一点没理解：为什么在执行这句的时候，会追加一个event callback到队尾。

 status.innerText = 'doing...please wait...'; 
即原文所谓“由于涉及DOM更新，由DOM Change Event触发另一个线程，]]></description><category></category></item><item><title><![CDATA[一致性hash]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/7998385</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/7998385</guid><author>doraeimo</author><pubDate>Thu, 20 Sep 2012 01:05:59 +0800</pubDate><description><![CDATA[基本上，这篇文章已经说得很清楚了。


除了关于“虚拟节点”的这一段不够严谨：
”平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去，这样可以使得所有的缓冲空间都得到利用。

hash 算法并不是保证绝对的平衡，如果 cache 较少的话，对象并不能被均匀的映射到 cache 上，比如在上面的例子中，仅部署 cache A 和 cache C 的情况下，在 4 个对象中， cache]]></description><category></category></item><item><title><![CDATA[数据库中事务的隔离级别 小结]]></title><link>https://blog.youkuaiyun.com/doraeimo/article/details/7994042</link><guid>https://blog.youkuaiyun.com/doraeimo/article/details/7994042</guid><author>doraeimo</author><pubDate>Tue, 18 Sep 2012 23:46:46 +0800</pubDate><description><![CDATA[概述
本文综合了以下三篇帖子的内容，并汇总：
http://baike.baidu.com/view/2943500.htm 对“更新丢失”的描述不到位，在“解决方案”中错误地使用了“瞬间共享读锁”和“共享读锁”。

http://blog.youkuaiyun.com/w_l_j/article/details/7354530 没有提到“更新丢失”的情况，在READ UNCOMMITTED中没有提到]]></description><category></category></item></channel></rss>