自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL运维之日志、主从复制、分库分表

主库的binlog记录着全部数据变更的数据,从库iothread发起请求,读取返回binlog日志信息,并写入到自身的relay_log。从库的sqllog读取relay_log数据变化,并放映到自身数据库的数据变化。最后在从库中再次执行主库那条数据改变的sql。个人练习建议直接关闭防火墙即可,在实际的生产中都是关闭3306端口。这个mysql_query.log就是创建产生的查询日志文件。由于这份查询日志比较大,故平时没用到的话都是关闭掉的。但这条命令是看不到数据的,只有加上-v才能看到数据。

2022-11-01 00:30:33 356 1

原创 MySQL进阶之触发器、锁、InnoDB引擎和MySQL管理

一.触发器1.触发器介绍: 2.触发器insert类型:触发器的主体是当前数据库。 再次向当前数据库中插入数据后,就 可以在日志表中查询到insert记录2.触发器update类型: 此时我们来更新以下数据我们再打开日志记录,就可以看到update有触发了一次。 因为是行级触发,所以若一个SQL语句修改了5行数据,触发器就会触发5次。相应的日志里就会有5行日志记录。3.触发器delete类型: 相应的执行这条SQL语句,在日志中也是可以查到记录的。 二.锁1.锁的概述: 2.全局锁: 故我们需要全局锁

2022-10-24 20:58:04 685

原创 MySQL进阶之SQL优化、视图、存储过程

使用select @@local_infile可以看出这个local_infile开关是否打开,0是关闭,1是打开。当没有建立与这两个索引相匹配的索引时,查询的结果就是using filesort。这样再插入数据时,就可以把符合where条件的数据插入到基表和视图中啦,注意不符合where条件的数据不会插入到基表和视图。但当我们在基表中查询数据时,这些从视图插入的数据并不存在。这里26插不进去是因为不仅要检查插入的视图,还要再去检查该视图依赖的视图的where条件表达式。global表示全局的系统变量。

2022-10-22 00:24:03 715

原创 MySQL进阶之存储引擎和索引

上面两个操作开启后,就可以很方便的查看到刚刚执行的全部命令行的查询时间啦。更详细的信息:要用到explain或desc(只需加在命令行前面即可,现实中用explain会比较多)B+Tree特点:所有结点都在叶子结点,上面的结点只是起到引导的作用,并没有存储数据。重点关注type,看出SQL语句的性能指标,关注possible_key,key。找到Arm对应的10,再到上面找10对应的位置 ,中间有个叫回表查询的步骤。可以通过在对应路径上cmd的终端上输入相当应的命令,看到这张表中的信息。...

2022-08-08 15:59:18 240

原创 MySQL中的函数、约束、查询和事务

一.函数1.字符串函数: 2.数值函数:3.日期函数: 4.流程函数: 二.约束 当要使两张表之间存在关联,就必须建立外键关联约束,添加后就不能顺便的删除表中的数据啦 实例解析:添加操作:alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);//本句的意思为dept表与emp表关联,主表是emp表,辅助表是dept表。关联的是id。删除操作:alter table e

2022-07-03 01:29:41 150

原创 SQL语法之DML、DQL和DCL语句

今天分享的是SQL语法中的DML和DQL语句以及DCL语句。 DQL语句: 基础查询:1 条件查询: 聚合函数:注意null值是不参与聚合函数运算的。分组查询: 注意理解where和聚合函数以及having的执行时机排序查询:分页查询:DQL语句的执行顺序:DCL语句:控制用户权限 以上就是SQL语法中的DML和DQL语句以及DCL语句啦,至此,SQL语法的内容就到这啦,后面就是函数和约束等内容啦。...

2022-07-01 21:00:59 312

原创 SQL语法之DDL

SQL语法中有分为四种,如下图:下面是具体操作:(特别说明:单行注释:用--或者#来注释(mysql特有)。SQL语法是不分大小写的 ) (注意一下varchar就是字符串类型的意思,后面的50表示字符串长度) DDL建表时常用的数据类型。注意在用double时经常这样用double(4,1)表示四个数字,1位小数位。 在创建用户名时是用varchar更好,创建性别时是用char更好。 案例分析:表建成后的操作: 好啦,以上就是关于DDL的内容啦,关于图形化界面推荐使用Datagrip,真的比SQLyo

2022-07-01 11:31:05 219

原创 算法日记(十四)之并查集

今天,我们来看看一种特殊的数据结构——并查集。这是今天在《趣味数据结构》这本书中的高级数据结构中看到的,以前都没听过的一种数据结构。下面让我们一起来看看吧1.概论:并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。主要构成:并查集主要由一个整型数组pre[ ]和两个函数find( )、join( )构成。数组 pre[ ] 记录了每个点的前驱节点是谁,函数 find(x) 用于查找指定节点 x

2022-06-01 14:40:15 94

原创 算法日记(十三)之动态规划

前面我们说过简单的背包问题可以用贪心算法来实现,但有一类0-1背包问题用贪心算法来实现是不可取的,这里就引出我们今天的主角——动态规划。1.动态规划的相关概念:这里就不引用百度上的专业名词了,简单的来说,动态规划其实就是,给定一个问题,我们把它拆成一个个子问题,直到子问题可以直接解决。然后呢,把子问题答案保存起来,以减少重复计算。再根据子问题答案反推,得出原问题解的一种方法。一般这些子问题很相似,可以通过函数关系式递推出来。然后呢,动态规划就致力于解决每个子问题一次,减少重复计算,比如斐波那契数列就

2022-05-29 17:51:23 92

原创 算法日记(十二)之贪心算法

在前面我们已经有分享过递归和回溯算法的思想,再结合最近在学图的应用时,遇到最小生成树和最短路径等问题时,都提到一个贪心的思想。今天,我们就来总的看一下这个贪心算法的内容吧贪心算法(有时也叫贪婪算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法。贪心算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果贪心算法一般按如下步骤进行:①建立数学模型来描述问题 。②把求解的问题分成若干个子问

2022-05-29 16:44:01 149

原创 算法日记(十一)之B树与B+树

在我们说树的基础知识就说过,树有几种分类,如二叉树,平衡二叉树以及红黑树等等。下面我们来看看另一种树的性质——B树与B+树。它们是我们数据库MySQL的索引结构的数据结构。对于索引优化和原理理解都非常重要。下面一起来看看吧一.B树概述(有时候也被叫做B-树)B树和AVL树(平衡二叉树) 的差别就是 B树 属于多叉树,又名平衡多路查找树,即一个结点的查找路径不止左、右两个,而是有多个。数据库索引技术里大量使用者B树和B+树的数据结构。一个结点存储多个值(索引)。这里的 B 表示 balance( 平衡

2022-05-29 00:57:40 160

原创 算法日记(十)之跳表

今天,我们来看一种数据结构,它可以快速地查找、插入、删除。据说可以替代红黑树。据说Redis中的有序集合就是用它来实现的。它就是跳表。初学者学数据结构应该都没有听说过,课本也没有出现过这种数据结构过。下面我们一起来看看吧一.定义1.跳表,又叫做跳跃表、跳跃列表,在有序链表的基础上增加了“跳跃”的功能2.跳表在原来的有序链表上加上了多级索引,通过索引来快速查找;可以支持快速的删除、插入和查找操作。3.跳表实际上是一种增加了前向指针的链表,是一种随机化的数据结构4.Redis中 的 SortedS

2022-05-28 23:40:08 154

原创 算法日记(九)之优先队列

在前面,我们已经分享完队列的基本内容,现在我们来看看队列衍生出来的一种数据结构——优先队列。优先队列行为像队列,但先出队列的元素不是先进队列的元素,而是队列中优先级最高的元素。优先队列是与堆,树相结合的一种数据结构。下面一起来看看吧1.概念优先队列可以插入元素、查询最大值、删除最大值。优先队列其实就是最大堆或最小堆,最大堆可以用来实现最大优先队列,最小堆可以用来实现最小优先队列。用各种堆都可以实现优先队列。优先队列分为几种,下面一起来看看吧2,分类(一).STL优先队列注意:优先队列如果

2022-05-28 20:04:00 372

原创 算法日记(八)之堆的基本操作

今天,我们来看看堆这种数据结构以及它其中的一方面——优先队列1.堆如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<=K2i+2 ,则称为小堆(或大堆)。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。补充:在内存中,栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。2.性质:1.堆中某个节点的值总是不大于或不.

2022-05-28 15:26:02 179

原创 数据结构的运算之归并排序和基数排序

今天,我们来看看数据结构的运算的最后两个排序——归并排序和基数排序1.归并排序归并排序的算法实现:#include<stdio.h>#include<stdlib.h>//归并排序void Merge(int arr[],int nBegin,int nEnd){ int nBegin1 = nBegin; int nEnd1 = nBegin +(nEnd-nBegin)/2; int nBegin2 = nEnd1+1;...

2022-05-26 14:51:55 195

原创 数据结构的运算之选择排序

今天,我们来看看选择排序的相关内容第一种:简单选择排序简单选择排序的算法实现:性能分析:第二种:堆排序

2022-05-26 13:51:46 123

原创 数据结构的运算之交换排序

今天,我们来看看数据结构的运算之交换排序。首先,交换排序的核心思路:1.冒泡排序:冒泡排序算法实现:冒泡排序性能分析:改进冒泡排序:改进后的冒泡排序算法实现...

2022-05-26 00:21:50 127

原创 数据结构的运算之插入排序

前面分享完数据结构运算的查找后,今天,我们来看看数据结构的运算中的排序问题,排序问题分为很多种,记得前面有一期文章已经有分享过八种比较常见的排序。下面博主会分享几种比较好用的排序。我们一起来看看吧首先:插入的结点可能存在多种关键信息,所以有一下定义:第一种排序;插入排序...

2022-05-24 00:37:00 98

原创 c++高阶语法(五)

今天,我们来看看c++11中的一个可调用对象包装器——function以及在头文件<functional>下的bind函数。一.functional1.概念:std::function是可调用对象的包装器。它是一个类模板,可以容纳除了类成员(函数)指针之外的所有可调用对象。通过指定它的模板参数,它可以用统一的方式处理函数,函数对象,函数指针,并允许保存和延迟执行它们。包装器function使其能够存储、复制、调用任何可复制构造的可调用对象1,包括全局函数、成员函数、函数对象、lamb

2022-05-23 00:55:56 182

原创 c++高阶语法(四)

今天,我们来分享一个c++的高阶语法——嵌套类。嵌套类是它所在封装类的一个成员。非静态嵌套类(内部类)可以访问封装类的其他成员,包括声明为private的成员。静态嵌套类不能访问该风状态的其他成员。作为外部类的一个成员,一个嵌套类可以被声明为private,public,protected或者package private。为什么使用嵌套类?使用嵌套类的主要原因:它将仅在一个地方使用的逻辑类组合在一块。如果一个类仅在另外一个类中使用,那么,前者在逻辑上绑定到后者上使得两者在一块。像帮助类的嵌套使

2022-05-22 20:22:01 238

原创 算法日记(七)之红黑树(基础版)

今天,我们来看看二叉树中的一种特殊结构——红黑树。网上也都流传说红黑树在平时程序员面试中经常出现,且会出现得比较难。虽然红黑树在《数据结构与算法》这本书中没有提高,但还是有必要学好红黑树。学红黑树以前,我们有必要来复习二叉排序树的内容(博主前面的文章有一期是关于二叉排序树的)。1.复习二叉排序树二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。2.红黑树:当

2022-05-22 18:50:35 80

原创 数据结构的运算之查找(四)

今天我们来看看数据结构运算之查找的最后一种——散列表查找(也叫哈希表查找,主要是利用hash函数)。1.散列表的概念:注意:散列函数计算得到的散列值是一个非负整数;2.散列表的构造方法:(方法有很多种,这里就只是列出了比较常用的两种方法)注意质数这一点。p 应为小于等于m,最好是接近m 的最小质数3.解决冲突的几种方法:其中线性探测法:取余13,就有13种可能,就可以有13个单链表表头。4.散列表的查找:假设采用开放地址法处...

2022-05-22 16:39:04 118

原创 c++高阶语法(三)

今天,我们来分享c++语法中的关键字,在c++学习中,关键字有很多,如const,static,enum等等。下面是c++语法中的全部关键字(好像是73个)大部分在基础语法学习中的已经见过了,现在我们来看看几个不常见又有时候起关键作用的关键字吧。1.char、wchar_t表示字符型和宽字符型这些整数类型(属于基本类型),但一般只专用于表示字符。char(和signed char、unsigned char一起)事实上定义了字节的大小。char表示单字节字符,wchar_t表示多字节字符

2022-05-22 00:40:38 513

原创 c++高阶语法(二)

今天,我们来看看c++中的高阶语法——匿名函数Lambda函数,也叫Lambda表达式。下面我们一一来看看这个Lambda函数吧。1.匿名函数就是没有名字的函数。有一些函数只是临时用一下,而且业务逻辑也比较的简单,相当于是临时工,就没必要给它定义成一个正常函数(包含有函数名,很正式的那种)。使用临时的匿名函数,可以减轻函数的数量,让代码变的清晰易读。2.Lambda表达式具体形式如下:[capture](parameters)->return-type{body}如:[](int x, i

2022-05-21 20:01:04 245

原创 数据结构的运算之查找(三)

在前面分享完顺序表和二叉排序树的相关操作后,我们继续来看看平衡二叉树的相关操作吧1.平衡二叉树的定义:2.平衡因子:如图的二叉树就是平衡二叉树啦3.平衡调整的四种类型:4.调整的四种类型:(1)LL型:...

2022-05-21 18:10:36 109

原创 数据结构的运算之查找(二)

在前面分享完循序表的查找算法后,今天我们来看看树表和散列表(哈希表)的查找算法把一)树表1.二叉排序树的查找操作二叉排序树的查找算法核心思路:实现代码:该算法分析二叉排序树的平均查找长度的分析:2.二叉排序树的插入操作:...

2022-05-21 16:01:34 175

原创 leetcode刷题日记(二十一)

在经历了一段时间的停更后,我们每晚一度的leetcode刷题时间正式回来,博主会给大家分享每晚一道leetcode题,跟大家一起刷题,大家一起体会刷算法题的乐趣,从此刷算法不再无聊。好啦,直接上题目吧,今天给大家带来一道二叉树的题目。核心思路:递归(没错,就是我们的老朋友——递归,在做二叉树的时候递归应该是我们首先要考虑的解题核心)首先先递归遍历到左边叶子结点,进行左右交换,再往上退到根节点,先递归遍历到右边叶子结点。进行右左交换。再往上退到根节点,对根结点的左右结点进行左右交换,注意最下面的叶子结点也

2022-05-20 01:34:07 119

原创 c++高阶语法(一)

一)内联函数inline。解决函数调用的效率问题,在函数声明前加上inline即可,

2022-05-17 21:28:56 731

原创 数据结构的运算之查找(一)

在前面我们花了很长时间学习了几种基本的数据结构后,今天我们继续来看看下一个重要的内容——数据结构的运算。数据结构的运算包括几种,如查找,删除,排序和插入等等。接下来的即将期文章,我们将一种一种运算分享给大家。下面看第一种——查找。查找是指根据给定的某个值,确定关键字值,查询确定关键字值与给定值相等的记录在文件中的位置。它是程序设计中一项重要的基本技术。查找的结果有两种情况:若在文件中找到了待查找的记录,则称查找成功,这时可以得到该记录在文件中的位置,或者得到该记录中其他的信息;若在文件中没有找到所需要的

2022-05-16 20:20:40 217

原创 C++基本语法知识查漏补缺(二)

一)函数模板是一种特殊的函数,可以使用不同的类型进行调用,对于功能相同的函数,不需要重复编写代码,并且函数模板与普通函数看起来很类似,区别就是类型可以被参数化函数模板通过template与typename(换成class也可以)两个关键字来定义,如下上边就定义了一个变量交换的函数模板,在使用函数模板时有两种方式 -自动类型推到调用Swap(a, b) -具体类型显示调用Swap<int>(a, b)需要注意的是函数模板是不允许隐式类型转换的,调用时类型...

2022-05-16 00:43:27 220

原创 C++基本语法知识查漏补缺(一)

一)复制构造函数1、复制构造函数的参数是本类对象的引用类名(const 类名& 引用名);如:类内Student(const Student& );类外:Student::Student(const Student& stu){ int len=strlen(stu.name)+1; name=new char[len]; strcpy(name,stu.name); age=stu.age; cout<<"St...

2022-05-14 01:19:20 457

原创 数据结构之图的应用(四)之关键路径

前面已经分享完了图的应用的三种。这三种可以说是很重要的,涉及了几个重要算法。今天,我们来分享《数据结构与算法》书本里的图的第四种应用——关键路径。下面我们一起来看看吧1.AOE网不知大家在前...

2022-05-09 18:19:20 1149

原创 C++多线程学习笔记(三)

前面五一放假期间发表了两期文章c++多线程的学习笔记,之后又因为某些事停更了几天,今天我们继续来看看c++多线程问题。前面讲完了c++多线程的前两种头文件,今天我们来看看第三种头文件吧。...

2022-05-08 20:30:17 1219

原创 数据结构之图的应用(三)之拓扑排序

前面的两期文章讲的两种图的应用——最小生成树和最短路径都是根据这个无向图的讨论的。而今天应用主要是放在有向无环图中讨论的。接下来,我们一起来看看这种拓扑排序吧1.有向无环图总的来说,就是没有像有向图一样全部连接起来成环的图。好啦,扩展完毕后,接下来,我们就正式来看看拓扑排序吧。核心思路:原理图:拓扑排序没有唯一的结果,可以有很多种结果哦。因为有些顶点找不到前驱顶点,如图的构成环的三个顶点。实现拓扑排序代码:#include <stdio.h.

2022-05-06 17:28:03 446

原创 数据结构之图的应用(二)之最短路径

前面我们一期文章我们分享了图的应用中的一种——最小生成树。现在我们开始来讲讲第二种

2022-05-04 20:35:04 869

原创 C++多线程学习笔记(一)

今天是五月三号,五一放假五天,博主也就给自己放了三天假,去游山玩水,吃美食。今天是第四天了,也该慢慢找回学习的状态啦。所以今天博主也是改变自己最近懒惰的状态,来开始自己学习多线程的基础知识。多线程这部分内容对于java,c++爱好者应该不陌生,经常听到或看到的吧。建议在学完c++基础语言知识后的同学们,还是值得学一下这部分内容的(其实也不算很多内容)。下面我们正式开始来看看吧1.理解多线程。多线程并发指的是在同一个进程中执行多个线程。C++11提供了语言层面上的多线程,包含在头文件<threa

2022-05-04 17:23:06 2029

原创 数据结构之图的两种遍历实现(C语言版)

上一期文章分享完了图的两种遍历方式,也是两种很重要的算法——DFS和BFS。这两种算法的应用和重要性我就不多说了,内行的人懂的都懂。今天这文章重要就是来上机实现这两种算法,又由于这两种算法都可以由邻接矩阵和邻接表来表示,博主分享的代码都是上机测试过的,在vs2019(其他编译器我不知道行不行)上都是可以运行的。1.深度优先搜索(DFS):...

2022-05-04 00:57:27 2723

原创 c++多线程学习笔记(二)之线程入口并封装线程基类接口

今天我们来扩展c++多线程学习中的关于线程入口并封装线程基类接口的内容,这部分内容也是相对来说比较重要的,涉及到类与成员函数,还有几个比较常见又陌生的概念。下面让我们一起来看看吧。首先下面是基本接口的调用:下面是样例代码:#include<iostream>#include<thread>#include<string>using namespace std;class MyThread{public: //入口线程函数 v...

2022-05-03 23:59:27 757

原创 数据结构之图的应用(1)——最小生成树

在学完图的存储结构和两种遍历后,相信大家对于图也有了自己的理解了吧,下面我们继续来讲讲图的应用方面吧,应用方面其实有很多很多,但课本好像只列举四种——最小生成树,最短路径,拓扑排序和关键路径。下面我们就一一来分享给大家吧。今天这期文章主要分享一下最小生成树。最小生成树。生成树:是由n个顶点,n-1条边,将一个连通图连接起来,不形成回路可以分为深度优先生成树和广度优先生成树。概念:最小生成树(minimum spanning tree)是由n个顶点,n-1条边,将一个连通图连接起来,不形成回路

2022-05-01 19:44:21 1137

原创 数据结构之图的基础知识(二)

前面分享完图的概念和图的几种存储结构后,我们趁热打铁来看看图的遍历吧。图的遍历主要有两种方式——深度优先遍历(DFS)和广度优先遍历(BFS)。这其实是两种很重要的算法,如果你经常刷算法题,你会经常遇到它们。这两种算法的题目真的很多。以后的leetcode也会重点分享这类题目。好啦,下面重点来讲解这两种遍历算法吧1.深度优先遍历(BFS):从图中某个顶点V0 出发,访问此顶点,然后依次从V0的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被访问到。基本实现方法:

2022-04-27 23:57:35 481

空空如也

空空如也

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

TA关注的人

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