自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nrsc

Java进阶之路

  • 博客(260)
  • 资源 (1)
  • 收藏
  • 关注

原创 【dubbo源码解析】--- dubbo的过滤器链底层原理探析

本文对应源码地址:https://github.com/nieandsun/dubbo-study文章目录1 dubbo的过滤器链集成进RPC链条的底层原理2 dubbo过滤器链封装为Invoker的好处1 dubbo的过滤器链集成进RPC链条的底层原理Filter(过滤器) 在很多框架中都有使用过这个概念, 基本上的作用都是类似的, 在请求处理前或者处理后做一些通用的逻辑, 而且 Filter 可以有多个, 支持层层嵌套。Dubbo 的 Filter 实现入口是在ProtocolFilt.

2020-07-21 00:36:24 205

原创 【dubbo源码解析】 --- dubbo集群容错(cluster)、负载均衡(loadbalance)底层原理探析 + 扩展自己的集群容错、负载均衡组件

本文对应源码地址:https://github.com/nieandsun/dubbo-study文章目录1 集群容错和负载均衡的概念2 dubbo集群容错 + 负载均衡底层原理3 简单测试4 自己扩展一个dubbo集群容错组件和负载均衡组件4.1 扩展一个集群容错组件(Cluster)4.2 扩展一个loadbalance组件4.3 不要忘了在MATE-INF/dubbo文件夹下指定这些SPI扩展组件4.3 测试1 集群容错和负载均衡的概念摘自dubbo官方博客:http://dubbo.

2020-07-20 01:20:18 752

原创 【dubbo源码解析】--- dubbo中Invoker嵌套调用底层原理

本文对应源码地址:https://github.com/nieandsun/dubbo-study文章目录1 dubbo中Invoker的重要性2 dubbo RPC链条中代理对象的底层逻辑2.1 以之前的文章为基础实现一个简单的dubbo服务端+消费端2.2 代理对象的底层逻辑2.3 跳过代理对象利用直接构造的RpcInvocation对象拉通整个RPC链条3 dubbo中Invoker嵌套调用底层原理4 dubbo的RPC调用简图最终效果1 dubbo中Invoker的重要性上篇文章《【d.

2020-07-19 20:57:33 267

原创 【dubbo源码解析】--- dubbo的服务注册与发现机制底层原理探析

本文对应源码地址:https://github.com/nieandsun/dubbo-study文章目录1 dubbo的RPC远程调用整体过程简单回顾1 dubbo的RPC远程调用整体过程简单回顾上篇文章《【dubbo源码解析】— dubbo的服务暴露+服务消费(RPC调用)底层原理深入探析》非常详细的介绍了dubbo的RPC远程调用过程,这里做一个简单的回顾。【首先】 需要明确的是,在dubbo的RPC远程调用过程中,最核心的动作是如下两个:(1)protocol. export(.

2020-07-19 12:35:15 620

原创 【dubbo源码解析】--- dubbo的服务暴露+服务消费(RPC调用)底层原理深入探析
原力计划

本文对应源码地址:https://github.com/nieandsun/dubbo-study文章目录1 Protocol+Invoker简介1 Protocol+Invoker简介想要在一个JVM里调用另一个JVM里的的方法,或许你会想到如下的姿势: HttpClient RestTemplate WebService ServerSocket/Socket RMI — 可以参看我的上篇文章《【dubbo源码解析~番外篇】— JDK和Spring的RMI使用姿势简介》但是.

2020-07-15 02:03:20 388

原创 【dubbo源码解析~番外篇】--- JDK和Spring的RMI使用姿势简介
原力计划

本文对应源码地址:https://github.com/nieandsun/dubbo-study文章目录1 RMI简介2 JDK原生的RMI使用姿势1 RMI简介在不考虑dubbo的情况下,一个JVM里如何调用另一个JVM的方法? 我能想到 + 用到的姿势有: HttpClient RestTemplate WebService FeignClient ServerSocket/Socket最近又学到了一种姿势RMI — Remote Method Invocation(远.

2020-07-09 19:22:23 192

原创 【dubbo源码解析】 --- dubbo spi 机制之@Activate简介
原力计划

本文对应源码地址:https://github.com/nieandsun/dubbo-study文章目录1 @Activate标签的应用场景2 @Activate标签 及其使用简介2.1 简单看一下@Activate标签的源码2.2 @Activate标签的使用姿势2.2.1 定义标有@Activate注解的实现类2.2.2 在META-INFO/dubbo文件夹下建立配置文件2.2.3 测试1 @Activate标签的应用场景除了上篇文章《【dubbo源码解析】 — dubbo spi .

2020-07-04 17:39:34 300

原创 【dubbo源码解析】 --- dubbo spi 机制(@SPI、@Adaptive)详解
原力计划

本文对应源码地址:https://github.com/nieandsun/dubbo-study文章目录1 @SPI 标签 及其使用简介上篇文章《【SPI】 — java spi 机制简介》中, 可以看到,java spi 机制非常简单, 就是读取指定的配置文件, 将所有的类都加载到程序中。 而这种机制, 存在很多缺陷, 比如:所有实现类无论是否使用, 直接被加载, 可能存在浪费不能够灵活控制什么时候什么时机, 匹配什么实现, 功能太弱Dubbo 基于自己的需要,对SPI 机制进.

2020-07-03 21:00:06 357

原创 【dubbo源码解析】--- 通过javassist/JavassistCompiler动态生成一个实例对象

本文对应源码地址:https://github.com/nieandsun/dubbo-study1 问题的提出相信对于每一个java程序员来说,早已经习惯了写一个java文件 —> 编译成class文件 —> 加载到JVM生成一个实例对象的开发流程。但是有没有想过其实没有Java文件,也没有编译好的class文件,我们照样可以向JVM中添加一个类实例呢? —》 javassist就可以完成这种骚操作。而且读过dubbo源码的人肯定都知道,在dubbo框架里很多地方用到了这种姿势!.

2020-07-02 23:19:12 267

原创 【SPI】 --- java spi 机制简介

本文对应源码地址:https://github.com/nieandsun/dubbo-study文章目录1 spi需要解决的问题剖析2 java spi使用简介2.1 使用java spi需要遵循的约定2.2 示例1 spi需要解决的问题剖析首选看如下代码:@Testpublic void demo1() { JdbcService jdbcService = new JdbcServiceAImpl(); int i = jdbcService.insert("jame.

2020-06-26 18:03:52 168

原创 【ZooKeeper】 --- ZK数据模型、节点类型、节点属性、watch机制
原力计划

文章目录1 、ZK数据模型2 、ZK节点类型3 、ZK节点属性1 、ZK数据模型ZooKeeper的视图结构和标准的Unix文件系统类似,其中每个节点称为“数据节点”或ZNode,每个znode可以存储数据,还可以挂载子节点,因此可以称之为“树”。需要注意的是 创建znode时,每个znode都必须指定值,如果没有值,节点是不能创建成功的。在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据 ; 且通过客户端可对znode进行增删改查的操作,还可以

2020-06-23 10:07:32 382

原创 【实用小技巧】--- Sublime + 正则表达式快速构建domain类

文章目录1 面临的问题2 我的解决方式3 简单介绍一下2中正则表达式的含义1 面临的问题今天下午与另外一个部门对接,他们的一张表总共有42个字段,而且我们之间的交互使用的是webservice, 要求我必须把类似于下面的数据:立项单编号 ZLXBH projectNum转换成如下的java属性:@ApiModelProperty("立项单编号") @XmlItem(name = "ZLXBH", type = XmlElementType.ELEMENT)private Strin

2020-06-17 21:14:09 809 1

原创 【springboot】--- springboot的starter原理探究 + 如何自定义自己的starter
原力计划

本文对应的源码: https://github.com/nieandsun/NRSC-STUDY文章目录1 写作背景2 为什么会有starter机制2.1 springboot项目的默认扫描机制2.2 starter机制的必然性3 springboot的starter机制前置知识介绍3.1 通过@Import注解 + 实现ImportSelector 接口的方式向IOC容器里注入Bean3.2 springboot对`@Import注解 + 实现ImportSelector接口方式向IOC容器.

2020-06-14 20:00:25 1027 3

原创 【redis知识点整理】 --- linux中Redis客户端 + springboot项目中RedisTemplate如何调用lua脚本
原力计划

本文代码对应的github地址:https://github.com/nieandsun/redis-study1 redis脚本我在《【redis知识点整理】 — redis事务简介》那篇文章里翻译过Redis官网( https://redis.io/topics/transactions )的一段话,现再次贴在下面:这段话啥意思呢?(1) redis脚本可以做现在redis提供的事务的任何工作,且脚本方式更简单,更快(2)之所以又有脚本方式、又有本文介绍的这些方式,是因为本文介绍的.

2020-05-31 20:29:37 617

原创 【redis知识点整理】 --- RedisTemplate使用pipeline进行批量set需要注意的坑
原力计划

本文代码对应的github地址:https://github.com/nieandsun/redis-study文章目录1 简单介绍一下什么是pipeline --- 以jedis为例2 RedisTemplate使用pipeline批量set需要注意的坑1 简单介绍一下什么是pipeline — 以jedis为例以批量根据key删除数据为例,如若单纯的使用del命令进行删除,那java代码可能会这样写:public static void delNoStus(String... keys.

2020-05-31 12:04:57 2494 2

原创 【redis知识点整理】 --- RESP协议 + 手写一个简单的redis客户端
原力计划

RESP协议官网:https://redis.io/topics/protocolRESP协议中文官网:http://www.redis.cn/topics/protocol.html文章目录1 RESP协议简介2 自己手写一个简单的redis客户端1 RESP协议简介RESP( REdis Serialization Protocol) 是Redis客户端与Redis服务器间进行通讯的协议。其主要特点如下:容易实现解析快人类可读RESP 底层采用的是 TCP 的连接方式, 通过 .

2020-05-31 00:00:50 193

原创 【redis知识点整理】 --- redis实现分布式锁需要解决的问题
原力计划

本文代码对应的github地址:https://github.com/nieandsun/redis-study文章目录1 超卖现象简单介绍1 超卖现象简单介绍有如下代码:@RestControllerpublic class RedisLockController { @Autowired private StringRedisTemplate stringRedisTemplate; @GetMapping("/deduct_stock") public.

2020-05-30 22:24:37 379 1

原创 【redis知识点整理】 --- redis事务简介
原力计划

文章目录

2020-05-29 00:09:43 139

原创 【redis知识点整理】 --- 从guava源码的角度简单聊聊布隆过滤器
原力计划

本文代码对应的github地址:https://github.com/nieandsun/redis-study前段时间项目里加上了布隆过滤器,本文简单从guava源码的角度做一些分析 —》 其实主要是为自己答疑解惑!!!文章目录1 布隆过滤器在互联网环境的使用场景简介2 布隆过滤器的原理3 我对 布隆过滤器 困惑 + 思考4 布隆过滤器在guava中具体是个啥4.1 通过与HashMap对比,简单理解一下guava中的布隆过滤器到底是什么4.2 guava中布隆过滤器API简介4.2.1 初始.

2020-05-27 02:09:11 1042 6

原创 【redis知识点整理】 --- springboot2.X使用lettuce连接池集成redis
原力计划

不出意外的话,很多公司操作redis应该还是使用的jedis。当然应该也有公司比较能耐,直接把操作redis的所有方法进一步封装成API或Utils类,然后打成jar包,做成服务供多个部门使用 —》 然后开发者就不必关心真正与redis交互的细节了。— 其实我们公司就是这种姿势!!!不知道其他公司到底是怎么个套路,我觉得这种方式对公司挺好,但是对于我们开发者自身来说,可能就缺少了直面问题 + 解决问题的机会。其实说实话,我们组也在做一些基础性的服务,从这个角度来讲,貌似每个部门(或许更应该说是每.

2020-05-26 21:43:27 471

原创 【redis知识点整理】 --- Redis的持久化
原力计划

redis 支持 RDB 和 AOF 两种持久化机制, 持久化可以避免因进程退出而造成数据丢失。文章目录1 RDB持久化 --- redis默认开启的持久化方式1.1 RDB持久化机制 --- 手动触发1.2 RDB持久化机制 --- 自动触发1.3 bgsave运行流程 --- RDB主流触发方式1.4 RDB恢复方式 + 持久化机制优缺点2 AOF持久化 --- redis默认没开启的持久化方式(but 重要)2.1 AOF 持久化流程2.2 redis 的 AOF 配置详解(★★★)2..

2020-05-25 00:27:58 180

原创 【redis知识点整理】---centos7下redis的安装 、启动、连接和关闭
原力计划

最近遇到一个线上bug,关系到了fastjson、dubbo、 redis 和 泛型,之所以这样说,是因为排查问题 到 解决问题的思路大致如此 —> 我觉得我之后应该会抽出时间写一篇博客,聊聊这个事 —> 但是最近实在太忙了,很多想整理的东西,现在都没时间进行整理了。。。最近打算整理一下缓存相关的东西 —》 本篇从最简单的redis单机版安装开始!!!文章目录1 redis单机版编译 + 安装2 redis的启动2.1 方式1--- 前台启动(不推荐使用)2.2 方式2--- 后.

2020-05-22 01:36:05 188

原创 【消息中间件】--- RocketMQ消费者简介(集群、广播消费,推模式,拉模式)
原力计划

本文对应源码地址:https://github.com/nieandsun/rocketmq-studyrocketmq官网:https://rocketmq.apache.org/docs/quick-start/rocketmq github托管地址(这里直接给出的是中文docs地址):https://github.com/apache/rocketmq/tree/master/docs/cn文章目录11...

2020-05-18 02:07:42 950

原创 【消息中间件】--- RocketMQ核心概念介绍 + 生产者简介 + 消息存储简介
原力计划

本文对应源码地址:https://github.com/nieandsun/rocketmq-studyrocketmq官网:https://rocketmq.apache.org/docs/quick-start/rocketmq github托管地址(这里直接给出的是中文docs地址):https://github.com/apache/rocketmq/tree/master/docs/cn文章目录1 RocketMQ核心概念介绍1.1 RocketMQ架构相关的概念1.1.1 Produc.

2020-05-17 19:41:02 302

原创 【并发编程】--- 线程池七大参数+四种拒绝策略 + 如何合理配置线程数等简介
原力计划

源码地址:https://github.com/nieandsun/concurrent-study.git文章目录1 线程池七大参数2 RejectedExecutionHandler--- 四种拒绝策略(官方提供)3 threadFactory --- 线程工厂相关的注意事项4 如何自己new一个线程池 --- 简单结合了一下我们的项目5 实际工作中不允许使用Executors创建线程池的原因6 如何合理配置最大线程数1 线程池七大参数其实线程池的七大参数,我算一直都是比较熟悉的,因为我.

2020-05-13 22:14:54 700

原创 【并发编程】--- 阻塞队列(BlockingQueue)简介
原力计划

源码地址:https://github.com/nieandsun/concurrent-study.git文章目录1 阻塞队列的含义2 为什么用? 有什么好处?3 常用的BlockingQueue3.1 ArrayBlockingQueue简介3.2 LinkedBlockingQueue简介3.3 PriorityBlockingQueue简介3.4 DelayQueue简介3.5 SynchronousQueue简介3.6 LinkedTransferQueue简介3.7 LinkedBloc.

2020-05-12 01:00:19 224

原创 【并发编程】 --- 从五个维度对比synchronized关键字和Lock

文章目录维度1 --- 从原始构成上来说维度2 --- 从使用方法上来说维度3 --- 从等待是否可中断上来说维度4 --- 从加锁是否公平角度来说维度5 --- 从线程间的通信来说维度1 — 从原始构成上来说synchronized是关键字,属于JVM层面Lock是具体类(java.util.concurrent.Locks.Lock)是api层面的锁维度2 — 从使用方法上来说synchronized不需要用户手动去释放锁,当synchronized代码执行完后系统会自动让线程释放对

2020-05-10 20:11:40 129 2

原创 【并发编程】 --- Lock/Condition完成生产者消费者模式+ABCABC顺序打印问题
原力计划

源码地址:https://github.com/nieandsun/concurrent-study.git文章目录1 生产者消费者问题2 ABCABC。。。三个线程顺序打印问题2.1 基本不费脑子的实现方式 --- 且比较容易感受到定点通知的含义2.2 比较灵活的方式1 生产者消费者问题使用一个Condition极其类似于wait、notifyAll的使用方法题目 + 题目分析可参考我之前写的一篇文章《【并发编程】 — 线程间的通信wait、notify、notifyAll》。这里直接.

2020-05-10 19:32:04 304

原创 【并发编程&JVM】--- 强软弱虚四种引用 + ThreadLocal内存泄漏原因分析
原力计划

文章目录【1】强软弱虚四种引用【1.1】强引用【1.2】软引用【1.3】弱引用【1.4】虚引用【2】ThreadLocal内存泄漏问题分析本篇文章整理自马士兵老师的公开课(哔哩哔哩)【1】强软弱虚四种引用【1.1】强引用平时new出来的对象,只要有引用在即使发生GC也回收不了【1.2】软引用【1.3】弱引用【1.4】虚引用【2】ThreadLocal内存泄漏问题分析...

2020-05-08 01:04:51 425

原创 【并发编程】 --- Reentrantlock源码解析5:再探不可中断性 + 线程unpark后诡异的Thread.interrupted()判断
原力计划

文章目录1 想要读懂这篇文章必须要拥有的前置知识2 想些这篇文章的原因3 困扰我很久的Reentrantlock源代码1 --- 貌似无用的变量failed4 困扰我很久的Reentrantlock源代码2 --- unpark后为啥要来个Thread.interrupted();5 小记源码地址:https://github.com/nieandsun/concurrent-study.g...

2020-04-12 19:47:53 291 3

原创 【并发编程】 --- Reentrantlock源码解析4:公平锁加锁过程中 [判断当前线程是否要排队的具体细节] 超详细解析
原力计划

文章目录1 简单回顾2 高并发环境下当前线程使用公平锁判断自己是否要排队的具体细节2.0 源码 + 宏观分析2.1 h != t2.1.1 h != t 不成立时(即h等于t时) ---> 不用排队的原因2.1.1.1 情况1 ---> h和t都等于null ---> 不用排队2.1.1.2 情况2 ---> h和t不等于null,但h=t的情况 ---> 不用排...

2020-04-11 22:44:52 350 1

原创 【并发编程】 --- Reentrantlock源码解析3:公平锁释放锁过程超详细解析
原力计划

文章目录1 公平锁释放锁的过程1.1 从源码中看公平锁释放锁的过程1.2 以源码为基础总结出的公平锁释放锁的流程2 需要思考的问题2.1 问题1 --- 释放锁的过程中有可能导致尾节点的ws为-1么 ---> 不可能2.2 问题2 --- 公平锁加锁和解锁的过程还有值得探究的地方么? ---> 当然有!!!源码地址:https://github.com/nieandsun/conc...

2020-04-11 10:30:34 507 1

原创 【并发编程】 --- Reentrantlock源码解析2:公平锁加锁过程超详细解析
原力计划

文章目录1 前情回顾 --- 同步方法交替执行时Reentrantlock公平锁的逻辑2源码地址:https://github.com/nieandsun/concurrent-study.git1 前情回顾 — 同步方法交替执行时Reentrantlock公平锁的逻辑前面一篇文章《【并发编程】 — Reentrantlock源码解析1:同步方法交替执行的处理逻辑》讲过无论是synch...

2020-04-10 00:48:41 320 5

原创 【实用小代码】 --- 循环中删除数组中指定元素的正确姿势

文章目录1 抽象出来的题目2 错误的示范2 正确的答案今天写一个前端逻辑的时候碰到了这种情况,并在前端小姐姐面前装了一把☺☺☺并且这个问题貌似我在实际开发中碰到的次数还是挺多的,所以记录一下,但是用的语言是java —》 重要的是思想!!!1 抽象出来的题目假设有如下数组,数组中的元素我们事先并不知道,现在要求在一个循环内将B和E删掉。2 错误的示范会出问题的code...

2020-04-07 19:48:37 213

原创 【并发编程】 --- synchronized锁的升级过程 + JDK1.6对synchronized关键字的其他优化简介
原力计划

文章目录源码地址:https://github.com/nieandsun/concurrent-study.git

2020-04-06 14:38:42 391

原创 【并发编程】 --- 原来java对象的布局是可以被这样证明的!!!
原力计划

文章目录源码地址:https://github.com/nieandsun/concurrent-study.git

2020-04-05 15:24:04 470 1

原创 【并发编程】 --- Reentrantlock源码解析1:同步方法交替执行的处理逻辑
原力计划

文章目录1 Reentrantlock前置知识1.1 理清代码同步的本质1.2 Reentrantlock的核心三板斧1.2.1 Compare And Swap(CAS) --- 保证同一时刻只有一个线程可以抢到锁1.2.2 park & unpark --- 让竞争不到锁的线程立刻挂起和从挂起中唤醒1.2.3 自旋 --- 确保线程尽量不进行park1.3 AQS --- 保证被挂...

2020-04-04 23:40:51 1471 6

原创 【并发编程】 --- 从JVM源码的角度进一步去理解synchronized关键字的原理
原力计划

文章目录1 openjdk源码下载2 monitor对象简介上篇文章《【并发编程】 — 从字节码指令的角度去理解synchronized关键字的原理》从字节码指令的角度讲解了synchronized关键字的原理,从中可以知道其实synchronized关键字真正锁的是锁对象关联的monitor对象,那(1)这个monitor对象到底什么呢?(2)monitorentor、monitorex...

2020-04-04 01:54:52 523

原创 【并发编程】 --- 从字节码指令的角度去理解synchronized关键字的原理
原力计划

文章目录1 synchronized关键字反汇编指令源码地址:https://github.com/nieandsun/concurrent-study.git不知道大家有没有这样一种感觉,对于synchronized关键字我(1)会使用,(2)懂原理,但仍然还是想找到官方的证明,告诉自己这一切都是正确的,对的。 — 或许不止synchronized关键字,好多问题貌似都这样。。。...

2020-04-02 13:31:14 285

原创 【并发编程】 --- synchronized/ReentrantLock两大特性(可重入性和不可中断性)介绍
原力计划

文章目录1 可重入特性1.1 可重入的含义及synchronized可重入特性演示1.2 简单说一下synchronized可重入原理2 synchronized不可中断特性 --- interrupt和stop都不可中断2.1 不可中断的含义及synchronized不可中断特性演示2.2 ReentrantLock的可中断与不可中断2.2.1 ReentrantLock使用lock()加锁...

2020-03-29 18:32:06 372

免费上网软件(教育机构)

此软件可在教育机构,比如大学,研究生院免费获取IPV6地址,从而实现免费上网

2014-08-05

空空如也

空空如也

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

TA关注的人 TA的粉丝

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