自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Tcp Socket

Tcp套接字的使用和Udp套接字的使用是差不多的,但是有一些地方还是有差别的,直接上代码。

2026-07-05 17:56:51 65

原创 UdpSocket

这个是套接字函数,套接字实际上就是IP+端口,IP用于标识主机,端口用于标识主机上面的进程:成功返回一个文件描述符,失败返回-1:一般为AF_INET,表示网络通信:取值一般为SOCK_STREAM和SOCK_DGRAM,分别表示TCP和UDP,字面意思,引文tcp面向的是字节流,UDP是数据报,字节流就像水流一样,数据想取多少就取多少,数据报类似于快递,发来的是一整块数据:一般为0,然系统自动匹配默认协议这个表示IPV4,其中用。

2026-06-28 21:54:09 236

原创 Linux线程池

线程过多会带来调度开销,进⽽影响缓存局部性和整体性能。⽽线程池维护着多个线程,等待着监督管理者分配可并发执⾏的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利⽤,还能防⽌过分调度。可⽤线程数量应该取决于可⽤的并发处理器、处理器内核、内存、⽹络sockets等的数量。

2026-06-28 19:22:25 177

原创 Linu信号量

初始的时候环形队列的head和tail指向的都是同一个位置,在上图中也就是下标为0的位置,当环形队列为满的时候指向head和tail指向的也是0,因此根据head == tail == 0无法判端队列是空还是满的,因此要一个计数器来统计其中的元素个数。

2026-06-20 19:30:08 255

原创 Linux线程同步与互斥

每一次抢票让票数减去一都会执行这一段汇编指令:先将变量从内存加载到CPU的寄存去中,变量减去之后再将变量写回内存,这样当线程A将值从内存写到寄存器当中判断大于0立马切换到线程B。发现票是居然为负数了,但是我们的判断条件里面明明写了需要票数大于0的时候才执行抢票功能,下面解释一下原因。在上面的程序当中,模拟实现了10个线程抢票的场景,现在来看看运行结果。

2026-06-15 22:02:36 123

原创 linux线程

线程是进程内部的一个执行分支,执行粒度比线程更细,比如下面的图片从上面的图片来看,线程是进程里面的一个执行分支,而且线程是共享进程内部的资源的,也就是说,进程是资源分配的基本单位,线程是调度的基本单位,需要注意的是,在linux中是没有真正意义上的线程这一说法的,线程其实就是一个轻量级进程(LWP),而且linux要支持线程的话,就必须需要对线程有一个管理,还是那句话,先描述再组织,但是重现弄一个结构来描述一下线程是否太麻烦,于是linux选择复用进程的PCB,再线程这里叫做TCB,下面我们写一个程序。

2026-06-13 22:04:37 245

原创 Linux信号

生活中处处有信号,比如红绿灯,铃声,还有古代的狼烟等等,信号一出现,就提醒我们开始去做一些事情了,在计算机中也同样的是这个道理,信号出现,需要我们的一些进程去一些特定的事情。

2026-06-10 14:59:11 224

原创 linux共享内存

共享内存也是进程之间进行通信的一种方式,它通过在内存中开辟一段空间让进程都能看得见这块共享资源从而能够达到进程之间通信的目的,它的速度比管道更快,原因如下:管道本质上就是一个文件,在通信的时候写进程需要将内容写进进程级别的缓冲区,在将内容写从进程缓冲区写进内核级缓冲区,读进程再将内容从内核缓冲区拷贝到自己的进程级别的缓冲区,但是共享内存就不用,直接将内容写进内存,读的时候直接从内存中拿。

2026-06-07 17:23:50 230

原创 linux匿名管道

首先我们每一个进程再调用pipe函数的时候都会产生通道,一个通道进行读,一个通道进行写,当我们创建子进程的时候,父子两个进程都有通向这一段资源的通道,这段资源就是我们说的管道,且父子进程都有读和写的权限,但是管道是一个单项的,里面的信息只能从一边流向另外一边,所以在通信的时候,如果一个进程想要对另外一个进程发消息,一个进程需要关掉读的通道,另外一个进程就必须关闭写的通道,这样才能保证数据是单向流动的。管道就是这样一个共享资源,它是一个内存级别的文件,只是存在与内存当中,磁盘上不存在。功能:创建一无名管道。

2026-06-01 13:14:52 246

原创 动静态库

有时候我们需要使用别人编写的代码,或者别人需要使用你编写的代码,但是你不想把自己的源代码给它,这个时候我们只需要将我们的程序打包成为动静态库,然后把头文件给他告诉里面有哪些接口,他直接调用就行了。

2026-05-30 21:58:33 229

原创 软硬链接

下面先介绍一下一个命令这个命令的意思就是对目标文件进行建立软链接,其中,ln是link的缩写,s是soft的缩写上面的操作我们就为test.txt文件建立了一个软链接,其中ll -i的意思是显示出文件对于的inode,上面的最后两行的数字就是文件的inode,第三列的数字表示该文件的inode对于多少个文件名字,上面可见软链接产生的文件就是一个独立的文件,这个文件拥有自己的inode,其实软链接就是我们电脑上面的应用程序的快捷方式,下面我们来展示一个快捷方式里面有哪些东西。

2026-05-30 17:09:36 243

原创 MFC知识点

首先我们需要知道这个控件的ID,这个可以在属性上面来设置,而且刚往主窗口上拖拽了一个控件一定要修改ID,因为每一个控件刚被拖拽道主界面上的时候ID都是一样的。

2026-05-17 16:26:56 292

原创 模拟文件打开写入关闭的过程

我们C语言在写文件的时候,是写到对应文件的缓冲区里面的,在关闭文件的时候会将文件缓冲区里面的内容刷新到操作系统缓冲区里面,进而写到外设上去。

2026-05-10 13:41:54 35

原创 Linux文件与fd

运行程序之后查看一下文件的内容在上面的程序当中,我们以写的方式打开了一个文件,如果文件没有建立会自动帮你建立,而且以写的方式打开的话你多次运行程序的话会将写的内容覆盖,如果想不被覆盖的话可以采用追加的方式打开文件,这都是C语言的内容,我们简单的复习一下,接下来才是重点为什么我们在读一个文件的时候需要先打开文件,等到程序结束之后我们又要关闭文件?

2026-04-25 10:42:14 396

原创 进程地址空间

运行结果我们发现,父子进程的中val的地址都是一样的,但是打印出来的结果却不一样,原因如下打印的地址是逻辑地址,并非是val的物理地址,在创建子进程的时候,子进程会将父进程的代码数据继承过去,如果数据没有改变,他们的数据会指向同一个地址,但是如果子进程改变了数据,就会发生写时拷贝,逻辑地址不变,但是将实际的数据拷贝一份,放入新的物理地址,图片如下。

2026-04-06 22:55:58 386

原创 快速选择算法

这是基与快速排序的悬着第K大或小的元素,其算法思想如下。

2026-04-06 11:56:51 576

原创 常见位运算总结

2026-03-30 20:00:42 43

原创 c++智能指针

下面我们看一个场景在上面的程序当中,申请了两块空间,如果arr2申请失败了,就会抛异常,下面释放内存空间的代码就不会执行,直接去处理异常去了,从而造成内存泄露,但是有人会说,加try catch语句不就得了但是这样是不是太麻烦了,在里面写释放了,在外面又来一遍,代码是不是写得太冗余了于是我们可以使用智能指针来进行管理,它可以自动释放。

2026-03-24 21:52:41 253

原创 二分查找

二分查找主要是用于有序序列的二段性的问题的,二段性指的是在数组或其他有序序列中(当然这个有序序列需要我们能够结合题目进行分析出来),某个元素的左边的元素小于它,右边的元素大于它,然后查找进行查找元素。

2026-03-20 22:50:22 288

原创 滑动窗口

滑动窗口主要利用数组相加的单调这个原理,通常在解决最小子区间之类的问题,比如最长,最短的数组,字串的时候会用到这个算法算法的操作步骤主要分为如下的几步1.入窗口2.判断条件是否还满足3条件不满足.更新结果,出窗口,条件还是满足的话继续进窗口。

2026-03-19 21:25:12 95

原创 C++异常

实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了案例public:, _id(id)protected:int _id;return str;

2026-03-18 14:11:27 412

原创 MySQL索引

上面的所有,用下面一段话来做总结索引的出现,提高数据的查找速度,因为内存与磁盘是以块为单位进行交换的,当我们插入数据的时候,MySQL会对有索引的数据进行排序,方便管理,而数据又是在块中的,每一块之间以链表的形式连接在一起,如果块太多了的话,就会形成上以及索引,也就是B+树没有索引之前的话数据是无序的,要查找的话需要不断遍历每一块,从而增加了内存和磁盘之间的I/O,导致速度慢,让每块之间的结构形成B+树会减少文件I/O,从而提高速度。

2026-03-17 21:14:06 379

原创 MySql内外连接

内连接其实就是对两张表进行笛卡尔连接然后进行条件的筛选语法select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;案例:显示"SMITH"的的名字和部门的名称之前的写法现在的写法。

2026-03-15 15:16:24 78

原创 MySQl复合查询

查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J按照部门号升序而雇员的工资降序排序使用年薪进行降序排序显示工资最高的员工的名字和工作岗位显示工资高于平均工资的员工信息显示每个部门的平均工资和最高工资显示平均工资低于2000的部门号和它的平均工资显示每种岗位的雇员总数,平均工资。

2026-03-14 16:58:24 85

原创 OJ管理系统后端测试报告

oj系统是一筐基于Web的在线刷题系统,主要用于创建和删除用户,创建和导出题目,训练管理,比赛管理,该系统可运用于各大高校,组织,为其提供题目的oj题目的创建和发表,用户的增加和删除等等系统包含下面的核心模块常用设置:用户管理(用户的新增,删除,导入文件),公告管理(创建,删除,编辑) 通知题目管理:题目创建,删除比赛管理:删除和创建讨论管理:删除,搜索,查看讨论详情。

2026-03-09 20:50:55 382

原创 MySql内置函数

创建一张表记录生日添加当前日期。

2026-03-08 19:03:03 54

原创 MySql的增删查改

创建一个表,格式create table 表名称变量1 类型,变量2 类型,........这个之前已经见识过来,重点来看插入先创建一个表插入一行插入多行插入否则更新替换主键 或者 唯一键 没有冲突,则直接插入;-- 主键 或者 唯一键 如果冲突,则删除后再插入。

2026-03-07 13:18:17 415

原创 博客系统功能测试报告

博客系统是一款基于Web的在线平台,主要用于:创建和管理个人的博客文章系统包含一下核心模块:用户管理:登录功能,注销功能博客管理:创建,编辑,发布,删除。

2026-03-06 11:46:32 259

原创 MySql表的约束

表的约束就是显示默写变量的使用情况,比如一个是否允许一个变量是否为空,即我们在插入值的时候不插入该属性的值是否合法。

2026-03-05 21:53:39 445

原创 mysql数据类型

下面我们介绍一种,上面的tinyint类型,其他的自然而然也能融汇贯通在上面的图片当中,我们定义了一个数据库test,里面定义了一个表,里面的数据类型是tinyint ,我们往里面插入了一个数据,分别是1和1000,我们发现1成功插入,但是1000确是报错了,因为tinyint 的范围是-128到127,1000太大了,超过了范围,这就说明,我们再进行数据库操作的时候,必须要保证数据范围符合之前定义的数据范围,这和C语言和C++不一样,这也从侧面说明数据库的安全性。

2026-03-03 21:23:57 440

原创 MySql数据库及其操作

存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点:1.文件的安全性问题2.文件不利于数据查询和管理3.文件不利于存储海量数据4.文件在程序中控制不方便数据库存储介质:磁盘,内存为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据库的水平是衡量一个程序员水平的重要指标。

2026-02-28 16:03:26 832

原创 性能测试—jemeter工具

在同一个系统当中,协议,IP,端口号是不会发发生变化的,在上面当中,我们在系统当中只做了一个登录接口的一个测试,如果想做很多测试嘞,那参数的填写需要浪费我们很多的时间。在上面的图片当中,我们新添加了一个http请求,目的是获取我的考试页面,我们发现协议,IP,端口号都没有填写,但是也测试成功了,原因是我们设置了HTTP请求默认值。我们在测试计划这里,这个测试计划也是我们为了进行性能测试而创建的一个项目,我们鼠标右键添加一个线程组,如下图,便开始了性能测试的第一步。填写好参数了,我们就可以运行看结果了。

2026-02-25 21:50:25 256

原创 接口自动化测试—request模块

requests 库是⼀个⾮常流⾏的HTTP客⼾端库,⽤于发送HTTP请求。requests.get ⽅法⽤于 发送⼀个HTTP get 请求到指定的URL requests.get ⽅法返回⼀个 Response 对象,这个对象包含了服务器返回的所有信息。

2026-02-24 22:52:34 671

原创 页面自动化常见函数重点说明

在这个实现里面,我们在百度一下的首页打开了百度地图这个标签,之后我们打印当前页面的title,发现还是“百度一下”,并非是百度地图,说明点击后的页面并没有发生转换就需要我们的今天的操作1)获取当前⻚⾯句柄:3)获取所有⻚⾯句柄:运行结果:但是这是两个页面,来了三个怎么办,用if语句无法实现,别担心,在实践当中,我们一般都是两个页面如果有两个窗口,driver.close()后,请问当前处于哪个窗口:句柄处于关闭的这个窗口,要使用另一个窗口,需要切换。

2026-02-23 19:37:27 475

原创 C++11

在C++98中,允许使用{}对数组和结构体进行统一的列表初始值设定,比如C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用户自定义的类型,使用初始化列表时,可添加等号(=),也可不添加创建对象时也可以使用列表初始化方式调用构造函数初始化运行结果。

2026-02-23 13:41:15 830

原创 命令行参数,环境变量

平时大家应该都看过这样的代码,main函数后面还有参数,那这到底是什么嘞?打印一下结果里面的参数是命令行参数,其中,argc表示的是参数个数,argv表示的是参数的内容,那为什么要有这个参数嘞,我们再来看一个程序运行结果这可以让我们的程序,根据不同的参数,让程序表现出不同的功能,这就是LINUX命令设计设计的原理,比如我们的ls -a -l 这些命令后面带的选项那main参数是谁传递的,这些命令是首先被shell命令行解释器拿到的,然后按照空格打散,形成一张表,然后运行出不同的功能。

2026-02-07 18:06:11 851

原创 进程优先级

进程优先级是指进程获得资源的先后顺序,设置这个优先级的原因是因为系统的某些资源有限,比如CPU,磁盘,显示器等等如何查看ps -al上面的进程可以查看进程的信息我们来解释图片中一些信息的含义:代表进程的执行者,我们输入命令ls -ln这个命令可以得到UID信息,-n的意思是将能够打印成为字符串的尽量打印成为数字通过上面的操作,我们发现:1.文件会记录相应的拥有者,所属组,对应的权限2.所有的操作,都是进程操作,进程会记录谁启动的我,这也是文件进行权限控制的实现方法之一。

2026-02-05 20:46:35 868

原创 进程状态

并发指的是如果有很多进程,cpu会轮流运行这些进程,每次运行的时间非常短,短到只有几毫秒,超过了人能够感知的范围,虽然在机器上面看来是一个一个的轮流运行的,但是在人的感知来看就好像是同时运行的,比如你一边听音乐,一遍微信聊天,CPU是轮流的运行音乐和微信这个进程,只不过每次运行的时间非常短,在你看来就是同时运行的。

2026-02-04 21:13:03 694

原创 Linux进程

查看当前系统运行的进程信在上面,PID为当前经常的标识符,相当于进程的身份证,PPID为父进程的PID上面的两幅图片当中,我们要查找的进程是code呀,但是为啥会显示这样一个东西原因是grep也是一个进程,在命令当中,1,2,3,4语句都是一个进程,1,2,3号都已经运行完了,4号进程在查询code进程,里面有code,所以也会显示出来,如果不想这个显示出来,后面可以加一个 -v grep,表示反向匹配gre,也就是不让它显示出来。

2026-02-02 12:10:07 415

原创 unordered_map和unordered_set的封装

【代码】unordered_map和unordered_set的封装。

2026-02-01 13:36:35 256

空空如也

空空如也

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

TA关注的人

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