- 博客(781)
- 资源 (2)
- 收藏
- 关注

原创 SpringCloud Alibaba微服务实战三十三- Spring Cloud Alibaba 全家桶
Spring Cloud for Alibaba,它是由一些阿里巴巴的开源组件和云产品组成的。这个项目的目的是为了让大家所熟知的 Spring 框架,其优秀的设计模式和抽象理念,以给使用阿里巴巴产品的 Java 开发者带来使用 Spring Boot 和 Spring Cloud 的更多便利。...
2021-05-29 06:41:24
3905
原创 hutool 文件操作相关的类
Hutool 里的文件相关工具:IOUtil :操作流的FileUtil :操作文件的FileTypeUtil: 被包含在FileUtil里了FileReader,FileWriter:这两个基本上都在FileUtil里用了WatchMonitor: 用来监控文件变化,可以看看自己c盘,平时文件都有什么变化。ClassPathResource 是class 路径下资源的获取。
2025-03-04 15:06:12
785
原创 RocketMq的group,topic和tag
Topic是生产者在发送消息和消费者在拉取消息的类别。Topic与生产者和消费者之间的关系非常松散。具体来说,一个Topic可能有0个,一个或多个生产者 向它发送消息;相反,一个生产者可以发送不同类型Topic的消息。类似的,消费者组可以订阅一个或多个主题,只要该组的实例保持其订阅一致即可。Topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。一个生产者可以同时发送多种Topic的消息;
2025-02-26 14:54:54
847
原创 rocketmq topic详解
消息业务是否关联:如果业务没有直接关联,比如,淘宝交易消息和盒马物流消息没有业务交集,需要使用不同的消息主题;topic在rocketmq的设计思想里,是作为同一个业务逻辑消息的组织形式,它仅仅是一个逻辑上的概念,而在一个topic下又包含若干个逻辑队列,即消息队列,消息内容实际是存放在队列中,而队列又存储在broker中。消息量级是否一样:数量级不同或时效性不同的业务消息建议使用不同的主题,例如某些业务消息量很小但是时效性要求很强,如果跟某些万亿级消息量的业务使用同一个主题,会增加消息的等待时长。
2025-02-26 13:46:02
528
原创 RocketMQ的下载与安装
该命令在 Windows 系统上启动 RocketMQ Broker,同时连接到本地 NameServer(127.0.0.1:9876),并允许 Broker 自动创建主题(Topic)。变量值:MQ解压路径\MQ文件夹名(bin目录的上一级即可)在bin目录下执行cmd命令呼出命令框,执行。变量名:ROCKETMQ_HOME。首先启动NameServer。启动完成后 浏览器打开。
2025-02-26 09:22:22
395
原创 Iterator和Iterable的区别
Iterator和Iterable是Java编程语言中两个非常重要的接口,都是用于遍历集合类数据结构的。它们虽然有着很多相似的地方,但在实现细节和代码便捷性方面有所不同。在实际应用中,我们需要根据具体的业务场景来选择使用哪个接口。如果需要进行单向遍历、修改等操作,可以选择使用Iterator接口;如果需要进行双向遍历、只读操作等操作,则可以选择使用Iterable接口。无论哪个接口,都可以通过Java提供的语法糖来简化代码,使得集合遍历更加便捷、可读、易维护。
2024-03-08 17:26:06
1376
原创 Hutool中 常用的工具类和方法
日期时间工具类 DateUtil日期时间对象-DateTime类型转换工具类 Convert字符串工具类 StrUtil数字处理工具类 NumberUtilJavaBean的工具类 BeanUtil集合操作的工具类 CollUtilMap操作工具类 MapUtil数组工具-ArrayUtil唯一ID工具-IdUtilIO工具类-IoUtil加密解密工具类 SecureUtil验证码工具类 CaptchaUtil分页工具-PageUtilJava反射工具类 ReflectUtil
2023-08-04 13:57:23
909
原创 详解多线程与Spring事务
大多数情况下,把事务的启动、提交或者回滚全部交给Spring框架操作非常便捷,但有一种场景,如果有一个大批量数据需要操作,为提高处理效率,通常对数据进行分组,多线程处理,这个注解对事务就不起作用了。在实际项目中,在排查单线程、数据库等细节问题后,接口速度依旧很慢,于是决定使用多线程进行优化,同时使用到多线程事务,多线程进行任务拆分能提高效率,但需要考虑的因素也随之增多,如事务、线程安全性、实际提升效率等,因此应结合业务场景,优先考虑单线程优化,再考虑多线程优化。虽然不能通过事务内,发起多线程处理。
2023-04-03 11:32:10
1468
原创 AOP实现接口限流
前言限流方案Java限流及常用解决方案Guawa限流应用@Slf4j@RestController@RequestMapping("/limit")public class LimitController { /** * 限流策略 : 1秒钟2个请求 */ private final RateLimiter limiter = RateLimiter.create(2.0); private DateTimeFormatter dtf = Date
2022-05-26 10:14:22
927
1
原创 Springboot 统一异常处理 Assert @ControllerAdvice
前言上一篇SpringBoot 参数检验Assert使用了解了SpringBoot 参数检验Assert的使用,我们是不是可以自定义Assert,来实现自定义异常呢?用 Assert(断言) 替换 throw exceptionAssert.notNull(user, “用户不存在.”); 代替throw new IllegalArgumentException(“用户不存在.”);IResponseEnum/** * @author liu * @date 2022年05月25日 11:1
2022-05-25 15:06:09
913
原创 springboot整合redisson实战(二)Redisson分布式锁的使用
redisson锁说明Redisson是基于Netty实现的,是更高性能的第三方库。实现了可重入锁(Reentrant Lock)、公平锁(Fair Lock、联锁(MultiLock)、 红锁(RedLock)、 读写锁(ReadWriteLock)等。应用lockpackage com.andon.springbootdistributedlock.util;import lombok.extern.slf4j.Slf4j;import org.redisson.Redisson;imp
2022-05-24 17:02:03
1979
原创 springboot整合redisson实战(一)整合 redisson-spring-boot-starter
文章目录前言引入redisson依赖redisson-spring-data与Spring Boot version的版本对应关系maven依赖配置文件redisson.yml多节点配置使用 RedissonClient前言SpringBoot整合Redisson有个比较好用的starter包就是redisson-spring-boot-starter,这也是官方比较推荐的配置方式引入redisson依赖只需引入redisson-spring-boot-starter就可以了,不过这里需要注意spr
2022-05-24 11:24:52
15890
3
原创 java 字符串替换
文章目录字符串替换方法Java字符串替换指定位置的字符字符串替换方法在Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll()replace() 方法replace()方法用于将目标字符串中的指定字符(串)替换成新的字符(串)replace(String oldChar, String newChar)replaceFirst() 方法replaceFirst()方法用于将目标字符串中匹配某正则表达
2022-05-21 21:55:13
42268
1
原创 MySQL优化完美解决方案
文章目录优化mysql数据库总则数据库设计和表创建时就要考虑性能索引选择合适的数据类型选择合适的索引列sql的编写需要注意优化引擎分区分表分库云数据选择腾讯云DCDB开源解决方案优化mysql数据库总则数据库设计和表创建时就要考虑性能sql的编写需要注意优化分区分表分库数据库设计和表创建时就要考虑性能设计表时要注意:表字段避免null值出现,null值很难查询优化且占用额外的索引空间,推荐默认数字0代替null。尽量使用INT而非BIGINT,如果非负则加上UNSIGNED(
2022-05-21 21:34:35
387
原创 SpringBoot 自定义注解+AOP+Redis 实现分布式锁
前言分布式环境下多个不同线程需要对共享资源进行同步,那么用Java的锁机制就无法实现了,这个时候就必须借助分布式锁来解决分布式环境下共享资源的同步问题。aop 通过设置切面,当切面设置的目标类的方法被调用时,aop 框架会拦截此次调用,源码中 pointCut 类里有两个核心属性,即 ClassFilter 类过滤器与MethodMatcher 方法匹配器,aop基于其两个核心来进行拦截,拦截之后aop机制会通过jdk或cglib生成动态代理对象,调用增强类的增强方法进行功能织入。@AspectJ 是
2022-05-21 17:02:26
1182
1
原创 服务雪崩效应及如何应对
服务的雪崩在微服务之间进行服务调用是由于某一个服务故障,导致级联服务故障的现象,称为雪崩效应。雪崩效应描述的是提供方不可用,导致消费方不可用并将不可用逐渐放大的过程。 在分布式系统中,由于网络原因或自身的原因,服务一般无法保证 100% 可用。如果一个服务出现了问题,调用这个服务就会出现线程阻塞的情况,此时若有大量的请求涌入,就会出现多条线程阻塞等待,进而导致服务瘫痪。 由于服务与服务之间的依赖性,故障会传播,会对整个微服造成严重后果,这就是服务故障的 “雪崩效应” 。Service A的流量波动很大
2022-05-20 17:17:27
534
原创 SpringBoot 对Logback日志系统进行配置
文章目录为什么使用logback开始使用配置logback-spring.xml 三个单词:Logger, Appenders and Layouts(记录器、附加器、布局):元素元素元素ConsoleAppenderRollingFileAppender滚动策略元素元素根据profile的配置来指定日志输出的配置,可以在logback-spring.xml中用springProfile标签logback-xml配置文件还可以从spring环境(即application.properties)中动态获取值
2022-05-20 09:10:36
933
原创 MySQL case when ,if 函数用法
case when… then… else… end:CASE 字段 WHEN 预期值 THEN 结果1 ELSE 结果2 ENDscore 表:mysql> select * from score;+----+----------+------+------+-------+| id | name | sex | age | score |+----+----------+------+------+-------+| 1 | zhangsan | 1 | 19
2022-05-19 21:07:04
1753
原创 一款可视化的Redis管理工具-Another Redis DeskTop Manager
文章目录前言项目地址前言“ Another Redis DeskTop Manager 是 GitHub 上的一个开源项目,是 Redis 可视化管理的利器,提供在 Windows、MacOS 平台的安装包,体积小,完全免费。”提供了以可视化的方式管理 Redis 的功能,可供免费下载安装,也可以在此基础上进行二次开发,主要特点有:支持 Windows 平台和 MacOS 平台支持查询 Key、查看单个 Key、Redis 运行状态支持 String、List、Hash、Set、Zset 类型的
2022-05-19 20:56:16
1066
原创 Java8 对list集合中的bigdecimal进行分组求和,均值,最大值,最小值
新建接口ToBigDecimalFunction@FunctionalInterfacepublic interface ToBigDecimalFunction<T> { BigDecimal applyAsBigDecimal(T value);}新建工具类CollectorsUtilpublic class CollectorsUtil { static final Set<Collector.Characteristics> CH_NOID =
2022-05-19 20:49:33
14515
原创 restTemplate 发送get,post请求,占位符传参
restTemplate 发送get 不带参数 @Operation( summary= "保存数据", description = "保存数据") @GetMapping(value = "/addTasks1") public ReturnModel<Integer> addTasks1() throws IOException { String url = "http://127.0.0.1:8080/api/task/test";
2022-05-19 17:39:23
7615
原创 ENUM枚举类实战应用
应用场景前端页面查询条件为一个起止日期前端传到后台直接为 今日 本周 本月 本年等汉字,后端需要查询必须把这些汉字转化为日期范围。这种第一想到的是if(本周){}else if(本年){}等,这样写很难维护代码,下面用枚举类来实现下面用代码来实现。枚举类import cn.hutool.core.date.DateTime;import cn.hutool.core.date.DateUtil;import java.time.ZoneId;import java.util
2022-05-12 12:28:07
282
原创 idea中修改git提交代码的用户名和邮箱地址
打开C盘里的 .gitconfig文件再查看git用户名和邮箱地址命令:$ git config user.name$ git config user.email
2022-05-12 12:15:09
1695
原创 mybatis-plus QueryWrapper查询条件组装
文章目录前言in条件组装 比如sys_code in(",",'')le ge eq等 < > =前言条件查询首先使用QueryWrapper创建一个wrapper对象存放条件。例如: //创建一个QueryWrapper的对象 QueryWrapper<User> wrapper = new QueryWrapper<>(); //通过QueryWrapper设置条件 //ge gt le lt
2022-05-12 12:10:01
1886
原创 git分支实战操作
文章目录准备在本地创建仓库连接远程仓库将远程仓库的文件保存在本地将所有本地文件添加到本地仓库提交本地文件到仓库上传到远程仓库错 not a git repository (or any of the parent directories): .git至此一个master添加一个文件完成实际开发中我们不可能在master分支上进行开发创建本地分支基于本地master分支创建分支基于远程master分支创建分支(命令窗口进入工程根目录):创建远程分支本地新分支推送创建远程分支GitHub上创建远程分支创建的同名
2022-05-10 11:08:18
2344
原创 优雅的代替繁多的if/else(一)
前言系统都有角色的概念,不同用户分配不同的角色,每个角色访问的资源及权限不一样比如:系统管理员( ROLE_ROOT_ADMIN):有 A操作权限订单管理员( ROLE_ORDER_ADMIN):有 B操作权限普通用户( ROLE_NORMAL):有 C操作权限比如一个用户进来,我们需要根据不同用户的角色来判断其有哪些行为,这时候常见的代码出现了:public void opt(String roleName) { String result = ""; i
2022-05-10 08:50:58
266
原创 springboot 配置文件application.properties 中文乱码
修改IDEA编码但是这个配置⽂件⼏乎⽆法再使⽤记事本修改了。。。⽤记事本打开编辑时,发现内容被修改成了unicode编码,如果线上部署后,查找问题或者查找配置很难发现。将application.properties改为application.yml就是将application.properties的⽂件修改为application.yml的结构。...
2022-05-09 16:14:44
586
原创 多表查询 Mybatis Plus 自定义方法实现分页
一般办法一般物理分页,即通过sql语句分页,都是在sql语句后面添加limit分页语句,在xml文件里传入分页的参数,再多配置一条sql,用于查询总数: <select id="queryStudentsBySql" parameterType="map" resultMap="studentmapper"> select * from student limit #{currIndex} , #{pageSize} </select> &
2022-05-09 15:02:19
3869
3
原创 springboot集成webservice接口
引入jar <properties> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> <spring.boot.version>2.6.3</spring.boot.version> <spri
2022-05-06 17:25:40
798
原创 Hutool 常用工具类介绍-DateUtil
前言日期格式转化及计算,比较使我们最常用的功能,现就工具类用法归结如下字符串转日期DateUtil.parse 方法DateUtil.parse 方法会自动识别一些常用格式,包括:yyyy-MM-dd HH:mm:ssyyyy/MM/dd HH:mm:ssyyyy.MM.dd HH:mm:ssyyyy年MM月dd日 HH时mm分ss秒yyyy-MM-dd yyyy/MM/ddyyyy.MM.dd HH:mm:ssHH时mm分ss秒yyyy-MM-dd HH:mmyyyy-MM-d
2022-05-06 12:05:11
11975
sigar.rar库文件
2020-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人