自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

武汉红喜

https://github.com/javahongxi

  • 博客(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)

Java生态常用技术示例,生产级别Demo。专注于Java生态研究,为Java学习者少走弯路。

2018-09-02

javahongxi的技术博客

Java系列常用技术原理分析:Java基础,Servlet,Tomcat,Spring,SpringMVC,SpringBoot,Redis,Dubbo,RocketMQ,ActiveMQ,Zookeeper,MySQL,架构。资料来源于我的博客www.toutiao.im, GitHub: https://github.com/javahongxi. 深入一点,你会更快乐。

2017-11-05

研究各种Java技术(Springboot+Redis+Dubbo+Rocketmq) 京东技术 www.toutiao.im

研究各种Java技术(Springboot+Redis+Dubbo+Rocketmq),地址https://github.com/javahongxi/whatsmars,为maven项目,含如下模块: whatsmars-common mongodb,mail,AES,DES加解密 whatsmars-earth-web springmvc+velocity whatsmars-earth-support-web earth工程的辅助工程(task,mq,uuid,monitor..) whatmars-fs-web 用mongodb存储图片和文件 whatsmars-javase-example Java基础学习 whatsmars-spring spring原理、集成及新特性 whatsmars-tomcat 模拟tomcat实现 whatsmars-dbrouter 分库分表实现 whatsmars-worker 多实例任务调度 whatsmars-dubbo Dubbo demo whatsmars-mq rocketmq,activemq rocketmq-console rocketmq管理后台 whatsmars-rpc 常用rpc whatsmars-spring-boot springboot果然很方便 whatsmars-redis Cache Service & Redis Cluster whatsmars-motan weibo分布式RPC框架 demo server whatsmars-motan-demo weibo分布式RPC框架 demo server&client

2017-09-12

京东核心技术详解 www.toutiao.im

详解京东核心技术,如服务化框架JSF,云缓存Jimdb,消息中间件JMQ,京东商城技术架构等。更多技术详见www.toutiao.im

2017-01-20

空空如也

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

TA关注的人

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