自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串排序

描述编写一个程序,将输入字符串中的字符按如下规则排序。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。如,输入: By?e 输出: Be?y数据范围:输入的字符串长度满足 1 \le n \le 1000 \1≤n≤1000# ACM模式ss = input()ret = ''for .

2022-04-19 19:02:30 536

原创 密码验证合格程序

密码要求:1.长度超过8位2.包括大小写字母.数字.其它符号,以上四种至少三种3.不能有长度大于2的不含公共元素的子串重复 (注:其他符号不含空格或换行)数据范围:输入的字符串长度满足 1 \le n \le 100 \1≤n≤100输入描述:一组字符串。输出描述:如果符合要求输出:OK,否则输出NG解决思路1.每个字符判断是大小写字母,数字或特殊字符时,会出现重复;所以使用set集合去重2.不能有长度大于2的子串,然而长度大于2的所有子串可以通过长度为3的子串体现出来,只要有长度.

2022-04-18 17:32:21 499

原创 验证字符串是否是有效的 IPv4 或 IPv6 地址

IPv4 地址:每个地址包含4个十进制数范围为 0 - 255用(“.”)分割。比如,172.16.254.1IPv4 地址内的数不会以 0 开头IPv6 地址:由8组16进制的数字来表示,每组表示 16 比特这些组数字通过 (“:”)分割比如 :2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有效的地址可以加入一些以 0 开头的数字,字母可以使用大写,也可以是小写比如:2001:db8:85a3:0:0:8A2E:0370:7334 也是一个有

2022-04-14 14:20:16 3221

原创 python 模块(time,datetime,random,序列化模块)

模块其实是将一些公用的功能代码写在一个py文件中,在其它模块中可以随意使用该文件中的代码导入模块的语法:import 模块from 模块 import功能time模块import time# 计算程序执行的时间差start_time = time.time()for i in range(10000): print(i)end_time = time.time()print(end_time - start_time)# 控制程序执行频率while True:

2022-04-09 15:41:54 844

原创 python 三元表达式和递归

三元表达式语法:结果1 if 条件 else 结果2运行过程:判断条件是否为真,如果条件为真返回结果1,否则返回结果2a = 10b = 20ret = a if a>b else bprint(ret)递归一个函数在执行过程中一次或多次调用其本身import os# 实例:递归遍历一个文件夹def read(path, ceng): lst = os.listdir(path) for name in lst: # 拼接正确的文件路径

2022-04-07 17:07:49 746

原创 python 内置函数

作用域相关globals():查看全局作用域所有内容locals():查看当前作用域中的内容迭代器和生成器相关range():可创建一个整数列表,一般用在 for 循环中iter():用来生成迭代器next():返回迭代器的下一个项目查看内置属性dir():返回模块的属性列表调用相关callable() 函数用于检查一个对象是否是可调用的帮助help() 函数用于查看函数或模块用途的详细说明模块相关__ import__() 函数用于动态加载类和函数..

2022-04-07 14:26:02 699

原创 python Lambda匿名函数

lambda表示的是匿名函数,为简单的需求设计的一句话函数,不需要用def生命声明语法:函数名 = lambda 参数:返回值# 匿名函数不管多复杂只能写一行,逻辑结束直接返回数据# 返回值和正常函数一样,可以是任意数据类型fn = lambda result: result ** 2print(fn(11))# 匿名函数的参数有多个时,多个参数之间用逗号隔开fn = lambda a, b: a+bprint(fn(2, 3))# 需要返回多个值时,需要加上小括号,多个值之间用逗

2022-04-04 10:32:49 784

原创 python迭代器和生成器

迭代器运行步骤:1.可迭代对象通过__iter__拿到迭代器2.执行迭代器的__next__拿到元素,反复执行,直到取到最后一个元素lst = ["Baidu", "Google"]it = lst.__iter__()print(it.__next__()) # Baiduprint(it.__next__()) # Googleprint(it.__next__()) # 报错:StopIteration特点:1.节省内存2.惰性机制(必须访问__next_

2022-04-02 16:47:57 681

原创 python推导式

列表推导式基本语法:[结果 for循环 if条件]lst = [i for i in range(10) if i % 2 == 0]字典推导式基本语法:{key: value for循环 if条件}lst = ["熊猫", "大猩猩", "猴子"]dic = {i : lst[i] for i in range(len(lst))}集合推导式基本语法:{key for循环 if}lst = ["熊猫", "大猩猩", "猴子"]s = {item for

2022-04-02 16:05:31 82

原创 python中闭包和装饰器

闭包首先需要明确:函数名的本质是变量名,可以被赋值,给别的变量赋值,做参数传递,做返回值闭包:一个嵌套函数,外部函数返回内部函数引用,内部函数使用外部函数的局部自由变量。def travel(): animal = "猴子" def animals(): print(animal) return animal return animalsfn = travel()ani = fn() # 函数外部访问到了函数的局部变量闭包的作用:

2022-04-02 14:10:02 582

原创 python函数基础

函数:对代码块和功能的封装和定义语法def 函数名(): 函数体函数的返回值执行完函数后使用return来返回结果return的作用:1.函数中遇到return,此函数结束,不再执行2.给函数的调用者一个返回结果3.函数的返回值可以有多个结果参数:函数执行时,由外界给函数内部传递的一些信息实参:函数执行时,给函数传递的具体的值– 位置参数:按照位置给形参传递数据– 关键字参数:按照形参的名称传递数据– 混合参数: 注意顺序(先位置参数,后关键字参数)形参:函数声明的

2022-04-02 09:19:32 472

原创 python文件操作

文件操作概述python中读写文件的操作:使用open()函数打开一个文件,获取到文件句柄,再通过文件句柄进行各种操作;根据打开方式的不同能够执行的操作也会有所差异r:read 只读模式f = open("a.txt", mode='r', encoding='utf-8')# 将文件内容直接全部读出来 缺点:内存容易炸print(f.read())# 一行一行读取print(f.readline().strip()) # strip()去掉换行符\n# for循环读取for lin

2022-04-01 13:27:38 112

原创 python列表和字典在循环时,不能删除数据

循环列表时删除数据,导致列表数据删除不干净place = ["a西安", "a丽江", "a三亚", "a克拉玛依"]# 每删除一个元素,后面的元素会往前补位,但是下标仍会加1,导致删除不完全for item in place: if item.startswith("a"): place.remove(item)print(place)解决方案一:把需要删除的列表放在一个新列表中;循环新列表,删除老列表中的数据place = ["a西安", "a丽江", "a.

2022-03-31 19:42:29 833 1

原创 python直接赋值,深浅拷贝

直接赋值:没有产生新的对象,直接把内存地址复制一份place1 = ["西安", "丽江", "三亚", "克拉玛依"]place2 = place1 # place1和place2指向的是同一块内存地址print(id(place1))print(id(place2))place1.append('成都')print(place1)print(place2)浅拷贝:拷贝父对象,不会拷贝对象的内部的子对象place1 = ["西安", "丽江", "三亚", "克拉玛依".

2022-03-31 14:46:10 394

原创 python基础数据类型

格式化输出旧的格式化方案%s表示在字符串中占位,稍后会填充字符串(任何内容)%d表示在字符串中占位,填充整数%f表示在字符串中占位,填充小数【%.2f保留小数点后两位】name = input("请输入你的姓名:")age = input("请输入你的年龄:")city = input("请输入你的城市:")str = """---info of %s---name: %sage : %scity: %s---end---""" % (name, name, age, cit

2022-03-31 14:09:59 605

原创 python基础常识

变量以及变量的命名规范变量:将运算的中间结果暂存到内存,以便后续程序调用变量的命名规则:1.变量由字母,数字,下划线搭配组合而成2.不可以使用数字开头,更不能是全数字3.不能是python的关键字4.不要用中文5.名字要有意义6.不要太长7.区分大小写驼峰体:除首字母外的其他每个单词首字母大写下划线:每个单词之间用下划线分开常量常量:所有字母大写的变量名注释单行注释:# 被注释的内容多行注释:’’’ 被注释的内容 ‘’’,""" 被注释的内容 “”"基本数据

2022-03-21 16:54:07 532

原创 在浏览器中输入url后,发生的一系列事情

首先分享一个网友对这个的总结,超级牛:http://fex.baidu.com/blog/2014/05/what-happen/具体流程如下1.首先在浏览器中输入需要的网址用户输入url,例如:https://blog.csdn.net,http是协议,blog.csdn.net是服务器的地址(域名);2.(应用层)Web浏览器进行DNS解析域名,查找域名的IP地址在DN...

2020-04-02 12:02:13 662

原创 数组中重复的数字

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2思路:因为长度为n的数组的所有数组都是在0到n-1范围内,可以根据数组的下标将对应的数字进行对号入座,如果在对号入座...

2018-08-22 22:53:16 162

原创 二叉树中序遍历的下一个节点

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针根据下面二叉树中序遍历的结果: 1>.NULL节点中序遍历的下一个节点为NULL; 2>.如果给定的节点pNode存在右子树,则中序遍历下一个节点是右子树的最左节点; 3>.如果给定节点pNode不存在右子树,pNode为其父节...

2018-08-22 21:27:45 914

原创 删除链表中重复的节点

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 struct ListNode { int val; struct ListNode *next; ListNode(int x) : ...

2018-08-22 19:56:35 321

原创 文件编码解码小工具

Base64编码解码原理 Base64编码是用64个可见字符表示任意二进制数据的方法。 以3个8bit的字符为一组,针对每组获取每个字符的ASCII编码,将ASCII编码转换成8bit的二进制,得到一组24bit的字节; 将24bit划分为4个6bit的字节,每个6bit的字节高两位补0,得到4个8bit的字节 将4个8bit的字节转换成十进制,对照Base64编码表得到编码...

2018-08-22 11:54:17 1111

原创 对Base64文件编码进行gtest单元测试

单元测试:单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作gtest在VS2013的配置 参考: https://blog.csdn.net/xiaqunfeng123/article/details/53188814实施单元测试统计文件字符个数TEST(File, Num){ Base64 b1; EXPECT_EQ(b1.Size("...

2018-08-21 22:48:57 400

原创 FTP服务器测试用例

FTP服务器的测试用例,既要考虑到正常情况,也要考虑到异常情况的发生:

2018-08-10 11:30:37 1985

原创 FTP服务器(文件访问,文件下载,文件上传)

FTP是什么 FTP(File Transfer Protocol)文件传输协议,用于远程服务器和本地主机之间传输文件。FTP是应用层协议,采用C/S架构,服务器和客户端之间通过TCP协议建立连接,服务器用来存储文件,客户端通过访问服务器来下载文件或向服务器上传文件。 FTP在传输数据的时候使用控制连接(21端口)和数据连接(20端口),控制连接用来传输命令,数据连接用来传输数据;每一个FTP...

2018-08-09 20:14:52 25271 5

原创 LRU Cache小插件

Cache中的存储空间被分为若干块,每一块对应内存或磁盘文件的一段数据,形成映射关系;当Cache中的存储块被用完,但是新的数据又要存储在Cache中时,这时可以使用LRU算法完成数据块的替换。 LRU(最近最少使用算法) 设计原则:如果一个数据在最近一段时间没有被访问到,那么在将来的一段时间被访问的可能性也很小问题1:使用什么数据结构可以将旧的数据块记录下来,当Cache中的...

2018-08-08 20:45:40 183

原创 用一个数组实现一个栈&&元素出栈,入栈的合法性

用一个数组实现一个栈 采用如下图示方法:以两头向中间增长,push的时候将插入的数据压入到size1或size2的位置,size1++,size2–;pop的时候刚好相反,size1–,size2++; 取top的时候需要判断size1大于0,size2是否越界,小于_capacity 因为这里使用数组进行实现的,会牵扯到扩容得问题,这里在扩容的时候需要新开辟一块新的空间,将size1大小的...

2018-08-05 10:16:07 1156

原创 复杂链表的复制

复杂链表中每个节点不仅有指向下一个节点的next指针,还具有一个random指针指向任一个节点或者为空。 复制复杂链表的关键是复制好指针的指向问题,最能想到的思路就是先将链表的next进行复制之后,再根据每一个节点的random指针的指向再去原链表中去找对应的节点,这种思路是可以的,但是每访问一个节点都要去找random指向的节点时间复杂度为O(n2); 如果用一个哈希表将每个节点的ran...

2018-08-03 12:16:50 135

原创 利用快排对单向链表排序

利用快排对单向链表进行排序,左右指针法和挖坑法都是不能使用的,因为这两种方法都要从最后往前进行查找,但是链表是双向的,往前面走是不可能的,所以只能采用前后指针法。struct ListNode{ int _val; ListNode* _next; ListNode(const int x) :_val(x) , _next(NULL...

2018-08-02 17:08:08 1553

原创 快速排序

在排序的数据中选取一个基准值,根据自身需要将大于或小于该基准值的数据放在对应的左右两边,再对左右两边进行如上的分区,直到区间里面只剩下一个是数据 快速排序分为三种: 左右指针法: 给定一个数组,左指针left指向数组的开始位置,右指针right指向数组的最后一个位置,left指针向后找比基准值大的数据,right指针向前找比基准值小的数据,找到之后进行交换,现在将数组分为两部分,再分别对两个...

2018-08-02 16:11:54 119

原创 软件测试--【测试用例】

测试过程中可能会遇到:不知道是否较全面的测试了所有的功能;测试的覆盖率无法衡量;对新版本的重复测试很难实施;存在大量冗余测试影响测试效率。测试用例就是为了解决以上问题出现的。 测试用例是测试执行者的依据,使得工作可重复,可以对需求的覆盖率进行评估,是自动化测试的基础,下一次测试的时候测试用例达到复用的效果,积累测试的方法思路以供后续借鉴。什么是测试用例 测试用例是为了实施测试而向被测试的系...

2018-08-02 11:28:18 599

原创 软件测试--【软件测试和bug】

软件测试 验证软件功能是否满足用户的需求 测试和调试的区别 目的不同 测试的任务是发现程序中的缺陷,调试的任务是定位并且解决程序中的问题; 参与角色不同 测试主要由测试人员和开发人员来执行(黑盒测试主要由测试人员来完成,单元测试和集成测试主要是由开发人员来完成),调试主要是由开发人员完成; 执行阶段不同 测试贯穿整个软件开发的生命周期,调试一般是在开发阶段...

2018-08-01 11:16:53 6763

原创 socket套接字编程

网络基础概念 IP地址:在IP协议中用来标识网络中不同主机的地址; IPv4:IP地址是一个4字节,32位的整数; IPv6是一个16字节,128位的整数。 通常用“点分十进制”字符串表示IP地址,例:127.0.0.1(用点分割的每一个数字表示一个字节,范围是0–255)端口号: 用来标识网络中唯一的一个网络服务进程,一个端口号只能被一个进程占用 一个进程可以...

2018-07-29 12:37:08 268

原创 网络分层模型及数据传输流程

在网络体系中,分层的总体思想是从底层硬件提供的服务开始,然后增加一系列的层,每一层都提供更高级的服务,高层提供的服务使用低层提供的服务实现。分层的优点:第一,它将建造网络这个问题分解为多个可处理的部分,不是把想要的所有功能都集中在一个软件中,而是可以实现多个层,每一层解决一部分问题;第二,它提供了一种更为模块化的设计,如果想增加一些新服务,只需要修改某一层的功能,同时可以继续使用其他各层提供的...

2018-07-29 12:03:10 2423

原创 Linux----浅谈进程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 程序的执行实例被称为进程,进程和程序的区别在于: 进程是执行程序的动态过程;程序是进程运行的静态文本; 进程具有PCB(task_struct),程序没有; 进程生命周期短; .一个进程只能对应一个程序,一个程序可以对应多个进程。进程状...

2018-07-17 19:44:45 275

原创 在磁盘上创建文件和删除文件

使用ls -l命令可以查看文件的信息 ls -l读取的是磁盘上的文件信息,再显示出来。那么磁盘上的文件是如何创建,删除,如何根据文件名就能找到文件内容?简单的文件系统如下图所示: super block(超级块):存放文件系统本身的结构信息; inode bitmap:标记inode区中哪些inode块已经被占用; block bitmap:标记block区中哪些block块是空闲...

2018-07-16 21:51:34 810

原创 Linux----进度条(彩色)

简单进度条的实现#include<stdio.h>#include<unistd.h>#include<string.h>int main(){ int k=0; char bar[102]; memset(bar,0,sizeof(bar)); const char* str=&a

2018-07-16 15:13:44 212

原创 C动态内存开辟(malloc,realloc,calloc)

C函数库提供了malloc()和free()用于执行动态内存分配和释放。这些函数维护了一个内存池,当程序另外需要一些内存时,就调用malloc函数,malloc从内存池中提取一块合适且连续的内存。但是开辟的内存是没有进行初始化的,需要手动初始化;当一块以前分配的内存不再使用时,程旭辉调用free函数把它归还给内存池以供以后使用。malloc函数原型: void* malloc(size_t ...

2018-07-13 15:15:39 252

原创 Linux系统中软硬链接文件

Linux中将文件分为两部分:用户数据(user data)和元数据(metadata); 用户数据即文件数据块(data blocks),数据块是记录文件实际内容的地方; 元数据则是文件的附加属性,(如文件大小,创建时间,所有者等信息)。在Linux文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,称为索引节点号inode。inode是文件元数据中的一部分但并不包含文...

2018-07-10 14:21:57 359

原创 红黑树原理及实现

红黑树: 一颗二叉搜索树,每个节点上增加了一个存储位来表示节点的颜色,通过对任意一条叶子节点到根节点的路径上的颜色进行约束,保证最长路径不超过最短路径的两倍,因此红黑树是近似平衡。 红黑树因为是近似平衡,在构建红黑树的时候触发的旋转自然要比AVL树少(AVL树触发旋转是左子树和右子树高度之差的绝对值大于1),构建树的效率降低; 红黑树的时间复杂度是O(n*logN),AVL树的时间...

2018-05-03 16:45:28 5137

原创 AVL树(平衡搜索二叉树)

二叉搜索树具有很高的灵活性,,对其进行优化可以生成平衡搜索二叉树。 AVL树为高度平衡的二叉搜索树,能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度。 AVL树增删查改的效率都是O(lgN)。AVL树的特性: 左子树和右子树高度之差绝对值不超过1; 树中的每个左子树和右子树都应该是AVL树;每个节点都有一个平衡因子,任一节点的平衡因子都等于右子树高度减去左子树高度,且...

2018-05-01 17:40:59 307

空空如也

空空如也

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

TA关注的人

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