【Linux】进程概念
本篇博客是有关进程状态的,好久没有写Linux的博客了,一起来看看吧! 实验系统:CentOS 7.6 1.系统进程的运行状态 当我们想到进程的时候,一定要首先想到task_struct结构体。该结构体内部有一个state状态码,用于标识当前进程处于什么状态 1.1 运行态 CPU会有一个进程队列(双链表),队列的每一个成员都是一个task_struct结构体,用来维护即将运行的进程。当轮到某个进程运行的时候,CPU就会将这个进程的数据和代码放入内存和自己的寄存器,并开始运行 只要进入了运行队列的进程,就是运行态的进程 所以运行态并不是正在运行的进程 为什么我们对这件事的感知不大呢?那是因为现代的CPU的运行速度非常快,这些运行队列的轮转周期很短 1.2...
【C++】STL的map和set
本篇博客让我们来了解一下STL库里面的map/set的使用,并尝试用自己写的红黑树封装一个类似的map/set出来 所用编译器:VS2019 [TOC] 1 set set就是二叉搜索树中只有单个key的树,它有下面的函数可供使用 1.1 构造函数、迭代器 构造函数、迭代器什么的都很简单,在这里就提到了,和其他STL基本一致 1.2 节点计数 size set自带节点计数,我们可以之间获取二叉树中节点的个数,或判断set是否为空 1.3 插入删除 插入删除等函数在这里不过多解释,使用方法和string、vector完全一致。如果大家的stl是从string一路学习过来,那么对于这些函数的使用肯定没有问题! 插入可以插入单个元素,其返回一个键值对包含这个元素的迭代器+一个bool标识是否插入成功。你还可以用相同类型set的迭代器区间进行插入操作 123456set<int>t1;//定义 set 对象 t1for (int i = 0; i <= 3; ++i) { // 插入 1 2 3 4 5 6 ...
【牛客网】HJ92 在字符串中找出连续最长的数字串
HJ92 在字符串中找出连续最长的数字串 题目来源 牛客网 HJ92 描述 输入一个字符串,返回其最长的数字子串,以及其长度。若有多个最长的数字子串,则将它们全部输出(按原字符串的相对位置) 本题含有多组样例输入。 数据范围:字符串长度 1 \le n \le 200 \1≤n≤200 , 保证每组输入都至少含有一个数字 输入描述: 输入一个字符串。1<=len(字符串)<=200 输出描述: 输出字符串中最长的数字字符串和它的长度,中间用逗号间隔。如果有相同长度的串,则要一块儿输出(中间不要输出空格) 123456789输入:abcd12345ed125ss123058789a8a72a6a5yy98y65ee1r2输出:123058789,9729865,2说明:样例一最长的数字子串为123058789,长度为9样例二最长的数字子串有72,98,65,长度都为2 ...
【C++】红黑树的性质和实现
上篇博客我们了解了AVL树,这篇博客就让我们来看看另外一个二叉树:红黑树 使用的编译器:VS2019 [TOC] 博客里面引用了一些百度搜到的图片(自己懒的画了,呜呜) 1.概念 AVL树是一个几乎完全平衡的搜素二叉树,其左右子树的高度差不会超过1。与之相对应的,是每一次插入都有可能需要旋转多次,插入的效率较低。 而红黑树则选择了“相对平衡”,并拥有以下的特性: 红黑树可以保证最长路径的小于最短路径的2倍 比如最短路径为30,那么最长路径就不能超过60 对于cpu来说,AVL树遍历20次(百万级数据)和红黑树遍历40次的时间差距极小。所以红黑树即保持了相对平衡,又减小了AVL树多次旋转的消耗。 1.1...
【Python】动手写一个git自动上传脚本!
本篇博客来教你用Python写一个简单的git自动上传脚本 前言 为什么需要一个这样的东西? 有的时候,我的学习代码其实没啥好commit的,写一个自动上传的脚本,就可以自动执行完所有的命令,而不需要自己手动进行git三板斧操作 项目代码已开源 https://gitee.com/musnow/learn_python_code/tree/master/code/22-09-02 auto_git 效果如下 把EXE文件丢进你的git仓库路径,点一下就会自动执行命令 打开你的仓库可以看到,成功上传了 源码实现 其实很简单,就是用OS往系统的命令行里面写命令而已 1234567891011121314151617181920212223242526272829import osimport timedef GetTime(): #获取当前时间 return time.strftime("%y-%m-%d %H:%M:%S", time.localtime())#修改默认的提交信息commit_msg=f" \"Code...
【C++】AVL树(平衡搜索二叉树)
在上一篇C++博客中,讲述了关于搜索二叉树以及KVL树的实现。也提到了搜索二叉树的最坏情况:插入的数据已经有序。 而本篇博客涉及到的AVL树,又称平衡搜索二叉树。就是为了解决搜索二叉树的最坏情况而生的。 [TOC] 1. 什么是AVL树 二叉搜索树虽然缩短了查找的效率,但是数据有序的时候,就会出现一边非常长的情况,导致原本的O(logN)时间复杂度被迫变成了O(N) 平衡树也是搜索二叉树,其引入了一个平衡因子的概念,用于控制搜索二叉树的平衡。它会保证左右子树的高度之差(绝对值)不超过1。当新插入节点导致高度之差超过1时,便会触发旋转,使得树的高度降低。 简单说来:AVL树能保证两边高度的相对平衡,这样就稳定了二叉搜索树的效率 1.1...
【Linux】进程概念
本文演示所用系统为CentOS 7.6 1.操作系统 操作系统是不会直接对用户提供服务的。因为这样会暴露自己的底层实现,对系统稳定性造成了威胁 操作系统是通过系统调用层的方式对外提供接口服务的。 这就好比你是通过前端按钮来使用一个网站的功能,而通常你是看不到网页的后端实现的。 Linux系统的底层是用C语言写的,所以这些接口服务本质上就是一些C语言的函数。这些函数用于操作系统的各种管理。 我们学习Linux的系统编程,本质上是在学习这些和系统对接的函数。 1.1 编程语言和系统对接 不同的操作系统,其提供的各种管理硬件的函数是不同的。这时候我们的C/C++等其他语言想和系统对接(如printf打印到屏幕上)就需要在底层帮用户管理好这些系统接口的调用。当我们使用这些语言的时候,就不需要自己手动去调用 1.2 描述进程-PCB PCB并不是那些绿油油的电路板,这里指的是process control...
【Python】在你的云服务/电脑上搭建Python环境
本篇wiki会教你在你的电脑/云服务器上搭建好Python环境 创建你的Python环境 要想让bot跑起来,没有一个Python的环境怎么办? 本篇wiki会教你在你的电脑/云服务器上搭建好可以运行KOOK机器人的Python环境 1.windows 在windows下写Python代码的方式有很多种,这里我介绍的是vs code 如果你已经有了Pycham等代码环境,直接使用即可,也没必要看这篇wiki😋 1.1安装Python 进入Python官网 https://www.python.org/ 找到download,下载最新的Python版本包 这里下载官方推荐的installer即可 注:如果下载速度很慢,可以考虑使用迅雷等下载工具 下载完成后,打开安装包,一定要勾选ADD PYTHON TO PATH这个选项 一定要勾选ADD PYTHON TO PATH这个选项! 一定要勾选ADD PYTHON TO PATH这个选项! 一定要勾选ADD PYTHON TO...
【Linux】比Xshell更爽,用vscode连接云服务器进行开发
本篇博客教你如何用VScode的remote ssh插件连接上linux云服务器进行代码开发~ [TOC] 1.下载vscode vscode是微软官方的一款多语言代码编辑器,其因为丰富而强大的插件而被非常多用户选中使用! 官网下载:https://code.visualstudio.com/ 在这里可以直接下载windows上的VSC,但是默认的下载链接下载是非常慢的! 1https://az764295.vo.msecnd.net/stable/da76f93349a72022ca4670c1b84860304616aaa2/VSCodeUserSetup-x64-1.70.0.exe 我们要做的就是把这个默认的下载链接改成国内的镜像源,下载速度就可以起飞! 123将下载地址中的az764295.vo.msecnd.net 更换为 vscode.cdn.azure.cn...