自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MYSQL 使用C语言链接

做一下准备工作。我们创建了需要的用户和数据库,接下来我们需要下载mysql链接c语言的库。apt install libmysqlclient-dev -y 通过这个语句安装一下我们就可以使用了。就在这个目录下的mysql.h中。连上服务器只要这个代码能跑就没问题。

2026-05-24 19:37:11 422

原创 mysql视图和用户管理

视图视图视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。

2026-05-24 15:35:56 361

原创 MYSQL事务

事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部 失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的 数据是不相同的。事务就是要做的或所做的事情,主要用于处理操作量大,复杂度高的数据。假设一种场景:你毕业了, 学校的教务系统后台 MySQL中,不在需要你的数据,要删除你的所有信息一般不会:) ),那么要删除你的 基本信息(姓名,电话,籍贯等。

2026-05-23 17:00:37 404

原创 MYSQL索引

索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行 正确的 create index,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以它的价值,在于提高一个海量数据的检索速度。常见索引分为:主键索引唯一索引(unique)普通索引(index)全文索引解决中子文索引问题。我们看一下我们不加索引查找的效率。begin。

2026-05-18 13:40:42 409

原创 MYSQL的基本查询

就是插入相同的东西,你就想插入,你就可以使用后面的语句把前面的替换了。这时候是没有发生冲突,跟插入语句差不多。此时出现了2行受到影响,此时说明冲突了。是先删除原来的,然后再删除。

2026-05-16 16:58:36 418

原创 MYSQL表的约束

意思就是说,如果你设置了NOT NULL,并且没有设置默认值此时你就不能跳过这一行,必须插入数据,这个约束的是客户忽略这一列的插入时候的报错,这个NOT NULL是约束用户必须插入合法的数据,不能插入空值,一个是忽略的时候,一个是实际的插入的时候,二者互补。我们的class表中,我们想删除1号班级,此时报错了,因为你的1号班级中还存在学生,肯定不能删除啊,所以此时就报错了,但是下面你只要把这个学生从学生表中删除使得一号班机没有人了,此时才能删除,这两张表互相约束。这个属性,括号内的数字是毫无意义的。

2026-05-15 15:57:37 695

原创 MySQL数据类型

测试一下范围我们发现插入-129超过范围了,此时就报错了。我们C/C++使用的时候,这个char a = 1234567 不会报错,但是我们的MySQL在使用的时候,就会被拦截了,这就导致我们程序员必须正确的插入数据。

2026-05-15 13:03:30 361

原创 库的操作和表的操作

四种指定对应的编码的格式。不区分大小写创建一个数据库,校验规则使用不区分大小写。use test1;

2026-05-12 17:07:21 491

原创 Mysql

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

2026-05-12 15:04:17 372

原创 五种IO模型与⾮阻塞IO

我们read/recv 读的时候,本质就是IO,就是等+拷贝,不就是需要等待我们有人写入内容吗,有内容就从就收缓冲区中拷贝下来,我们之前也讲过。等就是等待IO条件就绪,读事件就绪->接收缓冲区中有数据,写事件就绪就是tcp发送缓冲区中有空间。什么叫做高效的IO呢??单位时间内可以拷贝更多的数据。本质就是减少等待的时间。比如举个钓鱼的例子,你怎么判断一个人钓鱼是否厉害呢??就是相同时间内钓的鱼更多吗,此时你不就认为它钓鱼很厉害吗。他为什么钓鱼厉害呢?因为它打窝打得好,前提条件准备的好。

2026-04-28 16:40:27 424

原创 NAT、代理服务、内⽹穿透

NAT IP转换过程NAT技术背景之前我们讨论了, IPv4协议中, IP地址数量不充⾜的问题NAT技术当前解决IP地址不够⽤的主要⼿段, 是路由器的⼀个重要功能;NAT能够将私有IP对外通信时转为全局IP. 也就是就是⼀种将私有IP和全局IP相互转化的技术⽅法:很多学校, 家庭, 公司内部采⽤每个终端设置私有IP, ⽽在路由器或必要的服务器上设置全局IP;全局IP要求唯⼀, 但是私有IP不需要;在不同的局域⽹中出现相同的私有IP是完全不影响的;NAT IP转换过程。

2026-04-26 20:04:51 543

原创 数据链路层

在讲这个之前思考两个问题。你为什么要把数据交给路由器F??是因为我们的IP报文和目的IP不在一个子网内,需要跨子网通信,由目的网络的网络号决定的。你怎么把数据交给路由器F??这个就是我们这里要讲的东西了。网络层是解决你为什么要交给路由器的,而数据链路层是解决你如何给它的。以太⽹帧格式以太⽹的帧格式如下所⽰:mac帧如何做到解包??固定长度报头,如何分用?帧类型,2位表示,通过它的类型交给上层协议。认识MAC地址MAC地址⽤来识别数据链路层中相连的节点;

2026-04-26 17:05:58 363

原创 ⽹络层11

⽹络层。

2026-04-26 15:10:35 448

原创 传输层协议UDP和TCP

为什么要三次握手呢??答案是是建立连接最快的方式。FIN标志位:通知对方,本端要结束了,我们称携带FIN标识的为结束报文段。就是我客户端要和你断开连接,就是我客户端把FIN置为1,服务器看到了,知道了你要和我断开连接啊,我服务器给你发送ACK标识我收到了,然后服务器再给我发送FIN,我客户端在发送ACK。这叫做四次挥手。你客户端和我断开连接的时候恰恰我服务器也要和你断开连接,此时我ACK确认了并且FIN直接捎带应答给你发送FIN,然后客户端在发送ACK表示收到,此时也可以是三次挥手,这种情况太少了。

2026-04-25 16:27:21 483

原创 应用层Http协议

HTTP协议HTTP协议虽然我们说, 应⽤层协议是我们程序猿⾃⼰定的. 但实际上, 已经有⼤佬们定义了⼀些现成的, ⼜⾮常好⽤的应⽤层协议, 供我们直接参考使⽤. HTTP(超⽂本传输协议)就是其中之⼀。在互联⽹世界中,HTTP(HyperText Transfer Protocol,超⽂本传输协议)是⼀个⾄关重要的协议。它定义了客⼾端(如浏览器)与服务器之间如何通信,以交换或传输超⽂本(如HTML⽂档)。HTTP协议是客⼾端与服务器之间通信的基础。

2026-04-24 14:11:45 370

原创 应用层的协议

我们定义了结构体,给了两个数字和符号,C通过这个结构体发送给S,S通过拿这个结构体去解析C发过来的东西。这种方法是可以的。但是是在不同OS内核间使用这种方案。但是不是很好。比如你的电脑和手机发送,但是存在几个问题:1.内存对齐 2.大小端问题 3.跨语言问题 ,通常是这几个问题很重要,因为手机和电脑端的系统什么的都可能不同,此时就会考虑上面的几个问题了。编译器为了CPU 访存效率,会自动在结构体成员之间塞空白字节。不同编译器、编译选项、平台,填充规则完全不一样x86:小端。

2026-04-22 14:37:50 354

原创 网络基础概念

一. 计算机⽹络背景一. 计算机⽹络背景⽹络发展独⽴模式: 计算机之间相互独⽴;⽹络互联: 多台计算机连接在⼀起, 完成数据共享。局域⽹LAN: 计算机数量更多了, 通过交换机和路由器连接在⼀起;⼴域⽹WAN: 将远隔千⾥的计算机都连在⼀起;所谓 "局域⽹" 和 "⼴域⽹" 只是⼀个相对的概念. ⽐如, 我们有 "天朝特⾊" 的⼴域⽹, 也可以看做⼀个⽐ 较⼤的局域⽹。初始协议。

2026-04-17 18:19:51 449

原创 线程的同步和互斥

互斥量mutex进程线程间的互斥相关背景概念共享资源临界资源:多线程执⾏流被保护的共享的资源就叫做临界资源临界区:每个线程内部,访问临界资源的代码,就叫做临界区互斥:任何时刻,互斥保证有且只有⼀个执⾏流进⼊临界区,访问临界资源,通常对临界资源起保护作⽤原⼦性(后⾯讨论如何实现):不会被任何调度机制打断的操作,该操作只有两态,要么完成,要么未完成。

2026-04-09 18:30:23 409

原创 进程间通信(vscode)

这个数组本身不占用结构体内存空间,仅作为一个。

2026-04-08 18:59:39 378

原创 Linux线程

页表构建映射关系,是按照字节映射的吗? 当然不是了。 看这个图中我们的计算,如果我们有4GB的空间,此时如果按照字节映射,此时需要4GB=4*1024*1024*1024个地址来存放,一个地址又占四个字节物理和虚拟映射需要2倍的空间,所以就需要8*4GB=32GB空间来物理地址来存放这块虚拟地址了,这还是一个进程的,当然不可能是这样子了。 以32位计算机为例。 其实都是按照4KB的形式进行的4KB的映射或者刷新也是4KB。

2026-04-08 12:04:01 412

原创 Linux进程信号

举得几个现实生活中的例子。没有信号的时候,我们就知道信号产生了,该怎么处理!就是比如红灯干什么绿灯干什么即使他没有产生这个信号你也可以知道该干什么。信号的作用就是传递信息的,信号是异步产生的。什么叫异步呢?比如我在上课,我的快递刚到,此时我没有这个书无法讲,此时只能等到一个同学把书给你拿回来,此时只有等这个同学回来才能开始这叫同步,这个同学拿书的时候,此时你继续上课,不等他,此时就叫做异步。信号到来的时候,我们可能正在做更重要的事情,所以信号处理的过程可能不是立即处理的。

2026-03-31 19:00:48 445

原创 动静态库详细版

我们只需要把这两个东西告诉他就行了,-L.就是告诉编译器是在当前目录下的,我们的-l就是告诉编译器是哪个静态库的,myc就是去掉前缀和后缀后的静态库的简写。我们的静态库的代码会合并到可执行程序的,此时你就算此时你就算把静态库删除了也是可以正常运行的,一旦形成可执行程序就不再依赖于静态库了。我们的file命令能查看可执行程序的链接类型。但是现在又存在了一个问题,我们使用c语言库的时候为什么直接通过gcc可以直接编译的呢?也不用告诉编译器库的路径和库命呢?

2026-03-20 09:59:44 384

原创 文件操作()

理解"⽂件"

2026-03-15 18:21:25 413

原创 进程控制(很详细)

fork常规⽤法。

2026-02-04 13:53:30 1041

原创 进程概念 (两万多字超级详细版)

进程得到某种资源的先后顺序,这个是很好理解的。优先级vs权限权限是我们能不能做某种事情,而优先级是我们能做了,只是先后顺序的问题。为什么会存在优先级呢?就是资源少,进程多。Linux优先级是怎么做的?大部分进程都是竞争cpu资源。我们看一下优先级。通过这个代码。通过ps -al这个命令来看我们的优先级。这个PRI就是我们的优先级,数字越小表明越靠前。那NI呢?就是我们所要说的nice值了,其表⽰进程可被执⾏的优先级的修正数值。

2025-12-11 17:39:35 601

原创 基础的开发工具

一.软件包管理器学习⽬标•学习yum⼯具,进⾏软件安装•掌握vim编辑器使⽤,学会vim的简单配置•掌握gcc/g++编译器的使⽤,并了解其过程,原理•掌握简单的Makefile编写,了解其运⾏思想•编写⾃⼰的第⼀个Linux 程序:进度条•学习 git 命令⾏的简单操作, 能够将代码上传到 Github 上•掌握简单gdb使⽤于调试一.软件包管理器1-1 什么是软件包在Linux下安装软件, ⼀个通常的办法是下载到程序的源代码, 并进⾏编译, 得到可执⾏程序.

2025-12-04 19:46:00 542

原创 初始Lunix(指令部分)

一.Linux下基本指令一.Linux下基本指令1.1 ls命令语法:ls [选项] [⽬录或⽂件功能:对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。常⽤选项:•-a 列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。•-d 将⽬录像⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。如:ls ‒d 指定⽬录•-i 输出⽂件的 i 节点的索引信息。如 ls ‒ai 指定⽂件•-k 以 k 字节的形式表⽰⽂件的⼤⼩。ls ‒alk 指定⽂件•。

2025-11-27 17:31:54 1034

原创 智能指针的使⽤及其原理

我们想到赋值,可能就会这样直接写一个赋值,就是把你=右边的_ptr和pcount都给我然后再++即可,这样是错误的,因为你赋值是给一个已经存在的对象赋值的,所以,你需要赋值的这个对象可能就他自己指向一块空间,此时你让它指向别处,此时不就出现内存 泄漏了吗,所以还要判断一下。我们这样设计一下,就是使用一下指针,开辟一块空间只存放我们的这个引用计数的值,每次创建一个对象,就开辟一个空间存放它的值,如果你通过拷贝构造创建对象的话,此时就让我的这个引用计数这个指针指向你的引用计数指针的那块地址,然后再++即可。

2025-11-20 20:43:01 769

原创 c++异常

一.异常的概念及使⽤一.异常的概念及使⽤1.1异常的概念异常处理机制允许程序中独⽴开发的部分能够在运⾏时就出现的问题进⾏通信并做出相应的处理,异常使得我们能够将问题的检测与解决问题的过程分开,程序的⼀部分负责检测问题的出现,然后解决问题的任务传递给程序的另⼀部分,检测环节⽆须知道问题的处理模块的所有细节。C语⾔主要通过错误码的形式处理错误,错误码本质就是对错误信息进⾏分类编号,拿到错误码以后还要去查询错误信息,⽐较⿇烦。异常时抛出⼀个对象,这个对象可以函数更全⾯的各种信息。1.2。

2025-11-19 21:26:06 780

原创 c++11(两万多字详细版)

(比如最后一轮调用。

2025-11-19 19:20:30 1190

原创 ⽤哈希表封装myunordered_map和myunordered_set

一.源码及框架分析一.源码及框架分析SGI-STL30版本源代码中没有unordered_map和unordered_set,SGI-STL30版本是C++11之前的STL版本,这两个容器是C++11之后才更新的。但是SGI-STL30实现了哈希表,只容器的名字是hash_map和hash_set,他是作为⾮标准的容器出现的,⾮标准是指⾮C++标准规定必须实现的,源代码在hash_map/hash_set/stl_hash_map/stl_hash_set/stl_hashtable.h中。

2025-11-11 15:15:48 657

原创 哈希表(链地址法)

链地址法。

2025-11-10 08:30:00 669

原创 哈希表的实现

一.哈希概念一.哈希概念哈希(hash)⼜称散列,是⼀种组织数据的⽅式。从译名来看,有散乱排列的意思。本质就是通过哈希 函数把关键字Key跟存储位置建⽴⼀个映射关系,查找时通过这个哈希函数计算出Key存储的位置,进⾏快速查找。1.1直接定址法当关键字的范围⽐较集中时,直接定址法就是⾮常简单⾼效的⽅法,⽐如⼀组关键字都在[0,99]之间, 那么我们开⼀个100个数的数组,每个关键字的值直接就是存储位置的下标。

2025-11-09 09:00:00 808

原创 unordered_map和unordered_set的使用

一.unordered_map和unordered_set在我们讲Hash之前,我们先来看一下unordered_map和unordered_set的使⽤。一.unordered_map和unordered_set我们这个我们重点讲一下和map和set的区别。1.1unordered_set类的介绍unordered_set的声明如下,Key就是unordered_set底层关键字的类型unordered_set默认要求Key⽀持转换为整形,如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现⽀。

2025-11-08 14:31:06 586

原创 封装红⿊树实现mymap和myset

二.模拟实现map和set一.源码及框架分析SGI-STL30版本源代码,map和set的源代码在map/set/stl_map.h/stl_set.h/stl_tree.h等⼏个头⽂件中。map和set的实现结构框架核⼼部分截取出来如下:这是我们截取的几个比较重要的代码,图中看着很麻烦,我们先简化一下,删去一些没有用的东西。这是我们简化之后的图片。通过上图对框架的分析,我们可以看到源码中rb_tree⽤了⼀个巧妙的泛型思想实现,rb_tree是实。

2025-11-05 15:22:32 959

原创 红⿊树实现

红⿊树的概念。

2025-10-23 21:35:20 864

原创 AVL树的实现

二.AVL树的实现一.AVL的概念AVL树是最先发明的⾃平衡⼆叉查找树,AVL是⼀颗空树,或者具备下列性质的⼆叉搜索树:它的 左右⼦树都是AVL树,且左右⼦树的⾼度差的绝对值不超过1。AVL树是⼀颗⾼度平衡搜索⼆叉树,通过控制⾼度差去控制平衡。•AVL树得名于它的发明者G. M. Adelson-Velsky和E. M. Landis是两个前苏联的科学家,他们在1962年的论⽂《An algorithm for the organization of information》中发表了它。•。

2025-05-22 20:56:12 985

原创 map和set的使用(c++)

序列式容器和关联式容器。

2025-05-21 15:24:59 900

原创 ⼆叉搜索树 ( 代码实现 c++ )

⼆叉搜索树的性能分析一.⼆叉搜索树的概念⼆叉搜索树⼜称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树:若它的左⼦树不为空,则左⼦树上所有结点的值都⼩于等于根结点的值若它的右⼦树不为空,则右⼦树上所有结点的值都⼤于等于根结点的值它的左右⼦树也分别为⼆叉搜索树。

2025-05-14 19:24:02 867

原创 多态(c++详细版)

多态。

2025-05-08 16:46:06 1500

空空如也

空空如也

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

TA关注的人

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