给你们看一下我现在写 ss 的图书啊。最纠结的地方,这是一张的书稿啊,就是 surimec 一张的书稿,打印出来的页数呢,是七十页。最终在出版的时候呢,经过排版,差不多能控制在六十七页左右。 呃,每一张的内容呢,还是按照我们原始的方式,有各位的图式的方式进行编写 所有呢?这本图书的图饰呢,我算了一下,应该是有四十多张,近五十页的图形。 目的呢,是帮助大家呢尽可能的去把送上一些的各个使用以及核心元代码呢,理解透彻。但是让我最纠结的一点啊,不是这本书,因为这本书的页数已经超过我预期的内容了。呃,最纠结的是哪呢?是 一本,就是有一本配套手册。这是我额外增加一本配套手册啊。呃,为什么追加这个配套手册呢?这个手册上,我们给他设置了一个知识点的结构,就是说完成这样的一个实验,我们需要多少个知识点,当然只是 核心知识点。如果要是全部都列出来的话呢,包括家务,那可能有满篇的都是知识点啊。呃,但是这个案例呢,是现在写的是三十八页,所以为什么不能把这个案例和书写在一起?就是因为我算了一下,这个书的页数呢,会爆后, 所以相当于无形之中。我要给自己增加了很大的压力去完成两本书。 ssm 图书啊,有可能会稍微慢一些。我们要因为要涉及案例,又要给大家讲解清楚这个国际结构,希望兄弟们耐心等待一下。
粉丝2.7万获赞16.7万

各位同学大家好,今天我们来学习一门高级技术, my baddis。 那么首先呢,先来介绍一下 my baddis 到底是个什么东西?它能解决什么样的问题啊? 那么买贝贝斯呢,它其实是一款优秀的持久层框架,它用于简化 jdbc 开发的, 那么这一块呢, jdbc 我肯定知道啊,哦,买贝迪斯这个技术呢,是来简化 jdbc 的这么一个持久层的框架, 那么这里边有两个词哈,一个词呢是持久层,一个是框架,那么对于这两个概念,我们第一次接触下来,我们来讲解一下。首先来说持久层, 那么持久层呢,其实是来负责数据保存到数据库的那一层代码,我们称为持久层,那么核心点在于啥?是不是在于这个数据保存到 数据库啊,也就是说将来啊,我们可能会有很多很多的代码,那么这些代码呢,我们为了保证他的职责单一,我们将同数据库操作的那一些代码呢,我们就称为持久层, 就这个意思哈,那么其实在扎挖意义里边呢,有三层架构非常经典,分别是表现层,业务层以及持久层。 那么其中表现层呢,是用来做页面展示的,而业务层呢,是用来做逻辑处理的,而持久层就是用来对数据进行持久化的保存到数据库去的。 那么今天我们来学习的是持久层,那么对于表现层和业务层,在我们后期的课程中会逐渐讲解到的。那么接下来我们再来说框架这个词,框架呢,它是一个很重要的概念啊,其实框架 就是一个半成品的软件,半成品很关键,它是一套可重用的通用的软件基础代码模型, 那么读完了之后呢,可能也没有什么太多的感觉啊,来解释一下。那么这个地方呢,半证明很关键,也就是说啊,有一个软件,人家写了一半,然后接下来你拿到这一半之后呢,你在上面再进行一些代码的编写,那么这个时候合起来是不是就是一个完整的软件产品了? 其实就这个意思哈,那么这个时候呢,有什么好处呢?就是你在框架的基础上来构建软件的话呢,别人写好了一部分,你再来开始写,是不是更加高效? 而且呢,别人写好了一个模板之后呢,你来写更加规范,通用,可扩展。所以将来我们要学习很多很多的框架哈,就是别人写好的一些东西,我们拿过来用,我们在框架 基础上来进行开发,效率会更高一些。那举个例子吧,生活中的例子有很多,可以来印证这个框架这个事情哈,比如说啊,有没有玩过这种给石膏这种雕塑来上色呀? 我们经常去公园,是不是可以看到这样的很多的石膏,很多小朋友在对他们进行涂鸦,对吧?有没有玩过呀? 哦,有的同学说没有,是吧?那你这个童年过得可能比较悲惨一些哈,好,那么比如说啊,这有个石膏,这个石膏呢,现在只是一个模子,他还没有进行上色,那么将来很多小朋友拿到这样石膏之后呢,是不是可以对他来进行上色呀?我们可以上到不同的颜色,那么就形成了不同的产品, 那么这个时候这个石膏的模板是不是就相当于是一个半成品啊?还没有做好吗?但是呢,是不是已经有一个大体的架子了, 然后我们需要做的是啥?是不是就给他涂点颜料就可以了?所以你使用框架来进行开发的话呢,他呢只需要让你做少量的工作,你就可以做出来一个非常复杂的这么一个软件产品啊。 那么还有呢,就是我使用框架之后呢,你会发现我通过一个框架,其实呢完成的工作呢,也就是同一项的,也就是说我们用买呗,得死,是不是只能完成持久层的一些开发的技术,我将来还有表现层的框架,业务层的框架,我们其实都需要去学习的。 那么再通俗的一点讲,就是说啊,你现在一个石膏是一个小女生,对吧?那么这个时候呢,你总不能说你上完色之后呢,让他变成个小男生了吧,就是说一个框架,你不管怎么去改,他,怎么去用他,那么他做出来的东西呢,其实就是来解决这某一 类问题的啊,好,这就是我们所说的框架哈,那么今天呢,也是我们学习的第一个大型的框架,叫做买贝特斯,他呢就是用来简化 jdbc 开发的。 好,那么下边还有一点小概念也来说一下,买贝利斯本来是阿帕奇的一个开元的项目,叫做 ipath, 哎,又是阿帕奇的对吧?好,那么他呢,以前的名字叫做 ipats, 后来呢叛变了,跑到谷歌去了,二零一零年的时候,那么再后来呢,又迁到 github 上去了,这是他的历史哈, 那么买贝利斯呢,也有个官网,这是他的官方网站,我们可以打开看一下买贝利斯这个官网,他的文档写的是非常好的啊,因为呢他支持国际化哈,这里边你看是不是有不同的语言啊,我们当然选择简体中文就可以了,那么你看到了说买贝利斯他的一些介绍,而且呢后边有每一个 操作的详细的步骤和文档,那么待会我们学到对应的技术之后,我们再来看这个文档, 那么搞清楚了买贝德斯是什么,以及他用来干什么,我们再深入的去讲一下。刚才我们说买贝德斯,他是用来简化 jdbc 开发的,那也就意味着 jdbc 的开发一定有一些缺点或者说不好的地方, 那我们接下来就来深入的说一下,像 jdbc 这样的代码到底有什么样的缺点以及繁琐的地方。 那么这一块呢,我有一个 jdbc 的代码哈,那么这一块我们可以简单的看一下这个代码。首先呢注册驱动,然后获取连接, 接下来定了一个色口语句,然后执行色口的时候呢,先要给这个问号站位服来设置对应的参数信息,接下来呢就可以来执行色口了,执行完色口获取出来这个结果机蕊滋到了赛的对象, 我们便利结果机封装对象装载机盒。那么像这个过程呢,应该是非常熟悉的,那么对于这样基础的代码呢,他其实是有些缺点的,分析下来呢,其实就两个缺点,一个是硬编码,一个是操作繁琐,那么下来我们就一个一个来说一下。 那么首先呢,我们先来看这块啊,就是注册驱动和获取连接这个位置,你会发现哈,他这个地方写了很多的字符串吧,这个字符串我们就成为硬编码, 就是将这些字母车的信息写到代码里边去了,而这些字母车信息将来有可能会发生变动,比如说这个密码不叫一二三四了,现在呢,比如说叫二三四五,那么这个时候你是不是要改动代码呀? 改动代码就意味着工作量呀,还意味着要重新去编议,重新去打包,重新去运行,那你想 这个代码的维护性就比较差一些了,这是第一个,就是说呀,我们这个注册驱动和获取连接的位置是不是存在因编码, 那么除了这个位置存在印边码,其实在这个定义色扣的位置是不是也存在印边码啊?把色口语句呢字幅串写到这个地方,那将来要改动色口语句,是不是也要去改动这个代码, 那这是硬编码哈,那么再往下看,再往下看这个地方设置参数这一块,将来呢,我们要对这些问号一个一个的去设置这些参数,那么现在呢,就一个问号设置起来其实还可以,那么将来如果问号多了,我是不是得写一排呀? 比如说我在做添加操作的时候,是不是有一排问号我要挨个的去设置啊,比较麻烦,所以呢,手动设置参数也是一个比较操作繁琐的过程,那么再往下看 这个地方呢,我们在获取完结果之后,对结果进行便利,在封装对象的时候,这么大一段代码是很繁琐的一件事啊,所以呢,手动封装结果机也是一个操作繁琐的地方, 那么分析下来之后呢,你发现 jdbc 这个代码啊,确实比较麻烦吧,其实像这样的基础性的代码呢,操作起来就是比较麻烦哈,那么没关系,买贝贝斯不是来简化他了吗?那么接下来我们就来说一说,买贝贝斯是如何来简化这四个麻烦地方的。 其实呢,对于硬编码和操作繁琐这样的问题呢,他是经常这种基础性的代码都会出现的哈,所以呢,一般我们有一些通用的解决方案,比如说将来出现硬编码的时候呢,无外乎其实就是自负串,不要写到代码里边去了,自负串你将来写到一个单独的 配置文件去。而对于操作繁琐的这种代码呢,一般情况下我们都需要让他自动的去完成就可以了。 买贝利斯其实也是这样简化的哈,我们来看一下,比如说第一块注册驱动获取连接这一块,你不是 有硬编码吗?买呗,这怎么做呢?买呗这次呢,其实就是将这些字母串信息给你写到配置文件去,你看这里边是不是有驱动的连接信息,有 ur 的信息,有用户名,有密码这样的信息写到一个配置文件去,比如 比如说我们这个地方写好了一个买贝特斯的项目,我们可以看一下,有一个配置文件叫做买贝特斯杠杠飞格尔的查麦尔,这是买贝特斯的核心配置文件,你看这里边是不是就是连接的信息啊,不用在代码里边写了,写了配置文件,将来读取配置文件这些参数的信息值就可以了,那么接下来 再来说第二个,第二块呢,死口语句是不是也存在硬编码的问题啊?那么死口语句呢,买贝特斯也是将它抽取到了配置文件里边去,那么同理,我们看一下,在这块呢,还有一个配置文件里边写了对应的死口语句吧。好 好,那么我们再往后看这两个繁琐的,一个是设置参数,一个呢是便利这个结果机,那么这两部分代码呢,写代码比较烦, 对吧?买贝特斯怎么做呢?买贝特斯呢,他一行代码把这所有的事全部搞定了,我们可以看一下,在买贝特斯里边啊,他其实做的时候呢,就这一行代码, 你注意看,你看参数是不是给你了,给了之后呢,大家直接调用一个方法,斯莱克利斯等,然后呢就查询出来的这个集合,并且呢,这个集合里边装的就是 一个一个的有责对象,比如说我们来运行一下,注意看你看集合里边的信息是不是都查询出来了,你发现那么多代码啊,买 bis 一行就搞定了,是不是非常非常的方便啊? 所以啊,我们说买贝德斯啊,他其实就是免除了几乎所有的 gdpc 代码以及参数和获取结果级的工作, 买贝斯的官方呢,就这样说的哈,他说买贝斯的好处呢,就是干这件事,对吧?免除了 gdpc 的代码以及设置参数和获取结果期的工作, 不用我们再去做了,自动完成了。而且呢,对于这种硬编码的位置呢,买贝迪斯呢,也抽取到了配置文件里边,让这个程序的将来的可维护性更强一些。由于啊,买贝迪斯有这么多好处和特性啊,所以呢, 买贝迪斯在持久层框架里边,它的占比是非常高的哈,这有一个分析的图表,我们可以看一下哦,其实持久层的框架不止买贝迪斯这一个哈,市面上有很多很多这样的框架技术哈,比如说 spendice, gpa, 比如说 harbinet, 都是持久层的框架, 那么其中买贝特斯在国内占比是非常高的,占到了百分之六十九点五哈,非常高吧。然后呢,买贝特斯还有个升级版本的,叫做买贝特斯 plus 啊,就 跟 iphone plus 一样的是吧? plus 嘛,增强版,他呢也占到了三十六点五,这是多选的一个图表哈,不用加起来到一百哈,因为有的人可能用好几个的哈。 好,那么我们主要学习的今天就是来学习这个买贝特斯,那么在我们的课程推进到了后期的时候呢,我们还来讲解买贝特斯 plus。 那么对于 spand 的 gpa 啊,像海波雷特这样的类似的持久性解决方案,我们的课程中就不再设计了,因为我们要学市场上最为主流的这样的技术哈。 好,那么介绍完了买贝特斯干啥的?以及呢,买贝特斯的重要性啊,那么下来呢,我们就来学习买贝特斯。那么首先呢,我们先来对我们的买贝特斯课程安排做一个介绍哈, 那么了解了买贝思概念之后呢,下来我们第一件事就对买贝思来搞一个快速入门, 体验一下买贝利斯是如何的快速开发 jdbc 的程序的哈。那么第二块呢,我们会讲一个麦牌代理开发,其实呢麦牌代理呢,就是用来让这个买贝利斯的代码更加的简单,而将来我们用买贝利斯麦牌代理的开发方式是主流的方式哈,那么这两个都 ok 了之后呢,下来 我们会介绍一下买贝勒斯的核心配置文件,就是刚才我们说配这个数据库连接信息的这些配置文件,这里边其实除了写这些连接的信息,还可以写其他的很多东西的哈,我们要来详细的介绍一下, 接下来我们就来完成买呗,这次对于数据库的增山改查的操作啊,这块的增山改查有两种方式,一种呢是通过配置文件的方式来完成,第二种呢是通过注解来完成增山改查, 那配置文件呢,其实就是说啊,我们的思口语句写到这个配置文件里边去,那注解呢,其实就是将这个思口语句给他写到注解的属性值那个位置哈,就是配置的位置不一样而已, 用注解的方式呢,会更加方便和简单一些的,两种我们都会详细的去讲解,那么这些东西学完了之后,我们最后呢再来讲一个买 的高级特性动态蛇口,那么我们整体的买贝特的课程就学习完了哈,好,那么下来呢,我们就来完成买贝特斯的快速入门。

萌新带大家一起学习买 bentspas, 简单来说他就是对数据库进行真正改查的,可以看到这只鸟带着我们的头巾,然后在天空中咯吱咯吱的飞起来了,仔细看他的眼神,可以发现他的眼神很坚定,说明我们这个框架还是比较厉害的。然后我们来进行我们的快速开始, 在这里面我们需要去了解到它有些功能,比如说它除了基本的 c、 l、 e、 d 功能,它还支持了,比如说像内置的代码生成器,或者说一些插件,然后来看一下它支持的数据库,比如说像 massacre、 oracle 等等之类的,可以看到这么哇,好多呀。 基本作用了解完成之后,我们来看一下。一般我们去学习一样东西的时候,他都会有一个快速开始,那么我们就需要点击他的快速开始文档,然后我们去先简单写一个 demo, 然后去看下相关的效果。当我们去学习这些组件框架入门体验的时候,无非就三部曲,第一步去 引入相关的一代,第二步然后进行相关的一个配置,第三步我们就是可以实现一定的编码,比如说我们来看一下买 benspas, 这里去引入,比如说这里的一个一系列一代,然后我们就可以进行样目的一个配置, 配置完成之后,比如说在这里可能额外的需要去配置一个色包,再者我们就可以实现编码了,这里去创建一个预热的 cta, 然后我们就可以有一个 ur map 去继承我们的 best map, 那么这个 best map 是干嘛的呢?我们可以到我们项目中来可以简单看一下, 在这里我也有个预热 map, 然后去继承了这个 bismap, 然后我们来看下这里面的一个东西,他大概就是封装一些基本常用的一些公共的方法,比如说像我们根据 wop 条件去进行删除,或者说根据主机 id 进行删除,或者说插入数据去查询数据等等之类的,然后我们就可以在这里面去 去调用这里的娱乐 map, 比如说我要去查询数据用 settle, 这样我们的一个入门就已经完成了啊,这是他的一个结果。当我们熟悉了基本的 clud 之后,再者他下面可能有些其他的功能,那么你在后面去写业务的时候,比如说像逻辑删除、自动填充 多数据员,以及其他的一些方面的,比如说想要多住户,那么这些可能就是你在业务中慢慢慢慢你会发现这些东西还是挺有用的,那么你就会去接触,去了解,然后进行相关的一个学习了。 在买白字里面去写 clud 的时候,比如说我这里去查询数据的时候,在这里一般会用到我们的一个 number, 在这里可以根据 number 进行相关的一个查询,比如说这里是 ur, 然后在这里我们比如说查询,比如说根据主见 id 让他,比如说等于一,那这时候就会 查询 id 等于一的所有数据了。再者如果说我们想要去删除数据的时候,那么这里去调用一个 delete, 然后就可以进行相关的一个删除了。 作为一名萌新去学习一项技术的时候,比如说让你们去实现买 benz plus 的一个砂石多住户,相信很多人都不会去看 官方文档上面的一个说明,也就是说我这里比如说多注入插件的一个使用,他可能第一直觉就是去在我们的一个百度的搜索框,然后去打开进行相关的一个搜索,就是这个框框 说了半天之后,你把那上面的代码 c v, 然后到你自己的项目里面,你会发现,哎,跑不动,那怎么回事呢?然后你就会去评论留言,哎,老哥我怎么跑不动啊? 萌新后来才发现别个的版本和自己的版本有点不一样啊,这下恍然大悟,那这时候这个萌新又想的是,哎,别个用什么版本用的好像是版本比较高哎, 我升级一下,结果可能因为版本然后的差异导致,哎很多包然后都不能用了,那之后看到项目一片红,然后下的呜呜的, 那这时候该怎么办呢?我要去用那个功能,然后去问了一下老大怎么解决呢?老老实实的给他一个官方文档的意思,你去根据官方文档的一个集成来看吗?比如说我们这里的一个多字户,再者就是你会百度,然后也要懂如何百度, 从颜值你去学习一样新东西的时候,一步一步慢慢来,咱们不要着急,不要以为你自己就是斗罗大陆里面那个开挂的那个哥哥,然后一来就是,哎,炸欢 兄弟,你得认清现实啊,人家是个瓜王,咱们只是普普通通的小老弟,所以说还还是一步一步慢慢学习吧,加油。

好,那我们再来看麦白历史中间的井号和多了符号,将这两种写法他们的区别到底是什么?这肯定是一问。麦麦历史这个问题肯定会问到啊。那么大家知道我们的井号他这种写法,他是遇变意处理是占位符。嗯, 然后我们的多的符号他是制服串,替换是拼接服。那么到底什么意思?我们大家再来理解一下。好卖卖的是他在处理井号的时候,会将射口中间的井号替换为问号。 首先为分为两步啊,先替换为问号,然后呢,再去调用我们的呃普洱配料的时代的门头来进行复制。对啊,这是 gdpc 里面的一个技术。然后迈巴尔历史,他在处理我们的多的符号的时候,他会直接的将多的符号替换成为你传进来的值,然后去使用我们的 style mant 来进行复制。那关于这两个我是就不去多说了啊,大家可以回头啊,如果说忘记了什么的啊,你回头自己再去查一下。好吧,一个是玉便意,一个是 我是预边印的。然后第四点就是使用井号可以有效的防止收口入入,提高系统安全性。那当然这是呢。呃,一个文字版的一个答案,具体的大家一定要理解。比如说我们现在传入了两个参数啊,我也比如说我要去查一个用户名啊, 我要去看你是不是能够登录成功,对吧,用户名和密码。好。那么哦,传了用户名,传的是周瑜,然后密码,我假设我传的是这个字符串。对,这个没有问题啊,这是一个字符串。那么如果说你我们是使用的井号的话,哎,他会直接的最终啊生成的色口才会长这个样子。 大家注意看,这种深层的色口,他直接就是这种样子。但是如果说我们是用的多的符号的话,那么 这种生成的色孔呢?就长这个样子。看见没有?因为我说啊,他是拼接服啊,他只会啊,把它加进去,把你前面这个当做制服串呀,然后把后把你传进来这个珠串,把它加上啊,就当做一个制服串来进行处理, 把咒语直接拼上,把一或一等于一也给他直接拼上。大家看,如果说我们是用的多的符号的话,那么就用这个收口,他是不是就会把所有的用户都给他查出来。 因为虽然前面这两个条件你可能就呃查不到数据,但是我后面有一个沃沃一等于一,那一直是求对吧。所以说这种这个收口就会把所有的用户的数据都会把它查出来,对吧? 啊,所以说这种就是我们说的收口注入啊,这是不安全的啊,所以呢,尽量的就用我们的警号好吧。但是有一种特殊的情况,如果说你要查询的自断,哎,你要查询的自断,他 是变动的哎,那么你就可以用多少号,明白,因为你查询你你这里,比如说你这个地方,你如何选长保国,就算你自己写这么一个东西的话,他这种 你你最终翻译出来的代码,他就是加上制服的。哎,这个制断你是不存在的啊,因为我们制断的话,你是不用加这个呃,这个这个引号的,对吧,所以说啊,那么这个时候你就可以用多的发对吧,就这种啊,就查制断的时候你可以用多少发。嗯,好。

一个工作了五年的程序员在私信里面不断的向我诉苦,他说啊,他用了麦贝的斯这么久,怎么的也算是精通麦贝的事了吧,结果竟然在麦贝的斯这样一个面试题上翻车了,真的好烦。好吧,那么我们今天看看麦贝的斯里面的缓存机制,普通人和高手的回答。普通人, 嗯。呃。买奔驰的缓存机,是啊,买奔驰的缓存机是,就是,嗯,它有两两级缓存嘛,一级是,呃, c c 型级别的, 就是因为啊, suc 型,它是属于单个绘画嘛,那么意味着就是如果我们的每一个用户的查询是在多个绘画里面的话,那么它就无法,嗯,也就说一级缓存啊,它是它是单个用户绘画里面的,那如果说我要跨多个绘画 的话呢?呃,他没有办法去实现,所以在卖冰丝面还有个二级缓存,二级缓存就是,呃,就是跨跨是一个 c 线里面的一个缓存啊,然后他能够就是 针对多个这种这个车型来去实现这个,嗯,这个,这个就是数据的一个一个缓存吧。嗯, 高手的回答。这个问题啊,有点复杂,我打算从几个方面来去说明一下。首先呢, mi bads 里面设计了二级缓存这样一个机制来提升数据的一个解锁效率, 也就是说避免每一次数据的结束呢,都去查询数据库。一级缓存是 c 个 c 型级别的一个缓存,也叫本地缓存,因为每一个用户在执行查询的时候都需要使用 c 个 c 型来执行,为了避免每一次都去查询数据库,买别的车呢,把查询出来的数据呢缓存到 c 个 c 型的本地缓存里面,后续的 c 口如果在命中缓存的情况下,就可 直接从本地缓存去读取这样一个数据,如果想要去实现跨 c 个 c 型级别的一个缓存,那么一级缓存是无法做到的。因此啊,在麦贝斯里面引入了二级缓存的一个设计,也就是说,当多个用户在查询数据的时候,只要有任何一个 c 个 c 型拿到了数据 放入到二级缓存里面,那么其他的这个 c 选呢,就可以直接从二级缓存里面去加载数据。下面我再来解释一下一二级缓存的一个实现原理啊。首先我们看一级缓存在这个 c 选里面呢,会持有一个 execute, 每一个 execute 里面呢,会有个叫 local case 的一个对象, 当用户发起查询的时候呢,买杯的时候会去根据执行语句在 logo case 里面去查找,如果命重了,就直接把这个数据返回,如果没有命重,再去数据库里面去查询出来,再写入到 logo case 里面。所以啊,一级缓存的生命周期是一个车型,需要注意的一点是,在多个是一个车型或者分公司环境下 呢,可能会因为一级缓存导致一个这样的脏毒的一个问题。而二级缓存的实现原理呢,是在原来的 execute 上去做了一个装饰,一路叫 k 区 execute 的这样一个装饰器,所以在进入一级缓存的查询之前呢,会先通过 k 区 execute 进行二级缓存的查询, 开启二级缓存之后呢,会被多个是一个筛选的共享,所以他是一个全局的缓存,所以他的查询流程呢,就变成了先查二级缓存,再来查一级缓存,然后再去查数据库。 另外啊,卖贝利斯的二级缓存相对一级缓存来说呢,它实现了 c 跟 c 形之间的缓存数据的一个共享, 同时呢,缓存力度也能够控制到 name space 的一个级别,并且还可以通过 k 曲这样一个接口来实现不同缓存实现的一个组合,对 k 曲的可控性也更高了。以上呢,就是我对这个问题的理解。在实际的业务场景中, 多级缓冲的设计思想啊,是非常值得我们学习和借鉴的。所以呢,我认为这是一个非常不错的面试题, 大家牢记啊,学习底层技术的目的是为了提高技术思维能力和积累解决方案,为以后更高的职位做好铺垫。好的,本期的普通人 vs 高手的面试系列视频呢,就到这结束了,有任何不懂的技术面试题,欢迎在评论区给我留言。另外, 三月份的面试文档已经整理好了,需要的可以在主页上加我微来领取。我是麦克,一个工作了十四年的加我程序员,咱们下期再见。


我们来看一下马一杯的意思的框架,那马一杯的意思里面呢有一个很重要的特性就是动态塞口,那比如说像这样的我们可以使用衣服标签来去做一个条件的判断,那成立的话呢,就会将这个塞口语句的片段添加到我们整个塞口里面。 那这样的一个使用场景呢?还是很多的。比如那这个呢是一个招聘网站,它里面呢有很多筛选条件,那你的条件不一样的话呢,那么他的筛扣也是不一样的,所以呢我们可以很轻松的通过我们的买 babys, 他里面的动态筛扣,能够很容易的完成这样的动态查询。

买 benice flex, 一个优雅的买 benice 增强框架,清亮、灵活、高性能,简单来说就是操作我们数据库增生改查的。我们来看一下同类框架的一个对比, 这里它主要对比了,嗯,我们这里的买 benice 以及福特问特买 benice, 我们快速的去浏览一下, 这里可以看到左边这个弗雷克斯是一片的绿色,然后右边的这些框架多多少少都有点带叉叉,以及我们这些灰色的。然后我们来看下这些功能,比如说像逻辑删除、乐观所脱敏权限这些,好像弗雷克斯该有的都有。 然后来看一下这下面的一个语法,让我们来看一下这里去查询集合的一些函数,比如说我们去查询一些字段,然后 set, 这是查询的一个字段 plus 的写法,然后这里他提到他的缺点就是字段偏硬边嘛, 然后这是弗洛文特的,然后他也说了他的缺点就是我们这个内容不符合 shake 的一个直觉。然后回过来你再看一下这个 flex 框架, 确实有那么一点味道,就是像我们去写,比如说查询的时候先写个 select, 然后这是查询的字段,然后下面就是福尔姆关联表,然后查询出结果了,确实有那么一点点味道。性能对比,我们简单看一下,这里是测试单条数据查询,然后我们来看下这里的一个测试结果, 他的测试结果大概是 mandys plus 的五到十倍,但是这个东西该说不说,他是不能直接让 cv 到数据库里面去进行查询的, 在参谋中写 c 口内点好处才是。确实有的,我们直接 c 位就可以查询结果。最后有没有小伙伴已经将这个东西应用到我们生产环境呢?你们感觉如何?可以评论讨论下。

哎,大家好,来介绍一下插件的一个快速给复杂类型添加 power 注解。 呃,比如我们有一个 s q l 属于这种,然后它这是一个复杂的类型,但这个里面一开始是没有 power 注解的,但有时候比如我们查询嘛, 然后需要在后面加一些条件啊,我们只能往这个对象里面去加,不然的话他会解析不了,比如说, 对吧?这样解析就会出错了。我们这个时候就需要给这个复杂类型加一个 power 注解,然后让这个叉 m l 里面有变过来,然后插件这里就可以在这个 的右键,然后最下面有一个 my best and power to complex type, 然后一下就给他加好了,然后叉 m 这边也会给他改过来, 对吧?这个时候你就可以方便的在这个后面加一些参数,有有有,有时候一些分页啥的呀,对吧?然后这个你还可以重构他的名字, 因为这里写错也有提示,这也 然后你还可以给这个单独再加上一个主角嘛,然后就可以在里面引用, 然后有有啥问题也可以联联系我。