OOM了怎么办?
常见的内存泄漏情况有哪些?
如何定位解决内存泄漏问题?
如何用UML进行系统设计
UML有3类模型,5类图形,是系统设计的有力建模工具,可在项目的需求分析>功能设计>架构设计>详细设计>数据模型设计
等阶段进行迭代更新
;
帮助团队成员从宏观到细节整体认识产品,有利于知识共享,便于团队协作并建立共识。
如何设计一个好的数据处理工具
RabbitMQ数据读写过程
RabbitMQ如何存储
消息,RabbitMQ如何接收消息
和投递消息
?
RabbitMQ延迟队列
如何通过RabbitMQ的延迟/死信队列
实现消息投递系统中的异常重试机制
?
RabbiMQ之AMQP协议
rabbitmq是基于amqp协议的一种实现,包含amqp的三层协议
RabbitMQ系统架构
rabbitmq采用什么系统架构,有哪些常规使用模式?
JDK-HashMap原理
HashMap是Java中KV存储的实现,其如何解决Hash碰撞问题十分经典;
本文从HashMap的概念,结构,参数,性能,线程安全性,源码解析(put,get,resize),使用场景,常见问题
8个方面进行分析。
BinaryHeap的实现原理
前段时间折腾RabbitMQ踩了个坑,
- 队列中对每个消息设置TTL时,如果队头有消息阻塞会导致TTL已过期的消息不能准时送达,优先队列也同样适用;
- 由于存储方式的原因,RabbitMQ中PriorityQueue一但定义了就不能更改队列的类型;
其中关于PriorityQueue
的机制不太清楚,于是有了这篇关于二叉堆的文章,下一步研究下JDK中PriorityQueue的源码如何实现;
关键点:二叉堆基于
一维数组
构建完全二叉树结构,,heapify
复杂度为O(n)
,其add
和pop
复杂度为O(log(n))
,peek
的复杂度为O(1)
,适用于优先队列场景;
JDK-PriorityBlockingQueue原理
研究了PriorityQueue原理,知道JDK源码怎么实现的优先队列,这次是要搞清PriorityBlockingQueue
阻塞优先队列是如何实现的;
本文从PriorityBlockingQueue的概念,结构,参数,源码解析(offer,poll,remove,add,grow),性能,线程安全性,使用场景,常见问题
8个方面进行分析。
关键点:与PriorityQueue一样的排序规则,无界队列,实现Queue,Collection,Iterator接口、不允许null键/值、提供阻塞操作、线程安全、不保证队列内元素的顺序;
JDK-PriorityQueue原理
如何实现扫码登陆
微信的扫码登陆风行,几乎所有的web端应用都给出了让用户从移动端扫码登入的入口;
本文主要描述如何用扫码形式在云端绑定硬件设备;
单链表反转
二叉树的中序遍历
二叉树的中序遍历的实现
二叉树BFS-锯齿遍历
二叉树锯齿状遍历实现
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
二叉树BFS-分层遍历
二叉树分层遍历实现,
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
单链表区间反转
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明: 1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL
查找链表的2等分点
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
删除链表的倒数第N个元素
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
判断单链表中是否有环
给定一个链表,判断链表中是否有环。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。