自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (1)
  • 收藏
  • 关注

原创 微服务·数据一致-seata

Seata(Simple Extensible Autonomous Transaction Architecture)是一个开源的分布式事务解决方案,旨在帮助应用程序分布式事务管理的挑战。Seata提供了一套全面的工具和框架,可用于实现跨多个数据库和服务的一致性事务管理。本报告将深入探讨Seata的核心概念、架构、特性以及使用场景。

2023-09-11 15:40:22 759 1

原创 微服务·数据一致-事务与分布式事务

分布式事务是在分布式系统中维护数据一致性的方式。它扩展了ACID事务的概念,以跨越多个分布式服务、数据库和资源的范围来保证数据的一致性。

2023-09-11 10:59:49 695

原创 微服务·架构组件之网关- Spring Cloud Gateway

Spring Cloud Gateway 是 Spring 官方基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开发的网关,旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式,统一访问接口。Spring Cloud Gateway 作为 Spring Cloud 生态系中的网关,目标是替代 Netflix ZUUL,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。

2023-09-07 18:37:50 891

原创 微服务·架构组件之网关

微服务网关是构建微服务架构的关键组件,它提供了路由、负载均衡、安全性和监控等核心功能。不同的网关技术适用于不同的场景,开发者可以根据需求选择合适的技术来是想微服务的路由和管理。随着微服务架构的不断演进,微服务网关技术也在不断改进和扩展。未来可以期待更多关于容器化、服务网格、自动化配置都能方面的创新,以进一步提高微服务架构的效率和可维护性。

2023-09-06 15:56:20 1089

原创 微服务·架构组件之服务注册与发现-Nacos

Nacos是一个易用的,稳定的,实时的,大规模的服务注册与发现中心和配置中心

2023-09-04 19:32:10 2731

原创 微服务·架构组件之注册与发现

微服务架构在现代软件开发中越来越受欢迎,它通过将系统拆分成多个小型、自治的服务来提高可维护性、可扩展性和灵活性。然而,随着服务数量的增加,服务之间的通信和发现变得更加复杂。本报告旨在深入探讨微服务架构中的服务注册与发现,介绍其背景、核心概念、实现技术以及应用案例。

2023-08-30 14:27:37 716

原创 SpringCloud OpenFeign

Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。Feign是Spring Cloud组件中一个轻量级RESTful的HTTP服务客户端,Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务。OpenFeign是Spring Cloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等等。

2023-06-12 10:36:27 2729 1

原创 Spring Cloud Netflix之OpenFeign

本章主要记录了open-feign的使用,并对OpenFeign的原理及源码进行了详细分析

2022-11-09 11:55:44 981 1

原创 Docker

Docker从入门到实战

2022-09-29 15:53:08 721

原创 Redis分布式锁的超卖问题

redis分布式锁造成的事故public SeckillActivityRequestVo seckillHandler(SeckillActivityRequestVo request){ //定义返回对象 SeckillActivityRequestVo response; //redis的key String key = "key" + request.getSeckillId; try{ //获取分布式锁 Boolean lockFlag

2022-02-10 10:25:56 1421

原创 分布式架构基础(三)手写简易版RPC

手写简易版RPCRPC框架设计图常用的RPC框架WebServiceDubboThriftGrpcSocket 实现RPC通信使用socket实现RPC通信的核心:暴露服务、建立连接,序列化与反序列化,动态代理服务端:/*** API 接口**/public instance IOrderService { String queryOrderList(); String queryOrderById(String id);}/***API RpcReques

2021-03-10 15:05:45 145

原创 分布式架构基础(二)序列化与反序列化

序列化与反序列化序列化序列化:将对象转化成特定的形态,然后以数据流的形式进行传输。序列化格式:XML、Json序列化过程:Object -> Json -> 传输(json字符串转化的数据流)序列化目的:减少对象的大小,实现对象的跨平台,跨语言传输反序列化反序列化过程:数据流 -> Json -> Object序列化Demo服务端:public static void main (String[] args) { ServiceSocket serviceS

2021-03-09 15:48:00 165

原创 分布式架构基础(一)远程通信协议

远程通信协议一个http请求的整个流程负责域名解析的DNS服务首先,用户访问一个域名,会经过DNS解析。DNS(Domain Name System),和HTTP协议一样是位于应用层的协议,主要提供域名到IP的解析服务。加速静态内容速度的CDNCDN(Content Delivery Network)表示的是内容分发网络。是一种网络缓存技术,能够把一些相对稳定的资源放到距离最终用户较近的地方。一方面可以节省整个广域网的带宽消耗,另一方面可以提升用户的访问速度,改进用户体验。HTTP协议通信原理

2021-03-09 14:45:55 358

原创 SpringCloud组件之Gateway

SpringCloud组件之Gateway网关的概述API网关是一个服务器,是系统对外的唯一入口。网关的作用:授权、日志、限流SpringCloud Gateway的使用implementation 'org.springframework.cloud:spring-cloud-starter-gateway'application.yml spring: cloud: gateway: routes: - id: mes_routh predica

2020-10-29 11:43:56 450 1

原创 高性能Web容器之Nginx

高性能Web容器之NginxNginx与Apache、Tomcat一样都是HTTP服务器,它们的本质仍然是一个应用程序,放在服务端,通过绑定ip:port监听一个端口去接受客户端的HTTP请求。按照动/静态服务器划分,Nginx和Apache属于静态服务器,Tomcat与jetty属于动态服务器。Nginx配置详nginx.config配置文件主要有main、event、http等模块构成,我们详细讲述一下关于http的配置虚拟主机的配置虚拟主机的配置有三种:基于ip的虚拟主机、基于port的虚拟

2020-10-27 10:57:07 239

原创 互联网架构(二)互联网架构下的核心技术

互联网架构下的核心技术高可用设计架构可用性单点故障集群(负载均衡技术)硬件负载:F5、Netscalar软件负载:apache、nginx、lvs、HaproxyF5的高可用通过standBy建立心跳线,如果主服务挂掉,通过心跳线启用备用的服务。Nginx通过lvs+keepalived 实现一主多从的机构来保证高可用。热备同时启动多台相同服务,提供服务的只用一台。zookeeper / redis-sentiel / etcdZab(Paxos)Raft(etcd/nac

2020-10-09 17:53:45 546 1

原创 互联网架构(一)总体架构设计

总体架构设计架构的基本手段就是分与合,先把系统打散,然后再重新组合。分的过程是把系统拆分为各个子系统/模块/组件。拆的时候首先要解决每个组件的定位问题,然后才能划分彼此的边界,实现合理的拆分。合就是根据最新终要求,把各个分离的组件邮寄的整合在一起。拆分的结构使开发人人员能够做到业务聚焦、技术聚焦、实现开发敏捷,合的结果使系统变得柔软,可以因需而变,实现业务敏捷。架构的分类架构一般可分为业务架构、应用架构、技术架构业务架构:从概念层面帮助开发人员更好的理解系统、比如业务流程、业务模块、输入输出

2020-10-09 15:14:27 9308 1

原创 MySQL原理及优化(三)MySQL事务与锁详解

MySQL事务与锁详解什么是数据库的事务事务的定义事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。注意:第一,事务是数据库的最小工作单元,是不可再分的。第二,它可能包含一个或者一系列的DML语句。事务的四大特性原子性(Atomicity)不可再分,意味着对数据库的操作要么成功,要么失败。失败的时候要进行回滚。原子性,在InnoDB里面是通过undo log来实现的,它记录了数据修改之前的值(逻辑日志),一旦发生议程,就可以用undo log来实现回滚操作。一致

2020-09-28 10:39:13 206

原创 MySQL原理及优化(二)MySQL索引深入剖析

MySQL索引深入剖析什么是索引索引的定义数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中的数据。索引的类型普通索引(Normal):也叫非唯一索引,是最普通的索引,没有任何限制。唯一索引(Unique):唯一索引要求键值不能重复。另外需要注意的是,主键索引是一种特使的唯一索引,它还多了一个限制条件,要求键值不能为空。全文索引(FullText):针对比较大的数据,比如存放的是消息内容。如果要解决查询like查询效率低的问题,可以创建全文索引。只有文本类型的字

2020-09-24 17:53:24 301

原创 MySQL原理及优化(一)MySQL架构与执行流程

MySQL架构与执行流程MySQL体系结构总结MySQL的内部模块:架构分层一条查询SQL语句是如何执行的1. 连接2. 缓存3. 解析器4. 预处理器5. 查询优化器、查询执行计划6. 存储引擎MyISAMInnoDB7. 执行引擎,返回结果一条更新SQL语句是如何执行的1. 缓冲池2. InnoDB内存结构与磁盘结构内存结构Buffer PoolChange Buffer 写缓存Adaptive Hash Index(redo)Log Buffer磁盘结构1. 系统表空间(system tablespa

2020-09-24 11:31:25 279

原创 微服务之Spring Boot(三)Spring Boot的核心特性之Starter添加依赖

Spring Boot的核心特性之Starter添加依赖

2020-09-16 11:47:13 568

原创 微服务之Spring Boot(二)Spring Boot的核心特性之自动装配

Spring Boot的核心特性与设计思想自动装配自动装配bean的装载过程:xmlconfigurationenable<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>2.3.1.RELEASE</version> &

2020-09-15 16:33:30 159

原创 微服务之Spring Boot(一)Spring Boot的前世今生

Spring Boot的前世今生Spring的特点使用SpringMVC构建一个Web项目什么是Spring BootSpring Boot的特性Spring注解的发展过程Spring 1.xSpring 2.xSpring3.xSpring的特点Spring的核心模块有:核心容器(Spring Core)、应用上下文(Spring Context)、面向切面编程(Spring AOP) JDBC和DAO模块(Spring DAO)、对象实体映射(Spring ORM)、WEB、MVC。除了以上和核心

2020-09-14 22:25:35 401

原创 分布式与高并发(二)并发编程带来的挑战

并发编程带来的挑战1. 一个问题引发的思考2. count++3. 锁(Synchronized)锁的使用锁的作用范围4. 锁的存储打印类的布局通过打印加锁类查看对象头5. 锁的升级(1)偏向锁(2)轻量级锁(3)重量级锁总结6. 线程的通信1. 一个问题引发的思考2. count++3. 锁(Synchronized)锁的使用锁的作用范围4. 锁的存储打印类的布局通过打印加锁类查看对象头5. 锁的升级(1)偏向锁(2)轻量级锁(3)重量级锁总结6. 线程的通信...

2020-09-01 15:46:41 398

原创 分布式与高并发(一)了解多线程的意义和使用

了解多线程的意义和使用1. 什么是线程并发与高并发影响服务器吞吐量的因素硬件软件线程数量如何提升服务端的并发数量并发和并行多线程的特点多线程使用情景2. 线程的基础线程的生命周期3. 线程的启动4. 线程的终止5. interrupt()的使用什么是线程如果并发与并行线程的实际使用Java中使用多线程ThreadRunnableCallable/future多线程的应用实战多线程的基础此案成的启动与停止线程的生命周期线程之间的通信1. 什么是线程并发与高并发客户

2020-08-31 18:04:03 527

原创 MyBatis(三)MyBatis插件原理与自定义插件

MyBatis插件原理与自定义插件插件1. 插件的使用运行自定义的插件,需要三步,我们以PageHandler为例:插件编写实现Interceptor接口实现响应的方法。最关键的是intercep()方法里面的拦截的逻辑,需要增强的功能代码写在这里。在拦截器上加上注解。注解签名指定了需要拦截的对象,拦截的方法,参数(因为方法友不同的重载,所以要指定具体的参数)@Intercepts({ @Signature(type = StatementHandler.class, method =

2020-08-28 09:22:56 598

原创 MyBatis(二)MyBatis体系结构与工作原理

MyBatis体系结构与工作原理工作流程分析MyBatis的主要工作流程解析配置文件首先在MyBatis启动的时候我们要去解析配置文件,包括全局配置文件和映射器配置文件,这里包含了我们怎样控制MyBatis的行为,和我们要对数据库下达的指令,也就是SQL信息。我们会把它们解析成一个configuration对象。提供操作接口接下来就是我们操作数据库的接口,它在应用程序和数据库中间,代表我们跟数据库之间的一次连接,这个就是SqlSession对象。我们获得一个会话(SqlSession),

2020-08-26 17:17:59 246

原创 MyBatis(一)Mybatis应用分析与最佳实践

Mybatis应用分析与最佳实践1. 为什么使用MybatisJDBC连接数据库需要五步:首先在pom.xml中引入MySQL驱动的依赖第一步:Class.forName注册驱动第二步:获取一个Connection对象第三步:创建一个Statement对象第四步:execute()方法执行SQL。返回一个ResultSet结果集第五步:通过ResultSet获取数据,给POJO的属性赋值最后关闭数据库相关的资源,包括ResultSet,Statement,Connection。Class

2020-08-25 14:27:41 485

原创 Java设计模式(二十五)访问者模式

访问者模式定义是一种将数据结构与数据操作分离的设计模式。是指封装一些作用于某些数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。属于行为型模式。访问者模式的基本思想是针对系统中拥有固定类型的对象结构(元素),在其内提供一个accept()方法用来接受访问者的访问,不同的访问者对同一元素的访问内容不同,使得相同的元素集合可以产生不同功能的数据结果。accept()方法可以接收不同的访问者对象,然后在内部将自己(元素)转发到接收到的访问者对象的visit()方法内。访问

2020-07-30 14:03:06 169

原创 Java设计模式(二十四)观察者模式

观察者模式定义又叫发布-订阅模式、模型-视图模式、源-监听器模式或从属者模式。定义一种一对多的依赖关系,一个主题对象可被多个观察者同时监听,使得每当主题对象的状态变化时,所有依赖于它的对象都回得到同事并自动更新。属于行为型模式观察者模式的核心是将观察者与被观察者解耦,以类似于消息/广播发送的机制联动两者,使被观察者的变动能通知到感兴趣的观察者们,从而做出相应的响应。适用情景在软件系统中,当系统一方行为依赖于另一方行为的变动时,可以适用观察者模式松耦合联动双发,使得一方的变动可以通知到感兴趣的另一方

2020-07-30 10:44:35 157

原创 Java设计模式(二十三)解释器模式

解释器模式解释器模式是指给定一门语言,定义它的文法的一种表示。并定义一个解释器,该解释器使用该表示来解释语言中的句子。是一种按照语法(文法)进行解析的模式,属于行为型模式。适用情景一些重复出现的问题可以用一种简单的语言来进行表达;一个简单语法需要解释的场景。角色抽象表达式(Expression):负责定义一个解释方法interpret,交由具体子类进行具体解释。终结符表达式(TerminalExpression):非终极符表达式(NonterminalExpression):上下文

2020-07-30 09:36:37 126

原创 Java设计模式(二十二)中介者模式

中介者模式定义又称为调节者模式或调停者模式。用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。属于行为型模式。中介者模式包装了一系列对象相互作用的方式。使得这些对象不必相互明显作用。从而使它们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。其核心思想是通过中介这结构系统各层次对象的直接耦合,层次对象的对外依赖通信统统交给中介者转发。适用情景系统中对象之间存在

2020-07-29 18:04:43 133

原创 Java设计模式(二十一)备忘录模式

备忘录模式定义又称快照模式或令牌模式,是指在不破坏封装的前提下,不好一个对象的内部状态,并在对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态,属于行为模式。在软件系统中,备忘录模式可以为我们提供一种“后悔药”的机制,它通过存储系统各个历史状态的快照,使得我们可以在任一时刻将系统回滚到某一个历史状态。适用情景需要保存历史快照的场景希望在对象之外保存状态,且除了自己其他类对象无法访问状态保存具体内容。角色发起人(Originator):负责创建一个备忘录,记录自身需要保存的

2020-07-29 17:17:11 137

原创 Java设计模式(二十)状态模式

状态模式定义也成为状态机模式,是允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类,属于行为型模式。状态模式中类的行为友状态决定,不同的状态下有不同的行为。其意图是让一个对象在其内部改变的时候,其行为也随之改变。状态模式的核心是状态与行为绑定,不同的状态对应不同的行为。适用情景状态模式主要解决的是当控制一个对象状态的条件表达式过去复杂时的情况。通过把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。对象的行为依赖于它的状态(属性),并且会根据它的状态改变二改

2020-07-29 16:34:22 308

原创 Java设计模式(十九)命令模式

命令模式定义命令模式是对命令的封装,每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接受的一方收到请求并执行操作。命令模式解耦了请求放和接收方,请求方只需要请求执行命令,不用关心命令是怎样被接受,怎样操作,以及是否被执行等,属于行为模式。适用情景当系统的某项操作剧本命名语义时,且命令实现不稳定,那么可以通过命令模式解耦请求与实现,利用抽闲命令接口使请求方代码架构稳定,封装接受方具体命令实现细节。接收方与抽闲命令接口呈现弱耦合,具备良好的扩展性。现实语义中具备“命令”的操作;请求调用

2020-07-29 15:38:02 90

原创 Java设计模式(十八)迭代器模式

迭代器模式定义又称为游标模式,它提供一种顺序访问集合、容器对象元素的方法,而又无需暴露集合内部表示。迭代器模式可以为不同的容器提供一致的遍历行为,而不用关系容器内部元素组成结构,属于行为型模式。适用场景我们把多个对象聚在一起形成的总体称之为集合,集合对象是能够包容一组对象的容器对象。不同的集合其内部元素的聚合结构可能不同,而迭代器模式屏蔽了内部元素获取细节,为外部提供一致的元素访问行为,解耦了元素迭代与集合对象之间的耦合,并且通过提供不同的迭代器,可以为同个集合提供不同顺序的元素访问行为,扩展了集

2020-07-29 14:57:53 91

原创 Java设计模式(十七)责任链模式

责任链模式定义是将链中每一个结点看做是一个对象,每一个结点处理的请求均不同,且内部自动维护一个下一结点对象。当一个请求从链式的首端发出时,会沿着链的路径一次传递给每一个结点对象,直至有对象处理这个请求为止。属于行为型模式。适用情景责任链只要解耦了请求和处理,客户只需将请求发送到链上即可,无需关心请求的具体内容和处理细节,请求会自动进行传递直至友结点对象进行处理。多个对象可以处理同一个请求,但具体由哪一个对象处理则在运行时动态决定。在不明确指定接收者的情况下,向多个对象中的一个提交一个请求;可

2020-07-29 14:14:09 183

原创 Java设计模式(十六)策略模式

策略模式定义也叫政策模式,它是将定义的算法家族,分别封装起来,让他们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户。属于行为型模式。策略模式使用就是面向对象的继承和多态机制,从而实现同一行为在不同场景下具备不同的实现。适用情景针对同一类型问题,友多种处理方式,每一种都能独立解决的问题;算法需要自由切换的场景;需要屏蔽算法规则的 场景。角色上下文角色(Context):用力啊操作策略的上下稳环境,屏蔽高层模块对策略,算法的直接访问,封装可能存在变化。抽象策略角色(Start

2020-07-28 15:44:11 112

原创 Java设计模式(十五)模板方法模式

模板方法模式定义是指定义一个操作中的算法框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,属于行为型模式。模板方法模式实际上是封装了一个固定流程,该流程由几个步骤组成,具体步骤可以由子类进行不同实现,从而让固定的流程产生不停的结构。它非常简单,其实就是类的继承机制,但它缺是一个应用非常广泛的模式。模板方法模式的本质就是抽象封装流程,具体进行实现。适用情景当完成一个操作具有固定的流程,由抽象流程步骤,具体步骤交给子类进行具体实现(固定的流程,不同的实现)

2020-07-28 14:09:25 132

原创 Java设计模式(十四)委派模式

委派模式定义又叫委托模式,是一种面型对象的设计模式,允许对象组合实现与继承相同的代码重用。它的基本作用就是负责任务的调用和分配任务,是一种特殊的静态代理,可以理解我全权代理,但是代码模式注重过程,而委派模式注重结果。属于行为型模式。角色抽象任务角色(Task):定义一个接口,它有若干实现类。委派角色(Delegate):负责在各个具体角色实例之间做出决策,屏判断调用具体实现的方法。具体任务角色(Concrete)真正执行任务的角色应用实例BOSS给Leader下达任务,leader会根据

2020-07-28 10:39:17 197

BOM系统操作说明

BOM系统操作说明 为使用和维护BOM系统的人员、部门以及其他相关人员提供一份合格的参考资料,让相关人员、部门能够快捷、准确的了解、使用BOM系统

2018-11-30

空空如也

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

TA关注的人

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