java
文章平均质量分 81
rainbow_hangyu
这个作者很懒,什么都没留下…
展开
-
spring事务
spring原创 2022-04-06 09:29:58 · 2202 阅读 · 0 评论 -
docker总结
一、安装docker官方文档地址:Install Docker Engine on CentOS | Docker Documentation步骤:1.卸载旧版本yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \原创 2022-04-11 23:57:14 · 959 阅读 · 0 评论 -
集合
一、集合集合的特点就是不存放重复的元素,如果集合底层用链表实现,那么集合的添加、删除、查找时间复杂度都是O(n),这里可能会有疑问,链表的添加时间复杂度不是O(1)吗?是的,但是注意集合的特点就是不存放重复的元素,所以集合在添加的时候会去遍历一遍链表,看看有没有相同的元素,所以集合使用链表实现时,时间复杂度是O(n)。集合使用红黑树时,那么它的时间复杂度是O(logn)。但是使用红黑树实现,那么元素必须具备可比较性,这个就是限制。如何解决这个问题呢?就是后面的经典数据结构哈希表,HashMap!链表原创 2021-05-28 22:45:11 · 104 阅读 · 0 评论 -
红黑树(下)
一、红黑树的删除红黑树的删除主要分为两大类:删除RED节点和删除BLACK节点两种情况,无论是B树的删除或者是二叉搜索树的删除,其实它们的做法都是一样的,先找到删除节点的前驱或者后继节点,然后再删除叶子节点就可以了。所以红黑树的删除我们考虑的是删除叶子节点的情况。1.删除RED节点,直接删除即可,不用做任何调整,因为删除后还是一颗红黑树。2.删除BLACK节点,分为3种情况:拥有2个RED子节点的BLACK节点,例如25。 不可能被直接删除,因为会找它的前驱或后继子节点替代删除,因此不用原创 2021-05-27 22:50:30 · 111 阅读 · 0 评论 -
红黑树(上)
一、前言在学习红黑树之前需要学习B树,它们之间有着密切的关系,因为红黑树可以和4阶B树完美匹配。我的理解是4阶B树里最多含4个分叉。我们会发现B树有一些特点:1.比较矮2.平衡3.拥有二叉搜索树的一些性质4.一个节点能存储多个元素一个m阶的B树具有以下性质:根节点:1<= x<= m-1非根节点:[m/2] - 1 <= x <= m-1所以4阶B树的根节点个数 1<=x <= 3 , 非根节点的个数:1<= x <..原创 2021-05-25 23:48:20 · 140 阅读 · 0 评论 -
AVL树
一、什么是AVL树?首先解释一下为什么会出现AVL树,上一篇我们学习了二叉搜索树,现在我们来分析一下二叉搜索树的时间复杂度。我们会发现在某些情况下,二叉搜索树的时间复杂度会由O(logn)会退化为O(n),所以AVL树就出现了,就是说AVL树是二叉搜索树的一种改进。AVL树里多了一个平衡因子的概念。其实很好理解,平衡因子就是对树平衡程度的一种度量。平衡因子:该节点的左子树的高度减去右子树的高度的差值就叫做该节点的平衡因子。AVL树的平衡因子只可能是-1、0、1,AVL树的添加、删除时间复杂度都是原创 2021-05-22 21:00:08 · 1666 阅读 · 0 评论 -
二叉搜索树(BST)
一、前言关于二叉树还有个故事,Max Howell曾经面试因做不出翻转二叉树,面试被Google拒了。前几天也跟字节面试官交流了一下,太多的东西发现掌握的不够深刻,数据结构还是要坚持学下去,不多说开始coding。二、完全二叉树问题:关于完全二叉树有这样一个问题,如果一颗完全二叉树有786个节点,求叶子节点的个数?推导过程:假设叶子节点的个数为n1,我们知道叶子节点的度为0。假设度为1的节点个数为n2,度为2的节点个数为n3,该二叉树的边树为T。我们就能得到:除了根节点外,每个节原创 2021-05-19 22:49:25 · 195 阅读 · 0 评论 -
队列的实现
一、队列我们会发现队列和栈很相似,栈是先进后出,队列是先进先出。既然栈可以用双向链表实现,那么队列也应该可以。队列的操作主要有入队和出队,入队就是向队尾添加元素,出队就是向队头删除元素。队列的实现:package 队列;import 链表.LinkedList;public class Queue<E> { private LinkedList<E> list = new LinkedList(); /** * 元素的数量原创 2021-04-19 00:14:43 · 270 阅读 · 0 评论 -
ArrayLst实现
一、动态数组我们知道数组的长度是固定的,当我们的数组空间不够的时候,我们需要对数组进行扩容。假设原来的数组长度是5,那么新的数组长度可以是10或者15或者更大,这个取决于自己的设计。二、实现动态数组进行增删改查package array;public class ArrayList <E>{ /** * 数组的大小 */ priv...原创 2021-03-21 20:54:53 · 120 阅读 · 0 评论 -
手写springCloud微服务架构的电商项目(第四天)
需求:我们分布式项目框架雏形已经搭建完毕,接下来就是进行相关功能的开发,今天要完成的功能时微信公众号验证码注册功能,就是用户在微信公众号发布消息,我们公众号需要给用户回复用户注册使用的验证码。原理:在这个过程中,有3个重要的角色:微信客户端,微信服务器,我们的服务器。大致的过程就是:微信客户端会将请求发给微信服务器,然后微信服务器会将请求转发给我们第三方服务器,然后我们将回复内容返回给微信...原创 2020-01-26 16:17:25 · 595 阅读 · 0 评论 -
springBoot+atomikos实现分布式事务
一、前言先把今天学习的内容记录一下,这是个插播,后面继续redis,嘿嘿。今天来聊聊springBoot的基础知识。二、springBoot+atomikos实现分布式事务我们先来看看应用场景,假设我们项目需要访问多个数据库,那事务怎么管理呢。那atomikos做的事情其实就是把所有数据源的事务统一管理起来。下面我们来看看怎么实现。首先引入依赖。<dependency&...原创 2019-08-22 19:39:46 · 832 阅读 · 1 评论 -
基于ehcache+redis实现分布式缓存架构(上篇+下篇)
一、使用缓存的目的和好处使用缓存可以减轻数据库的访问压力,提高数据的响应速度。二、ehcache与springBoot2.0整合,并使用ehcache实现缓存。1.在pom.xml中添加ehcache的依赖。<!--开启 cache 缓存 --> <dependency> <groupId>org.springframework.bo...原创 2019-08-17 02:51:59 · 575 阅读 · 0 评论 -
实现Redis主从复制、读写分离、哨兵模式
一、为什么写博客?记录下自己对一件事情的看法,不随波逐流。假如我年少有为不自卑,你是不是就不会就只是留在我的记忆里。I skate to where the puck is going to be,not where it has been.二、首先画出整个框架图。首先回答一个问题,为什么要做读写分离?读写分离是用来解决数据库的读性能瓶颈的。 ...原创 2019-08-19 00:02:46 · 1335 阅读 · 0 评论