
JAVA
文章平均质量分 81
重庆阿汤哥
这个作者很懒,什么都没留下…
展开
-
Vue项目提示 doesn‘t work properly without JavaScript enabled. Please enable it to continue
We’re sorry but ***** doesn’t work properly without JavaScript enabled. Please enable it to continue原创 2022-12-05 22:12:47 · 11248 阅读 · 0 评论 -
(2022年最新)SpringCloud与SpringBoot的版本对应关系
也许大家还停留在Spring2.x,但是官方不停更新,搞得码农好为难,是时候为Spring Boot 3.0做准备了。原创 2022-06-02 11:06:32 · 17196 阅读 · 0 评论 -
第四篇-分布式事务之Seata-XA模式及Seata高可用
目录传统XA模式SeataXA模式数据源代理Seata高可用TC有状态部署TC无状态部署一致性协议同步传统XA模式XA 是数据库厂商实现的两阶段提交的一个强一致的协议(也就是对 2PC 规范的落地)换句话说,XA 模式也就是基于事务资源(数据库)本身提供的 XA 规范和协议的支持它的核心价值:从场景上看,满足全局一致性的需求 从应用上看,保持与 AT 模式一样的无侵入 从机制上看,适应分布式微服务架构的特点XA 模式的优劣势:优势: 业务无侵入原创 2022-02-16 16:57:15 · 1819 阅读 · 0 评论 -
第三篇-分布式事务之Seata-TCC和Saga模式
目录传统TCC模式SeataTCC模式实现原理空回滚防悬挂幂等控制传统Saga模式SeataSaga模式状态机高可用补充传统TCC模式Try:预留资源(比如转账时,先冻结资金) Confirm:使用Try阶段资源 Cancel:释放Try阶段资源此时业务服务需要实现以上三个接口,虽然第一步 Try 锁定了资源,减少了失败的可能但后面 CC 阶段,若两个分支事务有一个失败了(网络原因、系统原因),那业务还要去做主动重试等工作所以 TCC 如果全原创 2022-02-16 16:54:56 · 1326 阅读 · 0 评论 -
第二篇-分布式事务之Seata-AT模式
目录简述全局锁隔离性写隔离读隔离工作机制一阶段二阶段(提交)二阶段(回滚)AT存在的问题简述它一种无侵入的分布式事务解决方案,属于 2PC 的广义实现,其源自阿里云 GTS 的 AT 模式的开源版其核心价值在于低成本:编程模型不变(原来怎么写还怎么写),轻依赖,不需要为分布式事务场景做特定设计(没有各种补偿) 高性能:一阶段提交(本地提交,全局没提交),不阻塞,连接释放,保证整个系统的吞吐 注:这是比较难的地方,要想保证隔离性,就不能原创 2022-02-16 16:51:30 · 1811 阅读 · 0 评论 -
第一篇-分布式事务之事务详解及Seata
分布式事务是啥?高并发场景下的分布式事务,是行业内至今没有很好解决的难题其核心点在于:事务参与者出现在不同的数据库实例,需要网络通讯进行交互,引发了分布式场景下数据一致性问题以购物下单的场景来分析当订单表和库存表都在一个 DB 实例时,那么一个本地事务就能保证 ACID而订单和库存分处于不同的 DB 实例时,那么下单的过程中,生成订单是一个事务参与者,减库存是一个事务参与者在它俩的上面还有一个模块,负责先创建订单再减库存(或先锁库存再创建订单,谁先谁后,视业务场景而定)但由于是不原创 2022-02-16 16:49:00 · 732 阅读 · 0 评论 -
如何设计一个扛住千万级并发的架构?需要多少服务器?
阿里P8面试官:如何设计一个扛住千万级并发的架构?转载 2022-02-08 11:19:39 · 6847 阅读 · 0 评论 -
JVM常见面试
前言总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话,欢迎指出,后续有空会更新。1.什么情况下会发生栈内存溢出。思路:描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一个栈溢出的demo。我的答案: 栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口等信息。局部变量表又包含基本数据类型,对象引用类型 如果线程请求的栈深度大.原创 2022-01-25 18:39:25 · 170 阅读 · 0 评论 -
java实战,工作中常用到哪些设计模式
工作中常用到哪些设计模式1.策略模式策略模式的定义与特点策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式的主要优点如下。多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句,如 if...else 语句、switch...case 语句。 策略模式提供...原创 2022-01-21 12:59:45 · 1985 阅读 · 1 评论 -
程序在Nginx/k8s下如何获取客户端真实IP,带工具类
程序在Nginx/k8s下如何获取客户端真实IP,带工具类原创 2022-01-05 10:39:54 · 4914 阅读 · 0 评论 -
Java利用wkhtmltopdf 实现Html转PDF,IMAGE【非常好用】
前言:java实现html转pdf 是非常困难的,网上很多种方式对比了下很多坑,,效果非常不理想通过wkhtmltopdf 实现效果非常完美,可以html转pdf,也可以转图片。wkhtmltopdf工具官网链接:wkhtmltopdfwindos版本 自行下载对应版本,解压后目录如下C:\toms\soft\wkhtmltox\bin>wkhtmltopdf.exe file:///C:/Users/jijun.tang/Desktop/b...原创 2021-12-28 19:06:57 · 2099 阅读 · 2 评论 -
一文带你了解Elasticearch及JavaApi使用【专题一】
目录一、目标了解Elasticsearch的应用场景 掌握索引维护的方法 掌握基本的搜索Api的使用方法二、ElasticSearch介绍1、简介Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词..原创 2021-12-25 14:48:39 · 1762 阅读 · 0 评论 -
【MySQL面试专题二】 MVCC是什么?如何解决一致性问题?
问题一:MySQL 的事务隔离级别有哪些?分别用于解决什么问题?脏读:一个事务读取到另一个事务还未提交的数据。不可重复读:在一个事务中多次读取同一个数据时,结果出现不一致。幻读:在一个事务中使用相同的 SQL 两次读取,第二次读取到了其他事务新插入的行。不可重复读注重于数据的修改,而幻读注重于数据的插入。问题二、MySQL 为什么默认隔离级别采用可重复读?如何实现的?采用可重复读,可以避免脏读和不客重复的读。使用 MVCC 实现的,即 Mutil-Version Concu...原创 2021-12-04 17:26:44 · 1570 阅读 · 0 评论 -
日常使用 @Transactional 事务不生效的原因
@Transactional是在Spring开发的时候非常普遍实用的注解,该注解主要用来声明事务。它的实现原理是通过Spring AOP在注解修饰方法的前后织入事务管理的实现语句,所以开发者只需要通过这个注解就能代替一系列繁琐的事务开始、事务关闭等重复性的编码任务。编码方式确实非常简单了,但也因为隐藏了直观的实现逻辑,一些错误的编码方法可能会让@Transactional注解失效,达不到事务的作用。估计大多数童鞋遇到过明明加了次注解但是事务不生效。一、选择支持事务的引擎和数据库在mysql中用的原创 2021-12-01 22:17:08 · 2135 阅读 · 0 评论 -
花了30天才肝出来,史上最全面Java设计模式总结,看完再也不会忘
设计模式已诞生20多年,其间相继出版的关于设计模式的经典著作不计其数。如果说GoF的《设计模式》是设计模式领域的“圣经”,那么之后出版的各种关于设计模式的书籍可称为“圣经”的“批注版”或者“白话版”。本书正是基于GoF的《设计模式》来编写的。《设计模式》总结的是经验之谈,千万不要死记硬背,生搬硬套。下面来总体预览一下设计模式的分类和总结,如下表所示。转载 2021-11-29 22:18:52 · 210 阅读 · 0 评论 -
【MySQL面试专题一】必看索引的原理和实现
什么是索引?在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。当表中有大量记录时,若要对表原创 2021-11-28 11:44:05 · 796 阅读 · 1 评论 -
SpringBoot启动时初始化数据的几种方式
前言在我们用springboot搭建项目的时候,经常碰到在项目启动时初始化一些字典数据、地市数据、等各类需求,针对这种需求springboot为我们提供了以下几种方案供我们选择:- ApplicationRunner与CommandLineRunner接口- Spring Bean初始化的init-method、PostConstruct注解、InitializingBean、BeanPostProcessor接口- Spring的事件机制: 实现 ApplicationListener 接口原创 2021-11-26 13:37:03 · 7641 阅读 · 0 评论 -
使用minio与腾讯cos文件上传下载
废话不多多,直接上代码第一步、引入相应包<dependency> <groupId>com.qcloud</groupId> <artifactId>cos_api</artifactId> <version>5.6.61</version></dependency><dependency> <groupId>io.minio</gro原创 2021-11-19 10:23:01 · 1608 阅读 · 0 评论 -
分布式事务三连篇
1.0 分布式事务概述1、事务简介 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性(atomicity):个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态,事务的中间...转载 2021-10-29 11:17:20 · 214 阅读 · 0 评论 -
git push 程仓库时,出现以下类似错误,‘Note about fast-forwards‘ in ‘git push --help‘ for details
echo "# Lee" >> README.md -- 新建一个README.md的文件,并将项目名写入此文件git init -- 新建一个本地仓库git add README.md -- 将README.md文件加入到仓库中git commit -m "first commit" -- 将文件commit到本地仓库git remote add origin https://github.com/XuDaojie/Lee.git -- 添加远程仓库,origin只是一个远程仓...原创 2021-10-29 11:11:52 · 1093 阅读 · 0 评论 -
Spring Boot 2.6.0-RC1, 2.5.6 & 2.4.12 发布
Spring Boot 2.6.0-RC1, 2.5.6 & 2.4.12 已发布,更新内容包括修复安全问题、改进文档,以及升级依赖项。Spring Boot 2.6.0-RC1此版本增加了如下新特性支持在/actuator/info端点中选择Java runtime 信息 添加对 Log4j2 复合配置的支持 为 buildpack 添加了其他配置选项 servlet 已支持 SameSite cookie 属性Spring Boot 2.5.6&Spring ...原创 2021-10-29 09:08:22 · 271 阅读 · 0 评论 -
电商支付架构设计
交易核心支付编排作者:Petter Liu出处:PetterLiu - 博客园转载地址:电商支付架构设计 - PetterLiu - 博客园...转载 2021-10-15 15:02:34 · 131 阅读 · 0 评论 -
国产API云原生网关,基于 OpenResty + etcd 实现的云原生、高性能、可扩展带可视化管理
提到API网关,大家比较熟悉的有Spring Cloud体系中的Gateway和Zuul,这些网关在使用的时候基本都要修改配置文件或自己开发功能。今天给大家介绍一款功能强大的国产API网关apisix,它基于OpenResty+etcd实现的云原生、高性能、可扩展的微服务 API 网关自带可视化管理功能,多达几十种插件支持,希望对大家有所帮助!一、简介apisix是一款云原生微服务API网关,可以为API提供终极性能、安全性、开源和可扩展的平台。apisix基于Nginx和etc...原创 2021-09-06 09:30:23 · 1643 阅读 · 0 评论 -
Spring Cloud 微服务集成整理
SpringCloud服务注册中心eurekaap 高可用 分布式容错<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><gr...原创 2021-09-01 09:28:06 · 233 阅读 · 0 评论 -
软件著作权申请教程
中国软件著作权申请教程 & 模板文件材料一:用户操作手册 or 用户使用说明书 or 用户设计说明书材料二:源码文档材料三:申请表需要模板的可以找我单独发送原创 2021-08-27 16:57:03 · 421 阅读 · 0 评论 -
Redis集群模式-Cluster
Redis集群详解Redis有三种集群模式,分别是:* 主从模式* Sentinel模式* Cluster模式三种集群模式各有特点,下面我只讲集群模式Redis官网:https://redis.io/ ,最新版本6.2,需要的自行去下载Cluster模式Cluster模式介绍 1、采用去中心化的思想,没有中心节点的说法,它使用hashslot方式将16348个hashslot覆盖到所有节点上,对于存储的每个key值,使用CRC16(KEY)&...原创 2021-05-21 15:17:40 · 1418 阅读 · 0 评论 -
从面试角度学完 Kafka
Kafka 是一个优秀的分布式消息中间件,许多系统中都会使用到 Kafka 来做消息通信。对分布式消息系统的了解和使用几乎成为一个后台开发人员必备的技能。今天就从常见的 Kafka 面试题入手,和大家聊聊 Kafka 的那些事儿。思维导图讲一讲分布式消息中间件问题 什么是分布式消息中间件? 消息中间件的作用是什么? 消息中间件的使用场景是什么? 消息中间件选型? 消息队列分布式消息是一种通信机制,和 RPC、HTTP、RMI 等不一样,消息中间原创 2021-05-08 13:29:06 · 178 阅读 · 0 评论 -
nacos+SpingCloudGetway 实现动态路由
踩坑提示: 1、请求网关时提示503 错误This application has no configured error view, so you are seeing this as a fallback.Mon Apr 26 17:35:28 CST 2021[788af11b-1] There was an unexpected error (type=Service Unavailable, status=503).2、请求网关不提示错误,查看网络请求状态为200解决方..原创 2021-04-26 17:49:30 · 3529 阅读 · 0 评论 -
Spring解决循环依赖
什么是循环依赖简单的说就是A依赖B,B依赖C,C依赖A这样就构成了循环依赖。循环依赖分为构造器依赖和属性依赖,众所周知的是Spring能够解决属性的循环依赖(set注入)。下文将从源码角度分析Spring是如何解决属性的循环依赖。思路如何解决循环依赖,Spring主要的思路就是依据三级缓存,在实例化A时调用doGetBean,发现A依赖的B的实例,此时调用doGetBean去实例B,实例化的B的时候发现又依赖A,如果不解决这个循环依赖的话此时的doGetBean将会无限循环下去,导致内存原创 2021-03-31 21:14:19 · 259 阅读 · 0 评论 -
t通过数据库逆向生成文档工具——screw
目录一、pom.xml准备二、工具类配置及生成三、导出示例截图(html)四、说明目标将数据库表字段分表生成表单,自动对应表字段以及注释,可导出为 html | doc | md 文件。一、pom.xml准备一、pom.xml准备<!-- screw核心 --> <dependency> <groupId>cn.smallbun.screw</groupId> <arti...原创 2021-03-16 11:25:06 · 353 阅读 · 0 评论 -
需求、概要、详细设计怎么做,做那些?
1 软件设计的整体流程:软件需求分析阶段:输出了《软件需求规格说明书》,不涉及具体实现方法。用户能看得明白,开发人员也可据此进行下面的工作,搞清楚“要解决什么问题”。 概要设计阶段:确定软件系统的总体布局,各个子模块的功能和模块间的关系,与外部系统的关系,选择的技术路线。有一些研究与论证性的内容。并输出《软件概要设计说明书》。搞清楚“总体实现方案” 详细设计阶段:对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节。是“程序”的蓝图,确定每个模块采用...原创 2021-03-10 17:43:19 · 2165 阅读 · 0 评论 -
数据结构可视化
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html原创 2020-11-18 15:52:01 · 235 阅读 · 0 评论 -
MQTT问题整理
问题一:单片机缓存有限,处理能力有限的情况下,消息不可能一次发出,这种情况下要怎样通过MQTT发布消息?先组装publish协议的头,里面写好payload的长度,通过tcp发出去,然后一点一点发payload。如果拿不到payload总长度,这个事情就难办。因为你发了一个publish协议报,服务端读到head里面的payload的长度之后,就会一直读,读到需要的长度,才算这个publish结束。所以,你的需求是首先确认你发布的内容的长度,然后组publish数据包头,填写payload长度,tcp:原创 2020-06-29 15:46:09 · 2149 阅读 · 0 评论 -
RSA加密长度限制及如何分段加密
RSA加密长度限制问题RSA加解密中必须考虑到的密钥长度、明文长度和密文长度问题。明文长度需要小于密钥长度,而密文长度则等于密钥长度。因此当加密内容长度大于密钥长度时,有效的RSA加解密就需要对内容进行分段。这是因为,RSA算法本身要求加密内容也就是明文长度m必须0<m<密钥长度n。如果小于这个长度就需要进行padding,因为如果没有padding,就无法确定解密后内容的真实长度,字符串之类的内容问题还不大,以0作为结束符,但对二进制数据就很难,因为不确定后面的0是内容还是内容结束符。原创 2020-06-10 16:09:03 · 14012 阅读 · 5 评论 -
Spring Cloud与Seata分布式事务初体验
1. 准备环境>Seata ServerSeata目前在github托管开源源代码,源码地址:https://github.com/seata/seataSeata每次发版都会提供Server在不同系统下的执行脚本,可以在Linux/Mac/Windows系统环境下直接执行脚本来启动。下载Seata Server我们通过github的releases界面下载seata最新...原创 2020-04-08 14:32:27 · 421 阅读 · 0 评论 -
基于Twitter的Snowflake算法实现的分布式ID生成器
/** * 基于Twitter的Snowflake算法实现的分布式ID生成器 * ---------------------------------------------------------------------------------------------------------------- * 用法如下 * 第一种:IDUtil.INSTANCE.nextId() * ...原创 2020-01-08 16:24:19 · 366 阅读 · 0 评论 -
使用spring-cloud-zuul-ratelimit限流
pring Cloud Zuul RateLimit项目Github地址:https://github.com/marcosbarbero/spring-cloud-zuul-ratelimit该包实现了在Zuul对每个服务进行限流。提供的几种限流方式:1. 认证用户(Authenticated User)使用已认证的用户名(username)或'anonymous'2. 原始...原创 2019-11-13 16:21:16 · 1933 阅读 · 4 评论 -
Spring Cloud Alibaba基础教程:Nacos 初体验Nacos Spring Cloud
什么是 Nacos?Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应...原创 2019-05-14 13:23:57 · 642 阅读 · 0 评论 -
携程Apollo统一配置中心的搭建和使用
原文:https://blog.youkuaiyun.com/luhong327/article/details/81453001转载 2019-07-03 11:24:34 · 455 阅读 · 0 评论 -
SpringBoot集成RabbitMQ消息队列搭建实现延时队列
1、软件准备首先安装一个RabbitMQ本文使用的是linux版本的RabbitMQ,版本是:rabbitmq-server-3.6.15-1.el6.noarch.rpmrabbitmq_delayed_message_exchange插件插件下载地址:http://www.rabbitmq.com/community-plugins.html由于我安装的是3.6.*系...原创 2019-08-28 15:05:17 · 603 阅读 · 0 评论