自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 通过curator 简单实现负载均衡的第一步

通过了解DUBBO 的体系结构,我们可以用ZK简单的实现一下负载均衡中重要的一步,服务提供商的注册,也就是注册商,下面是DUBBO的体系每当服务器启动,就扫描服务器本地方法,将所有方法,地址写到ZK目录结构中,不同的目录结构代表不同的方法,目录结构叶节点是服务器提供商的IP地址这样每次客户去请求注册商,就可以知道这个服务有那些IP主机可以提供,然后通过一些负载算法,

2016-05-29 14:30:37 526

原创 通过zookeeper实现分布式排他锁

ZK实现分布式锁,其实就是通过在ZK服务器上创建一个文件代表锁如果文件创建成功则代表获取锁成功,否则代表失败,当程序计算结束就删除文件代表解放锁以下是简单实现(通过curator来实现)public class LockUtil {private static CuratorFramework client = null;private stat

2016-05-29 14:19:02 342

原创 dto对象包装工具,减少get,set使用,简化代码

在之前我写了一个DataPack4Json的工具类,能自动返回想要的属性集合,但是写法非常的low,代码可读性比较低经过几天思索,于是开发了一个注解型的包装工具,并且支持递归查询子属性域,不多说先看效果我先定义一个Person对象(get,set方法自动生成,以下演示中为了简洁就没写上)@DataField 是我定义的一个注解,有value属性,代表该子属性属于

2016-05-29 09:54:35 516

原创 curator的使用(将Zookeeper封装的客户端)

curator 是介于Zk基本API 的一些缺点而开发的一个封装,主要弥补了ZK客户端的递归创建、同步异步问题、和wacher的缺陷,当然也提供了其他的一些便利的API ,使用fluent风格写起来感觉很像js以下是有关操作的一些代码package com.jlh.curator;import java.util.List;import org.ap

2016-05-23 20:43:44 450

原创 zookeeper基本API的使用

以下是Zk客户端基本API 的使用例子 获取数据,并设置监听以下是主方法package com.jlh.test;import java.io.IOException;import java.util.concurrent.TimeUnit;import org.apache.zookeeper.KeeperException;import org.

2016-05-23 20:37:02 215

原创 java后台返回一个类指定的几个属性的json包装集

在平时开发web项目的接口的时候,每次需要通过对象的get方法一个个获取指定的参数包装成json,代码量十分的大因此在无聊之际便通过JAVA的反射机制写了小工具类,提高了接口开发的效率以下是工具类代码package com.jlh.util;import java.lang.reflect.Field;import java.lang.reflect.M

2016-04-17 09:37:34 541 1

原创 多线程的队列BlockingQueue

在java里可以使用BlockingQueue来维持一个任务进程的队列以下使用LinkedBlockingQueue 来进行测试,当然也有ArrayBlockingQueue 至于区别我就不用说了吧,一个链表,一个数组。。。package com.jlh.test;import java.util.concurrent.BlockingQueue;impor

2016-04-17 09:29:22 209

原创 LSB的JAVA实现,随便写写,也不知道有什么用0.0

LSB就是通过图片像素点的最后一位用来保存文字的二进制数据,来实现图片隐藏内容,由于只使用了最后一位,所以对图像影响根本不大,看不出来不过代码有个坑,就是必须要使用BMP图片,这主要是因为jpg会压缩造成的,我们知道jpg是有损压缩,会改变像素点的值,你修改的最后一位很容易就被jpg压缩的时候再次修改所以,别想着能使用jpg来隐藏了,只能先转为BMP再隐藏,巨坑。。让我

2016-04-17 09:21:00 1913 1

原创 自己实现的一个Cache 使用最近常使用算法

首先是键值对类 package com.jiluohao.model;import java.io.Serializable;public class KV implements Serializable{/*** */private static final long serialVersionUID = -163722656254186998

2016-04-17 09:12:09 287

原创 wait()、notify()、await()、signal()的使用

在使用wait和notify的前提是必须在获取锁的条件下才能使用,否则会报出异常至于notify 和notifyall 的区别是在,notify只唤起一个线程,notifyall会唤起所有需要持有该锁的线程,然后这些线程再去竞争锁因为notify不能确定唤起的是哪个线程,所以一般开发是使用notifyall ,再通过一些参数来控制指定线程使用该锁以下是wait(

2016-04-17 09:01:12 682

原创 关于ExecutorService的三种方法

ExecutorService 是实现线程池的一种用法,以下有三种使用方式newCachedThreadPool 生成可以扩充的线程池,每当需要的线程数量超过当前,就会产生新的线程newFixedThreadPool  生成固定的线程池,当线程数量不够的时候,任务会排队使用线程newSingleThreadExecutor  特殊的固定线程池,区别就在于,只有一

2016-04-17 08:52:46 372

原创 通过java发送邮件

通过java发送文件可以通过javax.mail这个jar包实现较为简单,以下是个简单的例子,通过网易邮箱来给其他邮箱发送邮件import java.util.Properties;import javax.mail.Authenticator;import javax.mail.Message.RecipientType;import java

2016-04-13 13:42:25 194

原创 实现线程的第二种方法实现callable接口

除了使用Runnable 接口以外,我们还可以通过使用callable接口来实现一个线程两者的区别是callable接口是可以返回参数的,但是必须通过ExecutorService的submit去开启线程注:ExecutorService可以实现线程池,可以捕捉无法返回主线程的异常以下是实现class mycallable implement

2016-04-13 13:34:47 315

原创 java代理类的2种实现

首先是通过JDK实现的代理类JDK的代理类实现依托于接口所以一个类如果要有他的代理必须实现一个接口先实现一个代理类接口public interface BusinesProcessor {public void process();}然后是实现public class BusinesProcessorImp implements BusinesProce

2016-04-12 09:19:21 201

原创 java 内存泄漏

File f = new File(strFile); // 得到文件                       RandomAccessFileraf = new RandomAccessFile(f, "rw");// raf是用来访问那些保存数据记录的文件的                       longtotalLen = raf.length();

2015-08-21 12:32:40 156

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除