- 博客(33)
- 收藏
- 关注
原创 简单的单表与多表查询
查询一、同时查询多条数据1、正常查找(麻烦)select * from 表 where 字段=“查找字段”……2、使用in查找(快)使用in( 数据1,数据2,……)判断表中谋一个字段是否在in后面的参数列表中。格式:select * from 表 where 需要查找的字段 in (查找内容,……);select * from 表 where 需要查找的字段 not in(查找内容,……) order by asc;并按升序排序二、分组查找1、使用group by 查找格式:
2021-04-13 08:46:55
672
原创 排序与聚合函数与普通函数
排序格式:order by 字段 升序asc/降序desc(默认)数值可以是int,float,也可以是varchar类型(中文不能排序,英文可以)select * from 表 order by 字段 asc/desc升序降序聚合函数注:函数使用select 关键词 :select 函数名(字段) [from 表名]在聚合函数是需要指定表要加表名,在常用函数时,不需要。1、求最大值max(字段)格式:select max(字段) as 别名 from 表名2、求最小值min(
2021-04-13 08:46:04
429
1
原创 数据库基本类型
数据库语言分类1、据库查询语言DQL:对表查询 select.2、数据库定义语言DDL: create database\table ,drop database\table.3、数据库操作语言DML:updata\delete\insert.图结构DDL之操作数据库①添加数据库:create database 库名 [ character set utf8/gbk]; 修改数据的编码:alter database 库名 character set 编码;②删除指定的数据库:dro
2021-04-11 17:17:52
2205
3
原创 数据库的增删改查
数据库的增删改查一、创建数据库1、Create database 库名;Create database myFirstSQL;2、创建库时,指定编码语法Create database 库名Character set 编码名 CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;删除数据库格式:Drop database 库名;Drop database MySQl;先有库再有表。命令行下进入表使用进入指定数据库use 库
2021-04-04 15:50:32
500
1
原创 初识mySQL
MySQL一、数据库什么是数据管理:对数据进行纷类,组织编码,存储,检索和维护。1、数据管理的技术发展:人工管理阶段: (20 世纪50年代,计算机硬件还没达,没洧磁盘,纸袋)文件系统阶段: (20 世纪50年代后期-60年代中期), 出现了磁盘,高级语信,操作系统数据库系统阶段: (20 世纪60年代后期-现在,网络技术的发展,软硬件功能提升,文件系统E经远远不能满足于要求,尤其是关系型数据库。2、数据库系统的概念2.1什么是数据库?按照一定的规则进行存储,管理数据的仓库。2.2什么
2021-04-04 15:29:05
90
原创 C++之函数适配器
函数适配器头文件:functional 系统仿函数和适配器头文件一、定义函数对象适配器是完成一些配接工作,这些配接包括绑定(bind),否定(negate),以及对一般函数或成员函数的修饰,使其成为函数对象。绑定器:bind1st 将参数绑定为二元函数对象的第一个参数。 操作的可调用对象,必须是仿函数bind2nd 将参数绑定为二元函数对象的第二个参数。 操作的可调用对象,必须是仿函数bind 将参数绑定为n元函数对象的,第n个参数。 操作的只要是可调用对象即可求反器: n
2021-03-29 19:51:49
441
原创 C++之仿函数
仿函数一、定义仿函数(Functor)又称为函数对象(Function Object)是一个能行使函数功能的类,仿函数是定义了一个含有operator()成员函数的对象,可以视为一个一般的函数,只不过这个函数功能是在一个类中的运算符operator()中实现,是一个函数对象,它将函数作为参数传递的方式来使用。STL 中也大量涉及到仿函数,有时仿函数的使用是为了函数拥有类的性质,以达到安全传递函数指针、依据函数生成对象、甚至是让函数之间有继承关系、对函数进行运算和操作的效果。比如 STL 中的容器
2021-03-29 18:42:43
2500
原创 C++11/14/17标准
C++11/14/17标准一、强制转换C风格的强制类型转换很简单,均用 Type b = (Type)a 形式转换。但是C风格的类型转换有不少的缺点:万物皆可转,不容易区分;不容易查找代码。因此C++给我们提供了4种类型转换操作符来应对不同场合。类型转换操作符作用static_cast静态类型转换(在编译期),编译器做类型检查,基本类型能转换,指针不能reinterpret_cast重新解释类型const_cast去const属性dynamic_cast
2021-03-19 20:23:22
482
原创 排序算法之选择、插入、希尔、基数、箱排序
排序算法时间复杂度:单位数据 消耗的时间比例 O(n)空间复杂度:单位数据 消耗的固定空间 和临时空间稳定性:数据变化是否导致 时间复杂度变化选择排序选择排序法是在要排序的一组数中,选出最小(或最大)的一个数与第一个位置的数交换;在剩下的数当中找最小的与第二个位置的数交换,即顺序放在已排好序的数列的最后,如此循环,直到全部数据元素排完为止。代码#include <iostream>using namespace std;int main(){ int a[10] = {
2021-03-17 17:29:40
198
原创 磁盘配额与软硬方式链接
磁盘容量配额限制个数(inode),和大小(block)。软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。当系统中已经安装了quota磁盘容量配额服务程序包,但存储设备却默认没有开启对quota的支持,此时需要手动编辑配置文件。在vi /etc/fstab 中加上,uquota,然后重启即可。(在windows还在使用usrquota)或者可以使用mount命令查看是否成功xfs_quota命令xfs_q
2021-03-13 14:25:31
304
原创 Linux挂载硬件与添加交换分区
挂载硬件设备挂载:将硬盘与某个目录做关联的动作。为了能够通过目录使用到相关硬盘资料的效果4.1 mount命令用于挂载文件系统,格式为“mount 设备地址(路径+设备名称) 挂载目录”设备与目录是一一关联的,挂载多个会覆盖上一个挂载 。[root@linuxprobe ~]# mount /dev/sdb2 /backup参数 作用-a 挂载所有在/etc/fstab中定义的文件系统-t 指定文件系统的类型4.2 umount命令用于卸载目录 umount 设备地
2021-03-13 14:25:10
659
原创 LVM磁盘阵列技术
LVM逻辑卷管理器LVM可以允许用户对硬盘资源进行动态调整。可以屏蔽底层的特性,逻辑卷管理器是Linux系统用于对硬盘分区进行管理的一种机制,为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。结构而LVM技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的底层架构和布局,就可以实现对硬盘分区的动态调整。逻辑卷是用卷组
2021-03-13 11:03:42
395
原创 c++之多态
一、多继承拥有多个父类的继承,叫做多继承二义性例子class A{public: int a=4;};class C{public: int a = 2;};class B:public A,public C{public: void s() { //会产生二义性 //cout << a <<a<< endl;错误 cout << A::a <<B::a<< endl; }};
2021-03-12 16:31:50
195
原创 Linux储存结构
Linux储存结构与硬盘在linux中一切皆文件1、文件目录的含义目录名称 应放置文件的内容/boot 开机所需文件—内核、开机菜单以及所需配置文件等/dev 以文件形式存放任何设备与接口/media 用于挂载设备文件的目录/etc 配置文件/root 系统管理员的家目录/home 一般用户的保存路径/bin binary 的缩写,用来保存二进制文件/lib 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
2021-03-11 13:30:03
470
原创 Linux语句
Linux语句注:shell程序中的操作默认都是字符串操作读取参数 ( 类似scanf )read -p “想写的内容” x[ 命令 ]测试语句一、if语句格式:if 条件 ;then 语句elif 条件; then 语句 else 语句 fi //结束标记例子2种二、for格式;for 变量 in 列表 ;do 语句done例子:1、列表2、 读取文件内容输入反引号表示执行里面的命令 还可以$(命令
2021-03-07 13:39:24
140
原创 linux基本命令2
搜索文件位置find / -nmae 文件名/代表万物的起始 /一个一个根目录“.”代表是当前目录“/”代表是根目录行的grep -n 关键词 文件名 {提出文件中含有关键词的行}(加上-n显示行数)tar 压缩编辑https://www.linuxcool.com/tarfile查看文件类型dd 按大小取部分文件If 输入文件Out 输出文件Count 次数Bs 一次的大小, 默认为字节mv 剪切和重命名剪切mv 1.txt 2.txt (将1内容剪
2021-03-05 16:52:58
139
原创 linux命名、vi编辑、shell脚本
一、命令的方式命令就是命令文件实质:在系统中搜索到这个命令所对应的文件,然后去执行这个文件1、以路径的方式(快)例如 /bin/uptime 。。。2、命令别名alias语法:unalias [-a] 别名 =’ ’ ;(测试中,双引号、单引号和反引号没有问题)参数 -a 表示删除全部的别名,可要小心啊1、取别名(注意格式 等号两边没有空格)2、alias查看别名3、删除别名 unalias4、应用(判断是否可以用)alias pp=“systemctl restart
2021-03-05 16:05:57
349
原创 构造函数和析构函数
构造函数和析构函数一、构造函数定义:C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数;构造函数在定义时可以有参数,因此可以 发生重载;没有任何返回类型的声明。构造函数的目的:初始化对象。调用:自动调用(隐式) 一般情况下C++编译器会自动调用构造函数(无参构造)手动调用(显示) 在一些情况下则需要手工调用构造函数(有参构造)构造函数的分类:无参构造函数、有参构造函数、拷贝构造函数、移动构造函数1、无参构造函数直接创建对象即可自动调用注意
2021-03-03 18:34:33
193
1
原创 c++运算符重载
c++运算符重载C++允许在同一作用域中的某一函数和运算符指定多个定义,分别为函数重载和运算符重载。一、运算符重载运算符重载,就是赋予运算符新的含义。和函数重载一样,一个函数名可以用来代表不同功能的函数。实质:调用函数的过程。1.1为什么要进行运算符重载?因为自定义类型不能直接采取运算符操作运算符重载是为了解决类对象之间的运算的,通常的运算符只用于算术运算,如常量int之间,因为编译器已经定义了;而一个类两个对象之间成员进行运算必须重新定义,让编译器在遇到对象运算时能按我们要求的进行运算
2021-03-03 15:21:45
440
原创 c++特殊成员
c++特殊成员一、关键字explicitexplicit关键字:是禁止通过构造函数进行的隐式转换。声明为explicit的构造函数不能在隐式转换中使用。注意:explicit用于修饰构造函数,防止隐式转换。是针对单个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造)而言。造成影响如下图**没加explicit时!**发生隐式转换有加explicit时,无法隐式转换原则上应该在所有的构造函数前加explicit关键字,当你有心利用隐式转换的时候再去解除explicit,这样
2021-03-02 09:35:01
95
原创 c++文件操作
文件操作1、文件的定义和打开ifstream类: 读文件ofstream类: 写文件专类专事(只能进行读或者写)所以我们会使用fstream去操作文件,它时ifstream和ofstream类的父类。定义文件 fstream file;1.打开文件 file.open(char* fileURL,int mode); mode: ios::in 读 ios::out 写(清空重写) ios::app 追加模式 不具有创建功能 ios::trunc:
2021-03-02 08:33:18
171
1
原创 Linux 文件操作
Linux的文件操作 对于Linux来说,万物皆文件。一、文件基本操作:文件描述符fd Linux 系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。fd的类型为int, < 0 为非法值, >=0 为合法值。在linux中,一个进程默认可以打开的文件数为1024个,fd的范围为0~1023。可以通过设置,改变最大
2021-03-01 15:38:25
130
原创 Liunx下C与C++的编译
一、Liunx下C与C++的编译1、编译的流程概念: 预处理--> 编译-->汇编-->链接详细流程: 1、预处理阶段。具体做的事儿如下:(1)将所有的#define删除,并且展开所有的宏定义。说白了就是字符替换(2)处理所有的条件编译指令,#ifdef #ifndef #endif等,就是带#的那些(3)处理#include,将#include指向的文件插入到该行处(4)删除所有注释(5)添加行号和文件标示,这样的在调试和编译出错的时候才知道是是哪个文件的哪一行(
2021-02-28 16:15:15
110
原创 初识liunx,基本命令
一、认识基本命令 linux命令:即shell命令 命令格式:选项 主要目标 次要目标 - 追加选项1、touch 创建文件格式:touch+文件名;例创建文件aaaa;(蓝色的是:目录文件 == 文件夹)注意:如果文件已经存在则修改最终修改时间2、wpd:显示当前工作目录的绝对路径。3、ls : 查看文件默认查看当前工作目录下的文件-a 查看所有的 包括隐藏文件以.开头的就是隐藏文件蓝色的是:目录文件 == 文件夹**-l (文件详细信息输出解析-是
2021-02-27 14:25:49
147
原创 二叉查找树
二叉查找树又称二叉搜索树,二叉排序树。1、二叉搜索树的原理二叉搜索树,可以使用一个链表数据结构来表示,其中每一个结点就是一个对象。每个结点还包含属性lchild、rchild和parent,分别指向结点的左孩子、右孩子和双亲(父结点)。如果某个孩子结点或父结点不存在,则相应属性的值为空(NIL)。根结点是树中唯一父指针为NIL的结点,而叶子结点的孩子结点指针也为NIL。2、二叉搜索树的特点:1、每个数据都是具有唯一的一个关键字。(不能重复)2、比根节点大的关键字,放在右边,小的放在左边。(即:左边
2021-01-30 15:25:08
168
原创 黄金矿工—小游戏
黄金矿工一、游戏思路游戏的核心是如何让钩子动起来、怎么伸缩、怎么抓物品3个部分。1.钩子的转动钩子的转动可以根据角度的变化来决定,我们让起始坐标不变,让钩子的结尾坐标变化,在限定角度的范围即可,求结尾坐标思路过程如下,实现代码在后面2.钩子的伸缩钩子的伸缩:分为两部分:伸和缩。当接收到空格时,伸长,遇到边界与物品时要缩回来。不管伸长还是缩短都与钩子的结尾坐标有关(反正钩子的起始坐标不会变),当按下空格时,要以一定的速度去伸长或者缩回,要注意,当钩子伸长与缩短时,角度要保持不变,所以要设置钩子
2021-01-22 10:53:02
2864
3
原创 字符串与指针
字符串与指针字符指针初始化:把字符串首地址赋给stringchar *string= “I am maye”;相比于数组中的字符串,指针是地址变量,数组是一个地址常量。对于指针来说,要需要进行动态内存开辟。字符数组str存在于栈区,而cp指向的字符串存在于常量区。指针变量cp的值是可以改变的,而数组名str代表一个固定的值(数组首元素的地址),不能改变。字符数组str中各元素的值是可以改变的,但字符指针变量cp指向的字符串常量中的内容是不可以被取代的。strchr、strstr、strl
2021-01-15 15:26:10
877
原创 函数指针
函数指针函数指针,即返回值为指针类型的函数。函数指针:如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。函数指针的定义:函数返回值类型 (* 指针变量名) (函数参数列表);例如**int ( p)( ) ;p先和* 结合,说明p是指针,指针指向的是一个函数,指向的函数无参数,返回值类型为int。1. 函
2021-01-15 15:24:46
90
原创 数组指针与指针数组
一、数组指针数组指针,即是指向数组的指针,数组指针中存放的应该是数组的地址。1. 数组名的区分数组名:数组名就是数组的最大存储单元的首地址,指向第一个元素,所以数组名的类型为元素类型的指针&数组名[0]:第一个元素的首地址,和数组名的值,以及含义都一模一样&数组名:整个数组的首地址,指向的是整个数组,与上面两者值一样,但是含义却不一样2. 一维数组指针的使用数组指针的定义是例如:int(*p)[3]=NULL;int main(){ int(*p)[4] = NULL;
2021-01-14 10:05:45
3420
原创 文件操作
一、文件什么是文件?文件是计算机上以硬盘(外部介质)作为载体的信息集合。什么是流?可以从不同的角度对流进行分类:1 处理的数据单位不同,可分为:字符流,字节流2 数据流方向不同,可分为:输入流,输出流3 功能不同,可分为:节点流,处理流操作系统是以文件为单位对数据进行管理的,输入输出是数据传送的过程,数据如流水一样从一处流向另一处,因此常将输入输出形象地称为流(stream),即输入输出流。C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。一个输
2021-01-09 14:55:41
355
原创 链表——无头链表
创建结构体#include <stdio.h>#include <stdlib.h>struct Node{ int data; struct Node* next;};struct Node *list;创建结点//创建结点struct Node* createNode(int data){ struct Node* NewNode = (struct Node*)malloc(sizeof(struct Node)); NewNode->da
2020-12-03 13:32:59
1424
原创 链表-有头链表
有头链表链表是一种数据结构,由多个一样特点的单一个体组成(每个个体用 结构体 表示)在结构体中分为2种数据定义:数据域和指针域数据结构也就是存取数据的一种方式。有头链表:它的头节点是不放数据的,链表的编写思路1.每个链表都要有最小的一个单元构成所以要先创建一个最小单元的特征创建一个结构体2.有头链表要有一个头部去引导下一个数据所以要创建一个头出来先创建一个头节点(函数)3.每个链表都是由许多的节点构成的,所以要创建节点创建节点4.我们需要一个链表所以要产生一个链表创建链表()5.创建好链表之后,我们必然要
2020-12-02 15:10:38
1194
原创 数据的基础——二进制
计算机中的数据存取一、计算机的组成二、计算机处理数据的基础——二进制1. 二进制的由来电脑中的内存条由大量晶体管组成,每个晶体管的电压不一样,这样就可以根据不同的电压来表示不同的数据。当然如果用不同的电压值去表示不同的数据,是很难的,在电路中要稳定的产生很多电压是很难的。所以就把电压分成了两种:一种是高电平(高电压),用1来表示一种是低电平(低电压),用0来表示把所有的数据用0和1的组合来表示,比如数字0是 0000 0000,数字1是 0000 0001。一张图片可能由几百万个0和1的组合
2020-12-01 13:06:09
1345
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人