- 博客(64)
- 收藏
- 关注
原创 大神怎样优雅的捕获一个异常,写个try catch的方式都这么优雅!
Slf4j@Component/*** 生产环境*/@Autowired/*** 当前环境*//*** 获取国际化消息* @param e 异常* @return*//*** 业务异常* @param e 异常* @return 异常结果*//*** 自定义异常* @param e 异常* @return 异常结果*//*** Controller上一层相关异常* @param e 异常。
2024-01-17 09:15:47 995
原创 职场生存必备品,防御性编程,二狗的十二个开发技巧!
降低代码可读性的方式方法 包括但不限于以上12种;像二狗这样的程序员包括但不限于二狗。大家不要向二狗学习,因为他是真的狗。
2023-12-28 11:30:28 575
原创 15种线上Bug梳理,这坑我算是踩全了
日常开发过程中大家肯定或多或少都会遇到一些偶现的问题,最常见的一句话就是:在我本地运行的时候都是好的呀?在测试环境跑的时候都是好的呀?在预发布环境都是正常的呀?在灰度阶段都是没问题的呀?怎么到生产上就时不时爆出几个预警来呢?一般来说,这种情况多半是遇到了在特定的条件下、多种因素叠加在一起的时候才会触发的“偶现问题”。以前我碰到这类问题的时候,我都是调侃到:不能稳定复现的 BUG 都不算是 BUG。后来也因为这样天真的、抱有幻想的想法,吃过了好几次亏,才开始越来越意识到比起能稳定复现的 BUG 来说,“偶现问
2023-12-28 11:00:54 1213
原创 选型必备!9款日志采集和管理工具对比!
对于日志管理当前网络上提供了大量的日志工具,今天就给大家分析总结一下这些常用工具的特点,希望对你们在选型时有所帮助,如果有用记得一键三连。
2023-12-27 12:05:04 1222
原创 项目联系 Spring Boot + flowable 快速实现工作流
被分配的老师用户执行后流向 【网关】,网关以此检查每个出口,流向符合条件的任务,比如这里老师执行任务时是同意,就流向【校长】节点,等待该任务执行。act_ru_execution:运行时流程执行实例表,记录运行中流程运行的各个分支信息(当没有子流程时,其数据与act_ru_task表数据是一一对应的);act_ru_task:运行时流程任务节点表,存储运行中流程的任务节点信息,重要,常用于查询人员或部门的待办任务时使用;带有这个前缀的表包含“静态”信息,例如流程定义与流程资源(图片、规则等)。
2023-12-25 10:49:08 1268
原创 SpringBoot整合RocketMQ,高手都是这么玩的!
rocketmq:...enhance:# 启动隔离,用于激活配置类EnvironmentIsolationConfig# 启动后会自动在topic上拼接激活的配置文件,达到自动隔离的效果# 隔离环境名称,拼接到topic后,topic_dev,默认空字符串。
2023-12-11 09:22:26 2054 1
原创 超级实用的防止商品超卖的 7 种实现方式,非常好用!
高并发场景在现场的日常工作中很常见,特别是在互联网公司中,这篇文章就来通过秒杀商品来模拟高并发的场景。本文环境: SpringBoot 2.5.7 + MySQL 8.0 X + MybatisPlus + Swagger2.9.2模拟工具: Jmeter模拟场景: 减库存->创建订单->模拟支付。
2023-12-11 09:16:50 2301
原创 一文详解Spring Bean循环依赖
2.1、什么是Bean循环依赖?循环依赖是指Bean对象循环引用,是两个或多个Bean之间相互持有对方的引用。循环依赖有2种表现形式:第一种是相互依赖,也就是A依赖B,B又依赖A;图一 相互依赖示例图第二种是自我依赖,也就是A依赖自己形成自我依赖。图二 自我依赖示例图对象引用循环依赖在某些业务场景上可能是合理存在的,但是由于Spring容器设计了依赖注入机制,即Spring容器在创建bean实例化以后就要给bean中的属性自动赋值,要全部自动赋值之后,才能交给用户使用。
2023-07-25 09:33:03 610
原创 SpringBoot 插件化开发模式,强烈推荐!
serviceloader其实是有缺陷的,在使用中必须在META-INF里定义接口名称的文件,在文件中才能写上实现类的类名,如果一个项目里插件化的东西比较多,那很可能会出现越来越多配置文件的情况。所以在结合实际项目使用时,可以考虑下面这种实现思路:A应用定义接口;B,C,D等其他应用定义服务实现;B,C,D应用实现后达成SDK的jar;A应用引用SDK或者将SDK放到某个可以读取到的目录下;A应用读取并解析SDK中的实现类;在上文中案例基础上,我们做如下调整;
2023-07-10 17:26:29 288
原创 面试官问:select......for update会锁表还是锁行?
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。使用主键id为条件去查询,然后开启另一个事务去更新数据,更新被阻塞,加锁了,锁定要查询的id为1的行数据。另一个事务我去更新另外一条数据,如果我更新成功了,就是锁行,失败了就是锁表。视频教程:https://doc.iocoder.cn/video/
2023-07-05 11:51:58 362
原创 SpringBoot中如何优雅的统一全局返回格式与处理系统异常?
在 DailyMart 项目中,我们依据阿里巴巴的开发规范定义了一个错误码的枚举类。这个枚举类包含一系列预定义的错误码及其对应的错误信息。OK("00000","操作已成功"),CLIENT_ERROR("A0001", "客户端错误"),USER_NOT_FOUND("A0010", "用户不存在"),USER_ALREADY_EXISTS("A0011", "用户已存在"),USERNAME_PASSWORD_INCORRECT("A0012", "用户名或密码错误"),
2023-06-27 10:26:39 1011
原创 用API Key保护Spring Boot 接口的安全
安全性在REST API开发中扮演着重要的角色。一个不安全的REST API可以直接访问到后台系统中的敏感数据。因此,企业组织需要关注API安全性。
2023-06-26 10:49:25 1463
原创 SpringBoot项目怎么设计业务操作日志功能?
业务操作日志记录中包含了用户操作的功能名称、功能描述、操作人、操作时间和操作的参数报文,参数报文之所以选择存储在文件中,是因为正常情况下,是不需要知道具体的参数报文,只有在回滚操作的时候才会用到,可以根据上一次的参数报文逆向操作。
2023-06-25 10:58:16 784 1
原创 SpringBoot中15个常用启动扩展点,你用过几个?
我们从这些spring&springboot的扩展点当中,大致可以窥视到整个bean的生命周期。在业务开发或者写中间件业务的时候,可以合理利用spring提供给我们的扩展点,在spring启动的各个阶段内做一些事情。以达到自定义初始化的目的。此篇总结,如果有错误或者疏漏的地方,恳请指正。
2023-06-21 10:04:06 396 1
原创 数据库优化可以从哪些维度入手?(建议收藏)
当有人问你如何对数据库进行优化时,很多人第一反应想到的就是SQL优化,如何创建索引,如何改写SQL,他们把数据库优化与SQL优化划上了等号。当然这不能算是完全错误的回答,只不过思考的角度稍微片面了些,太“程序员思维”化了,没有站在更高层次来思考回答。那今天我们就将视角拔高,站在架构的角度来聊聊这一问题,数据库优化可以从哪些维度入手?正如上图所示,数据库优化可以从架构优化,硬件优化,DB优化,SQL优化四个维度入手。此上而下,位置越靠前优化越明显,对数据库的性能提升越高。
2023-06-16 11:24:20 290
原创 优化--分类树,我从2s优化到0.1s
分类树查询功能,在各个业务系统中可以说随处可见,特别是在电商系统中。但就是这样一个简单的分类树查询功能,我们却优化了5次。到底是怎么回事呢?
2023-06-13 11:44:48 2536 3
原创 怎样做一个优秀的网关技术选型报告~
网关的角色是作为一个API架构,用来保护、增强和控制对于API服务的访问。它是一个处于应用程序或服务(提供REST API接口服务)之前的系统,用来管理授权、访问控制和流量限制等。这样REST API接口服务就被网关保护起来,对所有的调用者透明。因此,隐藏在API网关后面的业务系统就可以专注于创建和管理服务,无需关心这些策略性的请求。
2023-05-18 09:21:15 735 2
原创 8.微服务项目实战---SMS--短信服务
短信服务()是阿里云为用户提供的一种通信服务的能力。产品优势:覆盖全面、高并发处理、消息堆积处理、开发管理简单、智能监控调度产品功能:短信通知、短信验证码、推广短信、异步通知、数据统计应用场景:短信验证码、系统信息推送、推广短信等。
2023-05-08 14:32:33 276
原创 面试官:你知道 Spring lazy-init 懒加载的原理吗?
普通的bean的初始化是在容器启动初始化阶段执行的,而被lazy-init修饰的bean 则是在从容器里第一次进行context.getBean(“”)时进行触发。但是对于大多数bean来说,bean的初始化以及依赖注入就是在容器初始化阶段进行的,只有懒加载的bean是当应用程序第一次进行getBean时进行初始化并依赖注入。接下来对每个BeanDefinition进行处理,如果是懒加载的则在容器初始化阶段不处理,其他的则在容器初始化阶段进行初始化并依赖注入。2.对bean进行初始化并依赖注入。
2023-05-01 08:00:00 835
原创 6.微服务项目实战---Sleuth--链路追踪
系统,最终可以提供丰富的功能。),同时在分布式系统内部流转的时候,框架始终保持传递该唯一值,直到整个请求的返回。为了实现请求跟踪,当请求到达分布式系统的 入口端点时,只需要服务跟踪框架为该请求创建一个唯一的标识(即TraceId。接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。:存储组件,它主要对处理收集器接收到的跟踪信息,默认会将这些信息存储在内存中,公司开源,开放源代码分布式的跟踪系统,用于收集服务的定时数据,以解决微。
2023-04-26 10:02:39 605
原创 5.微服务项目实战---Gateway--服务网关,实现统一认证、鉴权、监控、路由转发等
如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用。自己编写过滤器来实现的,那么我们一起通过代码的形式自定义一个过滤器,去完成统一的权限校验。内置的过滤器已经可以完成大部分的功能,但是对于企业开发的一些业务功能处理,还是需要我们。网关是所有请求的公共入口,所以可以在网关进行限流,而且限流的方式也很多,我们本次采用前。中最基本的组件之一,表示一个具体的路由信息载体。,断言的作用是进行条件判断,只有断言都返回真,才会真正的执行路由。链的方式提供了网关基本的功能,例如:安全,监控和限流。
2023-04-25 10:40:55 3015
原创 3.微服务项目实战---Nacos Discovery--服务治理
的一个子项目,它主要是用来解决分布 式 应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分。语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务 发现和配置管理的功能。我们在微服务调用关系中一般会选择客户端负载均衡,也就是在服务调用的一方来决定服务由哪个提供者执行。服务调用方向服务注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实。的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。用于实现各个微服务的。
2023-04-21 11:02:22 482 2
原创 2.微服务项目实战---环境搭建,实现电商中商品、订单、用户
例来演示微服务的调用:客户向订单微服务发起一个下单的请求,在进行保存订单之前需要调用商品微服务查询商品的信息。在这种场景下,订单微服务就是一个服务消费者, 商品微服务就是一个服务提供者。在微服务架构中,最常见的场景就是微服务之间的相互调用。我们以电商系统中常见的。使用的电商项目中的商品、订单、用户为案例进行讲解。启动工程,等到数据库表创建完毕之后,加入测试数据。我们一般把服务的主动调用方称为。通过浏览器访问服务进行测试。模块,然后进行下面操作。,把服务的被调用方称为。创建必要的接口和实现类。
2023-04-20 11:49:21 1279 1
原创 1.微服务项目实战---SpringCloud Alibaba
网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程 语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。它提供了一站式的微服务开源解决方案,致力于帮助企业、用户和开发 者将企业应用轻松微服务化上云,并实现对微服务应用的高效运维管理。微服务架构, 简单的说就是将单体应用进一步拆分,拆分成更小的服务,每个服务都是一个可以独 立运行的项目。这就产生了新的分布式系统架构。在分布式架构下,当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加。
2023-04-20 10:02:39 1530
原创 手把手教你通过 Docker 部署前后端分离项目(亲测可用)
安装Docker安装Nginx安装Mysql部署SpringBoot项目部署Vue项目。
2023-04-19 10:20:17 1236 3
原创 Springboot 中快速完成文件上传,整合多平台神器
用了这个工具确实极大的减少了上传文件所带来的代码量,提升了开发效率,目前在使用过程中暂未发现有什么坑,好东西就是要大家分享,如果符合你的需求,犹豫什么用起来吧。
2023-04-19 10:13:28 1180 1
原创 学会Spring Batch 批处理框架,效率翻倍,上班轻松又快乐
Spring Batch 是一个轻量级、全面的批处理框架,旨在支持开发对企业系统的日常操作至关重要的健壮的批处理应用程序。Spring Batch 建立在人们期望的 Spring Framework 特性(生产力、基于 POJO 的开发方法和一般易用性)的基础上,同时使开发人员可以在必要时轻松访问和使用更高级的企业服务。Spring Batch 不是一个调度框架。在商业和开源领域都有许多优秀的企业调度程序(例如 Quartz、Tivoli、Control-M 等)。
2023-04-18 09:40:26 1247 2
原创 面试官:String s = new String(“xyz“) 创建了几个对象?
这个问题相信每个学习 java 的同学都不陌生,作为一个经典的面试题,到现在工作这么多年了我真是认为挺操蛋的一个问题,在网上到现在你仍然可以看见很多讨论这个问题的人,其中不乏工作很多年的人都有争论,我认为还是有必要来说一说这个问题的。而在1.8以后,则是移除了永久代,方法区概念保留,方法区的实现改为了元空间,常量池还是在堆中。常量池存在于方法区,而方法区在jdk1.7版本前后改变比较大,所以还是先来说说方法区的演变。在jdk1.7版本之前,常量池存在于方法区,方法区是堆的一个逻辑部分,他有一个名字叫做。
2023-04-17 09:36:39 537
原创 1分钟在Github 快速找到优秀的开源项目 !
Git (读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。图片Github常用词含义watch:会持续收到项目的动态fork:复制某个项目到自己的仓库starclone:将项目下载到本地follow:关注你感兴趣的作者,会收到他们的动态。
2023-04-17 09:21:23 2589
原创 SpringCloud 微服务随机掉线排查过程
9. 翻看 nacos-client 源码,找到心跳函数(nacos2.x 不是这个),使用 arthas 监听心跳包,尝试能找到心跳丢失的证据,贴上当时的记录。奇迹发生了,服务又恢复正常了。5. 上文提到我使用的 springcloud 版本,恰好这个版本的 nacos-client 版本就是 1.4.1, 于是立马测试升级。进阿里云控制台查看故障机器近期的各项指标,但是发现故障机器的指标有重要的几项丢失。调试过程也是苦乐参半,乐的是突然有了调试思路,苦的是思路是一条死胡同,还好最终结果是满意的。
2023-04-16 18:00:00 2707 2
原创 (包教包会)最强分布式锁工具:Redisson
Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上。
2023-04-15 19:00:00 1145
原创 基于 SpringBoot + Vue 实现的可视化拖拽编辑的大屏项目
大屏设计是一个可视化拖拽编辑的,直观,酷炫,具有科技感的图表工具全开源项目。vue-router:Vue提供的前端路由工具,利用其我们实现页面的路由控制,局部刷新及按需加载,构建单页应用,实现前后端分离。三步轻松完成大屏设计:配置数据源---->写SQL配置数据集---->拖拽配置大屏---->保存发布。用键盘的上下左右也可以控制移动。flyway5.2.1: 主要用于在你的应用版本不断升级的同时,升级你的数据库结构和里面的数据。
2023-04-14 15:45:57 1354 1
原创 如何把Spring Boot的Jar包做成exe?生成自己的程序,超详细教程奉上
近期做了一个前后端合并的spring boot项目,但是要求达成exe文件,提供给不懂电脑的小白安装使用,就去研究了半天,踩了很多坑,写这篇文章,是想看到这篇文章的人,按照我的步骤走,能少踩坑。这个就是最后的程序了,双击运行就可以看到结果了,把setup.exe文件给别人安装,就都可以看到自己的程序了!也同时会跳出一个安装的,因为程序帮你自动启动生成的安装程序了,安装就可以了,安装的时候记得勾选创建快捷方式。配置到最后一步了,脚本文件,到这里会弹出问你是否马上编译,选择否,先把脚本写好再自己编译。
2023-04-14 09:25:25 754
原创 答对这道面试题,直接原地入职:说一下公司常用MySQL分库分表方案
系统绝对并发量并没有上来,表的记录并不多,但是字段多,并且热点数据和非热点数据在一起,单行数据所需的存储空间较大。第一种:SQL问题,如SQL中包含join,group by,order by,非索引字段条件查询等,增加CPU运算的操作 -> SQL优化,建立合适的索引,在业务Service层进行业务计算。关于xbit基因,例如要分8张表,23=8,故x取3,即3bit基因。第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。
2023-04-13 15:12:52 175
原创 面试官:项目中如何解决跨域问题(HttpClient、注解、网关)
因为浏览器的同源政策,就会产生跨域。比如说发送的异步请求是不同的两个源,就比如是不同的的两个端口或者不同的两个协议或者不同的域名。由于浏览器为了安全考虑,就会产生一个同源政策,不是同一个地方出来的是不允许进行交互的。在控制层加入允许跨域的注解使用httpclient,不依赖浏览器使用网关Gateway。
2023-04-13 14:58:13 142
原创 实战,揭秘SpringBoo中EnableXXX的秘密~
通过上面的分析我们已经完成了对@EnableXXX套路的了解,接下来我们自己动手实现下。首先需要准备一个的项目,这里我已经准备好了。根据我们分析源码的步骤我们首先需要准备一个配置类。接下来在包下,创建一个。/*** Hello模块的配置*/@Bean这里被@Bean标注的方法,方法名会作为bean对象的名称。而且当该bean被加载的时候我们还会在控制台输出一段话。配置类我们已经准备好了,接下来我们在annotation包中编写激活配置的注解。/*** 激活Hello模块配置*/
2023-04-13 09:42:18 189 1
原创 面试官:说一下Java开启异步线程的几种方法?
在java中异步线程很重要,比如在业务流处理时,需要通知硬件设备,发短信通知用户,或者需要上传一些图片资源到其他服务器这种耗时的操作,在主线程里处理会阻塞整理流程,而且我们也不需要等待处理结果之后再进行下一步操作,这时候就可以使用异步线程进行处理,这样主线程不会因为这些耗时的操作而阻塞,保证主线程的流程可以正常进行。使用注解完成的线程操作,不可以在自己的类中实现调用,因为注解最后也是通过代理的方式完成异步线程的,最好时在单独的一个service中写;的方式,如果需要复杂的线程操作,可以使用线程池实现。
2023-04-12 09:36:28 305 2
原创 面试官:MySQL误删表数据,如何快速恢复丢失的数据?
例子3:查询2018-11-12 09:00:00到2018-11-13 20:00:00 数据库为 youxi 的操作日志,并且过滤出 只包括 template_coupon_tb_product_category 表数据的操作记录 ,输入如下命令将数据写入到一个备用的txt文件中。例子1:查询2018-11-12 09:00:00到2018-11-13 20:00:00 数据库为 youxi 的操作日志,输入如下命令将数据写入到一个备用的txt文件中。值为OFF,需开启,值为ON,已开启。
2023-04-11 11:12:38 2775
Java程序员面试,MyBatise常见面试27道必问题
2023-03-20
如何保证缓存与数据库双写时的数据一致性?
2023-04-13
如何保证缓存与数据库双写时的数据一致性?
2023-03-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人