自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis分布式锁—SETNX+Lua脚本实现

使用redis实现分布式锁,就是利用redis中的setnx,如果key不存在则进行set操作返回1,key已经存在则直接返回0。

2024-03-25 14:15:15 470

原创 kafka无法消费数据

2.查看要删除的节点 ls /brokers/topics 并用 deleteall /brokers/topics/__consumer_offsets 对其进行删除就可。原因:consumer与zookeeper集群中的leader无法建立连接,(我的情况是删除了之前的zk,现在又新加入了一个)。进入zookeeper客户端,将brokers节点下的topics节点下的__consumer_offsets删除就可。1.在启动zookeeper的前提下,打开./zkCli.sh。

2024-03-17 12:03:15 315

原创 freemarker

FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

2024-03-05 09:19:37 311

原创 java常用环境docker安装

访问:http://localhost:8848/nacos/ 即可进入管理界面。mysql配置较为繁琐,如果不需要开启binlog可以直接运行第一个。本文为精简安装,部分不带容器卷映射,仅供以学习使用。修改broker.conf。

2024-02-28 18:58:28 271

原创 ControllerAdvice+ExceptionHandler全局捕获异常

String msg;@ControllerAdvice注解是Spring3.2中新增的注解,学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理。ExceptionHandler选择需要捕获的异常,当出现异常时返回Result对象,统一了接口的返回形式。

2024-02-24 09:55:55 163

原创 knife4j springboot3使用

在日常开发中,写接口文档是我们必不可少的,而Knife4j就是一个接口文档工具,可以看作是Swagger的升级版,但是界面比Swagger更好看,功能更丰富。

2024-02-23 15:18:37 507

原创 windows nacos启动停止脚本

启动:将路径改为自己的nacos的bin目录。

2024-02-21 15:21:30 273

原创 tensorboard画图

导包后往里面放数据就行,第一个参数是名称,第二个是y坐标,第三个是x坐标,通过add_scalar进行参数的添加。结束后会生成scalar目录(log_dir所指),里面放了.event文件。还得安装TensorFlow。

2024-01-24 21:09:47 389

原创 docker network网络

采用 host 网络模式的 Docker Container,可以直接使用宿主机的 IP 地址与外界进行通信,若宿主机的 eth0 是一个公有 IP,那么容器也拥有这个公有 IP。Container 网络模式是 Docker 中一种较为特别的网络的模式。Container 网络模式即新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。host 网络模式可以让容器共享宿主机网络栈,这样的好处是外部主机与容器直接通信,但是容器的网络缺少隔离性。

2024-01-23 17:29:07 941

原创 seata分布式事务

Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。术语:TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。TM (Transaction Manager) - 事务管理器:定义全局事务的范围:开始全局事务、提交或回滚全局事务。

2024-01-23 11:01:34 830

原创 springcloud alibaba sentinel熔断降级

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。sentinel相当于hystrix的升级版,加入了web界面,能够实时在线的改变流量策略。核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。

2024-01-22 19:45:30 1031

原创 spring cloud alibaba nacos注册与配置中心

一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos就是注册中心+配置中心的组合 -> Nacos = Eureka+Config+Bus。

2024-01-15 21:40:37 386

原创 springcloud sleuth分布式请求链路跟踪

在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败.Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了zipkin。安装zipkin:docker run -d -p 9411:9411 openzipkin/zipkin。

2024-01-13 09:28:59 497

原创 springcloud stream消息驱动

官方定义Spring Cloud Stream是一个构建消息驱动微服务的框架。应用程序通过inputs或者 outputs 来与Spring Cloud Stream中binder对象交互。通过我们配置来binding(绑定),而Spring Cloud Stream 的binder对象负责与消息中间件交互。所以,我们只需要搞清楚如何与Spring Cloud Stream交互就可以方便使用消息驱动的方式。通过使用Spring Integration来连接消息代理中间件以实现消息事件驱动。

2024-01-11 20:24:39 446

原创 springcloud bus消息总线

Spring Cloud Bus 配合Spring Cloud Config 使用可以实现配置的动态刷新。Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能。Spring Clud Bus目前支持RabbitMQ和Kafka。Spring Cloud Bus能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以当作微服务间的通信通道。

2024-01-09 21:22:29 1666

原创 springcloud Config配置中心

服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml,上百个配置文件的管理.…SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。

2024-01-09 19:52:33 997

原创 Springcloud Gateway网关

SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。Spring Cloud Gateway的目标提供统一的路由方式且基于 Filter链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。过滤掉没有携带uname参数的请求。@Component@Slf4j@Override//需要携带uname参数log.info("用户名为空,非法");//放行@Override。

2024-01-08 20:23:47 869

原创 Hystrix熔断/断路器

Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。

2024-01-07 18:57:27 848

原创 openFeign服务调用

Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。一句话:定义微服务的接口,加入Feign相关注解就能实现微服务之间的调用。

2024-01-06 11:16:21 380

原创 Ribbon客户端负载均衡

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。ribbon就是@loadbalance注解+ RestTemplate通过http://[服务名]的调用。ribbon已经集成到Eureka中,无需另外引包。

2024-01-05 21:23:04 859

原创 Consul

Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp 公司用Go语言开发。提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。它具有很多优点。包括:基于raft协议,比较简洁;支持健康检查,同时支持HTTP和DNS协议支持跨数据中心的WAN集群提供图形界面跨平台,支持Linux、Mac、Windows。

2024-01-03 21:14:44 400

原创 微服务注册到Zookeeper注册中心

jar包:</</</启动类上面加入:@EnableDiscoveryClient注解application.yml文件:定义了服务的名称,以及zookeeper的地址。

2024-01-03 19:48:42 363

原创 Eureka服务注册与发现中心

Spring Cloud封装了Netflix 公司开发的Eureka模块来实现服务治理在传统的RPC远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

2024-01-02 19:07:31 1347

原创 springboot devtools实现热部署

将设置里面的两项打钩,其他的勾是默认存在的。高级设置里面的这个选项打钩。

2023-12-28 20:45:27 389

原创 mybatis使用useGeneratedKeys+keyProperty返回自增主键

在mybatis调用insert方法后,可以通过useGeneratedKeys+keyProperty属性获取自增主键。keyProperty:表明返回的主键名,在执行结束后相应的主键会被赋值,这里返回的主键为实体类中的主键id。useGeneratedKeys :一个bool变量,为true时,返回数据库自动生成的记录主键id。注意:返回的主键指在java程序中的形参,不会影响原先的sql执行结果,可以参考下面的代码。dao方法对应的xml。

2023-12-28 19:59:15 423

原创 maven中dependencyManagement标签

dependencyManagement正如其名,用于项目依赖的统一管理。在父项目中的pom.xml文件中加入dependencyManagement标签即可完成依赖版本的声明。在声明完成后,子项目(module)中引用相同的依赖时可以不指定version标签自动引入父项目的相同版本。如果子项目想要有自己的依赖版本,只需要加入version标签填入需要的版本号即可。注意:dependencyManagement标签只会进行版本声明,而不会实际下载依赖。

2023-12-28 15:07:52 638

原创 Dubbo

一款高性能Java RPC框架。特性:面向接口RPC调用、智能负载均衡、服务注册与发现、高度可扩展、灰度发布等。

2023-12-26 14:36:53 945

原创 Netty网络编程

Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。Netty是基于NIO开发的,体系图如下。

2023-12-19 08:51:32 924

原创 RabbitMQ消息队列

MQ(message queue),从字面意思上看就个 FIFO 先入先出的队列,只不过队列中存放的内容是 message 而已,它是一种具有接收数据、存储数据、发送数据等功能的技术服务。作用:流量削峰、应用解耦、异步处理。生产者将消息发送到消息队列中,消息队列负责转发消息给消费者,消费者在处理完消息后会对消息队列进行应答,消息队列收到应答信息会将相应的消息进行丢弃。批量应答会导致高并发时消息的丢失,所以尽力以channel.ack()进行手动应答。

2023-11-23 20:53:34 252

原创 责任链模式

使多个对象都有机会处理请求,从而将请求的接收者与发送者解耦。将对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。适用于:有多个对象可以处理一个请求,哪个对象处理该请求由运行时刻自动确定。优点:将请求和处理分开,实现解耦,提高系统灵活性。缺点:链较长时,会影响系统性能。调试较为复杂。

2023-11-07 11:07:54 372

原创 策略模式(Stragedy)

策略模式将策略(方法)与实体类相分离,使用聚合/组合替代继承。思想:少用耦合性高的继承,尽量用聚合/组合来代替。优点:将策略独立于实体类,策略的实现更加灵活,易于理解扩展,切换。可以避免多if else的情况。缺点:每一个策略会对应于一个策略类,会导致类的数目增多。

2023-11-07 10:37:54 365

原创 状态模式(state)

当一个对象有很多种状态且不同的状态有不同的行为的时候可以使用。状态模式由状态类以及环境类(context)组成。状态类抽象类规定的该状态的功能操作,如支付流程中的有未付款、已付款两个状态,未付款状态能够进行商品的选购、付款功能,已付款状态能够进行退出功能。具体状态的功能由子类根据实际情况来实现。实现技巧:状态类接口可以由抽象类来做空实现,函数体直接抛出异常,交由具体子类来实现。环境类作为上下文,标识当前的状态,每次状态的改变需要改变环境类存储的状态信息。优点:可读性高、方便维护且符合开闭原则。

2023-11-06 19:52:38 450

原创 中介模式(Mediator)

当各个模块的调用变得错综复杂时,可以使用中介模式,用一个中介对象完成对象交互,各个对象不需要显示的相互引用。创建一个中介对象完成所有的调用:Mediator->A ,Mediator->B,Mediator->C,Mediator->D),而不是A->B->C->D。优点:能够将网状结构的调用分离成星型结构,降低了类与类之间的耦合。缺点:中介者可能会过于复杂,影响整个系统。

2023-11-06 17:05:43 90

原创 访问者模式

双分派:我的理解是两次多态操作,动态获取对象。意图:主要将数据结构与数据操作分离。

2023-11-05 11:34:25 171

原创 代理模式(静态代理、JDK代理、CGLIB代理)

代理模式有三种不同的形式:静态代理、动态代理(JDK代理、接口代理)、CGLIB代理目标:在不修改目标对象的前提下,对目标对象进行扩展。

2023-11-04 19:18:16 286

原创 装饰者模式

装饰者模式:不改变原有类的对象 , 动态地将额外的功能附加到该对象上;主要适用于为一个组件进行功能扩展,并且能够动态的移除扩展。如BufferInputStream类可以装饰FileInputStream,也可以直接用FileInputStream类。

2023-11-03 09:29:55 52

原创 桥接模式birdge

桥接模式:将抽象与实现相分离,使他们可以独立变化。

2023-11-02 20:38:27 87

原创 建造者模式

建造者模式:将 一个复杂对象的构建过程与其表示分离 , 使得同样的构建过程 , 可以创建不同的表示;用户只需要指定需要建造的类型就可以得到该类型对应的产品实例 , 不关心建造过程细节;

2023-11-02 17:40:44 63

原创 原型(Prototype)模式

原型模式是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。目的:通过复制一个已有实例可以提高新实例的创建效率,减少构造函数的调用次数。缺点:需要对每一个类加入clone函数,违背了ocp原则。

2023-11-02 16:47:45 45

原创 简单工厂模式、工厂方法模式、抽象工厂模式

将实例化代码提取出来,放到一个类中统一管理和维护,达到和主项目依赖关系的解耦,从而提高项目的扩展性和维护性。工厂模式将复杂的对象创建工作隐藏起来,而仅仅暴露出一个接口供客户使用,具体的创建工作由工厂管理而对用户封装,将对象的创建和使用分离开来,降低耦合度,便于管理,能够很好的支持变化。例如:有多种披萨实现类,有多个披萨店类,每个商店都需要依赖多种披萨。

2023-11-02 11:09:34 500

空空如也

空空如也

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

TA关注的人

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