粉丝2186获赞6895

social map 是什么?这是一个能够让普通人也能够发现网站漏洞的渗透工具,操作简单,对入门新手比较友好。而我们只需要将网址输入到工具中,输入命令开审控制, 收回麦空格等优,加上网址工具就会马上测试这个网站存在漏洞。其实当一个工具小子也没有什么不好,你觉得对吗?粉丝群公开课开吃了。

今天本来想处理一个文件的格式,搜了半天没有找到特别合适的工具,索性就让 nih 写了一个工具出来试了一下,很好用,今天免费分享给大家。它主要什么作用呢?像我们平时工作的时候,经常会遇到一个场景,我们要做各种各样的格式转换,像把 c s v 文件转成 z c 文件, excel 文件或者是 i m l 数据库文件, pdf 就是 这种文件,我们可以直接做这种互相的转换,适用于比如你是数据分析师、开发人员或产品经理,包括学生、财务等等这种。只要你的在工作场景里面涉及到这种各种各样的格式转换的时候,就可以用这个工具 第三方的数据转成 json 格式,然后文本数据导成 pdf 等等,这种都可以用。试一下。像这种工具其实已经很多了,那为什么还要专门去写一个有些数据比较偏个人隐私的方面,那像这种文件我就不太敢去上传上去, 所以我写了这个工具,它有一个特点,就是它是纯前端处理数据,是不上传的。你在用这工具的时候,它这个格式转换只在你电脑本地去运行。我给大家演示一下啊,就比如我现在点击一下上传这个位置,我现在选择一个 csv 文件点一下, 点完之后它立马就会把这个文件给放到这个位置了。下面这个配置线一般点完默认就可以了,它就是一个风格符, 可以默认选这个英文的这种逗号大家看到了吗?它这个转换其实是一秒发生的,就不需要等,直接就把这个格式就转过来了,转过来之后我们现在就可以直接把它给下载下来就可以了,点击下载完之后,我们就直接可以在本地上看到这个文件, 这里面就已经转换好的文件就可以直接去处理,用到我们别的地方去了就非常方便。那他还有一个做我可以批量我要处理的文件,不只是一个,比如这里面我就选择两个, 那选完之后我一点击上传他这两个文件放这选择我对应想转的格式,现在点击批量转化两个文件,我一点击之后就立马把这个文件转好了,这个时候我点击打包下载全部,他就把一个电脑本地里面直接就可以使用了,就是非常方便非常快。 这个工具主要优势就是三个,一个是百分百保护我们的隐私,另外一个就是多格式转换,还有个就是速度非常快,而且支持大文件处理。大家如果经常会用到这种格式转换的一个场景的话,可以推荐大家去试一试。

circle 中的函数总共就三种,分别是聚合函数、标量函数和窗口函数。聚合函数常用的只有五个,分别是加总、求平均、求最大值、求最小值和计数。它有两种用法,第一种是单独使用,它会基于整个表对于某一列进行数值的计算。比如说我们这个例子就是对于这个列求一下平均值。 这种用法跟 java 语句进行配合,它会根据你指定的分组对于这个数值进行计算。第二类函数叫做标量函数,它不会改变数据返回有多少含的数量,而会对于某一列做一些特定的计算。我们 这边用到了两个函数,一个是 up, 一个是 k, k 的 作用是对于这个列取大写字母,然后 k, k 的 话是把里面这一个字母串进行拼接,最后得到第二列这里的结果。 在返回的结果里面,它不会对数据进行聚合。也就是说 customer 里面原来有多少含,返回的还是多少含,不会增加,也不会减少。这里需要提一下,不同数据库用到的标量函数会有很大的差别, my circle, circle over 和 p g 基本上是不通用的,所以我不建议去花很多时间去学函数,因为它们差别真的非常大。 你用的时候去看一下文档,或者问一下 ai, 这样比较好一点。最后一部分叫窗口函数,它处在聚合函数和标量函数之间,既可以包含明细的细节,也可以包含聚合后的结果。比如说这就是一个简单例子,前面三列的数据来自于电影这个表格, 然后第四列做了一个开窗的预算,对于第三列这个数据进行了一个加总,然后我们没有指定加总的范围,它默认情况下是对于整个列进行加总。对于第四列这里返回的结果,它每一个行都是第三列数值的全表加总,你可以通过指定 partition by 的 方式来修改它加总的维度,比如说我们在这里 t 恤 by, 然后根据 rating 来进行加总。这样运行一下,这边 g 的 话,它的加总情况是五百一十四,然后这边的 p g 它加总的情况是五百九十二,所以根据不同的加总的维度,它会得到不一样的结果。 所以窗口函数既可以保留具体的数据明细,也可以保留加总后的结果,它还可以控制数据加总的范围,然后做排名, 在实际分析的工作中是非常有用。我总结一下,搜索中只有三类函数,第一类是聚合函数,总共只有五个,在所有数据库中都是通用的。第二类是标量函数,数量非常多,那比较遗憾的是,不同数据库之间是不通用的。第三类是窗口函数,它可以同时保留数据明细和聚合后的结果,在大部分数据库中都是通用的。

从今天开始我们来诉说声口,直接给大家上干货。第一部分关于声口安装和编辑器这个事,具体的文档我放在评论区里面,你们可以照着这个教程去安装,我自己按照这个教程安装是没遇到任何问题的,如果有遇到问题的可以在评论区或者交流群里面交流。第二部分我们首先来认识一下 neverk 的 界面,那首先的话我们先讲一下怎么连接数据库, 这里有个连接按钮,你点进来之后你就会发现很多的连接,然后我自己用的话是 my circle, 然后像我在工作当中用的话就是这个 p g, 你 可以选择对应的 circle 语言,然后在这里面你只要填你这个账号的名字 以及你的用户名和你的密码,然后这个端口在你安装 my circle 的 时候,它就已经定好了,那这个的话主机就是你的 ip, 如果说是你自己的电脑的话,你就直接写这个 local host, 就 如果说你要连接对应的电脑的话,那你就你就要写 ip 地址了,那我们连接完之后,你可以去测试一下,比如说我这个这个已经连接好的,然后我们可以去点一下测试,你就会发现它有个连接层,然后你点确定就行了。接着我们来看一下数据库的一些信息,我们这里双击进来,这里面就会显示 这个账号下面所有的数据库,像这两个的话是我自己建的,然后其他的都是系统默认的,系统默认的你基本上不要动它就行了,如果说你有需要的话,那你就重新新建,然后这里面会有个新建数据库, 点击它新建就行了,这里面把你想叫的名字给它填进去。然后这些四福级的话,排序规则的话我是不填的,因为我也不知道有什么用。如果说你做数据开发的话,可 能要知道一下这个东西是干什么的,然后点确认就行了,你你就能得到这样的一个数据库。然后我们进来数据库给大家讲一下里面的内容。这里有四个板块,一个叫表,试图函数和查询,然后表的话就是我们存数据的地方,所以你的所有数据表都是存在这个位置的,那第二个的话,试图函数这里面少了一个,还有一个叫存储过程的东西, 这三个东西在我的理念里面基本上是一样的,但是底层的东西是不太一样的,那它不一样的东西就是在底层逻辑里面,比如说内存之类的执行内容上面的这一块他会不一样。如果你做数分的话,这一块简单了解就行了。然后查询这一块的话,就是我们存放代码的地方,这个查询是怎么建的?你点这里新建查询,你就能得到这个写代码的位置了。 然后每次写完代码需要保存一下,然后这个是查询的名称,你就相当于它是一个文件名嘛。好,然后我们再讲一下,我们现在如果要做搜索的一些代码实现,我首先我们要有数据,这个数据怎么存进去是一个问题啊。存数据有两种方法,我们可以点这个表 右键导入向导,你点这个之后呢,你可以用这些文件的形式进行一个导入,那我们常见的话就是用这个以下文件,那导入文件,我们这里随便拿 c、 s、 b 举个例子,你导入文件的话,这里就是添加你的文件名称,添加完之后你这里要选编码,我给大家演示一下,像我这个文件的话,它就会出现乱码,如果用 u、 t、 f 杠八的话乱码的一个状态,所以这个就是你要选编码的一个很重要的问题。第二个就是 如果是文本型的文件的话,你就要选这个分格符,因为他是按分格符去确定你的数据的列和行的。然后接着就是这一块啊,圆的话,这里指的就是你的本地那个数据表的位置,然后目标表的话,就是你要见到这里的表,他叫什么名字,你可以随便改的。然后这个是不是新建表,你也可以去选,就是你是要选在之前的基础新建呢?还是说你要把 表导到现有的表里面,这个都是可以选的。然后下一步你就是关联这些字段,如果说有些字段你关联不住了。然后另外一种呢,就是你可以在这里运行搜索文件, 比如说我现在已经写好了这个表嘛,我导出的时候转成为结构和数据,它这时候输出的文件就是一个缩口文件,那这个缩口文件是可以执行的,你在这里运行这个缩口文件,它就会把你 执行的这个代码给它写进去。然后接下来我们再讲一个概念,什么叫数据表,什么叫表结构,我们刚刚在这里面你看到它会看到一个结构和数据这个东西,我们现在看到的它叫数据表,它是有真实的数据存在的,那数据结构是什么?我们右键 拿点设计表,这个就是表结构,这个表里面的字段的一些属性,比如说 id, 它是一个整数型的数据。然后另外一个就是这个有个长度,比如说你这工作它最长就是两百五十五个制服,你只要知道有这个东西就行了,这个东西我们不用管,这个是数据开发的人 做的事情。然后接下来我们来讲代码的实际内容。首先第一个搜索的四大组成部分,真商、改差,然后前三个的话我们是不讲的。如果说你是做数据开发的工作,你要去学, 那我们做的是数分,所以我们不需要去动数据这一块,因为这些数据肯定是会有专门的技术人员帮我们把这个数据给加进去了,然后我们只是去查数据、取数据,然后形成我们自己的报告,所以我们的工作内容最大的是在查这一块,所以我只想查这一块。查询语法的关键写法就在下面,只要我们一行一行的来过,这个是我们的基础查询语句, 它是分两个部分,第一部分是我们没有这个的情况下, select 星 from 的 表明,这个情况下就是查所有的表,我们可以在这里运行一下,看一下结果,对吧?我们把这个整个表的数据给查出来。第二种写法呢,就是我们不用新号,但是里面加了字段一、字段二这样的写法。比如说我们还是刚才的, 我只查 id 和他的工作名字这样的一个数据,我们可以这样写,这样子你就能得到对应字段的一个信息,所以他有两种查询方式,一个用新号,一个用具体的名字,唯一条件他就是一个筛选,这里面可以写条件一,条件二,如果你要写多条件的话,你这里就要加上关联符了,比如说用 and or 的, 这个很简单理解,我们看一下实际操作他怎么写。比如说我们要查 c 加加的,那就照等于 c 加加,然后我们运行一下,哎,这就是 c 加加的,如果两个条件呢?在 and 分 数大于一万分, 哎,这个就是多条件查询。那如果说我要判断我不仅要习加加,还要多个工作,那这里就会写这样的写法,跟还有什么是一样的可以看到吧。然后呢,你这个东西也是可以是一个值,也可以是一个表,进行一个计算。好。第三个部分就是这个勾拜,勾拜就是分组的意思,然后这里面会有字断一,字断二字断三啊,你要几 个字断你就加几个字断,那这里有个关键点,就是如果说你用勾拜的情况下,你这里的字断就只能写他对应的字断名字以及他的聚合结果。我这里给大家演示一下这个意思是什么。 比如说我们 go by 按这个 job 进行一个排序,然后我们如果是这样执行的话,它会报错的,所以你这里正确的写法就是写 job, 那 你也不能写其他的字段,但是你可以写聚合的结果,比如说我要求和每一个工作它的总得分是多少,这时候你就可以用一个上句函数,然后 把这个 code 给它算一下,这个时候你是能算出来结果的,那剩下的话就是这个 order by, order by 的 话那就是一个排序的函数,比如说我们现在想按这个 这个做进行一个排序,那我们就可以这样的写法,那你看它的排序结果就变了,那这里面有两个参数,一个叫 a s c, 这个就是升序,然后降序的话就是这个最后一部分就是这个 limit, 这个 limit 呢它有两种写法,第一种写法就是我只写前面这一部分,那它等同的就是 panda 当中的这个写法,那如果说它是这样写的话, 那它就等同以下当中这个写法就相当于第一个写法,就是取前面五个。我们这里给大家演示一下。然后我们首先看一下这个数据,它总共是有八行吗?那我们这里写 limit 五,它就会取到前五行。好吧,那如果说我写五逗号二,它就会取第六和第七行,这一块就是 circle 的 最基本的语法了。记得点赞、收藏、关注三连,分享更多的数据分析技能和思维,我们下期再见。

跨境电商是一个门槛极其低的生意,你说跨境有什么门槛?太多东西都现成的,你营业执照不会弄,你就找代办。那你营业执照下来之后,我们就申请 大部分晒到的店铺,像什么亚马逊啊, tiktok, facebook 都可以去做啊。那以我做 facebook 为例,你就去卖家精灵或者是 qq data 去 调研你所有竞争对手的数据,还有他的行业数据,产品销量啊,产品这个成本什么都有。如果你说不会做图啊,确实 ps 算一个技能,你可能不会用,那你就用 linux 把你竞争对手所有的图片全部拿过来,直接在线生成,那可以做出一堆图片出来,你随便用。 还有朋友问啊,网络怎么解决用纸鸟啊?现成的解决方案,你用一个纸鸟,你可以去同时运营十几个 facebook 账号,那还有一个发货,你直接找货代他帮你双清包税给你发过去,要是国内直邮的话,你就去找云图这种第三方的物流服务商,从注册到选品到发货,边干边学,你什么都会了。

速通收口第三期直接上干货,这期视频会结合 ai 这个工具来帮助我们速通收口。我们用一道题来做一个案例讲解,这一道题需要用收口查询出来他的中位数是多少, 如果只有一个中位数,那就输出一个,如果有两个的话,那就要输出两个,然后要按照这个规律进行一个顺序输出,结果是这个样子的,我们现在按照他这个思路进行输出,我们讲三种方法,第一种方法就是按照他这个结果给出的,我们怎么去构造他,我们看一下他的一个实践过程。 首先这里面会用到一个 repeat, 我 给大家演示一下这个 repeat 的 作用是什么?就是它可以对数据进行一个重复,我们刚刚看到的结果是 a 有 两个, c 有 四个嘛,那它的结果就会变成这个样子。接着呢我们用 group concatenate 这个函数进行一个合并,就我们要用这个函数变成这样的一个形式。然后我们用这个方法呢,这里面有一个分割符,我们用的空值,我们不用逗号。然后 order by 的 话呢,因为题目讲了要对这个 grade 进行一个顺序排序嘛, 就变成 a, b, c, d 这样的一个状态,所以我们最终就会得到这样的一个序列。接着呢我们去算中位数,这里面我定位了两个,一个叫左中位数,一个叫右中位数。首先什么叫左中位数?比如说我们刚刚看到的这个数据,你就相当于它有十二个同学,那它的中位数对应的是六和七, 对吧?那这里就是左中位数,这是右中位数,那如果说对于基数来说,它只有十三个的话,它的中位数就七。左中位数和右中位数都是一样的,它只有一个结果。首先这个 substring 的 方法跟 limit 很 像,只不过说比如说我们 limit 逗号一嘛, 他拿到的结果是多少?是二,是缩影为二的这个位置。但是 substring 这个方法呢?他一逗号一的话,他拿到的结果是一这个位置,这个是我们首先要区别的。那这里面 mod 的 这个函数的作用是什么呢?它是取余数,就是我们判断奇数还是偶数的一个关键点。我们可以举个例子,十三除以二,它是等于六于一, 那十二除以二,它的结果是等于六于零,所以我们可以通过这个余数去判断它是不是一个奇数还是偶数。如果它是奇数的话呢?我们就用这个方法,就十三除以二,它就等于六点五嘛,那四舍五入,它就变成七了,这个就是奇数的一个中位数。那如果是偶数的话呢?十二除以二 等于六,这是偶数的左中位数,能理解吧?然后我们再搭配这里面的一个判断,如果说是七的话,那他就是七逗号一,如果说他是六的话,那他就六逗号二,那他输出的结果就是六逗号七,这个是 七,所以他最终说出来的一个结果就是会说出他对应的。所以那像这个结果里面,他说出了结果是六和七吗?那他对应的结果就是 b 和 c, 他 最终会说出这样的一个结果。好,我们看第三步,第三步的话,我们是建了一张表,我们上一期视频里面讲过他这张表的作用是什么呢?那这个字段的名字一个叫 n, 这个 n 的 结果是多少呢?一、 然后我们刚刚讲说这这个生成的结果是 bc 嘛?那它的结果令死这个长度的话,那它就等于二。还有个字段叫 s, t, r, 然后 g, c 嘛,那这个的话,那长度就是等于 bc 啊,这个也是 bc。 然后呢,我们在这张表里面还是用这个方法,比如说他取第一个 e, 逗号 e, 那 就是 b, 对 吧?这里是二,逗号 e, 它就 c, 这样我们就能取到最终的一个结果了。然后外面我们欠了一个 distance, 如果说它取出来的结果是 b b, 那 我们可以用 distance 去重它,最终的结果就等于 b 了,这样我们就能得到这个问题的结果。但是这个题目在牛科上会有问题啊,给大家演示一下问题是什么,然后分享给大家怎么用 ai 解决这个事情。 首先我们在牛客上执行这一段代码,你看他测试的结果是没问题的,但是一旦提交你会发现就出现问题了,这个用力他通不过,预期输出的结果是 d, 但实际输出的是 c。 给大家展示一下我怎么用 ai 解决这个问题。首先我先让他记住我的需求,就是我给他的一些背景,这是建表的一个逻辑。然后呢,这是我的代码。好了,接下来我就会提出我的问题, 这个代码理论上的运行结果是 d, 为什么实际结果是 c? 而且要加一个限定这个代码,你就会看到这个球中位数的写法是错的,因为 这个函数它有个长度的限制,默认是幺零二四自解,然后我就会基于这个问题去问他为什么会有这个原因产生,然后他这里又给出他的一个答案,默认是这个样子,这里他给了一个解决方法。 ok, 我 们现在拿到解决方法之后,我们就要去测试一下是不是这个原因产生的。我们回来这个代码看,然后我们这里有一个代码,就是我们复制过来的,然后我们对它进行一个运行,你会发现它的结果就是 d, 你 看 这里的结果就是 d 嘛,所以我们这里输出了也是 d, 那 你能确认的就是确实是因为这个函数的最大长度限制了这个结果,这样我们就能解决这个问题。接着我们来看第二种写法,这个写法呢,首先我给大家看一下他前面的第一张表的一个过程。我们首先先算一个累加函数,你看这个 a 等于二,它的结果就是二, b 的 时候它就是 a 加 b, 所以 它就是二加四等于六,这是一个累计函数。接着呢我们在这个表里面去算一个它的中位数,这个中位数有三种写法,这是第二种,我们刚刚用的是一个 length 嘛,这里用 max, 你 看这个最大值就是十二,所以它结果也是十二。那后面的思路都是差不多的,我们就算出来一个结果,这里给大家演示一下。我们首先算出一个中位数,一个是六,一个是七,对吧?那这个表里面呢?它会判断这个 s 大 于 m, 一 大于等于六嘛?那就这块内容。然后呢我们这里还有一个表,里面就宽出来这张表里面它会取到 b 这个数据, 这个是第一行代码实现的结果,然后第二行代码呢?这里是 s 大 于等于 m 二,也就是说它大于等于七,那它对应的结果是哪一个呢?是这一款,然后同样还有一个 limit, 所以 它输出的结果是一个 c, 用用眼光连起来之后,它的结果就是一个 b c, union 和 union o 的 区别。我们上个视频已经讲过,如果说它的输出结果是一个 b, 还有一个 b 的 时候,那它的输出结果就会变成 b 了,它会进行一个驱虫,所以我它能保证我们得到的答案是正确,这是第二种方法。好的,我们来看第三种方法。首先还是给大家看一下它的结果是什么?我们先讲思路,在这个表里面呢,它生成了两个序列,这个是正序列,这是逆序列, 正序列就是从 a、 b、 c、 d 开始累加,逆序列就是从 d、 c、 b、 a 开始累加,你会发现它两个结果是反过来的,那这个是算中位数,左中位数,它用的是这样的一个方法,就是用开窗函数把这个求和算出来,每个值都是二,然后我们除以二就行了,然后取四舍五入,然后呢, 这里面我们只要判断这两个条件成立的情况下,我们就能拿到我们想要的吃。为什么是这两个条件?比如说当这个证券大于等于中位数的时候,他出现的结果是什么呢?他就会出现这样的一个数据表,如果说当他逆序大于等于这个表的时候,那他会生成这样的一个数据,能理解吧?这两个数据共同作用的情况下,取一个交集,你会发现中间这一块 就是他的交集,那得到的结果就是 b 二 c。 所以 他用两个关联条件进行一个判断,取一个交集就能得到他对应的中位数的位置了。记得点赞、收藏、关注三联,分享更多的数据分析技能和思维,我们下期再见。

ok 啊,作为一名拥有七百七十一位粉丝的晚安教学博主,从今天起,我将用五年时间为我所有粉丝朋友讲解全部晚安知识。今天讲的是 spo 注入实战进阶警告,此系列视频耗时一百八十天,制作共计一百五十六小时,由于视频太强分析,五期发布,带你从零基础小白变成黑客大佬, 真心希望各位观众老爷们不要白嫖,你的三年是我更新的动力。大家好,这里是专业且实用的网络安全课程,从今天开始,我将带领大家走进一个全面更新的网络安全知识体系。 筹备这套课程之前,我以一个网络安全小白的视角,彻底放空大脑,重新审视这一领域。我花了一个月的时间浏览了众多网站上的网络安全教程,有的教程播放量寥寥,有的则高达数千上万,但给我的感觉就是鱼龙混杂,滥竽充数。 所以我就在想,有没有这样一套课程,既能让零基础小白轻松听懂,又能在课后提供丰富练习资源的课程。因此,我整合了网络安全的所有核心知识点,采用深度有趣的讲解方式,结合实际案例进行操作演示,历时三个月,终于完成了这套课程,让你体会到什么是每一秒都在疯狂的输出知识点。 我们的课程将分为基础篇、进阶篇、实战应用篇三个部分,帮助大家快速上手网络安全基础篇。我们将手把手教大家搭建网络安全实验环境,学习网络安全的基本概念、常见攻击手段、防护策略等,用最浅显易懂的方法帮助大家打好基础,在掌握基本知识后,我们将进入进阶学习, 包括网络协议分析、系统漏洞挖掘、密码学等内容。掌握这些知识后,我们将进行实践项目的操作。值得一提的是,我还会提供配套的思维导图,让大家在学习过程中不必担心笔记问题。 实战应用篇,我们将带领大家进行实际操作,如网络工坊演练、安全检测、数据加密解密等。通过实际操作提升大家的网络安全技能,将理论知识转化为实际应用,让我们可以将所学的知识进行变现,流进我们口袋。 最后我还为大家准备了一份小礼物,课程中涉及了所有素材,包括网络安全实验、环境搭建资料包、从零到一的学习计划表、大量的学习资源、电子书、课件等,只要你想得到的,这里都有, 只需评论留言打卡学习即可免费打包带走。相信我,这套网络安全课程将是全网最全面最易懂的新手必备课程。如果这套课程对你有所帮助,请给我们一个免费的一键三连,让更多想要学习网络安全的小伙伴看到这个视频。接下来让我们正式开启这套系统课的学习吧! 大家好,那么在这节课咱们来讲解一下 circle 注入它的一个简洁与危害。先来了解一下什么是 circle 注入, circle 注入呢?它是一种常见的网络安全漏洞和这个攻击方式, 他会利用应用程序对用户输入的这个数据的处理不当,使得攻击者能够在执行 sql 查询的时候插入恶意的这个 sql 代码。那么这个东西怎么去理解?很简单,比如说我现在我要去数据库当中查询某一个人的一个信息, 但是在这个数据库当中,他有可能存在我当前这个平台的一个登录账号和这个登录密码。那么我在查询的一个这个过程当中呢,如果被这个攻击者他注入了一个这个恶意的这个代码,之后就是他找见我的这个语句, 然后注入一个恶意的代码,那么他呢甚至就会得到我当前数据库当中所有的一个登录账号和这个登录密码,那么他呢就是通过这个成功注入恶意的一些代码。攻击者他可以执行未经授权的数据库的一些其他的操作, 获取一些敏感信息,甚至可以篡改你的这个数据库,或者破坏你的这个数据库。最简单的一个例子,就好比我现在考试,对吧?我考砸了, 我干嘛呢?我进到你学习的数据库当中啊,我让然后把我的成绩可以做一个这个更改或者其他些操作,这个呢就是咱们的一个 circle 注入它的一个危害。 ok, 那 么概念咱们呢简单给大家讲解一下就行,关键呢还是咱们的一个实战, 今天的实战有两个案例,第一个案例呢是比较简单的,也是给大家做一个演示的一个操作。 第二个案例呢,难度稍微有点大啊,我们先从这个第一个案例开始。好,那么下面我们呢启动咱们的一个这个 php study, 那 么今天咱们会用到这个数据库,所以说我们做的第一步干嘛呢?先 win 加 r service 点这个 msc, 我们先进到这个服务的这个列表页,找到咱们自己电脑上的这个莫斯科啊,因为我们电脑上的莫斯科安装的呢,是那个八点零的一个版本,对吧?那么我们就需要干什么呢?把咱们的一个服务呢给他停止一下啊?因为我这个地方我已经停止了,但 大家如果没有停止服务的话,先把服务先点一下停止,然后点一下确定自己电脑上的 my circle 先给他关闭。关闭之后干嘛呢?我们要用的是咱们 php study 上面这个 my circle, 他的版本呢是这个五点零的,刚刚符合咱们的一个这个需求。 好,那么我们把这个操作给他做完成之后,那么一定要切记啊,重新给他做一个这个启动,这个地方点一下停止,或者点一下重启, 重新给它启动起来。启动起来之后,那么下面我们来连接一下咱们这个 p h a study 上面的这个 mycircle, 因为我们之前没有用过,对吧?没有用过的话呢?我们,呃它上面的这个数据库里面基本上没有什么其他的一些这个信息啊,那么这个地方我先把这几个先给它删掉啊, 还有这一个也给它先删除。好,那么删完之后我们重新来做一个这个连接 mycircle, 那么连接您随便写,比如说就写一个 php s t u d y study, 然后下面的话密码呢?就是一二三四五六,对吧?啊?不是啊,这个密码不是一二三四五六,这是我们自己的 这个地方的这个密码的话也是 r o o t root, 它这个地方就是我们在把这个 php study 上上的这个 my circle 给它打开之后,这个地方有一个 my circle 的 一个这个工具,对吧?有一个设置 或修改密码,点开之后这个密码原密码是多少?它默认是 r o o t wrote, 大家呢可以修改,也可以不用修改原来密码,我们就给它暂时放着就行了,对吧? 默认密码就是 r o o t, 我 们写完之后,我们测试这个连接,看它是否连接成功。这个 novel kit 的 话,很多小伙伴没有安装,没有安装没关系,对吧?我们如果有安装的这个 nova kit 的 小伙伴呢,可以用这个 nova kit, 如果没有安装这个 nova kit 的 小伙伴,咱们还可以使用 ph 的 一个编辑器,对吧?这个软件咱们之前是安装过的。 好,那么我们在这个 nova kit 当中连接好了这个数据库之后,我们来看一下它这个里面只有这么几个数据库,对吧?因为我们没有用过。 好,那么如果大家以后啊安装了这个 novokit, 我 们可以在这个 novokit 当中干嘛呢?来对它进行一个这个使用,对吧?我们在这个地方呢可以输入一些这个 sql 语句啊,来进行一个操作。 如果没有安装这个 novokit 的 小伙伴,没关系,咱们就不安装了,因为安装它很麻烦,还要破解,还要干啥的啊?如果大家有这个资源的话,也可以进行一个安装,没有的话,咱们直接打开我们 php 的 一个这个编辑器就可以了。 在这个编辑器里面打开之后啊,左边这个东西我们啥都不需要动,我们来看右侧,右侧这边有这么一个数据库的一个图标 data bytes, 对 吧?我们把它点一下,点开之后呢这边有一个加号,选择 data bytes, 然后有一个 mycircle 给它点一下, ok, 等它弹出这个页面,弹出这个页面之后,咱们这个地方的话, user 账号呢就是 r o o t, 密码呢也是一样 r o o t, 对 吧?写完这两个之后,直接点击测试连接就可以了, 刚刚 nova kit 里面能连接成功,咱们在这个 p h p 的 编辑器当中也可以连接成功,点击 ok 就 行了,对吧?那么这样的话我们已经连接成功了咱们的一个这个数据库,我们来看点击这边的三个点,对吧?里面的数据库都在这个地方,对吧? 好,那么数据库连接成功之后,那么今天我们要用到的一个把场环境呢,也已经给大家准备好了,在这个里面它的名字是 login, 我 们把这个 login 给它复制到咱们这个 phpstudy, 它的一个三 w 的 一个这个目录下面 找见咱们的一个这个 phpstudy 在 python 当中低盘啊, phpstudy 下面这个 phpstudy 杠,这个 pro 是 咱们的小皮面板啊,两个哪个都可以用。 好,找见这个三 w 之后,这是我原来放进去的,我给他先删除,然后重新给他 ctrl v 粘贴一下,对吧?粘贴进去就可以了。好了,那么这个呢是咱们的一个这个 logo, logo 先给他写上,写完之后,那么下面的话我们直接来打开它就可以了,这个 那么路径咱们不用变,对吧?这个地方我们选择这个其他啊选项的设置,然后有一个端口常规设置, 在这个端口常规设置当中有一个网站目录,这个网站目录一定要注意啊,必须是咱们这个 phpstudy, 就是 刚刚那个 logo 所在的一个路径,如果不是的话改一下,对吧?选择这个打开,然后这边找一键 d 盘, 第一盘里面有一个 p h a study, 然后有第一个选项,打开找见这个三 w, 对 吧?在这个三 w 的 下面,我们来看是不是 logo 就 在啊,点击确定就可以了啊,然后点击应用, ok, 好, 那么你可以把这个东西给它重启一下,它会自动帮你重启这个 app 的 一个这个服务。 那么重启完成之后,我们先不要着急去啊,开启它的把窗啊,我们干嘛呢?还需要做一个事情,在咱们的这个文件当中有两个来打开,打开之后有两个 sql 文件,这两个 sql 文件的话,我们需要给它注入到里面,点击这个 my sql 管理器, 然后有一个 my sql 的 导入和导出,我们把密码输一下 r o o t wrote, 然后这个这个数据库名咱们不用管啊,直接选择要还原的这个文件,对吧?比如我们先选择这个 bug b i n k, 选择好之后名字 b i n k 输入,对吧?点击导入, 好,那么稍微等待一下,这个很快的导入完成之后,我们再选择另外的一个文件 game, 然后这个地方也是一样, g m game, 点击这个导入好了,那么现在他呢就把咱们的两个这个文件给我们导入进去了,我先喝口水, 导入进来之后,我们下面要去做一个检查,对吧?打开咱们的一个 php store, 然后在这个地方我们刷新一下这个数据库啊,多刷新几次好,刷新完成之后,这个地方零 o r 四变成零 o r 六了,对吧? 点击里面可以发现这个 bug 和这个 game, 对 吧?这两个数据库是不是给我们导进来了,对吧?在 game 这个数据库里面有两张表,一个是 news, 一个是 user, 对 吧?这个 user 表呢?它里面放的是我们当前的这个平台,它的一个这个登录的账号和密码, 好,那么下面我们已经把这个数据呢给他放到这个数据库里面了,那么下面的话,我们就需要来给他做一个这个远程的一个这个访问,咱们打开这个火锅滤暖器的一个渗透板, 好,打开这个浏览器之后,我们先第一步啊,先把这个代理先给它全部都关闭,这个地方咱们不需要使用代理,对吧?点击高级点击这个网络设置啊,里面的话不使用代理,然后点击确定就可以了。好了,那么把这个设置好了之后,我们直接访问 l c l h o s t, 对 吧? local host, 然后走啊,这个是咱们的一个站点,对吧?然后下面的话我们访问它的 logo l g n, 对 吧?走,走完之后,好,那么进到了这个登录的这个页面里面, 进到这个登录里面之后,那么咱们的账号和密码,对吧?正常的账号是这个虚竹,对吧?密码呢?是一二三四五六,或者还有一个是段域,对吧?例啊,我们先随便登录一个正常的一个账号, 如果账号和密码没有问题,可以发现,对吧?这个地方一虚竹,一二三四五六,对吧?这是咱们的虚竹账号,这是咱们的密码,是不是?在这里面,如果我们登录失败的话,我们来看一下,随便输一个名字,比如说啊,等命,对吧? 啊,等命完了之后,密码一二三,好,对吧?就说我现在干嘛呢?我要登录你的平台,我不知道你的账号,我也不知道你的密码,我点击这个登录,我们稍微等待一下,好,对吧?他出现了这么一个东西, 上面这个是咱们的一个 sql 语句的一个查询,对吧? user name, 阿德密 password, 一 二三,它的密码账号是不对的,对吧?那么下面这个地方它是提示了一串这个乱码, 乱码的话是由咱们当前的这个 logo 点 php 这个文件所引起的一个这个乱码啊,他的意思其实就是账号密码不正确啊。如果大家呢对这个感觉,哎,我不希望他出现这么一个东西,对吧?那么我们可以给他设置一个这个编码吗?在这个地方 h e d r 嗨的,我们把这个给它 tab 一下啊,嗨的一个括号后面跟上一个分号,在这个里面呢,我们把它的编码给它设置一下啊。 ctrl shift c o n t e n t content 杠,这个 t y p 对 应的是这个 type c 或者 h t m l, 好, 那么这个写完成之后,下面的话是它的一个这个编码, c h a r s c p tr s set, 等于这个 u t f 杠八,好,把这个编码给它设置一下,设置完之后保存,保存完之后我们再来刷新一下, 刷新完之后,对吧?用户名啊,或者这个密码错误,好了,那么这个呢?是咱们的一个这个登录, 那么现在我们来看一下我们怎么对它进行 sql 注入,我们来看咱们的一个这个课间目标,首先第一步我们没有账号和密码,对吧?我们得获取它所有的一个这个用户,对吧?好,那么下面我们先来在这个地方来做一个简单的一个测试吧, 如果我们要查询现在干嘛呢?我们先站在这个上帝视角,对吧?查询的话,是不是 select 信号 for us, 对 吧? usem 嘛,对吧?这个我们是知道的,嗯, 我们先 use 到这个 game 里面啊, user game 这个数据库。好,那么进到这个里面之后,我们下面 select 信号 from 咱们的一个 user 这张表,对吧?来查询一下嘛? 查询完成之后我们来看,对吧?账号是虚竹,密码一二三,对吧?账号是段域,密码是六五四三二一,好,那么现在这个是我们正常情况下,对吧?访问它的时候我们可以直接获取,那么现在干嘛呢? 我啥都不知道,对吧?比如说不知道你的账号,我也不知道你的密码,对吧?我怎么给你查询呢?好,那么下面我们来看这个地方他是怎么去查询的? 进到我们的这个文件当中,把这个先给他最小化了,进到这个 log 点 php 里面,我们来看一下他的这个里面的一个输入,对吧?下面是咱们的一个查询语句,可以发现 select 信号 from user, 对 吧? where 什么呢? user name 等于 user, password 等于 p a s s 这个地方的这个 user 和这个 ps 是 它什么东西? 它其实就是我们在这个地方输入的这个 user 和这个 ps, 对 吧?就是我们输入的东西,它要拿来做一个这个对比嘛,就连接两个条件来进行一个查询,对吧? 好,那么既然你是连接两个条件来进行一个这个查询的话,好,那么下面我们也来简单来写一下这个代码,对吧? select, 来,我们在这写一下重新 select 新号否否? user, 对 吧?好,那么这是你的 sql 语句后面的话条件, where? where 什么呢? where 这个 user name 等于什么呢? 欸?这个地方 user name 正常来查询,对吧? user name 等于虚竹,对吧?然后 and 这个 pass word 等于这个一二三四五六,对吧?来走,走完之后我们可以查到我们的一个账号,看到没有?那么现在有个问题就是我不知道账号,也不知道密码,怎么办呢? 我随便输入一个 a d 密,阿德密,对吧?我不知道你的账号,那么账号呢?就是阿德密,对吧?也不知道你的密码,密码干嘛呢?我给你说个空的,对吧?来走,走完之后什么都查不到,对吧? 什么都查不到,为什么呢?因为这两个条件没有一个是满足的,对吧?那么怎么办呢?我就得想办法给你构建一个能够满足的一个这个条件,对吧?我要查你的 user name, password, 对 吧?怎么构建呢?我们在这个 他的一个这个他缩的后面给他跟上一个这个 o r, o r 什么呢? o r 写一个一等于一, 一等于一条件成立吗?我们在这个里面来看一下,对吧?是不是每个里面都有这个一啊?对吧?一等于一,这个也是我们猜的,对吧?随便写一个一等于一,对吧?写完这个一等于一之后,我们再来走一下这个密码,对吧?可以发现,哎,查到了,对吧? 前面的这些条件它没有一个是满足,但是后面它有,对吧?一等于一有没有一等于一有啊,对吧?每个里面都有, 对吧?可以发现我给你查到了,对吧?那么这个呢?就是咱们的一个这个 security 群啊,我们在执行它的时候,我们按一下这边的一个这个 extra 或者快捷键 control, 加这个回车啊,也是可以的。好了,那么这个呢?是咱们的一个这个当前的这个条件,对吧?好,那么下面我们现在是以黑客的身份,对吧?我不知道你的账号,也不知道你的密码,账号我的密,密码一二三四五六随便说,因为我不知道你的账号密码到底是多少,对吧? 随便说一个,点击这个登录,点完这个登录之后, ok, 登录错,对吧?我们来把这个地址给他复制过来,上面这个是他的一个 sql 语句,好,我们下面到这个地方,我们重新打开一个,把这个 关闭, ctrl, 对 吧?走,走完之后这个地方,这个应该是他的一个这个这个宾馆啊,这是登录两个字,对吧?那么现在我们来看这个地方 user name 和 password 这两个条件是不是均不满足啊? 不满足干嘛呢?我们就在中间干嘛呢?把刚刚的这个条件给你加上,怎么加呢?记住啊,我们要加这个引号里面的内容 啊。 pass 的 后面跟的是一个引号,对吧?我们要把这个引号就是我现在选中的这部分内容给它复制过来。 复制过来干嘛呢?我要给你添接到我们的这个条件里面,对吧?怎么添加呢?我们就随便在这个位置,比如说 u z 等于这个 a d m, 对 吧?在这个 a d m 的 后面 ctrl v 一下,然后加一个空格隔开,对吧? 加完之后我们走,走完之后我把这个给它复制过来, ctrl c, 啊,来看一下我是怎么加的,对吧?就是把这一段啊,把咱们的猪的这一段干嘛呢?加到了这个呃的命后面的这个地方,对吧?呃的命后面的这个地方,这个地方不知道大家能不能看清楚 啊?就这个 user, user 等于呃的命 o r, 对 吧?呃的命 o r e 等于这个一,对吧?一,后面给它加上了一个这个空格啊,这个地方可能看的也不是特别特别大,咋有可能有点小,我这边给它就这么复制一下吧,也行, 这个后面的这个等于它是一个登录两个字,对吧?这个登录两个字,我们给大家换一下。登录好,那么下面的这个是怎么注入的?我们把它给复制一份, ctrl c, ctrl, 就是 把这一串给它 ctrl c 复制过来,在这个呃得命的后面 ctrl 加一个空格, 就这一串,对吧?就这一串我们给它加进去,加进去之后大家可以发现,对吧?我现在不知道你的账号,也不知道你的密码,可以发现,哎,虚竹,一二三,对吧?这是不是你的第一个账号?我是不是已经给你找进了? 虚竹啊?一二三四五六,对吧?你当前的一个这个登录账号,对吧?我是不是找进了,那么后面的话我们干嘛呢?可以把这个密码,对吧?我不知道你的密码,怎么办呢?我给你干掉了,对吧?走,走完之后 稍微等待一下啊,不好意思,走完之后 pass word, 比如说等于一随便写一个,对吧?走,走完之后我们来看啊,这个地方改了一个啥东西来着?算了,这个地方我们就不改了,比如说就一二三四五六,走 简单的一个改动,对吧?简单输一下,对吧?密码、账号是不是都给你进行了一个这个查询啊?对吧?好,那么这个呢,是咱们当前的一个这个简单的一个 circle 注入的一个演示,对吧? 就是我们在不知道你的账号和密码的前提下,干嘛呢?我们就可以获取到你当前的一个这个账号和密码,对吧? ok, 那 么这是咱们的第一个简单的一个这个案例,就是我在啊 不知道你的账号和密码的前提下,我给你进行一个输出,但是还有个点干么呢?就是我们现在所做的这个目标是与当前页面和用户是有关系的,对吧?因为我们这回做的呢,就是一个这个登录页啊, 当前的这个登录页和你的用户密码有关系,有关系,那么咱们做的话肯定是比较简单的,对吧?比较舒服,比较简单。那么下面干么呢?核心来了,我们来做一个这个复杂的案例, 对吧?这个复杂的案例呢,在咱们的一个这个路径当中,这个是 url, 应该是我来看一下它的一个路径, 这个地方我并没有写这个路径,对吧?它是咱们当前的,我把这个先暂时给它先删掉吧,这个里面暂时我们就不用了啊,把这个先给它关闭。那么好下面干嘛呢?我们要访问这个 url 这个路径来进到这个地址里面,我们把它先暂时给它删掉啊,不删了,就留在这吧。这个 我们下面的话,打开咱们的浏览器也是一样, look host 下面的这个 logo 下面的 l g l logo 下面的这个 url, 点这个 php, 我 们先进到它的这个路径里面,对吧?进到这个路径里面之后, ok 啊,那么我们来看它的这个文件,我们也是要去看一下这个 url, 读一下它的一个代码啊。 在这个里面的话,我们来看第一句,它是有一个 get 一 的一个参数,叫 d a t e, 对 吧?这个 d a t e 它干嘛的?它是这个地方,我们来看 select 信号符号么? news, 对 吧? where? 然后 data s t r 等于这个 d a t e, 也就是干嘛呢?我去这个 news 这个数据库当中,我们来看一下, 在 news 这个数据库当中,对吧?我查询这个 data str, 对 吧?就是我们输入这个条件嘛,那么我们把这个路径给它跟上,这个是一个时间,二零二三,一零一二,对吧?我们把这个参数呢给它更一下,在后面来 问好, d a t e, 对 吧?二零一三幺零一二。我们先随便访问好,比如说现在我们有这么一个地址,对吧?这个是一个游戏公告的一个地址,比如说某某人,对吧?给我们给了这么一个地址, 这个就是咱们的一个游戏公告。好了,那么下面我们来一个一个来进行一个这个分析,对吧?现在同学们这个页面与咱们的登录有没有关系?完全没关系啊,这个地方,这个 circle 语句呢?我是给它打印出来了啊,打印出来也是为了方便大家去做一个这个观看啊,或者干嘛呢?我给它取掉,不打印了, 依靠这个 circle 注视起来, 好,不打印它了,对吧?不打印它的话,我们重新来刷新一下,比如说现在干嘛呢?我们当前这个是一个这个游戏公告,哎,怎么还在打印 哦?没保存啊,不好意思,保存一下,然后重新刷新。 好,那么现在我们来看这个呢,是我们根据时间去数据库当中查询两个游戏公告,对吧?新手福利啊,充一百送两送二十,对吧?时间以版本更新啊,新增了一个这个 boss 时间,对吧? 好,那么现在在这个页面当中,我们要获取你的这个当前的这个登录账号和登录密码,对吧?就刚刚那个平台登录账号和登录密码,哎,那我们怎么给他获取啊?现在就比较麻烦,对吧?难点,我们来看第一个 怎样获取用户,难点就是我们先第一步我们得知道数据库的名字,对吧?知道了数据库的名字之后,一般来说我们来写下步骤吧,我们在做一个这个查询的时候,第一步呢就是先知道数据库的名字, 找到数据库的名字之后,那么下一步呢,就是数据表,对吧?先找数据库,找到数据库之后找你的这个字段,对吧?然 然后再找你的这个账号啊,或者这个密码,对吧?那么这个过程就比较复杂了,现在我们是啥都不知道,对吧?啥都不知道,所以说呢, 我们得一个一个去找一下你的这个数据库的一些各种各样的东西,好,难点是,对吧?不知道数据库的名字,啥都不知道,没有任何信息, 我们来看处理点当前页面呢,和这个用户是没有关系的,但是我们有一个入手点啊,哪个地方呢?是不是后面这个时间啊?这个时间后面跟的这一串字母串,是不是他根据我们条件来进行一个这个查询啊?对吧?也就是说我们下面来看一下,咱们在这个 地方,我们来写一下,把,它现在是关闭,对吧?我们这个地方来啊, user 啊,就是 game 里面,对吧? select 星号 from 咱们的一个这个,呃, news, 我 们先来查询一下这个,对吧?这个是咱们今天,就是 啊,这是我们唯一的数据,对吧?就是我们刚开始的时候是不是根据这个条件来进到这个页面当中的?所以说我们现在有一个条件,什么条件呢?就是这个,喔呀什么的,喔呀,咱们的一个这个 data s t r 等于,这个,不好意思啊,它等于二零二三,一零一二啊,来, 二零二三,一零一二,对吧?这个是我们目前唯一知道的一个这个信息,对吧? 我们要根据这个条件来进行一个查询吧?就像我们这个地址,对吧?这个地址是我们目前所知道的唯一的这个信息,好,对吧?后面的这个 get, 这个二零二三,就说我们在后面传的这个参数,是不是就是我们当前这个条件,就是 sql 语句查询的一个条件, 对吧?那么目前我们仅仅只知道这么一句,只知道这么一句的话,我们怎么去查询你的数据库呢?对吧?那么查询数据库的方法我们先来看第一个,我们现在先站在上帝视角先写下 select 这个星号, 不,不好意思,不,不要 select 信号了, select 什么呢? select 了一个这个 data base 啊, d a t a b i s e data base, 这个是这个语句,是咱们查看我们当前这个数据库的一个这个语句,对吧?有一个 game, 对 吧?通过这个语句啊,我可以查看到你的这个数据库, 好,那么查看到数据库之后,我们下面怎么办呢?怎么给你做一个拼接呢?对吧?怎么查询你当前里面的一些这个条件? 这个时候难题就来了,对吧?就是我们现在只知道这么一个东西,对吧?哪怕现在干嘛呢?我把这个也给他干掉,对吧?干掉之后同学们,我们这个是我们唯一的条件,对吧?入手点是他,那么下面的话这个语句呢?他可以帮助我们查看我们当前的一个这个数据库,对吧? 查看当前的数据库,那么下面我们有个事情,什么事情呢?我们能不能把这一段代码当做你的正规的 sql 语句,给你放到这个参数的这个地方,让你去执行,对吧? 放到这个地方让你去执行一下的话,哎,是不是你就,对吧?就是这个地方,你原本查的不是二零二三一零一二吗?对吧?如果我不让你查二零二三一零一二的,我让你查 select data base, 对吧?就是我把这边给你换一下,换成他,哎,是不是就可以?但是啊,我们不能直接换,为什么呢?我们不能直接在上面给他写这玩意,我们得给他拼接才行啊。直接写这个东西的话,我们来看他的一个效果啊, ctrl c, 然后在这来,我们新打开一个页面, ctrl a 走,走完之后我们来看他的这玩意,这是什么东西? 啥都不是,对吧?啥都查不到,所以干嘛呢?我们得把这两个条件给你拼接在一起吧,它里面不是原来有一个东西吗?我们得把它做一个拼接。怎么拼接呢?我们下面的话,对吧?这个地方带他干嘛呢?他就等于一个这个这么来写啊? 带他我们把他给在是干掉,对吧?等于什么呢?等于这么一个东西啊?我们先把这个写上吧,对吧?拼接的话这个地方来写,把他的结束符给他干掉。 u 纽 union, 对 吧?拼接可以发现,对吧?这个框框是不是把这一段代码都包裹住了,对吧?拼接什么呢?拼接 select database, 好, 拼接 select database, 我 们直接这么写,可以吗? 直接这么写的话,可以吗?肯定是不可以的,对吧?有问题报错了,对吧?我们把这个给它写好一点吧。 unix 啊,我们把这个给它简单啊,就是给它做一个这个规划,写好一点啊,把这段语句都给它包裹进来吧。 ctrl x、 ctrl a, 对 吧?直接走,走完之后我们来查询,没有查询到东西,为什么呢?当前这个表一二三四,对吧?它有四个字段啊, 这四个字段关键来了,对吧?这四个字呢?我们是怎么知道有四个字段的,对吧?我也进不到你的数据库里面, 既然我进不到你的数据库里面之后,我怎么知道你有四个字段的?其实这个地方咱们就要投机取巧了,对吧? 我们刚开始打开你的这个页面,哎,你刚好一二三四,对吧?四个字段,对吧?我们就假设现在你的这个表里面啊,就是你存放你的这个数据的表里面,总共就有这么四个字段,对吧?好,那么怎么办呢? 既然你有四个字段,我这个地方是不是只有一个字段?因为 select the bass 刚刚是不是只查到了一个数据库啊?对吧?我们怎么给你再拼接几个字呢?我们后面写个逗号引号 啊,这么给你拼接逗号引号,逗号引号,给你拼接三个空的,对吧?拼接三个空的之后我们再来走,走完之后我们来看一下这个效果,呃, 这个地方它还是没有查询到 unix select a 这个地方就有点问题了,我们把这给它放到后面吧, ctrl x 啊, ctrl a, 分 号结尾,对吧?走,走完之后, ok, 是 不是查询到了同学们, 对吧?后面的这三个字呢?都是空的,对吧?我们是不是通过这个语句查询到了你的这个就是数据,对吧?那么好,下面我们应该怎么做?我们是不是需要把这一段代码给它注入进去, 对吧?怎么注入呢? ctrl c, 对 吧?你在这个地方原本不是查的一个这个,我们来看,你原本不是查的二零二三的,你要查这玩意啊,我们要把它用引号引起来啊, 引起来, ctrl a, 对 吧?你原本查的是二零二三,对吧?现在干嘛呢?我来查询你的这个玩意,查询完之后, ok, 是 不是 get 这个库,我们得到了,同学们, 对吧?来,我们 ctrl c 一下,把它给 ctrl a 复制一下啊, ctrl a, 对 吧?我们一步一步来,你原来的这个不是一个来 ctrl c 啊,你原来不是这个地方等于这个二零二三,一零一二吗?对吧? 那么现在干什么呢?我把你的这个 sql 就 给你换了,换成什么呢?换成这种格式来,我把它给这个地方,我把它放到一起。这两个 好放在一起啊,这么一行来走,走完之后吧,也是这样,可以查,对吧?放到一行里面,对吧?这个地方我现在是可以正常给你查,对吧?就你原本这个地方有个二零二三,一零一二,对吧?现在干掉啥都不要,对吧? 啥都不要,然后干嘛呢?用空来把我的这段语句给你查,拼接到,对吧?就是用这段语句干嘛呢?我可以查询到这个地方,他是有编码方式啊,所以说我们不用这个了,这个我们给他关掉啊, 我们在这个里面来给大家演示,在这个地方就是原本你的这一句代码不是查询你的数据库吗?查询你的这个页面吧,对吧?现在把它关掉,我把这一段语句给你拼接上 这一段语句,就是我要专门去找,干嘛呢?找你当前在查的时候,你有哪些数据库?就是骗下你,你本来是去查那些数据的,对吧?就是那些什么 boss 啊,新手福利的,我给你改了一下,把你的那个东西给你删掉了,把这段语句给你加上,对吧? unix 是 拼接后面的这段,关键是后面这段,对吧? 拼接后面这段,对吧?把这个一给你一写, ok, 是 不就可以了,对吧?这么一来的话啊,那么为什么要给它后面拼接三个?因为我们这个 news 这张表里面,对吧?它总共有四个字段嘛,对吧?有四个字段,我们这个地方也得给你拼接四个字段才可以,这样的话我们才能找见你的 game, 对 吧? ok, 那 么第一步是不是就完成了,对吧?第一步干嘛呢?我们已经找见了你数据库的名字,对吧?数据库的名字,找见之后,这个呢是咱们输入的一个片段,下面干嘛呢?我们就需要找你所需要的一个这个表呢? 好,那么找你的表的话应该怎么做呢?我们也有它对应的一个词汇句,我们先从上帝视角来走,对吧? select 星号 from, 好, 那么现在对吧?怎么找呢?现在找这个表的话,我们有一个东西叫 information 啊, excel 杠,咱们一个这个 set 麦点什么点?一个 tabos 分 号来走,走完之后,对吧?通过这么一段语句,我们可以查询到全部的表啊,但是全部的表都是我们需要的吗? 肯定不需要,我们需要的哪,哪张表?我们是不是需要的是 game 这张表,对吧?好,那么同学们现在来注意我们的过程,注意我们的思路啊。我还是把这个打开吧,还是得用一点用,用它做一点记录啊。 我们在找这个表,对吧?第一步,干嘛呢?我们已经找进了咱们的一个这个好,我们把它干掉啊,这个地方我们不写了,这个地方写上也没什么用啊。第一步,我们是不是已经找进了数据库了,对吧?数据库什么呢? game, 对 吧?好,找,进 game 之后干嘛呢?找数据表,对吧? 啊?现在我们是啥都不知道的吧?找数据表,那么怎么找数据表呢?通过这段 sql 语句,我们可以查询所有的表,对吧?那么后面的话,我们要找我们的 game 里面的表,怎么办呢?加条件,对吧?因为现在我们已经知道这个数据库的名字叫 game 了, 所以干嘛呢?后面,喔呀, w h e r e 干嘛呢?胎包 name, 这个胎包 name 就是 表,对吧?根据哪个表呢?把胎包 name 让它等于咱们一个这个 g a m e, 对 吧?这么来写这个地方,这个胎包 name 有 很多很多,对吧?其实它里面应该是有这个 game 的, 我们来找一下, 嗯, news 对 吧?啊? news 是 一个,对,这就是表,对吧? news, 库,库,库在, 库在。欸, type name 是 表明啊,不能根据 type name type name search 啊,不好意思, type search, 对 吧?让它等于这个 g a m e 啊。我说的柚子是表明,对吧?柚子是表明啊, game 是 在这呢,对吧?好,那么我们就根据这个 game, 对 吧?来找你的表,可以发现,对吧?有两张表,一个是柚子,一个是 啊, news, 对 吧?现在干嘛呢?我已经成功把你的这两个表已经给你找见了,对吧?那么找见表之后下面干嘛呢?我们就根据这个 type name, 对 吧?根 据 type name 来继续进一步查询,来下面下面下面四个,因为我们现在是查询是全部的,对吧?下面干嘛呢?我们只查询这个 type name 啊。 t a b l e 啊? t a b l e 嗯, t a b l e 这地方怎么没有提示 select t a b l e。 我 们要查询这个 table name 啊, table name 啊,根据这个 table name 来查询。 from 什么呢? from 咱们的这个 information search 麦,点这个 tab, 对 吧? 点 t a b l e s 点 tables where w h 一 二一 where 什么呢? where? 这个 tabl n tabl search 等于这个 game 啊。 g m e。 好, 那么写完之后走,走完之后,对吧?是单独就查询你的这两个表明啊。其实上面这个地方我们已经查到,对吧? 上面已经查到,下面这个呢,就是我们只要看你的这个 tabl name 这一列,对吧?因为 tabl name 这一列,它才是咱们的表明,对吧? 这个才是咱们的一个这个表明的,对吧?其他的 d e f 这个肯定不是嘛,对吧?这个才是咱们的表明, ok, 那 么现在表已经知道了,表有几个呢?有两个 user 啊,第一个 n e w s news, 又是一个,对吧?两个,现在两张表呢?我现在我全都已经给你找见了,全都找见之后,那么下面还有一个这个问题,哪个问题?就是我们的数据,你当前访问的这个账号和密码到底在哪个表里面, 对吧?啊?大家可以一个一个去试一下,对吧?啊?但是一个一个试的话,这个花费的时间就有点久了,对吧?咱们怎么办呢?好,我们下面的话,刚刚这个地方我们是不是已经找见你的这个表了,对吧?只有两个表,对吧?一个 uz, 一个 news, 好, 找见表之后,那么下面啊,这个是 怎么说呢?我们刚刚的这个就是上面的这段 sql 语句啊,就是原来它的这一段 sql 语句 啊,这个地方我们没给他打印,对吧?原来的这个 sql 也就是我们刚刚那个入手点啊,我再给他写一下吧,啊? 入手点就是 select 星号 from 这个 news, 对 吧?然后 where 这个 data data string 等于这个,这个是不是咱们的入手点,对吧?这个函数是咱们的入手点,它查询的字段是不是总共有四列,对吧?一行四列嘛,对吧?我们来走一下啊, 对吧?是不是一行四列,对吧?那么我们刚刚这个地方查询到的结果呢?是两行一列,这样的话他们是不能拼接的, 怎么才能拼接?必须要把它也变成一行四列,我们才能给他才能与他做一个拼接,就像这样的一个格式,对吧?我们下面怎么把它的单,把它变成一个这个一行,对吧?它是现在是两行一列,我们要把它变成一行 四列,怎么变呢?我们通过这样的一个方式, select 这个 girl up, g, r o u p girl up, 咱们一个这个 kite, 对 吧?通过这个方式,然后根据你的这个 type name 啊, t, a, b, l, e, type 杠这个 name, 根据你的这个 type name 来给你做一个这个结合,然后 from 咱们的一个这个我用小写来用大写,大家可能看的不是有点迷糊啊。 information, 咱们的一个 search 麦,点这个 tabos, 对 吧?点 tabos, 然后喔呀 w 是 一二一,咱们的一个这个 tabo, 这个 search 等于这个 give 好, 这么一写, 写完之后, ok, 对 吧?是不是现在他就变掉了,对吧?现在是变成了一行了,对吧?变成一行啊,还不够,变成一行还不够,还要干嘛呢?还得继续来给你做一个这个添加,就是把你变成一行四列,对吧?一行四列才能满足我们的这个条件啊。 所以说我们在这个地方来给你写一下,怎么写呢?一,我们给他做一个拼接,就是与上面这一段语句,对吧?来 ctrl c, ctrl e, 对 吧?与他做一个拼接,这是我们的入手点嘛,对吧?然后下面的话,一有你 unius 咱们的这个 select, 我 们把这段话 unius 括号,我们把这段话直接给它复制过来。 get ctrl c, 然后复制到一个这个括号当中,然后后面咱们的逗号给你做一个这个拼接,对吧?逗号一个, 两个,三个,对吧?与它呢?总共是四个,结果给你拼接在一块,然后横这个地方分号结尾, 我把这个往旁边放一下,这个地方它出现了一个包,错了,看一下 unix select, 我 们要查询啊。 unix select select, 它,对吧?来,写完之后我们走,走完之后, ok, 对 吧?是不是先随便你了, 它是不是就变成咱们的一个一行四列,对吧?变成一行四列之后,那么我们注入的代码在哪里呢?注入的代码在这个地方,对吧? 这是咱们需要注入的代码,就是在这个引号里面, databis 的 这个引号里面的内容就是我们要注入的这个代码,对吧?好,那么下面干嘛呢?我们就把这一段给它复制过来啊,就是引号里面的这个内容 全部都给它复制过来,然后 ctrl c 复制完成之后,我们在这个位置把你的 circle 语句继续给你换一下, ctrl v 来走,走完之后我们来看它现在查询的结果,对吧? news 和这个 user, 嗯, news 和 user 我 们刚刚已经查到了,对吧? news 和这个 user 啊,这个呢?和我们刚刚一样,对吧?我们现在表啊表都已经查询到了,查询到之后,那么下面获取这个密码,这是这几个方式啊? 这几个方式的话,就是这个是我们注入,刚刚这个地方,我们仅仅只是一个查询,对吧?查询完就是我们上面的这些东西地方,我们只能在这里来操作,对吧?就是我们这些条件干嘛呢?我们把它汇聚成这样的话,这才是我们的注入, 就只有这句代码我们才可以把它注入进去,对吧?就是我们上面做了很多的操作,对吧?我们刚刚这个地方查询到的这个表,其实我们还不能说,我们现在才查到这两个表,对吧? 只有在这个浏览器上面找,我们才能查这个表,因为我们刚刚基本上都是在这个工具里面来操作,对吧?工具里面来操作,这是我们现在是我们做的一个 b 啊, 上面这个相当是作弊,对吧?只有下面这一个,这玩意才是我们真正要注入的代码,对吧?就说我们做完这一个步骤之后,我们才知道有这两张表的啊,我们才知道啊,它里面有这两张表, 好了,那么这两张表有了,有了这两张表之后,那么下面就要获取你的这个用户名和密码,对吧? 获取用户名和密码的话,我们也是要这么来查询一下, select 星号,这个 from 这个 news, 对 吧? where? 这个 data str, 它呢?不是等于这个原来是二零二三,一零一二嘛,这是它的一个原来的一个这个条件,对吧? 走,走完之后没有问题,对吧?二零二三,一零一二,好,那么下面呢,我们得查看你的这个账号和密码,怎么办呢?也是要注入啊, uni, 对 吧? uni, 注入什么呢?注入一段代码, select user name, 对 吧? user name 是 不是账号,对吧? password 是 不是密码呀? 对吧? user name 和 password 是 不是只有两个字?段后面是不是还得有两个字呢?对吧?两个字,那怎么办呢?也是一样的这个方式,对吧?一个引号 逗号,一个引号,对吧?一定要写成四列,因为它原本我们这地方查的这张表,它是四列,这地方必须也得是四列,如果不是四列,它会查询失败,我们把它放到一起吧,还是, 好啊,这么来写下,对吧?好,那么写完之后干嘛呢?我们查询着和密码,就和刚刚那个地方一样了。 from 咱们的 user, 对 吧?这个表我们知道,对吧? user? where 什么呢? where? 这个来一等于一嘛,对吧?一等于一,对吧?你里面总归有一个一等于一吧, 对吧?是不是肯定得一个一等于一啊?我们来走一遍,走完之后, ok, 这个信息是不是找到了,对吧?这个信息虚竹,一二三四五六,段域六五四三,对吧?这样的话我们把这个代码给它注入进去,是吧?注入的话我们直接把这个引号这个地方不要啊, 比如说咱们不要直接把这个地方的给它复制过来, ctrl c, 也就是我们的输入的片段,是这一块,对吧?用户名和密码这一块,对吧?我们把它复制过来,来,在这个地方 啊,给它替换一下 ctrl v, 对 吧?走,走完之后,那么 ok, 虚竹,一二三四五六,段域六五四三二一,是不是就获取到了?但是现在问题来了呀, 我们现在有没有?我们现在刚刚是不是我们那个账号和密码是不是写了一个 user name 和 pass word, 对 吧? 字段名我们是怎么知道的呢?哎,我怎么知道你是 user name 和这个 pass word, 对 吧? w r d, 对 吧?我怎么知道呢?它会不会是 user, 对 吧?或者 p w d s, 对 吧?因为每一个程序员它命名的方式都是不一样的,我怎么知道你是 user name 和 pass word 呢? 所以我上身我刚刚是不是做了一个毕业,对吧?那么这样的话肯定是不行的,我们还得知道你是在哪个字段里面,对吧?就是我得找见你的这个字段啊,对吧?找不见字段我怎么知道你的这段词汇语句是这么写的,对吧? user name, password 呢?对吧?所以说刚才这样是不行的, 我们下面教大家需要找你的这个子段,好来也是这样, select 星号,然后我们怎么找?我这方给大家做一个演示啊? information search 点什么?点它的,它里面有个方法叫这个 columns c, o, l, u, 对 吧? columns 是 查看你所有的这个列的意思,对吧? 查看你所有的列,好,查看完所有的列之后,我们刚刚已经知道了我们的数据库的名字是 g, m, 对 吧?啊? 数据库的名字是 game, 数据表的名字 user, 对 吧?好,那么下面干嘛呢?我们在这个里面来给大家写一下,就是也是一样的,对吧?它这个地方是查询我们所有的列,查完之后,那么下面加条件,对吧?怎么叫选择 where? where 什么呢? where? 你 的这个胎包 search 必须是这个 game, 对 吧? 然后呢?后面按的这个 type name 是 不是等于这个 uz, 对 吧?这是我们现在已知的一些条件嘛,对吧?这是我们现在已知的一些条件,走,走完之后可以发现,对吧?现在这个地方我们是不是能查到它的一个数据啊? 是吧?现在我们就能查到你的这些数据了,查到数据之后,那么这个地方的话,对吧? column name 这个是不是咱们的一些字段名啊? 对吧? user name, t, a, l, 它缩的 id, 对 吧?等等等等,这些是我们的自断名,我们讲呢需要单独把我们的自断名也来进行一个这个查询的一个操作,我们在这个位置给你换一下,换成呢?就换成它,对吧? columns c, o, l, u 啊, m n column 杠,这个 n u m, 对 吧?走,走完之后也是一样,对吧?是不是查到了, 对吧?现在我也已经查到了你的这些数据,所有的一些这个字段,所有的字段,哪个才是咱们的 us 呢?啊?现在我们下面也是要需要把它先合并成一行,对吧?它是多行啊, 必须和我们原来那个一样。合并成一行的话,我们下面来写下 select 啊,来 c like 咱们的,我们现在要查询的也是一样,对吧? g r o u p g r o u p g r o u p g r o 杠,这个 k kite 括号里面的话,我们要查的是这个 k k 的 name, 对 吧? c o l u 啊,来, c o l u 它没有提示,对吧? c o columns c o l u m n 啊 column 杠,这个 name 查询的是 column 杠这个 name, 然后呢? from 咱们的一个这个 information search, 然后点这个 column, 好 喔呀,把后面的条件全给它加上,对吧? type 搜索,等于这个 type name 等于 user, 好,全都给你写上,写完之后,现在你就变成了一行,对吧?变成一行之后,那么咱们的注入点呢?注入点是哪一个?我们下面来继续来写啊。 select 这个地方我们就是干嘛呢? select 星号 from 咱们 news, 对 吧?这是我们的,这个 就是入手点嘛,对吧?然后后面的话, we are 咱们的 data s t r 等于什么呢?等于就把刚刚那个给它写上,对吧? 二零二三一零一二,对吧?这是他原来的条件,然后后面跟我们拼接,由你,对吧?拼接什么?拼接一个 select 括号, 我们把这一段代码都给它复制过来, ctrl c, 然后在这全部给它放到这个括号当中,对吧?放到括号当中也是一样四个字段,后面再给你拼接三个,对吧?一个、两个,三个,对吧?拼接完之后封号结尾走,走完之后,对吧? 这个是我们刚刚的信息,对吧?下面这个是不?我们可以查到他的一些字段名了,对吧?这个呢就是咱们注入的一个这个代码,在这开始,对吧?注入的代码复制过来,复制过来之后,那么下面在这个地方来再来进行一个这个访问 啊,从这样开始,对吧? ctrl 一 走,走完之后我们来看它的一个这个效果,是不是 id, username, password, 是 不是需要找那个,对吧?找见这个 username 和 password 之后,我们是不是就可以反复重复执行我们刚刚在上面的这段代码了, 对吧? username password, 一 旦知道之后,对吧?这段代码我们一给你执行 啊,在这啊换一下知道,那么一旦直行走,走完之后,那么可以发现账号密码不就来了吗? 这就是咱们的一个 siri 注入,对吧?我们今天的关键点就是干我们的找他的一个这个注入点啊,怎么找这个注入片段和这个注入方式啊?注入片段这个是怎么来的?大家一定要明白,归根结底就最终总结的就这一个东西,对吧? 珠点啊,珠珠片段就这个东西,珠珠片段,片段是怎么来的,对吧?片段是怎么来的?上面这个代码啊,一定要理解,理解了之后,那么下面这个片段理解的话就比较简单了。

运维不懂 square, 就 像司机,不会看仪表盘,面试很难过,工作也很难干。今天我们就来说一下 square 语句主要分为哪几类。首先是数据定义语句 d d e l。 核心作用是给数据库打骨架,负责创建、修改、删除数据库里面的容器,比如表示图、锁影, 不涉及具体的数据。常用命令有, create 创建, alter, 修改、 drop 删除。就像你要开一家超市, ddl 就是 用来搭建货架,也就是创建表,改造货架结构,也就是修改表字段, 拆掉不用的货架,也就是删除表的操作。只管货架本身,不会管货架上面摆的是什么商品。第二,数据查询语言 d q l。 核心作用在于从数据库里面查数据,是使用频率最高的语句之一。常用命令有 select 查询,就像你在超市里面找商品, 比如只找所有价格低于十元的饮料,或者说找货架上的苹果有多少斤这种,只看数据,不会更改任何东西。 第三,数据操作语言 d m l。 核心作用在于对于数据库里面的具体数据进行增删、改的操作。常用命令有, insert、 新增、 update、 修改、 delete、 删除。你可以理解成就是往货架上面摆新商品,把货架上面的商品价格改成了 update 修改, 把过期的商品从货架上面拿走了, delete, 删除,只操作商品,不碰货架本身。第四,数据控制语言 d c l。 核心作用在于管理数据库的权限、事务等,控制谁能够操作数据库,操作是否生效等。财务 mini 有 grant 授权, revit 撤销权限, commit 提交事务, rollback 回滚事务。就像超市里面的管理规则,授权给员工 可以摆商品,对应的是授权回收员工改价格的权限,对应的是撤销权限。确认今天的商品入库操作生效,对应的是提交事务发现入库错了撤销,这次操作则是回滚事务。那我们整体来看一下, ddl 负责管结构, dql 负责管查询, dml 负责管数据, dcl 负责管权限和事务。那我们整体可以看下来,这一道题其实相当于在运维面试中 问的频率非常高,但确确实实是一道送分题。诸如此类的关键题型呢,我还有很多,同时我也把它们都整理出来了,如果有需要的同学都可以在右边留下运维面试题,五个字就能拿到。

呃,今天我们要讲的是 my circle 的 缩影, 我们会从基础的概念到性能优化,由浅入深地去讲解缩影这一方面的知识。 那具体分为六个部分,首先是缩影的定义,我们了解什么是缩影,然后就是有哪些缩影,再接着我们就去了解缩影它具体是什么样子的,接着就是我们去实操缩影的创建和管理,最后是缩影在缩口中的使用优化, 还有我们平常会遇到的缩影失效的场景。那首先是第一部分,什么是缩影?它解决了什么问题? 我们可以在自己的脑子里去想象这样一个画面,缩影就相当于我们去 看一本书,那这本书我们就是数据表,那所以就相当于这本书里面的目录,那我们去 比如我们去看第一百五十页的某某字,那我们根据目录我们就可以知道二、一百五十页它是哪个主题,它是哪一页数据, 那如果没有这个目录,我们就要去翻翻,翻翻啊,翻一百五十下,我们就可以翻到这一页,然后去找到这一个数据,那有了这个,所以我们就会说,啊,我要去找,比如 西游记里面的说,哦,第几难是鲤鱼精造反,哦,我们可以看到哦,第一百五十页是鲤鱼精的出场,我们翻到一百五十页,然后再去看里面的文字说,哦,第十八行是鲤鱼精, 那这就是缩印给我们带来的一个便捷,就是最直观的效果,就是它可以大大的减少我们的查询所花费的时间, 那这就是我们对缩印的主要作用,就是我们显著提高数据解锁效率,大幅减少查询操作时此盘的 i o 次数,优化系统性能,这就是缩印存在的意义。那 接着就是缩印可以的作用就是加快我们的数据解锁,减少我们查表的时间,然后优化我们查询的性能, 接着就是保护数据的唯一性,那我们可以知道一个目录里面我们是不会出现第一张三打白骨精,第二张右打白骨精,我们是会保证它的数据唯一性的。 那我们锁影会有哪些分类呢?还有它具体的使用场景,那我们不可能说一张表只有三条数据,我还去给他建一个锁影,这不是图增自己的内存吗? 那我们锁影主要是有组建锁影和唯一锁影,还有后面 另外有几个缩影,那主键缩影的话,我们数据建一个表的时候,我们都会有一个主键,那这个时候就相当于它有一个缩影了,它就是自动去创建的, 它不允许有,那就和我们主键定义的一样,所以一张表一般只会有一个缩影,一个主键缩影, 那在 circle 里面的话,我们可以看到就是这个 prome key 的, 其实这就是我们平常去见主键的时候,它就自动地联系到的一个主键锁影。那唯一锁影的话就是我们前面说的不会有两个相同的目录, 那一个表的话是可以有多个唯一的缩影的,就我们可能给这一列建一个,在那一列又建一个唯一缩影,它是相当于一种约束条件。 那具体的 circle 就是 creator unicorn index, 然后字段名,然后再呃这个是缩影名,然后在表里面的某某字段, 那接着是普通缩影,普通缩影就相当于我们只是去给他做了一个连接,那不会对他做任何的约束。那就像我们可以 去通过这种 creator index, 然后缩影名,然后在某某之段就一个非常简单的一个缩影的语句,就可以去建一个普通缩影,那权威缩影就相当于我们的 存了一条新闻,那这新闻我们不就有一个新闻标题和新闻详情吗?那这个新闻详情他就会是一个很长很长的文本啊。因为一个新闻有长有短, 所以我们这个时候对于这种缩影,我们就会去做一个权威缩影,来让他能够根据文本的内容去做一个查询。 那像联合缩影的话,就是我们会去把,比如我们有一个表里面有 张三,有一个 name, 就 名字,还有一个 age, 年龄,然后再有一个 sex 性别,那这个时候我们想要 去做一个缩影,然后又想要说,哦,我们平常经常会提到的需求是名字和年龄一起查出来,那这个时候我们就可以给他做一个联合缩影,就把他的 name 和 age 一 起加到他的缩影 啊。这个联合锁影我们后面会来做一个细讲,那我们锁影分除了前面的几种,那我们知道了有几种锁影,那我们还要去了解锁影到底是如何去实现的。 所以这边我们就引出了一个 b 加速的概念, b 加速就相当于一种数据结构,除了 b 加速这种数据结构,我们还会有什么?二叉数、红黑数,然后还有 b 数,接着才是 b 加速。 那为什么我们有这么多数,我们会去用 b 加数来做一个数据缩影的存储呢?那因为我们的 像二叉数、红黑数,他就这样子一个竖线来,我给大家形象的画一下,还有像这样子这是竖根节点,然后他就这样子画画,然后二叉数、红黑数画画, 其实他每一个下面可能就只有一个叶子节点,每一个下面最多两个叶子节点, 就这样子,那这样子就会导致我们的这个数一直下去,一直下去,一直下去数据量一大,这个数就会特别的高,那我们要找到一个数据,我们就查这个哦,在他下面,在他下面,在他下面,在他下面,然后就会增加我们这个去搜索的一个复杂度, 他就这样子一直成成成递进的下去。那我们采用 b 加速的形式,他就会有根节点,然后叶子、非叶子节点和叶子节点,那非叶子节点就是他们下面有这种叫什么叫孩子啊?叫叶子也行, 这种就是非叶子,那下面没有他们的小叶子,那就叫叶子节点,他就是按这样子的存储形式,那一个叶子结,一个非叶子节点,下面可以有多个叶子节点,这样子就大大的减少了我们的它的高度, 我们这边叫树的高度,所以它比较适合我们用来存储缩影这种比较多数据的一个数据结构。 那我们这边可以看到非叶子节点,我们一般是会拿来存储缩影的箭值,然后还有指向子叶子节点的指征,不会去存储我们实际的数据。那比如我们的 呃,张三李四、王五,然后他们后面跟一堆年龄啊、性别啊,然后地址啊,这些我们都不会存在,非叶子节点我们只会存,比如我们给姓名做一个,所以我们就会存在非叶子节点,然后 他的那些数据我们可能就会存储在叶子节点上面,然后这边就存储他的数据,然后后面才能更好的去利用我们的存储空间。 那我们接下来我们来看一下他具体的一个查询过程。就像我们刚说的,从根节点开始,然后一直去找找,找找找, 然后找到了这个键值就是我们的缩影,然后就再根据这个缩影,我们再去找定位到他对应的子节点,然后这个时候他里面就会存一些数据,那如果数据是我们要的,他就会给你返回出来, 接着我们沿着纸针到下面找找找找,那最后的话我们就会在叶子节点去获取到我们的数据, 这样子的是一个它的一个查询过程。接着我们缩影的创建和管理,那这边就是我们的实操部分, 那我们怎么去创一个缩影? creator index, 然后就是缩影的名字,然后在某个表,然后某个字段, 然后我们也可以通过 alter table 就 修改语句,也可以去对缩影的一个增加,然后还有一个创建 creator, 这个就是 创表的时候,我们也可以给它做一个缩影的定义,就这种三种形式去创建一个缩影。那我们如何去查看呢?这边有一个 saw the index from, 然后表明, 然后我们优者表就是搜的 index from user, 这边是一个查看,然后这边是删除,删除就也是用 job 命令,也是 job index, 然后某哪一个缩影在哪一张表,然后也可以用这个去 job 啊,大家习惯用哪个就用哪一个。那锁印的使用我们锁印,其实根据前面讲的 b 数和 b 加速的这种数据结构来说, 它既然有这个结构,那它就需要占我们的存储空间,也就是我们的内存,占用我们的内存。然后这边的话, 我们如果给一张表,每一个字段都去加我们的缩印的话, 那我们可能一张表十 m, 然后全部加缩印,那它可能就是 呃表原本大小的百分之七十到八十左右,那就是七 m 一, 本来十 m 的 表给你一加翻倍了,快十七 m, 十八 m 了,那这就很违背我们, 所以很违背我们存储方面的说,数据不要融于啊,然后节省存储空间啊,我们本来做优化,但你这样子反而是负面优化了,所以我们所以在使用的时候会有几个注意事项。 首先我们只给这种高频查询字段去做缩影。像我们微软,比如我们对员工做一个存储的话,我们最高频的是什么?员工姓名, 然后员工的员工号,那这种我们就可以去做一个缩影,因为它具有那种像员工号,我们具有一个唯一性,每个人都有自己特定的员工号,那名字可能有人重名,那这个时候我们也可以去做一个普通缩影,那这里做了个缩影的话,我们去查的话, 他只要查到这个缩影,他就可以让我们快速的去获取数据。那这边就是我们刚刚说的,我们会选择 比较常用的,像性别这种,嗯,大家都相同的,没有什么筛选条,筛选条件的话,我们就不会去作为一个缩影来选择,那我们前面提到一个联合缩影放在这边, 联合缩影就是我们会去像说把姓名、员工号还有加一个什么啊?加一个地址,那这个时候地址就有省市区吧,我们把省市区这里随便取一个省,那我们这个就会有 把姓名、员工号省作为我们的联合缩影,那我们这个时候用姓名放在最前面,然后 员工和省放在后面,我们把它写成一段这样子,我们去写一下姓名、员工名、 员工号,省,我们这样子通过社口语句的话写一个 where, 就 一个条件, 然后我们这样写,这样写,这样写它是可以用到我们的联合缩影的,因为这样子这样子,那最左前缀的话就是我们写的时候要把这个有,我们把它们写成 a、 b、 c, 那我们去写的时候我们可以 ab, 可以 ac, 可以 abc, 那 我们不可以用 bc, 不 可以用 c、 b, 那 这就是我们的最左前缀。我们必须要把我们联合缩影中的排在前列的缩影 在 vr 字段里面去提及,不然我们是不会使用到我们的这个联合锁影的。所以我们见锁影的时候和写 circle 的 时候要注意我们的锁影顺序。 那锁影的话我们肯定不是说我一见了之的,那因为我们见了锁影的话,它是 会影响到我们修改表和更我们更新表、删除表,然后还有修改表,这些都会被影响到,因为你增加一条数据,它除了增到数据库里面, 我们还要去把它的缩影也去增加一遍,那修改我们也要去把它可能影响到的缩影去修改一下,那所以缩影其实是会影响到加快 select 的 搜索操作,但是会影响到其他操作。 然后我们要避免过度的缩影,就是我们前面说的缩影会占据我们的这些,增加写这些操作, 然后接着是我们锁影会失效的一些场景,那我们什么时候锁影会失效?我们当我们使用一些内置的函数的时候,锁影会去失效。 有这种,因为他去对锁影做了一个计算,其实你只要对锁影去做了一个嗯,任何操作都会导致锁影失效,所以就会引出我们后面我们这个算不算对他操作呢? 其实也算了,他他也会去对他,也算是做他,因为你去做比较就相当于把他拿去做了个操作。那这种也是,这种不就是简化成等于 no 吗?不就相当于等于 no 或者不等于 no, 那 这边我只是写一个大概,那我们正式语法肯定要一直 no 和 no, no, 那 还有罪作前罪法则就是我们刚刚提到的跳过第一个则无法使用,然后 like, like 其实也是去做比较, 然后像数据类型不匹配啊, like 其实也也不是做比较,因为我们如果把它改写成张三这样子, 那我们其实这个缩影还是会被使用的。那还有数据类型不匹配,这也是我们如果 name 它是一个是最,然后我给它传个数据,传个 a g, 然后我又不去强制转换一下, 那这个时候其实它就会自动去做一个影视转换,那这也会导致缩影失效,其实也是说对它进行了一个操作。

面试光被八股一被深挖就卡壳,拿普通 ai 模拟也没用,它没记忆根本给不上压迫感。试试 tax 吧,这东西把思路搞明白了,它是个带长期记忆的高压陪练。简历喂给他,你哪题答得顺 直接过哪个底层知识,你结巴了他就死咬短板疯狂给你上强度,全程都可本地跑,简历绝对保密。最近打算换坑的兄弟拿它早早被考打的状态,比干背面筋强多了。