Spring全家桶,微服务
文章平均质量分 82
总结了博主学习工作成长过程中学习到的知识点
程序猿ZhangSir
24届计算机专业毕业大学生
展开
-
POJO,Entity,model,domain,view,DTO,VO,Param这些分别都是什么含义?怎样理解?
在日常开发的过程中,如果我们接手一个新的项目之后,通常会有各种各样的包,想要搞清楚项目的基本架构,当然就需要知道各种包做什么用的,里面存放了那些东西。以便于我们理解项目的整体结构。我们都知道项目是要和数据库打交道的,数据库中的一张表映射到Java代码种是一个实体类。在形目中,我们通常会发现实体类用很多种不同的定义方法,有叫 entity 的,有叫 domain 的,有叫 model 的,有叫 pojo 的,到底哪一种是最规范的呢?本篇我们就来说说它们的区别。原创 2024-04-24 14:30:00 · 2135 阅读 · 0 评论 -
数据库主键ID自增,两种方法获取插入数据库那条数据自动生成的主键ID值
在开发过程中,我们可能会遇到这样的一种情况,我们保存一条数据。如果这条数据的主键ID是由用户决定的,这样我们在获取主键ID的时候,只需要让前端的同时传递给我们就可以了;如果主键ID设置为自增,是在用户新增数据操作时自动生成的,在后续业务逻辑中需要使用生成的主键ID值,我们又该如何获取呢?本篇我们就来说说两种常用方法获取自动生成的主键ID;原创 2024-04-23 16:28:39 · 1632 阅读 · 0 评论 -
MyBatis-Plus分页查询IPage的使用方法,如何自定义分页查询功能?
介绍 MyBatisPlus 分页插件IPage的使用和条件构造器 LambdQueryWrapper 的使用原创 2024-04-19 15:49:21 · 6875 阅读 · 4 评论 -
Mybatis框架的优缺点?
(1)基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响, SQL 写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;(3)很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要 JDBC 支持的数据库 MyBatis 都支持);(1)SQL语句的编写工作量较大,尤其当字段多,关联表多时,对发开人员编写SQL语句的功底有一定要求;(2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。原创 2023-07-24 12:00:00 · 52 阅读 · 0 评论 -
MyBatis 动态SQL的标签有哪些?如何使用?
如上举例 if 标签,我们可以在开发时,就可以将用户不一定选择的查询条件使用 if 标签包裹起来,test = "" 双引号内部就是我们的判断条件,不为空或者不为空字符串,和我们Java中的 if 判断非常相似,只有我们的 test 判断结果为 true,即用户输入的结果不为空也不是空字符串,说明用户输入的是有效数据,我们就将用户想要查询的过滤条件加入到查询条件中,如果为false,则该字段的筛选条件不参与SQL语句中。若满足,if 标签内部的内容就会执行,反之则不执行。原创 2023-08-24 11:00:00 · 296 阅读 · 0 评论 -
深入理解Spring的Bean,从出生到死亡生命周期全过程,深挖底层,直击源码
(5)但是,再进行属性填充的时候,就会出现问题,因为 userDao 也引用了userService,所以userDao的初始化过程就会暂停,再去创建 userService,如此一来,就进入了一个死循环,userDao 属性注入需要userService,去创建userService,然后userService 属性注入需要 userDao ,在去创建 userDao,形成了一个死循环,如此一来,我们的双向依赖注入根本就不可能达到。可以作为泛型传入作为约束,这样从源码的角度验证了了我们上述结论的。原创 2023-08-28 08:00:00 · 181 阅读 · 0 评论 -
Spring 事务是什么 ?事务的传播机制?
了解过 MySQL 事务的同学应该都知道,事务通常是由多个 SQL 语句共同构成的一组逻辑操作单元,要么同成功,要么同失败。而我们的 Spring 事务也是一样的道理,它可以保证数据层或业务层的一系列操作要么同时成功,要么同时失败。其底层只是对 MySQL 的事务做了封装,因此如果你明白数据库的事务,了解 Spring 事务也是轻而易举。这个接口中定义了很多的属性,它更多是用来描述事务的具体规则,主要是 事务的隔离性,传播性,回滚规则,超时时间,事务是否只读。我截取了该接口的源码如下。原创 2023-08-29 09:15:00 · 224 阅读 · 0 评论 -
MyBatis的一级缓存和二级缓存是怎么样的?
MyBatis 的缓存共分为一级缓存和二级缓存。原创 2023-08-30 10:00:00 · 93 阅读 · 0 评论 -
Spring 中获取 Bean 对象的方式
我们知道,Spring 框架实现了依赖注入控制反转,除去了我们自行创建对象的一个过程,使我们在项目上大程度的实现了解耦,在获取 Bean 对象的时候,Spring 框架为我们提供了三种获取方式。原创 2023-09-01 11:30:00 · 603 阅读 · 0 评论 -
Docker入门,Docker是什么?有什么用?该怎么用?
而我们安装的虚拟机,是通过一种Hypervisor的技术(这里了解即可)在我们的 Windows 系统中又安装了另外的一个系统,当想要运行某个应用时,该应用会先调用虚拟机内部的函数库,再由函数库调用内部的操作系统,内部操作系统通过虚拟机技术调用外部 Windows 操作系统,外部 Windows 操作系统再调用计算机硬件,层层传递,系统中套系统,系统调用系统,效率是比较差的。Docker 与虚拟机的启动速度也是不同的,虚拟机等于是一台新的电脑,通常要分钟级别,而Docker通常都是秒级别。原创 2023-09-11 16:11:55 · 242 阅读 · 0 评论 -
Docker 镜像常用命令总结
最上面的NAME,DESCRIPT,STARTS,OFFICIAL,AUTOMATED是参数,这些参数的含义如下图中所示,一般情况下选择第一个镜像就可以了,第一个通常是官方镜像。刚才我拉取了三个镜像,如下所示,运行命令之后,docker 就会把容器,镜像,数据卷各自占用的比例列出,这里我一个都没有运行,全都只是拉取下来的景象,所以占比为100%可以看到我在后面加上了[:tag],这个是版本号的意思,因为同一个镜像也许会有多种不同的版本,如果你加,默认就是给你拉取 latest最新版的,这一点要记住哦!原创 2023-10-26 07:30:00 · 5189 阅读 · 0 评论 -
谈谈你对SpringIOC和AOP的理解
1. IOC的设计初衷在没有IOC之前,我们项目中调用某个方法都是先 new 一个方法的类对象,然后通过该对象调用该方法,但这种 new 对象的方式存在一个很大的缺点——项目代码之间耦合度太高了,如果后期需求变动需要对项目功能做修改,由于项目内部使用的 new 的方式导致耦合度较高,后期代码很有可能会对之前的代码产生侵入,就违背了 Java 面向对象中对扩展开放对修改封闭的原则。为了降低项目内部由于都西昂的创建导致模块之间耦合度较高的问题,就有了IOC容器这一解决方案(这是主要原因,不是唯一原因)。原创 2023-11-08 08:15:00 · 248 阅读 · 0 评论 -
RPC的通信流程?
1. 我们的编译工具通常会把PaymentService业务模块中它所能提供的函数编译生成一个stup桩文件,相当于一个静态函数库,这个函数库就会被OrderService的Client端引入,这样OrderService业务模块就实现了对PaymentService业务模块中函数的映射,相当于在OrderService业务模块本地就有了这么一个静态函数库,方便我们的OrderService后续的调用。5. 第七步第八步第九步再反过来,将查询到的结果数据或完成的动作序列化成二进制数据,规范头数据,数据体。原创 2023-07-10 10:18:55 · 65 阅读 · 1 评论 -
简单理解RPC?
RPC英文全称是 Remote Procedure Call,翻译过来就是“远程过程调用”,对于Java语言来说,我们可以简单理解成远程方法调用,那么与之相对的就是“本地调用”。通过刚才的引入,我们大概应该明白了,RPC是一种远程调用方法的方式;它可以使用HTTP协议,或直接基于TCP协议实现RPC;原创 2023-07-08 20:57:05 · 93 阅读 · 1 评论 -
Nacos注册中心功能如何使用?
Nacos是Alilbaba推出的一款全新的,可以替代Eureka注册中心的微服务组件之一。我们都知道,在做微服务项目时,我们可以通过Eureka将各个服务注册进去,完成服务的拉取调用;那么我们的Nacos也是一个服务注册中心。而且,Nacos不仅可以作为一个注册中心,还可以当作配置中心来使用,直接可以替换掉我们之前所使用的 SpringCloudConfig 组件,可以说是一个顶俩,此外,Nacos还有一些附加的功能属性,这里就不再一一举例了,我们直接进入正题。原创 2023-07-07 17:15:00 · 962 阅读 · 1 评论 -
微服务的利弊
我们在说微服务的利弊的时候,总会拿它与单体项目去做对比。那么什么又是单体项目呢?其实很好理解,我们可以把一个单体项目比喻成一个大盒子,一个业务中的所有的东西都放在这一个盒子里面。说到这里可能大家会觉得微服务多此一举,既然一个项目能整合在一起运作,为什么要对他进行拆分呢?这不是多此一举吗?如果你也有这样的疑问,那说明认真思考了。原创 2023-07-06 15:00:00 · 99 阅读 · 1 评论 -
SpringCloud——gateway知识整理
大家想,我们现在做了一个微服务项目,应该是任何人都可以来访问我的所有业务吧,那儿这是不是很不好啊,假如有恶意攻击,会对我们造成一定的损失。因此,在实际业务中,当一个请求来了之后,我们应该先对他进行校验,看看他要看什么,然后将这个请求转到对应的服务模块中去。这个很好理解,当有大量的请求都想要访问我们的服务器时,是不允许所有的请求都进入的,假设微服务只允许2000个请求,现在来了10000个,肯定是不能让所有的请求都进入的,不然服务器就炸了,所以它有请求限流的效果。(2) 服务路由,负载均衡。原创 2023-06-30 14:56:05 · 287 阅读 · 1 评论 -
SpringCloud——Feign知识整理
Spring Boot已经自动装配了Feign的配置,但是我们自己是可以修改或者自定义Feign的配置的,可以修改的配置如下:上面是我们最常用到的,当然也还有其他的,这里就不说了简单来说一下日志,日志一共分为四个级别NONE:没有任何日志,也是默认配置;BASIC:可以记录http请求什么时候发送,什么时候结束,耗时多久等基本信息;HEADERS:除了BASIC中含有的以外,还包含请求头和响应头;FULL:是最全面的,除了HEADERS中包含的以外,还包含请求体信息和响应体信息。原创 2023-06-29 18:01:41 · 6124 阅读 · 2 评论 -
SpringCloud——Ribbon负载均衡的原理
首先,order-service发送请求,但请求会被Ribbon给拦截,它会识别要发送请求的对象是哪个模块的,然后向我们的eureka-server去要,eureka-server有就会返回给它,然后Ribbon将HTTP请求进行加工处理,通过自身的负载均衡算法,去挑选其中一个user-service发送请求,再得到返回的结果,然后将结果返回给order-service。不难猜想,中间一定有一个角色,帮我们实现了这个功能,它就是我们上面所提到的Ribbon,我们来看下面这幅图,就是Ribbon的工作原理。原创 2023-06-28 23:34:35 · 265 阅读 · 1 评论 -
SpringCloud——Eureka知识整理
当我们加入了eureka注册中心之后(这里eureka注册中心也是一个模块,需要独立出来),他就会把这个分布式项目中所有的模块都记录下来,都登记一下名字,因为上面我们说到了,每一个模块都既有可能是服务提供者,也有可能是服务消费者,我们将他们全部都登记下来,这样当某个模块需要调用另一个模块时,它只需要向eureka要就行了,看看eureka中有没有。OK,以上就是Eureka的服务配置和服务注册,也是今天我所整理的全部内容,其实早就到了下班时间了,但是还是想写完发布再下班,明天再继续学习整理新的内容。原创 2023-06-27 18:52:23 · 492 阅读 · 1 评论 -
Spring Boot,Spring MVC和Spring有什么区别
3. Spring Boot是Spring提供的一个快速开发工具包,让程序员更方便,更快捷的开发Spring+SpringMVC应用,简化了配置(约定了默认配置),整合了一系列解决方案(starter机制),redis,mongodb,es,可以开箱即用。Spring是一个IOC容器,用来管理Bean,使用依赖注入实现控制反转,可以很方便的整合各种框架,提取AOP机制弥补OOP的代码重复问题,更方便将不同类不同方法中的共同处理抽取成切面,自动注入给方法执行,比如日志,异常等。原创 2023-05-23 13:39:28 · 121 阅读 · 1 评论