- 博客(18)
- 资源 (2)
- 收藏
- 关注
原创 数据结构与算法 基础排序
排序是算法的基础目录基础排序选择排序插入排序希尔排序基础排序选择排序首先,找到数组中最小的那个元素 其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换) 再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法叫做选择排序,因为它在不断地选择剩余元素之中的最小者。插入排序人们...
2019-03-28 14:59:05 108
原创 RocketMQ主从同步
Slave和Master同步的内容不仅仅是消息本身,一些元数据信息也需要同步,如TopicConfig信息,ConsumerOffset信息,DelayOffset和SubscriptionGroupConfig信息。元数据和前面所说的commitLog不同,元数据使用Netty的command方式定时同步的,而CommitLog则是用Java Nio的方式实现...
2019-03-27 21:05:21 516
原创 RocketMQ消息权重
系统资源有限,避免不了的就是资源分配,像Dubbo等RPC框架对服务分配权重,线程也有权重的概念。但是MQ是队列是FIFO特征,消息本身无法设置优先级,于是RocketMQ采用了另一种思路解决了。后续举例描述。...
2019-03-27 19:06:01 725
原创 RocketMQ进阶技巧
上面已经了解到了RocketMQ的特性以及高可用方式,RocketMQ由于零拷贝和顺序写的加持,和kafka很类似的原理使得吞吐量非常高。后续讲述一下RocketMQ的使用技巧和场景。场景一:顺序消息的场景。比方说涉及到订单事务等 消息顺序不能保证的本质是并行和并发,那么把并行的操作改为串行的话,就很好实现了。 技巧:在于读和写队列个数设置都为1,并且生产者消费者的并发设置也是...
2019-03-27 18:35:32 296
原创 RocketMQ基础概念之Broker
Broker是RocketMQ的核心,大部分工作都在Broker中完成,包括接收请求,处理消费,消费持久,消息的HA,以及服务端过滤等都在里面完成消息的存储和发送 因为有HA,所以需要磁盘持久化 磁盘使用的好坏,可以突破网络的瓶颈 MappedByteBuffer,基于零拷贝技术,由内核态直接往网卡上发送数据,避免了用户态的复制存储结构 ConsumeQueu...
2019-03-27 14:43:23 12125
原创 4.Redis基础数据结构之SkipList
SkipList是一个高效的查询插入数据结构skiplist有序数据结构查找平均O(logN),最坏O(N).效率大部分情况下和平衡二叉树媲美.并且实现简单.使用场景:sortedSet 集群节点中作为内部数据结构...
2019-03-26 21:24:06 101
原创 2.Redis基础数据结构之链表
链表也是很重要的数据类型链表的特性,高效的节点重排,顺序性的节点访问,灵活增删节点链表的使用场景:List的value. 发布与订阅. 慢查询. 监视器等. Redis服务端采用链表保存客户端状态信息 用链表来构建客户端输出缓冲区.Redis的链表为普通的双向无环链表head tail len dup->复制链表节点所保存的值 free->释放链表节点...
2019-03-26 21:23:02 170
原创 1.Redis基础数据结构之字符串
String类型是比较基本的类型String做了改进->动态字符串KVPair均是SDS对象列表内部的字符串也是SDS对象此外SDS还被用作buffer,AOF中的AOF缓冲区,客户端状态中的输入缓冲区.SDS结构:len,字符串的长度 free,闲置空间长度 buf[],字符串本身.优点O(1)复杂度获取长度 因为记录长度避免了拼接String缓冲区溢出 减少...
2019-03-26 21:22:20 102
原创 Redis的线程模型
Redis为什么这么快?很大原因上是因为Redis是一个事件驱动的服务端Redis是一个事件驱动程序,服务器需要处理两类事件:文件事件:Reactor模式,file event handler,使用IO多路复用同时监听多个socket请求,然后分发给不同的事件处理器 监听的accept,read,write,close操作都对应的文件事件就会...
2019-03-26 17:27:58 165
原创 线程池学习
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ...
2019-03-19 20:01:30 175
原创 分布式
分布式系统 三个指标: 数据一致性 系统可用性 扩展性数据一致性,是希望分布式系统只读到最新的数据系统可用性,是指能否持续提供服务扩展性,是在各个节点联通的情况下扩展机器性能...
2019-03-16 16:45:03 93
原创 Lock锁相关以及AQS
Lock锁的使用 Lock lock = new ReentrantLock(); lock.lock(); try { // TODO } finally { lock.unlock(); }这边锁的核心在于AQS(AbstractQueuedSynchronizer抽象队列同步器)AQS基本方法private volatile...
2019-03-14 11:08:57 123
原创 滑动窗口
①初始态,发送方没有帧发出,发送窗口前后沿相重合。接收方0号窗口打开,等待接收0号帧;②发送方打开0号窗口,表示已发出0帧但尚确认返回信息。此时接收窗口状态不变;③发送方打开0、1号窗口,表示0、1号帧均在等待确认之列。至此,发送方打开的窗口数已达规定限度,在未收到新的确认返回帧之前,发送方将暂停发送新的数据帧。接收窗口此时状态仍未变;④接收方已收到0号帧,0号窗口关闭,1号窗口打开,...
2019-03-01 13:35:01 125
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人