Image
tydhot
Image 码龄8年
Image
求更新 Image关注
提问 私信
  • 博客:346,956
    346,956
    总访问量
  • 176
    原创
  • 90
    粉丝
  • 0
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
目前就职: 杭州笨马网络技术有限公司
加入CSDN时间: 2017-09-20

个人简介:gogogo

博客简介:

不说话装高手

博客描述:
wx:tydhot GitHub:https://github.com/tydhot
查看详细资料
个人成就
  • 获得60次点赞
  • 内容获得56次评论
  • 获得195次收藏
  • 博客总排名1,710,769名
创作历程
  • 5篇
    2021年
  • 36篇
    2020年
  • 56篇
    2019年
  • 52篇
    2018年
  • 27篇
    2017年
成就勋章
  • Image
  • Image
  • Image
  • Image
  • Image
  • Image
TA的专栏
  • Image java-go
    4篇
  • Image sentinel
    3篇
  • Image caffeine
    6篇
  • Image jdk
    23篇
  • Image spring
    2篇
  • Image spark
    27篇
  • Image 算法题
    17篇
  • Image disruptor
    2篇
  • Image elasticsearch
    3篇
  • Image redis
    9篇
  • Image flink
    13篇
  • Image erlang
    4篇
  • Image RocketMQ
    12篇
  • Image light task schedule
    1篇
  • Image maven
    1篇
  • Image elasticjob
    1篇
  • Image scala
    3篇
  • Image hibernate
    3篇
  • Image golang
    2篇
  • Image ribbon
    2篇
  • Image dubbo
    8篇
  • Image consul
    1篇
  • Image sleuth
    1篇
  • Image feign
    1篇
  • Image zookeeper
    1篇
  • Image quatz
    1篇
  • Image mybatis
    3篇
  • Image jstorm
    1篇
  • Image netty
    14篇
  • Image drools
    1篇
  • Image akka
    3篇
  • Image kafka
    4篇

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 0

TA参与的活动 0

创作活动更多Image
Image

王者杯·14天创作挑战营·第9期

这是一个以写作博客为目的的创作活动,旨在鼓励码龄大于等于5年的博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。 注: 1、参赛者可以进入活动群进行交流、互相鼓励与支持(开卷),虚竹哥会分享创作心得和涨粉心得,答疑及活动群请见:【下面活动群二维码】 2、文章质量分查询:https://www.csdn.net/qc 我们诚挚邀请你们参加为期14天的创作挑战赛!

155人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
Image
Image
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

Image
Image Image
搜索 取消

golang sync.map

在golang中,线程安全的map实现为sync.Map,相较于java中线程安全的map ConcurrentHashMap,在设计与实现上都有巨大的差别。java中的ConcurrentHashMapjava中的ConcurrentHashMap为了实现线程安全,在1.7当中,通过分段锁的实现达到了这一目的,区别于HashTable的全部阻塞操作,分段锁的设计在一定程度上提升了在并发场景下的访问性能。在1.8的过程中,锁的粒度被进一步降低,被缩小到了一个HashEntry首节点的地步,并通过在一定长
原创
博文更新于 2021.06.29 ·
773 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Golang sync.pool对象池

概览Goalng中通过sync.pool提供了对象池的实现来达到对象复用的目的。在netty中,也通过Recycle类实现了类似的对象池实现。在netty的对象池Recycle中,当A线程需要将B线程申请的对象回收到对象池中的时候,会专门开辟一个专门由A线程回收到B线程的队列,以避免回收对象的时候所发生的资源竞争。类似的,在golang的对象池sync.pool中也是通过类似的思想来实现所要达到的目的。sync.pool的结构type Pool struct { noCopy noCopy //
原创
博文更新于 2021.06.29 ·
835 阅读 ·
1 点赞 ·
2 评论 ·
0 收藏

Golang heap源码简单走读

golang heap小根堆源码走读heap概览在golang中,通过heap给出了一个实现小根堆的接口。type Interface interface { sort.Interface Push(x interface{}) Pop() interface{} }由于小根堆中,需要根据容器中的元素大小来进行比较以确定元素在堆中的位置。因此也需要实现sort的接口。type Interface interface { Len() int Less(i, j int) bool
原创
博文更新于 2021.06.10 ·
574 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

Golang list双向链表源码走读

list概览list为golang中的双向链表实现,存入list中的元素都会被封装成list中的节点放到双向链表中进行存储。简单的list使用代码如下:func main() { list := list.New() fmt.Println("list length is " + strconv.Itoa(list.Len())) list.PushBack(1) list.PushBack(2) list.PushBack(3) fmt.Println("list length is
原创
博文更新于 2021.06.08 ·
320 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

Sentinel 中限流算法的实现

本文的github地址点击这里Sentinel 中漏桶算法的实现Sentinel 中漏桶算法通过 RateLimiterController 来实现,在漏桶算法中,会记录上一个请求的到达时间,如果新到达的请求与上一次到达的请求之间的时间差小于限流配置所规定的最小时间,新到达的请求将会排队等待规定的最小间隔到达,或是直接失败。@Overridepublic boolean canPass(Node node, int acquireCount, boolean prioritized) { i
原创
博文更新于 2021.01.24 ·
1412 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

Sentinel底层LongAdder的计数实现

本文的github地址LongAdder 的原理在 LongAdder 中,底层通过多个数值进行累加来得到最后的结果。当多个线程对同一个 LongAdder 进行更新的时候,将会对这一些列的集合进行动态更新,以避免多线程之间的资源竞争。当需要得到 LongAdder 的具体的值的时候,将会将一系列的值进行求和作为最后的结果。在高并发的竞争下进行类似指标数据的收集的时候,LongAdder 通常会和 AtomicLong 进行比较,在低竞争的场景下,两者有着相似的性能表现。而当在高并发竞争的场景下,Lo
原创
博文更新于 2020.12.31 ·
436 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

threadlocal的set()方法中的内存回收

ThreadLocal在执行set()方法的时候,实际执行set()逻辑的是其内部类ThreadLocalMap。private void set(ThreadLocal<?> key, Object value) { Entry[] tab = table; int len = tab.length; int i = key.threadLocalHa...
原创
博文更新于 2020.05.02 ·
1708 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

RocketMQ源码解析-Consumer启动(2)

接着上文的Pull消费者启动继续讲。public void start() throws MQClientException { switch (this.serviceState) { case CREATE_JUST: this.serviceState = ServiceState.START_FAILED; t...
原创
博文更新于 2019.01.10 ·
890 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

一个简单的Kafka Flink Rabbitmq Demo

https://github.com/tydhot/Kafka-Flink-Rabbitmq-Demo
原创
博文更新于 2019.02.11 ·
2034 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Quartz的定时任务实现

Quartz中管理定时任务的Scheduler对应一个QuartzScheduler,其中,负责管理定时任务的线程QuartzSchedulerThread也在其构造方法中被启动。public QuartzScheduler(QuartzSchedulerResources resources, long idleWaitTime, @Deprecated long dbRetryInter...
原创
博文更新于 2019.01.10 ·
40443 阅读 ·
6 点赞 ·
1 评论 ·
20 收藏

Dubbo消费者代理的创建

在消费者端,dubbo通过AnnotationBean类实现了BeanPostProcessor接口用来对beanFactory的中bean进行相应的处理。关于消费者的bean以及bean中@Reference注解的处理在AnnotationBean的postProcessBeforeInitialization()方法当中。对于bean中采用了@Reference注解的属性的处理在下面这...
原创
博文更新于 2019.01.10 ·
797 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java1.7ConcurrentHashMap类源码解析

先来看ConcurrentHashMap类的成员。static final int DEFAULT_INITIAL_CAPACITY = 16;static final float DEFAULT_LOAD_FACTOR = 0.75f;static final int DEFAULT_CONCURRENCY_LEVEL = 16;static final int MAXI...
原创
博文更新于 2019.07.14 ·
532 阅读 ·
1 点赞 ·
1 评论 ·
1 收藏

spark的TimSort排序算法实现

Spark版本2.4.0。Spark中的排序实现也是通过TimSort类实现,实现具体方式与JDK略有区别。具体实现,在TimSort类的sort()方法的sort()方法中。if (nRemaining < MIN_MERGE) { int initRunLen = countRunAndMakeAscending(a, lo, hi, c); binar...
原创
博文更新于 2019.08.18 ·
814 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

sentinel 时间窗口的实现

本文的github地址点击这里获取时间窗口的主要流程在 Sentinel 中,主要是通过 LeapArray 类来实现滑动时间窗口的实现和选择。在 sentinel 的这个获取时间窗口并为时间窗口添加指标的过程中,主要的流程为:根据当前时间选择当前时间应该定位当前时间应该属于的时间窗口 id。根据时间窗口 id 获取时间窗口。这里可能会存在三种情况:时间窗口还未建立,那么将会为此次流量的进入建立一个新的时间窗口返回,并且接下来这个时间窗口内的获取请求都将返回该窗口。时间窗口已经建立的情况下
原创
博文更新于 2020.12.10 ·
825 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Netty技术细节源码分析-内存池之PoolChunk设计与实现

该文所涉及的netty源码版本为4.1.16。在一开始需要明确的几个概念在Netty的内存池的PoolChunk中,先要明确以下几个概念。page: page是chunk中所能申请到的最小内存单位。chunk: 一个chunk是一组page的集合在PoolChunk中,chunkSize的大小是2maxOrder*pageSize,其中2maxOrder是PoolChunk中的完全二叉树叶子结点的数量,pageSize则是单个page的大小。综合如上所述,举一个数字上的例子,默认情况下,单个
原创
博文更新于 2020.10.18 ·
566 阅读 ·
0 点赞 ·
2 评论 ·
2 收藏

Netty技术细节源码分析-ByteBuf的内存泄漏原因与检测

该文所涉及的netty源码版本为4.1.6。Netty中的ByteBuf为什么会发生内存泄漏在Netty中,ByetBuf并不是只采用可达性分析来对ByteBuf底层的byte[]数组来进行垃圾回收,而同时采用引用计数法来进行回收,来保证堆外内存的准确时机的释放。在每个ByteBuf中都维护着一个refCnt用来对ByteBuf的被引用数进行记录,当ByteBuf的retain()方法被调用时,将会增加refCnt的计数,而其release()方法被调用时将会减少其被引用数计数。private bo
原创
博文更新于 2020.10.09 ·
1119 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Netty技术细节源码分析-HashedWheelTimer时间轮原理分析

本文是该篇的修正版本文的github地址:点此该文所涉及的netty源码版本为4.1.6。Netty时间轮HashedWheelTimer是什么Netty的时间轮HashedWheelTimer给出了一个粗略的定时器实现,之所以称之为粗略的实现是因为该时间轮并没有严格的准时执行定时任务,而是在每隔一个时间间隔之后的时间节点执行,并执行当前时间节点之前到期的定时任务。当然具体的定时任务的时间执行精度可以通过调节HashedWheelTimer构造方法的时间间隔的大小来进行调节,在大多数网络应用的情况下
原创
博文更新于 2020.10.08 ·
857 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

netty ByteBuf对象池和内存泄漏检测实现走读

ByteBuf存放在堆外内存中,采用引用计数法的方式进行内存回收,具体的实现在AbstractReferenceCountByteBuf中。private static final AtomicIntegerFieldUpdater<AbstractReferenceCountedByteBuf> refCntUpdater;static { AtomicIntegerFieldUpdater<AbstractReferenceCountedByteBuf> up
原创
博文更新于 2020.10.08 ·
401 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

Netty技术细节源码分析-MpscLinkedQueue队列原理分析

本文的github地址:点此该文所涉及的netty源码版本为4.1.6。MpscLinkedQueue是什么在Netty的核心中的核心成员NioEventLoop中,其中任务队列的实现taskQueue便是MpscLinkedQueue。MpscLinkedQueue是Netty所实现的一个基于多生产者单消费者的无锁队列,针对NioEventLoop中任务队列的特点,其单消费者的场景在一开始就避免了从队列中取数据时加锁的必要,而其最精妙的地方便是在多生产者并发从队列中添加数据的时候也没有加锁,达到Ne
原创
博文更新于 2020.09.13 ·
534 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Netty技术细节源码分析-Recycler对象池原理分析

本文是该篇的修正版本文的github地址:点此该文所涉及的netty源码版本为4.1.6。Netty的对象池Recycler是什么Recycler是Netty中基于ThreadLocal的轻量化的对象池实现。既然是基于ThreadLocal,那么就可以将其理解为当前线程在通过对象池Recycler得到一个对象之后,在回收对象的时候,不需要将其销毁,而是放回到该线程的对象池中即可,在该线程下一次用到该对象的时候,不需要重新申请空间创建,而是直接重新从对象池中获取。Recycler在netty中被如何
原创
博文更新于 2020.09.13 ·
424 阅读 ·
1 点赞 ·
2 评论 ·
3 收藏
加载更多
Advertisement