Python
文章平均质量分 58
普通网友
这个作者很懒,什么都没留下…
展开
-
多进程,多线程,协程,锁,线程池 概述
前言 为什么我要写这篇文章呢,因为在我深入学习进程和线程这一章以前,我也是对于这个概念含含糊糊,知其然不知其所以然,我要告诉大家一个道理,会用和知道在特定业务场景下使用哪种合适是两回事,并不一定用了就会节约时间的噢 进程 进程:资源分配的最小单位 线程:CPU调度的最小单位 相信这两个概念大家都有所了解,但是有没有想过,什么是资源分配,什么又是CPU调度呢,我想给大家白话文的翻译一下我的理解 资源分配:主机有一块内存,我一共就单核的1个G这麽大,这时候,我同时开了QQ,微信,微博和CSDN,每一个软件在你原创 2021-06-01 14:59:56 · 173 阅读 · 1 评论 -
数据结构:堆(建堆和堆排序的python实现)
前言 这次我首先告诉大家堆的应用领域:TopK问题 、堆排序 、优先队列实现等 为什么这次要先告诉大家,因为这次希望先思考和结合下你们刷题或者面试的过程中,是否实现和解决过上述问题,也许不是用堆的原理解决的,但都可以更快的加深你对堆这一概念的理解,那废话不多说,我们开始吧 堆 **堆栈:**这两个词虽然经常被放在一起说,但是其实它俩在数据结构和算法中都有不同形式的体现 栈是用数据结构来实现的一种算法:数组,链表均可 堆也是用数据结构来实现的一种算法:树,数组均可 1.堆本身是一棵完全二叉树,下图记录了完全二原创 2021-05-26 17:35:38 · 803 阅读 · 7 评论 -
算法:BFS(广度优先遍历)和DFS(深度优先遍历)
前言: 在我的文章中介绍了二叉树,B+树,红黑树以及简单提到的AVL树,是不是所以的树都少不了一个方法,遍历全部节点,那遍历全部节点的方法底层到底是什么原理呢,下面就要给大家介绍咯 BFS算法和DFS算法 在介绍算法之前,大家先简单观察一下下图这颗二叉树,是不是很简单,下面的算法我们基于这颗树来为大家简单的概括BFS和DFS算法 BFS:广度优先遍历 从根节点开始一层一层,从左向右依次遍历,也就是637258 原理思路:使用了队列先进先出的原理,先进去的节点先出来,并且每个节点假如有左右子树,都会在队列末原创 2021-05-25 18:58:15 · 333 阅读 · 8 评论 -
数据结构:手撕红黑树(python方式)
前言:不知道同学有没有看完昨天的B树和B+树,虽说那个B+树在面试中很少被要求手写,但是有一个常考的考点,红黑树,可以一个经常被问到的知识噢,那么今天,我就来跟大家一起手撕红黑树! 红黑树 说到红黑树不得不先提一下AVL树(平衡二叉搜索树),不了解AVL树的同学可以自行查询相关文献,然后回来以后,请回答我的两个问题: 红黑树和AVL树的区别是什么? 1.附上红黑颜色属性,通过颜色控制树的平衡 2.相对于AVL树来说,没有那么严格的要求平衡 3.插入和删除的复杂度和次数较AVL来说,跟随着数量节点的增大,越原创 2021-05-24 18:49:40 · 840 阅读 · 3 评论 -
数据结构:基于Python的二叉搜索树实现,以及前中后序遍历
二叉搜索树(BST) 在学习本篇之前,需要从书籍或者资源中了解下二叉树的基本结构,以及特点。 二叉树包括:根结点,左子树,右子树 二叉树的基础遍历方式分为三种: 遍历方式 遍历顺序 前序遍历 根 左子树 右子树 中序遍历 左子树 根 右子树 后序遍历 左子树 右子树 根 特点:结点的左子树一定小于当前结点的值,右子树一定大于当前结点的值 知道以上的内容,那我们下面基于这个特点,来构建一棵二叉搜索树,抛弃暴力建树过程,用优雅的方式体验算法的奥妙 Python实现二叉搜索树 # 树节原创 2021-05-21 16:45:14 · 143 阅读 · 0 评论 -
数据结构:基于python的栈实现
栈 特点:先进后出 新手可以先学习下栈的概念,然后从实例中理解栈的应用 栈的应用(引用此文) Python实现栈 # 双端队列(链表式)实现栈 # 继承双端队列,即可简单通过链表形式实现栈,看不懂的同学可以温习我的文章双端队列和双端循环链表的实现 # 底层其实就是已链表形式实现进栈出栈 from queue import DoubleQueue class Stack(DoubleQueue): def push(self, value): self.queue_append(原创 2021-05-08 16:26:32 · 113 阅读 · 0 评论 -
数据结构:基于python的队列实现
队列 特点:先进先出 队列实现方式: 顺序队列基于数组实现: 可以给队列设置最大长度限制,假如队列长度超出最大限度,可以基于拒绝反馈,可以有效避免多请求等待的情况 链式队列基于链表实现: 链式队列可以无限拓展队列长度,对于快速得到响应的系统不太适用 队列的理解可以参考这位博主概解 Python实现队列 # 数组实现队列 class Queue(object): def __init__(self, max_length=10): self.max_length = max_原创 2021-05-07 18:06:05 · 98 阅读 · 0 评论 -
When-Change:看门狗
When-Change 节省大量重新运行shell,python脚本的时间,当监测的文件发生改变时,将被监测到并重新运行,类似于热更新的原理 看门狗简单教学(转载),点此处传送 创建python脚本:whenchange.py import os #调用Linux的开门狗,实时监测,在改变代码时save以后,重新运行,配合pytest使用 os.system("when-changed -v -r -1 . pytest singlelink.py") 使用python脚本使用when-Change 去原创 2021-04-28 17:19:17 · 155 阅读 · 0 评论 -
Pytest
Pytest 给大家推荐一个好用的python单元测试框架:pytest,支持断点assert操作 #安装pytest pip 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 · 76 阅读 · 0 评论