自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(152)
  • 资源 (1)
  • 收藏
  • 关注

原创 python-多线程

python-多线程1. 什么是线程在了解线程前,我们需要首先了解一下进程,并了解其与线程之间的关系。1)进程可以看做一个独立的应用,而线程却不可以;2)进程有自己独立的内存地址空间(即不共享内存,并互不影响), 线程只是进程的不同执行路径,线程没有独立的内存地址空间;3)一个进程最少包含一个线程,同一个进程下的多个线程共享进程的地址空间, 一个线程可以创建...

2021-02-15 17:40:00 210 2

原创 DRAM & SRAM

DRAM & SRAM1.DRAM1.1全程Dynamic Random Access Memory,即动态随机存取存储器,是一种半导体存储器1.2主要作用利用电容内存储电荷的多寡来代表一个二进制bit(1 or 0)1.3特性晶体管有漏电现象,这会导致电容上存储的电荷数量不足以正确的判别数据,从而导致数据损毁;因而周期性的充电是一个不可避免的条件,即需要定时刷新...

2020-09-30 22:29:00 361

原创 C-static

C-staticstatic应用场景1)用于函数定义或用于代码块外部的变量声明修改了标识符的链接属性,从external->interal,但是标识符的存储类型和作用域不受影响这种方式声明的函数和变量只能在声明它们的源文件中访问2)用于代码块内部的变量声明1)修改变量的存储类型,从自动变量->静态变量,但是变量的链接属性和作用域不受影响2)用这种方式声明的变量在...

2020-09-30 22:10:00 174

原创 C-枚举

枚举简介枚举是⼀种用户定义的数据类型,它用关键字 enum 以如下语法来声明:enum 枚举类型名字 {名字0, …, 名字n} ;注意枚举类型名字通常并不真的使用,要用的是在⼤括号⾥的名字,因为它们就是就是常量符号,它们的类型是int,值则依次从0到n。如:enum colors { red, yellow, green } ;就创建了三个常量,red的值是0,yel...

2020-08-30 22:32:00 121

原创 C-结构体

结构体概念结构体是一个或多个成员的集合,各个成员之间可能具有不同的数据类型结构体的声明声明结构体时,必须列出它包含的所有成员,具体包括每个成员的名字和类型栗子1如下图,声明了一个x变量的结构体,它包含三个成员变量:一个整数,一个字符,一个浮点数struct { int a; char b; float c;} x;栗子2如下图,声明了y...

2020-07-28 07:27:00 107

原创 python-文件夹操作

文件夹的基本操作1、判断某个路径是文件还是文件夹1 import os2 3 #1. os.isfile判断是否为一个文件4 #2. os.isdir判断是否为一个文件夹5 print(os.path.isfile('E:\\testdir'))6 print(os.path.isdir('E:\\testdir'))2、判断某个路径是否存在print(os....

2020-06-26 14:42:00 148

原创 C- 宏

宏概念#开头的是编译预处理指令用#define来定义一个宏格式:#define <name> <value>注意:结尾没有分号,因为不是c语句;名字必须是一个单词,值可以是多种东西在C语言的编译器开始编译之前,编译预处理程序(cpp)会把程序中到名字换成值完全的文本替换可以用gcc —save-temps打印出宏替换后的文件如果一个宏的值...

2020-06-14 19:18:00 109

原创 代码整洁之道(2)- 函数

函数参考书籍:《代码整洁之道》,语言:Python1.函数要短小1)每个函数只做一件事,并且每个函数都依次把你带到下一个函数,这就是函数应该达到的短小程度。2)if, else, while等语句的代码块应该只有一行,该行大概是一个函数的调用(具有说明性的函数名称会增加代码的可读性)3)编写函数是为了把一个大的概念(函数名)拆分成另一个抽象层级上的一系列步骤4)判断函数是否只...

2020-05-24 15:43:00 172

原创 代码整洁之道(1)-有意义的命名

有意义的命名参考书籍:《代码整洁之道》,语言:Python1.变量的命名要与其本意相符合1)变量、函数或类的命名应该能告诉我们,它为什么存在,它做什么事,应该怎么用2)如果一个名称还需要注释来补充,那就不算是名副其实3)目的:选择体现本意的名称让人更容易理解和维护案例1:定义一个变量,用来表示消逝的时间,以日计1 #名称d什么也没有说明,它没有引起时间逝去的感觉,也没...

2020-04-23 22:55:00 178

原创 代码整洁之道(1)- 有意义的命名

有意义的命名参考书籍:《代码整洁之道》,语言:Python1.变量的命名要与其本意相符合1)变量、函数或类的命名应该能告诉我们,它为什么存在,它做什么事,应该怎么用2)如果一个名称还需要注释来补充,那就不算是名副其实3)目的:选择体现本意的名称让人更容易理解和维护案例1:定义一个变量,用来表示消逝的时间,以日计1 #名称d什么也没有说明,它没有引起时间逝去的感觉,也没有说...

2020-04-23 22:55:00 160

原创 掉电恢复

掉电恢复参考资料:《深入浅出SSD》掉电分为两种,正常掉电和异常掉电,但是不管哪种掉电,在SSD上电认盘后,都要能正常工作1.正常掉电概念在掉电前,SSD会收到主机的掉电通知,SSD收到通知后会做些操作,等SSD完成这些操作后,主机才会真正对SSD进行断电,一般来说,正常掉电不会导致数据的丢失,重新上电认盘后,只需把掉电前保存的相关信息(映射数据,闪存块信息等)重新加载即可继...

2020-04-14 22:48:00 754

原创 Trim

Trim参考资料《深入浅出SSD》1.概述1)是一个指令,即Data Set Management(SATA)or Deallocate(NVME),用于告诉NAND闪存,SSD要擦除哪些数据。2)当相关页面的数据可以被覆盖时,操作系统会给SSD发送一个trim指令,SSD控制器等到操作系统执行删除或再次写入时,  将执行安全擦除操作。3)因为在写入过程中不用花时间去擦除原...

2020-04-07 23:01:00 775

原创 FTL简介

SSD-FTL简介参考资料《深入浅出SSD》FTL1.全称Flash Translation Layer,闪存转换层2.作用完成Host逻辑地址空间到闪存(Flash)物理地址空间的映射;FTL算法的优劣,决定了SSD的性能,可靠性,耐用性等,它是SSD固件的核心。说明:1)SSD会把每一笔用户逻辑数据写入闪存地址空间,便记录下该逻辑地址到物理地址的映射关系2...

2020-03-28 20:57:00 6166

原创 FTL-映射管理

映射管理参考资料《深入浅出SSD》映射的种类1.块映射1)划分标准,以闪存的块为映射粒度2)注意,一个用户逻辑块可以映射到任意一个闪存的物理块,但是映射前后每个页在块中的偏移不变3)优缺点,映射表只存储块的映射->所需存储映射表的空间小;     连续大尺寸的读写性能好,但是小尺寸的写性能很差;    (即使只写一个逻辑页,也需要把整个物理块数据读上来,然后改变逻...

2020-03-28 16:35:00 1473

原创 NVME-Namespace

NVME-Namespace参考资料:《深入浅出SSD》 , NVME协议1.3Namespace概念NVME SSD主要由SSD控制器,闪存空间和PCIE接口组成,如果把闪存空间划分成若干个独立的逻辑空间,每个空间逻辑块的地址范围为0到N-1(N是逻辑空间大小),这样划分的每个逻辑空间叫做Namespace。注意对SATA SSD来说,一个闪存空间只对应一个逻辑空间,...

2020-03-22 18:10:00 7358 3

原创 NVME-SQ、CQ & DoorBell

NVME-SQ、CQ & DoorBell参考资料:《深入浅出SSD》 , NVME协议1.3SQ和CQ全称Submission/Completion Queue1.主机往SQ中写入命令,SSD往CQ中写入命令执行的结果2.SQ和CQ有两种,  一种是Admin,用来放Admin命令,用以主机管理控制SSD  一种是IO,用来放IO命令,用以主机与SSD之间传输数据...

2020-03-20 22:36:00 6282 2

原创 NVME协议-NVME概述

NVME协议-NVME概述NVME简述Non-Volatile Memory Express,非易失性存储器标准,是跑在PCIE接口上的标准协议,是一种Host与SSD之间通信的协议。NVME作用制定了Host与SSD之间的通讯命令格式以及命令的执行过程NVME命令1. NVME包含两种命令:Admin Command,IO Command2. Admin Com...

2020-03-16 22:14:00 10459

原创 SSD简介

SSD简介概念SSD(Solid State Drive),即固态硬盘,是一种以半导体闪存(NAND FLASH)为介质的存储设备。SSD组成SSD主要部件为控制器和存储芯片,SSD硬件包括主控,闪存 ,缓存芯片DRAM(可选),PCB(电源芯片,电阻,电容等),接口(SATA, PCIE等),其主体就是一块PCB。从软件角度看SSDSSD内部运行固件(Firmwa...

2020-03-07 23:59:00 2968

原创 C-指针

C-指针概念保存地址的变量普通变量的值是实际的值,指针变量的值时具有实际值的变量的地址运算符&作用:获取变量的地址,并且后面永远跟着的是变量&可以取出一个变量的地址,这个地址的大小,数据类型是否与int相同取决于编译器(64 or 32) 1 #include <stdio.h> 2 3 int main(void) 4 { 5 ...

2020-02-29 21:33:00 135

原创 设备驱动程序简介

设备驱动程序简介参考资料:《Linux设备驱动程序》概述1)设备驱动程序是进入Linux内核世界的大门2)设备驱动程序在Linux内核中扮演着一个个独立的”黑盒子“的角色,它使某个硬件响应一个定义良好的  内部编程接口,并且这些接口隐藏了设备的工作细节;同时这个编程接口使得驱动程序独立于内核的其他部分而建立。3)用户对驱动程序的操作需要通过一组标准化的调用执行,并且这些调用...

2020-02-28 23:22:00 1210

原创 C-数组

C-数组数组定义1.定义格式<类型> 变量名称[元素数量]1 int nums[10];2 double salaries[100];2.特点1)数组中所有的元素都具有相同的数据类型2)数组一旦创建就不能改变大小3)数组中元素在内存中是连续依次排列的数组的访问通过下标来访问数组,下标从0开始,数组的每个单元就是数组类型的⼀个变量注意:1)...

2020-02-23 23:57:00 73

原创 C-函数

C-函数函数概念对一段代码的封装,接收0或多个参数,执行封装的代码块,返回0或1个值函数定义调用函数函数名(参数列表)说明1)有参数时,需要给出正确的参数数量和顺序,这些值会按顺序赋值给函数内的参数2)没有参数时,参数列表为空栗子 1 #include <stdio.h> 2 3 //calculate the sum between...

2020-02-16 22:44:00 104

原创 C-运算符

运算符运算符优先级优先级运算符运算j结合关系例子1+单目不变自右向左a*+b1-单目取负自右向左a*-b2*乘自左向右a*b2/除自左向右a/b2%取余自左向右a%b3+加自左向右a+b3-减自左向右a-b4=赋值...

2020-02-12 23:07:00 193

原创 C-变量

C-变量变量命名由字母、数字和下划线组成,数字不能出现在第一个位置上,关键字不可以作为变量名。变量类型1.整数char、short、int、long、long long2.浮点数float、double、long double3.逻辑bool4.指针5.自定义类型注意:蓝色部分为C99的类型类型不同的表现类型名称:int、long、double输⼊输...

2020-02-06 23:34:00 87

原创 C-数据

C-数据变量命名由字母、数字和下划线组成,数字不能出现在第一个位置上,关键字不可以作为变量名。基本数据类型简介在C语言中有4中基本数据类型,整型、浮点型、指针和聚合类型(数组和结构体等),所有其他的数据类型都是由这四种组合派生而来。1.整数char、short、int、long、long long注意:它们都可分为有符号(signed)和无符号(unsigned)两种...

2020-02-06 23:34:00 99

原创 shell-流程控制

shell-流程控制for语句数字循环1#!/bin/bashfor((i=1;i<=3;i++));do echo ${i}done数字循环2#!/bin/bashfor i in $(seq 1 3);do echo ${i}done数字循环3#!/bin/bashfor i in {1..3};do ec...

2020-01-07 23:12:00 84

原创 python编程规范-最佳实践

python编程规范变量命名全部小写,由下划线连接各个单词,比如home_addr注意1)不论是成员变量还是全局变量,均不使用m或g为前缀2)变量名不应该带有类型信息,因为python是动态语言类,比如name_list,stu_info_dict等都不可以常量命名所有字母大写,由下划线连接各个单词,比如PI = 3.14异常命名以"Error"作为后缀...

2019-12-27 23:18:00 216

原创 shell-函数

shell-函数函数定义通常shell函数有两种定义方式,如下代码中的fun1和fun2 1 #!/bin/bash 2 function fun1(){ 3 echo $1 4 echo $2 5 } 6 7 fun2(){ 8 echo "hello" 9 }10 11 fun1 1 212 fun2说明$n代表一个参...

2019-12-08 23:45:00 252

原创 unittest

unittest简介unittest是python自带的单元测试框架重要概念1)test fixture用于初始化和清理测试数据及环境2)test case测试用例,是测试的最小单元,一般用来检查一组输入的相应是否符合预期,3)test suite测试套件,是测试用例或测试套件的组合,一般用来把需要一起执行的测试用例组合到一起4)test runner用于运行测...

2019-12-08 19:59:00 65

原创 接口测试-断言设计思路

接口测试断言设计思路1)响应码检查响应码是否符合预期,用来判断测试用例是否执行成功(针对http接口)2)关键字验证关键字是否符合预期,用来判断测试用例是否执行成功3)正则匹配当一个接口返回的内容较多,并且有一定规律时,可通过正则表达式来校验接口返回的信息来判定测试用例是否执行成功4)数据库匹配核对比如对查询一个接口返回的数据进行验证时,可通过编写sql语句...

2019-12-05 23:35:00 732

原创 shell-变量

shell-变量变量替换1)${变量名#匹配规则}从变量开头进行规则匹配,将符合最短的数据删除2)${变量名##匹配规则}从变量开头进行规则匹配,将符合最长的数据删除3)${变量名%匹配规则}从变量尾部进行规则匹配,将符合最短的数据删除4)${变量名%%匹配规则}从变量尾部进行规则匹配,将符合最长的数据删除5)${变量名/旧字符串/新字符串}变量内容...

2019-11-27 21:46:00 66

原创 bug处理流程

bug处理流程(1)新建bug单写上bug的标题,复现这个bug的具体步骤,一些前置条件和截图,把bug单指定给相关的开发人员(2)待修改等开发人员修改完毕把bug单置成待验证状态返回给测试(3)待验证测试人员获取最新的产品,如果发现bug已经修复则置成已验证,如果发现bug还存在,则置成待验证,如果开发人员发...

2019-10-31 22:27:00 1200

原创 测试思维

测试思维1)正向思维简述:指软件可以在正常运行状态下所表现出来的特征栗子:比如某个功能点正确实现后是怎样的目的:根据需求标准检查系统功能是否正常实现2)逆向思维简述:根据结果逆推条件栗子:比如等价类划分输入数据用处:减少多余的测试用例3)组合思维简述:将相关的事物组合到一起栗子:比如多进程并发   比如按照是否排序组合可分为排列...

2019-10-29 22:32:00 3831

原创 设计模式-观察者

观察者模式认识观察者模式订阅报纸的栗子1)报社的业务是出版报纸2)你向某家报社订阅他们的报纸,然后你就成为了他们的订阅用户,  只要报社有新的报纸出版,就会将报纸发送给你3)当你取消订阅报纸时,你就从报社的订阅用户中删除,报社就不会再发送报纸给你4)只要报社还在运营,就会一直有人订阅或取消订阅报纸一般我们称上栗中的报社为“主题”,称订阅用户为“观察...

2019-10-23 22:46:00 167

原创 测试流程

测试流程(1)需求沟通确认需求文档中各个功能点的含义,自己的理解对不对,和产品沟通确定这个功能点是否是自己理解的这样,和开发沟通确定这个功能点是否是这样实现的(2)制定测试方案(3)设计测试用例测试用例来源于需求文档,需求实现逻辑(4)准备测试环境(5)测试执行发现bug、异常,提交bug(6)bug处理开发人员处理b...

2019-10-20 11:52:00 848

原创 接口测试用例设计

接口测试用例设计1 接口测试1.1 接口测试接口:主要是子模块或者子系统间交互并相互作用的部分。这里说的接口是广义的,客户端与后台服务间的协议;插件间通信的接口;模块间的接口;再小到一个类提供的方法;都可以理解为接口。接口测试:是指针对模块或系统间接口进行的测试。1.2 接口测试发现的典型问题接口测试经常遇到的bug和问题,如下:(1)传入参数处理不...

2019-10-19 22:52:00 4517

原创 测试用例问题总结

测试用例问题总结简介把测试系统的操作步骤按照一定的格式用文字描述出来为什么要编写测试用例1)理清思路,避免遗漏复杂的项目需要我们把功能细分,根据每一个功能来编写测试用例,整理我们的测试系统思路,避免遗漏要测试的功能点2)跟踪测试进度通过测试用例执行后的统计结果,方便我们跟踪项目进度3)回归测试在不同的测试环境,不同的测试人员在不同...

2019-09-30 23:05:00 929

原创 设计模式-单例模式

单例模式概念确保一个类只有一个实例,并提供一个全局访问点。UML类图UML类图说明1)getInstance()是一个静态方法,它是一个全局访问点,我们可以通过Singleton.getInstance()来访问它,这和访问全局变量一样简单,只是多了一个优点:单例模式可以延迟实例化2)类变量uniqueInstance用来指向唯一的类实例...

2019-09-30 23:03:00 76

原创 设计模式-装饰器

装饰器概念动态的将职责附加到对象上。对于某类对象的功能扩展来讲,装饰模式比继承更有弹性。运行时期的扩展远比编译期的继承威力大。UML类图UML类图说明1)每个组件都可以单独使用,或者被装饰者包裹起来使用2)每个装饰者(ConcreteDecoratorA, ConcreteDecoratorB)都有一个实例变量用以保存某个Component的引用...

2019-09-21 14:48:00 115

原创 Mysql-索引

索引简介无索引的表是一组无序的行,当我们在查询表中的某条数据时,它会逐行查询去找到匹配的行,这是一个全表扫描操作,效率很低。用来加速查询的技术有很多,其中最为重要的就是索引,通常情况下,查询速度差异的最大因素就是索引的使用是否得当。此外需要注意,有些查询的编写方法会阻碍你对索引的有效利用。索引提高效率的做法1)可以知道匹配行在什么位置结束,可以跳过其余的...

2019-09-16 22:24:00 69

W3SCHOOL全套教程

网站开发html,css,js,JSP,DOM

2015-10-24

空空如也

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

TA关注的人

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