自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL——通过C语言连接

MySQL使用C语言连接

2023-05-13 00:24:51 1167 1

原创 3.docker—应用部署MySQL

docker中mysql部署

2023-05-08 21:40:29 383

原创 2.docker—数据卷操作

docker数据卷的基本操作

2023-05-08 21:28:14 527

原创 1.docker—相关命令

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低

2023-05-08 21:14:17 49

原创 单链表的运用(双指针)

双指针

2023-03-08 11:38:37 194

原创 MySQL——复合查询+表的内外连接

关于复合查询的一些高级复杂SQL语句

2023-03-04 17:04:59 794

原创 二叉树的层序遍历

关于二叉树的层序遍历问题

2023-03-04 17:02:16 79

原创 位运算相关

关于一些位运算的题

2023-03-04 16:56:49 393

原创 二分算法题

关于二分的算法题

2023-03-01 17:48:13 643 1

原创 链表的算法题

关于链表的题

2023-02-26 10:52:29 59

原创 栈和队列的算法题

关于栈和队列的算法题

2023-02-26 10:48:27 94

原创 C++智能指针

智能指针本质就是一个类模板,它可以创建任意的类型的指针对象,当智能指针对象使用完后,对象就会自动调用析构函数去释放该指针所指向的空间

2023-02-08 20:38:03 367

原创 MySQL——事务管理

事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。

2023-02-08 20:35:42 436

原创 MySQL——内置函数

常见的SQL操作的函数

2022-12-13 09:29:39 415

原创 MySQL——表的内容增删查改

表中最为基本的操作,就是对于表内容的增删改查,其中查找是最为重要的操作,贯穿整个数据库的学习!

2022-12-08 14:04:46 544 3

原创 MySQL——表的约束

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束很多,这里主要介绍如下几个:,, , ,,,。案例:创建一个班级表,包含班级名和班级所在的教室。站在正常的业务逻辑中:所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。这就是“约束”。所以设置了not null,这些字段必须有值,不能为空或者不填。默认值:某一种数据会经常性的出现某

2022-12-05 19:20:12 617 1

原创 C++异常

传统的错误处理机制:实际中C语言基本都是使用返回错误码的方式处理错误,部分情况下使用终止程序处理非常严重的错误。异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。如果有一个块抛出一个异常,捕获异常的方法会使用 try 和 catch 关键字。try 块中放置可能抛出异常的代码,try 块中的代码被称为保护代码。使用 try/catch 语句的语法如下所示:三、异常的使用3.1 异常的抛出和捕获异常的抛出和匹配原则:第一点:第二点:调用

2022-12-03 15:26:50 260 2

原创 MySQL——数据类型

数据类型本质也是一种约束,一旦不满足约束条件,就不让插入。这种约束给数据表中的数据,提供极大确定性!

2022-11-27 20:14:10 454 1

原创 MySQL——数据库、表的操作

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。我们可以对于某表的结构、字段名字、字段大小、字段类型等等作后续修改,但是强烈不建议修改,在创建的时候最好声明定义好表的结构。:只能有after,没有before的说法!下的文件,我们是不用带上默认选项的,他会自动默认使用字符集。说明:对于数据库的修改主要是指修改数据库的字符集、校验规则。对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。:删除的时候,如果某列有数据的,那么数据也会没有。

2022-11-19 12:30:24 3745 8

原创 MySQL——数据库基础

综上数据库就是一款软件,且是一款服务器软件,让我们不用自己去维护文件,而是通过数据库,让这个软件替我们去维护,使用SQL语句,通过客户端向服务器发起SQL请求,服务器收到客户端的请求,根据客户端的需求对数据进行增删查改操作。从网络的角度看mysql或者数据库,它是属于应用层还是其他层次的软件呢?应用层从操作系统角度看mysql是内置的?还是需要安装的呢?需要我们手动安装,底层一定是直接或者间接访问操作系统的文件接口。

2022-11-17 10:19:53 307 2

原创 其他协议+NAT技术+daili服务器

DHCP的客户端和服务器端需要通过广播方式来进行交互,原因是在DHCP执行初期,客户端不知道服务器端的IP地址,而在执行中间,客户端并未被分配IP地址,从而导致两者之间的通信必须采用广播的方式。代理服务器把最近的一些请求或者响应暂存在本地磁盘上,当新的请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按照URL的地址再次去互联网上访问该资源。DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。

2022-11-07 20:26:24 212 3

原创 数据链路层

数据链路层属于计算机网络的底层。局域网虽然是个网络,但是并不把局域网放在网络层中讨论,这是因为在网络层讨论的是多个网络互连的问题,是讨论分组如何从一个网络,通过路由器,转发到另外一个网络上。此篇博客我们研究的是在同一个局域网中,分组是如何从一台主机传送到另一台主机,但是不经过路由器转发。从整个互联网上看,局域网任然属于数据链路层的范围!

2022-11-04 20:10:55 1286 9

原创 网络层——IP协议

网络层主要考虑数据传输的路上问题,在复杂的网络环境中确定一个合适的路径。网络层设计要尽量简单,向上层只提供简单灵活的、无连接的、不保证可靠性的数据报服务。网络层不提供服务质量的承诺!

2022-10-31 17:16:53 4141 8

原创 传输层——UDP+TCP

 从通信和信息处理的角度,传输层向它上面的应用层提供通信服务,它属于面向通信的最高层,同时也是用户功能的最底层。网络层为主机之间的通信提供服务,而运输层则是在网络层的基础之上,为应用进程之间的通信提供服务。其中TCP/IP运输层的两个重要协议:1️⃣用户数据报协议UDP(User Datagram Protocol)2️⃣传输控制协议TCP(Transmission Control Protocol)UDP的主要特点是:1️⃣无连接2️⃣不可靠3️⃣面向报文的4️⃣没有拥塞控制5️⃣支持一对一

2022-10-30 10:32:14 1941 6

原创 应用层——HTTP协议

1️⃣(概念问题)①GET方法叫做——获取,是最常用的方法,默认一般获取所有的网页,都是GET方法,但是如果GET要提交参数(它能提交参数的,不能只看字面意思获取),通过URL来进行参数拼接从而提交给Server端。②POST方法叫做——推送,是提交参数比较常用的方法,但是如果提交参数,一般是通过正文部分提交的,但是你不要忘记,有表示参数的长度。2️⃣(区别)①参数提交的位置不同POST方法比较私密(私密!=安全),不会回显到浏览器的URL输入框!GET。

2022-10-23 11:43:47 1311 3

原创 网络编程套接字

创建socket套接字的过程调用socket(),本质是打开文件——仅仅有系统编程相关的内容。bind() , 本质是ip+port和文件信息进行关联。listen(),本质是设置该socket文件的状态处于被动状态,允许别人来连接我。accept(),获取新链接到应用层,是以fd为代表。read/write,本质就是进行网络通信,但是,对于用户来讲相当于我们在进行正常的文件读写。close(fd),关闭文件。a.系统层面,释放曾经申请的文件资源的结构体、连接资源等。

2022-10-12 15:29:41 1165 4

原创 网络基础入门

同一时刻,可能有多台主机同时向网络总线中发送数据,但是为了保证B主机能把数据发送给G主机,所以此时需要MAC地址来标识,B主机发送的报文中就有MACG地址,所有的主机都能收到该报文,但是经过配对,其余主机都将MACG地址给丢弃,只有G主机能够接收到该报文。最刚刚开始没有网络的时候,各个计算机之间相互独立,如果需要完成某项任务,几台计算机协同工作时,必须等待前一个计算机数据处理完成,交付给后一个计算机再进行数据处理,以此类推,完成最终的任务!它是一个软件,贯穿体系结构的TCP/IP属于操作系统的一部分。

2022-10-10 17:25:08 6016 2

原创 C++11(六)线程库

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

2022-10-06 19:13:39 1861 3

原创 C++11(五)Lambda表达式+包装器

如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法。如果待排序元素为自定义类型,需要用户定义排序时的比较规则:随着C++语法的发展,人们开始觉得上面的写法太复杂了,每次为了实现一个algorithm算法,都要重新去写一个类,如果每次比较的逻辑不一样,还要去实现多个类,特别是相同类的命名,这些都给编程者带来了极大的不便。因此,在C++11语法中出现了Lambda表达式。上述代码就是使用C++11中的lambda表达式来解决Lambda表达式也可以叫做匿名函数书写格式:注意:在lam

2022-10-05 19:33:26 368

原创 C++11(四)可变参数模板

由于是逗号表达式,在创建数组的过程中会先执行逗号表达式前面的部分printarg(args)打印出参数,也就是说在构造int数组的过程中就将参数包展开了,这个数组的目的纯粹是为了在数组构造的过程展开参数包。我们无法直接获取参数包args中的每个参数的,只能通过展开参数包的方式来获取参数包中的每个参数,这是使用可变模版参数的一个主要特点,也是最大的难点,即如何展开可变模版参数。的函数模板和类模板,相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。

2022-10-05 18:08:19 1179

原创 C++11(三)新的类功能

此处我们写了带参数的构造函数,编译器局不会再生产默认构造函数了,对于我们想要生产空构造的对象无能为力,所以C++11中新增了default关键字,强制生成默认函数。对于内置类型成员会执行逐成员按字节拷贝,自定义类型成员,则需要看这个成员是否实现移动构造。对于内置类型成员会执行逐成员按字节拷贝,自定义类型成员,则需要看这个成员是否实现移动赋值。但是我这样要操作只是让类外不能拷贝,但是,类内还是可以拷贝。C++98中,想要A类不允许拷贝,将构造函数设为私有。在C++11中新增了2个默认成员函数。

2022-10-01 20:16:19 457

原创 C++11(二)右值引用与移动语义+完美转发

左值是一个表示数据的表达式(如变量名或解引用的指针),我们可以获取它的地址+可以对它赋值,左值可以出现在赋值符号的左边,右值不能出现在赋值符号左边。定义时const修饰符后的左值,不能给他赋值,但是可以取它的地址。左值引用就是给左值的引用,给左值取别名。// 以下的p、*p、b、c 都是左值 int * p = new int(0);* p = 20;// const很特殊 // 以下几个是对上面左值的左值引用 int * & rp = p;return 0;}

2022-09-28 15:58:13 647 2

原创 C++11(一)新的标准

在C++98中auto是一个存储类型的说明符,表明变量是局部自动存储类型,但是局部域中定义局部的变量默认就是自动存储类型,所以auto就没什么价值了。我们之前学习类和对象时知道,单参的构造函数具有隐式类型转换的作用,但是我们有些时候,不想让他进行隐式类型转化。支持的原理:新增了一个构造函数(list,map,set等等都新增了这个构造函数,原理也是一样的)C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的。这样要求必须进行显示初始化,让编译器将定义对象的类型设置为初始化值的类型。

2022-09-28 15:39:02 497

原创 AVL树(C++实现)

但是如果要对AVL树做一些结构修改的操作,性能非常低下,比如:插入时要维护其绝对平衡,旋转的次数比较多,更差的是在删除时,有可能一直要让旋转持续到根的位置。因为AVL树也是二叉搜索树,可按照二叉搜索树的方式将节点删除,然后再更新平衡因子,只不过与删除不同的是,删除节点后的平衡因子更新,最差情况下一直要调整到根节点的位置。AVL树是一棵绝对平衡的二叉搜索树,其要求每个节点的左右子树高度差的绝对值都不超过1,这样可以保证查询时高效的时间复杂度,即log。如果是子树,可能是某个节点的左子树,也可能是右子树。

2022-09-16 16:02:46 325

原创 Linux单例模式

单例模式是一种“经典的、常用的、常考的”设计模式。IT行业这么火,涌入的人很多。俗话说林子大了啥鸟都有,大佬和菜鸡们两极分化的越来越严重,为了让菜鸡们不太拖大佬的后腿,于是大佬们针对一些经典的常见的场景,给定了一些对应的解决方案,这个就是设计模式(也是经验模式)

2022-09-13 21:00:13 307 1

原创 Linux线程池

线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。提前准备好的线程,用来随时处理任务,就称之为线程池!

2022-09-13 15:11:53 171 2

原创 Linux线程的同步与互斥(一) 互斥锁+读写锁

为什么需要同步和互斥?因为多个线程共享地址空间,也就是很多资源都是共享的优点:通信方便缺点:缺乏访问控制线程安全:因为一个线程的操作问题,给其他线程造成了不可控、引起崩溃、异常、逻辑不正确等问题的现象。创建一个函数,它没有线程安全问题的的话,不要使用全局变量、STL、malloc、new等等会在全局有效的数据(会有访问控制的问题)我们之前写的函数为什么没有线程安全问题呢 我们之前所学的都是使用的局部变量!线程都有自己的独立栈结构!互斥同步相关的概念临界资源:凡是被线程共享访问的资源都是

2022-09-12 11:01:16 924

原创 Linux线程控制

Linux支持POSIX多线程接口,称为平thread(POSIX Thread的简称),编写Linux下的多线程应用程序,头文件需要包pthread.h线程创建函数名称pthread_create函数功能创建一个线程头文件#include<pthread.h>函数原型int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void

2022-08-17 10:57:46 358

原创 Linux线程的概念

文章目录线程的概念一、Linux线程的概念重新理解进程内核视角的进程与线程二、Linux线程与接口关系的认识三、线程和进程的共享和私有资源四、线程的优缺点五、线程异常六、线程用途七、验证线程线程的概念一、Linux线程的概念一般教材中线程:是在进程内部运行的一个执行分支(执行流),属于进程的一部分,其粒度要比进程更细和轻量化内部:线程在进程的地址空间内运行执行分支:CPU调度的时候,只看PCB中每一个PCB曾经被指派过的执行方法和数据,CPU可以直接调度进程的一部分:常规操作系统(如Win

2022-08-16 18:24:47 521 2

原创 map和set的使用

比如:现在要建立一个英汉互译的字典,那该字典中必然有英文单词与其对应的中文含义,而且,英文单词与其中文含义是一一对应的关系,即通过该应该单词,在词典中就可以找到与其对应的中文含义。这里统计次数second给的模板参数是int( ),为0,++过后变为1了,所以虽然刚开始新插入的int为0,返回值是value的引用,所以可以统计次数了。这种方法的统计有缺陷,就是第一次会查找该值在不在map中,如果在直接value++,如果不在会进行插入操作,插入时又会进行一次查找操作,不免效率会低一点。...

2022-08-15 22:20:30 375 3

空空如也

空空如也

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

TA关注的人

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