自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Maven archetype 原型插件详解

若通过指定文件的方式从原型元工程生成原型工程,多层级的自定义属性都不会生成标签在元数据文件中即使手动在元数据文件中补充了多层级属性的标签,在通过可运行原型工程生成目标项目时,也无法通过正确的引用到实际配置值当我们在原型元工程中就定义好模板文件需要引用的单级自定义属性,并通过命令创建的原型工程。原型工程中的模板文件也同时定义好了自定义属性引用帮助我们生成文件但,Velocity解析的非常不智能!原型元工程中提前编写好的单层级的自定义属性引用,经常无法正确的在原型工程中生成,

2024-03-01 21:29:04 1079

原创 Java时区与MySQL时区不一致导致的时间不一致问题分析

中说到:MySQL 服务使用的时区会受到 jdbc 参数的影响,也就是说可能会出现:实际的数据库时区与 jdbc 参数声明的时区是不一样的。根据源代码的实现可以发现一个规律:都是先将日期根据所属时区转换为时间戳后,在根据需要转换的时区转换为最终日期。,那么表达的意义也不一样,就如北京八点与美国八点的区别。对于 Date 类型字段值的处理:将Java程序时区下的日期的时间戳,转为MySQL服务时区下的日期(对于 Date 类型字段的处理:将MySQL服务时区下的日期的时间戳,转为Java程序时区下的日期。

2024-02-25 13:35:48 973 1

原创 Spring 抽象方法的事务

说明就近使用子的。

2023-11-27 14:13:01 273

原创 事务中调用三方接口,如何尽可能的保证两侧系统数据的一致性

因为调用三方接口 与 数据库操作都不是100%成功的操作。如果一方是可以保证 100% 成功的,那么就可以先执行非 100% 成功的操作,确定执行成功后,在执行 100% 成功的操作,进而达到数据的一致性。比如:事务内调用接口,先调用接口,根据接口的返回状态来提交或回滚事务。看起来这样做一定不会出现问题,但极端情况下,commit 与 rollback 是不一定会执行成功的。可以知道,接口影响的三方系统数据是不可进行回滚的,但系统自身但数据是可控的。所以,可以将接口调用这一步放在事务方法的最后一步。

2023-11-02 00:12:50 816

原创 SpringCloudAlibaba - Seata (2) AT 模式源码分析

seata AT 模式的业务零侵入性,依靠的就是自动装配 starter 包。

2023-08-30 14:51:51 142

原创 SpringCloudAlibaba - Seata (1) 各模式详解、微服务集成、集群搭建

需要说一下,即使上面的案例处理了很多特殊情况,但还是存在一个没有处理的问题:若 try 方法业务逻辑执行完成但在数据库事务提交前超时,seata 触发了 cancel 执行请求,那么最终就会发生业务悬挂的情况,所以需要加一个互斥锁。分布式事务最大的问题是各个子事务的一致性问题,如上图所示:若库存服务扣减失败后,应该将账户服务与订单服务中的数据库操作进行回滚,这样才能达成数据的一致性。store 节点指的是 TC 在工作期间存储协调数据的配置,支持的方式也有很多,我们使用 mysql 数据库的方式进行存储。

2023-08-30 14:50:09 350

原创 Mysql 运行原理 (4) - InnoDB 事务原理

事务,就是把多个数据库操作打包成一个不可分割的整体进行执行。同时到这些操作执行后,需要保证数据的一致且可靠。-- 开启事务-- 关闭默认提交,默认开启提交:0-- 业务 SQLUPDATE users SET name = '张三-upd' WHERE name = '张三';-- 提交事务COMMIT;

2023-08-22 15:45:49 111

原创 Mysql 运行原理 (3) - expalin 详解

或者当遇到一些慢 SQL 时,我们想要进行优化。但又不知道导致慢的原因或者关键点在哪,所以我们需要了解慢 SQL 的执行情况。下面就主要介绍 explain 关键字的功能。

2023-08-17 15:05:20 55

原创 Mysql 运行原理 (2) - SQL执行原理与InnoDB读写原理

SQL 执行原理一、客户端与 Mysql Server 通过 TCP 的方式进行数据传输,可以通过下面的 SQL 查看、设置传输过程中数据包的大小:-- 查询数据包大小上限(默认 4MB)SHOW VARIABLES LIKE 'max_allowed_packet'-- 修改数据包上限SET max_allowed_packet = xxx二、当接收到 SQL 语句后,会先通过 查询缓存 进行查找。但由于性能问题,已经在 Mysql 8 版本中删除了,所以就不详细说明了。在 5.7 版本

2023-08-17 10:28:07 63

原创 Mysql 运行原理 (1) - InnoDB 数据存储结构

此系列博客为学习笔记,。某些更加具体细节可能会有遗漏,主要目的在于理解 mysql 整体的运行原理。后面博客如果没有特殊说明,都采用 Mysql 5.7 版本。本文主要介绍,Mysql 中的 InnoDB 存储引擎是如何在磁盘中存储表数据,又通过什么样的存储结构进行存储。

2023-08-17 10:27:23 42

原创 SpringCloud - Gateway (2) 应用案例 - 根据当前运行环境访问不同环境的服务实例

当本地开发环境进行代码调试时,优先获取本地环境中的服务节点,若本地没有运行该服务,则调用测试环境中的该服务。这样可以便利我们进行代码自测,只需要将需要测试的服务在本地启动,其余的服务依旧调用测试环境。:根据当前运行时环境,调用不同环境的服务实例,实现环境的隔离。比如本地开发环境,服务间调用时,只会调用本地环境中的服务,而不是调用测试环境中的服务。最后在总结一下:根据当前的 active.profile 过滤不同 ip 的服务实例。,实现逻辑已经在代码注释中写的很清楚了。

2023-08-07 14:36:31 194

原创 SpringCloud - Gateway (1) 集成与配置详解

在创建自定义工厂前,先介绍一下快捷配置。就是一个快捷配置。其中,Path 会被拼接后在 IOC 容器中寻找对应的断言工厂 Bean 进行断言 Bean 的注册。每次请求进入后,就会执行该断言。其次,会作为配置值注入到中,辅助进行断言。必须是一个 Spring Bean必须以 RoutePredicateFactory 作为类名后缀继承 AbstractRoutePredicateFactory设置配置类,声明配置属性接收配置文件中对应的断言信息重写断言方法逻辑。

2023-08-06 02:18:16 1101

原创 SpringCloudAlibaba - Sentinel (2) 集成与配置详解

Sentinel 组件生效于每个微服务节点,每个服务节点都可以对节点中某些资源进行防护配置。Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard。核心库不依赖 Dashboard,但是结合 Dashboard 可以取得最好的效果。也就是说,Sentinel 配置有两种方式:一种是基于核心库进行代码的配置,一种是基于管控台的配置。基于管控台的配置都会通过网络通信同步到服务节点,服务节点在通过核心库修改节点在内存中对应资源的防护配置。也就是说,管控台将配置的操作进行了可视配置化。

2023-07-24 16:20:08 655

原创 SpringCloudAlibaba - Sentinel (1) 基础概念

官方文档。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 是 Spring Cloud Alibaba 的一个重要组件,同类组件有 Spring Clound 的 Hystrix。与 Hystrix-Dashboard 控制台一样,Sentinel-Dashboard 控制台也可以提供对流量的实时监控、在线维护流量规则、熔断规则等。

2023-07-24 16:19:26 31

原创 SpringCloud - RPC (1) 基础概念

SpringCloud 集成的 RPC 通信组件底层一般都是采用的 HTTP 协议。ribbon:netflix 开源,目前已停止维护。在 Spring 官方推出自己的负载均衡组件之前,一直集成的 ribbonload-balancer:Spring 官方推出的用于替代 Ribbonopenfeign:基于 netflix 开源但停止维护的 feign(netflix feign 又基于 Ribbon)进行了增强,使得支持 SpringMVC 的一些注解功能,进行远程调用就如在调用本地方法一样。

2023-07-07 11:55:37 698

原创 SpringCloud - RPC (3) 集成 OpenFeign

Feign 是 Netflix 开发的基于 Ribbon 的声明式、模板化 HTTP 客户端。而 openfeign 则是 Spring 官方 对 Feign 的增强,使其能够支持 SpringMVC 的注解。feign 最大的特点在于通过 feign 调用其他服务的接口,就像调用本地方法一样。

2023-07-07 11:54:01 277

原创 SpringCloud - RPC (2) 集成 Ribbon 与 SpringCloudLoadBalancer

传递不同 service-name,根据响应信息中输出的端口号即可测试是轮询访问还是随机访问了。,传递不同 service-name,根据响应信息中输出的端口号即可测试是轮询访问还是随机访问了。ribbon 包下都是关于 Ribbon 的配置与测试代码。项目中新增一个服务,端口为。

2023-07-07 11:53:43 114

原创 SpringCloudAlibaba - Nacos (3) 服务配置 (配置中心)

比如共享配置文件,可以为 mysql、redis、rocketMQ 等等其他数据库或中间件的配置文件。扩展配置文件,可以为具体类别项目的扩展配置,可以将一些业务上的配置放到该类配置文件中。作用:当 Nacos 管控台修改配置文件的配置时,立即刷新 Bean 实例中通过 @Value 注解注入的配置属性值。的某些配置的优先级高于 Nacos Server 远端配置文件中的相同配置项,即最终以本地的配置为主,该如何配置呢?因为在引入延展、共享配置文件的配置项中,不存在主配置文件中的配置项。

2023-07-03 16:58:09 266

原创 SpringCloudAlibaba - Nacos (2) 集群搭建

对比 1.x 版本,2.x 做了许多优化与调整。底层Nacos Client(业务服务节点)与Nacos Server(Nacos 节点)或 Nacos Server 与 Nacos Server 间的通信方式不仅仅在支持 HTTP,新增了 gRPC 通信方式。因为使用了 gRPC 通信的方式,默认的 Nacos Server 节点启动时会占用更多的端口(摘自官网):端口与主端口的偏移量描述88480主端口,客户端、控制台及OpenAPI所使用的HTTP端口98481000。

2023-07-03 16:57:21 481

原创 SpringCloudAlibaba - Nacos (1) 服务治理

最终的效果是将不同用户绑定到不同角色,不同角色可以操作不同命名空间,并对命名空间进行不同的操作(r / w / rw)。下面我们接入一下 Nacos,将我们自己的服务:goods-service、order-service 注册到 Nacos 中,并可用通过管控台进行查看。里面描述着服务的各种信息字段,注意右下角的下线按钮,触发后会修改服务注册表中该服务节点的状态,意味着其他服务无法在访问该节点。会发现新增了一条数据,服务节点的端口为 9201,正是我们新启动的订单服务。版本的 Nacos 进行学习。

2023-07-03 16:54:07 256

原创 SpringCloudAlibaba 微服务体系学习开篇

系统学习 SpringCloudAlibaba 微服务体系中的各个组件,以及其他开源组件。后面会持续更新各个组件的用法与配置。相关代码都会编写在学习项目中。

2023-06-26 17:00:51 44

原创 CAP、BASE 理论

CAP 定理(CAP theorem)又被称作布鲁尔定理(Brewer’s theorem),是加州大学伯克利分校的计算机科学家埃里克·布鲁尔(Eric Brewer)在2000 年的 ACM PODC 上提出的一个猜想。2002 年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)发表了布鲁尔猜想的证明,使之成为分布式计算领域公认的一个定理。C:consistency,一致性。等同于所有节点访问同一份最新的数据副本。A:availability,可用性。

2023-06-26 15:51:35 65

原创 Docker (5) 网络配置

根据需求自定义配置容器网络。将会在宿主机中创建一个虚拟网卡(类似 docker0),用来关联未来在该网络环境下的容器的 vethX 虚拟网卡。可以但不限于配置:子网网段、网关、子网掩码、网络模式(桥接 or else)。

2023-06-20 16:22:31 714

原创 Docker (4) 操作私服

若有自己的云服务器,可以通过下载registry镜像搭建个人私有仓库。下面使用阿里云的个人私有仓库进行测试。

2023-06-20 16:22:08 63

原创 Docker (3) Dockerfile

数据源可以是宿主机,也可以是一个远端 URL。申请需要的宿主机端口,但是不做宿主机与容器的端口映射。Dockerfile 文件是用来构建镜像的命令脚本。持久化保存镜像到本地 & 加载本地镜像包。配置工作目录,当进入容器时默认进入该目录。数据源只可以是宿主机。参数时,会读取当前目录下的。指定基础镜像,写在首行。设置容器的环境变量。:以可读格式打印大小和日期。

2023-06-20 16:19:23 49

原创 Docker (2) 常用基础命令

前者为宿主机端口,后者为映射的容器端口(映射的容器端口不一定是容器内的中间件使用的端口)挂载容器内的文件、文件夹到宿主机。(个人理解,容器内的文件只是一个链接,同时指向了宿主机的指定文件、文件夹)为 Shell path 配合使用,达到启动后就通过 Shell 连接到容器实例的效果。为 Shell path 配合使用,达到通过 Shell 连接到容器实例的效果。可以启动容器实例后,进入容器实例并通过 env 命令查看设置的环境变量。的功能使得 Shell 程序是可以正常运行的,缺一不可)

2023-06-20 16:18:18 32

原创 Docker (1) 基础概念

镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是镜像文件。用来运行软件包中的特定程序,并且程序的运行环境配置,依赖等都封装在其中,使得不需要把过多的精力放在环境问题上。docker平台就是一个软件集装箱化平台,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,也可以实现虚拟化,并且容器之间不会有任何接口。

2023-06-20 16:17:50 33

原创 Lambda 实现类的序列化与在MybatisPlus中的应用

现在,我们可以拿到 Lambda 实例的信息了,其中有一个很关键的数据:若 Lambda 实例是被方法引用构成的,那么该方法的名称就会被封装在 SerializedLambda 中,测试一下。Mybatis plus 就是使用这个方式,根据传递 的 Lambda 获取到所对应的实体字段,继而获取到所对应的表字段。此方法的含义:通过对 Lambda 对象的序列化与反序列化,获取到 Lambda 实例的详细信息。序列化与反序列化成功。对比前面提到的 Lambda 对象的序列化与反序列化,我们将。

2023-06-15 17:24:38 245

原创 Lambda 的具体实现类

内部类生成一个具体的实现类,而对于 lambda 表达式,并没有生成一个具体的实现类。我们可以发现依赖外部环境的 lambda 会将引用的外部变量闭包的存储在内部。,而并不是我们写的 lambda 体中的输出语句。,其实现也正是 lambda 体中的内容。

2023-06-15 09:53:22 67

原创 Java 内部类的实现

Java 内部类的实现

2023-06-07 13:57:38 82

原创 Java 泛型的协变与逆变

Java 泛型中的协变与逆变

2023-06-06 12:02:19 1005

原创 IO 模型

IO 模型总结

2023-03-22 13:23:44 39

原创 select/poll/epoll

select、poll、epoll

2023-03-20 16:15:14 101

原创 NIO - ByteBuffer

Nio ByteBuffer

2023-03-02 16:51:23 81

原创 Vim 基本操作

Vim 基础

2023-02-28 19:29:22 54

原创 对接微信支付V3遇到的问题

对接微信支付 v3 时遇到的问题

2023-02-13 20:37:52 271

原创 Logback 配置

Logback 配置文件的配置

2023-02-05 23:31:15 119

原创 信息安全基础

信息安全基础

2023-02-03 16:31:58 84

原创 SpringMVC 拦截器失效

拦截器拦截路径中含有 Context-Path 导致的拦截器失效

2022-12-31 14:49:16 235

原创 KMP 算法实现(萌新记录)

KMP 算法实现

2022-12-28 13:38:57 41

空空如也

空空如也

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

TA关注的人

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