
数据结构
silk_bar
这个作者很懒,什么都没留下…
展开
-
堆排序原理(图)及java版代码
数据结构中的堆可看做完全二叉树结构,其特性是任意一父节点的值分别大于或小于其左右子节点的值(大根堆和小根堆)完全二叉树一般采用数组结构来表示,根据完全二叉树特性任意一父节点的值都大于(或小于)其子节点的值可知其第一个节点的值为树中的最大(最小)值,则每次将第一个父节点的值放到数组最后则可以实现排序。首先来看一个图例: 点击查看大图图中详细描述了如何将一组数构建成一个完全二叉树以及通过二叉树来排序原创 2016-09-15 15:42:04 · 775 阅读 · 0 评论 -
【JAVA数据结构】双向链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点下面直接来看实现:/** * <p>双向链表实现(先进后出)</p> * @author white * @version $Id: MyLinkedList, v 0.1 2016/9/21 0021 下午 8:32 w原创 2016-09-21 22:07:29 · 389 阅读 · 0 评论 -
【JAVA数据结构】先进先出队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。下面直接来看实现:/** * <p>先进先出队列</p> * * @author white * @version $Id: MyQueen, v 0.1 2016/9/21 00原创 2016-09-21 22:11:00 · 6394 阅读 · 0 评论 -
【漫谈】跨库事务控制方案
很多时候我们都会接触到跨库事务的问题,本篇就以常说的跨行转账作为例子来提供一种方案,供大家参考。 首先,我们知道跨库的话,数据库层级是做不到事务控制的,只能通过逻辑层实现事务控制,那么本篇文章就给大家提供一种方案:利用中间表实现跨库事务控制。 先大致讲述下方案:新建中间库,在用户调用转账逻辑时,生成唯一凭证,此凭证作为接口幂等依据,入库一条数据,状态为待处理,并通知用户转账请求已提交原创 2017-03-05 22:24:01 · 2681 阅读 · 0 评论 -
生成支持分布式部署的唯一id代码实现
在我们工作中,很多场景下都需要生成唯一id,比如订单号、优惠券码等,本篇文章就给大家带来如何用java实现生成唯一id。首先还是按惯例贴出github地址,可直接从github下载源码运行:https://github.com/whiteBX/IDGenerator唯一ID的核心点效率高。id生成器一般作为基础服务,需要有很良好的性能保证,不能让业务感知到明显的延时。支持分布式部署。...原创 2019-09-03 20:51:37 · 382 阅读 · 0 评论