自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ operator 生成类实现

c++ 自动重载运算符

2022-06-05 14:05:15 177

原创 ARP协议是做什么的?

ARP协议过程介绍引言​ IP地址的设计目的是为了跨越不同类型的物理网络的分组交换提供相互操作。这需要底层网络硬件使用地址的支持。打个比方,我们可以知道所在地址的IP地址,但是还是需要端口号,也就是精确到目标进程。所以IP数据报想要准确的被一个主机上的网络硬件接受,也需要有个明确的地址——MAC地址。所幸对于TCP/IP网络,有着**地址解析协议(ARP)**提供在IPv4和各种硬件地址之间的映射。​ MAC地址是和硬件相关的,而且是唯一的。MAC的唯一性是有一个标准的组织给前几位的号码,然后剩下

2021-11-27 01:06:27 2312

原创 TCP socket基础套接字

基础TCP套接字函数一、套接口通信模型​ 主要函数如下图所示:​ 在这个模型中,左侧为TCP客户端连接的模型,先创建套接口,再通过connect()主动连接服务端。右侧为服务器端,服务器端需要侦听来自客户的连接并进行三路连接建立全双工的一个完整连接,所以需要先建立listen()套接口,监听到的连接再通过accept()建立可读写的套接口。​ 在linux中,套接口也是一个文件,这个文件就是一个生产者消费者模型。但是我们的关注点不在于缓冲区是否满(因为这些由内核协议栈关注),而我们关注的是数据

2021-11-26 18:01:13 1662

原创 C++实现AVL树

C++ 实现AVL树一、介绍二叉搜索树​ 二叉搜索树,就是一种特殊的二叉树,二叉树中每个节点都分为左、右两个子节点。这两个子节点不仅拥有自己的子节点而且还指向自己父节点。下面是代码表示和图示template<typename T>struct TreeNode{ TreeNode(T d,TreeNode* p=nullptr,TreeNode* l=nullptr,TreeNode* r= nullptr):data(d),parent(p),lc(l),rc(r){};

2021-11-20 16:18:49 597

原创 C++ List的泛型实现

List的泛型实现一、介绍链表​ 之前的文章中讲过了动态数组的实现,但是分析得知动态数组无论如何巧妙,增删复杂度最差都是 o(n) ,如果我们有这样一个使用场景,对于一个停车场,经常有人进出,所以需要频繁修改数据。如果停车场确实数量少,使用数组还可以,但是数量多了,肯定不可以使用数组了,因为比较慢。(ps:当然有更好的选择,后续介绍AVL树和RB树时再介绍)链表的结构​ 那么链表是一个什么样的结构呢?代码如下/*可以用泛型实现,也可以特化一个节点中包含: 1、一个指向下一个节点的指针 2、一

2021-11-15 12:20:29 1561

原创 C++动态数组的简易实现

C++动态数组的简易实现​ 在啃过 STL源码剖析的vector这一章后,我准备自己写一个动态数组。因为在STL中的vector为了防止频繁的发生,添加元素->配置空间->移动元素->释放原空间,于是采用类似缓冲池的技术,减少空间配置的次数。这个技术就是 size + capacity 。下面举个例子,假如我们正常使用动态数组怎么改变//使用动态数组的步骤int* iptr = new int[10];//插入元素 1//1、创建新空间int* tmp = new int[

2021-11-13 15:32:16 2979

原创 MySQL查询(二)

查询练习​ 练习10:查询score表中的最高分的学生学号和课程号​ new! : 函数、子查询##10、 查询score表中的最高分的学生学号和课程号##子查询和函数mysql> SELECT sno,cno FROM score WHERE degree=(SELECT MAX(degree) FROM score);+-----+-------+| sno | cno |+-----+-------+| 103 | 3-105 |+-----+-------+查询

2021-11-10 22:30:41 4458 1

原创 MySQL查询(一)

查询练习(一)初始:数据表准备​ 首先创建一个有学生、教师、课程、得分表的数据库。##建表过程省略,下面展示表的属性#学生表:id、名字、生日、班级;其中id作为主键mysql> desc student;+-----------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-----------+-------------

2021-11-10 08:55:02 707

原创 MySQL 3NF

数据库三大范式第一范式:强调数据表的原子性​ 数据表中的所有字段都是不可拆分的原子值mysql> desc student;+---------+-------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+---------+-------------+------+-----+---------+-------+| id | int

2021-11-09 11:21:30 797

原创 mysql基本操作(一):数据库、建表约束

MySQL操作一、数据库操作操作名指令备注登录数据库sudo mysql -uroot创建数据库CREATE DATABASE dbnamedbname是自定义名字查看当前服务器所有数据库SHOW DATABASES使用数据库USE dbnamedbname是自定义名字删除数据库DROP DATABASE databasenamedbname是自定义名字修改数据库名ALTER DATABASE dbnamedbname是自定义名

2021-11-03 19:38:11 138

原创 STL空间配置器

STL 空间配置器一、常规对象配置​ 我们使用C/C++是对于动态内存对象可以有两种方法申请:1、调用 malloc() + free() 函数;2、调用 new + delete 运算符。​ 不得不提一下这两种方法的区别,虽然看起来都是向堆区(C++虽然叫自由存储区,但的确是通过堆区实现的)申请内存,但是new和delete在C++中支持C++的高级特性,如下表。比如new、delete支持重载,而且对于初始内存两者的处理完全不同。​特征new/deletemalloc/free

2021-11-02 00:29:33 166

原创 第1章 计算机网络概述

第一章 计算机网络概述1.1计算机网络的发展过程1.1.1 早期的计算机网络​ 20世纪50年代,美国空军设计的半自动化地面防空系统SAGE,将远距离的雷达和其他检测装置的信号通过通信线路送入一台IMB计算机系统,连接了1000+台终端,被认为是世界上最早的计算机网络。​ 早期的计算机网络是计算机和电话通信系统相结合的产物,连接到中心计算机的终端并没有自主处理能力。是以单台计算机为中心的远程联机系统。1.1.2 现代计算机网络的形成​ 美国国防部高级研究计划署资助一些公司和大学进行研究,设计了

2021-05-02 23:06:46 413

空空如也

空空如也

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

TA关注的人

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