Storm笔记:分布式实时计算

Storm是tweeter 开源的,具有实时分布式计算的能力,由closure实现,但是客户端提供了多种语言,当然包括java。

官方wiki:

https://github.com/nathanmarz/storm/wiki/Tutorial

 

 

与Hadoop的比较:

http://blog.csdn.net/larrylgq/article/details/7326058

hadoop是实现了mapreduce的思想,将数据切片计算来处理大量的离线数据数据。hadoop处理的数据必须是已经存放在hdfs上或者类似hbase的数据库中,所以hadoop实现的时候是通过移动计算到这些存放数据的机器上来提高效率

而storm不同,storm是一个流计算框架,处理的数据是实时消息队列中的,所以需要我们写好一个topology逻辑放在那,接收进来的数据来处理,所以是通过移动数据平均分配到机器资源来获得高效率。

http://www.searchtb.com/2012/09/introduction-to-storm.html

http://www.ibm.com/developerworks/cn/opensource/os-twitterstorm/

 

比较实用的DRPC

https://github.com/nathanmarz/storm/wiki/Distributed-RPC

分布式部署

https://github.com/nathanmarz/storm/wiki/Running-topologies-on-a-production-cluster

每个实例都要部署你的处理数据逻辑的代码。

DRPC的server其实只需一个,它将工作转发到storm分布架构中了。所以我觉得server可以直接本地方式运行。

http://blog.csdn.net/victory0508/article/details/8717704

http://www.infoq.com/cn/news/2011/09/twitter-storm-real-time-hadoop

http://xumingming.sinaapp.com/category/storm/

Continue reading Storm笔记:分布式实时计算

Java Cookie 的getPath, 以及request.getCookies()

向客户端写cookie,如果不指定cookie path,则默认是请求的path。

而服务端request.getCookies()获得的cookie则是相对于/下所有的cookie,因此可能有多个同名cookie只是path不一样,然而,cookie.getPath()总是返回null,这个让你无法判断到底是哪个path下的cookie,因此,同名cookie几乎没用,/下最好就一个名字的cookie就只一个。这样你取cookie也不会取到别的path下的同名cookie了。

 

firebug默认cookie是只显示当前path下的cookie, 调试时要注意,这个可把我坑了。

Continue reading Java Cookie 的getPath, 以及request.getCookies()

mysql 查询不区分大小写的问题

mysql 默认varchar是不区分大小写的:

 

select * from A where name = ‘a’

会将name=’A’也包括在内。

 

解决方法:

建表时

create table table_name(  
     a varchar(20) binary   
)

 

也可以指定utf8_bin

`a` VARCHAR(300) NOT NULL DEFAULT '' COLLATE 'utf8_bin',

 

使用hedisql建表的话,设置字段的排序为utf8_bin和上面效果一样。

 

utf8_bin: compare strings by the binary value of each character in the string

Continue reading mysql 查询不区分大小写的问题

httpclient 多线程与cookie

HttpClient4.2之后,PoolingClientConnectionManager说是实现了池的连接管理,也是线程安全的,这个对于cookie来说则不是。

 

场景:

请求同一个链接,但是需要以不同的session 来请求,那么使用PoolingClientConnectionManager产生的同一个httpclient去访问,会使用相同的cookie。

name="code" class="java">PoolingClientConnectionManager connManager = new PoolingClientConnectionManager( registry);

Continue reading httpclient 多线程与cookie

炒青菜的窍门

我父亲告诉我,青菜好吃很简单,热锅,冷油,大火,用猪油。

 

 

意思就是锅要烧热,又不能烧太热,要用猪油炒青菜,火要大。

 

我的实际经验证明确实如此。

 

青菜中豇豆和苦瓜容易炒出青气,有些人喜欢这味道,我不喜欢。大多数人觉得隔夜的现苦瓜现豇豆似乎更好吃。

 

我的经验:

炒豇豆水不能给早了,豇豆下锅后,大火翻炒,看到全部豇豆都炒出油绿色,还要继续炒,不断点水以免局部烧糊粘锅,等到豇豆像焉了,尝一尝,觉得全部软了再放水放盐煮,香味出来了就可以起锅了。

 

炒苦瓜叶也差不多,大火,点水炒,要保持高温,尝尝觉得全部软了再起锅,这样新鲜味道还在,也好吃。

Continue reading 炒青菜的窍门

自己做饮料

夏日炎炎,喝水喝不下去,但是总是觉得想喝点什么,成天喝饮料贵不说,还担心添加剂对身体健康有坏处,这里链接几个打算自己做的饮料,准备尝试一下。

 

所选的都是容易做的:

 

健康好喝的饮料自己做----洛神花雪梨红枣汁(解暑,润燥,止咳,清脂)

http://blog.sina.com.cn/s/blog_54a625bf01017rmd.html

 

这个我到中药店去问,都不知道什么是洛神花,可操作性不是很好。

 

节后刮油食单2---山楂决明子清脂茶(强烈推荐

http://blog.sina.com.cn/s/blog_54a625bf0100hbev.html

决明子味道闻起来不怎么样啊……

 

最适合夏天喝的饮料——酸梅汤

http://jingyan.baidu.com/article/8065f87fce8e1e23312498c0.html

这个我做过,原材料价格大概10块钱,还不算时间,水和煤气,结果做出来的味道并不好喝,还不如超市买来的快速美味,01AB349F

Continue reading 自己做饮料

微波炉制香酥黄豆

最近一段时间,知识没什么长进,厨艺倒熟练了不少,危险危险00078DDD

 

吃牛肉面的时候那里面的炸黄豆吃起来真香,嘎嘣嘎嘣的,其实也可以做小菜,零食,没事嗑几颗……

 

于是网上找了制作方法,制作很成功,就是那个味道:

1:干黄豆洗净后,放入水中浸泡三小时以上,水要足够,一般漫过豆子一指节。

 

2:去掉水,高火一分钟去掉残余的水分,搅拌挥发水蒸气。

 

3:倒入少量油,搅拌,看到豆子上油亮亮的即可。

 

4:平摊豆子到盘中,放入微波炉高火3分钟拿出来搅拌再摊平,这样重复3次,一共是9分钟。

 

这样豆子就做好了,还有个窍门就是,冷的差不多了就放入冰箱里放着,更酥脆。

Continue reading 微波炉制香酥黄豆

easyXDM使用

easyXDM是个javascript跨域解决方案,支持包括ie6的主流浏览器。其实现机制针对ie和html个不同:

http://easyxdm.net/wp/

文档:

https://github.com/oyvindkinsey/easyXDM#readme

 

这个文档先仔细读,你会发现首先,使用easyXDM需要在两个域页面上都写代码,那么你要有两个域的代码控制权。这一下子就明白了吧,还是老套路,没有那么纯洁的跨域方案的。不需要flash代码不是说不依赖flash,上面写得清楚要求flash6以上。

 

入门教程倒是简单:

http://easyxdm.net/wp/category/getting-started/

 

其consumer是发起会话的页面,它会指定remote参数,easyXDM会依据remote创建一个隐藏的iframe,其src指向的就是remote的值,通过向这个iframe发跨域消息来达到目的。

 

不过我怎么总觉得发起会话的应该是provider呢,接收消息的remote才是consumer吧?

 

 

 

对于大多数场景,是一个页面A包含了一个跨域的iframe页面B,我们想这两个页面互相通信,要这样做,那就要将remote指向B,你可以通过container来指定iframe的包含容器,通过props来制定这个iframe的样式,https://github.com/oyvindkinsey/easyXDM#how-to-use-easyxdm

 

 

其他:

local:的参数是要指向本域的name.html, 这个是ie6,7才需要的。

我测试ie8以下就有错误,不知什么情况。

Continue reading easyXDM使用

highcharts使用

之前用Rapheal画图表,自己写,一个两个还好,这次要画六个图表就有点够呛了,发现highchart挺不错的。

这里是几个web图表比较:

http://socialcompare.com/en/comparison/javascript-graphs-and-charts-libraries

highchart还是蛮多人支持的,只不过商业用途需要收费:

http://shop.highsoft.com/highcharts.html

在线文档:

http://api.highcharts.com/highcharts

 

这个在线demo可以直接jsfiddle编辑

http://www.highcharts.com/demo/

 

 

 

数据的格式:

http://api.highcharts.com/highcharts#series.data

每个点附加自定义数据

如果你想传自定义数据,则应传对象,但要有y,(如果x轴不是category,则要传x)

这样如果每个point格式为{x:1,y:2,mydata:’abc’},则在tooltip的formatter回调中可这样this.point.mydata获得mydata(shared为false时,一般建议shared为false,除非每个tip里要获得所有此x坐标上y点,这时就是this.point[i].mydata。)

x,y轴都可以是datetime类型,但是传入的值应该是Date.getTime()的值。

tickInterval是定义间隔的,但是如果是负数则会显示不正常。

 

 

gauge chart

需要highharts-more.js,point.push方法如果传入的是{}则会改变指针颜色,可能是个bug,传数值就不会变。

相关示例:

http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/gauge-dial/

http://jsfiddle.net/CVJLV/

但是这两个都不能解决update传入object问题,最后只好设置全局样式:

name="code" class="js">Highcharts.setOptions({

Continue reading highcharts使用

Pagination


Total views.

© 2013 - 2019. All rights reserved.

Powered by Hydejack v6.6.1