Archive: 2016/12

MySQL锁机制总结

实现的是基于多版本的并发控制协议——MVCC (Multi-Version Concurrency Control) (注:与MVCC相对的,是基于锁的并发控制,Lock-Based Concurrency Control)。MVCC最大的好处,相信也是耳熟能详:读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性能,这也是为什么现阶段,几乎所有的RD

spring+rabbitmq+protobuf

好久没有用Java写过东西了,感觉都手生了。最近项目中需要用到rabbitmq作为消息队列,在各个模块和服务之间发送Protobuf类型的消息。这里记录一下简单的接入过程,以及碰到的坑。 RabbitMQ Mac上的简单安装1234brew install rabbitmq#启用RabbitMQ UI management: http://localhost:15672/usr/local/Cel

maven-shade-plugin解决包冲突问题

使用Maven做依赖包管理的时候,经常如下问题:A和B都依赖一个第三方库(分别是V1和V2), 但是V1和V2又是不兼容的,这个时候就很蛋疼了。比如Guava 1.2和1.8就是不兼容的。 这个时候可以用maven-shade-plugin将A或者B打成一个独立的jar包来解决。 maven-shade-plugin 在打包时,可以将项目中依赖的 jar 包中的一些类文件打包到项目构建生成的 ja

排序去重

场景:对数组进行排序和去重java 8 stream实现12345List<String> list = Arrays.asList("EE", "AA","AA","BB");list.stream() .distinct() .sorted() .forEach(x -> System.out.println(x)); 二叉树实现思路