自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++内存分配

还有一些零散的东西没有介绍到,比如set_new_handler可以在malloc(需要调用set_new_mode(1))或operatornew内存分配失败时指定一个入口函数new_handler,这个函数完成自定义处理(继续尝试分配,抛出异常,或终止程序),如果new_handler返回,那么系统将继续尝试分配内存,如果失败,将继续重复调用它,直到内存分配完毕或new_handler不再返回(抛出异常,终止)。也就是说p就是数组的起始地址,这样程序看到的内存就是线性的,不包括前面的额外数据。...

2022-07-18 23:17:35 669 1

原创 C++静态函数和普通函数的区别

这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。具有自动存储期的变量在进入声明该变量的程序块时被建立,它在该程序块活动时存在,退出该程序块时撤销。这是统计函数被调用次数的最好的办法,因为这个变量是和函数息息相关的,而函数可能在多个不同的地方被调用,所以从调用者的角度来统计比较困难。当static用来修饰全局变量的时候,它就改变了全局变量的作用域(在声明他的文件之外是不可见的),但是没有改变它的存放位置,还是在静态存储区中。...

2022-07-18 22:23:30 1821

原创 extern关键字

extern是C语言中的一个关键字,一般用在变量名前或函数名前,作用是用来说明“此变量/函数是在别处定义的,要在此处引用”,extern这个关键字大部分读者应该是在变量的存储类型这一类的内容中遇到的,下面先分析C语言不同的存储类型在C语言中变量和函数有数据类型和存储类型两个属性,因此变量定义的一般形式为:存储类型 数据类型 变量名表;C语言提供了一下几种不同的存储类型:(1) 自动变量(auto)(2) 静态变量(static)(3) 外部变量(extern)(4) 寄存器变量(register)(

2022-07-13 10:09:42 6743

原创 MySQL视图和存储过程

一.视图:视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。我们要知道视图仅仅是用来查看别处的数据的一种设施。视图本身不包含任何数据,因此视图返回的数据都是从其他表中检索出来的。创建出来的视图用法其实和基本表一样,可以对其进行各种查询和过滤操作。下面看一个例子:创建了一个学生和课程的表的联结的视图,名为smy_view;CREATE VIEW smy_view AS SELECT student.*,sc.`C`,sc.`score` FROM student IN

2022-05-11 16:19:33 2009

转载 操作系统的虚拟内存

为什么不直接使用物理内存虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。现代所有用于一般应用的操作系统都对普通的应用程序使用虚拟内存技术,老一些的操作系统,如DOS和1980年代的Windows,或者那些1960年代的大型机,一般都没有虚拟内存的功能——维基百科读完上面的信息,我们可以得知,虚拟内存这个概念是后来才提出的,一开始并没有虚拟

2022-05-10 15:25:54 357

原创 操作系统的内存管理

通常物理内存的分配有两种方式,一种式连续分配方式,一种是离散分配方式(非连续分配)一.连续分配连续分配是指为一个用户程序分配连续的内存空间。连续分配有单一连续存储管理和分区式储管理两种方式。1.1单一连续存储管理:在这种管理方式中,内存被分为两个区域:系统区和用户区。应用程序装入到用户区,可使用用户区全部空间。其特点是,最简单,适用于单用户、单任务的操作系统。CP/M和 DOS 2.0以下就是采用此种方式。这种方式的最大优点就是易于管理。但也存在着一些问题和不足之处,例如对要求内存空间少的.

2022-05-09 20:14:07 850

原创 MySQL联结

一内连接查询· 含义:内连接(INNER JOIN) 使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新记录。简而言之,查找出同时存在在不同表中的关联数据形成结果表。· 用法:SELECT 字段1,字段2,字段3,…… FROM 表名1 INNER JOIN 表名2 ON 关联条件;等同于SELECT 字段1,字段2,字段3,…… FROM 表名1,表名2 WHERE 关联条件;· 注意事项① 如果某字段在多表中都有,则以"表名.列

2022-05-08 17:11:34 281

原创 MySQL聚集函数

1、定义聚集函数是以值是一个集合(集或者多重集)为输入、返回单个值得函数。SQL提供了五个固有聚集函数。平均值:avg最小值:min最大值:max总和:sum计数:count2.基本聚集以上五个固有聚集函数都是属于基本聚集3、分组聚集如果希望将聚集函数作用在单个元组集上,也希望作用到一组元组集上,此时可以利用group by子句来实现。group by 子句作用:对给出的一个或多个属性来构造分组,将属性上取值相同的元组分到同一组中。4、having子句有时候限定分

2022-05-07 16:42:28 1988

原创 makefile的简单编写

一.最简单makefile的编写1.makefile的命名:makefile2.makefile的规则:目标,依赖,命令 格式为:第一行为目标:依赖(目标就是你要生成可执行文件的名字,依赖就是要编译的文件)第二行,先开始有一个tab缩进。然后就是gcc的编译命令(注意开始有tab缩进)当编写完makefile之后直接make就可以执行编译文件。二.提升版makefile以上就是最简单的makefile的编写。但是很容易发现这种...

2022-05-06 11:41:38 5875

原创 Linux解压缩

一.1.whoami 查看当前登录的用户2.

2022-04-25 11:11:23 58

原创 Linux 文件和目录操作

一.目录操作1.查看当前路径:pwd2.创建当前目录:mkdir 目录名 //mkdir test(创建一个名为test的目录)mkdir test/te -p (当创建复合目录时候要加参数-p)3.删除空目录:rmdir 目录名 //rmdir test(删除test目录)必需是空目录rm 目录名 -r(可以递归的删除一个非空目录,及删除目录及其子目录)二.文件操作1.创建文件:(如果文件不存在则创建文件,如果文件存在则修改文件的时间)touch 文件名2.rm 文..

2022-04-22 17:43:44 1139

原创 Linux文件结构和快捷键

一.命令解析器:shell————unix系统 bash——linux操作系统本质:根据命令的名字,执行响应的程序二.Linux的快捷键:ctrl+a(光标移动至行首) ctrl+e(光标移动至行尾)删去光标前的字符(ctr)三.linux系统目录结构:根目录://bin:存放经常使用的命令的可执行程序/boot:开机启动项文件/dev:设备文件/etc:配置文件/home:所有用户的主目录/lib:存放的动态链接库/mnt:临时挂在文件系统(手动挂载)

2022-04-22 16:27:08 289

原创 grep 的用法

一.grep是什么Linux grep 命令用于查找文件里符合条件的字符串。grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。二.格式以及主要参数格式:grep [options] ‘pattern’ filename常用参数:-c:只输出匹配行的计数。 -i:不...

2022-04-20 20:18:30 3051

原创 建立TCP的客户端和服务端(Windows)

一.建立TCP的服务端1.加载库2.创建监听套接字3.绑定IP地址4.监听5.接受链接6.接收数据7.发送数据8.关闭套接字,卸载库#include<iostream>#include<stdio.h>#include<winsock2.h>#include <Ws2tcpip.h> using namespace std;#pragma comment(lib, "ws2_32.lib")int main()

2022-04-17 13:49:09 3692

原创 Windows建立UDP的客户端和服务端

一.UDP的服务端建立:udp服务端创建的步骤:1.加载库2.创建套接字3.绑定IP地址4.接收数据5.发送数据6.关闭套接字,卸载库代码如下:#include<iostream>#include<stdio.h>#include<winsock2.h>#include <Ws2tcpip.h> using namespace std;#pragma comment(lib, "ws2_32.lib")int

2022-04-17 13:39:43 4559

原创 TCP协议

7.缓冲区:操作系统会给每个进程分配空间,每创建一个套接字就会给套接字分配一个发送和接受缓冲区。sendto就是从发送缓冲区里拷贝数据,recvfrom从接受缓冲区拷贝数据查看接受缓冲区和发送缓冲区的大小:getsocket(sock,lebvel,optval,optlen);65536 64Ksendto:阻塞模式:如果缓冲区里没有足够的空间,就等到空间足够大正在把数据拷贝到发送缓冲区中非阻塞模式:如果缓冲区没有足够的空间就有多少拷贝多少,拷贝完立即返回,返回的是实际拷贝的字节数//1.

2022-04-16 21:26:53 16955 1

原创 关于子网划分

一.子网掩码:(在学习子网划分之前要先了解子网掩码)子网掩码是在IPv4地址资源紧缺的背景下为了解决lP地址分配而产生的虚拟lP技术,通过子网掩码将A、B、C三类地址划分为若干子网,从而显著提高了IP地址的分配效率,有效解决了IP地址资源紧张的局面。子网掩码是一个32位地址,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。也就是说子网掩码是由网络号和主机号组成的。网络号用1标识,主机号用0标识。实际网络上的IP地址是由实际IP地址和子网掩码相与的结果。默认子..

2022-04-10 23:22:02 1534

原创 头文件-源文件和宏

一.头文件:不参与编译,变量的声明,函数的声明,类的定义.源文件:自上而下独立编译,变量的定义,函数的定义,成员定义初始化头文件里放变量的声明不能放定义,因为当两个及以上的文件引用该头文件就会发生重定义的错误。函数也同理。extern int a;//变量的声明,注意不能赋值,如果赋值则为非法声明extern int a;//可以声明多份int b;//此为定义。//头文件中类的定义class te{public: int m_a; te(); void show1(

2022-04-04 21:52:00 1382 1

原创 C++常函数和继承的基础

一.const和常函数1.常量指针和指针常量const int* p1;常量指针:修饰的是指针所指向的空间,也就是不能更改(*p1)的值,但是可以改变指针的指向,也就是可以修改p1,也可以读取。不可以通过当前指针修改指向的空间但是可以通过其他方法。int* const p2=&a;//指针常量要初始化指针常量:const修饰的是p2指针,可以通过指针修改空间的值*p2 = 30。不能修改指针的值p2 = &b;是非法的const int* const ...

2022-04-04 21:02:23 985

原创 C++类成员和静态成员

一.类对象的种类:1.栈区局部变量,遇到函数返回或者{}生命周期结束,自动回收。2.通过new创建的变量,需要通过delete手动回收3.全局变量:程序一开始创建就创建变量,程序退出(销毁)时候被回收,作用域为整个应用程序,可以跨文件.4.静态全局,生命周期和全局是一样的。作用域:只能在当前文件中使用,具有文件作用域5.静态局部变量,第一次调用包含这个对象的函数执行定义对象的代码,一直到程序结束销毁变量。调用了多次包含该对象的函数,对象不会重新创建(和局部栈区变量不一样)#i.

2022-04-04 20:37:01 1171

原创 C++常用关键字

1.OOP的概念的提出(面向对象的设计)本质区别在去程序设计思想2.多了继承,多态,函数重载,泛型编程,STL3.面向对象的三大特性:继承,封装,多态4.C语言是一门面向过程的语言,更注重于程序的实现逻辑,在编写大型项目时并不利于程序的复用性,扩展性后期维护很繁琐,针对于次OOP诞生了。5.复用性:公共功能,过程的抽象,体现为能被重复使用的类,方法,就要求我们针对某一类功能而不是针对某一个功能去设计6.扩展性:新增加的功能不影响原来已经封装好的功能7.封装:将零散的数据和算法放到一个

2022-04-04 20:21:02 487

原创 动态库和静态库

一.什么是库,库有什么用库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。二.静态库我们所说的静态和动态指的是链接。这类库在编译的时候会直接整合到目标程序中。这类函数库最大的优点就是编译成功的可执行文件可以独立运行,而不再需要向外部要求读取函数库的内容。静态库的缺点:

2022-04-03 16:45:32 3403

原创 线程的基本调用(MFC)

1.进程:动态执行的过程,操作系统进行资源分配和调度的独立单位,时应用程序运行的载体。一个程序可以启动多个进程。2.线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。3.线程和进程://1.进程类似于工厂是系统分配资源的基本单位,线程类似于工厂中的工人是CPU调度和执行的基本单位//2.一个进程由一个或者多个线程组成。//3.进程之间相互独立,但同一个进程下

2022-04-02 15:51:31 1477

原创 进程的基础知识

一.进程的概念及为何引入进程现代操作系统要运行各种程序,为了管理程序的运行,操作系统提出了进程的抽象。每个进程都对应于一个运行的程序。有了进程的抽象应用程序在运行时仿佛独占了整个cpu,不用考虑何时将cpu让给其他程序二.进程的状态:为了对进程进行管理,操作系统定义了进程的状态。共有五种状态1. 新生状态:该状态表示一个进程刚刚被创建出来,还没有完成初始化,不能被调度执行。初始化之后,进程进入预备状态。2.预备状态:该状态表示可以被调度执行,但还没有被调度器选择。此时,系统中其他可被调度

2022-03-18 12:29:05 193

原创 MySQL基础知识

数组,集合为内存存储数据,不能永久存储文件存储------永久存储。不方便查询数据库:实现数据的持久化,使用完整的管理系统统一管理,方便查询2.术语DB:数据库,存储数据的仓库。保存了一系列有组织的数据。DBMS:数据库管理系统。数据库是通过DBMS创建和操作的容器。可以通过DBMS实现对数据库的增删改查,我们常说的学习数据库其实就是学习数据库管理系统。常见的数据库管理系统有MySQL,Oracle ,SQL server ,DB2SQL:结构化查询语言。专门用来于数据库通信的语言。

2022-03-18 11:42:39 514

原创 快速幂和求解最大公因数(辗转相除)

快速幂快速幂 ( Exponentiation by squaring ,平方求幂)是一种简单而有效的小算法,它可以以 的时间复杂度计算乘方。. 快速幂不仅本身非常常见。让我们先来思考一个问题:7的10次方,怎样算比较快?方法1:最朴素的想法,7*7=49,49*7=343,... 一步一步算,共进行了9次乘法。这样算无疑太慢了,尤其对计算机的CPU而言,每次运算只乘上一个个位数,无疑太屈才了。这时我们想到,也许可以拆分问题。方法2:先算7的5次方,即7*7*7*7*7,再算它的...

2022-01-05 12:06:38 138

原创 结构体对齐和枚举类型

一.自定义扩展类型:enum(枚举)struct(结构体)union(联合/共用)1.枚举:增加代码的可读性在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。此时可以使用枚举类型来增加代码的可读性。例如,列出一个星期有几天:enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };可以看到,我们仅仅给出了名字,却没

2021-12-27 20:56:19 190

原创 链表的基础知识(C++描述)

1.为什么要引入链表?链表是线性表的一种,线性表就是n个数据元素的有限序列,可以存储若干个数据项。线性表分为链表和顺序表。顺序表一般通过数组来实现,物理和逻辑上都相邻。也就是说只要确定了线性表的起始位置,线性表中任一数据元素都可随机存取,所以顺序表的存储结构是一种随机存取的存储结构。但是顺序表的局限性在于当你要插入或删除操作时要对其他元素进行移位,这十分消耗时间。对于长度变化较大的线性表,要一次性分配足够的存储空间,但这些存储空间常常又得不到充分的利用。为了避免这些问题我们引入了链表。2.什么是链表

2021-10-09 15:07:52 425

原创 HTTP协议

HTTP协议概述HTTP包及其结构一般情况下,用户无法再正常访问时观察到HTTP包及其结构。但在web安全中HTTP包中的大量参数会对安全产生至关重要的影响。部分浏览器(Firefox)有相关的插件,也可以用Wireshark,Burpsuite等抓包工具抓取HTTP包。HTTP包由请求行,消息报头,请求正文三部分组成1. 请求行:请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,标准协议的请求格式:Method Request-URI HTTP-Version CRLF

2021-04-29 15:35:41 176

原创 wireshark的基础操作

wireshark一.基本的抓包原理1.主机环境:

2021-04-24 22:40:31 739 1

原创 linux的基础知识

2021-04-16 22:35:48 155 1

空空如也

空空如也

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

TA关注的人

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