才知道,原来买色购当中也有两阶段提交,很多人都知道差异规范当中的二阶段,但其实两阶段呢,只是个思想,指的就是为了保证一致性,然后把本该一个阶段做的事拆成两个阶段来进行提交。那在买色购的 innodb 引擎当中呢?宾 log 主要用于主层同步, redolog 主要用于崩溃恢复。 而在 blog 和 redolog 的写入过程,其实有一个问题,假设我们先写 redolog 成功了,然后在写 blog 之前系统崩了,这样在麦色勾重启之后,可以根据 redolog 进行崩溃恢复。但是呢,由于 blog 没写成功,所以呢,他就没有记录下来这次变更,那么被库就会少执行一条事务,导致主背不一致。 如果换个顺序,我们先写 blog 成功了,但是写 redolog 之前系统崩了,这样在麦色勾重启之后呢?由于 redolog 啥都没写,所以呢,他也不用做什么,数据库还是原来的旧址,但是因为 blog 他已经写入成功了,那么被库就会多执行一条事务,导致主背不一致。那为了解决这个问题呢,印度弟弟把 redolog 的写入拆成了二阶段,先写入 redolog, 进入 pro 片状态,然后再写 blog, 再写入 redo log, 进入 comet 的状态。假设这个过程当中崩了,在崩溃恢复的时候,如果 redo log 它处于 prepare 的状态,并且 blog 还没写成功,那么就直接回滚就行了。那如果 redo log 处于 prepard 的状态,但是 bellog 已经写入了,那就判断一下 bellog 当中的事物是不是完整的,如果是完整的,那就直接继续提交,那如果不完整,直接回滚就好了。 这样就通过两阶段的方式来保证了数据库的主背之间的数据一致性。像这样的硬核技术干货及面试题呢,我整理了七百多道,做成了一个在线课程,图文形式还会持续更新下去, 已经卖了上千份了,目前店铺评分五点零,读者满意度超级高。购买链接呢,我放到下面的小黄车了,同时给大家放了一个七十的优惠券,数量有限,先到先得,下单以后按照短信提示申请权限,然后联系店铺客服,审批通过就可以看起来了。
粉丝14.1万获赞171.6万

面试被问几率最高的 miceo 面试题,请减速。 miceco 二阶段提交的原理, myseco 的二技能提交啊!发生在 redo log 和宾 logo 的日字写入阶段,也就是把日字写入和日字提交拆分成两个阶段,来确保 redo log 和并 log 的写入的数据一致性。第一阶段是 prepare 阶段,在这个阶段中, myself 会把事物操作记录到 redo log 中,并标记为 prepare 状态。 第二阶段是康妹的阶段,当事物提交的时候, mexico 会将事物操作记录到 bin log 里面,然后把 redo log 中的日字设置为康妹的状态。所以 intel d b 在写 redo log 的时候并不是一次性写完的,而是有两个阶段, prepare 和 command, 这就是两阶段提交的含义。在这一个数据中,如果在写入 video log 之前崩溃,那么此时 video log 和 b log 中是没有数据的,那么数据是满足一次性的。如果在写入 video log prepare 阶段立马崩溃了,那么之后会在崩溃。恢复的时候,由于 video log 中没有标记为康妹的,于是 拿着 redo log 中的事务 id 去 blog 中去查找,此时肯定是找不到的,那么这个时候就执行回滚操作。如果在写入 blog 后立马崩溃,在恢复的时候,由于 redolog 中的事务 id 可以找到对应的 blog, 那么这个时候可以直接提交数据, 通过这个方式就可以保证 redo log 和 blog 的数据一致性。以上就是我的理解, myseco 至尊 id 用完了以后会怎么样?这个问题的文字版本的解析,我把它整理到了一个三十万字的大场面指南中, 有需要的小伙伴可以在我的评论区的置顶中去领取 micico 支撑 id 用完以后呢,后续查出数 的时候, id 不会再逼真,从而就会导致出现组件冲突,使得数据无法正常保存。这类问题一般不会出现,因为即便是 inter 类型组件也能存储二十多个亿的数据量。假设真的存在这样一个问题,我认为有几个解决思路, 第一,可以在设计前期就考虑这个点,把 id 的数据长度设置更大一点,比如说用 baby 燕子。第二,我们可以不使用智证 id, 而是采用业务组建,这样在后续做分表的时候会更加方便一点。第三,假设啊,已经存在这样一个瓶颈了,那么可以考虑把数据迁移到新的表或者新的数据库里面, 然后重置至尊 id 的范围,但是这过程呢,需要谨慎处理,从而确保数据一致性和业务逻辑的正确性。好了,今天的分享就到这里。前几天有一位粉丝去一家顶级互联公司面试,被问到 mysic 所以失效的场 场景这个问题。在 mic 口中,锁引失效的场景有以下几种,第一,在 vr 指据中使用一些逻辑操作服务,比如说 note 英语,或者不等于这样的一些操作,因为这些操作会导致 mic 口无法进行锁引查找。 第二,对锁引字段进行计算或者函数操作,比如说我们对一个日期字段做一个页函数的操作,那么 miceycle 就无法使用锁引。第三,使用 like 操作符进行模糊查询的时候,如果通配符在前面,那么就会导致锁引失效,因为 miceycle 无法去确定查找的起始点。 四,如果 messacle 估计全表扫描比所引速度更快,那么他会选择全表扫描,比如数据量小或者大部分行都满足 well 子句的时候。第五个,在复合所引中,如果没有按照所引最左前缀的顺序来查询,那么也可能会导致所引失效。避免这些 常见所有事件的场景,能够帮助我们更好的利用所引,提高 c 口查询效率。以上呢,就是我对这个问题的理解。一个工作三年的粉丝问了我一个面试题, p g c 口数据库。对于 mic 口之间的一些对比。 首先,我认为 myseco 和 petcseco 都是非常优秀的数据库系统,我会根据具体项目需求来选择使用哪一个。下面我就针对这两种数据库区别进行一个简单说明。 第一,特性层面, p g c 口提供了一些高级特性,比如物化视图、公共表、表达式和窗口函数等等,而 mic 口在一些外表开发中表现更加优秀。第二,特性, 总体来说,啊麦 c 口的性能更加突出,特别是在独密集音的场景中,而 p g c 口在处理复杂查询和显密机型操作时候更有优势。第三,一致性和数据完整性。 p g c 口更严格遵循 c 口标准,提供了全面的 a c i 支持。而 mic 口呢,虽然也支持 a c i d, 但它的知识程度会受到所使用存储引擎的影响。第四,扩展性。 p t c 口支持多种制定扩展,比如说制定数据类型、操作服等等。而 mic 口呢,则是在分区等方面表现更好。 对于 p g c 口和 myc 口的选择,有几个方面的考虑因素。第一,从应用范围来说, p g c 口更适合具有频繁写入操作和复杂查询的企业经用程序。但是,如果想要创建用户较少的内部用程序, 或者创建具有更多读取次数和较少数据更新的兴趣存储引擎,那么就可以使用 myseco。 从学习的难易程度来说, myseco 更适合初学者,他的学习曲线更短,从头开始构建新的数据库项目所需要的时间更少。 pgcco 对于新手来说可能更具有挑战性,因为他通常需要更加复杂的基础设置 和问题排查经验。第三,从性能方面来说,如果应用程序需要频繁更新数据,则 p c c 口是一个更好的选择。但是如果需要频繁的读取数据,则首选 myc 口。在数据写入层面, mys c 口使用写锁来实现真正的并发性。而 p c c 口呢,内置了多版本并发控制,支持 没有读写锁定。如果要进行频繁并发的写读操作, p g c 口数据库的表现会更加优异。在数据库读取层面, p g c 口会创建一个新的系统进程,为每个连接到数据库的用户分配大量内存。而 mec 口是为多个用户创建一个单一进程。 因此,对于主要向用户读取和显示数据的应用程序, mic 口数据库要比 p t c 口要更好一点。以上就是我对这个问题的理解。 mic 口中表的实际链采用 day time 还是 time step? 关于这个问题啊,我从三个方面来回答。 第一, that time 和 time step 它的区别首先,存储空间层面, time step 占用四个字节,而 day time 呢,占用八个字结。所以如果对存储空间有严格要求, time step 是一个更好的选择。 其次是时区知识, time step 存储的是一个 utc 时间,会根据系统的时区进行一个自动转化。而在 time 呢,不会做时区转化,存储的是字面值的时间。 如果你的应用程序需要在不同的时区之间进行工作,那么 timestep 呢,可能是一个更合适的选择。接下来就是时间范围, j time 的时间范围从一千年到九九九九年。 time step 呢,它的时间范围是一九七零年到二零三八年,所以你需要根据表述的时间范围来选择合适的类型。第二,选择上的建议,如果你需要存储的时间超出了 time step 的范围,或者你不想让时去影响 存储的时间值,可以使用 detain。 如果你需要考虑到不同地区的时区问题,或者希望节省存储空间,那么你可以使用 times time。 第三,在实际开发控中呢,我们需要注意几个方面,首先,我们需要明确项目的需求和期望的行为,不要盲目的选择。其次呢,在代码中统一时间处理方式,以避免时区转化的问题。 总的来说, day time 和 time step 有各自的适用场景和优点,理解他们的特点和区别,能够帮助我们做出更好的选择。以上呢,就是我对这个问题理解和解答。 如果你有任何疑问或者你想去了解编程知识,欢迎在评论区留言,我会在后续视频中为你提供解答。如果你觉得今天分享内容对你有帮助,记得点赞和分享给你的朋友们。我是麦克,我们下期再见。请简单说明一下 mysicle 里面 my exam 和 inner d b 引擎的 区别。据我的理解啊,我认为 mansan 和 innodb 的区别有四个,第一个是数据存储的方式不同, mansan 里面的数据和锁引是分开存储的,而 innoed dv 呢,是把锁引和数据存储在同一个文件里面。 第二个,对于事物的支持不同, mansan 不支持事务,而英诺 db 呢,支持 a c, i d 特性的一个事物处理。第三个对于锁的支持不同, mansan 只支持表锁,而英诺 db 可以根据不同的情况去支持航锁、表锁、间隙锁、零件锁。第四种, mansan 不支持外建,英诺 db 呢,支持外建。 因此基于这些特性呢,我们可以在实际应用中啊,可以根据不同的场景去选择合适的存储引擎,比如说如果需要去支持事务,那必须要去选择云朵 d b, 如果大部分的表操作都是查询,可以选择 mi 赛。以上就是我的理解。

哈喽,今天我们继续学习买骚客的知识,今天我们讲的主题是一条骚客的一个整个的一个窒息过程啊,今天我们把内容啊主题主要分为两个部分,第二部分的话,我们会介绍他的一个整理流程啊,然后呢我们继续会讲每个流程上面设所设计的一些组建啊,好,我们现在开始, 首先我们来看一下这个这张图啊,这张图的话就是整个就是能够说明整个的一个缩刻,在这一个大概的一个执行过程。好,我们首先来看一下这个图, 这个图呢,首先进入到这个连接器啊,这连接器呢就是我们通过,嗯,是用来处理啊,处理我们客户单进行进行连接的啊, 他们专门用来做了做那个,是的啊,好,然后呢,假如我们是一个查询语句啊,如果是查查询语句的话,会首先去缓存里面查啊,但是呢,首先你这个,呃,你这个买搜个是八点零 钱的,因为在八个年龄之后啊,这缓存就被移除掉了,因为这个缓存是是很积累的,所以呢买所有官方呢,在八点零的时候就直接把这缓存移除掉了。好,然后呢我们就说是八年之前啊,八年之前如果你这个连接器进行客户端建立连接之后啊, 进连接之后呢,他如果是一个查询语句,他首先会查询缓存,如果缓存是开启的话,如果命中,那就返回,否则的话就往下走,对吧?好,然后后面这些东西呢,我们说的是,嗯,我们的一个更新语句啊,更新语句是是这样走的啊, 好,首先我们去到咱们的一个分析器啊,咱们这个分析器做了什么内容呢?首先他会进行一个司法分析啊,司法文件,还有一些语法分析啊,也就是说这里面的内容啊,主要是为了生成一个语法书啊,语法书里面会包括什么内容呢?就是我们,嗯,我们一些关键字词来给的信号,服装,嗯,哪个表?是不是 是那个的服装,还有表明,还有自断名,他都会把它归结到语法,语法书,语法书里面啊,好, ok, 这个我们在接下来的组建呢,嗯,组建的介绍里面我会给大家进行一个详细的介绍啊,好,进入到分析器之后呢?然后我们会进入到咱们优化器,这优化器呢又干嘛了呢? 我,我们知道我们如果缩搁里面使用了一些缩影对不对?所以呢如果用到一些什么联合缩影,如果我们联合缩影呢?呃,建立了三个阶段, abc 三个阶段, 但是呢,你真正的查询的时候,威尔后面的查询的是,呃, bca 这样去查询的对不对?按照这样的话,我们是不不会符合那个最早前缀匹配原则的,是不是? ok, 然后呢买骚客呢?做什么呢?买骚客就针对这些就进行一个优化啊,他优化之后呢就直接让我们直接是查询维尔 abc 这种查询,然后呢就可以走我们的一个联合, 所以,好,这液化气啊,液化气后面也会进行详细介绍了,然后呢最终进入到我们的执行器啊,进入我们执行器,我们执行器呢就是会通过,嗯,调用买骚客,所以存储疫情啊,那相信的 api, 然后去执行我们的骚客,好, ok, 喜欢骚哥,骚哥执行完之后呢,就会也有会有结果是不是?好,然后我们会去写一个安度落个,这安度落的呢是一个版本链 版本里面什么意思呢?就是我们上酒馆我们不是讲过 mvcc 一个到版本并发控制机制吗?是吧?然后使用昂多 logo 跟那个 redvo 一致性试图啊,然后实现了 mvcc 机制。好,这里面的昂都 logo 就写那个的, 这写那个就是我们会把历史数据给他串保存一份,然后我们修改新的数据,在我们科比出来那个数据上面进行修改,但是呢,然后我们会有一个这样的一个指针啊,不知道大家还记不记得啊,就是我们这里会有个指针,如果抛眼的 指针啊,指指向上个版本的一个数据啊,数据记录地址。好, ok, 这样的,然后我们经过了啊,写完昂 dologo, 然后我们继续选瑞度 logo, 瑞度 logo 是用来干嘛的呢? 就是我们用来进行恢复的过程,恢复的瑞瑞多,我就重写啊,就重写,就是我们会把我的命令啊全部写下来,全部写下来,然后当我们假如数据丢失了之后啊,我们可以重新去把这个瑞多多个里面缩卡重新执行一份,重新执行一份,然后呢,就可以恢复我们,嗯,之前的数据啊,之前的数据 好,然后我们会继续写并落岗,并落岗咱们都知道啊,咱们是用来买操作做主从复制的,主从复制的时候会开启这个并落岗,然后呢?呃,从接电呢,会把这并落岗日志啊给他拿过去,通过,通过,主从建议你以一个数据的连接,然后,嗯,主节点会把这个并落岗,这个日志通过留的显示写给 咱们的一个从界点,然后实现了一个主锁控制啊,主动控制,然后最终的话,我们这一次喜欢之后,我们会提交一个事务啊,提交事务之后呢,他在这里面会刷瑞杜诺格,还有一个并诺格啊,他为了保存数据的一致性啊,所以呢,这里面使用了一个二阶段提交啊,二阶段提交,这,这个是准备阶段,然后这个也提交,对不对?二阶段提交的啊, 防止失误,失误不一致啊,好, ok, 这个是他的一个整个流程啊,整个流程。好,然后我们现在来对每个组建进一个详细的介绍啊,详细的介绍一下。好,第一个是咱们的连接器啊, 连接器其实很好理解,就是我们会这个连接器就是处理客户端的一个连接,一般是处理我们这个命令啊,我们一般如果是连接到 solo 的时候,我们会写买 solo 杠杠区,然后号死啊,记者是不是刚 u, 然后刚 p, 刚 p 是不是 ok, 然后这样的 这样去写的话,我们就可以建立连接,建立连接的话,这部分就是通过咱们的连接器去处理我们客户端的一个连接啊。好,然后第二个咱们的查询缓存啊,查询缓存刚才也说了,在八点零之前啊,如果用户开启了查询缓存的开关,那么客户发起请求之后,如果查询依据,首先汇聚缓存中查询缓存,如果命中的话 就会直接返回啊,然后我们介绍一下缓存中存储的 k 啊,就是查询的语句啊,假如我们死了一个型号服,让我为了 id 等于二,是不是?那么他的 k 就是整条这一个语句作为 k, 然后缓存的值呢?就是我们查询到这个结果啊,如果缓存中没有查到,就会直行,下一步就是分析器阶段啊,当然了,如果有缓存就直接会返回这个数据, 但是如果对应的数据被更新啊,对应的数据如果被更新了,那么缓存肯定会要同步删除的,同步删除的这个也就是为什么我们在八点零的时候开始之后, 就我把这个缓存删除了,因为你这个缓存见了根本都没用,因为这数据经常会被更新啊,更新之后,然后导致直接查库,然后又要去操作一份缓存,其实这不很积累吗?所以呢,八点零开始之后开始,就直接把这个缓存这个机制啊直接移除了。 嗯,这里讲了大概的原因啊,就是我刚才说的这个好,大家可以自己看一下。好,之后我们再讲咱们的分析器啊,分析器呢,就是如果产品缓存没有命中啊,就会进入到咱们的,呃,没有命中就会来到分析器这一层啊, 分析做了什么呢?看一下今日分析记录,首先要经过此法分析这一关啊,如果这一关没过的话,就直接给你抛出一个错误了,通俗的来讲,就这个此法说此。 呃,司法分析器啊,司法分析器装做了什么?首先解析所有关键字,如斯莱克的阿布戴德,以四号的 fram vr 表明 名字,断名俄罗拜等,还有奥特曼这些字段啊,把这些东西全部抽象成一个语法数出来,然后如果解决出来的标识是否如果不对的话,就会抛出异常啊,拒绝执行。下一步啊,我们不是会经常,呃,会出现一个缩刻,里面会提示什么什么什么不对,什么缩刻不对啊,对吧?去检查 啊,这里面是他的一个过程啊,刚才我们也看了,首先经过所有法分析,然后进入无法分析,这里面是一个循环啊,这个循环便利他所有的一个关键字,一个托坑啊。 ok, 然后只要解析出来之后,他会添加到咱们的语法数里面,然后最终生成我们的一个语法数。好, ok, 然后经过分析之后就会生成一个语法数,后续执行以前就会依靠这个语法数啊去执行啊。好,然后咱们看咱们的优化器啊, 咱们的优化器呢?在经过分析器之后呢?买骚客需要做的就是对我们骚客进行一定的优化,那么他做哪些拥护他的好?第一个我们决定 会使用哪个缩影,是不是决定使用哪个缩影,因为我们有时候会建立很多缩影,但是他并不知道是不是。所以呢买四个在优化器阶段的话会决定,呃,通过那个不太好使,好使统计啊 啊?他用的是那个吹一次吧,那个统计统计之后呢?我然后去,然后去去看哪个比较最最省时,然后就使用哪个字缩影啊。好,然后第二个呢,就是调整维尔自然位置, 就是刚才咱们也简单介绍一下,我们这里再重复一遍,就是如果建立了联合,所以 apc, 但是我们的 vr 条件是写的是 vrb 等于一, and a 等于二, andyc 等于三,这样很显然不符合做一做简对匹配原则,是不是 这样写肯定是不满足最前最左前是赔赔原则的,所以呢,买车票决定给你优化一下,怎么优化呢?他直接调成跟你所有你接近的顺序一样,就是 vra 等于二还是 b 等于一, 看看 c 等于四对不对?最终使用到了咱们的联合缩影好,但是如果显示威尔 b 等于一,安的 a 等于二,没有 c 字段,也就是说我们联合的缩影建立三个字段,但是你只使用了两个字段,那么他是不会 给你进一个优化的啊,不会给你自动给你调成 a 等于二,俺的 b 等于一啊,只有你三个字段同时有,他才会进一个优化好。 ok, 然后再经过优化器之后呢,我们开始就是这个,所有可以进一个执行了,也是一个最优的一个缩课了啊。 这个时候,然后去对应的哪些缩影去使用啊?然后到最后咱们进入到咱们直行器啊,咱们直行器呢,因为咱们有很多的缩影存存储疫情,对吧?然后呢?他, 嗯,找到对应的缩影缩影深处隐形 api, 然后进行个吊用,嗯,进行解决后的一个缩杆,然后返回结果就 ok 了。好,返回结果 ok 了,如果你是开局考场之后,他会把 这个结果又会存分到缓存里面去的,缓到缓存里面去,但是八点零之后已经不使用缓存了,所以我们就算是八点零之前,我们也不建议去使用这缓存啊。好,今天的分享就到这里,我们下一个再去分享买这个其他的一些知识。好,谢谢大家。

大家好,我是专注加瓦干货分享的慧慧。前面几期视频啊,我们分享过 redo log 和 bnog。 redo log 呢,是 inner d b 的乘坐日志。当内存的数据啊,还没有同步到词来的时候,如果因为断电等异常情况导致数据丢失,重启以后呢,我们能从 redo log 找回丢失的数据。 而 bnog 是卖搜口 sever 层去保存的二进制日制。它的主要作用呢,是数据恢复以及储存同步。 我把这几期的视频内容都整理在了加瓦程序员求职面试宝典里面,有需要的小伙伴可以在评论区置顶中留言领取。 今天啊,我们再来聊一聊 retolog 和 bin log 的二阶段提交机制。什么是二阶段提交啊?如果学过分布式事物的,大家都知道,他是去保证我们数据一致性的,其实就是去保证 retolog being log 的数据,要么都写入,要么都回归。如果 没有二阶段提交,我们不管是先写 readbook 还是先写 book, 都会导致数据不一致。假如我有一个主从集群,在主里面修改一条数据, came 以后先写入了 readbook, 但是呢,还没来得及写 book, 数据还没有刷脏就断电了。这个时候数据会从 readbook 进行恢复。 但是 bnog 没有,导致了同步。给从的时候没有数据同步。这条最新的数据在主有而从没有主从不一致。那么如果先写了 bnog, 但是 redoger 没有写成功,那么我的主没法恢复数据。能够从 bnog 同步到数据,导致从有而主没有,也导致了主从不一致。 这都是因为啊, redog 跟 bnog 不管哪个写,写入后面一个都有可能失败导致的。如果他们两个要么都能全部成功,要么全部失败就好了。所以啊,他采用了一个二阶段提交日志。 我们来看一下图。我们在开启十五提交数据的时候,会先写一条 readlog, 但是它是一个准备状态。真正看密特以后,我会去写一个 belog blog, 成功了以后,我才会把 redlog 的准备状态改为 comete 的状态,然后根据他们各自的同步机制同步到此盘。 假如啊,第一步失败了,那么我数据肯定是回滚的,因为我根本都没有提交。假如第二步失败了, bnog 没有写成功,那么我把原来 redoger 的准备状态给删除,整个事物回滚。 假如第三步失败了,那么这个时候其实 redo log 我记了一个准备状态,并且 b log 也存在了,那么这个时候我不会去进行回轨,而是把 red log 改成看病的状态。 b log 跟 redo log 都有。 所以这一个也就是通过二阶段提交来去解决了我们的数据已知性问题,保证了 bellog 跟 redoge 都有。 ok, 今天的视频啊就到这里了,希望能对你有所帮助。我是灰灰,我们下期再见。

my circle 事务指的呢就是完成某个功能的整个过程,就称为一个事务,那么它有一个特点叫同生共死,就是说整个业务过程中出现了一点错误,那么咱们就说事务呢是失败的,那么整个过程都成功,那么这个时候呢,就说事务呢是成功的, 最典型的案例呢,就是我们的转账业务,比如说 a 要给 b 转三千,那么这个时候呢, a 的账户要减三千, b 的账户呢就要加三千,一定要保证 a 和 b 账户的金额呢,都改变了以后,才代表我们的这个整个的事物呢是成功的。 那么接下来的话呢,我们就这个案例给大家做一个相关的买 circle 的事物实现。首先呢要明确一点,就是买 circle 数据库呢,默认情况下呢是一个 circle, 据是一个事物, 也说每一个丝儿口语呢,在执行完以后呢,他就会自动的进行一个提交。那么接下来的话呢,我们可以先看一下什么呢?当前数据库的一个提交方式,那么下面这块呢,就是我们的这个查看的相关命令叫什么呢?搜,然后呢是 very ables like like, 然后呢是单引号北分号,中间的话呢叫什么呢? out two carmeter。 这样的话呢,大家会看到我们默认情况下呢,他的提交方式是应该是开启的,就是自动提交是开启的,那么这里边的话呢,我们是需要给他设置,为什么呢?手动提交, 设置的时候呢,我们设置是 set, 然后呢是 or two carmeit 等于什么呢?等于零给它设 设,为什么呢?设为手动提交,因为我们要保证是什么呢?两个 c 口语都执行完以后,然后呢我们才去提交事务,而不是每个 c 口语执行完以后呢自动提交,所以呢我们要给他设。为什么呢?手动提交, 作为手动提交以后呢,那么这个时候呢,咱们就需要什么呢?在更新什么呢?我们的账户的金额之前呢先去什么呢?开启我们的事务。开启事务的话呢,我们对应的命令的话呢叫什么呢? s t r t start, 然后呢是事务, 然后是穿的 c 穿 c 手,然后呢 c t i o n 回车 开启失误,开启完以后,然后呢接下来呢我们就可以什么呢?对用户的这个金额呢进行一个更新。那么目前的话呢,我们这里边呢是有两个账户,一个是额的命账户,一个是路特账户。假如说呢, 我现在的话呢是额的命账户,要给入头账户呢,去转什么呢?转十块钱。那么这个时候的话呢,你说额的命账户呢他要怎么呢?解十,然后呢入头账户的金额呢要加时,所以说咱们先来更新我们的这个额的命账户,更新语句的话呢应该是 update 啊,靠他。然后呢是设置什么的?设置他的这个金额金额的话呢列名,我们叫 money m o n e y money 等于什么?等于 m o n 意外 money。 解释,然后呢条件的话呢就是我们的这个对应的账户名,咱们的列名呢叫内幕。等于什么呢?等于奥特曼 回车,回车以后呢咱们再来什么呢?更新一下我们什么呢?我们 rot 账户的什么呢? 金额,那我们把我们把这个内幕呢改成入头,然后呢金额的话呢这块呢变成加十,接下来的话呢 回车,这样的话是相当于是我们这个整个的转账呢就结束了。如果说这块的话呢,两步都什么呢?都执行成功了,那我们这块的话呢就可以直接什么呢?去提交事务,提交事务的话呢,我们用的命令是什么呢?克密特 回车。然后接下来的话呢,我们再 select 星 from a c c o u n t 大家看一下对应的金额呢就全部个性成功了,这个呢就是一个完整的一个事物。当然如果说中间的话呢, 第一步更新成功了,然后第二个账户呢,在更新金额的时候如果是失败了,那么这个时候呢,我们就可以执行什么呢? robot, 然后呢完成一个事物的回滚。以上呢就是我们关于买 circle 的事物。


在学习数据分析的过程中,安装满折扣总是让人崩溃,就在刚刚还有个朋友向我求助,安装满折扣总是报错怎么办? 哈喽,大家好,我是你们的冷凡社长,今天社长准备了一个保姆级的教程,帮你解决这个问题,按照社长的教程,你只需要进行几步简单的操作就可以完成整个安装过程。学习数据分析,苦于安装满分 q 九已, 那我们话不多说,赶紧进入视频演示吧,我们来演示买车库如何安装,这张已经准备好了图文版的教程。首先第一步我们要进行买车库安装包的下载,打开网页输入买 cq, 进入官网,然后把页面翻成中文,然后点击下载,按到最下方,点击满是扣社区下载,点击适用于温度式的满是扣,按照 程序选择下面这个体积比较大的下载,然后点击 nosex, 然后开始下载啊保存到桌面,然后他这个时候就开始下载了。下载完成后,我们得到一个安装包,我们接着看教程。 有的小伙伴可能在下载的这一步就失败了,下载的速度比较慢,所以社长这里提供了一个解决方案,已经在飞速的小伙伴呢,可以点击我们的原文档,点击共享空间, 然后找到安装包下载,然后这个就是社长新上传的百事故的安装包,然后点击下载,点击下载 你会发现他的速度也是比较快的。好,我们继续看教程。下一步就是买舒克安装,社长提供的安装流程只需要操作两个地方,其他的地方都是默认就可以了,第一个是安装的时候只选择服务,第二个是 只需要我们自己来设置密码,我们双击我们男装程序,首先我们要只安装这个十二位就可以了,我们学习满是扣,其他的功能是用不上的。这里要说一下我 我们左侧的这个栏目可能会随着我们的往后操作而变化,大家的电脑环境不同,他的流程也会有些小的差别,转折完服务后,如果你的电脑是比较新的,你会出现这样一个界面, 就是要安装一个依赖,然后点下一步,他就会按照这个吃家家的依赖,然后同意安装即可。 然后呢会进行到这一步,然后我们来看我们实际的,因为社长的环境中已经有那个依赖了,所以社长这里点下一步会直接出现这个安装服务的界面,然后我们进行服务安装,这就是加载完成,然后我们点下一步,他这是一个产品数, 我们晚点下一步,从这里开始呢就进行买车购的配置,然后这里也不需要任何的改装,我们进行下一步,这里呢是选择他的一个身份认证方式,我们默认就可以了。这一步是我们需要自己来设置一个密码, 这样建议呢密码设置不要太过复杂,然后同时不要超过八位。好,设置完成后点下一步,然后点下一步,然后点下一步, 好到这里我们点击完成,然后到这里我们点击完成即可。设置完密码,后面的步骤都是默认就可以了,我们往下进行,即使我们安装已经成功了, 但是为了确保他真的成功了,我们需要进行验证,那社长这里提供的方式呢?就是利用买社扣管理工具来进行验证,一般情况下我们按照买社扣 的时候也要安装一个满是扣管理工具,一般比较常认就是 notket, 然后我们今天就使用这个工具来进行验证,点击创建连接,点击满是一扣,这个名称呢,我们随便起,然后其他内容他已经帮我们填好了,我们把我们密码输进去 啊,点击测试连接好,连接成功,这就说明我们买石柜已经安装成功了,然后我们就可以利用这个工具来练习了, 新建一个查询,然后输入一个简单的句子,好的,我点击运行 好就有结果了,那我们继续看教程,使用这种方式验证非常的简单,都不需要你去写命令行,也不需要你去添加环境变量,当然也有小伙伴还没有来得及安装管理工具,那我们可以用传统的方式来验证,首先呢我们按下 温加尔,然后在这里面输入 cmd, 根据确认,然后我们需要进行散步动作,首先第一个是输入 cd, 加上我们这个特定路径好,然后我们回车,这样的话我们命令就在这个路径下执行了, 然后我们输入这个固定的启动命令代码好,然后我们回车,就要求我们输入密码,我们输入我们的密码,然后回车好到这一步呢,我们也验证了我们的买车安装成功了,然后我们会出 最后说一下重装可能遇到的问题,如果你安装过,然后现在又要重装的话,很可能会出现你在安装的过程中,直到这个页面就结束了, 然后你需要再次点击这个安装程序,然后进入到这样的一个界面,然后点击配置, 然后就一路的默认就可以了。到了设置密码的部分呢,就设置密码就和上面的流程完全一样了,谢谢大家的观看。 按照社长的教程成功安装了买社扣,欢迎来评论区报喜,当然遇到问题也可以来评论区咨询,如果你觉得这期视频有用的话,不要忘记给社长点赞,收藏加转发,大家的鼓励就是我创作的动力。 安装完满社扣后,我们总要有一个创手的工具来写收口,那下期视频的主题就是满收扣的管理工具,把满收口安装和满收扣管理工具搞定的话,你的收口学习之路就成功了三分之一。以上就是这期视频的全部内容了,祝大家的安装过程一切顺利,我们下期视频见。


好,我们来讲一下 pg 的两阶段提交啊。两阶段的提交的话,它是用在分布式系统里面,它分为两个阶段。第一个阶段的话是 prepare 出来这个型啊,这一步执行之后思维就已经持久化了啊。然后第二步的话叫 commit prepare 的啊。然后这一步执行之后才能查到我们这个提交的一些数据 啊,但是他有个前提啊,啊,必须要保证这个参数大于零。好,我们这里来看一下。我们先来查询一下这个参数。好,我这里来拷贝一下。 好,这里是等于零的。我们要改一下 cd, 我们来改一下它这个配置文件。 好,我们这里考过来,然后找到这个地方。 好,就是这里啊。然后咱们来改一下,我们这里改成十吧。 好。然后咱们来重启一下 reload 啊,不是咱们来重启,不是这个,这个是重新加载啊, restart。 好。然后咱们再来登进来啊。然后的话,咱们来进行一下这个插入啊。我们先来看一下这里面邮账表里面是有两个数据了。然后咱们来好, begin。 然后我们来 insert in two t e values, 咱们来插入一个三。 好,然后的话,咱们来 prepare 好, prepare tradition 啊。然后咱们来设置一个全局的四五 id 啊,叫 gt 零一吧。 好,可以看到现在拍了之后,这个事物就已经结束了啊,相当于这个事物已经持久化了。咱们现在来查一下,他是查不到的,因为没有这个 camit 嘛,对不对啊,你可以看到是不是没有提交呃。然后咱们来 camit 一下 啊,就算现在我们把这个数据库啊给他关闭,重启之后他也不会这个掉。这个数据。咱们来看一下。 呃,再来 restart 一下吧。好,咱们再来。好,再查询一下 select 的心 from t e 好 say 是不是没有查询进去?然后咱们来 commit 一下。好 bapar 的。呃。然后全局的这个数 id d t 零幺好。然后咱们再来查询一下,你看是不是啊。这就是两阶段提交啊,它主要是用在这个分布式系统里面。

哈喽,大家好,今天带大家玩的是一个麦塞扣组成服务,然后呢玩服务吗?就要了解他的利弊,这个是我写的文章,然后视频录完之后,我会把链接放到视频的评论区,大家有需要的话可以去观看, 然后呢优先去了解这个服务的利弊,优点的话就是进行备份,保证数据安全,比如说你的资源,然后呢放在了百度网盘,有一天你的百度网盘呢被盗了怎么办呢? 你是不是就没有了?如果说你的资源不仅放在百度网盘上,而且还放到阿里云盘上,谁呃,哪怕百度网盘密码忘了,或者是 那个被盗了,这样的话你还有阿里云牌,这样的话你数据是不是就保证了你起码数据没有丢失, 这个也是同样的道理,比如说主服务器如果压力大了,或者是呃怎么了,他的服务器,他的数据崩了,但是你的麦搜,嗯,你的重服务器的话,你的数据是有的,你重服务器是有组,组服务器是有组服务器的数据, 然后呢他的优点是可以缓解主库的压力,比如说主一群人在访问这个数据库,这在里边添加添加数据, 也在里面那个写入数据,也查看数据那个,这样的话组服务器的压力是不是特别大?如果有一个重服务器去分从服那个组服务器的压力 的话,这样的话重组夫妻的压力就会减小,从而那个缓解主库的压力。一个而且还有一个重点是一个组服务器最多有八个重,就是意思是就是最多有八个重服务器, 到后期的话会给会大大家去玩那个麦克扣的读写分离,这样的话他是另外一个符。等到下期视频给大家讲,先了解他的一个原理和过程, 简单的来说就是组服务器是老大,重服务器是他的小弟重服务器呢,组服务器需要 主服务器需要那个这个老大呢?他的数据有了,但是他感觉不安全,老大吗?手表 每天被刺了。然后呢,他想把数据给小弟一份进行保存,让他这个数据可以保存下来,这就是一个主重服务的一个思路,也可以说是。 然后他的原理就是相当于就是把数据库,就是把数据给老,呃,就是有些人,嗯,有些人拔了数据跟老大之后,老大嘞把这个数据自己留了一份,又给了小弟一份,让他进行备份,这个就是他的一个过程, 具体的话他会这是比较一个好理解,我认为是一个比较好理解的。 然后呢,接下来就直接就 接就是进行配置文件。林宁克斯嘛,万物皆文件。第一步的话先停用防火墙和舍林宁克斯,因为我这个是 自己的一台服务器,所以说可以停,如果在你的生产环境中,千万不要去随意的去停服务器,可以通过 masico o 八防火墙 啊命令规则,然后去添加三三零六的端口进行通过,因为大家都知道麦塞克的端口就是三三零六。下一步 晕,然后下一步是修改配置文件,首先添加 sorry id 基本上都是 ip 的 最后一位,因为那个每台电脑的 ip 的他是基本上在同一个局域网上基本上都是不一样的,如果是同一样的话会冲突,这个是我主机的一个, 这是我主机,这个是我主机的一个名字,组服气的一个名字。 ok, 结束林静克斯吗?但凡你动了他的一个文件之后,一定要去重启他的服务, 重启服务, ok, 去添加用户,因为大家都知道 maiso。 呃,那个临近特斯的老大入特,你进公司之后不会给你入特权限,因为入特权限的功能能力太强了,他可以删跟。 然后呢?买搜狗。同样的道理,如果把你的他的基本权给你的话,他会怎么说呢?不安全,一是不安全,二是 对于一个不是心腹的来说的话,设想一下肯定不会给你那个入特权限的。 ok, 刷新,刷新完之后这条命令创建用户, 这条命令是创建用户就创建我们使用的这个用户, 因为那个正常情况下,你进入公司之后使用零零的数据统不会给你入的权限,他会给你普通用户的权限分配用户啊,密码啊。同样零零的那个 mysold 也是一样的,给他新创了一个用户,又给他分配了一个密码,然后 刷新一下,刷新完之后这条命令是授权,你竟然把这个命令,你需要把这个用户去授权给其他重复起,重复起接收,才能完成一个有来那个一个一来一回的一个过程, 然后敲一圈查看槟榔哥日制,这一个是重中之重, 这个重服务器基本上就配置完。呃,组服务器啊,不好意思,组服务器就要配置完了。重服务器的话,同样的关闭设立尼克斯,然后停防停,用防火墙,然后呢? 修改配置文件。这我先退一下, 他这个的话只需要添加一个 id 就可以,这个 id 也是这个重服务器的一个幺零。呃,那个 ip 地址最后一位,因为防止他有冲突吗?弄完之后需要重启服务器,重启 服务,然后登录刚批密码, ok, 这样的话这个就进入从服务器里面了。接下来需要接收授权,因为这个我提前写过了,这个命令有点长。稍等, 这个命令有点长。 ok, 没问题了, 这条命令一定要在从服务器里面去搭,一定要在从服务器,从服务器重点的问题说三遍。重服务器,从服务器,从服务器,但凡在主服务器的话就会出现问题。然后呢?这条长的命令的话,其实很简单, 接收授权,因为主服务器已经授权过了,然后重复器需要接收授权,他的 ip 地址是这一位, 他接受授权,他的起码知道啊,数据来源的位置在哪吗?所以说他的 ip 地址,然后呢?端口三零六麦塞扣吗?然后用户接受这个用户,然后他的密码就是这个的话,就是刚才咱学的这个, 就是这个就是煮二斤制的一个 文件名,它是主要是金字的文件名,然后这个的话是偏移质量,然后敲一圈, ok, 启动进程,启动完进程之后查看, 大家可以看到这个,正常情况下这两个都是 yes, 目前的话这个不是 yes, 报错了,查看一下他的报错信息,从这里边看看一下他的报错是,呃,信息 遇见爆错。不要双,因为我是学云计算的,然后呢?我,我的一个老师给我说过,云计算的话,他就是一个排错 的一个过程,所以说就需要不停的去排错,身份验证失败,因为埋塞扣的话,这又是一个知识点,因为埋塞扣需要先停一下服务才能去修改,稍等一下, 他并不是密码输错了,而是说你看一下这一点,买骚客八的密码方式采用的是跟之前不同的,如果在组服从服务器门接收授权,需要添加这一个参数, 再添加一下,还是和刚才那个命令一样, 嗯,没有复制成功, 再次敲回车, ok, 再去重启一下服务来看一下状态。 好了,到这这个时间基本上就完成了,这个组成服务已经搭完了,需要测试一下。然后呢, 大家可以看到,如果这两个都是 yes 的话就是成功了,但凡一个不是 yes, 那就是失败的大,如果是不是 yes 的话,可以去看这两个, 一个是搜扣这个,还有一个是 io 这个,这两个报错信息进行进行排错,然后现在 验证一下,在主服务器里边去添加创建一个表, 使用这个表, 在这的话只添加一个数据粘贴,可以看到这一个里面有个数据是刚才添加的一一三个一。然后呢直接在重复器里面试验验证,同样的使用这个表 使用了,可以看到这个是正常使用了,使用之后查看一下。 ok, 这样的话主重服务已经答完了,可以无论是验证呢,在总服,呃,在主服务器里面去写入数据,在从服务器里面去 查看数据是没有问题的,也就到这为止,这个重服务器主从服务就答完了,希望您有收获啊,我们下期见。

快速带你读懂买搜口的兵罗克显入机制,兵罗哥,我相信大家都或多或少的听过,对吧?那我们呢就去详细的看一下他写入的流程是怎么样的。我们再去使用数据库的时候,那第一步肯定是去开启一个事物嘛,那这个不用多讲, 那我们开启完事物之后,我们会执行那增商改查的语句,对吧?那假设我在这呢执行的是更新语句,这个时候在这个事物当中,或者说在这个县城当中,他会去创建一个 binog case, 也就是 binog 的一个缓乘快。 当我们创建完缓存快之后呢,他会去生成一个 statement, 或者说是一个肉。这条本视频的文档我已经整理好了,并且与往期内容一起贵重,放在视频的最后面,坚持看完,一定对你有关。那 statement 呢,我们可以理解成为这是我们的 seco, 而肉呢,我们可以理解成这是那一行的数据,这是两 两种方式啊,我们也是可以选择配置的啊。那我们生成完了之后呢,我们把数据会写到这个 bino cat 里面,那这个呢,就是我们在提交事务之前的一个流程呢,就是左边的这一块,那 binog cat 里面到底有哪些东西呢?我们也跟大家来详细的讲一下。 首先我们从名字上来看, binog catch, 也就是它是一个 binog 日志的缓存,对吧?而日志的大小呢,它其实是可配置的,并且每一个事物呢,它都是有一个单独的这个 binog catch, 他本质上是一块内存,那内存肯定有一个大小,对吧?那他默认的大小呢?是在三万个字节左右啊,那可能有同学会想问啊,那如果我们的日志他大于了这个数字怎么办呢?首先我们要知道一点,我们用缓存的目的 是为了提高性能,对吧?那如果我们缓存用不了的话,那他怎么办?他会把这个日志呢放在磁盘当中啊?好, ok, 这个呢是事物提交之前的所有步骤和流程呢?那我们再去看一看。事物提交之后啊,当我们去把事物提交的时候,他也会分为两步去执行啊。首先第一步, 它会把这个 bnog 日志呢写到这个 page cash 里面,而这个 page case 呢,它本质也是一块内存啊,那它里边放的呢,是这个 benog 的一个文件,当我们写完这个 page case 的时候,它会把数据呢同步到这个词盘当中, 这个呢是整个写入 bnog 日志的流程啊,那写入内存和写入磁盘他们之间又怎么同步呢?如果我写入内存的时候挂了,那怎么办呢?这个写入时机呢?我们也是可以通过 参数去配置的,叫做 thinkinglog, 那这个参数呢?如果我们设成零,它代表的意思是我们每次事物只是写到这个 pg catch 里面,不会执行这个持久化的一个操作,那这个呢,是不建议的。 那如果这个值等于一呢?那就代表着当我们写到这个 binogfer 里面的时候,它会同步地写到这个词盘当中啊。 那肯定有同学想问,那如果这个值是一,那他每次都会同步到磁盘,我这个值能不能改呢?我能不能改成二和三呢?这个其实是可以的,你可以设成一个 n 的值,也就是你不论设成什么样的值,如果这个值越大,比如说是三啊,是五啊,对吧? 那如果这个值是三,那代表着我在内存里面写了三次之后,我才会同步到磁盘。那一般来说啊,如果说我们为了去提高那数据库的一个 iops, 我们可 会将这个参数设到一百啊,设到一千啊,那这些都是可能存在的。但同样的,他也会面临一个缺点,也就是我们还没有同步到磁盘,是不是就有可能会发生荡机,那他最多就有可能丢失掉我们所设置这个值的日志,对吧? 那如果说你要为了保证数据安全的话,你设成一就可以了。好,那可能有同学又想问啊,你如果你数据库当中的 bnog 内容他有缺失怎么办?那丢了怎么办?那对于这一点呢,实际上我们不用担心的啊, 那如果我在写入 bnog 这一块,我配置的只是一百,那中间如果发生了当机,那我们会丢失掉一部分的那个 bnog 日志,对吧?当我们再去重启的时候呢,数据库它其实是能够感知到的,它会感知到我们的 bnog 它, 他会比预期呢少了一点,那么他会在我们启动的时候去打印一行日志啊,我们来看一下。好,可以看到这一行日志啊, 当我们去启动的时候,他会给我们抛出这一行,那当他抛出这一行错误的时候,那这种情况就需要我们去人工的干预,然后从快照里面我们去重新复制出来。 ok, 这个呢是一个解决方案。那最后呢,再跟大家去讲一点实用的吧,我们如何去使用 benog 去恢复咱们的历史数据? 我们来简单的看一下,那首先知道 bnog 会记录所有的逻辑操作,对吧?那是追加写的形式,那 bnog 呢?它能够恢复任意时间点的数据,怎么做到的呢?那这一块呢,实际上是有前提的啊, 首先我们必须有定期备份的全量数据机制,比如说我半个月备份一次,那每天备份一次,那我们去假定一个 场景啊,假设今天中午吗?那十二点有一次误删表的数据,我不小心那执行了一个秘密,我把整个库删了,或者说我把整个表的数据删了。那怎么找回来呢?首先我们要找到最近一次的全量备份数据,比如说是昨天晚上凌晨三点或凌晨一点的, 那我们从这个备份里面去恢复到临时库。然后呢我们从备份的时间,我们从凌晨一点开始,把里边的 bog 呢取出来去进行一个重放,那直接重放到今天中午,我们执行这一行误操作的命令之前,这样我们就能够把我们误删数据之前的状态给找回来, 这个呢是我们恢复历史数据的一个方案。好, ok, 那本讲的内容呢?我们聊到这就结束了。

好,大家好,今天我们来分享一下优诺的 gs, 还是拿之前一个上传图片的一个功能,就之前我们上传图片,我们知道每次刷新我们就没有了,就显示不了了,我想每次下次进来再有有什么办法?第一个就是存到本地把一些链接,但是 这肯定是也不是完全靠谱的,对吧?我如果把它存到本地,哪天我把浏览器的一些本地数据清了,也没有了,所以想数据永久的一个存储,一般我们就是会想到一个用数据库,所以今天我们用这个以前上次的一个例子 上传图片,例子把一个图片存在一个数据库中,我们来稍微了解一下用怎么去,嗯,用 note, g s 和一个数据库来进行一个网站的一个开发。 先看一下我们上次的一个例子, 先把上次的这个启动一下大一点, 这就是我们上次的一个上传的一个功能,对吧?我上传一张图片提交,然后看对应的面对,你看添加一张,对吧?这是我们刚上传的一张图,然后现在我们把这些图片一个地址存到一个数据库。 听到数据库,我们这里今天用的一个 master, 所以我们先安装一下, 安装一下 micro, 如果没有的没有样的同学们可以使用一个 npm 零四座, 这样就可以了,也是一样的啊,我这里我直接用这个, 现在我们在我们的目录下面安装好了这个图片,把它删掉,在目录下面创一个一个 d b 的一个目录连接一个数据库的, 然后创建一个 delete g s 好看一下,然后我们这里导入进来 massac, 我们进一个连接 e c t, 我们 action nice, 点 create 啊,它有几个参图,一个是 pose 的,你就连接本地的, 如果你是连接远程的,就是一个远程地址的一个 ip。 呃,用户就要用入团用户最高权限的,我们在这里就不讲一个 master 数据库的一个安装了, 大家自己到网上也有很多教程,然后是一个密码,嗯,这是 a b c 一样放,然后, 呃,这有一个 qq 名,就叫 taste 吧,等下我们创建个 taste。 好,我们然后 connection, 点 connect 连接一下,然后导出, 那我们要给外部其他的一个文件使用,导出。好,这样我们连接了一个数据库的文件就写好了,这是不是还是还可以再放大点, 这样可能会好点。 好,我们看一下数据库,我们这里创建一个 test, 用 utf 杠八的, 我们要存储图片,我们建一个表,我们就叫一个,我们先给他一个 it inter 类型,嗯,自动增减,不是浪,我们再加 一行这个 i m g u l 成这个图片的一个地址就可以了,然后要设置一个主键, ok, 表我们就接好了。 然后我们创建一个页面展示这个图片的,现在我们这里只是上传,我们搞一个页面,专门显示上传的一个图片。嗯,我们创建先创建一个路由, m, nice, 这,哎呀, 第一个路由 get ys, 点 run 的一个,它就会使用这下面的一个模板文件, 这个我们这里表白 十二 m s。 看一下啊,我们把这个引入进来。 好,这样我们预览一下,打错了,看一下, 没有找到这个模块啊,没有打住, 再试一下,嗯,还是不行, 怎么多了一个 r, ok 啊,就这个,我们写个 m g s, 看见没有?这就使用了这个模板。好,我们把这个改一下, 这里我们搞个 table 吧。 t d t h 头,这叫 i d。 嗯,这是这个图片, 看这里改一下 t t, 这里要快点,就这样啊,你这里改个 m g 编地址, 这里打个看一下,把一个加个变框宽度 啊,大概就是这样,我们再加一个,我们等下再加一个,嗯, 再加一个删除, 你就这样。好,列表,我们先把一个图片的查询出来,嗯,找到这个路由,对吧? 没有 get 请求的时候,我们要把一个查询数据库,把这个列表查询出来。 connection, 对吧?我们可以 connection 点 curl, 第一个它是一个查询语句,这个啊,一个 dat 进行一个渲染, 那查询语句怎么写?就是写一个 massacre 的,不过写其实我们没有关系啊,我们可以看在网上搜一下,有很多,或者我们直接在这里看,这里随便写一个 执行一下,你看这里就有看到没有。这个 number 开头,我们把粘贴过来,你看他就会查出这里的一个数据,他查出一个 id, 我们是不需要的, 因为它是特征,我们是刚才设置了一个特征,我们所以我们只需要这个值,对吧? 把这个插入我们这里是要去查询,查询这,这个,我们这是查询,你看这样就查到零到一千条啊,我们就先这样写,先把先查这么多查询,把所有条件都返回, 然后我们再返回这个 data, 然后这个页面里面就可以拿到这个 data, 我们进行一个循环,因为它是一个数组 带一个 data, 你看我们把这个 id 显示出来,我们这里先把这个字显示出来,我们看对不对。 划错了, data 也是 not defend, 没有重启,看一下, 给个 d b 有问题?没关系啊,我们解决问题就行了。我们看一下他这里引入的我们这里,我要这样学习, 可以啊,是吧? hypothal for each on defend data for each on the found for each of on the found。 这,这来返回一个速度吗? 应当没有错, 我们打一下,如果有错误,我们就直接返回 os 画出声中,把 u s 画出来,就软的一个,软的一个 air, 把这个错误显示二,应该没有错啊,这里,对的, use it and for for each。 那它这个 dat 是输出一下,它这个 dat 看一下啊,看一下,看一下。 back to the data times dlo cil good。 少了个 l, 找出数据功能点,看到没有?一二三,一二三,看到没有,真的,这,这里,这肯定是,这里是没问题的,是说写的没问题啊,这里, 嗯,不要了,然后把这里改一下,改到这里来,问地址,是吧? 然后我们怎么做?我们插入图片,当我们插入图片这里,这里继续继续引入进来 connection, 把这个图片地址存进去, 上面有 data 啦,避免不一样的就搞不了,这就不用插入成功,只要没有没有返回错误,但我们不要查,不要获取它。 data 查询语句,刚才我们有,对吧?我们来看一下,你看 不会的情况下怎么搞, 加一条,你看 there are, 这里可以不写执行插入,看到没有? 所以我们要很好的利用一个工具,如果你去敲,虽然你敲肯定没问题,但是速度还是稍微慢一点啊,想敲的同志们也可以,这个没限制,也不能敲, 然后我们把这个图片地址,图片地址是这个,对吧?图片地址是这个, 往这里面 把这个 file, 啊, ok, 这样就插入进去了 这盘的假如如果还有存在,你就把 yes 放到这个图, 好,我们试一下,重启一下,试一下, 这样一张图。好,成功 有了,看到没有,我的图片踏到戳一下这个样子,嗯, pv 写公用的 图片,这里图片直接写一个翻斗灯,一把把 p f 看一下,对,好多了,是吧? 这两个数据我们就不要了,删掉删除, 按一下没了,对吧? 好,查询, 我们这里有了,我们再上传一张,提交 r m g s, 先开一个,对吧?再上传一张,这张三张, ok, 那我们现在一个写一个删除的一个功能, 删除后呢?我们怎么搞?这样我们直接搞个 id 键删除,绑定一个时间 dj 使用的一个 jack detail。 好,先放到这里,然后我们写肯定要一个接口,是吧? 到后端这里写一个接口, get d d l, 欢迎 s copy 一下,如果没有错误,我们就因为它是接口显示,我们返回一个接上错的两块也是一个 me, 删除成功, 下面这里有,如果有错误,我们传个二零幺,把这个错误信息传传过来。好, ok, 然后接下我们的一个 circle 语句,是吧? circle 语句怎么写? 其实是比较简单的,看一下,看一下,看到没有执行这个 传一下,这个是接手的一个 id, 是吧?我们所以我们这接手一下 id, 哎,这个 i q i q 点 car id, 这个我们替换一下。 好, ok, 这个我们就写好了, 重启一下,然后我们来这里用个壁纸,一个请求壁纸,第一个是传一个壁纸, 是这个,对吧?然后 mess get get 请求,我们穿穿从这里来啊,所以我们这里应该怎么办?要接受一个 id id, 这里这一个 id, 对,这里就是我们对的这一个 id, 然后点这 节省用 fish, 这里需要是需要转一下打圆节省看,以前我们携带,你看一下 是吧?嗯,是,这是需要去处理一下的,这里要记得这里,这用 fish 和阿贾,阿贾克斯是有一点区别的,这里需要把这个转成一个 jason, 而且还要是一个义务的 a single over 的要用, 这样我们就可以拿到了。我们这里返回的格式,一个节省格式, 如果 data 点 cod 就等于等于两百,我们就提示删除成功,我们让它刷新一下,开始点 vlog, 否则提示一下这个删除 control 是吧。嗯,好,看一下有没有问题。 哎,还有两张吗?有两张,是有两张 没执行,对吧? fire the fish。 啊,打错了吗?这个 f e t。 写成, f e t。 写成,哎,没错不错,真的,其实也不错, 错误的 face。 哎。这是什么云?看一下啊,我们找一找,没有写错,是这样,有可能没有写错, 这是 s t r m 里预报的应该是是这个,这是这个是做的错误,是错误, 搞错了 看一下。 o e s not defend o e s not defend。 这是 o e s。 这里 b s。 所以我们开发过程中要经常不断的调试才能发现问题。删除成功,看到没有?所以我们的一个删除,嗯,调音接口,调音接口 选择声波,然后再上传音乐 就有了,我们把这个,因为它也是这种 olate 啊,没关系,我们不清,我们把这个勾选上,这个勾选上删除, 哦,它 rot 它这个就看不到了,它这个请求,这样吧,这样就可以看一下那个请求,这样子成功看到没有?然后这就是一个接触模式, 所以我们就这样就实现了一个数据库,这个图片的一个存储,存储到一个数据库,其实它图片啊还是在我们的这个服务端这里, 只是数据库里面只是存了一个图片的一个路径而已。记住并不是把整张图片塞到数据库里面,只是存了一个数据库,因为数据库它是一个表,而是存了一些值文件,它其实还是存在一个,呃,服务器的一个目录下面 啊。今天这就分享这么多,谢谢大家。