- 博客(73)
- 资源 (11)
- 收藏
- 关注
原创 RocketMq:单个消费者订阅多个Topic的实现方式
使用单个消费者实例订阅相关的多个Topic,减少资源消耗在消费逻辑中进行业务分发,根据Topic和Tag执行不同的处理配置统一的异常处理机制,确保所有Topic的消息都能得到正确处理监控所有Topic的消费情况,及时发现消息堆积或消费失败问题通过这种设计,您的RocketMQ消费者服务既能保持代码的简洁性,又能满足复杂的业务需求,实现高效的消息处理架构。
2025-10-29 17:01:14
291
原创 RocketMq:多标签订阅的实现方式
不需要为每个标签创建独立的类。正确的做法是通过的方式在单个消费者实例中订阅多个标签。这种方法不仅简化了代码结构,还显著降低了系统资源消耗,同时保持了良好的业务逻辑分离性。通过标签的合理设计和在消费逻辑中的分发处理,您可以实现既高效又易于维护的消息消费架构。
2025-10-28 16:15:45
307
原创 RocketMq:普通同步消息发送和接收
这段代码展示了RocketMQ消费者的基本实现模式,包括初始化、配置、订阅消息和实现消费逻辑等关键步骤。主要功能是订阅并处理消息队列中的消息。
2025-10-23 18:30:42
191
原创 Hibernate中StatelessSession和普通Session对比
测试表明,未关闭的StatelessSession会使活跃连接数(numActive)不断累积,直到连接池完全耗尽。StatelessSession不维护持久化上下文(Persistence Context),也不跟踪实体状态变化,每次操作都直接同步到数据库。Hibernate文档明确指出,StatelessSession需要开发者手动管理生命周期,这是其与普通Session的核心区别之一。通过显式关闭StatelessSession,可有效避免资源泄漏问题,确保批量操作的高效性和稳定性。
2025-10-10 09:52:18
433
原创 在Hibernate框架中,根据多个ID进行高效查询方法和机制实现
两种方式本质是开发效率与运行时性能的权衡,实际项目中可混合使用(如Criteria构建主体查询,HQL处理特殊片段)这种方式会生成单条SQL语句,适合中等规模的ID集合(通常建议ID数量控制在1000以内)。提供类型安全的查询构建方式,适合动态条件查询。子句SQL,但通过面向 对象的方式避免SQL拼接风险。
2025-10-10 09:26:56
256
原创 Hibernate批量查询方法全面解析
明确查询需求:根据查询复杂度选择合适方法优化关联加载:合理使用JOIN FETCH和@BatchSize控制数据量:务必使用分页查询大数据集配置批量参数:如监控性能:记录查询耗时和记录数,持续优化异常处理:为批量操作添加重试机制结合您之前遇到的批量删除问题,这些批量查询方法可以帮助您更高效地处理大量数据操作,同时保持代码的类型安全和良好的性能表现。
2025-09-30 18:09:25
383
原创 Apache Commons DBCP连接池生产环境配置推荐
核心参数关系式:对比现有配置:注:最终数值需通过压测确定,建议先用JMeter模拟峰值流量验证配置合理性。对于关键业务系统,建议考虑升级到Druid或HikariCP等现代连接池。
2025-09-19 18:23:00
265
原创 H2数据库:(tcp 服务器模式)调优
:通过维护数据行的多个版本实现读写并发,减少锁竞争,适合高并发场景412。:MVCC会占用更多内存存储版本数据,但显著提升并发性能MVCC=TRUE如果是1.4.x版本或者以上可以不用配置默认启用MVCC调优h2数据库(tcp服务器模式)启动命令参数。
2025-09-19 14:57:59
716
原创 H2数据库:高并发写入问题与优化方案
H2数据库在同时发生大量对同一表的添加数据连接时,会面临以下主要问题::H2默认使用表级锁机制,当多个连接同时写入同一表时,会产生严重的锁竞争,导致写入性能急剧下降。在高并发场景下,这种锁竞争可能使系统吞吐量降低80%以上。:作为内存数据库,H2在高并发写入时容易耗尽JVM内存资源,特别是在内存模式下运行时。每个连接和事务都会消耗额外内存,当连接数激增时可能导致OutOfMemoryError。:大量并发写入操作会快速消耗数据库连接池资源,导致后续请求因无法获取连接而阻塞或失败。
2025-09-19 10:39:25
1068
原创 针对tomcat [/usr/lib64:/lib64:/lib:/usr/lib]上找不到基于APR的Apache Tomcat本机库的处理方法
org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 在java.library.path:[/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]上找不到基于APR的Apache Tomcat本机库,该库允许在生产环境中获得最佳性能。ls -ls /usr/bin/apr-1-config (未安装)ls -ls /usr/bin/openssl(已安装)
2025-09-17 17:03:48
1011
原创 Tomcat生产环境调优
1.manager-gui角色核心功能可视化操作界面:提供Web图形化界面(通过/manager路径访问),支持部署/卸载WAR包、启动/停止应用、查看实时日志等操作。典型应用场景:开发调试时快速部署应用,无需重启Tomcat;生产环境需谨慎配置权限。安全风险:默认密码(如示例中的123456)需修改,避免未授权访问。2.其他关键角色对比角色功能描述manager基础管理角色,支持脚本化操作(如通过HTTP请求部署应用)admin-gui高级管理界面,可修改全局配置(如server.xml)
2025-09-09 18:31:59
1255
原创 H2数据库:针对多线程并发问题的系统化解决方案
此问题常见于高并发场景,特别是在使用网络文件系统(NAS)存储数据库文件时更为突出。以上是针对H2数据库多线程并发问题的全面解决方案,建议根据实际业务场景分阶段实施。:H2的MVStore采用文件锁机制确保数据一致性,不支持真正的并发写入。在多线程环境下对H2数据库执行修改操作时,出现文件锁定异常(),根本原因是MVStore引擎的文件锁冲突(:NAS存储的I/O延迟可能导致锁释放不及时。:应用层缺乏有效的并发访问控制机制。:数据库连接未正确关闭导致锁残留。迁移数据库到本地SSD存储。
2025-09-08 17:14:56
296
原创 tomcat下载
注意:32位与64位版本的主要区别在于内存寻址能力(32位最大支持3.5GB,64位支持更高)和系统兼容性。下载方框里的版本,下载都是比较简单的,重点给大家讲解一下这几个版本的不同。若需详细文档,可单独下载。需要嵌入式功能时选择。常规开发或部署推荐。
2025-09-07 11:34:39
377
原创 请求超过Spring线程池的最大线程时,线程池处理机制
此时会再处理5个请求(10-5=5),总处理量为:5(核心) + 5(扩展) = 10个并发执行任务。剩余40个请求(100-5-50-5)将触发CallerRunsPolicy策略,由提交任务的调用线程(如HTTP请求的Tomcat线程)同步执行这些任务,导致调用方阻塞。前5个请求会立即由核心线程(corePoolSize=5)执行,此时活跃线程数达到核心线程数上限。想象餐厅只有10个厨师(线程),50个待做菜的订单(队列)。前10个厨师先做10个菜(5个固定厨师+5个临时工)。注1:什么是拒绝策略。
2025-09-05 17:15:33
959
3
原创 Spring线程池ThreadPoolTaskExecutor详解
通过编程方式动态设置参数,适合需要运行时调整的场景(如根据系统负载动态修改线程数)。静态声明式配置,适用于部署时确定的固定参数,修改需重启应用。)的行为规则完全相同49。差异仅体现在配置方式和扩展灵活性上。方法链式调用,可直接嵌入业务逻辑中进行条件判断。标签注入值,与Spring IOC容器深度集成。
2025-09-04 17:32:58
349
原创 Spring配置线程池
2.打印项目启动具体信息(根据自己不同日志包方法不同,我用的logback,因为每个人不一样所以就不具体说明了,不明白的可以留言问我)表明你的 Spring 项目中。测试线程池是否配置完成。
2025-09-04 15:54:02
248
原创 Elasticsearch中keyword的index类型使用分析
当keyword类型字段的index属性设置为false时,表示该字段不会被构建倒排索引。总结就是keyword加上index=false就是这个字段只能读取,不能搜索。这种字段仅用于存储原始值,不会参与搜索、排序或聚合操作。
2025-09-03 17:15:22
153
原创 Elasticsearch(text和keyword)区别分析
当keyword类型字段的index属性设置为false时,表示该字段不会被构建倒排索引。总结就是keyword加上index=false就是这个字段只能读取,不能搜索。这种字段仅用于存储原始值,不会参与搜索、排序或聚合操作。keyword:精确匹配类型,适用于聚合、排序和过滤。text:全文检索类型,经过分词处理,支持模糊匹配。text比较常用,主要是分词查询等等。
2025-09-03 16:43:16
398
原创 Elasticsearch核心数据类型
浮点数:float(32位)、double(64位)、half_float(16位)、scaled_float(带缩放因子的浮点数)。动态映射控制:通过dynamic参数(true/false/strict)管理新字段的自动创建。整数:byte(8位)、short(16位)、integer(32位)、long(64位)。扁平化类型(flattened):处理动态字段或未知结构,避免映射爆炸。别名(Alias):为字段创建逻辑别名,不影响实际存储。geo_point:存储经纬度坐标。
2025-09-03 14:48:15
278
原创 Elasticsearch常用命令(未完)
对es输入指令可以用很多种方法比如用es的谷歌浏览器插件,亦或者postman,我个人比较喜欢用postman比较简单直接。网上针对es常用命令好多都是写的感觉非常复杂难以理解,所以我还是自己整理了一下相关的常用命令。1.删除指定索引下的所有数据。
2025-09-02 12:00:14
318
原创 elasticsearch中文分词器analysis-ik使用及修改分词器名称
网上很多让你在服务器上下载或者定位到githup上的我觉得都不太好,不够清晰。1.java开发,方便修改源码(比如文件内容加密,或者其他特定的分词处理)*******es版本要严格对应ik版本********上面收录了各个版本es对应的ik分词器版本,特别注意。比如es为6.3.2那么ik也要下载6.3.2。3.配置文件响相对于简单。2.中文分词效果比较好。
2025-09-01 17:27:25
490
原创 H2数据库:数据文件备份(防止异常断电导致的数据库文件无法使用,元数据块损坏等问题)
h2数据库数据文件备份(防止异常断电导致的数据库文件无法使用,元数据块损坏等问题)
2025-07-11 17:22:39
470
原创 java后端get和post传参的各种情况和方式汇总和基础问题解答
1.如何使用浏览器判断前端发起的是post和get请求get请求 数据存放在url中post请求数据放在请求体中post请求又分为两种1.1 请求类型为form Data1.2请求类型为Request payload图1.1后端接收方式为 @RequestMapping(params="getOrgItemList") @ResponseBody public JSONArray getOrgItemList(HttpServletRequest request).
2021-11-03 14:46:33
1184
原创 centos7下用docker安装多个独立的centos7虚拟机镜像与可视化工具
1.关闭防火墙systemctl stop firewalld.servicesystemctl disable firewalld.service如果你的centos7宿主机无法用yum下载,可以把dns改成8.8.8.8试一下2.下载相关组件sudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum makecache fast3.配置yum镜像yum-config-manager --a.
2021-09-16 11:43:17
894
原创 基于websocket服务端客户端相互通信 亲测可用
网上找了很多相关通信的帖子,还是看的一知半解,终于看到某位大大的帖子,做成了参考:https://blog.youkuaiyun.com/u010395024/article/details/104550564?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159764233319724842922639%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&reques
2020-08-17 15:24:12
276
转载 不记录input输入框之前输入的信息
https://blog.youkuaiyun.com/qq_41348029/article/details/81331454
2019-04-25 11:18:01
433
原创 更改 input placeholder 颜色设置问题和动态编辑placeholder
颜色参考下面网址https://blog.youkuaiyun.com/javaluchuanjun/article/details/84622807动态编辑placeholder //正则表达式验证是否是数字 清空输入文字并且显示新的提示信息 function DMJCyanZheng() { var ops= new RegExp("^[0-9]*$")...
2019-04-24 16:01:08
363
java连接sqlserve,db2,及orecal数据库代码和jar包
2018-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅