- 博客(16)
- 资源 (4)
- 收藏
- 关注
原创 Spring AOP实现声明式事务代码分析
众所周知,Spring的声明式事务是利用AOP手段实现的,所谓“深入一点,你会更快乐”,本文试图给出相关代码分析。 AOP联盟为增强定义了org.aopalliance.aop.Advice接口,Spring由Advice接口扩展了5中类型的增强(接口),AOP联盟自身提供了IntroductionInterceptor->MethodInterceptor->Intercept...
2017-06-27 14:38:55 697
原创 Spring AOP实现原理
AOP的实现者AOP工具的设计目标是把横切的问题(如性能监视、事务管理)模块化。使用类似于OOP的方式进行切面的编程工作。位于AOP工具核心的是连接点模型,它提供了一种机制,可以识别出在哪里发生了横切。AspectJAspectJ是语言级的AOP实现,2001年由Xerox PARC的AOP小组发布。AspectJ扩展了Java语言,定义了AOP语法,能够在编译器提供横切代码的织...
2017-06-27 14:37:38 374
原创 深入理解Java内存模型 - volatile
volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile long vl = 0L
2017-06-23 08:07:50 372
原创 全面剖析synchronized
剖析 SynchronizedSynchronized 介绍Synchronized 方面的文章网上有很多了。它主要是用来进行同步操作。也被称为重量级的锁,它的同步包括:对于普通方法同步,锁是当前实例对象对于静态方法同步,锁是当前类的 Class 对象对于方法块同步,锁是 Synchronized 括号里的对象上述都是对象级别的锁,当一个线程访问对象中的同步
2017-06-23 07:56:43 561
原创 Dubbo架构设计详解
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。...
2017-06-23 07:52:15 390
原创 深入理解Redis中的主键失效及其实现机制
作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Reids也不例外。在Redis提供的诸多命令中,EXPIRE、EXPIREAT、PEXPIRE、PEXPIREAT以及SETEX和PSETEX均可以用来设置一条Key-Value对的失效时间,而一条Key-Value对一旦被关联了失效时间就会在到期后自动删除(或者说变得无法访问更为准确)。可以说,主键失效这个概念还是比较容易理解...
2017-06-23 07:47:37 474
原创 Redis Cluster原理
一、CLUSTER MEET 命令的实现 通过向节点 A 发送 CLUSTER MEET 命令,客户端可以让接收命令的节点 A 将另一个节点 B 添加到节点 A 当前所在的集群里面: CLUSTER MEET <ip> <port> 收到命令的节点 A 将与节点 B 进行握手(handshake),以此来确认彼此的存在,并为将来的进一步通信打好基础: ...
2017-06-23 07:42:33 439
原创 Redis客户端简单封装
Redis客户端简单封装并集成spring. spring-data-redis对redis有过度封装的嫌疑,而且也没有提供sharding模式,本文遂简单封装jedis。<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" ...
2017-06-23 07:36:52 915
原创 Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ + Elasticsearch)
https://github.com/javahongxi/whatsmars熟悉分布式架构下的开发,熟悉电商业务;理解JVM,深入理解面向对象,熟练使用多线程,理解并熟练使用常用设计模式;深入理解并熟练使用Spring、Spring Boot;熟悉微服务架构,熟练使用Dubbo,了解过其源码,熟练使用Netty;熟悉消息中间件应用场景,熟练使用RocketMQ,深入研究过其源码,了解Kaf...
2017-06-21 23:56:54 2759 3
转载 Netty的线程模型
1. 背景1.1. Java线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。1.1.2. 多线程随着硬件性能的提升,CPU的核数越来越越多,很多服务器标配已经达到32或64核。通...
2017-06-19 01:09:39 465
原创 深入解读zookeeper一致性原理
一、ZooKeeper 的实现1.1 ZooKeeper处理单点故障我们知道可以通过ZooKeeper对分布式系统进行Master选举,来解决分布式系统的单点故障,如图所示。图 1.1 ZooKeeper解决单点故障那么我们继续分析一下,ZooKeeper通过Master选举来帮助分布式系统解决单点故障,保证该系统中每时每刻只有一个Master为分布式系统提供服务。也就是说分布式的单点问题交给了Z...
2017-06-19 01:06:06 2989 1
原创 Redis复制
在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称呼被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave)。 127.0.0.1:12345> SLAVEOF 127.0.0.1 6379 一、旧版(2.8版以前)复制功能的实现 Redis的复制功...
2017-06-19 01:03:32 323
原创 RocketMQ高并发读写
RocketMQ的并发读写能力扛住了2016年双十一,每秒17.5万笔订单的创建(单笔订单衍生出N条消息,实际tps是17.5*n 万),下面对其高并发读写原理进行探讨。主要体现在两方面:客户端收发消息,服务器接收消息并持久化(重点)。客户端(RocketMQ-client)1,客户端发送消息有负载均衡,客户端内存中保存着当前所有的服务器列表,每次发送都切换一台服务器发送消息,使得每台服务...
2017-06-09 13:28:27 16950 3
原创 RocketMQ架构模块解析
RocketMQ是一个分布式开放消息中间件,底层基于队列模型来实现消息收发功能。RocketMQ集群中包含4个模块:Namesrv, Broker, Producer, Consumer。Namesrv: 存储当前集群所有Brokers信息、Topic跟Broker的对应关系。 Broker: 集群最核心模块,主要负责Topic消息存储、消费者的消费位点管理(消费进度)。 Producer...
2017-06-09 13:27:23 17041 2
转载 你好,RocketMQ
http://rocketmq.apache.org/编者按这些年开源氛围越来越好,各大IT公司都纷纷将一些自研代码开源出来。2012年,阿里巴巴开源其自研的第三代分布式消息中间件——RocketMQ。经过几年的技术打磨,阿里称基于RocketMQ技术,目前双十一当天消息容量可达到万亿级。2016年11月,阿里将RocketMQ捐献给Apache软件基金会,正式成为孵化项目。阿里称会将其打造成顶级...
2017-06-06 20:08:26 1431
原创 dubbo请求调用过程分析
服务消费方发起请求当服务的消费方引用了某远程服务,服务的应用方在spring的配置实例如下:<dubbo:referenceid="demoService"interface="com.alibaba.dubbo.demo.DemoServ ice" />demoService实例其实是代理工厂生产的代理对象(大家可以参考代理那部分生成的伪代码),在代码中调用demoService.s...
2017-06-06 11:49:22 1414
Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ)
2018-09-02
javahongxi的技术博客
2017-11-05
研究各种Java技术(Springboot+Redis+Dubbo+Rocketmq) 京东技术 www.toutiao.im
2017-09-12
京东核心技术详解 www.toutiao.im
2017-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人