自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 微服务学习(六)之分布式事务

首先我们看看项目中的下单业务整体流程:由于订单、购物车、商品分别在三个不同的微服务,而每个微服务都有自己独立的数据库,因此下单过程中就会跨多个数据库完成业务。整个业务中,各个本地事务是有关联的。因此每个微服务的本地事务,也可以称为分支事务。多个有关联的分支事务一起就组成了全局事务。我们必须保证整个全局事务同时成功或失败。我们知道每一个分支事务就是传统的单体事务,都可以满足ACID特性,但全局事务跨越多个服务、多个数据库,是否还能满足呢?

2025-07-19 19:40:29 1109

原创 微服务学习(五)之服务保护

保证服务运行的健壮性,避免级联失败导致的雪崩问题,就属于微服务保护。这章我们就一起来学习一下微服务保护的常见方案以及对应的技术。

2025-07-19 19:23:33 557

原创 微服务学习(四)之配置管理

SpringCloud在初始化上下文的时候会先读取一个名为bootstrap.yaml(或者bootstrap.properties)的文件,如果我们将nacos地址配置到bootstrap.yaml中,那么在项目引导阶段就可以读取nacos中的配置了。微服务共享的配置可以统一交给Nacos保存和管理,在Nacos控制台修改配置后,Nacos会将配置变更推送给相关的微服务,并且无需重启即可生效,实现配置热更新。将拉取到的共享配置与本地的application.yaml配置合并,完成项目上下文的初始化。

2025-07-14 18:20:48 838

原创 微服务学习(三)之网关路由

Component@Override// 编写过滤器逻辑System.out.println("未登录,无法访问");// 放行// 拦截@Override// 过滤器执行顺序,值越小,优先级越高return 0;yaml配置文件server:port: 8080spring:cloud:nacos:gateway:routes:- id: item # 路由规则id,自定义,唯一。

2025-07-14 18:11:29 753

原创 微服务学习(二)之服务调用OpenFiegn和nacos服务注册发现

Bean。

2025-07-14 16:43:52 293

原创 微服务学习(一)之微服务拆分

最终结果就是查询到的购物车数据不完整,因此要想解决这个问题,我们就必须改造其中的代码,把原本本地方法调用,改造成跨微服务的远程调用(RPC,即Remote Produce Call)。在拆分的时候,我们发现一个问题:就是购物车业务中需要查询商品信息,但商品信息查询的逻辑全部迁移到了item-service服务,导致我们无法查询。那么问题来了:我们该如何跨服务调用,准确的说,如何在cart-service中获取item-service服务中的提供的商品数据呢?

2025-07-14 16:20:12 550

原创 Docker学习

据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。html:放置一些静态资源conf:放置配置文件如果我们要让Nginx代理我们的静态资源,最好是放到html目录;如果我们要修改Nginx的配置,最好是找到conf下的nginx.conf文件。但遗憾的是,容器运行的Nginx所有的文件都在容器内部。所以我们必须利用数据卷将两个目录与宿主机目录关联,方便我们操作。如图:我们创建了两个数据卷:conf、html。

2025-07-10 16:58:36 482

原创 MybatisPlus(一)扩展功能

GetterNORMAL(1, "正常"),FREEZE(2, "冻结");然后把User类中的status字段改为UserStatus 类型:要让MybatisPlus处理枚举与数据库类型自动转换,我们必须告诉MybatisPlus,枚举中的哪个字段的值作为数据库值。@Data。

2025-07-07 17:56:28 693

原创 MybatisPlus(一)快速入门和核心功能

为了简化单表CRUD,MybatisPlus提供了一个基础的BaseMapper接口,其中已经实现了单表的CRUD:因此我们自定义的Mapper只要实现了这个BaseMapper,就无需自己实现单表CRUD了。在演示UpdateWrapper的案例中,我们在代码中编写了更新的SQL语句:这种写法在某些企业也是不允许的,因为SQL语句最好都维护在持久层,而不是业务层。就当前案例来说,由于条件是in语句,只能将SQL写在Mapper.xml文件,利用foreach来生成动态SQL。

2025-07-07 17:29:09 613

原创 SpringBoot项目快速打包与部署,War包⽅式打包部署与Jar包⽅式打包部署两种方式

虽然通过SpringBoot的内嵌tomcat可以直接打Jar包进行部署,但是有些服务器上已经配置好了Tomcat服务器,并且需要使用Tomcat服务器部署多个应用,此时需要我们把项目打包成War包的形式部署到服务器中。双击package进行打包,看到下方出现build success,证明打包成功,去target目录下查找jar文件。将打包好的jar包放到服务器中,注意备份之前的数据。回到服务器上,存储jar包的目录,使用命令启动服务。在重启服务时,先杀死旧的服务,可以使用。查看进程id,并使用。

2025-05-28 21:10:56 670

原创 RabbitMQ(学习)之MQ高级

每个只能配置一个,因此我们可以在配置类中统一设置。我们在publisher模块定义一个配置类:log . error("触发return callback,");} });} }log . error("触发return callback,");} });} }Slf4j;import orglog . error("触发return callback,");} });} }

2025-01-09 18:37:10 725

原创 RabbitMQ学习(一)基础

多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量。

2025-01-07 21:30:26 1032

原创 Redis学习(八)GEO、BitMap、HyperLogLog

算出当前这个id对应应该落在bitmap的哪个索引上,然后将这个值从0变成1,然后当用户来查询数据时,此时已经没有了list,让用户用他查询的id去用相同的哈希算法, 算出来当前这个id应当落在bitmap的哪一位,然后判断这一位是0,还是1,如果是0则表明这一位上的数据一定不存在, 采用这种方式来处理,需要重点考虑一个事情,就是误差率,所谓的误差率就是指当发生哈希冲突的时候,产生的误差。注意:bitMap返回的数据是10进制,哪假如说返回一个数字8,那么我哪儿知道到底哪些是0,哪些是1呢?

2024-12-27 16:10:58 862

原创 Redis学习(七)好友功能(点赞、关注、排行榜)

推拉模式是一个折中的方案,站在发件人这一段,如果是个普通的人,那么我们采用写扩散的方式,直接把数据写入到他的粉丝中去,因为普通的人他的粉丝关注量比较小,所以这样做没有压力,如果是大V,那么他是直接将数据先写入到一份到发件箱里边去,然后再直接写一份到活跃粉丝收件箱里边去,现在站在收件人这端来看,如果是活跃粉丝,那么大V和普通的人发的都会直接写入到自己收件箱里边来,而如果是普通的粉丝,由于他们上线不是很频繁,所以等他们上线时,再从发件箱里边去拉信息。需求:利用Redis中恰当的数据结构,实现共同关注功能。

2024-12-26 19:32:34 1001

原创 Redis学习(六)秒杀优化、消息队列

秒杀业务的优化思路是什么?

2024-12-25 21:34:22 1070

原创 Redis学习(五)优惠券秒杀2——分布式锁

在Lock锁中,他是借助于底层的一个voaltile的一个state变量来记录重入的状态的,比如当前没有人持有这把锁,那么state=0,假如有人持有这把锁,那么state=1,如果持有这把锁的人再次持有这把锁,那么state就会+1 ,如果是对于synchronized而言,他在c语言代码中会有一个count,原理和state类似,也是重入一次就加一,释放一次就-1 ,直到减少成0 时,表示当前这把锁没有被人持有。此时需要通过大key+小key判断当前这把锁是否是属于自己的,如果是自己的,则进行。

2024-12-25 21:24:29 1102

原创 Redis学习(四)优惠券秒杀

由于现在我们部署了多个tomcat,每个tomcat都有一个属于自己的jvm,那么假设在服务器A的tomcat内部,有两个线程,这两个线程由于使用的是同一份代码,那么他们的锁对象是同一个,是可以实现互斥的,但是如果现在是服务器B的tomcat内部,又有两个线程,但是他们的锁对象写的虽然和服务器A一样,但是锁对象却不是同一个,所以线程3和线程4可以实现互斥,但是却无法和线程1和线程2实现互斥,这就是 集群环境下,syn锁失效的原因,在这种情况下,我们就需要使用。

2024-12-24 20:22:32 938

原创 Redis学习(三)缓存

缓存机制

2024-12-23 18:40:05 2586

原创 Redis学习(二)短信登录

当注册完成后,用户去登录会去校验用户提交的手机号和验证码,是否一致,如果一致,则根据手机号查询用户信息,不存在则新建,最后将用户数据保存到redis,并且生成token作为redis的key,当我们校验用户是否登录时,会去携带着token进行访问,从redis中取出token对应的value,判断是否存在这个数据,如果没有则拦截,如果存在则将其保存到threadLocal中,并且放行。如果手机号合法,后台此时生成对应的验证码,同时将验证码进行保存,然后再通过短信的方式将验证码发送给用户。

2024-12-21 22:01:42 994

原创 Redis学习(一)redis入门

贴心小建议:命令不要死记,学会查询就好啦Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( https://redis.io/commands )可以查看到不同的命令:当然我们也可以通过Help命令来帮助我们去查看命令。

2024-12-20 20:28:48 792

原创 外卖开发(九)——Excel数据报表ApachePOI

Apache POl是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI都是用于操作 Excel文件。将数据写入Excel。

2024-12-14 17:44:54 537

原创 外卖开发(八)—— SpringTask(定时任务) 和 WebSocket网络协议

构成规则:分为6或7个域,由空格分隔开,每个域代表一个含义每个域的含义分别为:秒、分钟、小时、日、月、周、年(可选)cron表达式在线生成: https://cron.qqe2.com/

2024-12-12 18:47:02 1394 1

原创 外卖开发(七)——校验收货地址是否超出配送范围

使用百度地图sdk计算两地距离

2024-12-10 19:44:03 753

原创 外卖开发(六)—— 高查询量数据的缓存

cache进阶用法——缓存高访问量的数据

2024-12-08 20:11:12 855

原创 外卖开发(五)——微信小程序用户登录

小程序的微信登录

2024-12-08 18:28:30 237

原创 外卖开发(四)——redis入门以及 设置店铺营业状态

服务启动命令,redis默认服务端口号 6379。

2024-12-06 20:33:56 536

原创 外卖开发(三)开发笔记——AOP实现实现公共字段填充、主键回显、抛异常和事务管理

*** 定义注解的value值,对应数据操作类型insert 和 update* @return*/自定义枚举/*** 数据库操作类型/*** 更新操作* 插入操作/*** 自定义通知类,实现公共字段填充*/@Aspect@Component@Slf4jlog.info("开始进行字段填充");//获取当前被拦截方法的数据库操作类型//获取当前方法的参数--实体类对象 反射return;//根据不同的操作类型,为对应的属性通过反射来赋值。

2024-12-02 21:11:51 643 1

原创 外卖开发(二)开发笔记——DTO、自定义全局异常处理、ThreadLocal、日期格式化

学习笔记

2024-11-30 16:21:53 489

原创 外卖开发(一)sawgger入门

swagger初步如门

2024-11-28 21:56:54 478

原创 使用Git管理文件版本

git

2024-11-28 20:31:27 1011

原创 SpringB学习记录(十四)之Maven高级

maven高级

2024-11-26 19:23:48 599

原创 SpringBoot学习记录(十三)之SpringBoot原理

SpringBoot的原理(依赖传递、自动装配)

2024-11-25 20:10:35 1008

原创 SpringBoot学习记录(十二)之Bean管理

Bean管理

2024-11-25 16:01:55 929

原创 SpringBoot学习记录(十一)之配置优先级

配置的优先级

2024-11-25 15:42:16 211

原创 SpringBoot学习记录(十)之面向切面编程AOP

AOP面向切面编程细节

2024-11-25 13:27:08 759

原创 SpringBoot学习记录(九)之声明式事务管理

声明式事务管理

2024-11-24 16:29:40 891

原创 SpringBoot学习记录(八)之登录认证和JWT令牌技术

登录认证以及JTW令牌

2024-11-24 14:09:55 706

原创 SpringBoot学习记录(七)之 Filter和 Interceptor 以及实现登录校验

Filter和 Interceptor 以及实现登录校验

2024-11-24 13:28:40 986

原创 SpringBoot学习记录(六)配置文件参数化

配置文件参数化

2024-11-22 20:00:03 456

原创 SpringBoot学习记录(五)之文件上传和阿里云OSS

关于文件上传

2024-11-22 15:39:49 938

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除