`
文章列表
关于OpenTSDB的表设计,这两篇文章已经写得很好了: http://blog.csdn.net/bluishglc/article/details/31052749 http://www.jianshu.com/p/0bafd0168647 但对于tsdb-uid这个表,我觉得还是可以说得更详细一点的。以第一个链接提到的例子为例: 我们插入2个metrics: proc.stat.cpu proc.stat.mem 以及一条记录: proc.stat.cpu 1297574486 54.2 host=foo type=user 来观察一下结构 hbase scan: ...
那一年,你定义了一个接口: public interface WtfService { public void process(WtfDto dto); } 为了良好的扩展性,你定义了一个扩展字段,Map<String, String>类型,并且在文档里强调了“key和value都是String类型”: public class WtfDto implements Serializable { //other fields private Map<String, String> extIn ...
关于maven的资源过滤,官方文档有个例子: <project> ... <build> ... <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>**/*.xml</incl ...
虽然有人说Flash已死,但研究一下,也未尝不可。 利用Flash绕过浏览器代理获取真实IP,主要原理就是,当flash文件加载完成时,可以发起TCP连接,而这个连接是不会经过浏览器代理的,因此可以获得用户真实IP。 首先制作flash。 创建一个flash项目并创建默认的fla文件: 把trueip.fla关联到trueip.as文件。这样在trueip.fla生成的swf文件被浏览器加载时,就会执行trueip.as的默认构造函数: trueip.as代码如下: package { import flash.display.*; import flas ...
OAuth2的学习,我也是从阮一峰老师的博客中开始的:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 下文中以“该博客”指代阮老师的博客。 但,阮一峰老师的博客似乎忽略了很多细节。 OAuth2的实际应用中,最常见的就是“授权码模式”了。 微博是这种模式,微信也是这种模式。 总结来说,就是简单的二步: 1.获取code 2.根据code,去获取access_token 以微博为例(http://open.weibo.com/wiki/%E6%8E%88%E6%9D%83%E6%9C%BA%E5%88%B6%E8%AF%B4%E ...
一、什么是非对称加密算法 加密和解密所用的密钥是不一样的,所以叫“非对称”。 非对称加密算法的这两个密钥,一个称为公钥,一个称为私钥。 所谓公钥和私钥不是绝对的,公钥和私钥只是经过算法运算得到的一对数值,公开的那一个值称为公钥,不公开的称为私钥。 用公钥加密的,可以用私钥解密,反过来也成立。 RSA就是典型的非对称加密算法。 关于RSA算法的解释,最经典的当然是阮一峰老师的博客了: http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html http://www.ruanyifeng.com/blog/2013/0 ...
vim乱码问题在网上一搜一大堆,眼花缭乱。 经过我自己的理解,总结如下: 一、什么是fileencodings、fileencoding、encoding 和 termencoding 二、vim工作顺序     (1)Vim 启动,根据配置文件当中设置的 encoding 的值来设置 buffer、菜单文本、消息文的字符编码方式。     (2)读取需要编辑的文件,根据 fileencodings 中列出的字符编码方式逐一探测该文件编码方式。并设置 fileencoding 为探测到看起来是正确的 字符编码方式,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。    ...
参数检查用得最多的是JSR 303,用法示例: http://blog.csdn.net/caihaijiang/article/details/7463514 但JSR 303有个缺点,那就是当参数的限制发生变化时,例如某String类型的最大长度由10改为20,就需要改代码重新编译。 那有没有办法只改配置 ...
网上流传最广的免费IP库,是纯真的IP库:http://www.cz88.net/,且该库一直有维护,但缺点是不太准确。 淘宝的IP地址库比较准确,且提供了IP查询的接口:http://ip.taobao.com/。但它没有提供全量下载,且一秒内调用不能超过10次。 于是萌生了一个想法: 以纯真IP库作为IP分段的依据,以此去调用淘宝的接口,从而获得比较准确的IP库。 以纯真IP库的几行记录为例: a.235995136*14.17.0.0*235997951*14.17.10.255*广东省*深圳市*广东省深圳市*电信 b.3546091247*211.93.14.239*3546091 ...
首先从使用enum实现单例说起。 为什么要用enum来实现单例? 这篇文章(http://javarevisited.blogspot.sg/2012/07/why-enum-singleton-are-better-in-java.html)阐述了三个理由: 1.enum单例简单、容易,只需几行代码: public enum Singleton { INSTANCE; } 2.enum单例自动处理序列化问题 传统的单例实现方式(例如懒汉式饿汉式),如果它implements Serializable,那它就不再是单例了,因为readObject方法总是会返回新的对象。 enum ...
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常 我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。 实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查 ...
BeanUtils.copyProperties VS PropertyUtils.copyProperties 两者最大的区别是: BeanUtils.copyProperties会进行类型转换,而PropertyUtils.copyProperties不会。 既然进行了类型转换,那BeanUtils.copyProperties的速度比不上PropertyUtils.copyProperties。 因此,PropertyUtils.copyProperties应用的范围稍为窄一点,它只对名字和类型都一样的属性进行copy,如果名字一样但类型不一样,它会报错。 关于两者区别,http:/ ...
redis批量删除的通常做法: redis-cli keys "blacklist*" | xargs redis-cli del 上面的命令在key的前后没有空格时是可以的,但有空格就不行了: $redis-cli keys "blacklist*" 1) "blacklist:12: 361942420@qq.com " 注意到361942420@qq.com前后都有一个空格 有空格的话,就要把key用双引号括起来,像这样是可以删除的: $redis-cli del "blacklist:12: 361942 ...
需求如图: 说明: blackListFilter要等envFilter完成后才能开始执行 statisticFilter可以和envFilter同时开始执行 ruleEngineFilter要等blackListFilter和statisticFilter都执行完之后才能开始执行 所有的xxFilter都是Filter的子类 xml配置文件filters.xml: ...
需求 根据IP找到对应的城市 原来的解决方案 oracle表(ip_country): 查询IP对应的城市: 1.把a.b.c.d这样格式的IP转为一个数字,例如为把210.21.224.34转为3524648994 2. select city from ip_country where ipstartdigital <= 3524648994 and 3524648994 <=ipenddigital redis解决方案 我们先把上面的表简化一下: id city min max 1 P1 0 100 2 P2 101 200 3 P3 201 300 ...
Global site tag (gtag.js) - Google Analytics