
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
SpringBoot使用validation-api实现参数校验前言我们在开发Java项目的时候,经常需要对参数进行一些必填项、格式、长度等进行校验,如果手写代码对参数校验,每个接口会需要很多低级的代码,这样会降低代码的可读性。那么我们能不能使用一种比较优雅的方式来实现,对请求中的参数进行校验呢?knife4j的安装与使用可参考我的博客:SpringBoot使用knife4j进行在线接口调试正文V
TCC分布式事务解决的问题:确保微服务之间的事务操作的原子性、一致性等得到保障。TCC柔性事务(分布事务):实现方法通过在注解中声明Confirm方法与Cancel方法。关于 RPC/gRPC/HTTP/RESTPRC:是远程调用,其调用的协议包括传输协议和编码协议。传输协议:1.PRC使用的http协议2.gRPC使用的http2.03.Dubbo使用...
为什么要使用分布式事务和分布式锁?我们为了保证数据的最终一致性,需要很多的技术方案来支持,比如分布式事务、分布式锁等。分布式事务的解决方案基于可靠消息的最终一致性方案可独立部署、独立伸缩(扩展性)兼容所有实现JMS标准的MQ中间件能降低业务系统与消息系统间的耦合性可实现数据可靠的前提下确保一致性业务场景:那些不要求立即返回结果的业务,完成时间上的解耦如:对应支付系统会计异步记...
SeataSeata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。Seata中的组件角色TC(事务协调者,Transaction Coordinator):是 Server端,要单独部署,维护全局和分支事务的状态,驱动全局事务提交或回滚。TM(Transacti
分布式下的请求超时前言在日常的生产中,用户往往不在乎你使用的什么样的性能优化的手段,他们更关心地是点击一个按钮后能否立马给予反馈。这个用户等待反馈的时间,就是我们软件设计过程中的用户操作的响应时间。我们花费心思去优化系统提升系统性能,本质上就是缩短响应时间,从而提升用户体验的满意度。那到底什么样的系统才算得上“流畅丝滑”的呢?正文在互联网上对于用户响应时间,有一个普遍的标准,即2/5/10秒原则:
最近被分配了一个任务,是通过`dubbo`的方式对外提供服务,`dubbo`没有我们一般的web项目中的`Controller`层,所以没有办法通过`http`的方式进行调用调试。作为萌新的我,确实有点一筹莫展,直到被老司机提醒使用`dubbo` `invoke`的方式进行接口测试,我才有方向。
Docker 是一个开源项目,这个项目旨在通过把应用程序打包为可移植的、自给自足的容器。Docker类似于一个镜像文件,里面集成了应用运行需要的各种的运行环境,这使得Docker能够快速的部署到任何一个全新的服务器中。相对于虚拟机:Docker的启动速度更快;Docker的资源使用地更好;Docker应用之间的隔离性没有虚拟机好;Docker容器的安装:https://www.c...
Java垃圾回收器:可以在java虚拟机添加启动参数,从而达到选择合适的垃圾回收期通过jmap -heap 进程数的方式可以查看当前采用的垃圾回收器类型新生代收集器:Serial、ParNew、Parallel Scavenge;老年代收集器:Serial Old、Parallel Old、CMS;整堆收集器:G1;选择垃圾回收器考虑的因素1.应用程序的场景2.硬件的制约 :3....
溪源的Java笔记—线程与线程池前言Java的进阶之路上不得不说的技术点就是——多线程,上期博客我们对JVM的知识进行了简单地整理,本期博客将针对线程与线程池后端知识点一一阐述。JVM虚拟机 可参考我的博客:溪源的Java笔记—JVM正文线程线程是CPU调度分派的基本单位。线程的周期新建:当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量
jvm运行机制jvm的基本结构PC寄存器每个线程拥有一个PC寄存器在线程创建时会创建PC寄存器会指向下一条指令的地址线程共享的:方法区:类的共有属性,保存相对稳定信息。JVM堆:对象、数组,是GC的主要工作区间线程隔离的:(双栈是隔离的)本地方法栈:Natitve 方法虚拟机栈(JVM方法栈、JAVA栈):局部变量区和操作数栈、存放基本类型的数据和对象的引用内存模型...







