自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 项目——备份系统

目录简介功能简介功能搭建云备份服务器与客户端,客户端针对主机上指定目录下的文件自动备份到服务器,服务端会对

2021-08-19 20:13:50 456

原创 项目——订单系统

目录项目描述功能技术点框架详细设计数据管理模块业务控制模块前端界面模块代码SQL项目描述功能用户可以通过浏览器访问服务器获取菜品信息并进行点餐;管理员可以通过浏览器访问服务器实现订单以及菜品的管理;技术点线程、socket、http、json、MySQL、stl;框架框架:简单 MVC 框架;M(Model):数据管理模块,管理数据——菜品、订单,外界想要访问数据必须通过这个模块完成,不能直接访问;V(View):视图界面模块,浏览器的前端所展示的界面,用户或者管理员的操作都是

2021-08-19 19:54:08 648

原创 MySQL代码操作

目录初始化操作数据操作初始化操作初始化操作句柄:MYSQL* mysql_init(MYSQL* mysql);通过句柄连接 MySQL 服务器:MYSQL* mysql_real_connect(MYSQL* mysql, const char* host, const char* user, const char* passwd,const char* dbname, unsigned int port, const char* unix_socket, un

2021-07-27 11:08:07 389

原创 MySQL事务

目录事务介绍问题概念特性版本支持提交方式事务操作指令介绍总结事务隔离概念问题隔离级别一致性MVCC介绍概念前置知识事务介绍问题有这样一个场景:A 与 B 去买票,此时还剩下最后一张票,A 先进行访问,A 发现有一张票,所以进行购买,当系统将票卖给 A,但是还没有执行更新数据库操作时,B 也对系统进行访问,B 发现还有一张票,于是也进行购买,那么一张票就被卖了两次,这是不合理的;概念概念:事务就是一组 DML 语句组成,这些语句在逻辑上存在相关性,这一组 DML 语句要么全部成功,要么全部失败

2021-07-27 10:41:28 118

原创 MySQL索引

目录介绍介绍

2021-07-26 17:49:06 105

原创 MySQL表进阶操作

目录数据库约束约束类型聚合函数分组查询三大范式多表联查连接方式数据库约束约束类型NOT NULL:指示某列不能存储 NULL 值,也就是必须赋值,否则报错;UNIQUE:保证某一列的每一行都必须是唯一值;DEFAULT:规定没有给列赋值时的默认值;PRIMARY KEY:NOT NULL和UNIQUE的结合,确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录;PRIMARY KEY(字段1, 字段2...):当主键由多个字段组成时,不能直接在字段后面声明

2021-07-25 16:55:21 156

原创 MySQL表的增删改查

目录新增全列插入指定列插入多行插入修改删除查询全列查询指定列查询查询字段为表达式别名查询去重查询排序查询分页查询条件查询新增全列插入insert into 表名称 values(数据1, 数据2, 数据3...);:所添加的数据必须和创建表时所设置字段的顺序、个数保持一致;指定列插入insert into 表名称(字段1, 字段2, 字段3...) values(数据1, 数据2, 数据3...);:在指定字段插入相应数据;多行插入insert into 表名称 values(数据1

2021-07-25 16:54:49 871 1

原创 MySQL数据库基础

目录注意事项库的操作进入数据库显示数据库创建数据库使用数据库删除数据库常用数据类型整型与浮点型字符串类型日期类型表的操作创建表查看表删除表修改表注意事项SQL 语句中,每条语句都应该以;结尾;SQL 语句中,并不区分大小写,也不区分单引号双引号,都是一样的;SQL 语句中,数据库名称、表名称、字段名称并不能直接使用 SQL 中的关键字,如果非要使用,则需要将冲突的名字使用 “ ` ”(反引号)括起来;库的操作进入数据库mysql -u用户名 -p:输入指令后敲回车,此时如果设置了密码,则

2021-07-18 17:20:36 115

原创 高级I/O

目录

2021-07-15 11:44:23 248 1

原创 Linux网络——链路层协议

目录以太网协议协议格式以太网协议协议格式图片48 位源端 / 对端 Mac 地址:

2021-07-07 10:45:51 305

原创 Linux网络——网络层协议

目录IP协议协议格式地址管理IP协议协议格式4 位版本号(version):指定 IP 协议的版本,对于 IPv4 来说就是 4;4 位头部长度(header length):以 4 字节为单位,所以 IP 头部的长度是多少个 32bit,也就是 length * 4 的字节数,因为 4bit 表示最大的数字是 15,所以 length = 15,因此 IP 头部最大长度是 60 字节;8 位服务类型(Type Of Service): 3 位优先权字段(已经弃用),4 位 TOS 字段,和 1

2021-07-06 09:56:45 346 1

原创 Linux网络——传输层协议

目录UDP协议协议格式协议特性注意事项TCP协议协议格式协议特性面向连接UDP协议协议格式图片16 位源端和对端端口:用于描述识别通信两端进程;16 位数据报长度:能够存储的最大数据长度 65535,所以 udp 报文大小最大不能超过 64k,这其中是包含头部的 8k 大小的;16 为校验和:采用二进制反码求和算法,校验接收方接受到的数据与发送方发送的数据是否一致;协议特性无连接:通信时不需要建立连接,只要知道对方地址就可以直接发送数据;不可靠:不保证数据安全并且有序的到达对端;面

2021-07-05 10:15:02 557 1

原创 Linux网络——应用层协议

目录深聊协议自定制协议HTTP协议概念协议格式首行请求行响应行头部空行正文注意深聊协议socket api(套接字)的接口,在读写数据时都是按照 01 二进制的方式来接收的,那么当我们要传输一些结构复杂的数据时,该怎么办呢?这时候就需要用到协议了,协议就是一种约定,约定好自定制协议概念:负责应用程序之间的沟通,是程序员自定制数据格式,但是定制的同时需要考虑传输性能、解析性能,以及如何组织更加适用于当前的应用场景;应用层协议:如何将多个数据对象组织成为一个二进制数据串进行传输;考虑要素:传

2021-06-17 09:22:17 310 1

原创 Linux网络——套接字编程

目录UDP协议概念程序编写接口介绍TCP协议概念通信两端概念UDP协议概念概念:UDP 协议又叫用户数据报协议;特性:无连接、不可靠、面向数据报;应用场景:实时性要求大于安全性的要求的场景;程序编写服务端流程创建套接字,在内存中创建一个socket结构体;为套接字绑定地址信息,在创建套接字时所创建的socket结构体中加入 IP + port,目的是为了告诉操作系统,主机接收到的哪些数据应该交给当前的这个socket,并且还而已确定发送数据的源端地址信息;接收数据,当前进程从指定

2021-06-10 14:16:58 657

原创 STL——算法

目录`accumulate``count`与`count_if``find`与`find_if``max`与`min``merge``partial_sort``partition``reverse``sort``unique``next_permutation`与`pre_permutation`accumulate该算法作用是对某区间中的元素进行累加,使用时必须添加头文件<numeric>;// 对[first, last)区间中元素在init的基础上进行累加template &

2021-06-04 21:18:07 172

原创 类型转换与空间配置器

目录类型转换概念C++ 的四种转换空间配置器类型转换概念C 语言中的类型转换:隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败;显式类型转化:需要用户自己判断从什么类型转换为什么类型,转换格式为在需要转换的变量前加(要转换的类型);为什么需要 C++ 中的类型转换:隐式类型转化有些情况下可能会出问题:比如数据精度丢失;显式类型转换将所有情况混合在一起,代码不够清晰;因此 C++ 提出了自己的类型转化风格,注意因为 C++ 要兼容 C 语言,所以 C++ 中还可以

2021-06-04 19:36:13 204 1

原创 特殊类设计

目录设计一个类,只能在堆上创建对象实现方法设计一个类,只能在栈上创建对象实现方法一实现方法二设计一个类,不能被拷贝实现方法设计一个类,不能被继承实现方法设计一个类,只能创建一个对象概念饿汉模式懒汉模式设计一个类,只能在堆上创建对象实现方法将构造函数私有化,只给用户提供一个获取对象的接口,接口内部是在堆上创建对象;因为用户不能自己创建对象,所以就无法调用我们的接口来获取对象,所以这个接口必须被设计为静态接口,这样用户可以通过类名来调用接口获取对象;因为拷贝构造出来的对象是在栈上,所以我们应该将拷贝

2021-06-04 10:27:29 110

原创 C++智能指针

目录内存泄漏分类检测智能指针原理RAII简单实现`auto_ptr`概念实现`unique_ptr`概念实现`shared_ptr`概念安全问题实现循环引用删除器内存泄漏分类堆内存泄漏(Heap leak)堆内存指的是程序执行中依据须要分配通过malloc / calloc / realloc / new等从堆中分配的一块内存,用完后必须通过调用相应的free / delete / delete[]删掉,假设程序的设计错误导致这部分内存没有被释放,那么以后这部分空间将无法再被使用,就会产生 Hea

2021-06-03 10:32:17 199

原创 线程库和异常

目录线程库概念线程库概念在C++11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。C++11中最重要的特性就是对线程进行支持了,使得C++在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。要使用标准库中的线程,必须包含< thread >头文件。...

2021-06-02 08:55:25 204

原创 C++11新特性

目录列表初始化背景内置类型自定义类型变量类型推导`auto``decltype`默认成员函数控制背景显示缺省函数删除默认构造右值引用左值与右值引用列表初始化背景问题:在 C++98 中,标准允许使用花括号 {} 对数组元素进行统一的列表初始值设定,如:int array1[] = {1,2,3,4,5};int array2[5] = {0};对于一些自定义的类型,却无法使用这样的初始化,如下面的这些操作在C++98中是不被允许的:vector<int> v{1,2,3,4

2021-05-30 16:13:10 173 1

原创 哈希表应用

目录位图概念实现布隆过滤器概念位图概念背景:现在有这样一道题,给 40 亿个不重复的未排序的无符号整数,输入一个无符号整数,请你判断一下这个数是否在这 40 亿个数中;这个题的解法可以有很多种:直接遍历查找、先排序再二分查找等等,但是有一个问题,那就是你这些操作的前提是要先将这些数据存入内存中,但是这么庞大的数据肯定是放不下的,那么你该怎么办呢?其实我们并不需要存储数据的完整值,我们只需要标记一下这个数是否存在,存在或者不存在这是两个状态,因此一个比特位就可以完成这件事;概念:所谓位图,就是使

2021-05-28 19:16:30 315

原创 哈希表介绍

目录

2021-05-27 21:11:32 526

原创 AVL树与红黑树

AVL树#include<iostream>using namespace std;template<class T>struct AVLNode { //数据 T _data; //平衡因子 int _bf; //左孩子指针 AVLNode* _left; //右孩子指针 AVLNode* _right; //父结点指针 AVLNode* _parent; //带参构造函数 AVLNode(const T& val = T()) :_p

2021-05-24 13:18:26 167 1

原创 容器——map和set

目录关联式容器键值对概念接口介绍关联式容器序列式容器:在前面我们学习了 STL 中的string、vector、list、deque等容器,而这些容器因为其底层是线性序列的数据结构,里面存储的是元素本身,所以我们将它们称之为序列式容器;关联式容器:关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的不单单是数据本身,而是存储了关键码和数据的<key, value>结构的键值对,该种容器在数据检索时比序列式容器效率更高;键值对概念概念:用来表示具有一 一对应关系的一种

2021-05-18 13:20:00 334 1

原创 Linux网络——基础知识

目录发展背景发展背景

2021-05-12 11:53:50 310

原创 创建二叉搜索树

第一次尝试#include<iostream>using namespace std;template<class T>struct BSNode{ //数据节点的构造函数 BSNode(const T& data) :_data(data) ,_left(nullptr) ,_right(nullptr) {} //存放的数据 T _data; //指向节点的左孩子 BSNode<T>* _left; //指向节点的右孩子

2021-05-11 14:10:20 634

原创 二叉树进阶

目录二叉搜索树概念操作二叉搜索树概念二叉搜索树又称二叉排序树,它要么是一棵空树,要么是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值;若它的右子树不为空,则右子树上所有节点的值都大于根节点的值;它的左右子树也分别为二叉搜索树;操作...

2021-05-11 14:07:32 113

原创 Linux多线程(下)——线程应用

目录pthread_create:第二个参数为线程属性,一般置为空,第三个参数为函数指针pthread_self:返回线程的tid,这是一个地址——线程独有空间的首地址,这个返回值不能使用%d来打印,而要使用%p来打印-ps -ef -L:查看线程具体信息-ps -ef -L | grep 进程名字:查看线程具体信息子进程不会复制父进程中的线程常用操作:在父进程的线程中创建子进程执行代码,保证线程的安全性...

2021-05-05 15:45:58 159 1

原创 C++——多态

目录概念实现构成多态的前提条件概念现实中:不同的人去干同一件事产生了不同的结果,例如:成人买票全价,学生买票半价等;代码中:不同的对象去执行同一函数从而产生了不同的结果,这就是多态;实现构成多态的前提条件在继承关系体系中,当...

2021-05-05 09:43:14 159

原创 C++——继承

目录继承的概念概念语法定义格式继承方式总结继承中的赋值转换概念举例继承中的作用域派生类的默认成员函数继承的概念概念  继承 (inheritance) 机制是面向对象程序设计中可以使代码复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类(子类),原始的类被称为基类(父类),继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程,以前我们接触的复用都是函数复用,而现在所学的继承是类设计层次的复用;语法定义格式class 派生类类名 :

2021-04-27 16:59:56 183

原创 Linux多线程(中)——线程安全

目录概念线程互斥抢票代码举例互斥量概念互斥量操作抢票代码改进死锁概念产生的四个必要条件预防死锁避免死锁线程同步条件变量条件变量操作一个厨师与一个顾客的例子多个厨师与多个顾客的例子生产者与消费者模型介绍实现信号量基本概念接口认识举例信号量与条件变量区别概念线程安全:描述的是进程中的线程对临界资源的访问操作是否是安全的;临界资源:多线程执行流共享的资源就叫做临界资源;临界区:每个线程内部,访问临界资源的代码,就叫做临界区;原子性(后面讨论如何实现):不会被任何调度机制打断的操作,该操作只有两种状态,

2021-04-24 10:12:47 400 1

原创 Linux多线程(上)——概念与操作

目录线程概念基本概念多线程优缺点多线程用途Linux 进程 VS 线程进程与线程进程中多线程的共享进程与线程关系图线程控制编译问题创建线程线程创建函数线程ID退出线程线程等待线程分离线程概念基本概念概念:借助进程理解线程:线程是进程中的一条执行流程,在 Linux 下线程是由 pcb 来实现的,相较于我们之前所学的进程 pcb 而言,线程 pcb 更加轻量化,因此 Linux 下的线程被称之为轻量级进程;一切进程至少都有一个执行线程,这些线程在进程地址空间内运行,共享了进程的大部分资源,将进程

2021-04-23 11:46:58 127

原创 C++的I/O流

目录C语言的输入输出流是什么C++中I/O流标准I/O流文件I/O流`stringstream`简单介绍C语言中整型转为字符型C++中整型转为字符型C语言的输入输出C 语言中我们用到的最频繁的输入输出方式就是scanf()与printf():scanf():从标准输入设备(键盘)读取数据,并将值存放在变量中;printf():将指定的文字 / 字符串输出到标准输出设备(屏幕),注意宽度输出和精度输出的控制;C 语言借助了相应的缓冲区来进行输入与输出,如下图所示:对输入输出缓冲区的理解:

2021-04-19 18:06:47 203

原创 模板进阶

目录非类型模板参数模板的特化概念函数模板特化非类型模板参数类类型形参:出现在模板参数列表中,跟在class或者typename之后的参数类型名称;非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用;// 定义一个模板类型的静态数组template<class T, size_t N = 10>class array{public: T& operator[](size_t index){return _array[ind

2021-04-19 15:43:43 111

原创 容器——stack和queue

目录容器适配器容器适配器

2021-04-13 11:52:30 371

原创 priority_queue容器简单模拟实现

第一次尝试

2021-04-13 11:51:33 53

原创 stack与queue容器简单功能模拟实现

第一次尝试

2021-04-13 09:11:35 61

原创 list容器简单功能模拟实现

第一次尝试

2021-04-11 16:25:37 109

原创 容器——list

目录

2021-04-11 16:24:14 370 1

原创 进程信号

kill -l:显示系统中所有的信号;jobs:显示当前作业信息;fg 数字:继续运行某个暂停的进程,这个数字是使用jobs命令显示出来的作业前面的数字序号;kill pid:杀死某个进程;停止的进程是不会处理发送过来的信号的,等到运行了才会处理发送过来的信号;kill -9 pid:强制杀死,除了僵尸进程,其他都能杀死;僵尸进程是杀不死的,因为它本身就已经死了;...

2021-04-10 17:24:42 142

空空如也

空空如也

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

TA关注的人

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