`
liudunxu2
  • 浏览: 32150 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

zkclient中的可复用的一些工具类

 
阅读更多

1.org.I0Itec.zkclient.NetworkUtil,提供获取本机名称,端口是否被占用等功能,其中判断端口是否被占用的代码:

public static boolean isPortFree(int port) {
        try {
            Socket socket = new Socket("localhost", port);
            socket.close();
            return false;
        } catch (ConnectException e) {
            return true;
        } catch (SocketException e) {
            if (e.getMessage().equals("Connection reset by peer")) {
                return true;
            }
            throw new RuntimeException(e);
        } catch (UnknownHostException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

2.org.I0Itec.zkclient.serialize.SerializableSerializer,实现ZkSerializer,与TcclAwareObjectIputStream配合,提供java原生的序列化和反序列化的方法,其中TcclAwareObjectIputStream重写了基类ObjectInputStream的resolveClass和resolveProxyClass方法。基类的resolveClass使用的是class.forname,TcclAwareObjectIputStream使用的是
Thread.currentThread().getContextClassLoader();两者的区别可以看一下:http://waryist.iteye.com/blog/131983http://impzx.com/thread-currentthread-getcontextclassloader%EF%BC%88%EF%BC%89%E8%A7%A3%E6%9E%90/
zkclient实现序列换的源码如下:
   @Override
    public Object deserialize(byte[] bytes) throws ZkMarshallingError {
        try {
            ObjectInputStream inputStream = new TcclAwareObjectIputStream(new ByteArrayInputStream(bytes));
            Object object = inputStream.readObject();
            return object;
        } catch (ClassNotFoundException e) {
            throw new ZkMarshallingError("Unable to find object class.", e);
        } catch (IOException e) {
            throw new ZkMarshallingError(e);
        }
    }

    @Override
    public byte[] serialize(Object serializable) throws ZkMarshallingError {
        try {
            ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
            ObjectOutputStream stream = new ObjectOutputStream(byteArrayOS);
            stream.writeObject(serializable);
            stream.close();
            return byteArrayOS.toByteArray();
        } catch (IOException e) {
            throw new ZkMarshallingError(e);
        }
    }


分享到:
评论

相关推荐

    uni-app一些工具类

    在这个"uni-app一些工具类"的压缩包中,我们可以预见到包含了一些实用的辅助函数,这些函数可能涉及以下几个关键知识点: 1. **日期和时间处理**:在utils中,常见的功能可能包括日期格式化、时间差计算、时间戳...

    自己整理的C#常用工具类

    在C#编程中,工具类(Utility Class)是一种常见的设计模式,它封装了一些常用的功能,以便在项目中方便地重复使用。这些工具类通常包含静态方法,不涉及实例化,直接通过类名调用,降低了代码冗余,提高了代码复用...

    项目搭建规范,可复用工具类,简易轮子

    在Android开发中,项目搭建规范、可复用工具类以及简易轮子的创建是提高开发效率和代码质量的关键。以下是一些关于这些主题的详细解释和实践建议。 1. **项目搭建规范**: - **模块化**:将项目划分为多个独立的...

    C++工具类-常用工具类源码

    这样的工具类在实际开发中非常实用,可以提高代码的可复用性和项目的开发效率。通过学习和理解这些源码,开发者能够更好地理解和掌握C++的文件操作、字符串处理以及网络编程技术,从而提升自身的编程能力。

    Android 封装的工具类

    在Android开发中,工具类(Utils Class)是程序员经常创建的一种辅助代码结构,用来封装一些通用功能,提高代码的复用性和可维护性。这里提到的"Android 封装的工具类"涵盖了几种关键的模块,包括网络请求、数据库...

    淘淘商城07-工具类

    在IT行业中,工具类是程序员日常开发中必不可少的一部分。这些工具类通常包含了各种常用功能的封装,能够提高代码的复用性和开发效率。"淘淘商城07-工具类"这个压缩包文件很可能包含了用于电商项目的一系列Java工具...

    安卓开发框架工具类相关-一些工具类.rar

    在安卓应用开发中,工具类(Utils Class)是开发者经常使用的辅助模块,它们提供了一系列静态方法,方便在各个组件之间复用代码,提高开发效率。"安卓开发框架工具类相关-一些工具类.rar"这个压缩包文件很可能包含了...

    C# Util 实用工具类

    C# Util中的Json工具类通常提供了序列化和反序列化JSON对象的方法,如将C#对象转换为JSON字符串,或者将JSON字符串解析为C#对象,这在处理API请求或保存配置文件时非常有用。 2. **Net**: 这部分可能包含网络通信...

    安卓开发框架工具类相关-Android快速开发系列10个常用工具类.rar

    在Android开发中,工具类通常包含一系列静态方法,用于执行常见的、重复的任务,以提高代码的复用性和开发效率。这一压缩包很可能包含了开发者在日常工作中会频繁使用的各种功能模块。 【描述】中提到,这是一个...

    个人总结常用经典Utils工具类

    1、Utils工具类有String工具类、XmlNode节点工具类、BeanFactory相关、Common工具类、Cookie工具类、Date工具类、Http工具类、JDBC工具类、日志Log工具类、Servlet...2、工具类省了重复造轮子的工作,可以直接复用。

    个人用的C#日常开发工具类

    在IT行业中,C#是一种广泛使用的面向对象的编程语言,尤其在Windows应用程序开发、游戏开发、Web服务以及.NET框架下的各种应用中...在实际开发中,不断积累和优化工具类,也是提升个人开发效率和代码复用性的有效途径。

    三个工具类

    在IT行业中,工具类是程序员日常开发中不可或缺的一部分。它们通常包含了各种静态方法,用于执行特定的任务,提高代码的复用性和效率。标题中的“三个工具类”可能指的是三种具有不同功能的工具类,可能是针对数据...

    Android快速开发系列 10个常用工具类 程序源码

    在Android应用开发中,工具类(Utils)是程序员经常使用的辅助模块,它们包含了一系列静态方法,用于处理各种常见的任务,从而提高代码的复用性和可维护性。本资源"Android快速开发系列 10个常用工具类 程序源码...

    最新版工具类

    在IT行业中,工具类是程序员日常开发中必不可少的一部分。它们通常是封装了常用功能或操作的静态类,可以提高代码的可复用性和开发效率。"最新版工具类"这个主题聚焦于Android开发中的辅助工具类,这些类可以帮助...

    常用Java工具类

    以上工具类在实际开发中都有着广泛的应用,它们提高了代码的可复用性和可维护性,减少了重复的工作,使得程序员能够更专注于业务逻辑的实现。通过熟练掌握和使用这些工具类,可以提升Java开发的效率和质量。

    java开发工具类(14个)

    在Java开发过程中,工具类(Util Classes)是程序员经常使用的一种设计模式,它们提供了一些静态方法,方便在多个类或模块之间复用。本压缩包包含14个针对Java和Android开发的实用工具类,涵盖了图片上传、HTTP协议...

    json封装的工具类,提高代码的健壮性和复用性能

    总的来说,这个JSON工具类提供了一套完整的解决方案,使得在Web项目中处理JSON数据变得更加简单、高效,同时增强了代码的可读性和可复用性。通过合理利用这个工具类,开发者可以更专注于业务逻辑,而非底层的数据...

    Android-简单的Android工具类包含ActivityFragmentApplication基类和各类常用工具类集合

    在Android开发过程中,工具类(Utils)和基类(Base Class)是不可或缺的部分,它们能够帮助开发者快速构建功能,提高代码复用性,减少代码冗余。以下是对"Android-简单的Android工具类包含...

    Java工具类合集

    在Java编程领域,工具类(Utility Class)是程序员日常工作中不可或缺的一部分。这些类通常包含一组静态方法,用于执行特定的任务,比如字符串处理、日期时间操作、集合操作等,旨在提高代码复用性和开发效率。本...

    java各种工具类-非常齐全

    在Java中,工具类通常是封装了常见操作的静态方法集合,便于开发者在不同项目中复用。本资源包含了一系列全面的Java工具类,涵盖了多个核心领域,如日期处理、字符串操作、文件管理、XML和JSON解析以及HTTP请求等。 ...

Global site tag (gtag.js) - Google Analytics