自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis实现分布式锁,再领个看门狗

>因为redis集群在CAP理论中属于AP,所以如果是非常严格的分布式锁场景。redis并不是非常适合。任务执行时间无法预估的情况下,expireTime参数传-1。则会使用看门狗,直到任务释放锁。redis锁工具:...

2022-04-28 09:32:24 1429

原创 spring cloud gateway+nacos 服务下线感知延迟,未及时出现503,请求依然转发到下线服务

spring cloud gateway服务下线感知延迟,出现503场景描述场景描述注册中心使用的nacos,客户端版本1.4.1。gateway版本3.0.1。nacos服务下线(包含手动点下线和服务正常停机)gateway在短暂几秒内还回继续将流量转发到已下线的服务上导致500。过几秒之后恢复正常,响应码变成503。表面上看,应该是gateway服务没有及时发现服务的下线。.....................

2022-04-27 16:52:53 7510 20

原创 redis实现令牌桶的正确姿势

redis实现令牌桶的正确姿势最近需要自己做一个限流功能,其他业务代码都好说。唯一的终点就是限流实现,想到redis可以实现令牌桶。一拍脑门,就用它了!真实开发中才发现想的太简单,如果是基于redis提供的命令在代码中调用的话,效率是小事。原子性根本无法保证!如下:线程1 获取到令牌桶获取总数为10线程1 消耗1个令牌,剩余9个令牌线程2 获取到令牌桶获取总数为10线程1 刷新令牌为9个线程2 消耗1个令牌,剩余9个令牌线程2 刷新令牌为9个原子性完全无法保证。加锁? 那多节点岂不

2022-04-26 15:53:02 5901 21

原创 使用undertow,服务停止后nacos下线注销延迟问题

使用undertow,服务停止后nacos下线注销延迟问题1.场景描述2.解决方案2.1web服务器切换为tomcat2.2做一个自己的注销补偿2.3使用nacos内置注销(推荐)1.场景描述不太清楚是版本问题还是哪里配置。只是记录一下这次的问题。nacos客户端:1.4.1web服务器:undertow 版本 2.2.3.Final服务停止后,nacos管理端查看服务未及时注销。web服务器切换为tomcat,服务下线正常注销。大概原因是因为nacos执行注销时需要的一个bean已经被先行销

2022-04-25 13:36:33 5687

原创 spring boot 排除自动装配的类(隐式,无代码入侵适用于工具包的开发)

spring boot 排除自动装配的类(隐式)1.自动装配简述2.如何排除自动装配功能2.1启动类注解设置需要排除的自动装配类2.2在配置文件中指定需要排除的类3.问题描述和寻找方案4.解决方案1.自动装配简述spring boot中一个重要功能就是自动装配。简单来说就是:在我们开发的项目中,引入相关功能的jar包。spring boot会将其功能自动注入进来,不需要额外的配置。当然,这是因为配置提供了很多比较公用的缺省值。举例spring boot项目中加入如下依赖,即可使项目接入本地启动的redi

2022-04-25 10:54:48 2440 10

原创 nacos、apollo等配置中心,自定义覆盖配置

中的解决方案,最终结果都是覆盖配置。

2024-03-02 16:02:44 346

原创 使用java构建树形结构的多种实现工具类

属性节点和工具类构成,个人比较喜欢用的是最后一个celerityBuild,n*2即可快速构建出树。比较通用的一套树形结构构建工具类。

2023-11-20 15:33:00 412

原创 使用java进行图片覆盖合成,增加文字并解决emoji不显示问题

使用java实现图片上增加图片和文字等操作。- 使用思路是在一张底图上进行图片覆盖和增加文字- 图片方面实现坐标、尺寸修改、圆角等功能。为了解决性能问题增加了图片缓存。同时使用弱引用解决OOM。保证了效率和安全性- 文字方面实现坐标、字体、颜色、居中等功能。解决了emoji表情符显示异常的问题,实现和前端类似的文字过长隐藏为“...”- 对于可能会扩展的功能点,带有TODO进行备注

2023-04-13 15:29:09 477

原创 spring boot中使用jackson,自定义实现序列化和反序列化

这里很简单,就俩序列化:针对某一数据类型的序列化实现接口JsonSerializer反序列化:针对某一数据类型的反序列化实现接口JsonDeserializer这里用时间类型举例吧,换其他类型也同理/**// 这里是自己的系列化逻辑 String format = DateTimeFormatter . ofPattern("序列化三侃时间:yyyy-MM-dd HH:mm:ss") . format(date);

2023-02-23 18:22:10 2641

原创 【高性能MySQL】学习笔记第五章:创建高性能的索引

对每一行数据,存储引擎都会对其相应的值计算一个哈希码。哈希索引将所有哈希码存在索引中,同时哈希表中保存指向每个数据行的指针。要理解 MySOL中索引是如何工作的,最简单的方法就是去看看一本书的“索引”部分:如果想在一本书中找到某个特定主题,一般会先看书的“索引”,找到对应的页码。叶子结点包含指向下一个叶子结点的指针,所以整个数据也是一个链表,可以支持范围查询。都用过的字典举例,拼音查字、部首查字这些用到的就行拼音和部首的索引。上述例子是单列索引,多列索引则是增加了根据多个列的数据排序。

2023-02-08 18:32:24 141

原创 图解TreeMap是如何使用红黑树的

红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求后面继续分析一下TreeMap中是如何运用红黑树的表面看起来很简单:存了一个5:5的键值对,后面分析看一下具体做了什么。第一步初始化:只构造了一个TreeMap对象,comparator 赋值为空。这时候整棵树没有任何元素。第二步存入5:5这里顺便看一下Entry中包含什么当前节点的键值信息,还有左右子节点以及父节点。默认颜色为黑色,所以刚才的根节点不需要染色操作

2022-12-07 16:37:39 373

原创 nacos注册中添加自定义元数据,可动态

nacos客户端版本:1.4nacos注册时可以自定义一些元数据来标记当前节点的特有信息。最近做了一个灰度的功能便是基于这个东西做的,顺便找了几个配置方式。

2022-11-16 11:07:57 6291

原创 【高性能MySQL】学习笔记第四章:Schema与数据类型优化

例如:VARCHAR(10)的列需要11个字节的存储空间,VARCHAR(1000)则需要100字节2。因为需要2字节记录长度。VARCHAR类型可以理解为时间换空间的一种优化,适用中会产生磁盘碎片化、更长的处理时间等。适用场景:字符串列的最大长度比平均长度大很多;列的更新很小。char是定长的,以空格填充。因为是定长的所以不容易产生碎片,对于非常短的列,CHAR在空间上也更有效率,例如CHAR(1)存储只有Y和N的值,而VARCHAR(1)需要占用额外的1个字节。

2022-09-20 17:57:13 276

原创 记录一次nacos集群模式下注册失败

注册地址使用nacos.xxx.com,服务启动时控制台出现异常:Caused by: com.alibaba.nacos.api.exception.NacosException: failed to req API:/api//nacos/v1/ns/instance after all servers([nacos.xxx.com]) tried: java.net.SocketTimeoutException: connect timed out

2022-09-14 18:31:19 859

原创 【高性能MySQL】学习笔记第一章:架构与历史

1 MySQL逻辑架构1.1 优化与执行2 并发控制2.1 读写锁2.2 颗粒度表锁行级锁3 事务3.1 隔离级别4 多版本并发控制(MVCC)5 MySQL的存储引擎5.1 InnoDB存储引擎5.2 MyISAM存储引擎

2022-08-23 14:20:12 236

原创 java基于内存实现的令牌桶限流工具类

由于redis实现令牌桶需要每次都访问redis,所以做了一个内存的工具类,实现逻辑和redis的一样。首先考虑缓存实现,需要满足每个令牌桶不同的过期时间。hutool工具包中有相关的工具,所以不用造轮子了。缺点:1 没有任何持久化,重启后信息全部丢失。2 多节点流量不可控或者说不精准。优点:1 不依赖其他中间件。2 数据都存放在本机内存,没有外部交互性能更高。基于内存实现的限流工具类,适用于可以容忍单节点限流的场景。...

2022-08-09 17:50:21 1307

原创 使用spring中的Binder绑定参数

只有最基本的功能肯定是无法在正常开发中使用的,不过强大的spring提供了非常丰富的功能。输出文本:除了这种使用开源工具自带的还可以自己实现转换的逻辑。主要包含俩种接口类GenericConverter:实际进行判断和执行转换的类ConversionService:提供类型转换完整服务,包括判断是否可以转换和实际进行转换的入口。可以理解为封装了GenericConverter的功能 GenericConversionService...

2022-07-14 09:36:09 2114

原创 dubbo获取本服务提供的生产者,消费者等信息

需求场景描述:dubbo服务启动时需要将当前应用提供的dubbo服务上报出去。所以需要一个获取所有当前服务中所有dubbo服务的功能。所以现在大概两步走就行了翻看dubbo代码时发现一个类,包含所需要的信息。ServiceRepository 这个类主要的三个属性2.2 发送上报上报功能没什么可写的。这里就记录一下的运行时间点,我这用的是监听DubboBootstrapStartedEvent事件,在监听实践中使用2.1的代码获取所有信息。...

2022-07-08 10:29:50 1822

原创 自定义注解中使用SpEL表达式,动态获取方法参数或执行方法

获取变量的功能,比较常见的用法是spring中缓存注解的功能。可以动态获取方法中参数的值。如下:1.2 执行方法这个例子用过spring security的或者类似的授权框架的可能比较熟悉。如下这里其实就是通过表达式去执行某个类的hasRole方法,参数为’ROLE_ADMIN’,然后获得返回值再进行后续操作。表达式不仅支持获取属性和执行方法,还支持各种运算符操作,能查到很多其他大神写的。这里就不写了写demo之前先简单介绍一下执行表达式时比较重要的几个类最后获得的value就是传入的值,这个dem

2022-06-23 14:34:13 12244 1

原创 java中awt的常用操作

java中awt的常用使用 1 文本操作 1.1 渲染文本 1.2 获取文本渲染之后的长度 2 图片操作 2.1 渲染图片 2.2 图片处理为圆角

2022-06-02 16:58:00 212

原创 nacos 自定义服务变化订阅

这里参考的是InstancesChangeNotifier这个类。....正常项目中用到的其他服务都会自动订阅,如果想额外手动增加订阅的话,最简单的方式可以手动获取一下即可。

2022-05-19 09:43:37 1843

原创 发红包和抢红包的后端时序图(预先分配红包)

发红包功能和抢红包功能,代码写的比较烂。就不贴了,就简单画个时序图记录一下思路吧。1.数据模型:1.1红包记录:字段备注红包id字面意思红包总额字面意思红包个数记录分成了几个剩余红包个数剩余数初始=红包个数1.2 红包明细记录:字段备注红包明细id字面意思红包id这条明细归属的红包id金额记录这个明细是多少钱归属人获得红包的人,初始是空2.时序图2.1发红包#mermaid-svg-nwR.

2022-05-17 16:15:53 395

原创 参考发红包的数值均匀分配算法+可设置最小值

最近有个需求是需要发红包的,正常如果是正常是最小值0.01,那么直接参考网上贴出来的微信红包算法即可。但是这个需求需要设置一个最小值。 private BigDecimal ONE_HUNDRED = BigDecimal.valueOf(100); private BigDecimal DEF_MIN = BigDecimal.valueOf(0.01); /** * 微信-均匀分配,最小值为0.01 *@Author dong *@Date .

2022-05-11 19:11:11 390

原创 spring cloud gateway如何正确获取请求体和响应体

spring cloud gateway如何正确获取请求体关于gateway如何获取请求体最近尝试了几种办法,虽然能获取到body,但是中途也遇到了一些问题。例如netty的内存溢出这种。虽然最后都解决了,但是还是想尝试更好的方案。终于在官方提供的包中发现了更好的。首先定义一个全局的过滤器来缓存起来body、import lombok.extern.slf4j.Slf4j;import org.springframework.cloud.gateway.filter.GatewayFilter;

2022-05-06 11:25:26 2258 5

原创 关于spring cloud gateway中 netty线程池的一点小优化

关于spring cloud gateway中 netty线程池的一点小优化最近测试同学对系统进行压测。报出一个问题:几乎所有接口的成绩都不太好。甚至一些仅仅是主键查询,并且数据量不大的接口也是如此。排查过程中:跳过gateway网关,直接通过目标服务器ip进行压测发现成绩提升明显。初步判断是网关问题。网上翻阅资料发现一个优化点,就是netty本身的线程池配置。先看一下源码package reactor.netty.resources;import io.netty.channel.Ch

2022-04-29 10:38:29 5278 2

原创 spring cloud gateway 自定义负载均衡过滤器

总体思路:重写一个ReactiveLoadBalancerClientFilter的子类替换容器的ReactiveLoadBalancerClientFilter。

2022-04-28 14:02:19 2485 4

空空如也

空空如也

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

TA关注的人

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