自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 问答 (2)
  • 收藏
  • 关注

原创 【万字图文-原创】 | 学会Java中的线程池,这一篇也许就够了!

碎碎念关于JDK源码相关的文章这已经是第四篇了,原创不易,粉丝从几十人到昨天的666人,真的很感谢之前帮我转发文章的一些朋友们。从16年开始写技术文章,到现在博客园已经发表了222篇文章,大多数都是原创,共有800多粉丝,基本上每个月都会有文章的产出。回顾这几年以来写作的心路历程,一直都是偷偷的写,偷偷的发,害怕被人知道,怕被人骂文章写的太水(之前心理太脆弱了,哈哈)。后面和cxuan聊过后,他建议我给他投稿试试,于是就有了那一篇的万字的AQS文章。最近也有好多读者加到我的微信,问一些文章中的

2020-05-24 07:48:16 1160 2

原创 【一起学设计模式】观察者模式实战:真实项目中屡试不爽的瓜娃EventBus到底如何实现观察者模式的?

申明本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源!感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫前言之前出过一个设计模式的系列文章,这些文章和其他讲设计模式的文章 有些不同文章没有拘泥于讲解设计模式的原理,更多的是梳理工作中实际用到的一些设计模式,并提取出对应业务模型进行总结,回顾下之前的一些文章:【一起学设计模式】策略模式实战一:基于消息发送的策略模式实战【...

2020-04-26 10:29:03 412

原创 超详细的Mysql锁 实战分析,你想知道的都在这里~

1.mysql回表查询在这里提起主要是用于说明mysql数据和索引的结构,有助于理解后续加锁过程中的一些问题。mysql索引结构和表数据结构是相互独立的,根据索引查询,只能找到索引列和主键聚簇索引。如果select语句中不包含索引列,mysql会根据主键聚簇索引二次回表查询所需要的数据,查询出来的数据是根据聚簇索引排序的。如果select中只包含索引列和聚簇索引,那么mysql不会再根据聚簇...

2023-11-27 11:34:00 161 1

原创 JetCache设计原理浅析

1、目录 JetCache介绍 上帝视角:如何设计一个缓存组件? SpringCache VS JetCache JetCache基本使用 JetCache部分源码分析2、JetCache介绍3、如何设计一个缓存组件?4、SpringCache VS JetCache5、JetCache基本使用5.1 JetCache配置信息jetcache: statInt...

2022-09-05 21:37:00 661

原创 Eureka中读写锁的奇思妙想,学废了吗?

前言很抱歉 好久没有更新文章了,公最近的一篇原创还是在去年十月份,这个号确实荒废了好久,感激那些没有把我取消关注的小伙伴。有读者朋友经常私信问我: ”你号卖了?“ ”文章咋不更新了?“不更新主要的原因就是自己太懒了,也不知道要写些什么东西。最近一年还是在零散的学些东西,每次准备提笔写文章都半途而废了,到了最后就干脆不写了。废话不多说了,还是看文章吧,分享的内容是我自己思考的一些东西,并没有标准答案,希望大家看的时候都能够有自己的见解,有问题可以第一时间联系到我 一起探讨。跟着我,要么学会,要么学

2021-06-27 14:58:43 389 2

原创 【原创】经验分享:一个小小emoji尽然牵扯出来这么多东西?

前言之前也分享过很多工作中踩坑的经验:一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移?【原创】经验分享:一个Content-Length引发的血案(almost…)今天再来分享工作中一个真实的案例:商品评价列表页,显示每条用户的评价详情,为了保护用户隐私,要求显示用户昵称时只能显示第一位和最后一位,其他的用※代替。例如输入:????????????,输出:????***????看似一个平淡无奇的需求,我也没有太在意。服务端将用户的评论信息存储到db中,评价列表

2020-10-09 06:41:51 618 1

原创 【Netty之旅四】你一定看得懂的Netty客户端启动源码分析!

前言前面小飞已经讲解了NIO和Netty服务端启动,这一讲是Client的启动过程。源码系列的文章依旧还是遵循大白话+画图的风格来讲解,本文Netty源码及以后的文章版本都基于:4.1.22.Final本篇是以NettyClient启动为切入点,带大家一步步进入Netty源码的世界。Client启动流程揭秘1、探秘的入口:netty-client demo这里用netty-exmaple中的EchoClient来作为例子:public final class EchoClient {

2020-09-22 14:10:35 251

原创 Netty之旅三:Netty服务端启动源码分析,一梭子带走!

Netty服务端启动流程源码分析前记哈喽,自从上篇《Netty之旅二:口口相传的高性能Netty到底是什么?》后,迟迟两周才开启今天的Netty源码系列。将由我的好朋友小飞分享 《Netty服务端启动流程源码分析》源码分析的第一篇文章,下一篇我会分享客户端的启动过程源码分析。通过源码的阅读,我们将会知道,Netty 服务端启动的调用链是非常长的,同时肯定也会发现一些新的问题,随着我们源码阅读的不断深入,相信这些问题我们也会一一攻破。废话不多说,直接上号!一、从EchoServer示例入手示例

2020-09-15 17:33:30 428

原创 【原创】经验分享:一个Content-Length引发的血案(almost....)

前言上周在工作中遇到一个问题,挺有意思,这里记录一下。上周在工作中遇到一个问题,挺有意思,这里记录一下。标题起的很唬人,这个问题差点引发血案,花哥还是很严谨的一个人,后面备注了almost....在测试环境中,前端调用我们服务一个接口时发现巨慢无比,响应时间超过了30s,简直无法忍受!!查看日志显示是我们服务在通过Feign请求调用另一个服务的GET接口时一直超时,然后重试了一直直...

2020-09-08 06:45:00 682 1

原创 Netty之旅二:口口相传的高性能Netty到底是什么?

高清思维导图原件(xmind/pdf/jpg)可以关注公众号:一枝花算不算浪漫 回复netty01即可。前言上一篇文章讲了NIO相关的知识点,相比于传统IO,NIO已经做得很优雅了,为什么我们还要使用Netty?上篇文章最后留了很多坑,讲了NIO使用的弊端,也是为了引出Netty而设立的,这篇文章我们就来好好揭开Netty的神秘面纱。本篇文章的目的很简单,希望看过后你能看懂Netty的示例代码,针对于简单的网络通信,自己也能用Netty手写一个开发应用出来!一个简单的Netty示例以下是一个简.

2020-08-25 06:31:15 330

原创 Netty之旅:你想要的NIO知识点,这里都有!

高清思维导图原件(xmind/pdf/jpg)可以关注公众号:一枝花算不算浪漫 回复nio即可。前言抱歉好久没更原创文章了,看了下上篇更新时间,已经拖更一个多月了。这段时间也一直在学习Netty相关知识,因为涉及知识点比较多,也走了不少弯路。目前网上关于Netty学习资料玲琅满目,不知如何下手,其实大家都是一样的,学习方法和技巧都是总结出来的,我们在没有找到很好的方法之前不如按部就班先从基础开始,一般从总分总的渐进方式,既观森林,又见草木。之前恰巧跟杭州一个朋友小飞也提到过,两者在这方面的初衷是一.

2020-08-09 15:26:04 191

原创 一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移?

前言先抛一个问题给我聪明的读者,如果你们使用微服务SpringCloud-Netflix进行业务开发,那么线上注册中心肯定也是用了集群部署,问题来了:你了解Eureka注册中心集群如何实现客户端请求负载及故障转移吗?可以先思考一分钟,我希望你能够带着问题来阅读此篇文章,也希望你看完文章后会有所收获!背景前段时间线上Sentry平台报警,多个业务服务在和注册中心交互时,例如续约和注册表增量拉取等都报了Request execution failed with message : Connection

2020-06-22 13:27:40 652 1

原创 面试官:线程池如何按照core、max、queue的执行循序去执行?(内附详细解析)

前言这是一个真实的面试题。前几天一个朋友在群里分享了他刚刚面试候选者时问的问题:"线程池如何按照core、max、queue的执行循序去执行?"。我们都知道线程池中代码执行顺序是:corePool->workQueue->maxPool,源码我都看过,你现在问题让我改源码?? 一时间群里炸开了锅,小伙伴们纷纷打听他所在的公司,然后拉黑避坑。(手动狗头,大家一起调侃٩(๑❛ᴗ❛๑)۶)关于线程池他一共问了这么几个问题:线程池如何按照core、max、queue的顺

2020-06-15 07:27:09 1197 1

原创 比AtomicLong更优秀的LongAdder确定不来了解一下吗?

前言文章中所有高清无码图片在公众号号回复: 图片666 即可查阅, 可直接关注公众号:一枝花算不算浪漫最近阿里巴巴发布了Java开发手册(泰山版) (公众号回复: 开发手册 可收到阿里巴巴开发手册(泰山版 2020.4.22发布).pdf),其中第17条写到:对于Java项目中计数统计的一些需求,如果是 JDK8,推荐使用 LongAdder 对象,比 AtomicLong 性能更好(减少乐观锁的重试次数)在大多数项目及开源组件中,计数统计使用最多的仍然还是AtomicLong,虽然是阿里巴巴

2020-05-15 07:01:15 942 2

原创 面试官:小伙子,听说你看过ThreadLocal源码?(万字图文深度解析ThreadLocal)

前言前几天写了一篇AQS相关的文章:我画了35张图就是为了让你深入 AQS,反响不错,这次趁热打铁再写一篇ThreadLocal的文章,同样是深入原理,图文并茂。全文共10000+字,31张图,这篇文章同样耗费了不少的时间和精力才创作完成,原创不易,请大家点点关注+在看,感谢。对于ThreadLocal,大家的第一反应可能是很简单呀,线程的变量副本,每个线程隔离。那这里有几个问题大家可以思考一下:ThreadLocal的key是弱引用,那么在 threadLocal.get()的时候,发生GC之

2020-05-09 10:24:28 1610 8

原创 【深入AQS原理】我画了35张图就是为了让你深入 AQS

申明本文首发自公众号:程序员cxuan,此文章为本人投稿文章。已经和公众号作者沟通,文章投递公众号,博客平台发布可标记为原创。此文章肝了很久,图片较多,希望大家喜欢。另外,感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫公众号刚开始运营,希望与您一同成长。前言谈到并发,我们不得不说AQS(AbstractQueuedSynchronizer),所谓的AQS即是抽象的队列式的同步器,...

2020-05-02 09:09:40 3733 6

原创 【洞悉AQS】通过ReentrantLock一步一图彻底了解AQS实现原理

前言谈到并发,我们不得不说AQS(AbstractQueuedSynchronizer),所谓的AQS即是抽象的队列式的同步器,内部定义了很多锁相关的方法,例如:getState():获取锁的标志state值setState():设置锁的标志state值tryAcquire(int):独占方式获取锁。尝试获取资源,成功则返回true,失败则返回false。tryRelease(int...

2020-04-30 08:15:00 118

原创 Redis学习三:Redis高可用之哨兵模式

申明本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源!感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫22.jpg前言Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。提醒(Notificatio...

2020-04-20 09:26:00 309

原创 Redis学习二:Redis高并发之主从模式

申明本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源!感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫22.jpg前言前面已经学习了Redis的持久化方式,接下来开始学习Redis主从架构的原理,来看看Redis如何利用主从架构来保证高并发的。Redis如何支持高并发单机的redis一般QPS不会超过超过10万+,一般单机QPS都在几万左右,如果需要支撑高并发,...

2020-04-19 08:10:00 313

原创 Redis学习一:Redis两种持久化机制

申明本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源!感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫22.jpg前言Redis是基于内存来实现的NO SQL数据库,但是我么你都知道存储在内存中的数据,只要服务器关机,内存中的数据就会消失了。为了避免内存中的数据丢失,Redis提供了对持久化的支持。Redis共有RDB和AOF两种持久化机制。可以先看下两种持久化...

2020-04-18 10:47:00 269

原创 【分布式锁】07-Zookeeper实现分布式锁:Semaphore、读写锁实现原理

前言前面已经讲解了Zookeeper可重入锁的实现原理,自己对分布式锁也有了更深的认知。我在公众号中发了一个疑问,相比于Redis来说,Zookeeper的实现方式要更好一些,即便Redis作者实现了RedLock算法来解决Redis集群模式下分布式锁的弊端,但Redis实现的分布式锁仍然不是那么完美。比如有5台Redis集群,按照n/2 + 1代表获取锁成功,如果客户端A此时获取...

2020-03-31 08:56:00 592 1

原创 【分布式锁】06-Zookeeper实现分布式锁:可重入锁源码分析

前言前面已经讲解了Redis的客户端Redission是怎么实现分布式锁的,大多都深入到源码级别。在分布式系统中,常见的分布式锁实现方案还有Zookeeper,接下来会深入研究Zookeeper是如何来实现分布式锁的。Zookeeper初识文件系统Zookeeper维护一个类似文件系统的数据结构image.png每个子目录项如NameService都被称为znoed,和文件...

2020-03-30 07:27:00 371

原创 【分布式锁】05-使用Redisson中Semaphore和CountDownLatch原理

前言前面已经写了Redisson大多的内容,我们再看看Redisson官网共有哪些组件:image.png剩下还有Semaphore和CountDownLatch两块,我们就趁热打铁,赶紧看看Redisson是如何实现的吧。我们在JDK中都知道Semaphore和CountDownLatch两兄弟,这里就不多赘述,不了解的可以再回头看看。Semaphore使用示例先看下Sem...

2020-03-23 10:46:00 764

原创 【分布式锁】04-使用Redisson实现ReadWriteLock原理

前言关于读写锁,大家应该都了解JDK中的ReadWriteLock, 当然Redisson也有读写锁的实现。所谓读写锁,就是多个客户端同时加读锁,是不会互斥的,多个客户端可以同时加这个读锁,读锁和读锁是不互斥的Redisson中使用RedissonReadWriteLock来实现读写锁,它是RReadWriteLock的子类,具体实现读写锁的类分别是:RedissonReadLoc...

2020-03-22 08:05:00 1547

原创 【分布式锁】03-使用Redisson实现RedLock原理

前言前面已经学习了Redission可重入锁以及公平锁的原理,接着看看Redission是如何来实现RedLock的。RedLock原理RedLock是基于redis实现的分布式锁,它能够保证以下特性:互斥性:在任何时候,只能有一个客户端能够持有锁;避免死锁:当客户端拿到锁后,即使发生了网络分区或者客户端宕机,也不会发生死锁;(利用key的存活时间)容错性:只要多数节点的r...

2020-03-21 09:37:00 875

原创 【分布式锁】02-使用Redisson实现公平锁原理

前言前面分析了Redisson可重入锁的原理,主要是通过lua脚本加锁及设置过期时间来保证锁执行的原子性,然后每个线程获取锁会将获取锁的次数+1,释放锁会将当前锁次数-1,如果为0则表示释放锁成功。可重入原理和JDK中的可重入锁都是一致的。Redisson公平锁原理JDK中也有公平锁和非公平锁,所谓公平锁,就是保证客户端获取锁的顺序,跟他们请求获取锁的顺序,是一样的。公平锁需要排...

2020-03-20 11:56:00 3147 1

原创 【分布式锁】01-使用Redisson实现可重入分布式锁原理

前言主流的分布式锁一般有三种实现方式:数据库乐观锁基于Redis的分布式锁基于ZooKeeper的分布式锁之前我在博客上写过关于mysql和redis实现分布式锁的具体方案:https://www.cnblogs.com/wang-meng/p/10226618.html里面主要是从实现原理出发。这次【分布式锁】系列文章主要是深入redis客户端reddision源码和z...

2020-03-19 16:17:00 853

原创 【Java拾遗】JDK源码之集合篇

说明这里文章大多为复习内容,内容精简干练,为原有基础知识回顾ArrayList,LinkedList使用到的工具类System.arraycopy(srcElements, srcIndex, targetElement, tarIndex, srcLength);Arrays.copyOf(数组,型数组长度);位运算复习x>>1 等价于: x / 2 (2...

2020-03-01 14:22:00 245

原创 分布式事务学习笔记 2020-02-25

分布式事务学习项目:流量充值中心git地址:https://github.com/barrywangmeng/data-refill-center以流量充值业务为模型,来模拟分布式事务的实现。从最开始的单库到后面拆分成多库,从2pc到3pc,从springboot到springcloud,一步步模拟分布式事务中遇到的各种问题。分布式事务参见的集中方案XA分布式事务:一般用于单系...

2020-02-28 13:40:00 289 1

原创 【公众号】欢迎关注本人微信公众号:一枝花算不算浪漫

欢迎大家关注本人公众号:一枝花算不算浪漫扫码关注:关注后会为大家分享最新的原创技术文章,2020年 让我们一起成长!!

2020-01-14 06:31:00 163

原创 Maven使用教程三:maven的生命周期及插件机制详解

前言今天这个算是学习Maven的一个收尾文章,里面内容不局限于标题中提到的,后面还加上了公司实际使用的根据profile配置项目环境以及公司现在用的archetype 模板等例子。后面还会总结一个大的思维导图记录下自己学习的概括。Maven的生命周期介绍先来复习几个命令:mvn clean package:打包mvn clean install:安装到本地mven cle...

2019-11-21 08:31:00 252

原创 JVM 学习笔记二 :JVM内存区域

一、内存分配概述 二、JVM的内存区域划分 1、方法区 方法区主要是在JDK1.8之前的版本,代表JVM中的一块区域。在JDK1.8以后,这块区域的名字改成了"Metaspace",可以认为是元数据空间的意思。当然这里主要还是存放我们自己写的各种类相关的信息。 主要是存放从".class"文件中加载进来的类,还会有一些...

2019-11-19 09:54:00 122

原创 Maven使用教程二:nexus私服搭建及使用

nexus安装从nexus官网 下载最新的安装包1.打开命令行,切换到nexus-3.2.1-01/bin目录下,回车。例:C:\Nexus\nexus-3.2.1-01\bin2.输入:nexus.exe/run,并回车3.执行后出现以下信息表示安装成功:4.打开浏览器,输入:localhost:8081,完成可以修改nexus的一些配置,有两个配置文件,一个是在bin目...

2019-11-19 09:51:00 250

原创 Maven使用教程一:Maven基础

使用Maven快速创建一个工程为了加快速度,在setting.xml中加一段配置,用国内阿里云的镜像仓库可以去下载各种东西。<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name&g...

2019-11-19 09:50:00 121

原创 JVM 学习笔记一 :JVM类加载机制

前言: 最近在看JVM相关资料,这里记录下学习笔记,希望自己能坚持学完,打牢基础。 一、类加载过程 1,类从被加载到JVM中开始,到卸载为止,整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。 2,其中类加载过程包括加载、验证、准备、解析和初始化五个阶段。 二、Java类运行过程...

2019-11-17 08:06:00 154

原创 业务需求:数据库如何保证先查询后插入/更新 原子性?

一、业务需求: 当操作积分用户表时,如果accountId在表中没有数据,那么我们新增一条数据,设置用户积分。如果accountId在表中有数据,我们需要更新用户积分。 这个操作简单来说就是: 在单线程下我们先查询后处理当然没有问题,但是在并发下问题就显而易见了,系统里可能同时插入两条一样的accountId数据。...

2019-10-31 20:03:00 1518 1

原创 【转载】记一次因 Redis 使用不当导致应用卡死 bug 的排查及解决!

说明:此篇文章 作者分析问题的思路很好,值得学习记录,原文转载自公众号。首先说下问题现象:内网sandbox环境API持续1周出现应用卡死,所有api无响应现象刚开始当测试抱怨环境响应慢的时候 ,我们重启一下应用,应用恢复正常,于是没做处理。但是后来问题出现频率越来越频繁,越来越多的同事开始抱怨,于是感觉代码可能有问题,开始排查。首先发现开发的本地ide没有发现问题,应用卡死...

2019-09-22 22:30:00 281

原创 【一起学习设计模式】策略模式实战二:配合注解 干掉业务代码中冗余的if else......

前言: 之前写过一个工作中常见升级模式-策略模式的文章,里面讲了具体是怎样使用策略模式去抽象现实中的业务代码,今天来拿出实际代码来写个demo,这里做个整理来加深自己对策略模式的理解。 一、业务流程 取消订单会有多种情况,比如:取消即时订单、取消预约订单、取消拼车订单 一般业务代码中我们会根据取消类型来进行不同的逻辑处...

2019-09-18 10:13:00 248

原创 【一起学设计模式】策略模式实战一:基于消息发送的策略模式实战

前言 最近准备学习下之前项目中用到的设计模式,这里代码都只展示核心业务代码,省略去大多不重要的代码。 代码大多是之前一起工作的小伙伴coding出来的,我这里做一个学习和总结,我相信技术能力的提高都是先从模仿开始的,学习别人的代码及设计思想也是一种提升的方式。 后续还会有观察者模式、责任链模式的博客产出,都是工作中正式运用到的场景输出,希望对看...

2019-09-04 10:40:00 676

原创 JWT原理 使用(入门篇)

1、JWT简介 JWT:JsonWebToken,是基于Json的一个公开规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,他的两大使用场景是:认证和数据交换 使用起来就是,由服务端根据规范生成一个令牌(token),并且发放给客户端。此时客户端请求服务端的时候就可以携带者令牌,以令牌来证明自己的身份信息。 作用:类似session保...

2019-09-03 14:02:00 819

空空如也

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

TA关注的人

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