- 浏览: 787501 次
- 性别:
- 来自: 深圳
最新评论
-
萨琳娜啊:
Java读源码之Netty深入剖析网盘地址:https://p ...
Netty源码学习-FileRegion -
飞天奔月:
写得有趣 ^_^
那一年你定义了一个接口 -
GoldRoger:
第二个方法很好
java-判断一个自然数是否是某个数的平方。当然不能使用开方运算 -
bylijinnan:
<script>alert("close ...
自己动手实现Java Validation -
paul920531:
39行有个bug:"int j=new Random ...
java-蓄水池抽样-要求从N个元素中随机的抽取k个元素,其中N无法确定
文章列表
关于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 ...