<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Sefler的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Sefler</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Sefler]]></copyright><item><title><![CDATA[博客已经搬迁至 "seflerzhou.net"]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/39319641</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/39319641</guid><author>Sefler</author><pubDate>Tue, 16 Sep 2014 16:57:46 +0800</pubDate><description><![CDATA[博客已经搬迁至 "seflerzhou.net"]]></description><category></category></item><item><title><![CDATA[一种基于CAS的无锁并发HashTable设计及C代码实现]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/8779559</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/8779559</guid><author>Sefler</author><pubDate>Sun, 12 May 2013 12:27:35 +0800</pubDate><description><![CDATA[在多线程环境下，我们常常用Java的ConcurrentHashMap，但其实这个Map仍然是要使用锁的，只不过使用了一种被称为StripeLock的方式。这里我们试着实现一个完全无锁的HashTable。

首先我们必须弄清楚HashMap有哪些操作，哪些地方是临界区（CriticalRegion），哪里不是。一个完整的HashMap无非就以下几种操作：
 
1． 
插入数据（PUT）]]></description><category></category></item><item><title><![CDATA[Subversion原理]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/8332110</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/8332110</guid><author>Sefler</author><pubDate>Wed, 19 Dec 2012 15:43:41 +0800</pubDate><description><![CDATA[版本号
Subversion（以下简称svn）是使用版本号来区分不同的文件版本的。对于其来说，每一次commit都会生成一个新的版本号并且是全局的，为了保障这个性质，svn要求每一次数据操作都是原子的。如图：




这些文件者存在$repoBase$/repos/db/revs/ 目前下。
存储结点
Svn使用结点表示每一个文件或目录，其数据存储结构类似于文件系统但有又不一样的地]]></description><category></category></item><item><title><![CDATA[Java正则引发的思考]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/8091093</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/8091093</guid><author>Sefler</author><pubDate>Fri, 19 Oct 2012 19:29:39 +0800</pubDate><description><![CDATA[pre: 感谢 九任 对我的支持~
情况回放：
上周预发机器出了一个问题，CPU不定时会近100%满负载运行。重启以后就会恢复，之后又会到达100%，而且不会自恢复。

首先想到的是程序出现了死循环，于是用jstack把栈打印出来，发现业务线程都停在了regex相关的代码上，有死循环的样子。

查看栈，发现一切都是由ClientFilter这个类开始，其使用了matcher.match]]></description><category></category></item><item><title><![CDATA[Java Worker 设计模式]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/7989159</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/7989159</guid><author>Sefler</author><pubDate>Mon, 17 Sep 2012 20:18:20 +0800</pubDate><description><![CDATA[Worker模式
想解决的问题
异步执行一些任务，有返回或无返回结果
使用动机
有些时候想执行一些异步任务，如异步网络通信、daemon任务，但又不想去管理这任务的生命周。这个时候可以使用Worker模式，它会帮您管理与执行任务，并能非常方便地获取结果
结构
很多人可能为觉得这与executor很像，但executor是多线程的，它的作用更像是一个规划中心。而Worker则只是个搬运工]]></description><category></category></item><item><title><![CDATA[性能测试 工具 TProfile 代码简析]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/7887528</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/7887528</guid><author>Sefler</author><pubDate>Mon, 20 Aug 2012 19:33:36 +0800</pubDate><description><![CDATA[对TProfile （https://github.com/taobao/TProfiler）产生了兴趣，于是就下下来研究了一下：
非常简单小巧，代码质量也很高，最多20个class。其实现的核心原理就是利用javaAgent，在premain函数中使用java.lang.instrument.ClassFileTransformer，对允许采样的类生成org.objectweb.asm.Cla]]></description><category></category></item><item><title><![CDATA[Tomcat 5源码分析]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/7826777</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/7826777</guid><author>Sefler</author><pubDate>Fri, 03 Aug 2012 13:45:35 +0800</pubDate><description><![CDATA[老话题了，不过经典代码分析总是能学到很多东西。 PS：图都存在google drive里的，如果你看不到，说明你已经被HX！！过些日子把所有的图都移过来~^ ^
目录
代码准备与DEBUG调试配置
总体结构
容器与生命周期管理思想
HTTP（TCP）连接管理详细
Deployer模块详细
资源请求与响应
servlet请求
servlet 请求响应
servlet 加载与管理]]></description><category></category></item><item><title><![CDATA[深入理解Linux内存管理机制（一）]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/7719319</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/7719319</guid><author>Sefler</author><pubDate>Thu, 05 Jul 2012 17:08:31 +0800</pubDate><description><![CDATA[深入理解Linux内存管理机制（一）通过本文，您即可以：
1. 存储器硬件结构；
2.分段以及对应的组织方式；
3.分页以及对应的组织方式。

注1：本文以Linux内核2.6.32.59本版为例，其对应的代码可以在http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.32/linux-2.6.32.59.tar.bz2找到。]]></description><category></category></item><item><title><![CDATA[自己写的velocity-edit Eclipse插件(Update: 2012-9-9)]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/7660959</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/7660959</guid><author>Sefler</author><pubDate>Wed, 13 Jun 2012 21:20:01 +0800</pubDate><description><![CDATA[其实也不是完全自己写的，是在velocity-web edit上改来的，那东西自2006年以来就没有更新过。所以自己接着搞，主要是添加了分词补全（很爽的东东）！
详见：http://code.google.com/p/velocity-edit/
PS:网站里面的示例图片可能被和谐，因为是放在picasa里面的。影响不大。


也可以到这里下载：http://marketplace.ec]]></description><category></category></item><item><title><![CDATA[手动构造HTTP请求实例讲解]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/7540038</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/7540038</guid><author>Sefler</author><pubDate>Fri, 11 May 2012 15:20:35 +0800</pubDate><description><![CDATA[通过本文，你能明白：
        1. HTTP 数据请的的方式GET与POST；
        2. GET与POST请求体的结构；
        3. 常用的HTTP请求头及其意义。
1. 带参数的普通页面请求
如果我们想向百度请求查询关键字“你好世界”并将结果页返回。
GET方式
浏览器地址栏中直接输入：http://www.baidu.com/s?wd=%C4%E3%]]></description><category></category></item><item><title><![CDATA[细说用例图中的关系]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/7310584</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/7310584</guid><author>Sefler</author><pubDate>Thu, 01 Mar 2012 19:57:10 +0800</pubDate><description><![CDATA[[2010-10-03]

UML的用例图（Usecase Diagram）是一种很好的捕获需求的方法（比起古老的CRC），但在实际运用中却很少有人 真正能正确地使用它们。这次我要讲的是用例图中include、extend、generalizaion与association四种常见关系的用法。

一个用例是描述用户与系统之间的一个交互场景，Bob去ATM取钱，John打电话给10010寻问]]></description><category></category></item><item><title><![CDATA[使用Command与Factory模式消除业务代码中的if,else语句]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/7310218</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/7310218</guid><author>Sefler</author><pubDate>Thu, 01 Mar 2012 17:10:05 +0800</pubDate><description><![CDATA[[2010-9-10]
  商业软件的一个特点就是拥有众多的业务逻辑，在进行一次操作时都会检查若干业务约束（如是否已登录等）。一般的方式就是采用 大量的if+else进行判断。

if (condition) {
    // do something
    return false;
} else if (condition) {
    // do something
    re]]></description><category></category></item><item><title><![CDATA[自己写的J2EE通用URL重定向工具]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/7263938</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/7263938</guid><author>Sefler</author><pubDate>Thu, 16 Feb 2012 12:13:40 +0800</pubDate><description><![CDATA[[2011-5-8]

这次项目需要对一个URL进行重写，一个简单的方法就是针对本次的应用对请求的URL做一个特殊的处理。但是为了以后扩展方便，我把他写成了一个通用的URLRewrite工具类，理论上是支持各种框架的。项目的地址是：http://code.google.com/p/eagle-beak/, GPLv2协议，有兴趣的可以研究一下。

这里我给大家举个例子如何使用我的URLRe]]></description><category></category></item><item><title><![CDATA[将自己积累的一些重构经验写成半本书]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/7243699</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/7243699</guid><author>Sefler</author><pubDate>Wed, 08 Feb 2012 21:54:37 +0800</pubDate><description><![CDATA[从去年开始就在构想这个，差不多半年啦~期间还要多谢卷爷的大力支持~：）

http://issuu.com/sefler/docs/refactoring_patterns

如果觉得国外的太慢，这里还有个国内的：http://www.docin.com/p-218579908.html]]></description><category></category></item><item><title><![CDATA[Eclipse 自动提示(auto complete)强化]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/7243695</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/7243695</guid><author>Sefler</author><pubDate>Wed, 08 Feb 2012 21:52:14 +0800</pubDate><description><![CDATA[2011 下半年的时候，对Eclipse的自动提示做了点小小的修改，一直没有时间发出来。有兴趣的同学可以用一下。







http://www.box.com/s/c8oeb5asxozej3124x0g

替换plugins目录下对应的jar包就可以了，注意，只支持3.7.1，因为更改了jdt core






update 2012-4-9, 支持e]]></description><category></category></item><item><title><![CDATA[使用Command与Factory模式消除业务代码中的if,else语句]]></title><link>https://blog.youkuaiyun.com/Sefler/article/details/83736297</link><guid>https://blog.youkuaiyun.com/Sefler/article/details/83736297</guid><author>Sefler</author><pubDate>Sun, 24 Oct 2010 02:03:12 +0800</pubDate><description><![CDATA[http://www.sefler.net/blog.aspx?id=50]]></description><category></category></item></channel></rss>