自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [数据库]基本数据类型

当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532 / 3 = 21844因为utf中,一个字符占用3个字节,如果编码是gbk,varchar(n)的参数n最大是65532 / 2 = 32766,因为gbk中,一个字符占用2字节。

2023-02-12 22:24:41 392 1

原创 [数据库]表的增删改查

不同的存储引擎,创建表的文件不一样。例如MyISAM ,在数据目中有三个不同的文件,分别是:users.frm:表结构users.MYD:表数据users.MYI:表索引

2023-02-11 19:31:58 806 2

原创 [数据库]库的增删改查

当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ ci。

2023-02-10 19:35:35 796 3

原创 [数据库]初识数据库

存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便数据库存储介质磁盘内存。

2023-02-09 19:35:48 511 1

原创 [计算机网络]IP协议

IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。...

2022-08-26 23:32:27 792 9

原创 [计算机网络]HTTP、UDP、TCP协议

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出,而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。...

2022-08-17 21:33:14 11699 11

原创 [计算机网络]套接字编程

所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口...............

2022-08-10 21:53:47 1041 7

原创 [计算机网络]网络基础

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

2022-08-08 21:39:23 1416 3

原创 C++智能指针

智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count)。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象的指针指向同一对象。

2022-08-06 00:20:13 540 7

原创 C++异常

异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。

2022-08-05 00:01:01 159 9

原创 C++11

在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于TC1主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++1

2022-08-03 23:31:51 341 7

原创 数据结构进阶---哈希

顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O( log_2Nlog 2​ N),搜索的效率取决于搜索过程中元素的比较次数。理想的搜索方法:可以不经过任何比较,一次直接从表中得到要搜索的元素。 如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。...

2022-07-19 22:19:34 344 5

原创 C++标准模板库STL---map、set容器

在之前我们已经接触过STL中的部分容器,比如:vector、list、queue等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身。那什么是关联式容器?关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是结构的键值对,在数据检索时比序列式容器效率更高。

2022-05-27 09:24:49 385 8

原创 [Linux]线程池

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

2022-05-25 21:16:17 226 4

原创 数据结构进阶--二叉搜索树

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树。

2022-05-23 22:22:26 576 15

原创 [Linux]多线程

在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化。透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。

2022-05-19 23:12:57 1176 14

原创 [Linux]信号

我们首先要明确的是信号和信号量是完全不同的两个概念,他们没有关系,只是名字很像而已。信号我们很好理解,就是字面意思。比如你正在上某节课时,突然一声"TiMi~~",这个时候你就明白有人上号了,这里的"TiMi"就是一种信号。

2022-05-13 16:06:19 616 12

原创 Linux进程间通信

在系统中,进程之间可能会存在特定的协同工作的场景。一个进程要把自己的数据交付给另一个进程,让其进行处理。两个进程要互相通信其实并不容易,因为进程具有独立性,想要通信必须先看到一份公共资源(一段内存),而这个资源不可能属于任何一个进程,这样就违背独立原则,而是由操作系统管理,所以进程间通信的本质:其实是由OS参与,提供一份所有通信进程都能看到的公共资源。

2022-05-04 22:57:29 1774 19

原创 [Linux]基础IO

不管你要输入还要输出,最终都是访问硬件:显示器、键盘、文件(磁盘)。而硬件是由操作系统管理的,所有语言上对文件的操作,都必须贯穿操作系统,访问操作系统,需要通过系统调用接口,所以几乎所有语言的fopen、fclose、fread等底层一定需要使用OS提供的系统调用。

2022-04-25 23:28:51 2260 17

原创 C++多态

多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。

2022-04-15 21:40:58 1216 13

原创 C++继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。

2022-04-08 20:35:57 182 16

原创 [Linux]进程控制

在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。

2022-04-05 23:13:43 1539 28

原创 C++标准模板库STL--stack、queue、priority_queue

1.stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。2.stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。3.stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下 操作:empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作

2022-04-01 22:00:31 957 2

原创 C++模板进阶

模板参数分为类型形参与非类型形参。类型形参即出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形即用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。

2022-03-30 20:17:40 1436 7

原创 C++标准模板库STL--list

1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。4. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率 更好。

2022-03-28 19:51:55 1050 18

原创 [Linux]进程虚拟地址空间

为什么要有地址空间?1.通过添加一层软件层,完成有效的对进程操作内存进行风险管理(权限管理),本质目的是为了保护物理内存以及各个进程的数据安全。2.将内存申请和内存使用的概念在时间上划分清楚,通过虚拟地址空间,来屏蔽底层申请内存的过程,达到进程读写内存和OS进行内存管理操作,进行软件上面的分离。3.站在CPU和应用层的角度,进程统一可以看做统一使用4GB空间,而且每个空间区域的相对位置,是比较确定的。

2022-03-22 17:51:16 863 9

原创 C++标准模板库STL---vector

vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。...

2022-03-18 22:53:39 1276 3

原创 [Linux]进程

课本概念:程序的一个执行实例,正在执行的程序等。(简单来说就是加载到内存的程序,就叫进程)内核观点:担当分配系统资源(CPU时间,内存)的实体。

2022-03-16 21:19:14 395 17

原创 [Linux]常见环境开发工具

在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包>(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的>软件包, 直接进行安装.软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, R

2022-03-11 23:20:34 11971 14

原创 C++标准模板库STL---string类

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

2022-03-06 17:31:41 1360 13

原创 C++模板初阶

编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。

2022-03-02 16:42:38 149 11

原创 室友打了局排位,我理解了C++动态内存管理

C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力而且使用起来比较麻烦,因此C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理。

2022-03-01 16:20:58 1388 9

原创 [Linux]深入理解权限

Linux下有两种用户:超级用户(root)、普通用户。超级用户:可以再linux系统下做任何事情,不受限制普通用户:在linux下做有限的事情

2022-02-20 22:09:48 978 6

原创 初识Linux

Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操作系统内核本身,但通常采用“Linux内核”来表达该意思。而Linux则常用来指基于Linux内核的完整操作系统,它包括GUI组件和许多其他实用工具。

2022-02-18 23:10:41 1573 11

原创 学完类和对象,我写了一个日期类

本次我们设计的日期类大致要实现日期大小的判断、日期的加减、日期的输入输出、日期对应星期几。这将把我们前面类和对象中所学的知识点运用起来,让我们对类和对象有一个更深的理解。

2022-02-13 21:34:12 896 14

原创 数据结构--排序之计数排序 + 排序总结

思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤:1.统计相同元素出现次数2.根据统计的结果将序列回收到原来的序列中

2022-02-10 23:16:44 826

原创 数据结构--排序之快速排序

快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。快排每一趟都会有一个元素回到它真正的位置。

2022-02-08 20:19:24 7388 10

原创 数据结构--排序之归并排序

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

2022-02-06 23:51:44 666 10

原创 数据结构--排序之堆排序

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

2022-02-04 23:14:50 721 4

原创 数据结构--排序之希尔排序

希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工作。当到达=1时,所有记录在统一组内排好序。

2022-02-03 23:32:09 3135 12

数据结构教程(第5版)李春葆等

此压缩文件包含数据结构教程(第5版)李春葆这本书的教学PPT,可供大家自学使用,PPT内通过图文结合方式将晦涩难懂的知识剖析的非常彻底,让广大计算机学子更容易入门。

2023-03-28

数据结构2020b1.pdf

数据结构试卷

2023-03-28

数据结构期末考试试卷(包含答案)

附有一套数据结构的期末考试卷,包括试题和答案,适用于期末突击考试的大学生。

2023-03-08

空空如也

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

TA关注的人

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