自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 手把手教你撸一个RPC框架

什么是RPC调用在动手之前,首先要明确rpc调用的概念,RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务,简单来说就是无感知的调用远程服务的方法举个例子,如果在A服务中实现了接口addCount(),进行计数+1,而B服务想调用A服务的这个接口,本地只需要通过函数指针来调用即可,而在两个服务中的调用就可以成为rpc调用实现RPC调用的流程生产者扫描所有的提供服务的Service并对应的注册到注册中心中,暴露服务出去,并且在本地根据服务

2020-08-12 17:48:55 857

原创 ThreadLocal源码解析

ThreadLocal是什么threadLocal是一个线程内部的存储类,可以在线程执行中存储数据,通常情况下我们创建的变量每一个线程都可以访问,而ThreadLocal则实现了线程的隔离性,保证了存储的数据只有当前线程可以访问得到ThreadLocal使用场景在Java的多线程编程中,为保证多个线程对共享变量的安全访问,通常会使用synchronized来保证同一时刻只有一个线程对共享变量进行操作。这种情况下可以将类变量放到ThreadLocal类型的对象中,使变量在每个线程中都有独立拷贝,不会出现

2020-07-17 10:59:45 173

原创 ReenTrantLock源码浅析

ReenTrantLock是什么ReenTrantLock是juc包下的一个经典的互斥锁,也是 可重入锁(即当前线程在已经获取改锁后重复执行获取锁操作时不会引起死锁,并且不需要执行获取锁的操作),ReenTrantLock是基于AQS来实现的(PS:注意是基于不是继承,看到网上有的同学会说发现ReentrantLock并没有继承AQS有所疑问),如果有对AQS不了解的同学可以查看我之前的文章浅析AQS(1)—独占锁以及共享锁的实现以及浅析AQS (二)–condition的实现,首先ReenTrantL

2020-07-15 17:35:50 148

原创 浅析AQS (二)--condition的实现

在前一章节中,我们简单分析过aqs中加锁以及阻塞的流程,这一章我们来分析一下condition条件阻塞工具的实现什么是conditioncondition是作为条件阻塞器,通过调用await,signal和signalAll方法来阻塞和唤醒线程,可以横向对比的是Object对象的wait,notify以及notifyAll方法,值得注意的是,与Object的wait需要跟synchronized结合使用一样,condition也需要跟锁结合使用,比如ReenTrantLock中的newCondition

2020-07-14 08:37:21 333

原创 CountdownLatch和CyclicBarrier的区别使用场景与具体实现

CountdownLatch和CyclicBarrier都属于线程同步的工具,不过具体的实现以及使用的情况有所不同,我们先来看看不同的使用情况CountdownLatch 使用场景顾名思义CountdownLatch可以当做一个计数器来使用,比如某线程需要等待其他几个线程都执行过某个时间节点后才能继续执行我们来模拟一个场景,某公司一共有十个人,门卫要等十个人都来上班以后,才可以休息,代码实现如下 public static void main(String[] args) { fi

2020-07-10 09:14:39 341

原创 AQS加锁流程浅析

什么是AQS所谓AQS,指的是AbstractQueuedSynchronizer,它提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,ReentrantLock、Semaphore、ReentrantReadWriteLock,CountDownLatch等并发类均是基于AQS来实现的,具体用法是通过继承AQS实现其模板方法,然后将子类作为同步组件的内部类。AQS具体的实现方式为通过维护一个state变量,通过调用对应实现的方法来操作state并且根据state的状态来判断是否需要加锁,

2020-07-10 09:13:07 547

原创 利用SpringBean管理来实现策略模式用以消灭项目中的if-else

我们先来了解一下策略模式的概念定义:策略模式定义了一系列的算法,并将每一个算法封装起来,使每个算法可以相互替代,使算法本身和使用算法的客户端分割开来,相互独立结构:策略接口角色IStrategy:用来约束一系列具体的策略算法,策略上下文角色ConcreteStrategy使用此策略接口来调用具体的策略所实现的算法。具体策略实现角色ConcreteStrategy:具体的策略实...

2019-12-18 11:28:05 449

原创 解决spring boot Jackson non_null 无效的问题

出现过两次这种问题 记录其中一种的解决办法 如果你的项目有配置项继承了WebMvcConfigurerAdapter 那么就会使non_null 无效

2019-07-02 13:58:40 1395

原创 java代码执行linux命令

java代码执行linux命令

2017-09-21 09:39:31 522

空空如也

空空如也

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

TA关注的人

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