- 浏览: 2474079 次
- 性别:
- 来自: 杭州
最新评论
-
roy2011a:
https://github.com/ebottabi/sto ...
storm的序列化问题及与spring的结合方式 -
roy2011a:
能抗能打 写道哥们儿,你好!能共享下那个storm与sprin ...
storm的序列化问题及与spring的结合方式 -
Alick1:
兄弟,你之前是不是在深圳的正阳公司呆过啊?
storm的ack和fail -
liuleixwd:
先点个赞,写的非常好!有个问题请教下,如果我再bolt里不用e ...
storm的ack和fail -
yao-dd:
solr的facet查询
文章列表
做一个苦逼的Java攻城师, 我们除了关心系统的架构这种high level的问题, 还需要了解一些语言的陷阱, 异常的处理, 以及日志的输出, 这些"鸡毛蒜皮"的细节. 这篇文章是JCP成员, Tomasz Nurkiewicz( http://nurkiewicz.blogspot.com/ )总结的10条如何正确使用日志的技巧(参见原文). 跟那篇"java编程最差实践"一样, 也是针对一些细节的, 因为日志是我们排查问题, 了解系统状况的重要线索. 我觉得对我们平常coding非常有借鉴意义. 所以转换成中文, 加深一下印象, 也作为自己工作的一个 ...
在Lucene/Solr的SVN trunk中的SolrCloud已经可用, 在即将发布的4.0版本中将正式包含.
目前SolrCloud已经成熟, 可以支持分布式索引和分布式搜索. 下面是我们一个项目采用新的SolrCloud的部署结构图:
看起来是否非常简单? 下面我们看看内 ...
这里的观点非常值得探讨, 所有的产品代码就像是一项投资, 有些代码的价值大, 因此需要写更多的单元测试来提高测试覆盖率. 另外有些代码的单元测试编写非常困难, 下面的一些因素可以用来帮助我们理解每个单元测试的价值:
1.代码被用的次数和它的价值成正比.
2.被依赖程度决定测试价值. 如果其他代码严重依赖被测试代码, 那么对应的测试价值大, 如果被测试代码严重依赖其他代码, 那么这个代码将难以测试. 而且不易于发现问题.
3.对I/O(网络, DB, 文件)依赖的代码难以测试, 需要使用mock技术, 而mock代码工作量大, 维护成本高
4.多线程代码更难以测试.
5.代码越复杂越需要测试.
6 ...
在Google Guava 10版本引入了EventBus, 它主要用来简化我们处理生产/消费者编程模型.
基本用法
使用Guava之后, 如果要订阅消息, 就不用再继承指定的接口, 只需要在指定的方法上加上@Subscribe注解即可:
public class EventListener {
public int lastMessage = 0;
@Subscribe
public void listen(OurTestEvent event) {
lastMessage = event.getMessage();
...
通过下面的例子了解Guava Supplier的用法.在做单元测试的时候, 我们可能需要Mock掉一些对外部资源的依赖. 比如时间, 随机数, 系统文件访问.
下面是将要测试的代码, 将当前时间输出:
@Controller
@RequestMapping(value = "/time")
@VisibleForTesting
class TimeController {
@RequestMapping(value = "/current", method = RequestMethod.GET)
@ResponseBody
...
在未出现开源搜索引擎以前, Doug Cutting整了个Lucene, 随后Yonik Seeley写了一个Solr, 在2010年 Shay Banon发布了ElasticSearch, 大概在两年前, 我们迎来了Sensei, 最近他们发布了1.0版本, 下面通过@sematext对LinkedIn的搜索架构师John Wang的一个采访. ...
原文地址:http://www.odi.ch/prog/design/newbies.php
每天在写Java程序, 其实里面有一些细节大家可能没怎么注意, 这不, 有人总结了一个我们编程中常见的问题. 虽然一般没有什么大问题, 但是最好别这样做. 另外这里提到的很多问题其实可以通过Findbugs( http://findbugs.sourceforge.net/ )来帮我们进行检查出来.
字符串连接误用
错误的写法:
String s = "";
for (Person p : persons) {
s += ", " + p.getNa ...
这篇文章通过用一个如何处理feed数据的应用场景来说明为什么会出现Storm实时计算框架, 对我们自己的技术选型和系统架构设计非常有参考价值.
原文在这里
Storm 成为最近开源社区的一个热门, 其作者Nathan Marz 所在的公司Backtype现在已经被Twitter收购. 该项目的wiki 非常完善. 从这里对Storm做一个全面了解.
目前的场景是这样的, 通过解析xml feed来生成索引数据. 已经通过搭建hadoop来批量生成全量索引. 但是如果需要实时更新数据增量生成索引该如何处理呢?
1.最简单单机方案
用一台机器持续抓取feed数据, 但是这个会受到单机的处理和 ...
Storm作为Twitter开源的实时计算框架, 已经成为big data下一个热点. 下面是一些主要特性:
简单的编程模型: 类似MapReduce, 不过MR用来降低并行批量处理的复杂性, 而Storm用来简化实时处理模型.
支持多种编程语言: 目前支持Clojure, Java, Ruby, Python
容灾高可用: Strom管理整个worker集群, 允许单节点失败
支持水平扩展:支持多线程, 进程, 服务器平行处理
高可靠:保证消息能被全部处理, 一旦执行任务过程中失败, 能从失败处开始对消息进行回放.
高效:用ZeroMQ作为底层消息队列, 保证消息能快速被处理
支持本地模式: ...
高性能应用构建模式解析
- 博客分类:
- Distributed
原文:http://java.sys-con.com/node/2116436
原作者的帅照
虽然自己开发的一直都是号称"高性能, 高可用, 高并发"的"三高"应用. 但是一直没有对如何实现这种"三高"应用没有进行深入的思考, 直到最近看到这篇文章, ...
Curator是Netflix开源的一套ZooKeeper客户端框架. Netflix在使用ZooKeeper的过程中发现ZooKeeper自带的客户端太底层, 应用方在使用的时候需要自己处理很多事情, 于是在它的基础上包装了一下, 提供了一套更好用的客户端框架. Netflix在用ZooKe ...
原文:http://lukaseder.wordpress.com/2011/12/29/a-neater-way-to-use-reflection-in-java/
Java的反射机制是Java一个非常强大的工具, 但是和大多数脚本语言相比, 使用起来却是有种"懒婆娘的裹脚布——又臭又长"的感觉.
比如在PHP语言中, 我们可能这样写:
// PHP
$method = 'my_method';
$field = 'my_field';
// Dynamically call a method
$object->$method();
...
最近要实现定期删除N天前的日志。 以前都是利用运维的一个cron脚本来定期删除的, 总觉得可移植性不是很好, 比如要指定具体的日志文件路径, 有时候想想为什么log4j自己不实现这个功能呢? 后来发现在logback中已经实现了这个功能. 其配置如下:
<appender name="vstore"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>default.log</file>
...
一本关于写代码的文集大杂烩, 涵盖编码, 结对编程, 代码质量等诸多方面, 也是在各个领域的老鸟给初哥的一些个人的经验总结。看这本书的人, 也各取所需吧, 没必要全看。
另外,译者的序写的不错^_^
=========================== ...
原文: http://java.dzone.com/reviews/java-performance
这个是老外写的关于《Java Performance》的书评,以前对这个东西也有所接触和了解, 最近略有实战, 希望有空能翻翻这本书。
本书涵盖了JVM调优(tuning), 测试(benchmarking)和剖析(profiling)的方方面面. 其中开篇第一章"策略, 步骤以及方法论"非常高屋建瓴的告诉你如何在开发过程中处理性能调优的问题.
性能调优是一项艺术. 知道如何使用调优工具是一回事, 而能对拿到的相关数据进行分析是另外一回事. 这本书就是用来让你 ...