自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Eureka整合seata分布式事务

在微服务的大环境下,服务按照业务维度拆分之后会遇到事务不一致问题,Seata的开源填补了两阶段提交这种模式,并且无业务代码的侵入,这里采用eureka集群整合Seata。

2024-01-18 21:57:42 1330

原创 RocketMQ

RocketMQ是一个开源的分布式消息中间件,最初由阿里巴巴集团开发。它的设计目标是为了在高并发、高吞吐量的场景下,实现可靠的消息传输,并且具有良好的可伸缩性和可扩展性。一、RocketMQ概述。RocketMQ 特点。

2024-01-18 19:12:04 419

原创 Gateway网关限流

类别特点缺点计数器算法1.结构简单-计数器;2.临界问题;出现临界问题漏斗算法1.固定速率处理请求;2.保护服务;无法处理突发流量令牌桶算法1.固定速率生产令牌;2.设置容量大小;3.处理突发流量;容量设置不合理,可能压垮服务配置中key-resolver: “#{@ipKeyResolver}”,其中ipKeyResolver对应的是下面方法的名称/*** 定义KeyResolver的bean对象/*** 基于url。

2024-01-18 18:13:58 2277

原创 sentinel熔断与限流

分布式系统的流量防卫兵sentinel官网地址添加链接描述sentinel - github地址添加链接描述。

2024-01-13 20:49:00 1639

原创 Nacos

Nacos官网添加链接描述Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

2024-01-11 21:26:14 758

原创 Spring Cloud Alibaba

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服 务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba ,您只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接 入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。SpringCloudAlibaba - 官网添加链接描述。

2024-01-11 20:30:29 974 2

原创 Gateway网关

Cloud全家桶中有个很重要的组件就是网关,在1.x版本中都是采用的Zuul网关但是在2.x版本中,zuul的升级一直在跳票,SpringCloud最后自己研发了一个网关替代Zuul,那就是SpringCloudGateway一句话:gateway是原zuul 1.x版的替代Gateway是在Spring生态系统之上构建的API网关服务,基于Spring5,SpringBoot2和Project Reactor等技术。

2024-01-10 23:14:47 875

原创 Spring cloud聚合父工程project

Doc。

2024-01-10 01:19:43 465

原创 Spring Cloud 介绍

Spring Cloud是分布式微服务的一站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶@[toc]

2024-01-10 01:09:39 404

原创 Hystrix断路器

Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。断路器本身是一种开关装置,当某个服务单元发生故障后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期·可处理的备选响应(Fallback),而不是长时间的的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间,不必要的占用,从而避免了故障在分布式系统中蔓延,乃至雪崩Hystrix主要通过以下几点实现延迟和容错。

2024-01-10 00:31:56 432

原创 OpenFeign服务调用

OpenFeign服务调用

2024-01-08 23:33:58 667

原创 服务发现Discovery

Discovery服务发现

2024-01-08 17:38:59 546

原创 Ribbon负载均衡

当正常负载下,业务对于响应时间没有太高的要求,但是对成功率要求很高的系统,比如我曾经历过的报文系统,他对响应时间并没有太高的要求,但要求报文发送一定要成功,这种可以采用重试策略(RetryRule)当正常负载下,就是接口本身处理业务的时间会因参数的变化而有较大的波动的接口,可以采用基于服务响应时间的负载均衡策略(WeightedResponseTimeRule)IPing机制是一种主动机制,他能主动判断当前服务器节点的状态,并决定该节点是否可作为目标节点,只用可用的节点才会作为负载均衡的目标节点。

2024-01-08 17:14:10 1357

原创 Eureka服务注册与发现

Eureka服务注册与发现

2024-01-08 01:10:46 955

原创 Devtools热部署

Devtools热部署

2024-01-08 00:34:49 368

原创 Java设计模式之策略模式

Java设计模式之策略模式

2023-03-25 20:48:19 1526 1

原创 Redis分布式锁各版本源码分析

redis分布式锁

2022-11-29 11:02:44 622

原创 springboot项目启动数据加载内存中

springboot项目启动数据加载内存中

2022-11-04 11:23:24 293

原创 sharding-jdbc实现分库分表

Springboot整合分库分表

2022-09-20 16:10:39 1201

原创 springboot集成UidGenerator

springboot集成UidGenerator集成UidGenerator第一步拉去开源项目,打成jar包第二步导包第三步创建数据库表结构第四步配置数据库信息以及mapper扫描第五步配置Bean注入配置文件第六步编写生成工具类第七步测试集成UidGenerator废话不多说,直接开始使用的技术有项目总体结构项目使用的pom信息我放到文章最后了我在集成id的时候主要分为几个步骤(本人小白,写的不好敬请谅解啊😂)...

2022-08-02 16:44:45 1861 2

原创 分布式任务调度平台XXL-JOB

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。

2022-06-22 16:42:14 334

原创 java线程池案例

简介线程Thread是一个重量级资源,线程的创建、启动以及销毁都是比较耗费系统资源的,同时受限于系统资源的限制,线程的数量与系统性能是一种抛物线的关系,因此对线程的管理,是一种非常好的程序设计习惯,自JDK1.5起,utils包提供了ExecutorService[ɪɡˈzɛkjətɚ]线程池的实现。通俗的将:为了避免重复的创建线程,线程池的出现可以让线程进行复用。当有工作来,就会向线程池拿一个线程,当工作完成后,并不是直接关闭线程,而是将这个线程归还给线程池供其他任务使用。一个线程池包括以下四个基

2022-03-03 17:22:16 14278

原创 AOP日志记录

大家好,今天给大家带来一篇基于AOP实现的操作日志记录的解决的方案。大家可能会说,切,操作日志记录这么简单的东西,老生常谈了。不!网上的操作日志一般就是记录操作人,操作的描述,ip等。好一点的增加了修改的数据和执行时间。那么!我这篇有什么不同呢!今天这种不仅可以记录上方所说的一切,还增加多表记录了操作前的数据思路介绍:由于操作日志用注解方式的AOP记录操作日志比较便捷,所以想到了在注解中定义操作前查询数据详情的bean,查询方法及参数,参数类型,在aop进行方法执行前,对指定的bean,方法

2022-02-09 14:08:11 337

原创 DateUtil工具类

import org.apache.commons.lang3.time.DateFormatUtils;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.time.Instant;import java.time.LocalDate;import java.time.LocalDateTime;import java.time..

2022-01-20 15:30:49 532

原创 正则表达式校验工具类

正则表达式在线生成工具正则表达式在线生成工具 - 正则表达式工具 - 脚本之家在线工具import java.util.regex.Pattern;/** * 账户相关属性验证工具 * */public class RegularUtils{ /** * 正则表达式:验证用户名 */ public static final String REGEX_USERNAME = "^[a-zA-Z]\\w{5,20}$"; /**

2022-01-11 11:03:42 580

原创 spring boot动态切换数据源

1、添加maven依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/x

2022-01-06 15:40:53 2238 1

原创 获取服务器ip地址

1、tomcat是一款免费的开源Web服务器,如果部署在本地,那么对应的那么为localhost,对应地址为127.0.0.1。 例子:可以通过http://localhost:8080/项目root值访问,也可以通过http://127.0.0.1/项目root值访问。 如果部署在服务器(linux)系统类,则需要通过服务器的Ip地址进行访问。2、下面说说怎么获取Ip地址:获取本地的Ip地址:public static void main(String[] ...

2022-01-04 11:27:14 3382

原创 Java多线程-生产者消费者例子-使用队列实现

生产者/** * Producer Thread will keep producing values for Consumer * to consumer. It will use wait() method when Queue is full * and use notify() method to send notification to Consumer * Thread. * * @author WINDOWS 8 */class Producer extends Thre

2021-12-23 15:56:34 827

原创 File工具类

import java.io.*;import java.util.ArrayList;import java.util.List;public class FileUtils { private FileUtils() { } /** * @Desc 查询当前路径下的所有文件夹(不包含子文件夹) * @Param */ public static ArrayList<String> Dir(File dirFil..

2021-12-21 15:13:02 335

原创 SpringBoot文件上传与下载

SpringBoot后台如何实现文件上传下载?最近做的一个项目涉及到文件上传与下载。前端上传采用百度webUploader插件。有关该插件的使用方法还在研究中,日后整理再记录。本文主要介绍SpringBoot后台对文件上传与下载的处理。MultipartConfig配置import org.springframework.boot.web.servlet.MultipartConfigFactory;import org.springframework.context.annotation

2021-12-16 16:28:06 442

原创 SpringBoot实现断点续传

大文件面临的问题 1. 上传速度慢 -- 应对: 分块上传2. 上传文件到一半中断后,继续上传却只能重头开始上传 -- 应对: 断点续传3. 相同文件未修改再次上传, 却只能重头开始上传 -- 应对: 秒传分片上传1、什么分片上传分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块(我们称之为Part)来进行分别上传,上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文件2、分片上传适用场景...

2021-12-15 15:35:55 7223 1

原创 可动态调节参数的线程池实现

背景线程池是一种基于池化思想管理线程的工具,使用线程池可以减少创建销毁线程的开销,避免线程过多导致系统资源耗尽。在高并发的任务处理场景,线程池的使用是必不可少的。在双11主图价格表达项目中为了提升处理性能,很多地方使用到了线程池。随着线程池的使用,逐渐发现一个问题,线程池的参数如何设置?线程池参数中有三个比较关键的参数,分别是corePoolSize(核心线程数)、maximumPoolSize(最大线程数)、workQueueSzie(工作队列大小)。根据任务的类型可以区分为IO密集型和CPU密集

2021-12-14 17:17:07 545

原创 Java8使用Lambda表达式案例

一、Lambda 表达式简介1、什么是 Lambda 表达式 Lambda 表达式是在 JDK 8 中引入的一个新特性,可用于取代大部分的匿名内部类。使用 Lambda 表达式可以完成用少量的代码实现复杂的功能,极大的简化代码代码量和代码结构。同时,JDK 中也增加了大量的内置函数式接口供我们使用,使得在使用 Lambda 表达式时更加简单、高效。为什么需要 Lambda 表达式 谈起为什么需要 Lambda 表达式,那得从函数式编程开始说起。函数式编程可以简单说是一种...

2021-12-09 15:02:00 862

原创 Java8使用Lambda表达式

1.lambda表达式Java8最值得学习的特性就是Lambda表达式和Stream API,如果有python或者javascript的语言基础,对理解Lambda表达式有很大帮助,因为Java正在将自己变的更高(Sha)级(Gua),更人性化。--------可以这么说lambda表达式其实就是实现SAM接口的语法糖。lambda写的好可以极大的减少代码冗余,同时可读性也好过冗长的内部类,匿名类。import lombok.Data;import org.junit.Test;i

2021-12-09 10:22:12 691

原创 CountDownLatch使用

public void threadPool(CopyOnWriteArrayList<UserInfo> userInfoList, CountDownLatch latch) { //cpu核心 int cpuNum = Runtime.getRuntime().availableProcessors(); ExecutorService executor = new ThreadPoolExecutor(4, 4, 1, Time...

2021-12-06 17:17:33 743

原创 使用BlockingQueue实现的生产者和消费者

学习java线程的时候,看到生产者与消费者例子下面是模拟生产商和顾客1.定义生产工厂import com.example.recordlog.bean.UserInfo;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.concurrent.*;import java.util.concurrent.locks.Condition;import

2021-12-06 16:50:46 504

原创 Java并发编程之深入理解线程池原理及实现

Java线程池在实际的应用开发中十分广泛。虽然Java1.5之后在JUC包中提供了内置线程池可以拿来就用,但是这之前仍有许多老的应用和系统是需要程序员自己开发的。因此,基于线程池的需求背景、技术要求了解线程池原理和实现,一方面可以更为深刻理解Java多线程开发,有助于解决业务系统中因为线程问题所产生的bug;另一方面也有利于对遗留代码的重构。线程池原理所谓的线程池,跟JDBC连接池、代理池等一样,属于一种“池”的设计模式。在设计好的数据结构中存放一定数量的线程,并且根据任务需要自动调整线程数量的多少

2021-12-02 17:21:31 219

原创 线程池拒绝策略

在学习CallerRunsPolicy拒绝策略的时候,搜索了很多相关的知识,其他博主的描述是这样的:在学习CallerRunsPolicy拒绝策略的时候,搜索了很多相关的知识,其他博主的描述是这样的:第1种:第2种:第3种:举个例子如下图所示,主线程就是平时执行main方法中代码的线程。再通过一个例子详细说明:public class HanderPolicy { public static void main(String[] args) { ...

2021-12-02 16:29:18 4766

原创 Java线程池中的各个参数如何合理设置

一、前言在开发过程中,好多场景要用到线程池。每次都是自己根据业务场景来设置线程池中的各个参数。这两天又有需求碰到了,索性总结一下方便以后再遇到可以直接看着用。虽说根据业务场景来设置各个参数的值,但有些万变不离其宗,掌握它的原理对如何用好线程池起了至关重要的作用。二、ThreadPoolExecutor的重要参数我们先来看下ThreadPoolExecutor的带的那些重要参数的构造器。public ThreadPoolExecutor(int corePoolSize,

2021-12-02 16:21:29 2813

原创 为什么阿里巴巴不允许使用Executors创建线程池

线程池:业务代码常见的问题在程序中,我们会使用各种池优化缓存创建昂贵的对象,比如线程池、连接池、内存池。一般是预先创建一些对象放入池中,使用的时候直接取出使用,用完归还以便复用,还会通过一定策略调整池中缓存的对象数量,实现动态伸缩。由于线程的创建比较昂贵,随意、没有控制地创建大量线程会造成性能问题,因此短平快的任务一般优先考虑使用线程池来处理,而不是直接创建线程1. 线程池的声明需要手动进行Java 中的 Executors 类定义了一些快捷的工具方法,来帮助我们快速创建线程池。《

2021-12-01 18:49:08 427

空空如也

空空如也

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

TA关注的人

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