1、redis分布式锁的基本实现redis加锁命令:SETNX resource_name my_random_value PX 30000 这个命令的作用是在只有这个key不存在的时候才会设置这个key的值(NX选项的作用),超时时间设为30000毫秒(PX选项的作用) 这个key的值设为“my_random_value”。这个值必须在所有获取锁请求的客户端里保持唯一。SETNX 值保持唯一的是
  • arick
  • 2019-09-24 22:07:54
Tomcat线程池的优化1. 简介Tomcat继承并重写了JAVA原生的java.util.concurrent.ThreadPoolExecutor,增加了一些更有效率的方法,并且定义了默认拒绝策略。2. 原理分析2.1 实例化与阿里巴巴JAVA规范中定义的线程池创建规范类似,Tomcat实例化线程池时,同样限制了任务队列的长度,maxQueueSize默认为Integer.MAX_VALUE,
  • arick
  • 2019-11-16 23:42:00
近期项目中需要将应用部署到私有化环境中,同时要与边缘网关的LE(Link IoT Edge)进行MQTT通信。本文对该通信过程做了简单梳理和总结。Copy一、环境准备1、创建边缘实例;2、在边缘实例中部署LE;https://help.aliyun.com/document_detail/85155.html?spm=a2c4g.11186623.6.542.55b04353QpDySD二、边
  • arick
  • 2020-04-05 20:50:25
Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafka的特性之一就是高吞吐率。即使是普通的服务器,Kafka也可以轻松支持每秒百万级的写入请求,超过了大部分的消息中间件,这种特性也使得Kafka在日志处理等海量数据场景广泛应用。针对Kafka的基准测试可以参考,Apache Kafka基准测试:每秒写入2百万(在三台廉价机器上
  • admin
  • 2019-06-24 23:28:47
分布式消息中间件作用:1. 解耦(同步调用是一种强依赖,而异步调用是一种弱依赖);2. 削峰填谷;3. 降低响应时间;4. 提升吞吐量(Kafka 的吞吐量是MySQL 吞吐量的30-40倍,并且Kafka的扩展性远高于MySQL);Kafka 的设计原理Kafka 是一个分布式消息中间件,但是它并不符合JMS 规范,即使消息已经被消费,也不会被马上删除,当消息保留一定时间后,会被批量删除。在Ka
  • admin
  • 2019-06-21 17:26:59
序言在后端的日常开发工作中,集合是使用频率相当高的一个工具,而其中的HashMap,则更是我们用以处理业务逻辑的好帮手,同时HashMap的底层实现和原理,也成了面试题中的常客。以前曾有详细了解过HashMap的实现原理,看过源码(JDK7版本)。但随着jdk版本的飞速迭代(现在都到JDK13了,但新特性还从没用过。。),主流的jdk使用版本也终于从JDK7挪到了JDK8。由于JDK的向前兼容,在
  • arick
  • 2020-05-13 14:48:32
Redis 6.0 的亮点之一就是支持多线程,Redis 分  主线程 和  IO线程 , IO线程 只用于读取客户端的命令和发送回复数据给客户端,处理客户端命令还是在  主线程 进行,如下图所示:从上图可知, 主线程 主要负责接收客户端连接,并且分发到各个  IO线程 ,而  IO线程 负责读取客户端命令。命令读取完成后,由  主线程 执行命令。 主线程 执行完命令后,再由  IO线程 把回复数
  • arick
  • 2020-07-11 01:38:21
1 扩容时可能造成死循环,扩容时会造成死锁,形成环形链表;或者造成扩容大小不一致等问题2 多个线程put的时,get的值可能不一致,put的操作不是原子性的3 删除键值对的时候,会删除刚刚修改的位置元素扩容操作时:这个操作会新生成一个新的容量的数组,然后对原数组的所有键值对重新进行计算和写入新的数组,之后指向新生成的数组。当多个线程同时检测到总数量超过门限值的时候就会同时调用resize操作,各自
  • arick
  • 2020-04-21 13:52:05
开源展示了人类共同协作,成果分享的魅力,每一次技术发展都是站在巨人的肩膀上,技术诸多创新和发展往往就是基于开源发展起来的,没有任何一家网络公司可以不使用开源技术,仅靠自身技术而发展起来。阿里巴巴各个团队都是发自内心地将踩过的坑和总结的经验融入到开源项目中,供业界所有人使用,希望帮助他人解决问题。云栖社区特在2018年年末,将阿里巴巴的一些重要的开源项目进行整理,希望对大家有所帮助。(以下项目排名不
  • arick
  • 2020-05-03 00:14:57
Channel 通道,可以类比nio的channelNioEventLoop 单线程的线程池,可以处理多个channel,源于nio可多路复用的特点ChannelInboundHandler 可以有多个,处理进入的事件,主要的业务逻辑写在这里ChannelOutboundHandler 可以有多个,处理出去的事件,主要的业务逻辑写在这里ChannelPipeline 管理所有的ChannelInb
  • arick
  • 2020-05-13 17:41:32
Rick ©2018