自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CSS选择器总结~

  在前端页面中,CSS起到了对html骨架的装饰作用。通过使用 CSS 我们可以大大提升网页开发的工作效率,同时能够控制多重网页的样式和布局。CSS的基本语法为:选择器 {属性:属性值;属性:属性值}<style> p { color:red; text-align:center; } </style>一般将style标签放置在head标签中CSS的创建方法有以下三种:外部样式表档样式需要用到很多页面上时,可以通过link或@import引入外部样式文件

2022-05-04 16:59:19 1067

原创 VSCode前端开发超级好用的插件介绍(附常用快捷键)~

最近在用VSCode练习前端代码,学习到了一些好用的插件及快捷键,分享一下~1. VSCode简介  Visual Studio Code是一种轻量级但功能强大的源代码编辑器,可在桌面上运行,适用于Windows、MacOS和Linux。它内置支持Java、Type和Node.js的功能,还有丰富的扩展生态系统,这些扩展面向其他语言(如C++、C#、Java、Python、PHP和Go)和运行时环境(比如.Net和Unity)。2. 好用的插件重命名标签Auto Rename Tag作用是当重命

2022-04-29 17:01:12 2457

原创 集群、分布式、微服务

先记一下概念和区别,有空再详细补充集群是一个物理形态,分布式是一种工作方式。分布式是指将不同的业务分布在不同的地方;集群是指将几台服务器集中在一起实现同一个业务。分布式中的每一个节点都可以做集群,而集群不一定就是分布式。比如说新浪网,访问的人多了,就可以做一个集群,前面放一个响应服务器,后面是几个服务器集群完成同一个业务。如果有业务访问的时候,响应服务器会看哪台服务器的负载不是很重,就将请求分派给他去完成。分布式中每一个节点都完成不同的业务,如果有节点垮掉,则业务不能访问。好的设计方案应该是分布式和集群结

2021-09-25 19:31:17 214

原创 python可变对象、不可变对象的理解

在写python程序时,对于可变对象和不可变对象这里理解不深,导致总会犯一些细节错误。以下面的程序举例:ab = {'a':1, 'b':2}list1 = []for i in range(2,5): ab['a'] = i list1.append(ab)print(list1) # [{'a': 4, 'b': 2}, {'a': 4, 'b': 2}, {'a': 4, 'b': 2}]这段代码本以为结果应该是[{‘a’: 2, ‘b’: 2}, {‘a’: 3,

2021-09-23 22:56:55 3010 1

原创 数据结构中的堆

好久没写博客了。今天在做力扣丑数这道题的时候用到了python内置的小顶堆。所以来总结一下关于堆的内容~1. 堆的概念堆是一颗完全二叉树小顶堆:任意一个节点的左右孩子的值都大于此节点的值。即堆顶上维护了一个堆中最小的数。大顶堆:任意一个节点的左右孩子的值都小于此节点的值。即对顶上维护了一个堆中最大的数。2.堆的创建以小堆为例:向上调整算法(向下调整类似,满足堆的概念即可)时间复杂度为O(n)先设定倒数第一个叶子结点为当前结点cur,找出他的父节点parent比较cur和parent的值,

2021-08-22 21:25:47 113

原创 python进程、线程、协程

一. 进程和线程进程是资源分配的单位。当开启一个程序便创建了一个进程。各进程之间相互独立。每一个程序至少要有一个进程,每一个进程至少要有一个线程线程是CPU调度的最小单位。各个线程除了拥有一些必需的资源外,会共享进程的资源。进程可以理解为一个公司,拥有很多资源,比如,办公室,桌椅等。而线程可以理解为公司内的员工,可以分配去执行工作任务。二.python中创建多线程的方式当没有创建多线程时,程序只能按照一定的顺序一步一步执行。按照下述例子,先执行fun函数,再接着向下执行。def fun():

2021-08-02 17:28:16 349 2

原创 【面试常考算法】N叉树的遍历系列总结

和二叉树类似,N叉树的遍历也有递归和迭代两种写法,同时,递归写法比较简单。具体题目参照leetcode589,590,429结点定义:class Node: def __init__(self, val=None, children=None): self.val = val self.children = children"""仿照上一节的二叉树遍历写法,相信是可以写出来的~递归法前序遍历~class Solution: def preor

2021-07-23 16:37:10 212

转载 【面试常考算法】二叉树遍历系列总结

本篇主要记录二叉树的四种遍历方式(前序、中序、后序、层序)。一般可以使用递归或迭代进行遍历。题目参考力扣144.94.145.102

2021-07-23 11:58:00 204

原创 python求解最长公共子序列<避坑>

题目如下:给定两个字符串text1和text2,返回这两个字符串的最长公共子序列的长度。如text1=“abcde”,text2=“ace”,则最长公共子序列为"ace",长度为3。(力扣第1143题)求解的思想为动态规划,这一篇对求解的方法就不再详细赘述了,无非就是列出dp table,关注他的状态转移方程。这里要记录的避坑点:当初始化dp table的时候,可能会想到以下两种写法dp = [[0]*(n+1)]*(m+1)dp = [[0] * (n + 1) for _ in range(

2021-07-18 14:53:18 431

原创 python中的sort与sorted函数

python中的sort()与sorted()前些日子,面试某一大厂,面试官要求我对字典进行排序。由于自身学习不足,当时很懵逼,难道字典不是无序的吗?后来面试官提示可以用sorted函数,但是自己没有见过,最终没有做出来。事后,查阅了sorted函数的用法,可以说是很简单了。接下来总结一下python中sort函数与sorted函数的用法。sort函数sort函数很常见,它是一种列表方法,可以对原列表进行排序,从而改变原列表中的内容。用法简单清晰,如下:如果是列表嵌列表呢?可以试试可见,此时.

2021-06-22 20:46:29 439 2

原创 常见面试题:在两个长度相等的排序数组中找到上中位数

题目描述:给定两个有序数组arr1和arr2,已知两个数组的长度都为N,求两个数组中所有数的上中位数。上中位数:假设递增序列长度为n,若n为奇数,则上中位数为第n/2+1个数;否则为第n/2个数思路1:使用归并排序,将两个数组先排序,再返回上中位数。时间复杂度O(2N),空间复杂度O(2N)def guibing_sort(arr1,arr2): arr=[] i=j=0 l1,l2=len(arr1),len(arr2) while i<l1 and j&l

2021-05-25 11:00:16 246

原创 经典面试题:三种解法求解最长回文子字符串

回文串是指正反两个方向都一样的字符串。故很容易想到暴力解法,列出所有的回文子串,再判断res是否等于res[::-1]此种解法的时间复杂度是O(n3)####最长回文子串def longestPalindrome(s): n=len(s) max_len=1 ##给定初始最大长度 res=s[0] ##设初值 if n<=1:return res ##当只有单个字符时,一定是回文串 for j in range

2021-05-16 15:21:13 184

原创 linux修改mysql字符集

今天在使用mysql时,发现如果插入中文字符会报错。如下所示:推测原因应该是使用字符集的问题show variables like ‘%char%’ ##展示全局变量,发现字符集不是utf8cd /etc ##找到etc目录下的my.cnf文件vi my.cnf ###编辑my.cnf按下图修改,插入并保存再次进入mysql,查看字符集字符集已更改为utf-8此时,再插入中

2021-05-13 09:11:17 111

原创 经典面试题:连续子数组和的最大值

问题描述:输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6连续子数组为[4,-1,2,1]三种方法:1.暴力法。列出所有的子数组,对所有子数组求和。两层循环。比如第一个数为-2时,依次求出sum(-2),sum(-2,1),sum(-2,1,-3)…保留最大的和。然后从第二个数开始,继续求出,sum(1),sum(1,-3),sum(1,-3,4)…max_sum=nums[0]

2021-05-01 20:42:09 136

原创 【面试常考算法】经典的 Top K 问题

输出最小的k个数方法一:排序对原数组从小到大排序后取出前k个数即可。直接调用sort函数def smallestK(a,k): a.sort() return a[:k]方法二:堆用一个大根堆实时维护数组的前k小值。首先将k个数插入大根堆中,随后从第k+1个数开始遍历,如果当前遍历到的数比大根堆的堆顶的数要小,就把堆顶的数弹出,再插入到当前遍历到的数。最后将大根堆里的数存入数组返回即可。利用python中的heapq模块def smallestK(a,k): if k

2021-04-16 21:38:57 180

原创 【面试常考算法】排序算法汇总~

原理性内容可参见:https://blog.csdn.net/weixin_41571493/article/details/818750881. 冒泡排序相邻两个值比较,每次确定一个最值放在数据尾部对n个值进行操作,重复n-1趟时间复杂度O(n^2)def BubbleSort(arr): n=len(arr) if n<=1:return for i in range(n-1): for j in range(n-i-1): if arr[j]>arr[j+1]

2021-04-16 20:56:46 189 1

原创 【软件测试】WebDriver定位元素

八种元素定位方法及对应的python方法WebDriver元素定位方式对应的python方法idfind_element_by_id()namefind_element_by_name()class namefind_element_by_class_name()tag namefind_element_by_tag_name()link textfind_element_by_link_text()partial link textfind_

2021-03-30 18:50:47 129

原创 【数据结构与算法】各种排序方法比较

一.时间性能1.按平均的时间性能来分,有三类排序方法:时间复杂度为O(nlogn):快速排序、堆排序和归并排序,快速排序最好时间复杂度为O(n2):直接插入排序、冒泡排序和简单选择排序,直接插入最好时间复杂度为O(n):基数排序2.当待排记录序列按关键字顺序有序时,直接插入排序和冒泡排序能达到O(n)的时间复杂度;对于快速排序,这是最不好的情况,此时时间性能退化为O(n2),因此是应该尽量避免的情况。3。简单选择排序、堆排序和归并排序的时间性能不随记录序列中关键字的分布而改变二.空间性能1.

2021-03-26 21:27:14 534

原创 【数据结构与算法】排序

插入排序交换排序选择排序归并排序基数排序外部排序插入排序顺序法定位插入位置→直接插入排序二分法定位插入位置→二分插入排序缩小增量多遍插入排序→希尔排序直接插入排序1.复制插入元素(也可以增加哨兵)2.记录后移,查找插入位置3.插入到正确位置void InsertSort(SqList &L){ int i j; for(i=2;i<=L.length;++i){ if(L.r[i].key<l.r[i-1].key){ //若“<”,需将L.

2021-03-26 21:14:57 169

转载 【转】DNS解析过程

为什么写这篇文章,因为有这样一个面试题,在浏览器中输入www.baidu.com发生了什么(整个过程请自行百度)。但是网上的介绍都是讲宏观上的,比如第一步是解析域名成IP地址。那如果面试官问怎么解析的,让你回答解析的细节,这不就一脸懵逼了。所以我在这里记录一下这一步,即如何将域名解析成IP地址。一、域名系统1、域名系统概述域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的名字转换成为IP地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢?这

2021-03-19 19:37:17 211

原创 树表的查找

二叉排序树1)若其左子树非空,则左子树所有节点的值均小于根节点的值2)若其右子树非空,则右子树所有节点的值均大于等于根节点的值3)其左右子树本身又各是一颗二叉排序树对二叉排序树进行中序遍历,结果为由小到大的序列二叉排序树的存储结构typedef struct{ KeyType key; //关键字项 InfoType otherinfo; //其他数据域}ElemType;typedef struct BSTNode{ ElemType data; //数据

2021-03-19 18:22:58 94

原创 【数据结构与算法】线性表的查找

顺序查找(线性查找)折半查找(二分或对分查找)分块查找顺序查找typedef struct{ //顺序表结构类型定义 ElemType *R; //表基址 int length; //表长}SSTable ;SSTable ST; //定义顺序表STint Search_Seq(SSTable ST,KeyType key){ //若成功返回其位置信息,否则返回0 for(i=ST.length;i>=1;--i) if(ST.R[i].key==key) re.

2021-03-19 15:25:17 329

原创 【数据结构与算法】图的遍历

图的遍历方法深度优先搜索(DFS)广度优先搜索(BFS)邻接矩阵表示的无向图深度遍历实现void DFS(AMGraph G,int v){ //图G为邻接矩阵类型 cout<<v;visited[v]=true; //访问第v个结点 for(w=0;w<G.vexnum;w++) //依次检查邻接矩阵v所在的行 if((G.arcs[v][w]!=0)&&(!visited[w])) DFS(G,w); //w是v的邻接点,如果w未访

2021-03-18 20:39:32 387

原创 【数据结构与算法】图的存储结构

图的存储结构1.邻接矩阵的存储表示用两个数组分别存储顶点表和邻接矩阵#define MaxInt 32767 //表示极大值,即∞#define MVNum 100 //最大顶点数typedef char VerTexType; //设顶点的数据类型为字符型typedef int ArcType; //设边的权值类型为字符型typedef struct{ VerTexType vexs[MVNum]; //顶点表 ArcType

2021-03-18 16:32:48 189 2

原创 常用的DOS命令及Linux命令总结

常用DOS命令命令功能命令功能D:盘符切换ping检查网络是否连通dir列出当前目录下的文件及文件夹ipconfig-all列出网卡信息md创建目录copy拷贝文件rd删除目录del删除文件cd改变指定目录md创建目录cd…返回上一级cls清屏cd\返回根目录Linux命令功能命令功能ls查看当前文件夹下的内容pwd查看当前所在文件夹>输出重定向mor

2021-03-09 23:04:21 313

转载 http协议

HTTP(Hyper Text Transfer Protocol,超文本传输协议)用于从万维网服务器传输超文本到本地浏览器的传送协议是基于TCP/IP的应用层协议,他不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容(HTML 文件, 图片文件, 查询结果)等。默认端口是80基于请求与响应模式的、无状态的、应用层的协议。HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。We

2021-03-05 23:30:11 158 1

原创 【数据结构与算法】哈夫曼树

哈夫曼树的带权路径长度最短。特点:满二叉树不一定是哈夫曼树哈夫曼树种权越大的叶子离根越近具有相同带权结点的哈夫曼树不唯一包含n个叶子结点的哈夫曼树共有2n-1个结点哈夫曼树的结点的度数为0或2,没有度为1的结点构造哈夫曼树方法(口诀)构造森林全是根选用两小造新树删除两小添新人重复2,3剩单根总结:1.在哈夫曼算法中,初始时有n棵二叉树,要经过n-1次合并最终形成哈夫曼树。2.经过n-1次合并产生n-1个新结点,且这n-1个新结点都是具有两个孩子的分支节点。可见:哈夫曼树

2021-03-03 22:14:51 1172 1

原创 【数据结构与算法】树和森林

树的存储结构1.双亲表示法//结点结构typedef struct PTNode{ TElemType data; int parent; //双亲位置域 }PTNode//树结构#define MAX_TREE_SIZE 100typedef struct{ PTNode nodes[MAX_TREE_SIZE]; int r,n; //根结点的位置和结点个数 }PTree;...

2021-03-03 18:38:30 80

原创 【数据结构与算法】二叉树

对二叉树内容做以下总结:二叉树的性质性质1:在二叉树的第i层上至多有2^(i-1)个结点(i≥1)。性质2:深度为k的二叉树至多有2^(k)-1个结点。(k≥1)。性质3:对任何一颗二叉树T,如果其叶子数为n0,度为2的结点数为n2,则n0=n2+1。满二叉树:一颗深度为k且有2^(k)-1个结点的二叉树称为满二叉树。...

2021-03-03 00:36:01 614

原创 【数据结构与算法】串的类型定义,BF算法及KMP算法

串的顺序存储结构#define MAXLEN 255typedef struct{ char ch[MAXLEN+1]; //存储串的一维数据 int length; //串的当前长度 }SString;串的链式存储结构——块链结构#define CHUNKSIZE 80 //块的大小可由用户定义typedef struct Chunk{ char ch[CHUNKSIZE]; struct Chunk *next; }Chunk;typedef struct{ Ch

2021-02-27 00:46:24 137

原创 【数据结构与算法】队列的基本操作

队列:顺序队列 链式队列一般常用顺序循环队列空队标志:front == rear ,头指针和尾指针相等循环队列解决队满时判断方法:少用一个元素空间(rear+1)%MAXQSIZE==front循环队列的类型定义#define MAXQSIZE 100 //最大队列长度typedef struct{ QElemType *base; //动态分配存储空间 int front; //头指针,若队列不空,指向队列头元素 int rear; //尾指针,若队列不为空,指向.

2021-02-26 00:51:55 293

原创 【数据结构与算法】链栈的基本操作

1.链栈的初始化void InitStack(LinkStack &S){ S=NULL; return OK; }2.判断链栈是否为空Status StackEmpty(LinkStack S){ if(S==NULL) return TRUE; else return FALSE; }3.链栈的入栈Status Push(LinkStack &S,SElemType e){ p=new StackNode; //生成新结点p p->data=e;

2021-02-25 17:13:18 228

原创 【数据结构与算法】顺序栈的基本操作

顺序栈空栈:base== top栈满: top-base==stacksize1.顺序栈的初始化Statue InitStack(SqStack &S){ //构造一个空栈 S.base=new SElemType[MAXSIZE]; if(!S.base) exit(OVERFLOW); //存储分配失败 S.top=S.base; //栈顶指针等于栈底指针 S.stacksize=MAXSIZE; return OK; }2.判断顺序栈是否为空Statue Sta.

2021-02-24 22:05:26 313

原创 【计算机网络】应用层服务学习笔记

1. DNS服务DNS服务作用:负责解析域名域名: 根 .顶级域名: com edu net cn org gov二级域名:baidu csdn三级域名: editor域名解析测试ping www.baidu.comnslookup www.baidu.com...

2021-02-23 00:25:38 98

原创 【数据结构与算法】顺序表和链表的比较

链式存储结构优点结点空间可以动态申请和释放;数据元素的逻辑次序靠结点的指针来指示,插入和删除时不需要移动数据元素。链式存储结构缺点存储密度小,每个结点的指针域需额外占用存储空间。当每个结点的数据域所占字节不多时,指针域所占存储空间的比重显得很大。链式存储结构是非随机存取结构。对任一结点的操作都要从头指针依指针链查找到该结点,增加了算法的复杂度。顺序表和链表的比较...

2021-02-23 00:23:56 119

原创 【数据结构与算法】单链表、循环链表、双向链表的基本操作实现

单链表的初始化(带头结点的单链表 )构造一个空表Status InitList L(LinkList &L){ L=new LNode;//或L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; return OK;}扩展:判断链表是否为空int ListEmpty(LinkList L){//若L为空表,则返回1,否则返回0 if(L->net) //非空 return 0; else .

2021-02-22 23:22:13 638

原创 【数据结构与算法】顺序表的基本操作

1.线性表L的初始化(参数用引用)Status InitList_Sq(SqList &L){ //构造一个空的顺序表 L.elem=new ElemType[MAXSIZE]; //为顺序表分配空间 if (!L.elem) exit(OVERFLOW); //存储分配失败 L.length=0; //空表长度为0 return OK;2.销毁线性表Lvoid DestroyList(SqList &

2021-02-04 23:28:53 621

原创 C++中的参数传递

函数调用时传送给形参表的实参必须与形参三个一致类型、个数、顺序函数传递有两种方式传值方式(参数为整型、实型、字符型等)传地址 (1) 参数为指针变量 (2) 参数为引用类型 (3)参数为数组名传值方式#include<iostream.h>void swap(float m,float n){float temp;temp=m;m=n;n=temp;void main(){float a,b;cin>>a>>b;swap.

2021-01-27 23:22:11 538

原创 【软件测试】如何抓取崩溃的log日志

安卓闪退获取日志方法:下载adb工具包,存放在电脑根目录下。https://www.wishdown.com/soft/53275.html手机通过USB连接电脑,确保手机开启USB调试模式。使用dos命令窗口通过win+r弹出运行窗口,输入cmd;输入cd D:\adb 找到存放adb工具的目录下抓取前输入:adb logcat -c 清除旧日志信息输入 adb logcat -v time >.\logcat.log 开始抓

2021-01-27 19:23:35 2202

原创 【计算机网络】传输层协议与应用层协议之间的关系

常见的应用层协议使用的端口http=TCP+80https=TCP+443RDP=TCP+3389ftp=TCP+21共享文件夹=TCP+445SMTP=TCP+25POP3=TCP+110telnet=TCP+23SQL=TCP+1433DNS=UDP+53服务与应用层协议之间的关系服务使用TCP或UDP的端口侦听客户端请求客户端使用IP地址定位服务器,使用目标端口 定位服务可以在服务器网卡上设置只开放必要的端口,实现服务器网络安全...

2021-01-10 15:13:34 582

空空如也

空空如也

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

TA关注的人

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