- 博客(34)
- 收藏
- 关注
原创 spring AOP 笔记
AOP的目的就是要把共通的切面(Aspect)抽出来,允许不同的对象复用。比如打日志,记录方法执行时间等。于是一个Aspect的实例(advisor),需要表达清楚两点:1.pointCut,即准入条件。类名和方法名符合什么样的要求,才可以触发切面执行。如方法签名具有annotation @Monitor。2.advice,即触发的动作。一般会在如下几种时机触发:方法执行before、
2015-04-23 10:49:03 550
转载 CompletableFuture 用法示例
如 Figure 1. Application task flow 所示,TASK1求值,分别代入TASK2和TASK3,对结果求和
2014-07-28 11:30:52 1789
原创 Http/1.1 (RFC 2616)阅读笔记
我们每天都在跟http打交道,却未必敢说对它了如指掌。最近花了点时间阅读了这份十年前的协议,借此机会分享感受较深的几点。1.请求/响应链(Request and Response Chain)如图,一则请求在最终抵达我们的应用服务器之前,可能会经过像A、B、C那样层层的代理服务器、缓存服务器的中转,请求和响应就像接力棒一样在整个网络中穿梭。这种结构给分布式缓存埋下了伏笔,也让我意识
2014-03-25 10:19:16 2731
原创 为什么oauth 2.0规范里 先后两次提交并验证redirect_uri
耗子写了篇关于 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
2014-02-14 10:34:50 9781
原创 ssl运行机制中,为什么不直接采用pms作为会话密钥
阮一峰写了一篇不错的文章介绍ssl的运行机制 http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html对于”为什么一定要用三个随机数,来生成会话密钥”,dog250解释恐怕有误。首先,前两个随机数分别来自客户端和服务端,其目的是为了防止重放攻击,因此所有计算都要带上它俩,而非为了增加随机性。退一步说,如果pms被猜到,引入前
2014-02-08 22:16:25 2515
原创 广播地址设为自己的ip地址,子网掩码设为255.255.255.255 是什么意思
最近看《构建高性能web站点》(老版)第12章讲LVS-DR的配置,有一段针对Real Server的配置不明所以:ifconfig lo:0 125.12.12.77 broadcast125.12.12.77 netmask 255.255.255.255 uproute add -host 125.12.12.77 dev lo:0查了些资料,netmask设为4个2
2013-12-16 15:17:06 12672
转载 关于JS的this和容易混淆的Call(), Apply(), Bind()
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/
2013-12-05 14:48:22 719
原创 初步理解AQS
摘要AQS全称AbstractQueuedSynchronizer,它是concurrent包中最重要的基础设施类之一,负责作为模板类向业务层提供对临界区的管理。本文以FutureTask的实现机制作为引子,介绍了AQS的业务背景和设计思路,最后梳理了AQS的代码实现。目录摘要.................................................
2013-12-03 16:16:10 6347
转载 深入理解java内存模型
原文见 http://ifeve.com/java-memory-model-0/文章讲得很细致了,关键几点:1、原来只知道重排序是编译时(编译器行为)和运行时(虚拟机行为)产生的,目的是提高性能;此文交代了运行时重排序是由于cpu写缓冲出于性能考量没有及时刷到内存,导致事实上的重排序。cpu多级缓存之于内存,就像内存之于硬盘。扩展阅读:http://faculty.kfupm.edu
2013-11-13 15:46:19 876
原创 DHT网络 学习笔记
原文见:http://codemacro.com/2013/05/19/crawl-dht/【学习笔记】原bt下载依赖于tracker,后者不存储资源本身,但存储着拥有资源(片段)的peer列表。这样一来,tracker即扮演着中心节点的角色,一旦移除,会因为无法找到其它peer而下载失败。DHT网络致力于通过去中心化解决上述问题,在tracker失效的情况下仍然能找到其它pe
2013-09-21 18:56:03 1111
转载 Learn CSS Positioning in Ten Steps
原文见 http://www.barelyfitz.com/screencast/html-training/css/positioning/很直观的文章,一次性说清楚了position和float,同时提到了脱离文档流和清浮动的概念。
2013-09-18 11:24:07 871
翻译 图解五种I/O模型
原文见 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模型请求无法立即完成则保持阻塞。
2013-04-07 16:09:48 1496
翻译 d3js入门之数据绑定
引子d3js 是一款上手容易的js类库,专门用于绘制svg图形图表,其关键理念为data-join 意即数据绑定.搞清这个概念非常重要,它将以简洁优雅的形式体现数据驱动编程.以下是Thinking with Joins的拙译 ,原作者Mike Bostock假设你要用D3画一副散点图,因此需要生成一些 SVG circle 元素来直观地展现数据. 你会惊讶地发现D3没有
2013-03-22 21:00:15 2862
原创 一种直观表达系统状态和网络流量传导的图表
d3 是一个基于js和svg的图表类库,里面实例丰富.本想找一个现成的,用于表达系统状态和网络流量传导,可惜最接近需求的这个只支持树状结构Using D3.js to visualise Hierarchical Classification 于是自己动手改造了一番,效果如图所示:特性:同时支持树状和网状结构节点可拖动,数据刷新后位置信息保留完整demo见
2013-03-13 14:42:54 1740 2
原创 网店店主刷信违法吗?
乍一听,好像不违法,最多算违反了网店主和电商平台签订的合同。闲来无事查了下相关的法律法规:商业贿赂犯罪案件“谋取不正当利益”的认定《商业贿赂犯罪意见》第九条拓展了“谋取不正当利益”的范围,增加规定两种类型的不正当利益:(1)谋取违反规章、政策规定的利益;(2)要求对方违反规章、政策、行业规范的规定提供帮助或者方便条件。可见,谋取不正当利益仍以违法性(违规性)判断为基
2013-01-22 16:15:35 1555
原创 jvm线程状态的流转
最初是有这样一个疑问:“使用concurrent包里的lock和传统的synchronized相比,等在同步块之外的线程处于一样的状态吗?是blocked还是waiting?”看图说话:因为lock的实现往往是通过LockSupport.park()方法,因此结论是:传统synchro块:blcokedlock:waitting两者有什么区别呢?wait
2013-01-14 13:55:29 1461
原创 聊聊高性能I/O设计模式与快餐店的点餐机制
最近接触了NIO,类名涉及不少术语,查了下原来这些术语均出自Reactor/Proactor两种经典的IO设计模式。读了《两种高性能I/O设计模式的比较》(附于文末)之后,中午在麦当劳点餐的时候突然意识到I/O过程和点餐这回事儿可以很好地类比:=====================场景1、餐厅闲时点餐的情景:1、客户向接待员请求下单,点套餐(可乐+薯
2013-01-10 21:56:55 2479
原创 javascript Event Loop 小结
原文见:http://heroicyang.com/blog/javascript-event-loop.html读完一遍后,有一点没理解:为什么在执行这句的时候,会追加一个event callback到队尾。 status.innerText = 'doing...please wait...'; 即原文所谓“由于涉及DOM更新,由DOM Change Event触发另一个线程,
2012-09-26 00:29:31 1306 1
转载 一致性hash
基本上,这篇文章已经说得很清楚了。除了关于“虚拟节点”的这一段不够严谨:”平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。hash 算法并不是保证绝对的平衡,如果 cache 较少的话,对象并不能被均匀的映射到 cache 上,比如在上面的例子中,仅部署 cache A 和 cache C 的情况下,在 4 个对象中, cache
2012-09-20 01:05:59 550
原创 数据库中事务的隔离级别 小结
概述本文综合了以下三篇帖子的内容,并汇总:http://baike.baidu.com/view/2943500.htm 对“更新丢失”的描述不到位,在“解决方案”中错误地使用了“瞬间共享读锁”和“共享读锁”。http://blog.csdn.net/w_l_j/article/details/7354530 没有提到“更新丢失”的情况,在READ UNCOMMITTED中没有提到
2012-09-18 23:46:46 960
原创 xml如何探测字符编码
xml如何探测字符编码之前一度以为,xml头部的字符声明部分,即:可以轻易被parser解析,因为这部分可以保证全英文,都是基础的ascii字符,所有编码对这块兼容。看了这篇帖子和xml规范才知道:1、不是所有编码方式都是ascii基础字符兼容的UTF-16 (LE/BE), UCS-2, UCS-4 and EBCDIC are all legal encodin
2012-09-13 00:37:31 935
原创 concurrent包中Lock相关的知识点整理
之前看过一些多线程的东西,今天温习了一下,阅读了Java Concurrent Programming 第四节 锁 又回顾了线程状态的流转,整理如下:与锁相关的切入点:Lock和Condition。Lock是一个接口,它提供了上锁(lock)和解锁(unlock)等抽象方法;concurrent包里提供了许多不同策略的锁的实现,使用它们是为了较传统的synchronized同步块而言,
2012-09-10 10:01:37 903
原创 无锁队列的实现 小结
原文见 cool shell http://coolshell.cn/articles/8239.htmlCAS,即lock-free的一种实现,是构成jdk concurrent包高效并发容器的重要基础,因此认真阅读了一下。读后附注对ABA问题的理解:在DB里,根据一行记录中“最后修改时间”字段的值是否变更,作为更新该行记录时的参照物,是平时常见的一种做法
2012-09-07 16:00:49 676
原创 RPC发展脉络整理
最近看了些rpc相关的背景知识,为了响应coolshell对技术的态度一文,试图将知识点串起来,推导出发展脉络。涉及的关键字有:rpcxml-rpc/soap -> web service -> SOA -> 分布式服务的实现标记语言之间的衍生关系:sgml/html/xmlxml的配套设施:xsd/xpath/xsltjson-rpc轻量的rpc架构风格:rest/restf
2012-09-06 17:26:51 1262
原创 浅析闭包在缓存逻辑中的一次应用
摘要场景、背景 缓存逻辑代码大量重复,需要设法精简,以提高编码效率,降低维护成本。问题本质 一段流程控制的代码大部分重复,小部分不同的情况下如何精简代码。典型情况如缓存逻辑,数据库查询逻辑等。解决方案 使用闭包,通过模板模式配合回调,予以解决。优点:代码精简优雅、使开发人员只需关注变化的业务逻辑而无需关注缓存存取实现的细节。关键字闭包,缓存,底层改造,框架优
2012-07-13 13:35:12 1159
原创 跨域post请求实现方案小结
【名词解释】跨域:https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript同源策略(注意Network Access这一节):http://www.w3.org/Security/wiki/Same_Origin_Policy【问题描述】浏览器出于安全的考量(避
2012-03-07 17:32:52 14915
原创 redis replica时触发了BGSAVE FAIL的问题
今天做redis replica碰到一个问题。执行了slaveof命令后,slave info显示与master断开,查看系统日志显示报错如下:Connecting to MASTER...[17727] 07 Dec 11:31:03 * MASTER SLAVE sync started[17727] 07 Dec 11:31:03 * Non blockin
2011-12-07 14:42:03 4512
原创 Redis 简单HA方案小结
策略摘要主从各一台互备,不做读写分离,备库只同步,不对外提供服务。主库无持久化策略,备库选用rdb。HA方案原有cache01做master,无需persistence以便提供最佳读写性能。新申请cache02做slave,persistence采用RDB,同步自cache01的数据,不对外提供服务,仅作为backup。应用指向F5上的VIP,间接调用master。
2011-12-01 10:23:47 5251 2
原创 Qcon杭州2011 听课笔记&小结
上周有幸参加Qcon大会,一睹大牛风采,会后我重新整理了redis相关的听课笔记,供大家参考。 整体印象此行我听课的主线围绕与社区紧密相关的“(社会化)开放平台”及“大数据和nosql”两个议题展开。两天的课听下来,给我最直观的感受是,目前互联网的发展趋势为:l 社会化(过滤掉信息爆炸产生的干扰,只显示你需要关心或应该关心的内容,过滤参数除了传统的人际圈外,还有地理位置、用户偏好
2011-10-24 16:39:12 1734
原创 对服务化的一些疑问和思考
服务化是今年的重点,在听了其它部门的服务化进程汇报后心中疑问丛生,正好有机会找前辈友群聊了下服务化相关的问题,随手记录于此。前言:首先应该掌握服务化的思想,大多数人一听到服务化马上开始考虑代码层面要做怎样的改动,一头钻进了具体的实现中。类似于,即使使用了java这样OOP的语言,仍可能会写出面向过程风格的代码,从而无法体现OOP的优势。1、对服务化的理解1.1 发生发展的背景及定义
2011-07-13 11:28:03 949
原创 浏览器在传递cookie时与domain有关的策略
最近在排查一个ie6特定版本(2900.2180 xp sp2 gdr)中才会出现的cookie传递问题,因此查阅了rfc2109.http://tools.ietf.org/html/rfc2109 chrome/ff下向a.b.c.com发送数据,不会提交domain为b.c.com的cookie,但会提交.b.c.com的cookie,因为能提交的cookie必须满足domain-m
2011-06-24 22:00:00 1988
原创 spring AOP 学习笔记
术语理解: cross-cutting concerns:散落在业务中,但又与业务无关的代码片段。 ||识别为Aspect|v Aspect:通过整理cross-cutting concerns,需要从中识别出可重用的、功能单一的切面,例如日志/权限检查切面等。 ||============分割线:上面是业务中的概念,下面是代码中的概念=======
2011-05-21 22:51:00 764
转载 关于构造方法与对象的创建
今天看到两篇不错的文章:实例构造器是不是静态方法?答复: 不用构造方法也能创建对象其中提到JVM构造对象的4种方式:new构造函数,反射,反序列化,clone
2011-01-01 20:20:00 702
原创 深入了解DCL
深入了解DCL 深入了解DCL11.什么是DCL12.DCL过去不安全的原因22.1 JMM的缺陷22.2reorder导致的constructor escape问题23尝试修复DCL的方法23.1用volatile修饰字段 resource23.2骗过编译器34.为什么现在一部分DCL是安全的34.1从JSR-13
2010-07-05 17:49:00 2243 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人