自定义博客皮肤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

  • 博客(265)
  • 资源 (4)
  • 论坛 (1)

原创 Java生态研究

Java语言之所以经久不衰,长期霸占编程语言排行榜前两名,除了简单、跨平台、安全和性能不错之外,更重要的是它在开源的基础上逐渐形成了无与伦比的技术生态。Java生态里的开源技术数不胜数,而程序员的学习精力是有限的,而且也完全没必要什么都学,所以非常有必要搞清楚自己应该学习什么,由此本人特地探索了一套Java生态学习模式。这套生态学习模式是基于当前微服务架构大行其道的实践,之所以称为生态模...

2019-05-17 07:40:05 735

原创 Java核心技术解析

JUC JMM与线程安全 JUC 指令重排与内存屏障 JUC Java内存模型FAQ JUC 同步和Java内存模型 JUC volatile实现原理 JUC AQS详解 JUC AQS理解 JUC synchronized优化 JUC 线程和同步 JUC 线程状态 JUC 线程通信 JUC ThreadLocal介绍及原理 JUC 死锁及避免方案 JUC 读写锁简单实现 JUC 信号量 JUC 阻塞队列 NIO Overview NIO Channel NIO Buff

2020-06-21 17:16:23 264

转载 缓存穿透,缓存击穿,缓存雪崩解决方案分析

前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案有很多种...

2019-05-11 20:27:18 344

转载 Dubbo2.7 三大新特性详解

自 2017 年 7 月阿里重启 Dubbo 开源,到目前为止 github star 数,contributor 数都有了非常大的提升。2018 年 2 月 9 日阿里决定将 Dubbo 项目贡献给 Apache,经过一周的投票,顺利成为了 Apache 的孵化项目,也就是大家现在看到的Incubator Dubbo。预计在 2019 年 4 月,Dubbo 可以达成毕业,成为 Apache ...

2019-03-22 07:50:03 9900

转载 分布式之数据库和缓存双写一致性方案解析

转自 https://maimai.cn/article/detail?fid=1057432698&efid=vnXzd0cl0pDwUW6f6iMpGA&from=single_feed为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据...

2019-01-25 13:43:38 325

转载 开发者如何玩转 RocketMQ?附最全源码解读 【Remoting篇】

借用一句话“消息队列的本质在于消息的发送、存储和接收”。那么,对于一款消息队列来说,如何做到消息的高效发送与接收是重点和关键。前排友情提示:这是一篇很硬的干货。 RocketMQ中Remoting通信模块概览 RocketMQ消息队列的整体部署架构如下图所示: 先来说下RocketMQ消息队列集群中的几个角色: NameServer:在MQ集群中做的是...

2019-01-24 15:59:50 651

转载 Dubbo 2.7背后的思考和实现方式

Dubbo 2.7 将围绕 异步支持优化、元数据改造,引入JDK8的特性、Netty4.0的特性以及MetricsAPI 5个方面提升服务调用和服务治理的效率,以及可扩展性,同时将修复社区提出的若干问题。据悉,2.7.x会作为Dubbo在Apache社区的毕业版本,Dubbo将有机会成为继RocketMQ后,来自阿里巴巴的又一个Apache顶级项目(TLP)。 优化对异步的支持...

2019-01-22 16:21:37 2008 4

原创 Mybatis multi database in spring boot 2

@Configurationpublic class MybatisConfig { @MapperScan(basePackages = "org.hongxi.whatsmars.boot.sample.mybatis.dao.user", sqlSessionTemplateRef = "userSqlSessionTemplate") private class use...

2019-01-09 16:25:22 317

原创 rocketmq-spring-boot-starter使用指南

https://github.com/apache/rocketmq-spring.git针对官方starter修改点 官方支持连接多个集群(订阅) (官方一个应用只能连接一个集群)顺序消息消费失败,可配重试次数 (非顺序消息默认重试16次,每次时间延后)发送延时消息方法参数优化(魔法参数改为枚举)优化getMessageType方法,支持 MyConsumer extends Abs...

2019-01-09 16:24:02 25153 29

原创 dubbo-spring-boot-starter使用指南

https://github.com/apache/incubator-dubbo-spring-boot-project.gitdependencies<dependency> <groupId>com.alibaba.boot</groupId> &a

2019-01-09 16:21:52 2102

原创 RocketMQ客户端简单封装

public class ClientConfig { protected String namesrvAddr = System.getProperty(MixAll.NAMESRV_ADDR_PROPERTY, System.getenv(MixAll.NAMESRV_ADDR_ENV)); protected String instanceName = System.ge...

2019-01-09 16:17:09 1765

原创 Redis客户端简单封装

public class ShardedRedisClient implements FactoryBean<ShardedJedisPool>, InitializingBean, DisposableBean { private ShardedJedisPool shardedJedisPool; private JedisPoolConfig jedisPoo...

2019-01-08 23:13:26 390

转载 Apache kafka原理与特性(0.8V)

https://shift-alt-ctrl.iteye.com/blog/1930345前言: kafka是一个轻量级的/分布式的/具备replication能力的日志采集组件,通常被集成到应用系统中,收集"用户行为日志"等,并可以使用各种消费终端(consumer)将消息转存到HDFS等其他结构化数据存储系统中.因为日志消息通常为文本数据,尺寸较小,且对实时性以及数据可靠性要求不严格,但是...

2018-12-19 22:27:34 221

转载 RocketMQ消费失败消息深入分析

前言消息队列是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。由于每个消息队列都有它的优势和劣势,我们公司对于不同的场景使用了不同类型的消息队列。对于RocketMQ消费端存在消息消费失败的情况,通常有两种方式,一种是consumer端知道怎么...

2018-12-14 21:31:09 3992

转载 Java日志框架slf4j、jcl、jul、log4j1、log4j2、logback大总结

1 系列目录jdk-logging、log4j、logback日志介绍及原理 commons-logging与jdk-logging、log4j1、log4j2、logback的集成原理 slf4j与jdk-logging、log4j1、log4j2、logback的集成原理 slf4j、jcl、jul、log4j1、log4j2、logback大总结2各种jar包总结 log4...

2018-12-14 21:28:55 253

原创 RocketMQ吐血总结

RocketMQ吐血总结架构 概念模型最基本的概念模型与扩展后段概念模型 存储模型 RocketMQ吐血总结User GuideRocketMQ是一款分布式消息中间件,最初是由阿里巴巴消息中间件团队研发并大规模应用于生产系统,满足线上海量消息堆积的需求, 在2016年底捐赠给Apache开源基金会成为孵化项目,经过不到一年时间正式成为了A...

2018-12-09 20:36:36 63003 20

转载 知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路

本文来自知乎官方技术团队的“知乎技术专栏”,感谢原作者陈鹏的无私分享。1、引言知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经形成了一整套完整自动化运维服务体系,提供很多强大的功能。本文作者陈鹏是该系统的负责人,本次文章深入介绍了该系统的方方面面,值得互联网后端程序员仔细研究。(本文同步发布于:http://www.52im.net...

2018-09-19 08:39:02 949

转载 阿里云王牌架构师一问开发者:系统要改造成微服务吗

阿里云高级解决方案架构师 杨旭世界最大混合云的总架构师,4年前,开始作为双11阿里云技术负责人,负责搭建全球最大的混合云结构,把 “双11”的电商业务和技术场景在阿里云上实现,并保障这个混合云在双11当天能够满足全球客户的购物需求。正文:最近大家都在谈微服务,随着越来越多的在线业务需要提供更大并发的scale-up 和 scale out能力,微服务确实提供了比较好分布式服务的解决方案...

2018-08-09 12:34:02 420

转载 为什么很多人不愿意用hibernate了?

先说hibernate厉害在哪,然后再来说为啥享受hibernate这些便利会有问题。hibernate让你可以不写sql,这不单可以让你的应用更好移植到其他数据库,更主要是让程序员可以更专注与业务逻辑,更关注于数据和数据、对象和对象之间的关系。hibernate对一对多,多对多关系实现的是非常好的。很关键的一点,它支持lazy,可以让你的数据只在需要的时候被load,听起来非常美是不是?hibe...

2018-06-24 11:49:53 18022 15

转载 在阿里,我们如何管理代码分支?

引言在阿里内部,流行着许多有意思的工程实践。有些实践通过工具和流程嵌在集团的大环境里,外界不容易复制,有些实践则是流露在大家的日常习惯里,被默默的遵守。比如分支管理这件事,其实属于工具和习惯各占一半,并且颇有阿里特色的成分,适合作为一个例子。阿里有很多的研发团队,不同事业部使用的发布流程、分支策略并非整齐划一,但总体上看是比较规整的。其中有一种主流的发布模式以及对应的分支使用方式,称为“AoneF...

2018-04-14 10:42:59 599

转载 浅析IO模型

也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Pr...

2018-03-23 14:50:53 292

转载 微博CacheService架构浅析

http://www.infoq.com/cn/articles/weibo-cacheservice-architecture/微博作为国内最大的社交媒体网站之一,每天承载着亿万用户的服务请求,这些请求的背后,需要消耗着巨大的计算、内存、网络、I/O等资源。而且因为微博的产品特性,节假日、热门事件等可能带来突发数倍甚至十几倍的访问峰值,这些都对于支撑微博的底层基础架构提出了比较严苛的要求,需要满...

2018-03-23 14:48:35 1121

转载 ActiveMQ与虚拟通道

郑重提示,本文转载自http://shift-alt-ctrl.iteye.com/blog/2065436 ActiveMQ提供了虚拟通道的特性(Virtual Destination),它允许一个逻辑通道(logical destination)映射成一个或者多个物理通道(physical destination);它可以非常灵活的解决"消息整合"方面的问题,它可以实现:    1...

2018-03-23 14:43:18 259

转载 RabbitMQ基础概念详细介绍

你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎?如果是,那么恭喜你,消息服务让你可以很轻松地解决这些问题。消息服务擅长于解决多系统、异构系统间的数据交换(消息通知/通讯)问题,你也可以把它用于系统间服务的相互调用(RPC)。本文将要介绍的RabbitMQ就是当前最主流的消息中间件之一。RabbitMQ简介AMQP,即Ad...

2018-03-23 14:41:17 235

转载 数据库建立索引的原则

使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的 值进行排序的一种结构,例如 employee 表的姓(lname)列。如果要按姓查找 特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。         索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集 合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。        索引提供指向存储...

2018-03-23 14:37:34 524 1

原创 Mac mongodb

mongodb启动     bin/mongod    -----    waiting for connections on port 27017  表示等待连接即可以通过客户端(Robomongo)或程序连接了mongo shell     bin/mongo localhost:~ javahongxi$ cd soft/mongodb-2.4.6/localhost:mongodb-2.4...

2018-03-23 14:33:37 225

原创 Mac OS终端提示符前缀”bogon”

像往常一样新打开一个终端,却发现一个很有意思的现象,以前的提示符的组成为:[机器名]:~[用户名]以前:YangGavin’s MacBook Pro:~ yanggavin$现在:bogon:~ yanggavin$最麻烦的是我本地用IDEA调试web应用,控制台会提示下面错误:Error: Exception thrown by the agent : java.net.MalformedUR...

2018-03-23 14:23:31 1359

转载 分布式事务综述(XA, TCC)

https://mp.weixin.qq.com/s?__biz=MzUzMzU5Mjc1Nw==&mid=2247483681&idx=1&sn=05845495c5ef33683addd98fffc72106&chksm=faa0eefbcdd767edbf46cea6f223b426e276dd4d9b19cce64f59387590818f5e4eb96c7...

2018-03-23 14:05:16 6069

原创 分布式事务简单处理

解决分布式事务最简单的方案就是向前或向后,即补充或回滚。业务逻辑有如下三步:调用A服务冻结金额调用B服务增加额度记录数据库进行到第2步失败 -> 写task,回滚第1步(通知A服务方去回滚)进行到第3步失败 -> 写task,从A/B服务处同步数据至数据库还有一种方案就是写task,转化为本地事务,由task去执行上述三步,失败则重试task,当然,A/B服务都有幂等性处理。这种方案的...

2018-03-09 18:10:34 367

转载 支付宝分布式事务服务DTS

分布式事务服务 DTS二如何玩转 DTS,基本上使用 DTS 对发起方的配置要求会多一点。添加 DTS 的依赖NOTE: 发起方和参与方都需要添加依赖。如果使用 SOFA Lite,只需按照样例工程里的方式添加依赖:<dependency> <groupId>com.alipay.sofa</groupId> <artifactId>...

2018-03-09 18:09:03 982

转载 Spring之@Configuration配置解析

 1.简单的示例:@Configuration2 @EnableConfigurationProperties({DemoProperties.class})3 public class DemoConfiguration {4 5 @Bean6 public Book getBook(){7 return new Book();8 }9...

2018-03-09 18:08:12 961

转载 Maven生成可以直接运行的jar包的多种方式

转自 http://blog.csdn.net/xiao__gui/article/details/47341385  Maven可以使用mvn package指令对项目进行打包,如果使用java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in xxx.jar"(没有设置Main-Class)、ClassNotFoundEx...

2018-03-09 18:07:15 230

转载 Gradle Installation

InstallationHelpful InformationInstallInstall with a package managerInstall manuallyUpgrade with the Gradle WrapperOlder ReleasesHelpful InformationYou can sign up for free live training with a Gradle...

2018-03-09 18:06:26 494

转载 Gradle 完整指南(Android)

�本文谢绝转载,非要转载,请注明出处http://www.jianshu.com/p/9df3c3b6067a前言为什么需要学Gradle?Gradle 是 Android 现在主流的编译工具,虽然在Gradle 出现之前和之后都有对应更快的编译工具出现,但是 Gradle 的优势就在于它是亲儿子,Gradle 确实比较慢,这和它的编译过程有关,但是现在的Gradle 编译速度已经有了成倍提高。除...

2018-03-09 18:05:40 327

转载 使用Jenkins配置SpringBoot的自由成长之路

一、相关阅读1、使用Jenkins配置Git+Maven的自动化构建http://blog.csdn.net/xlgen157387/article/details/503533172、Jenkins部署Maven多环境项目(dev、beta、prod)的参数设置3、使用Generic Webhook Trigger插件实现Jenkins+WebHooks(码云)持续集成4、使用Generic W...

2018-03-09 18:03:23 4045 4

转载 简单理解token机制

什么是tokentoken的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进...

2018-03-09 18:02:09 4861

转载 【转】Tomcat中Connector常用配置(备忘)

本文转载自http://deep.hongxi.orgTomcat中server.xml有些配置信息是需要我们了解的,最起码知道如何进行简单的调试. <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"  redirectPort="8443" />      默认情况下配置信息是...

2018-03-09 17:50:36 1195

原创 Spring对循环依赖的处理

https://github.com/javahongxi3.2.1  什么是循环依赖       循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则它们最终反映为一个环。此处不是循环调用,循环调用是方法之间的环调用。如图3-5所示: 图3-5 循环引用  ...

2018-03-09 17:50:33 1399 1

转载 JVM宕机分析

   一、能够引起JVM崩溃的常见原因有: 线程阻塞 CPU 使用率过高 JVM Crash 堆内存不足 类装载 Java虚拟机自身的Bug JDK与服务器(CPU、内存、操作系统)的兼容性 内存溢出 二、日志文件 hs_err_pid.log,致命错误出现的时候,JVM生成了hs_err_pid.log这样的文件,其中包含了虚拟机...

2018-03-09 17:50:30 1909

原创 Servlet3.1规范翻译 - 注解和可插拔性

https://github.com/javahongxi本文转载自kaitao.hongxi.org注解和可插拔性本章讨论Servlet 3.0规范定义的注解和使web应用内使用的框架和库能够可插拔的增强。8.1 注解和可插拔性在web应用中,使用注解的类仅当它们位于WEB-INF/classes目录中,或它们被打包到位于应用的WEB-INF/lib中的jar文件中时它们的注...

2018-03-09 17:50:27 138

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

求Java EE工作

发表于 2013-07-14 最后回复 2013-08-05

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