<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[四火专栏]]></title><description><![CDATA[热爱设计、编码，热爱纯粹的软件]]></description><link>https://blog.youkuaiyun.com/RayChase</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; RayChase]]></copyright><item><title><![CDATA[泛型趣谈]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84518616</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84518616</guid><author>RayChase</author><pubDate>Wed, 08 Jan 2014 21:42:20 +0800</pubDate><description><![CDATA[
Java中的泛型带来了什么好处？规约。就像接口定义一样，可以帮助对于泛型类型和对象的使用上，保证类型的正确性。如果没有泛型的约束，程序员大概需要在代码里面使用大量的类型强制转换语句，而且需要非常清楚没有标注的对象实际类型，这是容易出错的、恼人的。但是话说回来，泛型可不只有规约，还有很多有趣的用法，容我一一道来。
 
泛型擦除
Java的泛型在编译阶段实际上就已经被擦除了（这也是它和C#泛型...]]></description><category></category></item><item><title><![CDATA[java.util.concurrent并发包诸类概览]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84517396</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84517396</guid><author>RayChase</author><pubDate>Sat, 04 Jan 2014 14:42:47 +0800</pubDate><description><![CDATA[
java.util.concurrent包的类都来自于JSR-166：Concurrent Utilities，官方的描述叫做“The JSR proposes a set of medium-level utilities that provide functionality commonly needed in concurrent programs. ”。作者是大名鼎鼎的Doug Lea，...]]></description><category></category></item><item><title><![CDATA[排序算法一览（二）：归并类排序、分布类排序和混合类排序]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84514308</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84514308</guid><author>RayChase</author><pubDate>Sun, 22 Dec 2013 22:04:22 +0800</pubDate><description><![CDATA[
归并类排序
归并排序（Merge Sort）
归并排序是一种分治法，它反复将两个已经排序的序列合并成一个序列（平均时间复杂度O(nlogn)，最好时间复杂度O(n)）：

申请空间，使其大小为两个已经排序序列之和，该空间用来存放合并后的序列；
设定两个指针，最初位置分别为两个已经排序序列的起始位置；
比较两个指针所指向的元素，选择相对小的元素放入到合并空间，并移动指针到下一位置；
重...]]></description><category></category></item><item><title><![CDATA[排序算法一览（一）：交换类、选择类和插入类排序]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84513432</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84513432</guid><author>RayChase</author><pubDate>Wed, 18 Dec 2013 22:31:53 +0800</pubDate><description><![CDATA[
最近在复习常用排序算法发现了下面这个罪恶的排序方法列表页面，我被那些有趣的排序方法诱惑了，就把上面介绍的各种排序方法都整理了一遍（我觉得维基百科比其它我看过的算法书都要易懂一些），前半部分可以说还乐在其中，后半部分就有些厌烦了，不过最后总算是坚持看完了。以下是第一部分，包括交换类排序、选择类排序和插入类排序。

交换类排序 - 冒泡排序 鸡尾酒排序 奇偶排序 梳子排序 侏儒排序 快速排序 臭皮...]]></description><category></category></item><item><title><![CDATA[谈谈足球青训、中国教育以及工程师培养]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84511911</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84511911</guid><author>RayChase</author><pubDate>Fri, 13 Dec 2013 08:22:42 +0800</pubDate><description><![CDATA[
我从98年世界杯就开始看球了，从最早国内的申花球迷，到后来长期看英超诸强的足球、西甲双雄的足球，我也算是一介有一点儿球龄的老球迷。一直以来我很想说一说关于足球青训的话题，今年在莫耶斯带领下的曼联，球踢得无比难看，比赛输得体无完肤，我觉得我找到了一个契机。比赛看得多了，也就不那么容易激动，看球更加理性。和许许多多竞技运动一样，你无法准确预测一场比赛的结果，但是长此以往的比赛分析下来，能看得到许多问...]]></description><category></category></item><item><title><![CDATA[Trie树和其它数据结构的比较]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84511052</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84511052</guid><author>RayChase</author><pubDate>Tue, 10 Dec 2013 13:52:17 +0800</pubDate><description><![CDATA[

Trie树，又叫做前缀树或者是字典树，是一种有序的树。从空字符串的根开始，往下遍历到某个节点，确定了对应的字符串，也就是说，任意一个节点的所有子孙都具备相同的前缀。每一棵Trie树都可以被看做是一个简单版的确定有限状态的自动机（DFA，deterministic finite automaton），也就是说，对于一个任意给定的属于该自动机的状态(①)和一个属于该自动机字母表的字符(②)，都可...]]></description><category></category></item><item><title><![CDATA[给我一把榔头，满世界都是钉子]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84508000</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84508000</guid><author>RayChase</author><pubDate>Fri, 29 Nov 2013 11:33:08 +0800</pubDate><description><![CDATA[
一篇文章存成一个巨大的文件，总共大约有一亿个单词，要找出里面重复次数最多的。怎么做？
Hadoop是一把威力巨大的榔头，在使用过Hadoop之后，看着任何东西都想把它给map reduce了。有一个关于Jeff Dean的小笑话，说在睡不着觉的时候，一般人是数羊，Jeff Dean是map reduce他的羊群。所以，我的办法是，把这个文件拆分成若干个小文件，在map过程用hash算法保证相同...]]></description><category></category></item><item><title><![CDATA[不同团队的困惑]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84506335</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84506335</guid><author>RayChase</author><pubDate>Sat, 23 Nov 2013 12:11:34 +0800</pubDate><description><![CDATA[
小S是一名新员工，他和很多踌躇满志的大学毕业生一样，实习+工作，他来到了一家非常对口自己爱好的公司，来到了一支温暖的团队A，这支30人的大团队由老员工和新员工混合组成，年龄结构复合，有男有女，有从二十几岁到四十几岁的程序员，做的视频编解码项目。整个项目组的成员都是视频编解码领域的能手或专家，最多的有10年的相关经验，也有几项专利，小S觉得这样的人应该很耐得住寂寞，有很深的造诣。
有一位导师手...]]></description><category></category></item><item><title><![CDATA[Hadoop无法解决的问题]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84498256</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84498256</guid><author>RayChase</author><pubDate>Mon, 11 Nov 2013 21:55:11 +0800</pubDate><description><![CDATA[
因为项目的需要，学习使用了Hadoop，和所有过热的技术一样，“大数据”、“海量”这类词语在互联网上满天乱飞。Hadoop是一个非常优秀的分布式编程框架，设计精巧而且目前没有同级别同重量的替代品。另外也接触到一个内部使用的框架，对于Hadoop做了封装和定制，使得更满足业务需求。我最近也想写一些Hadoop的学习和使用心得，但是看到网上那么泛滥的文章，我觉得再写点笔记一样的东西实在是没有价值。倒...]]></description><category></category></item><item><title><![CDATA[实际技术选型的考虑因素]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84492963</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84492963</guid><author>RayChase</author><pubDate>Sun, 27 Oct 2013 10:47:03 +0800</pubDate><description><![CDATA[
最近在工作中我需要把数据从公共的Data Warehouse（数据仓库）导出来，放到属于我们team自己账号的云端存储资源中去，然后再在我们的应用中查询这样的资源。需要导出数据是因为直接从Data Warehouse查询数据是一个缓慢而且异步的过程，而我们的应用数据查询需要实时性。现在要解决这个问题有一些AWS的服务可供我们可以选择，基本上分成了两大类：
第一类是存储和内容分发（Storage...]]></description><category></category></item><item><title><![CDATA[Java8集合中的Lambda表达式]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84490346</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84490346</guid><author>RayChase</author><pubDate>Fri, 18 Oct 2013 22:31:05 +0800</pubDate><description><![CDATA[
本文翻译自《Java 8 Explained: Applying Lambdas to Java Collections》。
Lambdas表达式是Java 8的主题，在Java平台上我们期待了很久。但是，如果如果我们不在集合中使用它的话，就损失了很大价值。把现有接口迁移成为lambda风格接口的问题已经通过default methods，也就是defender methods解决了。在这篇文...]]></description><category></category></item><item><title><![CDATA[换个角度思考问题]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84485473</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84485473</guid><author>RayChase</author><pubDate>Thu, 03 Oct 2013 21:58:12 +0800</pubDate><description><![CDATA[
最近在看一本书，叫做《思考的乐趣》，第26节“我最爱的证明”，里面介绍了这样一则有趣的问题（文章链接在此）：

设想一个平面上布满间距为1的横纵直线，形成由一个个1×1正方形组成的网格。任意给一个面积小于1个单位的图形，证明这个图形总能放在网格中而不包含任何一个格点。


初看这个论断，觉得似乎是正确的，但又不知从何下手。文中指出证明的思路很巧妙，让人感到数学的美妙。我的感触是，文中的...]]></description><category></category></item><item><title><![CDATA[留心那些潜在的系统设计问题]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84481322</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84481322</guid><author>RayChase</author><pubDate>Thu, 19 Sep 2013 23:37:26 +0800</pubDate><description><![CDATA[
在系统设计阶段考虑全面很难，有许多人倾向于把整个设计分成若干阶段，在迭代中完成整个设计，这本身是非常好的，但是，就如同“先做出来，以后再优化”这样的经典谎言一样，本身并无错，只是许多程序员都不习惯于真正的迭代设计和迭代优化。举例来说，有一个日益复杂的类，每个人都修改一点点，一直到最后都没有人愿意去做重构，大家的心态都是一样的：“我只修改了一点点，为什么要我去动那么大的刀，于我没有任何好处”。我不...]]></description><category></category></item><item><title><![CDATA[Lombok介绍]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84477567</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84477567</guid><author>RayChase</author><pubDate>Sun, 08 Sep 2013 23:21:14 +0800</pubDate><description><![CDATA[
最初我是在公司内部的broadcast上面听到有principal介绍到它的，和AspectJ归在一起。看了几个例子之后觉得有点意思，就去Lombok的官网上扒了一下。我们已经知道向AspectJ、CGLib等等都可以做到对已有Java代码在字节码层级的改变，无论是编译时期静态织入还是运行时期动态代理，对于我们使用AOP来减少那些重复性编码的劳动、增加切面性质的逻辑颇有帮助。这里有几个概念：
...]]></description><category></category></item><item><title><![CDATA[不安分的工程师]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84475495</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84475495</guid><author>RayChase</author><pubDate>Mon, 02 Sep 2013 20:30:16 +0800</pubDate><description><![CDATA[
在超级杯中，拜仁和切尔西战成平手，点球大战中，20岁的年轻的球员卢卡库站出来罚球，遗憾的是罚失点球，令整支球队失败，丢掉冠军。对于失落和愧疚的年轻人，切尔西的传奇射手德罗巴在Instagram上鼓励了他：

“只有那些从不踢点球的人才不会罚失点球，罚点球你足够强大。你需要从中学习，我也有过类似的经历，在莫斯科的决赛中的红牌，还有半决赛对阵巴塞罗的比赛。坚持不懈的奋斗，更好的日子一定会到来。你...]]></description><category></category></item><item><title><![CDATA[JavaScript 3D图表]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84472524</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84472524</guid><author>RayChase</author><pubDate>Sat, 24 Aug 2013 19:36:38 +0800</pubDate><description><![CDATA[
在说3D图表以前，首先要明确两个概念，一个是数据的维度，一个是呈现数据载体的维度。对于数据的维度，一维的数据呈现，但是呈现的载体是二维的平面图，比如饼图：

已经能够很清晰地观察到数据的分布情况。数据如果增加一个维度，变成二维，呈现载体依然是二维的平面图：

数据表达依然是清晰的。但是，倘若再增加一维，这个时候就面临了两个问题：

数据的维度增加，复杂性也增大了；
计算机发展到现在，...]]></description><category></category></item><item><title><![CDATA[工程师的生活]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84470173</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84470173</guid><author>RayChase</author><pubDate>Sat, 17 Aug 2013 12:09:07 +0800</pubDate><description><![CDATA[
我忽然很好奇，想知道其他软件工程师的生活是什么样的？人永远都没有活在别人心中的形象那么绚烂，生活中总有无数烂事烦事需要处理，但是每个人都有自己享受生活的方式。逛了逛了各式技术博客和论坛，我发现大家似乎都太严肃了，太谦逊了，太学术了。做软件本来是一件很有意思的事情，但是这些帖子和文章无非就包括这么几种：

技术文章，不解释，这部分当然是大头，虽然技术文章普遍不受欢迎；
牢骚，喵了个咪的薪水低...]]></description><category></category></item><item><title><![CDATA[Memcached调优]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84465377</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84465377</guid><author>RayChase</author><pubDate>Fri, 02 Aug 2013 19:56:24 +0800</pubDate><description><![CDATA[
项目中有一个对实时响应性比较高的服务，引入了Memcached以减少延迟和减少数据库压力。但是期间遇到了一些问题，这里记录一些调优细节。
 
客户端选择

最开始我使用的是Memcached Java Client，但是最后放弃了，放弃原因包括：


有时会出现的“No Thread For Socket”异常，我记录在这里；
它不支持NOREPLY模式（在这种模式下，更新缓存的set...]]></description><category></category></item><item><title><![CDATA[使用堆外内存]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84463479</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84463479</guid><author>RayChase</author><pubDate>Sun, 28 Jul 2013 21:30:15 +0800</pubDate><description><![CDATA[
有时候对内存进行大对象的读写，会引起JVM长时间的停顿，有时候则是希望最大程度地提高JVM的效率，我们需要自己来管理内存（看起来很像是Java像C++祖宗的妥协吧）。据我所知，很多缓存框架都会使用它，比如我以前使用过的EhCache（给它包装了个酷一点的名字，叫BigMemory），以及现在项目中的Memcached。在nio以前，是没有光明正大的做法的，有一个work around的办法是直接...]]></description><category></category></item><item><title><![CDATA[自由地生活和工作]]></title><link>https://blog.youkuaiyun.com/RayChase/article/details/84463141</link><guid>https://blog.youkuaiyun.com/RayChase/article/details/84463141</guid><author>RayChase</author><pubDate>Sat, 27 Jul 2013 01:17:19 +0800</pubDate><description><![CDATA[
这篇文章，算是理清和记录了一些我一直以来想说的话。在昨天的课程上，我们谈论目标、生活方式和工作，特别地，有一个具体问题——“五年后的你会是怎样的？”其实我很好奇其他人的想法都是如何的，起码于我来说，这是一个很有趣的问题。
我不既不是那种得过且过、无所追求的人，也不是具备钢铁神经、顽强意志的人，更不是拥有无比天赋、才华横溢的人。我大概不可能成为什么名人伟人，但是还是有小小的野心和抱负，想做一些符...]]></description><category></category></item></channel></rss>