自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 Redis问题汇总和解决方案,持续完善

redis单线程为什么那么快,1.绝大部分基于内存2.IO多路复用,epoll3.复杂高效的数据结构的设计redis简单的get set,底层存储原理:哈希表,数组+链表的形式,1,传入key,对key哈希计算,然后取模,放到对应数组位置的链表上,key,value存再里面2.redis自身良好的设计基本不会出现哈希碰撞redis的五种数据结构:字符串string:1.单值缓存 set get2.对象缓存 set (json格式) Mset Mget3.分布式锁 SETNX

2021-06-06 16:56:56 260

原创 多进程,多线程,协程,锁,线程池 概述

前言为什么我要写这篇文章呢,因为在我深入学习进程和线程这一章以前,我也是对于这个概念含含糊糊,知其然不知其所以然,我要告诉大家一个道理,会用和知道在特定业务场景下使用哪种合适是两回事,并不一定用了就会节约时间的噢进程进程:资源分配的最小单位线程:CPU调度的最小单位相信这两个概念大家都有所了解,但是有没有想过,什么是资源分配,什么又是CPU调度呢,我想给大家白话文的翻译一下我的理解资源分配:主机有一块内存,我一共就单核的1个G这麽大,这时候,我同时开了QQ,微信,微博和CSDN,每一个软件在你

2021-06-01 14:59:56 166 1

原创 数据结构:堆(建堆和堆排序的python实现)

前言这次我首先告诉大家堆的应用领域:TopK问题 、堆排序 、优先队列实现等为什么这次要先告诉大家,因为这次希望先思考和结合下你们刷题或者面试的过程中,是否实现和解决过上述问题,也许不是用堆的原理解决的,但都可以更快的加深你对堆这一概念的理解,那废话不多说,我们开始吧堆**堆栈:**这两个词虽然经常被放在一起说,但是其实它俩在数据结构和算法中都有不同形式的体现栈是用数据结构来实现的一种算法:数组,链表均可堆也是用数据结构来实现的一种算法:树,数组均可1.堆本身是一棵完全二叉树,下图记录了完全二

2021-05-26 17:35:38 786 7

原创 算法:BFS(广度优先遍历)和DFS(深度优先遍历)

前言:在我的文章中介绍了二叉树,B+树,红黑树以及简单提到的AVL树,是不是所以的树都少不了一个方法,遍历全部节点,那遍历全部节点的方法底层到底是什么原理呢,下面就要给大家介绍咯BFS算法和DFS算法在介绍算法之前,大家先简单观察一下下图这颗二叉树,是不是很简单,下面的算法我们基于这颗树来为大家简单的概括BFS和DFS算法BFS:广度优先遍历从根节点开始一层一层,从左向右依次遍历,也就是637258原理思路:使用了队列先进先出的原理,先进去的节点先出来,并且每个节点假如有左右子树,都会在队列末

2021-05-25 18:58:15 323 8

原创 数据结构:手撕红黑树(python方式)

前言:不知道同学有没有看完昨天的B树和B+树,虽说那个B+树在面试中很少被要求手写,但是有一个常考的考点,红黑树,可以一个经常被问到的知识噢,那么今天,我就来跟大家一起手撕红黑树!红黑树说到红黑树不得不先提一下AVL树(平衡二叉搜索树),不了解AVL树的同学可以自行查询相关文献,然后回来以后,请回答我的两个问题:红黑树和AVL树的区别是什么?1.附上红黑颜色属性,通过颜色控制树的平衡2.相对于AVL树来说,没有那么严格的要求平衡3.插入和删除的复杂度和次数较AVL来说,跟随着数量节点的增大,越

2021-05-24 18:49:40 820 3

原创 数据结构:B树和B+树,以及B+树在mysql索引中应用

前言:在学习B树和B+树以及后面红黑树的过程中,建议大家先从基础的二叉树开始学起,最好可以手写一颗二叉搜索树,然后学习AVL树也就是平衡二叉搜索树,学习是一个循序渐进的过程,大家不要急于求成,文章是学习者基于自己对知识的认知总结分享的,但是对于读者来说,它只是辅助的作用,深入学习是非常有必要自己经历的一个过程。B树特点:多叉搜索树,在原有平衡二叉搜索树的基础上,支持同一节点多颗子树,同时满足平衡二叉树多特点。B+树B+树是本文的重点内容,相信大家在面试中经常被问到B树和B+树的区别,下面会给大家

2021-05-23 17:52:45 623 5

原创 数据结构:基于Python的二叉搜索树实现,以及前中后序遍历

二叉搜索树(BST)在学习本篇之前,需要从书籍或者资源中了解下二叉树的基本结构,以及特点。二叉树包括:根结点,左子树,右子树二叉树的基础遍历方式分为三种:遍历方式遍历顺序前序遍历根 左子树 右子树中序遍历左子树 根 右子树后序遍历左子树 右子树 根特点:结点的左子树一定小于当前结点的值,右子树一定大于当前结点的值知道以上的内容,那我们下面基于这个特点,来构建一棵二叉搜索树,抛弃暴力建树过程,用优雅的方式体验算法的奥妙Python实现二叉搜索树# 树节

2021-05-21 16:45:14 136

原创 数据结构:基于python的栈实现

栈特点:先进后出新手可以先学习下栈的概念,然后从实例中理解栈的应用栈的应用(引用此文)Python实现栈# 双端队列(链表式)实现栈# 继承双端队列,即可简单通过链表形式实现栈,看不懂的同学可以温习我的文章双端队列和双端循环链表的实现# 底层其实就是已链表形式实现进栈出栈from queue import DoubleQueueclass Stack(DoubleQueue): def push(self, value): self.queue_append(

2021-05-08 16:26:32 105

原创 数据结构:基于python的队列实现

队列特点:先进先出队列实现方式:顺序队列基于数组实现:可以给队列设置最大长度限制,假如队列长度超出最大限度,可以基于拒绝反馈,可以有效避免多请求等待的情况链式队列基于链表实现:链式队列可以无限拓展队列长度,对于快速得到响应的系统不太适用队列的理解可以参考这位博主概解Python实现队列# 数组实现队列class Queue(object): def __init__(self, max_length=10): self.max_length = max_

2021-05-07 18:06:05 92

原创 When-Change:看门狗

When-Change节省大量重新运行shell,python脚本的时间,当监测的文件发生改变时,将被监测到并重新运行,类似于热更新的原理看门狗简单教学(转载),点此处传送创建python脚本:whenchange.pyimport os#调用Linux的开门狗,实时监测,在改变代码时save以后,重新运行,配合pytest使用os.system("when-changed -v -r -1 . pytest singlelink.py")使用python脚本使用when-Change 去

2021-04-28 17:19:17 148

原创 Docker搭建+运行

一、Docker安装docker在centOS7上的安装部署详情镜像加速器的下载源更改二、Docker常用命令总结1.docker命令#启动/重启/停止docker sudo systemctl enable docker sudo systemctl start docker sudo systemctl restart docker sudo systemctl stop docker#查看docker版本 docker version.

2021-04-26 18:40:47 75

原创 Pytest

Pytest给大家推荐一个好用的python单元测试框架:pytest,支持断点assert操作#安装pytestpip install pytest#安装pytest-html>pip install pytest-html#运行pytest命令(可加各参数,有不同意思,此处不拓展)pytest + 文件名,例:pytest singlelink.py#将测试结果生成html(默认自动找test_开头的py文件)pytest --html=report.html#将测试结果生成h

2021-04-26 18:35:26 72

原创 数据结构:循环双向链表以及用python实现循环双向链表

循环双向链表前情提要:通过上文,了解相信大家已经简单了解了单链表的结构,本文主要介绍循环双向链表,简单说就是双向链表和循环链表的结合,为什么把它放在一起实现呢,因为总体而言,循环双向链表基本解决了各类链表的弊端,实用性较强。图解:下图即是循环双向链表,从图中可以看出,它与单链表的区别,每个结点多了一个指针,指向了前驱结点,也就是上一个结点,而另一个指针则指向了后继结点,即下一个结点,并且头结点与尾结点互连形成循环名词:名词概念前驱结点当前结点prev指针指向的结点后

2021-04-26 18:07:34 481

原创 数据结构:简单理解单链表,python实现单链表

单链表特点:结点中只包含一个指针域,且首尾不连接图解:名词:名词概念头指针指向链表中第一个结点(或为头结点、或为首元结点)的指针头结点在链表的首元结点之前附设的一个结点;数据域内只放表长等信息,它不计入表长度。其作用是统一空表、和非空链表的形式首元结点(开始结点)指链表中存储线性表第一个数据元素a1的结点尾结点(结束结点)指链表中最后一个结点,尾指针指向NULL大家要明白,链表解决的是我们开发中的什么问题?数组在插入和删除的时候,需要

2021-04-26 14:46:24 242 1

原创 数据结构:时间复杂度和空间复杂度如何理解,程序中如何计算

掌握算法5大特性(运用到程序的解释):有穷性: 程序要可以执行完,不能进入死循环确定性: 程序所得的结果就是这个方法定义的,不能要A得B可行性: 程序可以通过基本运算正常执行成功,不能出现1/0违背数学的情况有输入:有参数有输出:有返回值不符合上述情况的我们可以称作是程序,但不代表它是算法!时间复杂度首先从图中了解常用时间复杂度的一个大小:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2^n)<O(n!)

2021-04-23 18:54:13 351

原创 数据结构:如何将二元组转化为实际代码,应用于开发

什么是二元组?(建议看之前先补一下二元组的基础,很简单)逻辑结构的二元组表示:B=(D,R)白话翻译:二元组其实就是用来表示线性结构(数组)和非线性结构(树,图)等用二元组来表示这些数据元素之间的实际关系那如何将二元组这一概念实际在代码中体现呢?比如现在有一个数组[2,3,4,10,9,27]你如何告诉别人,这个数组现在的一个存储顺序,白话是这样的:2在3前面,3在2后面3在4前面,4在3后面4在10前面,10在4后面…那在代码中,你应该咋体现呢?二元组中一般包含两个基础集合b=

2021-04-22 18:51:40 311

原创 Linux下安装Mysql

一.下载Mysql1.通过linux命令+链接方式:wgethttp://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz2.解压Mysql文件并删除压缩包解压:tar -zxvf mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz删除压缩包:rm -f mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz改.

2020-07-15 19:24:09 126

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除