- 博客(48)
- 收藏
- 关注
原创 芋道框架审批流如何实现(Cloud+Vue3)
这是我自己写的一个改变状态的rpc,大家可以自己写一个,我相信并不难,我放这大家可以参考。这个方法会根据返回的审批id去查找符合条件的数据集合,也就是同一时间审批的那一批数据。记住这里的PROCESS_KEY和prefix,后面有用,这是唯一的标识。这里的表单查看地址对应了一个只能查看的页面用于审批的时候能够看到审批的信息。改变状态的方法就写好了,接下来我们去Bpm模块写一个监听方法。
2024-11-05 17:04:31 315
原创 微服务面试篇
TCC模式的每个阶段是做什么的?Try:资源检查和预留Confirm:业务执行和提交Cancel:预留资源的释放TCC的优点是什么?一阶段完成直接提交事务,释放数据库资源,性能好相比AT模型,无需生成快照,无需使用全局锁,性能最强不依赖数据库事务,而是依赖补偿操作,可以用于非事务型数据库TCC的缺点是什么?有代码侵入,需要人为编写try、Confirm和Cancel接口,太麻烦软状态,事务是最终一致需要考虑Confirm和Cancel的失败情况,做好幂等处理、事务悬挂和空回滚处理。
2024-10-22 21:17:54 899
原创 echarts柱图前后端代码SpringCloud+Vue3
♥️作者:小宋1021🤵♂️个人主页:小宋1021主页♥️坚持分析平时学习到的项目以及学习到的知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油。
2024-10-15 15:24:20 438 1
原创 echarts饼图前后端代码SpringCloud+Vue3
♥️作者:小宋1021🤵♂️个人主页:小宋1021主页♥️坚持分析平时学习到的项目以及学习到的知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油。
2024-10-15 15:15:02 403
原创 Redis面试篇
Sentinel的三个作用是什么?集群监控故障恢复状态通知Sentinel如何判断一个redis实例是否健康?每隔1秒发送一次ping命令,如果超过一定时间没有相向则认为是主观下线(sdown如果大多数sentinel都认为实例主观下线,则判定服务客观下线(odown故障转移步骤有哪些?首先要在sentinel中选出一个leader,由leader执行failover选定一个slave作为新的master,执行,切换到master模式然后让所有节点都执行slaveof新master。
2024-10-15 09:49:42 1000
原创 高性能分布式搜索引擎Elasticsearch详解
分词器的作用是什么?创建倒排索引时,对文档分词用户搜索时,对输入的内容分词IK分词器有几种模式?ik_smart:智能切分,粗粒度:最细切分,细粒度IK分词器如何拓展词条?如何停用词条?利用config目录的文件添加拓展词典和停用词典在词典中添加拓展词条或者停用词条。
2024-09-20 22:32:38 1330
原创 玩转RabbitMQ声明队列交换机、消息转换器
♥️作者:小宋1021🤵♂️:小宋1021主页♥️坚持分析平时学习到的项目以及学习到的知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油在之前我们都是基于RabbitMQ控制台来创建队列、交换机。但是在实际开发时,队列和交换机是程序员定义的,将来项目上线,又要交给运维去创建。那么程序员就需要把程序中运行的所有队列和交换机都写下来,交给运维。在这个过程中是很容易出现错误的。因此推荐的做法是由程序启动时检查队列和交换机是否存在,如果不存在自动创建。
2024-09-20 00:03:32 1234
原创 RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)
交换机的作用是什么?接收publisher发送的消息将消息按照规则路由到与之绑定的队列不能缓存消息,路由失败,消息丢失FanoutExchange的会将消息路由到每个绑定的队列描述下Direct交换机与Fanout交换机的差异?Fanout交换机将消息路由给每一个与之绑定的队列Direct交换机根据RoutingKey判断路由给哪个队列如果多个队列具有相同的RoutingKey,则与Fanout功能类似Topic交换机描述下Direct交换机与Topic交换机的差异?
2024-09-18 21:58:39 1421
原创 RabbitMQ:WorkQueues模型
♥️作者:小宋1021🤵♂️:小宋1021主页♥️坚持分析平时学习到的项目以及学习到的知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油Work queues,任务模型。简单来说就是。当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。长此以往,消息就会堆积越来越多,无法及时处理。此时就可以使用work 模型,了。接下来,我们就来模拟这样的场景。基本思路如下:1.在RabbitMQ的控制台创建一个队列,名为work.queue。
2024-09-18 20:32:31 685
原创 java的Excel导出,数组与业务字典匹配并去掉最后一个逗号
由于不想和DO混用,就单独为导出的字段建立实体类,一方面是容易使用 @ExcelProperty注解,方便观察,另一方面是有些字段在数据库存的是业务字典的value,是Integer类型,我需要再定义一个String类型的字段来接收于业务字典匹配完成后的label的值并完成导出。场景:由于业务需求的变化,老师的科目由单个变成了多个,我在存储的时候存储的是数组的字符串,类似于:“[103, 202, 203, 204]”,这就需要去掉左右两侧[]以及拆分成字符串数组再与业务字典进行匹配。
2024-09-18 16:30:10 1269
原创 SpringAMQP快速入门
♥️作者:小宋1021🤵♂️:小宋1021主页♥️坚持分析平时学习到的项目以及学习到的知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油将来我们开发业务功能的时候,肯定不会在控制台收发消息,而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不同语言的客户端。
2024-09-09 23:56:30 1225
原创 RabbitMQ异步通信详解
♥️作者:小宋1021🤵♂️:小宋1021主页♥️坚持分析平时学习到的项目以及学习到的知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调用者发起请求后需要服务提供者执行业务返回结果后,才能继续执行后面的业务。也就是说调用者在调用过程中处于阻塞状态,因此我们称这种调用方式为,也可以叫。但在很多场景下,我们可能需要采用的方式,为什么呢?
2024-09-08 23:36:20 1285
原创 SpringCloud:服务保护和分布式事务详解
核心库(Jar包):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。在项目中引入依赖即可实现服务限流、隔离、熔断等功能。控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。为了方便监控微服务,我们先把Sentinel的控制台搭建出来。
2024-08-19 08:30:00 1632
原创 微服务通过nacos实现动态路由
♥️作者:小宋1021🤵♂️:小宋1021主页♥️坚持分析平时学习到的项目以及学习到的知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油网关的路由配置全部是在项目启动时由在项目启动的时候加载,并且一经加载就会缓存到内存中的路由表内(一个Map),不会改变。也不会监听路由变更,所以,我们无法利用配置热更新来实现路由更新。因此,我们必须监听Nacos的配置变更,然后手动把最新的路由更新到路由表中。这里有两个难点:如何监听Nacos配置变更?如何把路由信息更新到路由表?
2024-08-18 12:09:06 1530
原创 多个文件上传
♥️作者:小宋1021🤵♂️:小宋1021主页♥️坚持分析平时学习到的项目以及学习到的知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油。
2024-08-17 13:13:51 929
原创 SpringCloud微服务配置管理、配置热更新
不知道大家会不会有这样的问题:网关路由在配置文件中写死了,如果变更必须重启微服务某些业务配置在配置文件中写死了,每次修改都要重启服务每个微服务都有很多重复的配置,维护成本高这些问题都可以通过统一的解决。而Nacos不仅仅具备注册中心功能,也具备配置管理的功能:微服务共享的配置可以统一交给Nacos保存和管理,在Nacos控制台修改配置后,Nacos会将配置变更推送给相关的微服务,并且无需重启即可生效,实现配置热更新。
2024-08-16 22:52:12 1265
原创 网关路由-路由属性
无论是还是都支持自定义,只不过编码方式、使用方式略有差别。自定义不是直接实现,而是实现。@Component@Override@Override// 获取请求// 编写过滤器逻辑System.out.println("过滤器执行了");// 放行注意:该类的名称一定要以为后缀!然后在yaml配置中这样使用:spring:cloud:gateway:- PrintAny # 此处直接以自定义的GatewayFilterFactory类名称前缀类声明过滤器。
2024-08-12 22:46:20 1042
原创 刚毕业大学生对低代码的接触以及看法
然后我们公司就解除了芋道开发框架,让我们使用芋道开发,由于我们公司是小公司总共没几个开发,加上我当时不太会SpringCloud也没有接触过开发框架,于是一上手就导致我很不知所措,遇到了一系列的问题,所以我也把这些问题一一总结下来写成了“万字芋道讲解”放在了我的主页里,如果有小伙伴需要的话请去我的主页去看,也可以添加我的微信:sxy0802000,我们一起讨论。这表明,即使是低代码平台,也需要IT部门的参与和监督,以确保应用的安全性和质量。然而,低代码平台在提高效率的同时,也可能带来质量和安全的隐患。
2024-08-08 13:43:33 1051
原创 微服务网关及其配置
什么是网关?顾明思议,网关就是络的口。数据在网络间传输,从一个网络传输到另一网络时就需要经过网关来做数据的。更通俗的来讲,网关就像是以前园区传达室的大爷。外面的人要想进入园区,必须经过大爷的认可,如果你是不怀好意的人,肯定被直接拦截。外面的人要传话或送信,要找大爷。大爷帮你带给目标人。现在,微服务网关就起到同样的作用。前端请求不能直接访问微服务,而是要请求网关:网关可以做安全控制,也就是登录身份校验,校验通过才放行通过认证后,网关再根据请求判断应该访问哪个微服务,将请求转发过去。
2024-08-07 23:13:04 1001
原创 SpirngCloud+Vue3通过id批量修改某一个字段的值
♥️作者:小宋1021🤵♂️个人主页:小宋1021主页♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油场景:课程和学生是一对多的关系,每一个课程对应多个学生,在学生上完课之后要做一个消课记录,“已到”就是消课成功,“未到”就是没有消课。通过数据库里面的消课状态字段来记录,0:未消 1:已消。这就需要前端传一个id的数组,后端遍历这个id数组,去改变每一条id下的消课状态属性。我们来看看是怎么实现的。
2024-08-06 09:50:37 1390
原创 SpringCloud+Vue3一个字段多个存储以及回显
♥️作者:小宋1021🤵♂️个人主页:小宋1021主页♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油。
2024-08-01 13:28:48 459
原创 Vue3选择框选择不同的值输入框刷新变化
实现方式:这个输入框我做的是业务字典实际的值是0和1,在点击选择框的时候用v-if判断选择的值是1还是0,如果是0则是一个输入信息,如果是1则又是另一个输入信息。场景:新增的时候根据选择框的不同来改变输入信息。
2024-08-01 09:28:06 363
原创 SpringCloud+Vue3主子表插入数据(芋道)
目的:多表联查获取到每个班级里面所有的学生上课的信息。点击消课插入到消课主表和消课子表,主表记录班级信息,消课人员信息,上课时间。子表记录上课学员的信息,学员姓名、手机号、班级名称、班级类型、上课时间、老师名称。
2024-07-29 21:00:46 1870
原创 SpringCloud+Vue3多对多,多表联查
♥️作者:小宋1021🤵♂️:小宋1021主页♥️坚持分析平时学习到的项目以及学习到的知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油目的:多表联查数据库:学员表(study_student) 字段:学生姓名(sts_student_name)、手机号(sts_phone)班级管理(teach_class_manage)字段:班级名称(teach_class_manage)、id(id)教师管理(hr_teacher_manage)字段:教师姓名(teacher_name)
2024-07-27 17:21:33 1574
原创 Vue3时间选择器datetimerange在数据库存开始时间和结束时间
如图,想往数据库存一个时间段,在后端用两个字段接收。♥️坚持分析平时学习到的项目以及学习到的。🤵♂️个人主页:小宋1021主页。知识,和大家一起努力呀!♥️作者:小宋1021。
2024-07-25 19:00:10 1063
原创 Vue3后端传来的时间戳转换成正确的时间格式
我们需要在前端定义一个方法,让这个方法对后端传过来的值进行校验,最后在拼接成为正确的时间格式,由于我只需要到分钟就写到了分钟,并没有涉及到秒。如题,后端传过来的时间戳格式怎么在前端转换成为正确的时间格式。
2024-07-12 11:23:56 409
原创 SpringCloud跨微服务的远程调用,如何发起网络请求,RestTemplate
在我们的业务流程之中不一定都会是自己模块查询自己模块的信息,有些时候就需要去结合其他模块的信息来进行一些查询完成相应的业务流程,但是在SpringCloud每个模块都相对独立,数据库也有数据隔离。所以当我们需要其他微服务模块的信息的时候,就需要跨模块调用发起网络请求。就像电商项目中,购物车模块就不得不需要像商品模块发起查询请求。购物车业务中需要查询商品信息,但商品信息查询的逻辑全部迁移到了服务,导致我们无法查询。
2024-07-09 09:02:22 2080
原创 SpringCloud微服务拆分原则
服务拆分一定要考虑几个问题:什么时候拆?如何拆?一般情况下,对于一个初创的项目,首先要做的是验证项目的可行性。因此这一阶段的首要任务是敏捷开发,快速产出生产可用的产品,投入市场做验证。为了达成这一目的,该阶段项目架构往往会比较简单,很多情况下会直接采用单体架构,这样开发成本比较低,可以快速产出结果,一旦发现项目不符合市场,损失较小。如果这一阶段采用复杂的微服务架构,投入大量的人力和时间成本用于架构设计,最终发现产品不符合市场需求,等于全部做了无用功。所以,对于,随着用户规模扩大、业务复杂后。
2024-07-08 20:42:41 478
原创 Vue3中drawer组件无法重新回显数据
不做drawer的时候数据是可以正常回显的,点击详情id是正常传值的,但是使用了drawer组件以后发现只会调用一次详情功能,以后不管点击哪条信息都不会刷新信息永远都是第一条的信息,但是id刷新成功了,后来发现是没有加v-if来判断drawer的打开值,如果您有一样的问题可以参考以下代码。欢迎大家批评指正或者有更好的方法一起交流学习!
2024-07-08 15:51:37 559
原创 docker数据卷挂载
数据卷(volume)是一个虚拟目录,是容器内目录与宿主机目录之间映射的桥梁。html:放置一些静态资源conf:放置配置文件如果我们要让Nginx代理我们的静态资源,最好是放到html目录;如果我们要修改Nginx的配置,最好是找到conf下的nginx.conf文件。但遗憾的是,容器运行的Nginx所有的文件都在容器内部。所以我们必须利用数据卷将两个目录与宿主机目录关联,方便我们操作。如图:在上图中:confhtmlNginx容器内部的conf目录和html目录分别与两个数据卷关联。
2024-07-01 22:37:37 973
原创 Postgresql中自增主键序列的使用提示“xxx_xx_xx_seq”不存在
postgre 中 自增id 需要创建序列,但是复制表 或者复制数据后 ,再重新添加数据的时候 序列的值和数据库中的id 冲突导致程序报错,通过Navicat可以看到id字段为自增主键,且序列名为teach_coursse_manage_id_seq。如果此时提示你tech_course_manage_id_seq已存在的话可以尝试下面的语句。这是因为源表的id字段为自增主键,所以要在进行传输的表中执行新建自增主键序列的操作。所以需要在目标表中进行创建自增序列的操作,创建之间先执行如果有则删除的操作。
2024-07-01 10:29:29 533
原创 Docker命令解读和常见命令
docker run:创建并运行一个容器,-d是让容器在后台运行,如果不加-d让容器在后台运行的话他可能就会卡在哪里,会一直等待程序的执行。所以平常加上-d就让容器后台运行,命令虽然结束了但是MySQL进程和这个容器会持续保持运行状态,不会影响正常工作,这是配套指令,一般都会加上。--name mysql:给容器起名字,必须唯一。-p3306:3306:设置端口映射,前面是宿主机端口,后面是容器内端口。容器内端口取决于进程,是不需要去改动的。
2024-06-28 00:10:37 1538 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人