自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ElasticSearch优化

这样,即使其中两个节点完全离线,集群仍然可以正常工作。由于 Lucene 段合并的计算量庞大,会消耗大量的 I/O,而 ES 默认让后台定期进行段合并,这可以应对绝大多数场景,如果有特殊情况需要调整,比如对于写密集型的应用,你可能希望减少段合并的频率,以减少写操作的延迟;​ 由于特殊原因导致的节点瞬时中断的问题,默认情况下,集群会等待一分钟来查看节点是否会重新加入,如果等待期间重新加入,会保持其现有的分片数据,不会触发新的分片分配,这样就可以减少 ES 在自动再平衡可用分片时所带来的极大开销。

2024-07-24 15:35:54 1094 1

原创 Java计算污染物扩散影响范围

高斯烟羽模型的特点是不需要显式地使用污染源的具体经纬度坐标来计算下风向某点的污染物浓度,因为模型的计算框架是基于相对坐标系的。这意味着无论污染源的真实地理位置在哪里,模型关注的是污染物扩散的方向和距离,即下风向的距离、横向和垂直方向的偏离。高斯烟羽模型的基本假设之一是风向是已知的,并且在计算中将风向设定为x轴的方向。这样一来,模型只需要知道污染物释放点的高度(z方向的源高),以及污染物扩散点相对于释放点的下风向距离(x轴方向的距离)、横向距离(y轴方向的距离)和垂直距离(z轴方向的距离)。

2024-07-18 16:11:32 417

原创 JavaCV + Netty实现推流直播复用、录播回放

JavaCV 是一个开源的计算机视觉和多媒体处理库,它为Java开发者提供了访问一系列底层C/C++库的能力,而无需直接编写C/C++代码。JavaCV通过JNI(Java Native Interface)和JavaCPP项目实现这一目标,使得Java应用程序能够高效地调用这些库的功能。它提供了一套统一的API,让开发者能够在Java中轻松地执行图像和视频的处理任务,如图像识别、人脸识别、字符识别、视频流媒体处理等。

2024-07-03 17:24:04 706 8

原创 记一次Centos7文件系统调整的操作

这个文件系统通常是内存中的虚拟文件系统,大小取决于系统内存。tmpfs:挂载点/sys/fs/cgroup,这是一个内存中的文件系统,用于存放控制组 (cgroup) 的信息和配置。tmpfs:挂载点/run,这是一个临时文件系统,用于存放系统启动和运行时的临时文件,它也是内存中的文件系统。在不增加磁盘的情况下想调整根文件系统空间的话,只能缩小其他文件系统,在实操之前应该先知道每个文件系统是干嘛的。tmpfs:挂载点/run/user/{userId},为某个用户分配的临时文件系统,通常用于存储临时会话。

2024-06-13 11:27:06 304

原创 常用工具和SQL

2.根据创建时间统计每月新增记录数。特点是严格按照年月日计算的年龄。

2024-06-04 10:03:23 98

原创 List对象集合根据某个字段的值去重

【代码】List对象集合根据某个字段的值去重。

2024-05-21 10:59:50 243

原创 ElasticSearch语法

v返回结果。

2024-05-10 14:07:24 824

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

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

2024-04-09 19:23:15 1217

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

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

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

原创 Netty优化

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

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

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

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

2024-03-01 17:26:11 392

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

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

2024-03-01 17:06:25 225

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

递归组装字典树

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

原创 MyBatisPlus批量插入优化

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

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

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

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

2024-01-31 10:35:30 122

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

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

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

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

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

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

原创 NFS挂载文件夹

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

2023-10-19 19:51:33 101 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 2814 5

原创 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 335 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 48 1

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

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

2023-09-21 13:41:44 129

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

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

2023-09-21 13:23:13 241

原创 线程池使用心得

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

2023-09-21 11:21:06 45

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

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

2023-09-20 15:36:50 181

原创 Canal客户端自动重连

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

2023-09-20 15:27:36 314

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

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

2023-09-20 15:02:58 276

空空如也

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

TA关注的人

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