自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(200)
  • 问答 (3)
  • 收藏
  • 关注

原创 MySQL幻读实验

问题MySQL隔离级别介绍:back-to-basics-isolation-levels-in-mysqlunderstanding-mysql-transaction-isolation-levels-by-exampleMySQL innoDB默认隔离级别是 REPEATABLE READ。REPEATABLE READ 可重复读,但会带来幻读问题:然而,我去做一下实验,发现并不是这样的实验MySQL版本 8.0.27 CREATE TABLE `userinfo` ( `id`

2022-01-28 16:16:23 1306

原创 OpenTSDB设计解读

关于OpenTSDB的表设计,这两篇文章已经写得很好了:[url]http://blog.csdn.net/bluishglc/article/details/31052749[/url][url]http://www.jianshu.com/p/0bafd0168647[/url]但对于tsdb-uid这个表,我觉得还是可以说得更详细一点的。以第一个链接提到的例子为例:我...

2016-07-17 12:22:57 274

那一年你定义了一个接口

那一年,你定义了一个接口:[code="java"]public interface WtfService { public void process(WtfDto dto); }[/code]为了良好的扩展性,你定义了一个扩展字段,Map类型,并且在文档里强调了“key和value都是String类型”:[code="java"]p...

2016-05-28 13:16:38 251

深入纠结maven的资源过滤

关于maven的资源过滤,官方文档有个例子:[code="java"] ... ... src/main/resources true **/*.xml src/main/resources...

2016-05-13 21:47:27 815

利用Flash绕过浏览器代理获取真实IP

虽然有人说Flash已死,但研究一下,也未尝不可。利用Flash绕过浏览器代理获取真实IP,主要原理就是,当flash文件加载完成时,可以发起TCP连接,而这个连接是不会经过浏览器代理的,因此可以获得用户真实IP。[b]首先制作flash。[/b]创建一个flash项目并创建默认的fla文件:[img]http://dl2.iteye.com/upload/attach...

2016-02-23 22:29:04 963

OAuth2疑问解答

OAuth2的学习,我也是从阮一峰老师的博客中开始的:[url]http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html[/url]下文中以“该博客”指代阮老师的博客。但,阮一峰老师的博客似乎忽略了很多细节。OAuth2的实际应用中,最常见的就是“授权码模式”了。微博是这种模式,微信也是这种模式。总结来说,就是简单的二步...

2016-02-20 00:13:22 291

非对称加密算法原理及应用

[b]一、什么是非对称加密算法[/b]加密和解密所用的密钥是不一样的,所以叫“非对称”。非对称加密算法的这两个密钥,一个称为公钥,一个称为私钥。所谓公钥和私钥不是绝对的,公钥和私钥只是经过算法运算得到的一对数值,公开的那一个值称为公钥,不公开的称为私钥。用公钥加密的,可以用私钥解密,反过来也成立。RSA就是典型的非对称加密算法。关于RSA算法的解释,最经典的...

2016-02-17 22:49:09 1117

化繁为简-vim乱码问题

vim乱码问题在网上一搜一大堆,眼花缭乱。经过我自己的理解,总结如下:[b]一、什么是fileencodings、fileencoding、encoding 和 termencoding[/b][img]http://dl2.iteye.com/upload/attachment/0112/6518/d5023322-e2e0-367a-b124-bbf84ef08880.pn...

2015-10-27 21:16:15 143

自己动手实现Java Validation

参数检查用得最多的是JSR 303,用法示例:[url]http://blog.csdn.net/caihaijiang/article/details/7463514[/url]但JSR 303有个缺点,那就是当参数的限制发生变化时,例如某String类型的最大长度由10改为20,就需要改代码重新编译。那有没有办法只改配置文件重启程序就达到目的呢?网上还没有类似的解决方案,那就自...

2015-09-18 20:37:19 445

淘宝IP地址库

网上流传最广的免费IP库,是纯真的IP库:[url]http://www.cz88.net/[/url],且该库一直有维护,但缺点是不太准确。淘宝的IP地址库比较准确,且提供了IP查询的接口:[url]http://ip.taobao.com/[/url]。但它没有提供全量下载,且一秒内调用不能超过10次。于是萌生了一个想法:以纯真IP库作为IP分段的依据,以此去调用淘宝的接口,从...

2015-09-15 23:07:59 827

枚举的构造函数中抛出异常会怎样

首先从使用enum实现单例说起。为什么要用enum来实现单例?这篇文章([url]http://javarevisited.blogspot.sg/2012/07/why-enum-singleton-are-better-in-java.html[/url])阐述了三个理由:1.enum单例简单、容易,只需几行代码:[code="java"]public enum Sin...

2015-07-18 17:04:28 361

Guava Cache使用笔记

[b]1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常[/b]我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。[b...

2015-07-07 22:02:37 352

BeanUtils.copyProperties使用笔记

[b]BeanUtils.copyProperties VS PropertyUtils.copyProperties[/b]两者最大的区别是:BeanUtils.copyProperties会进行类型转换,而PropertyUtils.copyProperties不会。既然进行了类型转换,那BeanUtils.copyProperties的速度比不上PropertyUtils.c...

2015-07-06 22:17:37 459

redis批量删除带空格的key

redis批量删除的通常做法:[code="java"]redis-cli keys "blacklist*" | xargs redis-cli del[/code]上面的命令在key的前后没有空格时是可以的,但有空格就不行了:[code="java"]$redis-cli keys "blacklist*"1) "blacklist:12: 361942420@qq...

2015-04-02 19:10:58 681

重新发明轮子——解析xml并实例化类

需求如图:[img]http://dl2.iteye.com/upload/attachment/0106/5987/e2f0d65f-6de7-3db0-aa20-38a501c53019.png[/img]说明:blackListFilter要等envFilter完成后才能开始执行statisticFilter可以和envFilter同时开始执行ruleEngine...

2015-03-11 21:00:47 187

redis范围查询应用-查找IP所在城市

[b]需求[/b]根据IP找到对应的城市[b]原来的解决方案[/b]oracle表(ip_country):[img]http://dl2.iteye.com/upload/attachment/0105/6447/c9638c70-62d1-3bb4-8c10-abc2a27c1ad3.png[/img] 查询IP对应的城市:1.把a.b.c....

2015-01-28 20:00:25 339

原创 Spring整合redis

pom.xml[code="java"] org.springframework.data spring-data-redis 1.4.0.RELEASE redis.clients jedis 2.6.0 org.springframework spri...

2015-01-13 15:05:23 95

keepalived实现redis主从高可用

[b]方案说明[/b]两台机器(称为A和B),以统一的VIP对外提供服务1.正常情况下,A和B都启动,B会把A的数据同步过来(B is slave of A)2.当A挂了后,VIP漂移到B;B的keepalived 通知redis 执行:slaveof no one,由B提供服务3.当A起来后,VIP不切换,仍在B上面;而A的keepalived 通知redis 执行slave...

2015-01-12 20:41:47 109

keepalived+twemproxy部署redis集群高可用

[b]架构图[/b] [img]http://dl2.iteye.com/upload/attachment/0105/1829/b41ce73f-c066-3bd3-b054-77254048fc74.png[/img][b]机器说明[/b][code="java"]10.75.201.67:keepalived + twemproxy10.75.201.66...

2015-01-12 20:30:27 343

Haproxy+Keepalived高可用双机单活

我们的应用MyApp不支持集群,但要求双机单活(两台机器:master和slave):1.正常情况下,只有master启动MyApp并提供服务2.当master发生故障时,slave自动启动本机的MyApp,同时虚拟IP漂移至slave,保持对外提供服务的IP和端口不变F5据说也能满足上面的需求,但F5的通常用法都是双机双活,单活的话还没研究过[b]服务器资源[/b][...

2015-01-06 17:37:50 323

Joda Time使用笔记

Joda Time的介绍可以参考这篇文章:[url]http://www.ibm.com/developerworks/cn/java/j-jodatime.html[/url]工作中也常常用到Joda Time,为了避免每次使用都查API,记录一下常用的用法: [code="java"] /** * DateTime变化(增减) */ ...

2014-12-22 20:16:27 147

RedHat 6.4 安装 rabbitmq

在 linux 下安装软件就是折腾,首先是测试机不能上外网要找运维开通,开通后发现测试机的 yum 不能使用于是又要配置 yum 源,最后安装 rabbitmq 时也尝试了两种方法最后才安装成功机器版本:[code="java"][root@redhat1 rabbitmq]# lsb_releaseLSB Version: :base-4.0-amd64:base-4.0-...

2014-10-28 19:20:58 277

Java的WeakReference与WeakHashMap

首先看看 WeakReference wiki 上 Weak reference 的一个例子:[code="java"] public class ReferenceTest { public static void main(String[] args) throws InterruptedException { WeakReference...

2014-06-25 20:34:31 105

《TCP/IP 详解,卷1:协议》学习笔记、吐槽及其他

《TCP/IP 详解,卷1:协议》是经典,但不适合初学者。它更像是一本字典,适合学过网络的人温习和查阅一些记不清的概念。这本书,我看的版本是机械工业出版社、范建华等译的。这本书在我看来,翻译得一般,甚至有明显的错误。如果英文熟练,看原版更好:[url]http://pcvr.nl/tcpip/[/url]下面是我的一些笔记,包括我看书时有疑问的地方,也有对该书的吐槽,有不对的地...

2014-05-30 09:32:09 557 1

MySQL 的 char 与 varchar

今天发现,create table 时,MySQL 4.1有时会把 char 自动转换成 varchar 测试举例:[code="java"]CREATE TABLE `varcharLessThan4` ( `lastName` varchar(3)) ;mysql> desc varcharLessThan4;+----------+-------...

2014-05-27 16:49:59 103

返回null还是empty

第一个问题,函数是应当返回null还是长度为0的数组(或集合)?第二个问题,函数输入参数不当时,是异常还是返回null?先看第一个问题有两个约定我觉得应当遵守:1.返回零长度的数组或集合而不是null(详见《Effective Java》)理由就是,如果返回empty,就可以少了很多not-null判断:[code="java"]List list ...

2014-05-16 15:34:16 286

Spring源码学习-XML 配置方式的IoC容器启动过程分析

以FileSystemXmlApplicationContext为例,把Spring IoC容器的初始化流程走一遍:[code="java"]ApplicationContext context = new FileSystemXmlApplicationContext ("C:/Users/ZARA/workspace/HelloSpring/src/Bea...

2014-05-15 18:46:15 92

Spring源码学习-JdbcTemplate queryForObject

JdbcTemplate中有两个可能会混淆的queryForObject方法:1.Object queryForObject(String sql, Object[] args, Class requiredType) 2.Object queryForObject(String sql, Object[] args, RowMapper rowMapper) 第1个方法是...

2014-05-09 19:45:47 584

Spring源码学习-JdbcTemplate batchUpdate批量操作

Spring JdbcTemplate的batch操作最后还是利用了JDBC提供的方法,Spring只是做了一下改造和封装JDBC的batch操作:[code="java"]String sql = "INSERT INTO CUSTOMER " + "(CUST_ID, NAME, AGE) VALUES (?, ?, ?)"; Lis...

2014-05-07 16:21:12 1473

二维数组(矩阵)对角线输出

[code="java"]/**二维数组 对角线输出 两个方向例如对于数组:{ 1, 2, 3, 4 }, { 5, 6, 7, 8 },{ 9, 10, 11, 12 }, { 13, 14, 15, 16 },slash方向输出:1 5 2 9 6 3 13 10 7 4 14 11 8 15 12 16 backsl...

2014-04-28 17:55:37 2589

Spring源码学习-PropertyPlaceholderHelper

今天在看Spring 3.0.0.RELEASE的源码,发现PropertyPlaceholderHelper的一个bug当时觉得奇怪,上网一搜,果然是个bug,不过早就有人发现了,且已经修复:详见:[url]http://forum.spring.io/forum/spring-projects/container/88107-propertyplaceholderhelper-...

2014-04-25 18:47:56 124

TCP的TIME-WAIT

原文连接:[url]http://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html[/url]以下为对原文的阅读笔记说明: 主动关闭的一方称为local end,被动关闭的一方称为remote end本地IP、本地端口、远端IP、远端端口这一“四元组”称为quadruplet,也称为socke...

2014-04-23 16:35:23 85

Netty源码学习-HTTP-tunnel

Netty关于HTTP tunnel的说明:[url]http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/socket/http/package-summary.html#package_description[/url]这个说明有点太简略了一个完整的例子在这里:[url]https://github....

2014-01-14 18:19:03 290

Netty源码学习-FileRegion

今天看org.jboss.netty.example.http.file.HttpStaticFileServerHandler.java可以直接往channel里面写入一个FileRegion对象,而不需要相应的encoder:[code="java"] //pipeline(没有诸如“FileRegionEncoder”的handler): public Chann...

2013-12-31 17:17:01 916

Netty源码学习-HttpChunkAggregator-HttpRequestEncoder-HttpResponseDecoder

今天看Netty如何实现一个Http Serverorg.jboss.netty.example.http.file.HttpStaticFileServerPipelineFactory:[code="java"] pipeline.addLast("decoder", new HttpRequestDecoder()); pipeline.addLast("ag...

2013-12-27 16:10:40 1386

Netty源码学习-ReadTimeoutHandler

ReadTimeoutHandler的实现思路:开启一个定时任务,如果在指定时间内没有接收到消息,则抛出ReadTimeoutException这个异常的捕获,在开发中,交给跟在ReadTimeoutHandler后面的ChannelHandler,例如[code="java"]private final ChannelHandler timeoutHandler =...

2013-12-26 17:53:50 2688

Netty学习笔记

本文是阅读以下两篇文章时:[url]http://seeallhearall.blogspot.com/2012/05/netty-tutorial-part-1-introduction-to.html[/url][url]http://seeallhearall.blogspot.com/2012/06/netty-tutorial-part-15-on-channel.html[...

2013-12-25 18:39:33 76

Netty源码学习-ChannelHandler

一般来说,“有状态”的ChannelHandler不应该是“共享”的,“无状态”的ChannelHandler则可“共享”例如ObjectEncoder是“共享”的, 但 ObjectDecoder 不是因为每一次调用decode方法时,可能数据未接收完全(incomplete),它与上一次decode时接收到的数据“累计”起来才有可能是完整的数据,是“有状态”的...

2013-12-25 18:12:02 96

Netty源码学习-ServerBootstrap启动及事件处理过程

Netty是采用了Reactor模式的多线程版本,建议先看下面这篇文章了解一下Reactor模式:[url]http://bylijinnan.iteye.com/blog/1992325[/url]Netty的启动及事件处理的流程,基本上是按照上面这篇文章来走的文章里面提到的操作,每一步都能在Netty里面找到对应的代码其中Reactor里面的Acceptor就对应Net...

2013-12-19 20:11:57 181

Netty源码学习-Java-NIO-Reactor

Netty里面采用了NIO-based Reactor Pattern了解这个模式对学习Netty非常有帮助参考以下两篇文章:[url]http://jeewanthad.blogspot.com/2013/02/reactor-pattern-explained-part-1.html[/url][url]http://gee.cs.oswego.edu/dl/cpjsl...

2013-12-19 18:21:55 130

空空如也

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

TA关注的人

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