- 博客(65)
- 收藏
- 关注
原创 网络通信3-1 ip协议、地址管理、路由选择
网络层ip协议:ip协议字段 地址管理(ipv4版本的ip地址、ip分类(早期分类、CIDR)、子网掩码) 路由器选择(数据如何通过ip进行转发)数据链路层以太网协议:负责相邻设备之间的数据转发ARP协议:查找相邻机器MAC地址的协议其他协议DNS协议:域名解析协议NAT协议:地址转换协议ip协议1.主机:配有ip地址,但是不进行路由器控制的设备;路由器:即配有ip地址,又能进行路由控制;节点:主机和路由器的统称协议头格式4位版本号:标识当前ip协议是ipv4(0
2021-08-08 21:46:21
458
原创 网络通信2-1 http协议
提纲1.应用层自定制协议HTTP协议2.传输层UDP协议TCP协议应用层1.自定制协议自定制协议是工作在应用层的,被程序员定义出来的协议 TCP特性:面向字节流 自定制协议:就是在应用层对要传输的数据,进行格式的约定,消息的发送方和接收方都遵守该约定 tcp粘包问题,我们需要在应用层自定制协议,自定制协议增加报头和分隔符粘包问题:比如说从服务端传输1+1 和 2+2到客户端,send发送到发送缓冲区之后,其内容是1+12+1,recv在从接收缓冲区接收其时也.
2021-08-08 21:45:19
223
原创 数据库mysql-9-事务
1.SQL分类(1)DDL数据定义语言,用来维护存储数据的结构,代表指令:create、drop、alter(2)DML数据操纵语言,用来对数据进行操作,代表指令:insert、delete、update DQL数据查询语言,是DML中单独划分出来的,代表指令:select(3)DCL数据控制语言,主要负责权限管理和事务,代表指令:grant、revoke、commit2.事务事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全...
2021-08-03 22:36:36
232
原创 数据库mysql-8-索引
1.索引基本原理(1)索引作用为了提高用户查询数据库表记录的查询时间,提高查询效率,但是也会降低增加、删除、修改数据的效率;结合业务场景来看,增加索引的好处要大于,增加索引带来的增加、删除、修改数据的时候效率的降低。(2)基本原理本质上是一个数据结构,数据结构为B+树;B+树当中存放的内容不是一行一行的表记录,而是按照某一列的值创建B+树;在B+数当中,叶子结点都是使用链表进行连接的,当在sql语句当中要查询范围数据的时候,此时先通过约束调用当中的值,查找到叶子结点,在通过叶子节点的
2021-08-02 17:40:43
222
原创 数据库mysql-7-内外连接
1.内连接(1)内连接实际上是where子句对两种表形成的笛卡儿积进行筛选,前面学习的查询都是内连接(2)语法:select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件(3)例子:显示SCOTT的名字、工作、部门编号、部门名称用where子句:用内连接:2.外连接外连接分为左外连接和右外连接(1)左外连接联合查询时,如果左侧的表完全显示我们就说是左外连接;语法:select 字段名 from 表名1 left join.
2021-07-31 20:42:59
224
原创 数据库mysql-6-复合查询
1.多表查询本质上是数据分布在不同的数据表中,在查询的时候,需要在不同的表中进行查询,但是我们只想写一个sql,所以就产生了多表查询;一个sql语句当中,where后面的约束条件依赖一个select语句的查询结果;注意:多表查询时,要注意查询的列是属于哪一个表当中的,如果多个表当中存在相同名称的字段,则需要指定该字段属于哪一个表,否则mysql的服务端层,在解析sql语句的时候,是没有办法进行区分的,就会报错。eg:显示雇员名、雇员工资以及所在部门的名字,需要多表查询eg:...
2021-07-31 19:17:40
329
原创 数据库-mysql5-内置函数
1.时间函数(1)current_date() 当前日期(2)current_time() 当前时间(3)current_timestamp() 当前时间戳(4)date(datetime) 返回datetime中的日期部分(5)date_add(date,interval d_value_type) 在date中添加日期或时间,interval后的数值单位可以是year、day、minute、second(6)date_sub(da...
2021-07-26 22:57:16
194
原创 数据库mysql-4-基础查询
1.创建数据库表创建的sql范式:create table [表名称](表字段名称1 类型 [约束条件],表字段名称2 类型 [约束条件],...);2.插入数据(1)全列插入指的是,在插入数据的时候,指定了所有列对应的数据sql范式:insert into [表名称] values(字段的值1,字段的值2,字段的值3,...);(2)指定列插入指的是,在插入数据的时候,指定部分列进行插入sql范式:insert into [表名称](指定插入列名称1,指定插入列名称2,..
2021-07-26 12:02:29
357
1
原创 数据库mysql-3-表的约束
表的约束本质上是通过约束字段的属性来完成的1.空属性(1)NULL表示当前字段的内容可以为空,一般默认是NULL(2)NOT NULL表示当前字段的内容不可以为空2.默认值default 指定当前列的默认值为自己设定的值3.列描述comment 相当于当前字段的描述信息,列字段的含义;其不会影响数据的修改、插入、删除4.zerofill本质上是格式化输出5.主键(1)primary key主键也是在约束某一列;约束某一列插入的数据不能为空,插入
2021-07-14 23:33:50
142
原创 数据库mysql-2-数据类型
1.使用navaicat连接数据库前提条件:mysql数据库已安装并启动(1)新创建一个用户,并且为当前用户进行赋值权限,给当前用户从任意位子登录的权限(2)创建用户: create user '用户'@‘登录位置’ identided by '密码'用户:用户名称,任意设定登录位置: localhost(表示当前用户只能从服务端所在的机器进行登录),%(表示当前用户可以从任意ip位置进行登录)密码:navaicat连接时的密码(3)获得别的数据库的权限grant .
2021-07-13 23:46:02
292
原创 网络通信2-4 tcp可靠传输
tcp可靠传输1.确认应答和超时重传前提:确认应答、超时重传,最基本的都是TCP序号的维护(消耗+确认)(1)确认应答(2)超时重传机制前提:当发送方发送数据的时候,发送方的TCP协议就会启动一个超时重传计时器RTO:超时重传时间,这个超时重传时间是动态变化的,并不是静态的RTT:报文往返时间(一来一回)RTO=2*RTTRTTcur=RTTprev*0.9+RTTPREV-1*0.12.滑动窗口机制前提:1)滑动窗口机制其实就是为了通信双方提高发送效率(
2021-04-26 21:20:16
136
原创 网络通信2-3 TCP协议(上)--三次握手
传输层TCP协议1.TCP协议特点:面向连接 可靠传输 面向字节流面向连接:TCP通信双方必须建立连接之后才能进行通信,建立连接的过程是在内核中完成的,程序员只需要调用accept函数来获取已经完成三次握手的连接;TCP连接的本质就是在建立连接的三次握手时期,通信双方会协商很多连接当中的参数,例如:MSS,包序号等可靠传输:保证数据是有序可靠的到达对端面向字节流:对于传输的数据之前是没有明显的数据边界的;对于接收方而言,可以在接收数据的情况下,可以接收任意字节的数据2.三次握手(连接
2021-04-25 19:46:49
307
原创 简单的数据抓包方法
抓包工具前提:抓取的数据包是从网卡设备当中抓取的1.winwireshark2.linuxtcpdump命令:tcpdump -i any port [端口] -s 0 -w [文件名]使用root用户抓包3.例子TCP客户端和服务端进行通信进行抓包linux下111.dat文件的内容放到wireshark中...
2021-04-19 21:34:31
2016
原创 数据库-1-数据库的初识
1.安装Mysql2.mysql服务端与数据库的关系 数据库与表的关系3.mysql客户端和服务端的关系4.mysql服务端的架构5.数据库的操作6.数据库表的操作安装mariadb查看是否安装了 rpm -qa |grep mariadbyum list启动 (mysql的服务端)service mariadb start 启动service mariadb stop停止service mariadb retart重启mysqld mysql服务端...
2021-04-18 23:35:18
219
1
原创 Linux-3 常用工具
软件包管理工具yum1.作用:安装其他软件工具,提供软件包的管理、查看、移除等管理操作2.三板斧操作(1)查看查看所有软件包 yum list查看所有安装了的软件包 yum list installed搜索指定软件包,搜索包含该字符的软件包的包名yum search [字符](2)安装安装时必须具有管理员权限,切换到root用户yum install [软件包名称](3)卸载卸载时必须具有管理员权限,切换到root用户yum remove [软件包名...
2021-04-13 10:54:28
178
原创 数据结构7--排序
1.排序的稳定性:重复数据的前提下,这两个数据是否进行交换,如果进行交换了,则不稳定;没有进行交换,则稳定。2.内部排序(全部放在内存中) 外部排序(部分放入内存)以内存划分3.分类按不同排序手段插入排序交换排序选择排序归并排序计数排序按时间多少简单排序 O(n^2)先进排序O(log)基数排序O(d*n)4.插入排序直接插入排序:每次从没有排序好的插入到排序好的合适的位置思想:end标记要插入的元素 当end的值小于前一个时,进行交...
2021-04-10 23:43:04
184
原创 数据结构6-二叉树
根节点父节点叶子结点(终端节点)高度 根节点到最远的叶子结点树的度:每个节点都有度(就是其子节点),最大的节点的度称为树的度森林:相互独立的树 就是树遍历方式:先序 根左右中序 左根右后序 左右根层次先序 ABDFCE 1 2 4 5 10 3 6 13 7 15中序 BFDAEC 4 2 10 5 16 13 3 7 15后序 FDBECA 4 10 5 2 13 6 15 7 3 1...
2021-04-06 23:38:07
356
原创 数据结构5--队列
1.特点:队列是先进先出的2.分类:顺序队列、链表队列 (更优一些,因为如果使用数组结构,出队列在数组头上出数据,效率会比较低)3.链表队列:队列的入队,就是链表的尾插(注意元素不存在时),队列的出栈,就是链表的头删(要对只有一个元素时进行特殊处理)//Common.h#ifndef _COMMON_H_#define _COMMON_H_#include <stdio.h>#include <stdlib.h>#include <malloc.h&g
2021-04-06 23:37:09
144
原创 数据结构4--栈
1.特点:栈先进后出,栈是受操作限制的顺序表2.栈的实现有两种方式:顺序表(结构更优,因为在尾部插数据代价更小)、链表3.顺序栈(1)有两种top指针的用法:top指针从0开始,先放入数据,再top++;从-1开始,先top++,再放入数据。(2)出栈的时候,只用将top--就行,其值会被下一个插入的值覆盖(3)取栈顶元素的时候不能--top元素(4)栈的入栈,相当于顺序表的尾插;栈的出栈相当于顺序表的尾删。//Common.h#ifndef _COMMON_H_#defi
2021-04-06 23:30:59
270
原创 数据结构3--带头节点的双向循环链表
//Common.h#ifndef _COMMON_H_#define _COMMON_H_#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <vld.h>#include <malloc.h>#include <assert.h>typedef int ElemType;#endif//dclist.h#ifndef _.
2021-04-06 23:25:09
304
原创 数据结构2--不带头结点的单链表
不带头结点的单链表按值删除注意考虑第一个节点,按值插入注意考虑没有元素时排序时用四个指针: tmp是在排序好的列表里寻找要插入的位置、prev标记tmp的前一个节点、p标记要插入的节点、q标记要插入的节点的下一个节点,每次插入完成之后,都需要将tmp置到第一个结点的位置,prev置空//Common.h#ifndef _COMMON_H_#define _COMMON_H_#include <stdio.h>#include <stdlib.h>#in.
2021-03-26 17:07:23
1255
原创 数据结构1--顺序表
1.数据结构(DS)是什么?数据结构是数据之间的组织架构,数据结构的表现形式:顺序表seqlist、链表list、树tree、图graph、排序sort、搜索search;最终目标是为搜索服务,快速准确的查找想要的数据。2.如何衡量一个算法的好坏?时间复杂度和空间复杂度、3.数据结构的分类(1)顺序结构(线性结构也叫线性表)顺序表 链表 队列 栈(2)非线性结构(关联结构)树、图(3)排序(4)搜索4.线性结构特点:除了第一个元素和最后一个元素之外,其与元素必须.
2021-03-26 16:18:02
265
1
原创 测试8--性能测试
概念和术语介绍并发数1.狭义的并发用户数同一时刻使用同一个系统的同一个功能向服务器发送请求的用户数量;2.广义的并发用户数同一时刻使用同一个系统的不同的功能向服务器发送请求的用户数量;3.系统用户数注册这个系统的用户的数量4.在线用户数某一时刻登录了这个系统的用户的数量例题:有一个系统A,1000人注册,某一时刻有800个用户登录该系统,其中有200个用户在浏览网页,100个用户去做饭,300个用户进行查询操作,200个用户进行个人信息提交系统用户数:1000
2021-03-25 15:09:04
260
原创 测试7--selenium2
操作测试对象click 点击对象send_keys 在对象上模拟按键输入clear 清除对象的内容submit 提交,可以达到click的效果text 用于获取元素的文本信息例题:用火狐浏览器打开百度,并将其网页最大化,在搜索框中输入“任豪图片”,点击百度一下,再清除刚才输入的“任豪图片”,搜索框重新输入R1SE 进行搜索,百度一下提交,后退到百度首页,将其右下角的文字进行输出,关闭当前窗口from selenium import webdriverimport timedr
2021-03-23 23:03:38
125
原创 测试6
自动化测试seleniumselenium工具的特点1.轻量级、免费2.支持多平台,比如浏览器:Firefox、Chrome3.支持多语言 C#、JAVA4.支持分布式UI自动化、接口自动化selenium工具集 元素的定位
2021-03-22 08:54:16
194
原创 C语言总结9--C语言文件操作
什么是文件磁盘上的文件是文件;文件包含文件内容和文件属性,都是数据,需要保存;文件分为程序文件(源程序文件、目标文件、可执行程序文件)和数据文件文件类型数据文件分为文本文件(以ASCII码的形式存储)和二进制文件(以为二进制的形式存储)文件缓冲区1、从内存向磁盘输入数据会先送到内存中的缓冲区,装满缓冲区之后才一起送到磁盘上(输出);从磁盘上读取数据输入到内存缓冲区,充满缓冲区之后,再从缓冲区逐个地将数据送到程序数据区(输入)。2、内存中三种缓冲方式(1)无缓冲 直接显示有数据输出
2021-03-19 15:28:52
167
原创 测试5
测试分类 按开发阶段分 1.经典模型:测试金字塔第一层 UI界面(功能验证测试、兼容性与用户测试)第二层 业务逻辑层(客户端模拟测试、内外接口测试、SDK接口测试)第三层 数据处理层(单元测试、CodeReview)其投入相同的的人力和物理,从下到上,收益会越来越小。原因有以下三点:第一点:从下到上,成本越来越高;第二点,从下到上,效率越来越低;第三点,从下到上,定位越来越难。2.单元测试(1)概念:针对程序中一个小的单元模块进行的测试,又称模块测试。(2)
2021-03-18 14:55:36
961
原创 C语言总结8---动态内存管理
为什么存在动态内存管理1.因为之前的变量、数组开辟空间的大小是固定的,现在想要申请变长数组2.之前的数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配;现在需要申请大块的内存。3.动态开辟内存空间都是在堆上,堆空间必须整体申请,整体释放。动态内存函数的介绍malloc和freeC语言中的动态内存开辟函数void* malloc(size_t size);size为申请空间的大小;向内存申请一块连续可用的空间,并返回指向这块空间的指针;开辟成功,则返回一.
2021-03-17 21:10:57
191
原创 关键字static和const
static在C语言中static是用来修饰变量和函数的1.修饰局部变量--->静态局部变量//对比下面两个代码#include <stdio.h>void test(){ int i = 0;//i调用时生成,函数结束时释放 i++; printf("%d\n", i);// 1 1 1 1 1 1 1 1 1 1}int main(){ for (int i = 0; i < 10; i++) { test(); } system("pa
2021-03-17 16:49:35
91
原创 C语言总结7--自定义类型函数
结构体结构体类型的定义(1)定义结构体是定义类型(2)C语言中结构体成员不可为空#include <stdio.h>//结构体类型的定义typedef struct stu{ char name[20];//名字 char sex[5];//性别 int age;//年龄 char id[20];//学号}_stu;struct stu{ char name[20]; char sex[5]; int age; char id[20];};typed
2021-03-16 20:07:24
1142
原创 测试4
测试用例的设计方法等价类依据需求将输入划分为若干个等价类,从等价类只能够窜出一个测试用例,如果这个测试用例能通过,则认为所代表的等价类测试通过,解决了不能穷举测试的问题。有效等价类:根据规格说明书,满足需求的集合无效等价类:根据规格说明书,不满足需求的集合例题1:if(x<17&&x>=3)划分等价类:x>17x<33<=x<17边界值:16、17、18、2、3、4边界值是对输入或输出的边界值进行测试的一
2021-03-15 22:50:24
215
原创 C语言总结5--指针下
字符指针 char *(变量名)#include<stdio.h>int main(){char ch='w';char *p=&ch;printf("%c\n",*p);//指针类型为char型 解引用只能有1字节return 0;}#include<stdio.h>int main(){char *p="hello world";//指针p中放的是字符串的首地址printf("%s\n",p);//字符串在字符常量区 不能通过...
2021-03-15 13:52:15
179
原创 C语言总结4--指针上
指针和指针变量(结合语境判断)指针就是地址,地址就是指针指针变量:就是变量,保存地址的变量指针的定义:type(数据类型)+*不知道指针指向哪里时可以置为NULL,没有指向固定位置的指针为野指针指针的大小在32位平台下是4字节,在64位平台下是8字节#include<stdio.h>int main(){int a=10;int *p;//定义整型指针变量p=&a;printf("%d\n",p);return 0;}指针+、-整数...
2021-03-15 11:07:55
101
2
原创 C语言总结3--数组
一维数组的创建、初始化、使用、在内存中的存储1.数组没有初始化时,里面存储的内容是乱码的;数组只能整体被初始化,不能被整体赋值.#include <stdio.h>#include <string.h>int main(){ char arr1[] = { 'a', 'b', 'c' }; char arr2[] = "abc"; int arr3[] = {0};//将数组初始化为0 printf("%d\n", sizeof(arr1));//3 p
2021-03-14 15:34:01
432
原创 C语言总结2---函数
函数是什么函数是子程序函数的分类1.库函数可以提高开发效率C语言常用库函数:IO函数、字符串操作函数、字符操作函数、内存操作函数、时间/日期函数、数学函数、其他库函数1.1字符串操作函数1.1.1求字符串长度strlensize_t strlen(const char* str);注意:字符串以'\0'作为结束标志,strlen函数返回的字符串长度不包含结束标志函数的返回值size_t是无符号的模拟实现strlen函数,有以下三种方式#in.
2021-03-14 14:49:17
198
2
原创 测试3
软件测试的生命周期需求分析、测试计划、测试设计和测试开发、测试执行、测试评估如何描述一个bug测试平台(环境)、测试数据、操作步骤、预期结果、实际结果如何定义bug的级别1.Blocker(崩溃)阻碍开发或测试工作的问题,系统没有办法运行下去。2.Critical(严重)功能点缺失,客户端爆页。3.Major(一般)功能点没有满足需求,功能菜单存在缺陷但不会影响系统稳定性。4.Minor(次要\建议)界面错误与UI需求不符;打印内容、格式错误;程序不健壮,操作未给出
2021-03-13 23:54:04
125
原创 测试1、2
什么是软件测试?1.概念:验证软件功能是否满足用户的需求。2.从两个方面进行验证(测试):符合标准的数据进行测试,不符合标准的数据进行测试软件测试与开发的区别1.开发广度小,专业度高;测试广度大,专业度低2.测试与调试的区别:(1)目的不同测试的任务是发现程序当中的缺陷;调试的任务是定位并且解决程序中的问题。(2)参与角色不同测试主要是由测试人员和开发人员来执行;调试由开发人员完成。(3)执行阶段不同测试贯穿整个软件开发生命周期;调试一般在开发阶段。为什么...
2021-03-13 23:48:52
1219
3
原创 C语言总结1--分支与循环
数据类型数据类型决定在内存当中开辟空间的大小以及运算方式定义变量:开辟空间、放置内容char 字符数据类型 1字节short 短整型 2字节int 整型 4字节long 长整型 4字节long long 更长的整型 8字节float 单精度浮点数 4字节double 双精度浮点数 8字节变量的分类1.作用域局部变量的作用...
2021-03-12 18:11:04
225
原创 网络基础1-2-网络字节序、udp和tcp区别
1.字节序(CPU对内存的访问顺序)(1)一个字节有一个地址(C语言初阶)(2)小端字节序:低位存放低地址大端字节序:低位存放高地址地址0x01020304中:高位在01 低位在04(3)主机字节序&网络字节序主机字节序:指的是机器本身的字节序,如果是大端,则主机字节序就是大端;如果是小端,主机字节序就是小端。网络字节序:规定网络当中传输的字节序使用大端,如果小端机器在传数据的时候,需要将数据转化为大端字节序进行传输,对端机器默认传输过来的数据是大端字节序问.
2021-03-11 23:53:54
352
空空如也
关于#unnitest#的问题,如何解决?(python-vscode)
2023-09-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人