17、数据结构 算法
独行侠的守望
在繁华里自律,在落魄里自励;在尘埃里自尊,在伤痛里自愈。
展开
-
Paxos算法详解
二、Paxos算法流程Paxos算法解决的问题正是分布式一致性问题,即一个分布式系统中的各个进程如何就某个值(决议)达成一致。Paxos算法运行在允许宕机故障的异步系统中,不要求可靠的消息传递,可容忍消息丢失、延迟、乱序以及重复。它利用大多数 (Majority) 机制保证了2F+1的容错能力,即2F+1个节点的系统最多允许F个节点同时出现故障。一个或多个提议进程 (Proposer) 可以发起提案 (Proposal),Paxos算法使所有提案中的某一个提案,在所有进程中达成一致。系统中的多数转载 2020-07-22 13:05:46 · 752 阅读 · 0 评论 -
深入解析HashMap原理(基于JDK1.8)
之前经常用HsahMap但是从未了解过底层的实现原理,今天就基于jdk1.8来研究一下HashMap的底层实现。在探讨hashMap前先说一下,两种常见的数据结构,数组与链表。数组:数组具有遍历快,增删慢的特点。数组在堆中是一块连续的存储空间,遍历时数组的首地址是知道的(首地址=首地址+元素字节数 * 下标),所以遍历快(数组遍历的时间复杂度为O(1) );增删慢是因为,当在中间插入或删除元素时,会造成该元素后面所有元素地址的改变,所以增删慢(增删的时间复杂度为O(n) )。链表:链表具有增删快.转载 2020-06-22 10:22:29 · 232 阅读 · 0 评论 -
HashMap中是如何形成环形链表的?
HashMap 是非线程安全的。多线程环境下,HashMap的put操作会引起死循环,导致CPU的利用率接近100%,因为多线程会导致HashMap的Entry链表形成环形链表,导致Entry的next节点永远不为空,就会产生死循环获取Entry。那么这个环形链表是如何形成的?转载原文如下:导读:经过前面的博客总结,可以知道的是,HashMap是有一个一维数组和一个链表组成,从而得知,在解决冲突问题时,hashmap选择的是链地址法。为什么HashMap会用一个数组这链表组成,当时给出的答案转载 2020-06-22 10:14:20 · 3766 阅读 · 0 评论 -
java中priorityQueue详解
以前转自https://www.cnblogs.com/Elliott-Su-Faith-change-our-life/p/7472265.html,现已404,学习使用保存转载,有疑问联系删除,谢谢!Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度,将让读者建立对PriorityQueue建立清晰而深入的认识。总体介绍前面以JavaArra..转载 2020-06-22 10:02:17 · 1972 阅读 · 0 评论 -
数据结构_排序算法总结
所有内部排序算法的一个总结表格asadsa.png简单选择排序首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。最差:O(n2)最优:O(n2)平均:O(n2) public void selectSort(int[] a){ for(int i=0;i<a.length-1;i++){ int min=i;//最小元素所.转载 2020-06-22 09:53:32 · 209 阅读 · 0 评论 -
很全面的算法和数据结构知识(含代码实现)技术面试宝典:
PS:很久以前转载自http://blog.jobbole.com/110835/,此链接已经404,学习使用,有问题联系本人删除。谢谢!技术面试宝典: 很全面的算法和数据结构知识(含代码实现)目录在线练习 在线编程面试 数据结构 算法 贪心算法 位运算 复杂度分析 视频教程 面试宝典 计算机科学资讯 文件结构在线练习LeetCode Virtual Judge CareerCup HackerRank CodeFights Kattis HackerE..转载 2020-06-22 09:50:13 · 170 阅读 · 0 评论 -
java 数据结构与算法002---队列
import java.util.Scanner;public class ArrayQueueDemo { public static void main(String[] args) { //测试一把 //创建一个队列 ArrayQueue queue = new ArrayQueue(3); char key = ' '; //接收用户输入 Sca...原创 2020-03-02 08:44:57 · 175 阅读 · 0 评论 -
java 数据结构与算法001---稀疏数组
一、稀疏数组public class SparseArray { public static void main(String[] args) { // 创建一个原始的二维数组 11 * 11 // 0: 表示没有棋子, 1 表示 黑子 2 表蓝子 int chessArr1[][] = new int[11][11]; chessArr1[1][2] = 1...原创 2020-03-02 08:44:50 · 136 阅读 · 0 评论 -
queue队列
queue一端只进不出(插入);另一端只出不进(删除);先进先出【对比:栈---后进先出,只在一头操作】队列是一种特殊的受限线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是...原创 2019-04-02 20:48:00 · 112 阅读 · 0 评论 -
斐波那契数列【java实现】
java 实现斐波那契数列以下是Java代码实现(递归与递推两种方式): import java.util.Scanner; /** * Fibonacci * * @author tongqian.zhang */ public class Fibonacci { ...原创 2019-04-02 20:49:00 · 193 阅读 · 0 评论 -
二叉树
左小右大 + 中序遍历 遍历出的数据 就是 从小到大集合TreeMap的key部分,迭代器就是采用的中序遍历B树 二叉搜索树1、所有非叶节点之多两个儿子2、所有节点存储一个关键字3、非叶子节点左针指向小于其关键字的儿子 右针指向大于其关键字的儿子...原创 2019-04-02 22:09:00 · 61 阅读 · 0 评论