java:多网卡环境下获取MAC地址

JDK6以后 java.net.NetworkInterface提供了完整的方法用于获取网络设备信息。 调用 NetworkInterface.getNetworkInterfaces()可以返回所有网络设备 调用NetworkInterface.getHardwareAddress()就可以获取指定网卡的MAC. 下面的完整代码基于NetworkInterface提供了getNICs方法用于...
阅读(52) 评论(0)

thrift/swift/nifty:获取客户端ip的简单方法

一个RPC方法中需要知道客户端的IP要怎么实现? 网上看了一堆关于thrift获取获取client ip的文章,基本都要自己写一个TServerEventHandler或TProcessor来实现。如下,所有的文章讲到的都是这两种方法。 《两种方式获取Thrift调用的客户端IP地址》 虽然没有再深入研究,但我想如果用thrift这应该是正确的办法。 但是看着好烦呐,不就获取个ip么,就没有...
阅读(52) 评论(0)

java:基于volatile和Thread Local Storage的双重检查锁定实现延迟初始化

总在同一个地方栽坑里是不可原谅的,以本文做个记录,以防下次再犯。 下面这段很简单的基于双重检查锁定(Double-checked locking)实现的延迟初始化(Lazy initialization)代码,还是让spotbugs找出了问题(感谢spotbugs)。 原因很简单,这种模式在java下无效,因为filedNames 变量不是线程可见的,具体原因涉及到java内存模型,网上已经有文...
阅读(38) 评论(0)

thrift:返回null的解决办法

最的项目用到swift:thrift做SOAP框架,开始也没有了解太深,就开始干了,今天开始测试了,发现thrift居然不允许服务接口返回null。跟踪源码到下面的方法,找到为null时抛出异常的位置: Object com.facebook.swift.service.ThriftMethodHandler.readResponse(TProtocol in) throws Exception...
阅读(57) 评论(0)

velocity:宏(#macro)出现中文乱码

最开始使用velocity时,输出中文乱码,我的解决办法 是在调用 mergeTemplate 方法时指定encoding为UTF-8,然后就正常了。Velocity.mergeTemplate(String templateName, String encoding, Context context, Writer writer)然而最近在使用velocity写模板时发现宏(#macro)中如果有...
阅读(102) 评论(0)

java泛型:通过自定义ParameterizedType实现参数化类型中类型参数的替换

需求说明如果要动态构造一个泛型参数对象(ParameterizedType),guava提供的TypeToken工具可以部分实现这个功能: 比如下面这个例子(来自guava wiki TypeToken),可以根据需要定制一个指定K,V类型的Map。static TypeToken<Map> mapToken(TypeToken keyToken, TypeToke...
阅读(85) 评论(0)

guava:java:java.util.Map和java.util.Set的Key类型转换

昨天写了一博客《java:java.util.Map和java.util.Set的Key类型转换》,主要是想实现以java.util.Map,今天有空有研究了一下guava的代码,发现基于guava提供的API也是可以实现Key类型转换的: 关键就是Maps提供了uniqueIndex方法,可以将Map转换成Key不同的Map。 package net.gdface.facelog; imp...
阅读(130) 评论(0)

java:java.util.Map和java.util.Set的Key类型转换

google的guava项目提对Map供了丰富强大的转换功能(参见guava jar包中的com.google.common.collect.Maps ) Maps.transform系列方法可以对Map的Value类型进行转换, 比如: public static Map transformEntries( Map fromMap,Entr...
阅读(146) 评论(0)

java:关于properties配置文件中的换行(多行)的坑

properties中都是以name=value这样的k-v字符串对形式保存的。 在写properties文件时,如果value非常长,看起来是非常不方便的,可以用\来换行(最后一行不需要\),如下 :template.file.exclude=impl.dbconverter.java.vm \ idbconverter.java.vm \...
阅读(156) 评论(0)

java:通过javadoc API读取java源码中的注释信息(comment)

如何从java源码中读取注释信息?(注意不是指通过反射读取annotation类,是comment,就是程序员在源码中加的注释) 大概很少会有人需要用到这个,不过最近的项目中需要对自动生成的代码中加入原始代码的注释,就需要从原始代码中获取注释。所以需要在程序实现读取源码中的注释信息,网上找了很多文章都想通过分析源码文件(正则表达式)来把注释提取出来,差点被这些文章带到坑里,休息的时候突然想如果javadoc有API可...
阅读(165) 评论(0)

thrift:swift 命令行生成 IDL文件及Client java代码过程

swift是一个用于创建thrift 序列化类型和服务的java工具库,使用swfit可以生成非常简洁的java代码。并且更重要的是可以通过java代码生成接口描述文件(Thrift interface description language,IDL). 多数情况下,服务端的应用都是java写的。使用swift提供的工具,可以直接生成IDL,再用IDL生成其他语言的client端代码 (cpp,...
阅读(345) 评论(0)

fastjson:实现对java.nio.ByteBuffer数据类型的支持

一般情况下,我们都用byte[]作为保存二进制数据的数据类型,较少用ByteBuffer来表示字节数组。然而最近的工作中需要二进制数据(字节数组)即支持fastjson序列化也要能用thrift:swift序列化。 我们知道fastjson可以对byte[]进行序列化,但fastjson默认是不支持java.noi.ByteBuffer数据类型序列化的。 而thrift是跨语言的,所以它并没有b...
阅读(255) 评论(0)

swift-annotations:java编译时警告主版本 52 比 51 新, 此编译器支持最新的主 版本。

今天在java bean代码中加入swift的注释时,编译时提示了警告: [javac] 警告: J:\facelog\db\sql2java\lib\swift-annotations-0.23.1.jar(com/facebook/swift/codec/ThriftStruct.class): 主版本 52 比 51 新, 此编译器支持最新的主版本。 [javac] 建议升...
阅读(138) 评论(0)

fastjson:获取类(Class)的所有可序列化字段(field)

用fastjson对一个类进行序列化时,在没有类的实例只有类的Class的情况下,如果想知道这个Class有所有可以被序列化的字段名,可以用`com.alibaba.fastjson.util.TypeUtils.computeGetters(Class clazz, Map aliasMap)`方法来实现,实现代码很简单:...
阅读(204) 评论(0)

fastjson:javabean按字段(field)序列化存储为Map并反序列化改进

需求说明最近的项目应用到redis数据库,需要将java bean存储在redis数据库。因为需要对数据库中的某个字段进行修改,所以在redis上不能用简单的string类型存储,而要以hash类型存储。这就需要在向数据库写入java bean对象之前要将java bean按字段序列化为一个Map 。 而在从数据库读取后,又需要将所有字段合并反序列化还原成一个java...
阅读(322) 评论(0)

fastjson:javabean按字段(field)序列化存储为Map并反序列化

大部分json工具对java对象整体序列化都提供了简单的调用方式,以fastjson为例:Model model = new Model(); String json = JSON.toJSONString(model); // 序列化 Model model2 = JSON.parseObject(json, Model.class); // 反序列化需求说明最近的项目应用到redis数据库,需要将...
阅读(248) 评论(0)

java:利用fastjson判断一个类型(java.lang.reflect.Type)是否是一个javabean

fastjson中JSON.toJSON(Object javaObject)方法将一个java对象被序列化成json对象时,返回的对象类型有三种可能:JSONObject,JSONArray,原始类型(简单类型)。 最近在使用fastjson进行对java对象序列化和反序列化时,遇到一个问题: 需要判断一个类型(java.lang.reflect.Type)是否为一个java bean(这里所...
阅读(508) 评论(0)

java:关于json解析工具选型(JSON-java,json-lib,gson,fastjson)

没有最好的工具,只有最适合的. 最近的项目需要对java 对象和json之间的序列化和反序列化,更准确的说是java bean对象和json之间的转换,使用哪个工具进行转换,让我犹豫了不少时间。 json工具有很多 http://json.org 中列出不少,我接触过的有JSON-java,json-lib,google-gson,还有阿里巴巴的fastjson。JSON-java我最早用过的是...
阅读(273) 评论(0)

jedis:连接池(JedisPool)使用示例

Jedis实例不是线程安全的,所以不可以多个线程共用一个Jedis实例,但是创建太多的实现也不好因为这意味着会建立很多sokcet连接。 JedisPool是一个线程安全的网络连接池。可以用JedisPool创建一些可靠Jedis实例,可以从池中获取Jedis实例,使用完后再把Jedis实例还回JedisPool。这种方式可以避免创建大量socket连接并且会实现高效的性能. JedisPool初...
阅读(422) 评论(0)

java:bytes[]转long的三种方式

bytes[] 到数字类型的转换是个经常用到的代码,解决方式也不止一种,最近需要将bytes[]转为long,有机会深入了解了一下,此文做个总结。java代码实现如果不想借助任何已经有的类,完全可以自己实现这段代码,如下: /** * 将字节数组转为long * 如果input为null,或offset指定的剩余数组长度不足8字节则抛出异常 * @para...
阅读(1408) 评论(1)
278条 共14页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:489236次
    • 积分:7970
    • 等级:
    • 排名:第2870名
    • 原创:277篇
    • 转载:1篇
    • 译文:0篇
    • 评论:159条
    文章分类
    最新评论
    我的项目