自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【MySQL--->用户管理】

在MySQL内部有一个mysql数据库,数据库中的user表就是用来管理用户信息的,创建用户和修改用户信息可以像表一样操作.主机名设置为localhost,只能在终端主机也就是本主机登录,设置%可以任意主机登录.修改密码,root可以修改任何用户的密码,普通用户只能修改自己的密码.

2023-11-19 17:16:47 432

原创 【MySQL--->视图】

视图是一个由插叙结果组成的虚拟表,基于表查询结果得到的表叫做视图,被查询的表叫做基表.基表和视图进行更新操作会互相影响.将dept和emp两个基表的查询结果作为视图。3.视图不能与视图或者表重名。5.视图可以和表一起使用.2.视图可以被无限创建。1.视图不能添加索引。

2023-11-19 14:26:05 318

原创 【MySQL--->事务】

*检查规则: ** 快照读时会用readview类中的数据对比版本链中数据,如果快照id小于低水位,说明是当前事务运行前就已经提交的数据,或者是id等于m_create_trx_id说明是当前事务的快照,应该看见.如果快照id大于等于高水位,说明该事务是在当前事务运行之后才出现的,不应该被看见.如果m_ids是空说明就当前一个事务在运行,那么所有快照都能被看见.如果快照id在m_ids中说明事务仍在活跃,不应该被看见,如果不在m_ids中说明事务已提交,可以被看见.

2023-11-19 12:47:05 251

原创 【MySQL--->索引】

1.表是存储在磁盘中的,要操作表中的数据需要从磁盘提取数据到内存.B+树只有叶子节点存储数据,其他节点只存储key值,所以树的高度相对较低,搜索路径较短,IO次数少.而B树的内部节点存储的是键值对,树的高度相对较高,IO次数多.io开销大,因为磁盘到内存的传输速度慢,数据定位会有寻道时间和旋转延迟.除了主键索引,允许添加其他非主键索引,聚簇索引的非主键索引的叶子结点是存储的主键,利用非主键索引找到主键,再利用主键找到整条数据,非聚簇索引的非主键索引则跟主键索引相同,叶子结点都是存储的数据记录的地址.

2023-11-06 16:28:30 176

原创 【MySQL--->内外连接】

左外连接就是以左面的表为主,即便是右边的表没有而左边表项中有的,依然显示。左外连接就是以左面的表为主,即便是右边的表没有而左边表项中有的,依然显示。内连接就是将两个表连接进行笛卡尔积查询。

2023-10-29 21:11:46 119

原创 【MySQL--->复合查询】

多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句。as后的名字可以被后面的语句使用,除了order by,order by是在筛选结果出来以后执行的.自连接的方式查询,将同一张表重命名的方式自连接查询出笛卡尔积,再筛选出结果,它是将emp表中的信息逐条拿出来与dept表的每一个条目进行组合的结果;子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。这个相当于多表查询,把一个子查询当做一个临时表使用。将两张表合并查询,不经筛选的得到的结果是。

2023-10-29 19:57:02 307

原创 【MySQL--->内置函数】

将岗位名称的首字母转换为小写显示。子串存在返回位置,否则返回0;将名字中的S字符替换为上海。

2023-10-25 22:40:49 238

原创 【MySQL-->数据操作】

指定列单行插入可以省略into关键字全列单行插入。

2023-10-24 21:30:58 270

原创 【日志系统】

多功能的日志系统,支持多线程并发写日志,同步和异步输出方式,不同的输出位置(标准输出,指定文件和滚动文件),输出多级别日志.按模块分为:等级,信息,格式化,信息落地,日志器,日志器管理,异步线程7个模块.日志系统的作用,日志系统可以帮助定位bug,分析问题.比如上线产品不能通过调试处理bug时,对于分布式,多线程,多进程代码,很难通过调试定位bug时,帮助首次接触代码的信任理解代码运行流程,这些场景日志系统都能起到很大作用.

2023-10-15 15:10:14 202

原创 【云备份项目】

实现本地文件通过客户端上传到网络服务器主机中,客户端也可以实现通过请求服务器查看上传的文件,可以下载云备份的文件,如果下载过程中客户端与服务器终端,还有断点续传功能,就是可以接着中断前的进度下载.

2023-10-13 11:41:22 184

原创 【MySQL--->表的约束】

not null和default的区别,如果列同时设置not null和default,就算这一列不插入值,也会自动插入默认值,not null属性,在插入值的时候,如果不插入,则首先会查看有没有default值,有的话就插入默认值,所以当not null属性的列不插入值也么有设置default值的话,会报错没有默认值.表中NULL代表空,就是什么都没有,""代表空串,两者意义不同,列的空属性默认是NULL,意思是给表插入值的时候,可以不插入属性有NULL的列.也可以设置NOT NULL.

2023-08-16 11:30:58 350

原创 【MySQL--->数据类型】

bit类型就是按比特位存储数据的,类型后面跟(n)可以设置比特位的个数,比特位最大上限是64位,如果类型设置为bit(1),数值只能插入0或者1.,数值的显示是以ascll码值的方式显示的,也是按照ascll码值的方式 存储的.比如存储0或者1是显示不出来的,但是如果是字符的话就可以显示,比如’a’或者97都是显示’a’.应用场景,如果所需的数据是多变的,那么应该使用varchar类型,如果担心长度不够用,可以将L定义的长一些.如果是固定长度的,那么应该使用char,应为char不需要多余字节维护长度.

2023-08-14 09:22:30 400

原创 【MySQL--->表的操作】

alter table 表名 modify 列名 类型 描述;alter table 表名 change 列名 列名 类型 属性;新的列名需要将老的列信息附带上.alter table 表名 rename to 表名;不带以前的表属性信息不会影响以前的信息.alter table 表名 Add 列名1 类型 comment ‘描述’ after 列名2;show create table 表名;**删除一列: ** alter table 表名 drop 列名;不同的存储引擎有不同的表结构。

2023-08-14 07:42:26 325

原创 【MySQL--->数据库操作】

创建一个数据库,然后退出mysql,用命令mysqldump -P3306 -uroot -B 数据库名 > 备份文件路径.将数据备份至指定的路径下的文件中.数据库后面跟多个数据库名,可以同时备份多个数据库.如果备份的是表,则在数据库后面跟上表名即可,不过恢复的时候首先要自己创建一个数据库.-B的选项其实就是备份数据中有创建数据库的命令.将两个表都排序,所得到的结果是不一样的,db1不区分大小写,所以A和a都排在前面,db2区分大小写,按照ascll码值比较小写全部排在大写的后面.可以查看支持的校验规则.

2023-08-12 11:15:06 2086

原创 【MySQL--->数据库基础】

mysqld有三层结构,第一层是链接层,负责链接管理,安全策略,第二层负责词法分析,语义分析,语句优化,然后通过特定协议向下传递,第三层是存储引擎,像是操作系统的驱动程序,主要负责具体的操作,底层存储引擎有很多,因为针对不同的数据类型,需要不同的存取策略.存储引擎支持热插拔,可以理解引擎为类,需要那个存储引擎就创建那个类的对象.**数据:**数据库存储的基本对象,是描述实物或抽象概念的可存储的有意义的符号。创建数据库,相当于创建目录。**数据库:**按照一定的数据模型存储的有组织的数据的集合。

2023-08-12 09:23:11 405

原创 【MySQL--->环境配置】

客户端登录相当于链接服务器,命令选项-h代表主机号,也就是ip,如果是跨网络连接,就输入服务器主机的ip地址,如果是服务端和客户端再一个主机,就输入本地ip:127.0.0.1 -P 端口号 默认3306 ,-u用户 root或者其他,-p授权登录.在mysql官网下载yum源,查看登录http://repo.mysql.com/官网,下载mysql后面带版本号的yum源,比如linux内核版本7.6,yum源有7.6就下载,没有就下载7版本即可.一种是不输入密码直接登录。

2023-08-11 20:58:25 349

原创 【linux--->高级IO】

功能:操作一个打开的文件描述符,操作有cmd参数决定参数:fd为被操作的文件描述符,cmd为fd的操作指令宏值,...可变参数如何使用由cmd决定.cmd的可选宏值:F_GETFL:获取文件的访问模式和文件状态标志,可变参数忽略F_SETFL:用可变参数指定的宏值设置文件状态标志,在Linux操作系统下,此命令只能修改O_APPEND, O_ASYNC, O_DIRECT, O_NOATIME和O_NONBLOCK标志。

2023-08-10 22:46:20 404 1

原创 【linux--->数据链路层协议】

如果与自己的IP地址相同就返回ARP响应报文,响应报文填充报文帧类型字段0806,硬件类型为1,协议字段是0800,硬件地址就是Mac地址长度为6字节,协议地址就是IP地址为4字节,op为2响应,发送端以太网地址为为自己的Mac地址,发送端IP为自己的IP地址,目的以太网地址就是接收报文的发送端以太网地址,目的IP填充接收到的报文的发送端IP地址.令牌环网的局域网通信原理就是如同是给网络加了锁,主机A在发送消息给主机B,这时候只能主机A发送消息,当主机B收到消息时,就只能主机B发送消息.

2023-08-04 17:12:01 1100

原创 【linux--->网络层协议】

不同的局域网有相同的IP地址,在数据包转发的过程中就需要用到NAT技术了,每个路由器都有一个WAN口IP(外网IP),和LAN口IP(内网IP),.LAN口连接的是主机,WAN网连接上级子网.子网内的IP地址不能重复,但是子网之间的IP地址可以相同.内网的IP地址都是私网IP,想着样的内外网可能有好几层,最外层的运营商路由器是公网IP.跨网络通信时,首先要将LAN口IP转换为WAN口IP,一层一层的转换,成公网IP就可以将数据包转发到公网中去了.一般用于中等规模网络。将收到的报文按照偏移排序就还原了报文.

2023-08-03 09:57:28 253

原创 【linux--->传输层协议】

调用listen系统调用,系统会创建一个全链接队列和一个半链接队列,listen系统调用第二个参数+1就是全链接队列的最大长度.半链接队列中放的是客户端与服务端进行了两次握手的链接,当三次握手后还未被accept取走的链接放在全链接队列中,第三次握手是客户端向服务端发送ACK报文,如果服务端的全链接队列满了,服务端就会丢弃客户端发来的ACK报文.这时服务端链接状态时SYN_RECV,而客户端认为链接建立成功,如果特定时间内,全链接队列还没有位置,半链接队列中的链接会被服务器断开.

2023-07-31 08:21:03 186

原创 [linux--->应用层通信协议]

其基本原理是利⽤单向散列函数(Hash函数)对信息进⾏运算,⽣成⼀串固定⻓度的数字摘要。数字指纹并不是⼀种加密机制,但可以⽤来判断数据有没有被窜改。• 摘要常⻅算法:有MD5、SHA1、SHA256、SHA512等,算法把⽆限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率⾮常低)• 摘要特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常⽤来进⾏数据对⽐。

2023-07-26 18:11:25 1563

原创 【linux--->网络套接字编程】

socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4、IPv6,以及后面要讲的UNIX DomainSocket. 然而, 各种网络协议的地址格式并不相同// 创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器) int socket(int domain , int type , int protocol);

2023-07-22 10:35:04 166

原创 【cpp--->类型转换与io流】

文件流有三个类用于文件的读写**,ifstream和fstream以及ofstream**,它们都是继承了io_base类的写法,在io_base类中定义了in和out两个全局静态对象,用于确定文件是读还是写.因为io_base是三个文件读写类的基类,所以这三个类域中都继承了in和out对象,ifstream用于文件读取,ofstream用于文件写入,fstream同时具备ifstream和ofstream的功能.其中,目标类型是你希望将表达式转换成的类型,表达式是要被转换的对象或指针。

2023-07-13 08:24:53 319

原创 [linux--->网络通信基础]

OSI(open system interconnectionj开放系统互连)七层网络模型成为开放式系统互联参考模型,是一个逻辑上的定义和规范.在实际的实现过程中,将其中的会话层和表示层以及应用层合并实现并统称应用层.所以实际上有5层协议,如果再去掉物理层就只有四层关于软件的协议.

2023-07-11 16:18:42 86

原创 【cpp--->特殊类设计】

首先将构造私有化,防止随意构造对象,定义静态成员对象指针,没使用的时候就初始化一个对象.使用时通过调用静态成员返回值静态成员对象指针,用这个指针调用类的成员函数使用类.将构造私有,创建静态成员函数,其返回值是栈上开辟的对象.但是这样无法阻止静态区开辟空间的对象接收对象的值.

2023-07-06 19:14:38 145 1

原创 【cpp--->智能指针】

智能指针有些场景会造成循环引用的,循环引用,就是两个智能指针相互依赖,释放时互相制约,形成引用死循环,资源无法被释放,造成内存泄漏.以链表节点的链接为例,两个节点相连,节点1的next链接节点2,节点2的pre链接节点1,这两个节点的指针以及节点内部的指针都用希尔智能指针,这时节点1和节点2的引用计数都是2,出作用域时,节点2引用计数-1,节点1的引用计数-1,但是这两个节点都无法释放,因为。智能指针解决了资源释放的问题,但是还要有原生指针的使用方法和功能,这就需要解决指针的解引用,拷贝和赋值问题。

2023-07-06 16:21:45 741

原创 [cpp--->异常]

5.在函数调用链中,异常匹配原则是查看throw本身是否直接在try代码块儿中,如果在查找对应的catch代码块儿处理错误,如果不在则跳出当前的函数栈,到调用该函数的函数栈中查找匹配的catch,如此重复上述动作,如果一直到main都没有匹配的catch代码块,则程序退出.如果有匹配的catch,catch执行完之后会执行catch后面的代码.7.有时候try catch无法一次性处理异常,或者因为抛出异常所造成的其他问题,所以catch处理完异常的一部分问题可以直接使用throw将异常重新抛出。

2023-07-04 17:23:45 129

原创 【cpp--->C++11】

列表初始化就是想数组自定义类型用大括号初始化对象的初始化方式C++11增减了一个initializer_list的类,stl容器都支持列表初始化,C++11会自动识别 {值1,值2,值3…} 为initializer_list 类型,容器内部都增加了initializer_list构造函数,容器列表初始化会调用这个构造函数初始化对象。C98是支持{}构造或者拷贝构造的,所以可以用类表初始化内部嵌套多个构造初始化合并使用;另外C++11的初始化时可以省略对象后面的=。申明类型的关键字decltype(v

2023-07-04 11:49:25 108

原创 【linux--->线程】

功能:在进程内部创建并执行一个线程。参数:thread线程在返回之前会将id设置到thread中attr线程属性结构体对象,用来使用设置线程属性的,如果attr设置为空则使用默认属性创建线程新线程通过调用 start_routine() 开始执行;Arg作为 start_routine() 的第一个参数传递。返回值:成功返回 0 ,失败返回其他数字,并设置错误码。功能:等待一个指定的线程,如果线程已经终止,则函数立即返回,被指定的线程必须是可连接的参数:thread线程id。

2023-06-19 14:51:51 171

原创 [cpp--->反向迭代器]

操作符重载,由于begin指向的是正向的end,所以不能直接返回值,要返回当前迭代器的下一个位置的值,但是不能直接改变当前迭代器的位置,所以构造一个正向迭代器对象减减后返回即可.通过对泛型正向迭代器的封装实现一个反向迭代器的类,使得反向迭代器的begin等于正向迭代器的end,end等于正向迭代器的begin;反向迭代器的++等于正向迭代器的–,–等于正向迭代器的++;因为有const迭代器所以增加两个模板参数控制val的属性。反向迭代器是一个泛型的迭代器,所有容器都可以复用。

2023-06-13 09:10:46 163

原创 【cpp--->多态】

不同对象对于同一事件展现不同状态,比如支付宝扫福子,不同的人扫相同的福字就会得到不同的副卡;不同的人扫支付宝红包,会得到金额不等的红包.构成多态的必要条件1.子类完成虚函数的重写2.虚函数的重写接口必须是返回值类型相同,函数名相同,参数类型相同,重写函数的实现.3.必须是父类的指针或者是引用调用子类或者父类的虚函数.1.重载是同一个作用域下的同名不同参数类型或者个数的函数.2.重写是构成父子关系的不同类域中的相同函数返回值类型(协变例外),函数名,参数类型与个数的虚函数.

2023-06-12 18:02:10 392

原创 [cpp--->继承]

struct A {//类后边加访问限定符+类名 struct B : public A {

2023-06-10 16:39:45 178

原创 【c++--->模板】

泛型编程就是编写与类型无关的通用代码,是方便高效的代码复用的一种手段,而想要泛型编程就要了解模板,模板又分为函数模板和类模板。函数模板代表就了一个函数家族,这个函数没有具体的类型,在使用时才被具体的参数化,根据实参类型产生函数的特定类型版本。template < class T1 , class T2 , . . . , class Tn > class 类模板名 {// 类内成员定义 };模板参数分类类型形参与非类型形参。

2023-06-09 14:22:58 51

原创 [cpp--->优先级队列]

优先级队列内部结构是堆,因为堆是尾插和尾删,所以堆是用vector作为适配器的基础上实现的.堆的核心实现就是向上和向下调整.堆有大堆和小堆,大堆小堆是用child节点和parent节点的比较方法确定的,所以优先级队列还增加了用于比较的模板参数,可以穿参比较函数指针,也可以是仿函数;因为日期类重载了比较符号所以直接比较日期类对象不会有什么问题,但是如果比较日期类的地址还想保持日期的排序正确,就必须自定义比较仿函数,让内部比较的是日期地址的解引用以后得值.

2023-06-08 18:28:58 101

原创 [cpp--->双端队列]

list优点:任意位置插入删除效率高,不需要扩容;缺点:不支持随机访问,.vector优点:支持随机访问,尾插尾删效率高;缺点:头插和中间插入删除效率低.扩容代价高.dequeue优点:支持随机访问但是没有vector效率高,尾插尾删效率高,扩容只需要拷贝指针即可,代价很低;缺点:中间插入删除效率低或者是不支持随机访问.

2023-06-08 16:44:17 216

原创 [cpp-->list]

/无参构造 list < int > lt1;//n个val构造 list < int > lt2(3 , 10);//任意类型的迭代器区间构造 int arr [ ] = {//拷贝构造 list < int > lt4(lt3);//赋值构造 list < int > lt5;lt5 = lt4;

2023-06-07 16:43:14 80

原创 【cpp--->vector】

/默认构造一个容器为空的对象,没有元素 vector < int > v1;//用n个元素构造一个对象,val默认为T() vector < int > v2(3);//用任意类型的迭代器区间构造一个对象 string s("hello world");//拷贝构造 vector < char > v5(v4);return 0;

2023-06-05 18:47:38 984

原创 【cpp--->string】

力扣链接从字符串两段开始找是字母的字符,两端都找到了就交换头尾,然后更新头尾位置,找下一个是字母的字符,直到头尾相遇。主要考察string的遍历public ://判断是否为大小写字母 bool isLetter(const char c) {//记录字符串两端是字母的字符 int begin = 0 , end = s . size() - 1;//从头部找是字母的字符 while((begin < end) &&!++ begin;

2023-05-30 10:53:47 76

原创 【cpp--->位图】

如果冲突的query比较多,会出现超过了500M甚至是1G至500G等不均匀的情况,分两种情况,一种是文件中有大量重复的query,一种是文件中有大量不同的query;用两个相同的哈希函数,在分割的时候将相同的值映射到相同编号的不同小文件中,相同的哈希值肯定是映射到相同标号的文件中去的,不同的值也可能误判到相同标号的文件中去,分割完之后只用相同标号的文件相互比较即可,不同标号的文件中不可能有相同的值。创建两个位图,分别存储文件1和文件2,然后文件1中有的文件2中也有的就是交集的整数。

2023-05-26 17:20:10 271

原创 【cpp--->哈希表】

set和map底层是封装了红黑树,红黑树是C98更新的容器;红黑树的查找效率最理想的情况是log2N,最差的情况需要比较红黑树的高度次,当树的节点比较多的时候,查找效率不理想,因此C++11有提供了4个UNorder系列的map和set容器,接口使用于map和set相同,底层实现不同,使用哈希实现的。试验对比set和unordered_set的插入,查找和删除unordered_set的查找效率明显高出很多,是因为unordered_set底层是用哈希实现的原因。将关键字与存储位置通过某种函数建立映射关系

2023-05-22 22:24:34 574

空空如也

空空如也

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

TA关注的人

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