排序:
默认
按更新时间
按访问量

扩展阿里巴巴Java开发规约插件

前言 工作中难免会遇到维护别人代码的情况,那么首先就得看懂别人写的代码。如果对方写的代码混乱臃肿,维护成本必然很高,如果对方写的代码优雅清晰,那维护的人看起来必然心情愉悦。正所谓“前人栽树,后人乘凉;前人埋坑,后人骂娘”。 代码首先是给人看的,其次才是给机器看到,如何编写出任何人都看到懂的...

2018-01-29 09:26:13

阅读数:583

评论数:0

分布式系统那些事-分布式ID生成策略

1.数据库自增ID的弊端 暴露业务数据,比如用户表采用自增ID,别人可以根据ID知道系统有多少用户 分库分表时无法保证ID唯一性 2.需要什么样的ID生成策略 全局唯一 有序性 高性能,生成ID时延低 可扩展,支持数据库水平扩展 安全性,不能暴露业务数据 3.几种ID生成方...

2018-07-19 13:59:05

阅读数:72

评论数:0

分布式系统那些事-2PC和3PC协议

前言 在分布式系统中,每个节点虽然都能明确知道自己事务操作结果是成功还是失败,但是无法直接获取到其他分布式节点的操作结果。因此,当一个事务操作需要跨越多个分布式节点的时候,为了保持事务处理的ACID特性,就需要引入一个称为“协调者(Coordinator)”的组件来统一调度所有的分布式节点的执行...

2018-06-27 22:04:10

阅读数:84

评论数:0

分布式系统那些事-CAP和BASE理论

CAP理论 定义 CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Consistence) 每次读取到的数据都是最近一次写的数据,等同于所有节点访问同一份最新的数据副本...

2018-06-27 18:32:34

阅读数:110

评论数:0

java.lang.UnsupportedOperationException问题探究

异常代码 ListInteger> list = Arrays.asList(1,2,3); list.add(4); list.remove(1); list.clear(); 运行这段代码,执行的三个方法都会抛异常:java.lang.UnsupportedOperatio...

2018-01-22 16:07:17

阅读数:129

评论数:0

MySQL优化系列之查询优化

前言 MySQL优化有两大层面,第一是数据库层面,第二是硬件层面。数据库层面可以细分为以下几个方面: 数据库schema设计优化 SQL查询优化 锁策略优化 存储引擎优化 服务器配置优化 主从,读写分离 集群,负载均衡 本文讲解SQL查询优化 分析你的SQL Explain查看S...

2017-09-14 16:12:21

阅读数:811

评论数:0

MySQL优化系列之数据库schema设计优化

前言MySQL优化有两大层面,第一是数据库层面,第二是硬件层面。数据库层面可以细分为以下几个方面: 数据库schema设计优化 SQL查询优化 锁策略优化 存储引擎优化 服务器配置优化 主从,读写分离 集群,负载均衡 本文讲解数据库schema设计优化高效的模型设计适度冗余(反范式)在很多人眼里,...

2017-09-14 16:07:55

阅读数:403

评论数:0

MySQL Replication主从复制搭建

MySQL安装环境版本:Linux:CentOS6.5MySQL:5.7.19IP:192.168.48.33(Master)、192.168.48.34(Slave)安装步骤:1.根据Linux版本下载RPMwget dev.mysql.com/get/mysql-community-relea...

2017-09-11 23:51:02

阅读数:209

评论数:0

MySQL Replication主从复制原理及拓扑结构

复制解决的问题1.备份容灾不同备库分布在不用的地理位置,物理隔绝,可以用来备份数据和容灾2.负载均衡复制可以将多个读操作分布到不用的备库服务器,实现对读密集型应用的优化3.高可用性能和故障切换复制能避免MySQL单点故障,某个节点发生宕机,可以快速记性故障切换,提高系统高可用性4.MySQL升级测...

2017-09-11 23:04:24

阅读数:346

评论数:0

RabbitMQ消息监听异常问题探究

问题场景在使用Spring RabbitMQ做消息监听时,如果监听程序处理异常了,且未对异常进行捕获,会一直重复接收消息,然后一直抛异常。为了更好的描述问题,下面写个简单的例子。通过访问null对象来引发空指针异常,消息监听处理程序代码清单:package amqp;import org.spri...

2017-09-09 10:27:54

阅读数:11659

评论数:2

Spring整合Quartz浅析

Quartz概念基础Quartz 是 OpenSymphony 开源组织在任务调度领域的一个开源项目,完全基于 Java 实现。核心元素概念: Job: 是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,Job...

2017-08-15 21:19:44

阅读数:981

评论数:0

Spring整合Redis之哨兵与故障转移

前言上篇博客谈到了Spring整合redis集群以及故障转移演示,会发现redis集群模式存在一个很明显的问题:当某个主节点及其所有从节点挂掉,整个集群因为缺少该节点负责范围的哈希槽(hash slot)而宕掉,不具高可用性。redis引入了哨兵(sentinel)模式,能很好解决集群模式存在的不...

2017-08-10 10:22:43

阅读数:2155

评论数:0

Spring整合Redis之集群与故障转移

前言本文主要讲解spring整合redis集群,关于redis集群搭建网上相关文章挺多的,大家可以自己先搭建好,可以参考官网或中文版官网。本文假设你已经搭建好集群了,笔者redis(版本4.0.1)集群环境如下图:7000、7001、7002三个主节点,7003、7004、7005三个从节点。Re...

2017-08-06 18:26:17

阅读数:1853

评论数:0

关于RabbitMQ的一些问题

一、三种exhange用法有何区别?Direct Exchange代码示例接收端配置文件清单comsumer-context.xml,监听directQueue队列消息(简化配置,关于spring-rabbitmq的配置可以参考楼主以前的这篇博客)<!--配置队列名--> <ra...

2017-07-24 21:20:34

阅读数:690

评论数:0

list转map工具类

前言项目中时长需要用到list转map的场景,比如需要查询所有用户的订单列表,但是用户和订单不在一个库的时候,无法进行join操作,就只能程序处理:先查询一批用户,再根据用户的id列表批量查询订单列表,然后在程序中拼接用户和其对应订单。因此写了个小工具类处理,现在分享出来。工具类代码package...

2017-05-23 18:56:30

阅读数:1735

评论数:0

Spring整合RabbitMQ简介

AMQP简介AMQP(Advanced Message Queuing Protoco)高级消息队列协议,属于应用层协议。他有producer、exchange、binding、queue、consumer五种角色,producer将消息发送到exchange,bingding决定exchange...

2017-04-10 11:50:09

阅读数:10181

评论数:0

Spring整合MyBatis后引入自定义类型转化器TypeHandler

MyBatis预定义了许多类型转化器,并不一定能满足所有的需求,如笔者遇到这么个问题:数据库字段类型为datetime时间戳类型,项目组规定ResultMap映射实体时间必须是String类型,MyBatis自带的StringTypeHandler类型转化器转化后的时间字符串会有.0这个小尾巴,然...

2017-03-27 08:52:08

阅读数:1447

评论数:0

IntelliJ IDEA远程调试

远程服务DEBUG模式启动  远程服务以debug模式启动需要执行java命令时带上以下JVM参数java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=5005,server=y,susp...

2016-12-12 15:46:05

阅读数:10592

评论数:4

MyBatis树形结构查询

前言  对于树形结构的数据库设计通常是基于继承关系设计的,也就是通过父ID关联来实现的,还有就是基于左右值编码设计。本文以继承关系设计的树形结构来讨论下MyBatis树形结构查询。以深度为二的树为例,要将这种结构的数据查询出来,通常的做法是先查询一级数据,再查询二级数据,然后在程序里组装起来,想了...

2016-11-24 14:59:18

阅读数:7465

评论数:5

Maven插件之MyBatis Generator

MyBatis Generator(MBG)是MyBatis和iBATIS的逆向工程插件工具,可以根据表结构自动生成实体类、包含简单的CRUD操作的mapper映射文件和mapper接口,无需手工编码,非常的方便,具体用法只需以下三步。

2016-11-07 10:52:00

阅读数:477

评论数:0

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