自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法入门宝典!小灰电子书《算法从入门到进阶》超实用的算法手册

为了满足如今多元化的阅读方式,小灰老师最近花费两个多月的时间,提炼出了《漫画算法》系列三本图书的精华内容,创作了一个算法与数据结构的电子小册,这个小册的名字叫做。悉小灰的小伙伴们都知道,小灰曾经创作了三本算法有关的图书,分别是《漫画算法》、《漫画算法Python篇》、《漫画算法2》。如今,这三本书在全网的销量超过10W册,可以说是IT领域最畅销的图书之一。我已经买了,很不错,推荐大家也可以看看,很实用,也不贵!

2023-11-21 10:29:02 143

原创 VLAN 基础知识 - 由浅入深带你探究VLAN(1)

要了解VLAN,我们需要首先知道它是什么,是用来做什么的。VLAN(Virtual Local Area Network),翻译成中文是“虚拟局域网”。其中,LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。那么什么是广播域呢?广播域,指的是广播帧(目标MAC地址全部为1)所能传递到的范围,亦即能够直接通信的范围。

2023-10-14 23:30:31 200

原创 如何使用git submodule:添加、查看、更新、修改、删除、克隆含submodule的项目

Git submodule 功能可以让我们在一个仓库中添加另一个仓库作为当前仓库的子仓库,这样既方便了代码管理,也免去我们重复造轮子的精力和时间。注意:Git submodules 只是某个仓库某一时刻的一个状态的引用,即某个 commit 的引用。

2023-10-11 21:28:16 2356

原创 【C++ inline】保姆级内联函数介绍、优缺点、使用场景

【C++ inline】保姆级内联函数介绍、优缺点、使用场景

2023-07-13 16:43:12 2386

原创 Python如何处理JSON数据,保姆级教程,小白也能玩转

包括序列化与反序列化、格式化处理和数据类型对应

2023-05-03 00:19:09 7435 1

原创 【线程池C++实现】

线程池的C++实现

2022-07-11 14:01:23 412

原创 【Git】入门级保姆教程

一、入门教程Git 是目前最流行的分布式版本控制系统,是开发中不可或缺的团队协作工具。然而网络上关于 Git 的教程质量却是良莠不齐,不利于新手入门。在此推荐一个我认为较好的廖雪峰老师版本的 Git 教程,该教程深入浅出的给出了开发过程中常见的 Git 场景和命令,学习过程中就可上手练习,网站地址:Git教程 - 廖雪峰的官方网站。 下表也是廖老师在教程中给出的 Git 常用命令集合,这里仅留作个人记录,大家可以自行下载(期末总结页面)。二、进阶教程 ...

2022-05-05 10:44:08 196

原创 【常见缓存算法原理及其C++实现】LFU篇

一、缓存算法简介(一)缓存算法应用背景缓存的应用场景和范围十分广泛,下面给出其十分常见的两种应用背景:首先,在操作系统内部,由于内存资源十分有限,而每个进程又都希望独享一块很大的内存空间。所以诞生了一种“虚拟内存”机制,它将进程的一部分内容暂留在磁盘中,在需要时再进行数据交换将其放入内存,这个过程就需要用到缓存算法机制进行置换。其次,对于各类应用项目开发而言,在巨大的数据量面前,Cache是不可或缺的。因为无论是针对本地端的浏览器缓存,还是针...

2022-04-06 13:54:42 3796 1

原创 【常见缓存算法原理及其C++实现】LRU篇(包含过期时间详解)

一、缓存算法简介(一)缓存算法应用背景缓存的应用场景和范围十分广泛,下面给出其十分常见的两种应用背景:首先,在操作系统内部,由于内存资源十分有限,而每个进程又都希望独享一块很大的内存空间。所以诞生了一种“虚拟内存”机制,它将进程的一部分内容暂留在磁盘中,在需要时再进行数据交换将其放入内存,这个过程就需要用到缓存算法机制进行置换。其次,对于各类应用项目开发而言,在巨大的数据量面前,Catch 是不可或缺的。因为无论是针对本地端的浏览器缓存,还...

2022-04-05 23:04:18 6706 6

原创 【数据库】Mysql索引总结-面试这一篇就够了

一、索引的作用、优缺点1、作用索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。2、优点(就是加速)(1)极大地加速了索引过程,减少 IO 次数(2)创建唯一索引,保证了数据库表中的唯一性(3)加速了表与表之间的连接(4)针对分组和排序检索时,能够显著减少查询查询中的分组和排序时间3、缺点(1)索引表占据物理空间(2)数据表中的数据增加、修改、删除的同时需要去动态维护索引表,降低...

2022-03-30 11:03:00 898

原创 【C++】寻找数组第k大元素

一、基本问题题目:给定整数数组nums和整数k,请返回数组中第k个最大的元素。注意:你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。要求:时间复杂度为 O(N)看到这个问题,我们脑袋里第一个想到的就是先把整个数组排个序,然后分下奇偶长度,取个中位数就完了。但是一看要求时间复杂度要求为 O(N) ,众所周知,基于比较的排序的时间复杂度下限为 O(NlogN) ,不基于比较的排序又不适用于 数据范围很大的情况,所以本题目要选择其他思路。.........

2022-03-25 09:27:21 4661

原创 【C++ 有向图 模板】邻接表形式and邻接矩阵形式

(原理解释参考注释,注释很详细)一、邻接表/*有向图模板-begin*/class Node;class Edge;class Graph;class Node{public: int value;//点的值,必须可唯一标识点 int in;//入度 int out;//出度 vector<Node> nexts;//当前点 指向的 点集合 vector<Edge> edges;//以当前点为起点的 边集合 N

2022-02-23 16:06:22 904

原创 ansible安装配置及简单使用(MacOs下)

一、推荐学习资料1、ansible中文指南:Variables — 国内最专业的Ansible中文官方学习手册2、视频教程:ansible教程-马哥2019全新ansible入门到精通_哔哩哔哩_bilibili二、MacOs下ansible的安装及配置1、存在的问题:brew install出现反复超时2、故采用pip3安装(具体pip3的安装及配置不做赘述,网上教程超级多)sudo利用root权限执行 sudo pip3 install ansible 通过 pip 安装

2022-01-29 15:17:51 4360

原创 Ubuntu-Python3下安装Scapy(非pip方法)

一、背景由于Ubuntu中默认使用Python2,利用Python3中的pip3命令或者apt命令安装scapy包时容易爆出各种错误,故决定采用最原始的方法安装。二、安装环境操作系统 Ubuntu 18.04.6 Python版本 3.5 三、安装步骤1、下载scapy压缩包:wget --trust-server-names https://github.com/secdev/scapy/archive/master.zip2、安装unzip...

2022-01-29 01:54:23 4072 2

原创 【C++取整操作】浮点数and整型

一、浮点数1、向上取整(不小于自变量):ceil()2、向下取整(不大于自变量):floor()3、四舍五入取到最临近的整数:round()二、整型1、向上取整(不小于自变量):(n-1)/m + 1 ,也可以写成 (n+m-1)/m2、向下取整(不大于自变量):n/m...

2021-12-17 09:45:32 1175

原创 【C++二分查找详解】基本二分、左右边界问题集合

一、寻找一个数(基本二分查找)1、题目描述给定单调不减有序数组 nums ,寻找 target 是否在数组中,若找到返回其下标,否则返回-1。2、代码框架/*基本二分*/int binarySearch(vector<int>& nums,int target){ int left=0,right=nums.size()-1; int mid; while(left<=right) { mid...

2021-12-16 14:25:20 2283

原创 【C++】十大排序算法原理、代码、时空复杂度and稳定性分析

前言:本文排序顺序均为从小到大一、冒泡排序1、算法描述⽐较相邻的元素。如果第⼀个⽐第⼆个⼤,就交换它们两个; 对每⼀对相邻元素作同样的⼯作,从开始第⼀对到结尾的最后⼀对,这样每一趟排序,所有未排序元素中最后的元素即是最⼤的数; 重复复以上两步骤 n - 1 次( n 为数组的大小),直到排序完成。2、代码展示void bubbleSort(vector<int>& num){ int n=num.size(); for(int i=0;i

2021-12-14 22:21:16 1127

原创 【C++前缀树】Trie简介、构造及应用

一、简介Trie,又称前缀树或字典树,是一棵有根树,一般应用于字符串(本文假设字符串全为小写英文字母构成)的操作,其每个节点包含以下字段:指向子节点的指针数组 children ,对于全为小写英文字母的字符串而言, children 数组长度为26,即小写英文字母的数量。 布尔字段 isEnd ,表示该节点是否为字符串的结尾。二、构造class Trie {private: vector<Trie *> children; bool isEnd; T.

2021-12-14 15:54:46 750

原创 【C++优先队列】priority_queue简介、用法及例题

一、简介1、优先队列中,元素被赋予优先级,具有最高级先出 (first in, largest out)的行为特征。2、头文件:#include<queue>3、定义:priority_queue<Type, Container, Functional> 其中,Type 为数据类型,Container 为容器类型(Container必须是用数组实现的容器,比如vector,deque等,不能用 list。STL里面默认用的是vector),Funct...

2021-12-14 15:43:05 2067

原创 【C++】快速排序算法、代码、时空复杂度and稳定性分析

一、思想1、基本思想:基于 交换 的高效排序算法,采用了 分治法 的思想。2、算法描述:从数列中取出一个数作为基准数(pivot,一般取数组第一个元素); 把数组进行左右划分(partition),大于基准数的元素都移至枢轴右边,小于等于基准数的元素都移至枢轴左边; 再对左右的子区间重复第二步的划分操作,直至每个子区间只有一个元素,排序完成。3、复杂度:复杂度 最坏时间复杂度 平均时间复杂度 最坏空间复杂度 平均空间复杂度 .

2021-12-11 21:18:59 2904 3

原创 快速幂算法-Pow(x,n)

一、递归原理: 举个例子求解,不需要对 x 进行 77 次乘法计算,而可以按照 的顺序,在这些步骤中,可以直接把上次的结果进行平方,而在这些步骤中,在对上次结果平方后,还需额外乘一个 x 。 从右往左推导上述过程,利用分治思想,可以得到快速幂算法递归步骤: (1)求解,可以先递归的计算; (2)根据递归的计算结果,若 n 为偶数,则 ;若 n 为奇数,则 ; (3)递归出口为 n =...

2021-12-06 15:19:41 1134

原创 【进制思路】11.25LeetCode每日一题思考:毒老鼠and可怜的小猪

一、毒老鼠题目:1000瓶毒药里面只有1瓶是有毒的,毒发时间为24个小时,问需要多少只老鼠才能在24小时后试出那瓶有毒。解题思路:因为只能测试一次,故利用2进制思路解题,2^10大于且最接近于1000。00000000000000000001....11111...

2021-11-25 09:31:23 189

原创 【LeetCode】剑指 Offer 专项突击版-刷题笔记(C++ Version更新中...)

一、整数1、整数除法题目描述:给定两个整数a和b,求它们的除法的商a/b,要求不得使用乘号'*'、除号'/'以及求余符号'%'。解题思路:利用减号“-”进行处理,利用不断减去除数的倍数来进行算法优化。(1)需考虑边界及溢出情况: ①int型取值范围为-2^31到2^31-1 ②INT_MIN/-1溢出为INT_MAX ③abs(INT_MIN)=INT_MIN(2)主要算法描述(while循环部分): ...

2021-11-24 16:34:36 713

原创 洗牌算法(Fisher–Yates Shuffle and Knuth-Durstenfeld Shuffle)

一、Fisher–Yates Shuffle1、算法思想:从原始数组中随机抽取一个新的数字到新数组。2、算法描述:初始化原始数组和新数组,原始数组长度为n(已知); 针对未处理的原始数组元素(假如还剩k个),随机产生一个[0, k)之间的数字p(假设数组从0开始); 从原始数组剩下的k个数中把第p个数取出,放入新数组; 重复步骤(2)和(3)直到数字全部取完; 取出的数字序列(新数组)便是一个打乱了的数列。3、时间复杂度:O(n^2)4、C+...

2021-11-22 09:57:51 1096

原创 VSCode连接远程主机-修改本地config以获取root权限

F1后在输入框输入config,选择列表中下图文件Host和HostName输入远程主机ip;User改为root;

2021-10-24 11:23:43 1571

原创 Python .csv转Excle数据(csv数据为空格分割)

#coding:utf-8import csvimport xlwt#新建excel文件myexcel = xlwt.Workbook()#新建sheet页mysheet = myexcel.add_sheet("name.csv")#读取csv文件名集代码f = open("csvNameList.txt", "r")line = f.readline()names=[]while line != "": line = line.strip() s = line[.

2021-10-24 11:16:41 1306

C++实现的LRU缓存算法(带定期/不定期过期时间)

本算法为 C++ 实现的 LRU 缓存算法,包含普通 LRU、定时过期的 LRU、不定时过期的LRU,数据结构为双向链表及哈希表结合的方式,实现了 get() 和 put() 两个操作,且所有操作的平均时间复杂度均可以控制在 O(1) 内。

2022-12-25

C++实现的LFU缓存算法

本算法为 C++ 实现的 LFU 缓存算法,数据结构为 2 个哈希表再加上 N 个双链表,实现了 get() 和 put() 两个操作,且所有操作的平均时间复杂度均可以控制在 O(1) 内。

2022-12-25

洗牌算法(Fisher–Yates Shuffle and Knuth-Durstenfeld Shuffle)

Fisher–Yates Shuffle and Knuth-Durstenfeld Shuffle洗牌算法的C++实现。

2022-12-25

C++快速幂算法Pow(x,n)

C++实现的快速幂算法-Pow(x,n),本算法实现了迭代和递归两个版本。

2022-12-25

Python实现的.csv转Excle数据

Python实现的.csv数据转为Excle数据,其中csv数据格式需要为为空格分割的形式。

2022-12-25

C++实现的快速排序算法

C++实现的快速排序算法,从小到大、从大到小排序均有实现,注释有原理详解。

2022-12-25

C++前缀树trie的实现

C++实现的前缀树trie数据结构

2022-12-25

空空如也

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

TA关注的人

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