自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chenyi_wu的博客

业勤于精

  • 博客(16)
  • 收藏
  • 关注

原创 dubbo SPI 实现原理

dubbo SPI 实现原理a).定义一个接口b).实现一个接口c).在 MATE-INF/dobbo 下创建以接口全限定名的文件名d).文件内容为 key=实现类全限定名 例如: impl=chenyi.dubbo.test.dubbo.PrintInfoDubboServiceImple).接口添加注解SPI(“impl”)SPI:是dubbo包下的。 impl是配置文件中的keyf).通过dubbo的方式获取对应扩展类: ExtensionLoader.getExtensionLoade

2020-09-04 20:01:49 191

原创 ReentrantLock源码分析

文章目录1. Lock定义和API1.1 Lock的定义1.2 Lock的API1.3 Lock和Synchronized比较的优缺点2. AQS 队列同步器2.1 队列同步器API2.2 AQS实现原理2.2.1 AQS的原理2.2.2 独占式同步状态获取与释放2.2.3 共享式同步状态获取与释放2.2.4 独占式超时获取同步状态3. 可重入锁3.1 如何实现重进入3.2 公平锁和非公平锁的区别4. Condition 接口4.1 condition 接口API4.2condition接口实现原理4.2.

2020-08-22 21:43:07 212

原创 java线程基础整理

threadA.interrupt();

2020-08-16 22:45:04 642

原创 总结一份Guava常用的操作

/** * @author chenyi */public class TestGroovy { /** * 可以存储多个相同kEY的数据. */ @Test public void testHashMultimap(){ //存储数据结构 {key1=[a1,a2],key2=[b1,b2]} HashMultimap<String,Integer> map = HashMultimap.create();.

2020-08-09 16:50:28 243

原创 RocketMQ 延迟队列

在java的延迟队列中,无法支持集群的延迟。Redis可以做到对应的延迟功能,但是自己封装毕竟局限于业务。而且封装也需要耗费一定时间。今天我们就讲一个现有的延迟队列,不仅支持分布式服务,而且解耦业务代码,而且支持不同延迟时间的造好的轮子吧。 ~ 那就是 RocketMQ 延时队列。RocketMQ将延时队列的延时延时时间分为18个级别1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 分别对应下面的延迟时间,在使用时,直接传递 level即可。mess

2020-07-09 18:27:29 14801 1

原创 延时队列

延迟队列最近业务功能的实现上有一个抽奖的功能,但是抽奖准备和抽奖时间结束后,才计算中奖的用户,在原本的设计上,用的是定时任务每秒执行一次,等查询到抽奖结束的数据,在把次轮的中奖用户计算出来。后续在技术选型有了其他的了解和选择。 针对于以下三种类型的选择和整理。Java延时队列java中要实现延迟队列需要使用DelayQueue ,队列头部是最接近将要过期的数据,放入到延时对列中的属于要实现Delay类 而Delay又继承了Comparable接口public interface Delayed e

2020-06-25 11:49:17 210

原创 布隆过滤的原理

布隆过滤器 Bloom Filter前序什么是布隆过滤器设计想法优缺点布隆过滤器的其他使用场景布隆过滤器的容错率计算前序公司架构大佬封装了一套布隆过滤器的集群,并提供给各个业务进入,用来判断数据是否在缓存中,以此提高数据在缓存中的命中率,避免数据库穿透的危险。 因此在对接次技术的时候,对此做了一些调研,并记录下来什么是布隆过滤器布隆过滤器(Bloom Filter)本质是一种数据结构,比较巧妙的概率型数据结构。特点是高效的插入和查询,可以快速的定位到数据是否存在。设计想法Bloom Filte

2020-06-01 01:30:28 397

原创 Synchronized 的原理

Synchronized在早期java版本中,Synchronized是重量级锁,效率低下,是因为监视器锁(monitor)是通过底层计算机操作系统的Mutex Lock 来实现锁.java的线程是映射到操作系统的原生线程上.如果要挂起或者唤醒一个线程,都需要操作系统内核帮忙完成. 而操作系统实现线程之间的切换是需要从用户态转换到内核态 (https://blog.csdn.net/shanghx_123/article/details/83151064),这个状态的转换需要相对较长的时间,时间成本比较高

2020-05-17 18:12:07 214

原创 CompletableFuture的使用

CompletableFuture的作用CompletableFuture 在JDK1.8新出的并发工具类,是对于Future Callable的JDK1.5的升级和优化。常用API1.CompletableFuture的常用静态方法。 如图:方法名是否支持自定义线程池是否可以返回线程执行结果是否可进行聚合操作是否异步runAsync(Runnable run)...

2020-04-19 23:23:43 402

原创 java SPI 和 dubbo SPI 入门(1)

SPISPI的全程是Service Provider Interface。是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。####Java SPIJava SPI使用了策略模式。一个接口多种实现。我们只声明接口,具体的实现不在程序中明确指定,而是由程序外的配置掌控,用于指定具体实现的配置。具体步骤...

2020-04-19 21:02:17 146

原创 zookeeper实现分布式锁

zookeeper实现分布式锁上一章通过使用临时有序节点保证有序的资源竞争,今天我们就完整的实现一个使用zookeepr的分布式锁。在多并发的情况下,在单机服务上,通过锁来保证在同一时间时,只有一个线程可以执行,用于保证临界资源的最终的结果准确性那么在分布式服务时,要解决只有同一台机器执行一段有对临界资源同时访问的问题,就是通过分布式锁来保证其实现实现分布式服务的框架有 Redis ...

2020-03-29 22:57:30 120 1

原创 zookeeper事件监听

zookeeper事件监听zookeeper中的监听机制zookeeper中的事件和状态注册方式watcher机制代码实现协调独享资源的抢占zookeeper中的监听机制zookeeper作为分布式服务中服务内容协调者,主要解决分布式服务的各个节点的工作状态,在资源冲突时,对于各个节点内容的分派和有序调整,这一切都是由zookeeper的事件监听和通知机制zookeeper中的事件和状态...

2020-03-22 20:20:37 1476

原创 SpringBoot 启动运行流程

SpringBootSpringBoot 简介SpringBoot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得...

2020-03-15 23:09:19 628

原创 zookeeper初级入门~

一、zookeeper的作用什么是zookeeper?ZooKeeper 是一个分布式的,开放源码的分布式应用程序协同服务.由于apeach项目(Hadoop Hbase Kafka)而开发出来的一个管理中心,zookeeper直译为"动物管理员" 。zookeeper的应用场景作为分布式注册中心dubbo 推荐使用zookeeper作为注册中心来治理服务的发现hadoop使用z...

2020-03-15 19:01:35 146

原创 dubbo中常用配置说明

上次搭建了简单dubbo项目。今天就来说说dubbo中常用的配置含义。启东时检查(check=“true"),在dubbo服务起来的时候,回检查该服务是否有对应的提供者,一般配置在consumer方。 默认为true。 <dubbo:reference id="helloDubboProvider1" check="false" interface="com.chenyi.dubboch...

2020-01-23 21:46:32 222

原创 dubbo入门第一篇

dubbo入门第一篇dubbo简单入门,快速搭建互联网架构演变互联网规模不断扩大,常规的垂直应用架构已经无法支持服务的正常使用,分布式服务架构的演变,可以保证在分布式服务间的调用不断的清晰明了。单一应用架构网站流量很小,只需一台机器,一个应用,将所有功能部署在一个应用中,用于简化增删改查工作量的数据访问(ORM)是关键。垂直应用架构访问量逐步增加,单一引用逐渐达到瓶颈(系统响...

2020-01-11 18:50:12 162

空空如也

空空如也

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

TA关注的人

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