自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!

想往高处走,怎么能不懂 Dubbo?Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一。Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉。下面我为大家准备了一些 Dubbo 常见的的面试题,一些是我经常问别人的,一些是我过去面试遇到的一些问题,总结给大家,希望对大家能有所帮助。1、Dubbo是什么?Dubbo是阿里巴巴开源...

2018-12-27 10:52:43 317

原创 线程并发控制之循环栅栏CyclicBarrier

我讲了倒计时器CountDownLatch的应用,它是阻塞线程直到计时器归0的一种等待方式。今天讲的这个循环栅栏CyclicBarrier与倒计时器非常类似,但它比倒时器更加强大且稍微复杂,它也是并发控制中非常实用的工具。循环栅栏CyclicBarrier,从英语字义可以理解为它是可以循环利用的,且栅栏是用来阻止线程在栅栏外等待的,它同样是阻止线程等待,它和CountDownLatch倒底有什...

2018-12-27 10:43:12 190

原创 线程并发控制之倒计时器CountDownLatch

CountDownLatch见名思义,即倒计时器,是多线程并发控制中非常有用的工具类,它可以控制线程等待,直到倒计时器归0再继续执行。给你出个题,控制5个线程执行完后主线徎再往下执行,并统计5个线程的所耗时间。当然我们可以通过join的形式完成这道题,但如果我说统计100个1000个线程呢?难道要写1000个join等待吗?这显然是不现实的。废话少说,我们来做一个例子看看上面的题怎么实现,...

2018-12-27 10:28:20 231

原创 干货 | 教你如何监控 Java 线程池运行状态

实际开发过程中,在线程池使用过程中可能会遇到各方面的故障,如线程池阻塞,无法提交新任务等。如果你想监控某一个线程池的执行状态,线程池执行类 ThreadPoolExecutor 也给出了相关的 API, 能实时获取线程池的当前活动线程数、正在排队中的线程数、已经执行完成的线程数、总线程数等。总线程数 = 排队线程数 + 活动线程数 + 执行完成的线程数。下面给出一个线程池使用示例,及教...

2018-12-27 10:15:24 462

原创 java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?

死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了。 死锁 死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又相互等对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。 举个例子,A同学抢了B同学的钢笔,B同学抢了A同学的书,两个人都相互占用对方的东西,都在让...

2018-12-27 09:57:27 194

原创 XmlWebApplicationContext实例化过程

在spring中,如何实例化了XmlWebApplicationContextspring的配置文件加载是以监听的方式加载的xml配置文件ContextLoader类中有一个静态代码块static { // Load default strategy implementations from properties file. // This is currently s...

2018-12-25 22:30:57 3783 1

原创 spring中如何修改allowBeanDefinitionOverriding

首先得弄清楚这两个参数的意思:allowBeanDefinitionOverriding运行beanDefinition覆盖,默认情况下,如果beanDefinitionMap有重复的key存在时就会抛异常,就是由这个参数决定的。如果把这个参数设置为true,那么就允许相同key情况下beanDefinition实例的覆盖。源码请看:当spring解析<bean>标签,并且...

2018-12-25 21:50:43 19640 1

原创 巧用CAS解决数据一致性问题

在高并发的分布式环境下,对于数据的查询与修改容易引发一致性问题,本文将分享一种非常简单但有效的优化方法。一、业务场景业务场景为,购买商品的过程要对余额进行查询与修改,大致的业务流程如下:(1)从数据库查询用户现有余额 SELECT money FROM t_yue WHERE uid=$uid,不妨设查询出来的$old_money=100元(2)业务层实施业务逻辑,比如购买一个...

2018-12-25 21:12:11 255

原创 通俗理解乐观锁和悲观锁

乐观锁      每次获取数据的时候,都不会担心数据被修改,所以每次获取数据的时候都不会进行加锁,但是在更新数据的时候需要判断该数据是否被别人修改过。如果数据被其他线程修改,则不进行数据更新,如果数据没有被其他线程修改,则进行数据更新。由于数据没有进行加锁,期间该数据可以被其他线程进行读写操作。一般使用version方式和CAS操作方式。 Version方式:        一般是...

2018-12-25 21:04:42 135

原创 ApplicationContextInitializer接口的源码解读

ApplicationContextInitializer接口的作用:可以在spring的上下文ApplicationContext初始化之前,即wac.refresh()之前修改spring上下文属性。源码如下configureAndRefreshWebApplicationContext(ConfigurableWebApplicationContext wac){......

2018-12-25 16:56:44 242

原创 spring和springmvc的关系

如果想要了解spring和springmvc的关系,首先得从web.xml配置文件开始讲起如下web.xml配置<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><...

2018-12-25 16:12:05 4990

原创 最新开源项目 Confluo,吞吐量是 Kafka 的 4 到 10 倍!

       近日伯克利 RISE Lab 开源了一个多数据流实时分布式分析系统 Confluo,它即是一个网络监控和诊断框架,也可以作为时序数据库和发布订阅消息系统。当下,类似基于终端主机的网络监控系统、IoT 设备传感器程序等应用,其后端的服务器每秒都可以捕获数千万个数据点。这些数据被用于在线查询,实现可视化与监控,或者用于离线查询,进行故障分析和系统优化。这样的使用场景下,就需要实时...

2018-12-25 14:57:27 176

原创 springboot发邮件教你什么叫简单易用

1、springboot工程pom.xml配置 &lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt; &lt;version...

2018-12-11 21:38:31 249 1

原创 电商项目那点事儿-高并发架构实战干货

一、关于高并发 高并发是指在同一个时间点,有很多用户同时访问URL地址,比如:淘宝的双11、双12,就会产生高并发。又如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击,再屌丝点的说法就像玩LOL被ADC暴击了一样,那伤害你懂的。 1 高并发会来带的后果  服务端:导致站点服务器/DB服务器资源被占满崩溃,数据的存储和更新结果和理想的设计是不一样的,比如:出现重复的数...

2018-12-11 20:41:28 586

原创 基于activemq的分布式事务解决方案

1、分布式事务出现场景场景描述:支付宝转账余额宝分布式事务必须满足的条件:1、远程RPC调用,支付宝和余额宝存在接口调用2、支付宝和余额宝使用不同的数据库如图: 2、分布式事务解决方案1、基于数据库XA协议的两段提交XA协议是数据库支持的一种协议,其核心是一个事务管理器用来统一管理两个分布式数据库,如图事务管理器负责跟支付宝数据库和余额宝数据库打交道...

2018-12-11 13:36:56 10740 9

空空如也

空空如也

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

TA关注的人

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