摘要:
Curator的介绍 Curator就是Zookeeper的一个客户端工具(不知道Zookeeper的同学可以到http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/学习下),封装ZooKeeper client与ZooKe... 阅读全文
摘要:
跨域请求RESTful Web Service=======----------当我们用js请求RESTful Web Service的时候,通常会出现跨域无法访问的问题,也就是无法正常得到我们要的值。jsonp是个解决问题的方法。但是,我们希望访问RESTful Web Service就像一般的a... 阅读全文
摘要:
首先我们必须知道Tcp粘包和拆包的,TCP是个“流”协议,所谓流,就是没有界限的一串数据,TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际数据进行包的划分,一个完整的包可能会被拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包进行发送。这里引用Netty官网的U... 阅读全文
摘要:
Git, 一个分布式的版本管理工具,我认为其革命性的点:在于改变了用户协作的方式,使得协作更简单。下面讲述 使用一个开源软件 [Gitolite](http://gitolite.com/)搭建一个Git Sever, 并给了一个推荐的团队协助方式。 # Install Gitolite## 创建 ... 阅读全文
摘要:
Executor框架使用Runnable 作为其基本的任务表示形式。Runnable是一种有局限性的抽象,然后可以写入日志,或者共享的数据结构,但是他不能返回一个值。 许多任务实际上都是存在延迟计算的:执行数据库查询,从网络上获取资源,或者某个复杂耗时的计算。对于这种任务,Callable是一... 阅读全文
摘要:
首先是synchronized 关键字他可以用于声明方法,也可以用于申明代码块。我们看看三个例子:public class SynchronizedDemo1 { public synchronized static void foo1() { } ... 阅读全文
摘要:
现在是多核的时代,面向多核的编程很重要,因此基于java的并发和多线程开发非常重要。 线程池是于队列密切相关的,其中队列保存了所有等待执行的任务。工作者线程的任务很简单:从队列中获取一个任务,执行任务,然后返回线程池,等待下一个任务。 在线程池中执行任务,比为每一个任务分配一个线程优势更多:... 阅读全文
摘要:
应用场景在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(Weighted )等。其中哈希算法是最为常用的算法.典型的应用场景是... 阅读全文
摘要:
通过Spring自定义event首先我们定义我们的event类package com.hyenas.spring.custom.event;import org.springframework.context.ApplicationEvent;public class CustomEvent extends ApplicationEvent{ private static final long serialVersionUID = -82737763905791865L; public CustomEvent(Object source) { super(so... 阅读全文
摘要:
Spring内置的event有1.ContextRefreshedEventThis event is published when theApplicationContextis either initialized or refreshed. This can also be raised using the refresh() method on theConfigurableApplicationContextinterface.2.ContextStartedEventThis event is published when theApplicationContextis start 阅读全文