- 博客(405)
- 收藏
- 关注
原创 JAVA设计模式之桥接模式
桥接模式(Bridge Pattern)是一种结构型设计模式,旨在将抽象部分与其实现部分分离,从而使两者可以独立地变化。桥接模式通过组合关系代替继承关系,将抽象和实现解耦,使代码更具扩展性和维护性。它的核心思想是通过引入一个实现接口,使抽象部分不直接依赖具体实现,而是依赖于接口,从而达到独立扩展和运行时动态绑定的效果。以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
2025-03-08 14:11:49
614
原创 RUP的四个阶段
RUP(Rational Unified Process)即统一软件开发过程,是一个面向对象且基于网络的程序开发方法论,它包括四个连续的阶段,每个阶段都有明确的目标和里程碑。
2025-03-05 09:46:02
299
原创 使用 Spring Initializr 创建 Spring Boot 项目
再次确认需要的项目名称,然后选择项目存储的位置,还可以进行更多的设置,包括模块名称,内容根目录,模块所在位置等信息,一般按默认的就可以了,点击 Finish 完成。如果选择的项目存储的目录不存在,则会提示你 IDEA 将进行创建这个目录。,默认选择你的 JDK 和构建 Spring Boot 项目的 URL,接着点击右下角的 Next。选择 Spring Boot 版本,勾选项目需要的依赖项,这里目前勾选需要的 Spring Web 依赖,搞定点击 Next 继续。对于这个项目的目录结构,我一般会删除。
2025-02-27 18:04:03
362
原创 分布式事务三阶段协议
分布式事务的三阶段分别是准备阶段、预提交阶段和提交 / 回滚阶段,以下是详细介绍:三阶段提交协议可以理解为两阶段提交协议的改良版,是在协调者和参与者中都引入超时机制,并且把两阶段提交协议的第一个阶段分成了两步: 询问,然后再锁资源,最后真正提交。两阶段提交协议最早是分布式事务的专家Jim Gray在1978年的一篇文章Notes on Database Operating Systems中提及。两阶段提交协议可以保证数据的强一致性,即保证了分布式事务的原子性:所有结点要么全做要么全不做。
2025-02-22 20:13:41
717
原创 分布式事务-两阶段提交
分布式两阶段提交(Two-Phase Commit,2PC)是分布式系统中常用的一种原子提交协议,用于保证在分布式事务中所有参与者要么全部提交事务,要么全部回滚事务,以维护数据的一致性。
2025-02-19 16:51:39
938
原创 分布式事务-XA
XA 模式是一种分布式事务处理的解决方案,它基于 X/Open 组织定义的 XA 规范,用于在分布式系统中协调多个资源管理器(如数据库)以保证事务的原子性、一致性、隔离性和持久性(ACID)。
2025-02-15 16:22:55
629
原创 oltp olap的区别
联机分析处理 OLAP 能使分析人员迅速、一致、交互地从各个方面观察信息,具有共享多维信息快速分析的特征,其中的多维性可满足从时间、地区和商品种类三个维度分析数据的需求。ETL 是将数据从来源端经过抽取、交互转换、加载至目的端的过程,主要用于数据仓库的构建,均不符合题意。而 ETL 是构建数据仓库的一个环节,数据展现是商业智能的一个部分,但不是关键技术,OLTP 主要用于日常事务处理,不属于商业智能的关键技术,所以答案为 A。B.OLTP 系统的数据更新频率高,OLAP 系统的数据更新频率低。
2025-02-13 09:49:21
981
原创 分布式事务-AT模式
AT 模式的一阶段、二阶段提交和回滚均由 Seata 框架自动生成,用户只需编写“业务 SQL”,便能轻松接入分布式事务,AT 模式是一种对业务无任何侵入的分布式事务解决方案。但AT模式存在的不足就是 当操作的数据 是共享型数据,会存在脏写的问题,所以如果是 用户独有数据可以使用AT模式。AT 模式是一种无侵入的分布式事务解决方案。在 AT 模式下,用户只需关注自己的“业务 SQL”,用户的 “业务 SQL” 作为一阶段,Seata 框架会自动生成事务的二阶段提交和回滚操作。一阶段。
2025-02-13 09:47:40
829
原创 分布式事务-at模式
AT 模式是在分布式事务处理中,基于支持本地 ACID 事务的关系型数据库,通过对数据的解析和日志记录等技术,来实现分布式事务的最终一致性。此外,在网络通信方面,如果网络不稳定或出现延迟,AT 模式可能会因为等待其他节点的响应而导致事务处理时间延长。但总体来说,在大多数基于关系型数据库的分布式系统中,AT 模式是一种高效、便捷的分布式事务解决方案。不过,AT 模式也有一定的局限性,它依赖于数据库的支持,对一些非关系型数据库或特殊的存储系统可能不太适用。TCC 模式需要在业务代码中显式地实现。
2025-02-11 21:44:38
538
原创 saga模式的选择基于命令还是基于事件的Saga实现方式?
这两种实现方式各有特点,在实际应用中,需要根据具体的业务场景、系统架构和性能需求等来选择合适的实现方式,有时也会将两种方式结合使用,以充分发挥它们的优势。
2025-02-11 21:43:52
530
原创 Saga基于命令和基于事件这实现方式
这两种实现方式各有特点,在实际应用中,需要根据具体的业务场景、系统架构和性能需求等来选择合适的实现方式,有时也会将两种方式结合使用,以充分发挥它们的优势。
2025-02-10 10:22:38
989
原创 架构师-saga模式
Saga 模式是一种将长事务分解为一系列本地事务的设计模式,每个本地事务都可以独立提交或回滚,通过协调这些本地事务的执行顺序和结果,来保证整个分布式事务的最终一致性。
2025-02-10 10:03:31
1015
原创 分布式事务-tcc异常中的空回滚
因为是全局事务,A服务调用服务C的try时服务出现异常服务B因为网络或其他原因还没执行try方法,TCC因为C的try出现异常让所有的服务执行cancel方法,比如B的try是扣减积分 cancel是增加积分,还没扣减就增加显然是有问题的。空回滚是 TCC 分布式事务处理中需要重点关注和妥善处理的问题,它关系到分布式系统中数据的一致性和业务的正常运行。通过合理的设计和处理机制,可以有效应对空回滚带来的挑战,提高系统的稳定性和可靠性。
2025-02-08 11:18:51
484
原创 分布式事务-TCC异常之悬挂
在 TCC(Try - Confirm - Cancel)分布式事务模式中,悬挂是一种需要特别关注的异常情况,以下为你详细介绍 TCC 悬挂的相关内容。在 TCC 事务模式下,我们通过一个事务协调器来管理多个事务,每个事务先执行 try 方法。当所有事务参与者的 try 方法执行成功,就执行 confirm 方法完成真正逻辑的执行,一旦任意一个事务参与者出现异常,就通过 cancel 接口触发事务回滚,释放 Try 阶段占用的资源。
2025-02-08 11:18:36
739
原创 TCC模式原理
TCC模式与AT模式非常相似,每阶段都是独立事务,不同的是TCC通过人工编码来实现数据恢复。阶段一(Try): 检查余额是否充足,如果充足则冻结金额增加30元,可用余额扣除30。
2025-02-07 18:00:35
362
原创 架构师-幂等性的含义和作用
在分布式环境下,一个操作或方法如果被多次执行所产生的结果与执行一次的结果相同,那么就称这个操作或方法具有幂等性。也就是说,无论该操作被重复执行多少次,对系统状态的影响都只有一次操作的效果,不会因为多次执行而产生额外的副作用或导致数据不一致等问题。定义:接口的幂等性是指在接口调用时,无论对同一接口发起一次还是多次相同的请求,其产生的结果都应该是一致的,不会因为多次调用而产生不同的效果或副作用。这里的 “相同请求” 通常指请求的参数、请求方式以及请求所针对的资源等都完全相同。意义。
2025-02-07 09:39:22
823
原创 分布式tcc
TCC 即 Try-Confirm/CancelTCC 事务的处理流程与 2PC 两阶段提交类似,不过 2PC 通常都是在跨库的 DB 层面,而 TCC 本质上就是一个应用层面的 2PC,需要通过业务逻辑来实现。这种分布式事务的实现方式的优势在于,可以让应用自己定义数据库操作的粒度,使得降低锁冲突、提高吞吐量成为可能。,业务逻辑的每个分支都需要实现 try、confirm、cancel 三个操作。此外,其实现难度也比较大,需要按照网络状态、系统故障等不同的失败原因实现不同的回滚策略。
2025-02-06 18:34:20
1552
原创 数据库中分库分表的知识
水平分表是将一个表中的数据按照一定的规则(如哈希、范围等)分散存储到多个表中,而将表按照字段进行拆分是垂直分表的概念,所以选项 B 描述错误。选项 A,垂直分库就是按业务功能拆分数据库,比如电商系统中把用户、商品、订单库分开;选项 C,分库分表能分散数据和压力,从而提高并发处理能力;:某互联网电商企业业务发展迅速,其订单数据库单表数据量已经达到了 5 亿条记录,且每天新增订单记录约 10 万条,在业务高峰期数据库的并发查询和写入请求非常大,导致系统响应缓慢。:以下关于数据库分库分表的描述,错误的是( )
2025-02-05 09:37:27
965
原创 mongodb的使用场景
MongoDB 是一个开源的、面向文档的 NoSQL 数据库,具有高性能、高可扩展性和灵活的数据模型,以下从不同领域为你介绍其使用场景实例:
2025-02-05 09:16:58
1065
原创 mongodb与redis在使用场景上的不同
MongoDB 和 Redis 是两种不同类型的数据库,在使用场景上有明显的区别,以下从数据结构、读写性能、数据持久化、数据规模和复杂度等维度展开分析:
2025-02-03 09:07:22
544
原创 MongoDB语法
很多开发者首次接触数据库的概念或者说接触第一个数据库,通常是 关系型SQL 数据库,而现在,NoSQL 数据库后来居上,很多原 SQL 数据的使用者难免有转向 NoSQL 的需求。而作为 NoSQL 数据库的代表,MongoDB 在社区越来越流行,生产环境的使用也日益广泛。对于 从SQL学习NoSQL的开发人员来说,最难的一步其实是将原有的 SQL 的概念和知识直接复用过来,最大化的减小学习的成本。
2025-02-02 09:40:51
1051
原创 MongoDB的客户端工具 - nosqlbooster使用
今天给大家推荐一款MongoDB的客户端工具--nosqlbooster,这个工具还有个曾用名--mongobooster。nosqlbooster立志做“The Smartest IDE for MongoDB”。它支持 MongoDB v2.6-4.0所有版本,并且更新升级及时。它既有免费版,也有加强升级的付费版。nosqlbooster的官网地址为https://nosqlbooster.com。登入下载网址https://nosqlbooster.com/downloads。
2025-02-02 09:28:22
2150
原创 vmware虚拟机无法打开,如何解决“该虚拟机似乎正在使用中”问题,非正常关闭
今天在用VMware虚拟机的时候,发现打开虚拟机时提示“该虚拟机似乎正在使用中。如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消©”按钮以防损坏。配置文件: D:\vm\vm1.vmx。”这是由于虚拟机未正常关闭引起的,下面看看解决办法。2、我们首先点击“获取所有权(T)”按钮,会发现弹出一个窗口,显示“无法打开虚拟机:D:\vm\vm1.vmx获取该虚拟机的所有权失败。主机上的某个应用程序正在使用该虚拟机。配置文件: D:\vm\vm1.vmx。”等信息。
2025-02-01 15:09:46
1567
1
原创 mongodb与关系型数据库的对比
论述在一个大型电商系统中,MongoDB 与关系型数据库相比,在存储用户评论数据方面的优势和劣势,并说明如何进行两者的结合使用以达到更好的效果。
2025-02-01 14:44:28
992
原创 Redis一致性哈希算法和哈希槽区别
一致性哈希算法和哈希槽(Hash Slot)都是在分布式系统中用于数据分片和节点映射的技术,主要应用于像 Redis 集群这样需要将数据分散存储在多个节点的场景。一致性哈希是在哈希取余算法基础之上优化的,分布式缓存数据变动和映射问题,某个机器宕机了,分母数量改变了,自然取余数不对了。用于解决分布式缓存系统中的数据选择节点存储问题和数据选择节点读取问题以及在增删节点后减少数据缓存的消失范畴,防止雪崩的发生。
2025-01-31 15:58:59
1194
原创 redis集群切片
Redis 分片集群是一种将 Redis 数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性。在分片集群中,数据被分为多个片段,每个片段存储在不同的节点上,这些节点可以是。
2025-01-31 15:35:29
791
原创 redis list使用场景
Redis List(列表)是一种数据结构,它适用于多种业务场景。以下是一些常见的Redis List应用场景:消息队列:List可以用作一个先进先出(FIFO)的消息队列,用于在生产者和消费者之间传递消息。生产者将消息添加到列表的右侧,消费者从列表的左侧读取消息。时间线/动态:List可以用于存储用户的时间线或动态,例如社交网络中的用户动态、博客文章的时间线等。每个用户都有一个唯一的ID,可以将他们的动态添加到与他们ID相对应的列表中。
2025-01-30 09:51:15
900
原创 redis 列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
2025-01-30 09:36:29
618
原创 使用Redis中的Hash数据结构来实现购物车功能
既然不用关系型数据库,但就从非关系型数据库里面做选择了,很多的架构师会选择使用mongodb 存购物车的数据,这也完全可以,mongodb有非常丰富的查询API,性能也比传统关系型数据库要好,使用mongodb确实是个不错的选择。这样的设计在功能完全没问题,但在实际使用中,由于购物车的数据量太大,而且修改频繁,会导致数据库的压力增加,所以在正式项目开发中,一般不会直接使用关系型数据库来存储购物车信息。根据具体的需求,还可以根据用户登录状态、商品的详细信息,扩展购物车的功能,比如添加商品的价格、图片等信息。
2025-01-29 09:47:23
1044
原创 redis hash数据结构的用法
redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
2025-01-29 09:37:21
891
原创 Redis Set数据类型使用实例
Redis Set对外提供的功能与List类似,是一个列表的功能,特殊之处在于Set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,就可以选择Set。并且Set提供了判断某个成员是否在一个Set集合内的重要接口,这个也是List没有提供的。Redis的Set是String类型的无序集合,它底层是一个dict字典,hash表实现。
2025-01-28 08:04:10
927
原创 架构师-系统集成技术-数据集成 → 应用集成 → 业务流程集成 → 界面集成
考生需要深入理解各集成层次的概念、技术和应用场景,并能够结合实际案例进行分析和设计。包括分层架构、面向服务架构(SOA)、微服务架构等,这些架构模式通常与集成顺序密切相关。《系统架构设计师教程》(官方教材):第5章“系统集成技术”和第6章“企业架构设计”部分。包括数据集成、应用集成、业务流程集成和界面集成的概念、方法和技术。例如,通过企业服务总线(ESB)或消息队列实现应用集成。企业服务总线(ESB)、消息队列、API网关等技术。门户(Portal)技术、单点登录(SSO)等技术。
2025-01-27 11:30:57
71
原创 AI编程助手iflycode插件结合IDEA辅助编程
官网iFlyCode是一款强大的代码编辑器和集成开发环境,它为开发人员提供了丰富的功能和工具,以简化代码编写、调试和协作的过程。通过智能代码提示、语法高亮、集成调试器等特性,iFlyCode帮助开发人员更高效地编写高质量的代码,并加快软件开发周期。
2025-01-27 11:30:34
991
原创 AI编程助手腾讯云 AI 代码助手插件结合idea辅助编程
腾讯云AI代码助手是一款AI辅助编码工具,基于腾讯混元代码大模型,提供技术对话、代码补全、根据注释生成代码、代码诊断和优化等能力。为你生成优质代码,帮你解决技术难题,提升编码效率。腾讯云AI代码助手以插件形式安装在编辑器中,如VSCode或JetBrains系列IDE,支持多种编程语言和框架,如Python、JavaScript、Java等等。
2025-01-26 09:55:04
1309
原创 分布式锁原理 Redisson+ ZooKeeper
但是如果在Tomcat的内部,又有两个线程,但是他们的锁对象虽然写的和服务器A一样,但是锁对象却不是同一个,所以线程3和线程4可以实现互斥,但是却无法和线程1和线程2互斥。控制时序所有试图获取锁的客户端,都是被顺序执行,只是会有一个序号(zxid),我们会有一个节点,例如:/testLock,所有临时节点都在这个下面去创建,ZK的父节点(/testLock) 维持了一个序号,这个是ZK自带的属性,他保证了子节点创建的时序性,从而也形成了每个客户端的一个全局时序。获取到锁的线程:会执行业务逻辑。
2025-01-26 09:54:32
281
原创 Gemfire Geode redis区别
GemFire、Apache Geode 和 Redis 是三种不同的数据管理工具,它们之间的区别具体如下:
2025-01-25 09:18:39
1413
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人