好,说一下这个进度监控怎么做啊?特别是一些阿杰克斯上传啊,或者是阿杰克斯下载啊,获取数据啊,他可能会涉及到一个进度啊,那这个进度的表现形式呢?可以像我这里用一个圆圈来表示,也可以是一个进度条,对吧?都无所谓,那是界面,关键是我怎么来得到这个进度。那这里呢,我们回忆一下啊,就是阿杰克斯的实现方式呢,就两种吧, 一种呢是 xhr, 一 种呢是 fitch, 你 用不同的技术来实现阿杰克斯,就意味着你要做进度监控的话, 到底该怎么来做?那有的人说我用的不是这两个啊,用的是这个什么 x x 啊,你用这个的话,那就是这个,因为他就是封装了,这个是一样的啊,所以说你要搞清楚原生他们的能力边界在哪里,他们能做啥,那些第三方库就能做啥,反正他们做不到的,那些第三方库也做不到。而且呢,像这两个东西啊,他们也是一个常见的面试题,就问你这两个东西有什么样的区别? 就说无论你是处于工作的角度,还是说处于面试的角度,你都要把这两个东西有什么样的区别?就看这张图啊,可以截个屏啊,这个图就是一道面试题。 然后现在呢,我们要做进度监控,主要是关注哪一块呢?主要是关注这一块,一个是请求监控,那就是比方说上传文件,对吧?那么就是一个请求的进度监控,你上传的数据传了多少了?那么对于请求的进度的话, xhr 是 能做的,但是呢,飞行是不能做的,飞行呢,目前最大的问题就是这个东西不能做, 其他的都没有任何问题。然后呢,响应的进度监控,就比方说你从服务器获取数据,那么这里的进度监控呢?两个词都能做啊,但他们的做法是不一样的啊,我就一个个说吧。先说这个响应的进度监控都能做的,他们分别是怎么做的好?首先呢是看这个 x h r 他 是怎么做的好看一下啊, 它做法非常简单,你要用那个 xhr 来做响应的进度监控的话,你首先得创建这么一个叉,没有 atp request 对 象嘛?然后这个对象里边不是有很多事件嘛,对吧?其中一个事件呢,叫做 progress, 这个事件它是不停的触发的,就是传输的进度变化的时间。当服务器像我们传了一些数据过来,那么数据每传一些呢,它就会运行这个事件, 这个事件里边呢,我们就可以拿到两个信息,一个是当前传了多少数据量啊?单位是字节,一个呢是一共有多少数据量,单位也是字节。我们打印看一下啊,来到控制台里边,你都看到了,是吧?再来啊,点击, 你看这里是不停的触发这个事件,然后不停的打印。第一个数字呢,是当前传输了多少字节?第二个数字呢,是总的字节数啊,总的字节数是不变的。那你要说进度的话,是不是很简单,第一个除以,第二个不就是进度吗?对吧? 然后呢,在界面上把它进度显示出来就完事了啊,这是用那个 xhr 来做这个响应的进度监控啊。那么飞起又怎么做呢?那飞起的做法呢?要稍微绕一点弯啊,我们这里把它切换为飞起的做法,切换到另一个模块啊, 飞起呢?它是这样啊,因为飞起这个东西吧,它是没有事件的,不像 xhr, 它有各种各样的事件,对吧?包括这个进度变化的事件,但是飞起它是没有事件的,因为它是基于 promise 来实现的。那这个玩意,这个进度监控咋做呢? 那么这一块就会涉及到你对这个废弃的知识的理解程度哈,还是一样,我们要做进度监控,必须要拿到两个信息,一个是总的数据量,一个是当前传输的数据量,对吧?只要拿到这两个信息,那我们就可以做进度了。 那么第一个问题啊,总的数据量在废弃里边怎么拿?他呢?是没有提供一个什么事件啊,函数啊,给你这个信息的,去哪里拿呢?主要考验你们网络的知识了,在网络传输的时候,服务器会不会告诉你总的数据量?会不会呢?他是会的, 他怎么告诉的?你看一下网络请求啊,这是我们请求的服务器,然后你看一下服务器的响应头里边,他是不是有这么一个 content, 这是啥意思?这就是服务器在告诉你客户端我一会的响应题里边总的数据量就自结数。是这么多自结啊,这个响应头是一定有的啊,你不用担心他没有,服务器是一定会告诉你的, 任何接口他都会告诉你,你自己去看一下啊,任何接口,包括对页面的请求,对借势的请求,对资源的请求,他都会告诉你这个东西。那么总的数据量是不是很好拿,对不对?从头里边拿就完事了, 我们知道从哪里拿了,那还加一个问题,什么时候去拿呢?什么时候去拿?你不能说我把服务器的东西全部接收完了过后,比如说服务器给你响应两个 g 的 数据啊?我等吧,我等把两个 g 的 数据全部接收完了过后,我再去拿个总的数据量,哪有啥意义呢?那那个时候传输结束了,我要这个总的数据量有啥意义呢?我怎么做进度监控呢? 这个数据啊,越早去拿越好,那什么时候拿呢?是不是就等头传输完了就可以拿了,对吧?你要知道啊,客户端服务器,服务器那边传输数据给客户端,他不是说刷一下就过来了,他是一部分一部分过来的。他先过来的是什么?先过来的是响应头,然后再过来的是什么? 一个一个的响应体啊。响应体是一点点过来的,因为他数据量有可能很大呀。所以说你不要等到响应体接收完了再去拿这个数据,而是头只要一传完,我就去拿这个数据。那什么时候就头传完了呢? 是不是就第一个 await? 我 们分析里边不是有两个 await 吗?第一个 await 等待的是啥?等待的是响应的头到达客户端过后,它 await 就 结束了,而第二个 await 等待的是啥?你们经常写的这个什么节省是吧?第二个 await 等待的是啥?等待的是响应体全部传过来了,然后呢?我把它转换成节省格式, 如果能不能等待第二个 await 是 不能等待第一个 await 等待完了过后,我要去拿这个头了,你看从头里面去拿这个 content, 那 么总的数据量是不是就有了,对吧?所以说原理重不重要?原理是非常非常重要的。 有些同学呢,会觉得原理就是八股文,其实不是的,至少大部分原理都不是八股文。你想啊,你写代码,你为什么会写出这样的代码?是因为你是这样想的,你为什么会这样想,那就取决于你对这个知识的理解程度了,你对业务的理解,你对知识的理解,这个不一样,那你写出来代码就不一样。所以说,同学们,以后如果说要往更高级的岗位去发展,成为架构师、 前端 leader, 那 对原理必须要有非常深刻准确的认识啊,特别是前端最重要最核心的原理,像什么浏览器、框架、网络,这些都是最核心的东西,这些东西理解有错误,有偏差,或者是理解的比较肤浅。那你往轻一点说,你写代码有缺陷,往重一点说,你可能成为架构师过后, 你制定的方案都是有缺陷的,那方案如果说有缺陷的话,就坏胎了,那影响的就不是你一个人了,是整个团队了。所以为什么对架构师要求高,就这个原因。而你要对这些前端核心知识要有深刻的把握的话,就好好来看我的大师课, 刚才我提到的东西,在大学里边都有深度的设计,而且每一个核心知识点都是给你讲毕业的,学完之后你会有什么感觉呢?目前的工作,你代码质量会提高,你要跳槽掌心,你面试水平会有大幅度的提升, 你给的答案都是顶级答案,其他人说不出来的答案。然后呢,也同时为你将来成为架构师学习更高阶的知识打下一个非常坚实的基础。那整个课程你花几天时间啊,认认真真把它学完,你就会知道好的课程是什么样子的。我可以这么跟你说啊,哥们,大师课他抢过你以往学习的任何课程。关键这个课呢,目前是免费的啊,怎么领?在咱们账号主页,点击头像进入账号主页,根据提示。你学完事了啊,好收回来啊, 目前的总的数据量拿到了,那我怎么去拿到他那个传过来的一些当前传输的数据量呢?就这个数据怎么拿呢?那你是不是开始接收响应体了啊?但是呢,你不能去等待响应体全部完成,而是什么呢?而是响应体过来一部分,你接一点,过来一部分接一点,我要算这个总数据量啊,那你可以用一个变量吧, 然后开始为零,过来十个字节,我得加十,再过来十个字节,我再加个十,再过来二十个字节,我加个二十,是不是?那你看到代码里边我是不是定义了一个变量,然后不停的去读 响应题里边的数据,你看这里呢,我从响应题里边拿到一个读取器,过来一点,我读一点啊,这个读呢也是一个异步的啊,因为读一小块数据,他也是网络传输嘛,他也在等待啊, 读完了过后他会给你两个东西啊,一个是读完了没有,后面还有没有的话我就结束了,有的话那我就把这个数据呢,这是个二进字数据啊,把它字节长度拿到哪加进去啊?哪加到这个变量里面去,你看是不是很简单?我在打印了一下啊,你可以看到在分析这个层面呢,其实要实现的效果呢,也是一样的啊,点击 你看一下,是不是也可以拿到当前读的数据量,以及它总的数据量,对不对?也可以实现啊,这是使用废弃的方式来实现。好,刚他们说了这个针对响应的进度,那么针对请求的进度呢?那废弃就做不了了。啊哈,这个意思一下都是个问题,能做请求的进度监控的只有这个 xhr, 那 他怎么做呢?看下代码瞬间就明白了, 就这个代码,这代码干啥?也是去监控什么 progress 时间,不过这个时间在哪呢?在这个 upload 的 这个属性里边,其他的完全一样。所以说有难度吗?没有任何难度, 很多阿杰克斯的知识啊,他本身没有任何难度,之所以有很多朋友觉得有难度,是因为他对网络不了解。网络了解了过后,阿杰克斯呢,其实都没啥好学的,我不知道学啥,有啥好学的,就这么几个 a p i。 咱们大师课里边啊,特别是网络大师课里边,你们去看了就知道了啊,阿杰克斯呢,其实几分钟就可以讲完,但是网络呢,是需要花大量时间的。
粉丝8.3万获赞121.5万

你给我讲一下,就是 g m 跟 g m m 两个概念,嗯, g m 就是 我们的虚拟机,然后 g m m 我 记得就是并发编程如何保持数据可见性还有有序性。嗯, g m m 这块具体给我讲一下呢?呃, ok, 我 来给你讲一下。呃,先说 gm, gm 就是 我们驾校训机,那 gm 在 跑起来的时候会把操作系统给它的内存发分为几个关键的区域,然后把每个地方放不同的东西,并且针对这些区域呢,我要进行清理维护 啊,那么主要有几个重要的,对吧?第一个堆,那你溜出来的所有的对象和宿主几乎啊都是放在这个里面的,它是垃圾回收器主要打扫的区域,这是最大最重要的一块,所有现成共享,还有像方法区,对吧?当然后面改成了叫做原空间 啊,那么也是所有信任共享的,那么这里存放的是一些加载到的信息啊,常量啊,静态变量等等啊,还有信任私有的,比如说像虚拟基站,本地方法站,程序计数器等等,它是一个具体的执行引擎和内存的管理者,负责把 java 代码跑起来, 然后呢?管着内存的物理划分,哪里放对象,哪里放变量,然后垃圾怎么清理。如果你担心简历上的东西讲不出来,我已经把面试经常问到的一些技术站场景题都整理在两百万字的面试文档了,里面针对每个知识点都有很详细的解析思路, 只要你是我的粉丝,留言六六六就可以打包带走。好,但是有个问题啊,就是上面我们刚刚讲到了堆,它是共享的,意味着所有的县城都能去访问里面的对象,但现在计算机里面为了快 cpu, 它有高速缓存,然后编音器和处理器呢,还会去优化些指令,那么就会导致三个核心的问题啊,可集性、有序性跟原则性问题。 好,那么 g m m 就 出来了, g m m 就是 我们的架构的一层模型,它就是定义了一套规则来去解决这三个问题。 g m m 啊,规定了所有的变量都存储在我们的主内存里面,然后每个县城它可以有自己的工作内存,包括像缓存对吧,寄存器等等,然后县城不能直接去读写主内存,只能操作自己工作内存的副本,然后再同步回我们的主内存。 关键啊,它定义了几个点,第一个呢,就是 hyperb for 规则,还有几个关键字啊,比如说 synchronized 的, 我的跳。 hyperb for 规则呢,是判断操作是否可见的一个核心原则,就是如果 a 操作,然后 hyperb for b 操作,那么 a 操作的所有的改动对 b 来讲一定是可见的。 常见的规则包括像什么程序顺序规则,接收器所规则,传递性规则等等。然后两个关键字嘛, synchronized, 当你进入同步快的时候, g m m 呢,要求你先清空工作内存,然后从主内存存新加载变量, 然后推出的时候呢,就必须要你要把信号的变量刷回到我们的主内存啊,那么这个呢,就是保证了原则性、可接性跟有序性,然后喔力跳对吧?喔力跳它其实是属于 happens before 原则里面的一种, 它保证呢两件事情,第一个就每次读都是从主内存读,然后每次写呢都会立刻刷回到主内存,保证可接性,然后禁止指令重排,保证有序性,但是呢它不保证原则性。当然还有一个就是 final, final 修饰的字段呢,就一旦在构造器里面促熟化完成了, 并且啊在构造器里面没有用 z 引入一出的话,那么其他的现成都能看到它的正确值。所以总结一下, g m 呢,就是实现者和平台,它具体负责内存怎么划分, 堆栈对吧?代码怎么去执行,垃圾怎么回收,它是一个运行的实力好。然后 g m m 呢,更多的是个规范和期约,它定义了在多现成的这个场景下面,数据应该怎么被访问和同步来保证它的正确性,所以它是套规则。

java 内存模型 j m m 是 啥?他管的是县城间的规矩。 j m m 听起来高大上,其实他就是 java 定下的一套多县城读写内存的规则。为啥要定规则?因为 cpu 缓存内存速度不一样,县城操作数据时容易乱套。 他主要管三件事,可见性。一个县城改变了共享变量,得让其他县城马上看得到,不能各自看各自的缓存副本。 原则性一些操作,比如简单的赋值,要保证不可分割,避免做到一半被别的线打断。有序性,代码执行顺序可能被编程器或 cpu 优化打断。 j m m 要保证在关键时刻不乱序。 volatile 主要管可见性和有序性, c j n s 的 这三个都管。 我以前不懂 c m m 两个线同时操作一个计数器,结果数永远对不上, bug 到怀疑人生。懂了之后再看 volatile 和 c j n s。 的 感觉完全通了。 并发编程的深水区离不开对 j m m。 的 理解。更多关于并发所的实战难题和解决方案,我都更新到了面试宝典里了,粉丝群自取。你是在哪个 bug 里突然理解 j m m。 的 评论区,分享你的购物时刻。

spring boot 启动原理这道题几乎是后端面试必问,没有例外。面试问到这道题,百分之九十的人一上来就开始背命令方法,调用乱方法,然后加配置,再自动配置,最后启动服务器。你只背流程,面试官马上就会连环追问, 动配置怎么实现按需加载内置 tomcat 是 怎么被处死化的? add conditional 注解到底起什么作用?问到这些细节,绝大多数人直接卡壳,根本答不上来。 如果你在面试时总是卡壳,我特意整理了一份二零二六年最新面试攻略,包含市面上百分之九十的技术场景题,还有完整的答题思路, 只要你是我的粉丝,扣八八八打包带走。首先大家要记住,一个核心面试官要的不是你背了多少步骤,而是你能不能用实战场景讲清启动的核心逻辑,证明你真的理解,真的用过,不用搭建一个工厂来类比整个启动过程。 第一步,启动入口 main 方法,相当于工厂的总开关。咱们写的 spring boot 项目启动类里的 main 方法就是整个项目的启动入口 要用 spring application。 点 run 方法后,第一步不是直接搞配置,而是先加载基础环境,读取项目里的 application 点 yam 文件,或者是 application 点 properties 配置文件,还有系统环境变量。 第二步,核心操作,创建 spring 容器,相当于工厂的核心车间。 spring boot 本质就是 spring 的 脚手架, 它的核心还是 spring 容器。这个容器的作用很简单,就是帮我们管理所有的病对象,比如控制器、服务层、数据访问层的病。以后业务代码要用直接从容器里拿,不用自己拧,极大减少开发工作量。第三步,最关键的一步,自动配置, 相当于工厂的自动化生产线。很多人只知道 spring boot 不 用手动配置 tomcat, 不 用写 spring mvc 的 配置,却不知道为什么? 答案就是 spring boot 的 自动配置机制,它会自动扫描项目里所有的 start 依赖,加载对应的自动配置类按需配置,省去百分之九十的繁琐配置。比如你引入了 spring boot start web 依赖, 它就会自动加载 web mvc 的 自动配置。内置 tomcat 的 配置,引入了 spring boot start date jba, 就 会自动加载数据库,连接时默认 hcg 的 配置, 而且它不是一股脑全加载,会通过 at conditional 系列注解做判断。只有容器里没有自动用数据源,才会加载默认的数据源,只有引入了 web 依赖,才会出式化 tomcat, 这就是按需配置,既灵活又高效。第四步,收尾操作, 启动内置服务器,发布就绪事件。 spring boot 打包是大包,不用依赖外部 tomcat, 靠的就是内置 tomcat, 用配置类会帮助我们自动出口内置 tomcat, 监听我们配置的端口,把项目部署到内置服务器里,等容器启动完成服务器就绪后, spring boot 会发布应用的就绪事件, 这时候整个项目就真正的启动成功了,我们就能通过配置的端口访问项目接口了。这就是 spring boot 的 启动原理,打听方向。如果你还有不懂的面试题,欢迎留言讨论。

写扎发的兄弟们,说句实在又扎心的话,要是再不去接触 ai, 可能真就错失时代记忆了。与其整天焦虑会不会被淘汰,不如现在就主动出击,抓住 ai 的 风口。今天这条视频就带你们从熟悉的扎发世界出发,建立一条清晰的 ai 转型路线。第一步,搞清楚转什么 ai, 咱们就做两件事, 要 api, 做智能客服,用 red 搭建知识库,这才是 java 工程师的主场领域。第二步, java 和 java 需要二选一吗?完全不用纠结, java 负责模型训练, java 负责落地交付,放心,交给自己的技术战就好,你不需要抢训练模型的活,你要做的是把模型能力稳定交付的人。 第三步,明白自己的优势和短板,你的工程化能力、系统设计经验、业务理解能力,才是 ai 落地最稀缺的护城河,需要补的也不多。拍板基础模型、认知、向量解锁思维、提示工程。第四步,企业 ai 系统到底长什么样?它不是全能 a 阵,全能自主干活, 而是把 ai 当成更聪明的接口,嵌入到你熟悉的后端架构里,缓存、融断、全线对接,这些才是真正的挑战,也恰恰是你最擅长的。最后,记住, ai 不 会淘汰炸靶工程师, 看会用 ai 的 人,会淘汰不会用的人。如果你想抓住 ai 风口,我终于好了!大模型全套学习路线图加视频和实战教程,扣 ai, 我 看到就发给你!

就是目前市面上 java 加 python 是 远远的大于 java 加前端,再大于纯 java 的。 你说那个应用开发里面的 python 到底学什么?它是属于应用开发大模型内部的东西,我不管,或者是我不学,我是用大模型去做一些其他的事情。 举个很简单的例子哈,我用那个螺丝去修空调,我学的是如何修空调,但是那个打螺丝的那个螺丝刀它是怎么造出来的?螺丝刀里面的东西是什么?我不学,就是这么个意思。第一个学 python 一 些的框架,让嵌学向量数据库, 学奥拉玛本地部署,能让你用 python 去开发一个 agent, 拥有这样的能力。那么额外呢?还有一些那种大模型的微调, laura path, la ma factory 等等等等是这些事情。 然后额外还有一个就是如何把这个 python 开发出来的 a 键的东西去融到 java 的 项目当中,这个叫做 a 键的模块的微服务化会学这几个东西。像我们 java 结合 python 二零二六年最新的智能应用开发,它完整的学习路线,中间有百分之四十,全部都是我刚刚说的这些。 你把这个东西全部的都搞完了之后,你的就业速度呢?会比以前提高了百分之三十到百分之四十,基本上一周之内你就能找到工作了。本科的硬件差不多呢是在十三十四十五十六,在这个范围是大概率的方向。 除了这个路线图也有一个文档,即使你打算去自学的同学,至少知道目前考阅面试薪资高的人,他是怎么学的,学到哪些技术站,做到哪些项目,这个你能快速了解到,这个数学课的话有一百多节。

面试遇到 java 虚拟化类问题,你不会还只知道词汇?词汇吧分丢光了兄弟我一朋友去自结一面这样打,结果面试官三连追问,那 siri viddler 干嘛的?穿先腾的 static 变量会被虚拟化吗?他直接被问到哑口无言,今天一分钟彻底理解他,顺便把面试官最爱的三个灵魂拷问锤烂。上车, 我没上车啊我没上车。如果你最近也在求职 java 后端港投递简历总是石沉大海,面试被刷。 我这里整理了内部简历模板,三百万字八股文和一百二十万字场景题,帮你一路打通,后端港澳粉留下谢谢就行。一、序列话就是啪一下把立体对象拍扁,内存里的 java 对 象是立体的,像乐高模型到处是引用和地址,你要把它发给别人或者存到文件, 总不能把整块内存寄过去吧。序列化啪的一下拍扁,变成一串字节流,好存好传。反序列化,把字节流再拼回乐高模型,是不是瞬间直观了?就像你把乐高拆成零件装袋,别人收到再拼回去。二、面试高分。三、满腹通行证身份证隐形衣。 一、 serial 接口通行证它是个标记接口,没方法,但少了它。 g d k 虚拟化直接抛异常,你没证别上车,就像坐飞机没登机牌,连安检都过不去。二、 serial v d 身份证,它是对象的版本号,虚拟化时会打包进去。反虚拟化时 j v n 先对暗号版本号一致,继续不一致。 invalet class exception 甩你脸上,手动指定固定 u i d 背结构有小改动,老对象也能顺利反序列化不会崩。不指定 jvm 自动算,改个空格都可能版本不匹配,线上事故就是这么来的。三, transient 隐形斗篷,对象里有敏感信息,不想被序列化, 贴上 transcendent jvm 你 看懂了?跳过不打包,就像你寄快递把情书放进去,但银行卡密码,用嘴告诉对方别写纸上灵魂拷问 static 静态变量会被血泪化吗?知道的评论区告诉我。三进阶 java 原声血泪化其实很拉胯, 性能差,体积大,不能跨语言。真正项目里多用 jason, probebot, cryu。 面试官一旦追问,你甩出这三种。再补一句,我们支付链路用 probef, 日制用 jason, 他 直接闭嘴。你还知道有哪些其他虚列化方式,分别有哪些优缺点?大家可以在评论区展开说说。

好的,各位同学。嗯,昨天有一个学生跟我说,他说他对项目非常的不了解啊,里面的内容是什么呢?也看不懂各个文件是什么,也不知道是什么意思。那这个视频我就以这个项目简单的过一下,每个文件夹里面是存放什么东西呢?啊?里面的东西呢也有什么用? 然后呢,可能每个项目可能略有不同,但是大致的呢,也相差无几,因为前面几个视频讲的可能时长有点太长了 啊,然后大家也没什么内耐心继续看下去,基本上就看三四秒就不看了。后面呢,我还是尽可能的 压缩一下这个篇幅,然后减少时间,然后提高一个完播率吧。好,那就基于这个项目,我们来讲一下里面的文件夹 是有什么作用啊?然后首先呢,就是一个,这个呢就是一个自定义的注解,他这个自定义的注解呢,就是用于去声明式的一个编程,然后去配合拦截器去实现一个啊权限控制 和一个用户信息的注入啊。然后这个第二个就是这个 config, config 就是 一个配置类, configuration 嘛,然后它的作用就是一个 spring boot 的 一个配置类,它主要是啊用于注册并或者配置一个第三方框架啊,还有一个定义一个拦截器呢, 然后这个就是一个 ctrl, 它的作用就是一个 reset api 的 一个控制层。这个我们应该比较熟悉,它主要就是一个负责接收前端的一个 hdd 请求,然后用于去调用一个 service 层,然后去处理一个业务层的一个业务,然后返回一个统一的响应格式,然后就是这个档, 呃,作用呢?它主要就是一个基于 my business plus 的 一个 map 层的一个接口,它可以定义一个数据库的一些 circle 啊,就是这个实体类,这个实体类啊,下面这个就是一个啊,数据库的一个实体,然后这个呢?这个 mod 呢?它就是一个一个业务的模型,它主要就是去用于分装一些复杂业务的逻辑和所需要的一些啊数据架构。然后这个 view 呢,就是那个 试图模型,就是数据库里面的试图模型嘛,它主要是用于把前端页面展示的一个数据结构啊,可能还包含了一些表关联的一些数据啊,然后这个 v o 呢,就是一个值对象,它主要是用于一个接口请求参数和响应数据的一个封装啊,这就是一个 int。 好, 下面就是一个 interpreter, 一个拦截器,它主要就是用于在请求一些啊,前后就是处理前后端一个的进行一个统一的一个处理。 好,接下来就是这一块,这一块也是比较重要的一块,它主要就是一个 service, 一个业务层嘛,它下面就是,嗯,一个那个接口,然后这个就是一个业务层的一个实现类 service mmp 嘛, 或者是最后一个就是这个优选一个工具类,它主要是一个通用的工具类嘛,它里面可以提供提供一些常见的一些功能的封装啊,避免代码的重复啊, 然后这个这个呢,就是一个启动类,就十分复杂的一个启动类,启动这个项目就好了。然后还有一个就是这个 home, 这个里面就是存放一些依赖的内容啊,就是你用到了什么依赖,然后你就在这里面填写就好了。 好,基本上就是这就是一个简单的各个文件夹的作用,如果还有什么不理解的地方,也可以在评论区回复。