自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试经历持续更新

1. 面试贝连科技经历约的是早上10点钟现场面试,早上7点就醒了,看了下自己之前总结过的知识点,然后吃完早餐就高高兴兴的去面试了。快到面试点时,hr就发来微信提醒--今天10点有面试,看到这个提醒,心里还是有些高兴,因为hr妹子还是很专业的。坐电梯到达面试公司,跟前台妹子说,来面试,然后填了个表,表填完后就带我去办公室等着了。去办公室的时候,我注意了一下办公环境,还真的挺不错,比较满意。在办公...

2019-07-17 18:40:38 1516 2

原创 用HashedWheelTimer + Redis + RocketMQ发送未来任意时间精度的延迟消息

在目前开源的RockeMQ版本中,并不支持发送任意时间精度的延迟消息。上次面试,碰到这样的面试题---如果要发送任意时间精度的延迟消息,该如何做?当时回答的不好。今天通过查资料,把这种操作简单落地了。具体的做法是:1. 生产延迟消息:延迟消息由两部分组成--该笔消息的订单号key+业务数据value;2. 存储消息:当把延迟消息组装好之后,把该消息(key,value)放入redis中...

2019-06-29 14:40:35 1729 4

原创 CentOS7防火墙未关闭,导致navicat连接mysql服务端报10060错误

今天在测试环境中,搭建了一个Mysql数据库,用于测试用。服务器是阿里云的,操作系统是CentOS7,当把数据库安装好了后,用Navicat死活连不上mysql。排除问题的步骤:1. 查看阿里云服务器的端口号3306是否打开了;2. 关闭防火墙;我就是因为防火墙没关闭,导致用Navicat死活连不上mysql数据库。在CentOS7上,关闭防火墙的命令是:systemctl s...

2019-06-28 22:15:34 998

原创 redis实现分布式锁的迭代演进

1. redis分布式锁主要是由以下4个命令实现的:a. setnx:是set if not exists的缩写,也就是当该key在redis中不存在的时候才放入redis中,这个步骤分为两步:首先判断该key是否存在,若不存在,则放入;这两步操作是个原子操作,所以这个命令能够实现锁的效果;b. getset:这个命令先根据key执行get操作,再执行set操作,这个命令的作用是:先获取原...

2019-06-07 13:47:33 325 1

原创 RocketMQ事务消息实现原理

暂时,先占个坑,待续...

2019-06-05 16:33:22 530

原创 使用RocketMQ如何处理重复消息

当我们在使用RocketMQ发送消息时,为了实现百分百消息可靠投递,那么重复消息就不可避免。发送消息(同步方式)一般经过三个步骤:首先:将消息从生产端发送到broker,生产端继续等待这条消息的处理结果(broker是否能够正常接收);然后:broker做一些处理(比如同步到从节点以及持久化等);最后:将应答返还给客户端,客户端收到该消息的应答后,做下一步处理。我们考虑一下这样的...

2019-06-05 16:20:38 4524

原创 RocketMQ局部顺序消息实现原理

顺序消息:是指消息的消费顺序与消息的产生顺序相同;顺序消息分为全局顺序消息和局部顺序消息,全局顺序消息是指:在某个topic下的所有消息都要保证消费顺序与产生顺序相同;部分顺序消息是指:只要保证每一组消息被顺序消费即可。在RocketMQ中,若要实现全局顺序消息,首先把topic的读写队列设置为一,然后把生产者producer和消费者consumer都设置成单线程即可。但这样一来,就需要牺牲高并发...

2019-06-05 14:26:10 2221

原创 从源码层面分析shardedJedis使用虚拟节点如何实现负载均衡

转载:https://www.iteblog.com/archives/2499.htmlhttp://www.zsythink.net/archives/1182上面两篇文章对一致性哈希算法的原理讲的非常好,但对虚拟节点方面讲的粒度比较粗,下面我结合ShardedJedis的源码,简单说下自己的理解。当我们的项目启动好之后,根据业务的需要,去操作redis服务器时,需要通过这个命令S...

2019-06-05 11:42:43 237

原创 简单聊聊实现redis分布式的两种方式--ShardedJedis和redis cluster

首先要说下哈:这篇文章是由自己的理解整理而成,由于自己的理解有限,难免会有疏忽之处,若有不对的地方,还望大神指点一二。若要实现redis分布式,在我看来,有常用的两种方式:a. 使用ShardedJedis--客户端分片;b. 使用redis cluster--服务端分片。下面简单说下,这两种实现方式的优缺点:1. 使用ShardedJedis:2. 使用redis cluster:...

2019-06-04 17:36:59 1342

原创 并发容器类

并发容器有:    a. Java5.0中增加了ConcurrentHashMap(对应同步容器Hashtable)、CopyOnWriteArrayList(对应同步容器Vector)、CopyOnWriteArraySet(对应同步Set);   b. Java6.0中增加了ConcurrentSkipListMap(对应同步容器的Collections.synchronizedMap...

2018-07-24 16:16:11 214

转载 Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

转载地址:https://javadoop.com/post/hashmap今天发一篇”水文”,可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍。本来以为花不了多少时间的,不过最终还是投入了挺多时间来完成这篇文章的。网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透...

2018-07-24 11:15:52 105

原创 Map实现线程安全的3种方式

方式1. 使用Hashtable 其实现原理是在增删改查的方法上使用了synchronized锁机制,在多线程环境下,无论是读数据,还是修改数据,在同一时刻只能有一个线程在执行synchronize方法,因为是对整个表进行锁定。所以线程越多,对该map的竞争越激烈,效率越低,不推荐使用。方式2. 使用Collections.synchronizedMap(new Hash...

2018-07-24 11:09:03 12232

原创 同步容器类--Vector--并不是绝对的线程安全

(一)同步容器类1. 同步容器的分类: a. 早期JDK的同步容器类包括Vector和Hashtable; b. JDK1.2种添加的一些功能相似的类,这些同步的封装器类是由Collections.synchronizedXxx等工厂方法创建。这些类实现线程安全的方式是:将它们的状态封装起来,并对每个公有方法都进行同步,使得每次只有一个线程能访问容器的状态...

2018-07-24 10:26:21 581

空空如也

空空如也

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

TA关注的人

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