自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 GateWay网关 和 Nacos 实现灰度发布解决方案

到此不仅完成了灰度发布的解决方案,而且也兼容了Nacos同集群优先调用和权重选择策略,实现多个灰度实例按权重获取。

2024-04-09 19:23:15 857

原创 MySQL查询某些字段相同的重复数据

子句筛选出重复数据,即出现次数大于 1 的数据。查询结果将会包含重复的。要根据两个字段查询 MySQL 中的重复数据,可以使用。这个查询将会返回所有包含重复。组合以及它们的重复次数。

2024-03-28 10:48:41 261 1

原创 Netty优化

这样可以显著减少连接建立的延迟,特别是对于网络延迟较高的情况下,可以加速连接建立过程。当服务器正在处理连接请求的时候,新来的连接请求会被放到等待队列backlog中,直到服务器有空闲的资源去处理这些连接请求,当等待连接队列已满时,新的连接请求会被拒绝,抛出AnnotatedConnectException。SO_KEEPALIVE是TCP层面的,主要用于检测连接是否断开,心跳机制是应用层面的,通常用于检测连接的健康状态,例如检测连接是否超时、是否收到了预期的数据等,这两种机制构成了TCP长连接。

2024-03-04 17:32:51 790 2

原创 Netty中Channel发送缓冲的读写状态切换引发的思考

当写入数据到Channel的发送缓冲区时,如果此时缓冲区已满或者剩余空间大于高水位标记,状态为不可写,直到有数据发送出去才会变为可写,Netty也提供了channelWritabilityChanged事件,它会在Channel的可写状态发生变化时触发,通常用来在发送大量数据时暂停写入,避免缓冲区溢出。当发送缓冲区的大小超过高水位线时,Netty 会停止读取数据,直到缓冲区大小降到低水位线以下才会继续读取数据,这样可以避免发送缓冲区溢出。的构造方法需要传入两个参数,分别是发送缓冲区的高水位线和低水位线。

2024-03-01 17:26:11 322

原创 Netty客户端自动重连和服务端异步关闭

【代码】Netty客户端自动重连。

2024-03-01 17:06:25 132

原创 使用MyBatisPlus、递归方式组装字典树形结构

递归组装字典树

2024-02-05 14:10:06 306 1

原创 MyBatisPlus批量插入优化

到此已经实现了批量插入的优化,但是为了防止条目过多,超出SQL限制,又在Service层做了限制,增加了递归处理。

2024-02-02 16:09:32 216 1

原创 对于操作系统“零拷贝”的一些理解

传统的数据传输方式涉及到两次数据拷贝,即从应用程序的缓冲区拷贝到内核缓冲区,然后再从内核缓冲区拷贝到目标缓冲区。“目标缓冲区”指的是数据将要被传输到的位置,可以是文件、网络连接或其他设备,在数据传输的最终阶段,数据从内核缓冲区传输到目标缓冲区的过程中可能会涉及到多次拷贝,但如果使用零拷贝技术,目标缓冲区和内核缓冲区就可以共享相同的内存,避免实际的数据拷贝。当应用程序进行 IO 操作时,对于输出操作,数据会首先从程序的缓冲区读取写入到内核缓冲区,对于输入操作,或者从内核缓冲区读取写入到程序的缓冲区。

2024-01-31 10:35:30 118

原创 SpringBoot使用@ConfigurationProperties和@PostConstruct注解优雅读取yaml配置

的方法在构造函数调用后立即执行,将属性值设置给了静态变量,这样可以在应用程序的任何地方直接访问这些属性,非常优雅。将属性类作为组件托管到 Spring 容器中,可以在应用程序中直接注入Bean并通过GET方法获取这些属性;

2023-12-06 17:32:14 155 1

原创 Nacos同集群优先调用和基于权重的负载均衡策略

同一服务的多个实例可能分布在不同的集群中。在负载均衡调用时,需要减少跨集群的网络延迟和资源开销,提高服务之间的通信效率。还要考虑到不同的服务实例可能具有不同的性能和资源配置,有些实例可能更强大,可以处理更多的请求,而有些可能资源有限。在负载均衡过程中,具有较高权重的实例将获得更多的请求,而具有较低权重的实例将获得较少的请求。这样做的目的是减少跨集群的网络延迟和资源开销,提高服务之间的通信效率。应该通过筛选出属于相同集群的服务实例,然后再进行负载均衡选择,以确保首选选择来自同一集群的实例。

2023-10-30 10:39:25 522 1

原创 NFS挂载文件夹

2049(TCP/UDP):NFS主服务端口2049(TCP/UDP):NFS主服务端口(TCP/UDP):动态RPC分配端口(对于NFSv2和NFSv3)使用防火墙管理工具(ufw)来打开这些端口# 打开NFS相关的端口​# 启用防火墙重启NFS服务器命令。

2023-10-19 19:51:33 75 1

原创 Netty服务端(采集服务)发送消息(指令)到客户端(设备、上位机)

后续服务端向客户端发送消息时,先从此Map中找到对应的客户端Channel,再向Channel中写入消息发送至客户端。log.info("有新的连接:[{}]", ctx.channel().id().asLongText());log.info("{}设备已下线", ctx.channel().id().asLongText());新建一个服务端发送消息的业务类,并通过客户端id在map中获取到channel通道,将消息转化成JSON后,通过。// TODO 对于消息发送失败的处理。

2023-10-11 14:23:22 1993 3

原创 Kafka知识整理

Kafka-Zk架构的元数据存储在zookeeper中,运行时动态选举controller,由controller进行Kafka集群的管理。Kafka-Kraft架构上移除了zk的依赖,用三台controller节点代替zk集群,元数据保存在 controller 中,由 controller 直接进行 Kafka 集群管理。/** 返回信息对应的分区* @param topic 主题* @param key 消息的 key。

2023-09-26 16:32:56 199 1

原创 Redis热key

Redis cluster是由master和slave节点组成的,对某个key的读写都是根据key的hash计算出对应slot(位置),根据这个slot找到对应的分片来操作kv,比如电商的秒杀、采集服务查询在线的设备等等,可能会发生大量的请求访问同一个key,所有的请求都会到同一个server上,它的负载会很高,这个时候增加redis实例也没用,因为根据hash算法还是会到一个server,这成为了瓶颈,如果这个热点key的value比较大的话,也会造成网卡达到瓶颈,这就是“热点key”问题。

2023-09-22 09:08:48 41 1

原创 计算指定坐标周围XX公里的算法

实现原理是:先算出该点周围的矩形的四个点,然后使用经纬度去直接匹配数据库中的记录。

2023-09-21 13:41:44 96

原创 限制外网对公司内部服务的访问策略

例如,我们可以将不同的服务解析为二级域名,例如gitlab.gongsi.com、jenkins.gongsi.com等,并使用Nginx将传入的请求分发到各个服务。然后,在Nginx中,我们可以限制只允许特定IP地址访问这些内部服务,例如公司内部和同事家里的IP地址。为了灵活性,我们可能会允许一个较大的IP地址范围,而不是限制到具体的IP地址。最终,我们会将公网IP的访问禁止掉,这也是默认的安全组策略。尽管公司的IP地址不是固定的,但经过一周左右的观察,我们发现了三个固定的IP地址网段。

2023-09-21 13:23:13 158

原创 线程池使用心得

线程池核心参数配置,机器选型的个人心得

2023-09-21 11:21:06 37

原创 自定义注解+AOP实现多线程事务管理

自定义注解+AOP实现多线程事务管理,并发情况下有效

2023-09-20 15:36:50 135

原创 Canal客户端自动重连

实现了SpringBoot整合Canal的自动重连机制

2023-09-20 15:27:36 204

原创 Stream处理业务数据复杂排序

最近有个考勤记录排序的需求实现,要求排序规则为:缺勤、全勤、半勤,相同类型数据以上下班时间倒序排序,单纯使用SQL无法实现或者实现很复杂,查询相关资料使用Stream解决。

2023-09-20 15:02:58 237

空空如也

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

TA关注的人

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