- 博客(91)
- 资源 (11)
- 收藏
- 关注
原创 以网盘系统为例,讨论redis在类似系统中的应用
以百度网盘为例,讨论redis在类似系统中的应用在网盘系统中,Redis绝对不是只用来存“登录态”的。它扮演的是的核心角色。
2026-06-25 15:20:31
347
原创 ecplise 导出maven依赖jar
本文介绍了如何使用Maven命令将项目依赖库导出到指定目录。操作步骤为:在项目上右键点击,输入命令dependency:copy-dependencies -DoutputDirectory=target/dependency,执行后所有依赖的JAR文件会被自动复制到项目根目录下的target/dependency文件夹中。该命令常用于项目部署时需要打包依赖库的场景,通过简单的配置即可快速获取所有第三方库文件。
2026-06-08 11:11:58
260
原创 springboot2.x集成MyBatis
pom文件添加application.yml信息详解:这段配置主要是时,在中对 MyBatis 框架的行为进行定制。下面逐项解释其含义。
2026-04-10 18:09:33
208
原创 springboot2.x集成Flyway
Flyway 是一个开源的数据库迁移工具,专为管理数据库结构变更而设计,广泛应用于 Java 生态系统中,尤其与 Spring Boot、Maven、Gradle 等框架深度集成。
2026-04-02 11:04:32
332
原创 springboot中的application.properties和application.yml 区别
是键值对的简单文本,是结构化缩进的 YAML 格式,后者更清晰、更易维护,尤其适合复杂配置。不应该纠结“哪个更简单”,而是在问:“哪个能让我的系统更健壮、更易维护?”你不是在写配置文件,你是在编写系统的说明书。选择,就是选择用专业的方式,对待你正在构建的每一个系统。
2026-03-31 18:34:06
282
原创 数据库读写分离介绍
数据库读写分离是解决高并发下数据库性能瓶颈的经典架构策略。,从而实现负载分流,提升整体系统的吞吐量和可用性。下图清晰地展示了读写分离的和。
2026-01-12 20:21:17
749
原创 数据库批量更改数据,会导致哪些影响,及商业化优化方案
大批量状态更新对查询的负面影响是肯定的。商业化系统不能寄希望于“数据量小”或“运气好”,而必须通过。
2026-01-12 19:52:00
777
原创 针对可能需要在某一个表修改大量数据的场景下的优化方案
如果数据量不大(日增不到万级)且团队资源有限坚持当前方案,但务必做好数据库索引和读写分离,这是成本最低的优化。如果预期或已面临高并发、处理耗时优先引入消息队列进行异步解耦,这是迈向商业化系统的经典一步。如果查询压力大立即引入缓存层,效果立竿见影。永远要有监控:无论用哪种方案,都要对“待处理”任务设置超时监控,这是系统的安全网。
2026-01-12 19:46:34
479
原创 java现阶段比较常用且成熟的框架
总结来说,Spring Boot因其全能和生态优势仍是大多数场景的默认选项,而Quarkus等云原生框架则在特定领域表现抢眼。:现代框架(如Spring Boot 3.x、Quarkus、Micronaut)通常要求。更新JDK不仅能使用新框架,还能获得新语言特性的生产力提升。是最稳妥、风险最低的选择,因为其社区庞大、文档齐全,招聘也更容易。等框架已被普遍认为架构老旧、社区停滞,在新项目中应避免使用。是更先进的选择,它们在启动速度和内存占用上有巨大优势。用于自动化代码升级),这可能是未来提升效率的方向。
2026-01-12 19:39:48
569
原创 JdbcTemplate 性能好,但 Hibernate 生产力高。 如何选择?
JdbcTemplate 性能好,但 Hibernate 生产力高。选择哪一个,本质上是。下面,我们对图中的关键判断点进行详细说明。
2026-01-07 20:26:43
921
原创 DBCP和HikariCP数据库连接池详细功能及使用效率对比
DBCP和HikariCP是Java生态中最具代表性的两个连接池,但设计理念和性能表现差异显著。
2026-01-07 20:25:16
870
原创 JdbcTemplate与Hibernate在不同数据量级下的效率详细对比,在什么特定场景下应该使用JdbcTemplate
if (i % 500 == 0 && i > 0) { // 批次大小500。bulk_insert_buffer_size = 128M -- 批量插入缓冲。innodb_buffer_pool_size = 2G -- 缓冲池大小。// 关键:释放内存。:直接循环session.save()或session.update()。:Hibernate配置了批次大小=500,定期flush/clear。// 1. 用Hibernate查询(利用缓存)
2026-01-05 10:00:35
861
原创 Hibernate 框架下批量更新 5k-20k 条数据的场景下,各种添加方法效率对比
针对 Hibernate 框架下批量更新 5k-20k 条数据的场景,几种优化方案,下图展示了不同方案的核心思路与适用场景:下面详细介绍每种方案的具体实现和适用场景:适合:简单字段更新,直接WHERE条件过滤java@Transactionalpublic int batchUpdateByHQL(List<Long> ids, String newStatus) { String hql = "UPDATE YourEntity e SET e.status = :sta
2026-01-05 09:47:59
783
原创 增删改查对于数据库的效率排序
操作通常最快场景通常最慢场景SELECT通过主键/唯一索引查询无索引的全表扫描、多表JOININSERT批量插入、顺序写入单条插入、有大量索引的表UPDATE用主键更新非索引定长字段更新索引键导致索引树分裂、无索引条件更新DELETE用主键删除少量数据无索引条件删除大量数据、有复杂外键约束。
2026-01-05 09:39:55
786
原创 表设计场景-多人共用同一条数据
场景:如果有一个应用场景是,10个人共用了一条数据库中的其中一条数据,如果其中一个人删除了,那么就在这条数据中的其中一个字段把他的id添加进去,直到十个人都删除,再把这条数据删除。
2026-01-05 09:35:59
736
原创 Mysql和PostgreSQL详细对比
WHEN 场景 = '简单Web应用' AND 团队技能 = 'MySQL' THEN '选择MySQL'WHEN 场景 = '复杂数据分析' OR 需要高级SQL功能 THEN '选择PostgreSQL'│ 复杂JOIN查询 │ 12,000 QPS │ 18,000 QPS │。FULLTEXT INDEX ft_name (name) -- 全文索引。
2026-01-03 22:30:16
1264
原创 RocketMq:单个消费者订阅多个Topic的实现方式
使用单个消费者实例订阅相关的多个Topic,减少资源消耗在消费逻辑中进行业务分发,根据Topic和Tag执行不同的处理配置统一的异常处理机制,确保所有Topic的消息都能得到正确处理监控所有Topic的消费情况,及时发现消息堆积或消费失败问题通过这种设计,您的RocketMQ消费者服务既能保持代码的简洁性,又能满足复杂的业务需求,实现高效的消息处理架构。
2025-10-29 17:01:14
423
原创 RocketMq:多标签订阅的实现方式
不需要为每个标签创建独立的类。正确的做法是通过的方式在单个消费者实例中订阅多个标签。这种方法不仅简化了代码结构,还显著降低了系统资源消耗,同时保持了良好的业务逻辑分离性。通过标签的合理设计和在消费逻辑中的分发处理,您可以实现既高效又易于维护的消息消费架构。
2025-10-28 16:15:45
392
原创 RocketMq:普通同步消息发送和接收
这段代码展示了RocketMQ消费者的基本实现模式,包括初始化、配置、订阅消息和实现消费逻辑等关键步骤。主要功能是订阅并处理消息队列中的消息。
2025-10-23 18:30:42
248
原创 Hibernate中StatelessSession和普通Session对比
测试表明,未关闭的StatelessSession会使活跃连接数(numActive)不断累积,直到连接池完全耗尽。StatelessSession不维护持久化上下文(Persistence Context),也不跟踪实体状态变化,每次操作都直接同步到数据库。Hibernate文档明确指出,StatelessSession需要开发者手动管理生命周期,这是其与普通Session的核心区别之一。通过显式关闭StatelessSession,可有效避免资源泄漏问题,确保批量操作的高效性和稳定性。
2025-10-10 09:52:18
498
原创 在Hibernate框架中,根据多个ID进行高效查询方法和机制实现
两种方式本质是开发效率与运行时性能的权衡,实际项目中可混合使用(如Criteria构建主体查询,HQL处理特殊片段)这种方式会生成单条SQL语句,适合中等规模的ID集合(通常建议ID数量控制在1000以内)。提供类型安全的查询构建方式,适合动态条件查询。子句SQL,但通过面向 对象的方式避免SQL拼接风险。
2025-10-10 09:26:56
316
原创 Hibernate批量查询方法全面解析
明确查询需求:根据查询复杂度选择合适方法优化关联加载:合理使用JOIN FETCH和@BatchSize控制数据量:务必使用分页查询大数据集配置批量参数:如监控性能:记录查询耗时和记录数,持续优化异常处理:为批量操作添加重试机制结合您之前遇到的批量删除问题,这些批量查询方法可以帮助您更高效地处理大量数据操作,同时保持代码的类型安全和良好的性能表现。
2025-09-30 18:09:25
426
原创 Apache Commons DBCP连接池生产环境配置推荐
核心参数关系式:对比现有配置:注:最终数值需通过压测确定,建议先用JMeter模拟峰值流量验证配置合理性。对于关键业务系统,建议考虑升级到Druid或HikariCP等现代连接池。
2025-09-19 18:23:00
333
原创 H2数据库:(tcp 服务器模式)调优
:通过维护数据行的多个版本实现读写并发,减少锁竞争,适合高并发场景412。:MVCC会占用更多内存存储版本数据,但显著提升并发性能MVCC=TRUE如果是1.4.x版本或者以上可以不用配置默认启用MVCC调优h2数据库(tcp服务器模式)启动命令参数。
2025-09-19 14:57:59
795
原创 H2数据库:高并发写入问题与优化方案
H2数据库在同时发生大量对同一表的添加数据连接时,会面临以下主要问题::H2默认使用表级锁机制,当多个连接同时写入同一表时,会产生严重的锁竞争,导致写入性能急剧下降。在高并发场景下,这种锁竞争可能使系统吞吐量降低80%以上。:作为内存数据库,H2在高并发写入时容易耗尽JVM内存资源,特别是在内存模式下运行时。每个连接和事务都会消耗额外内存,当连接数激增时可能导致OutOfMemoryError。:大量并发写入操作会快速消耗数据库连接池资源,导致后续请求因无法获取连接而阻塞或失败。
2025-09-19 10:39:25
1181
原创 针对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
1314
原创 Tomcat生产环境调优
1.manager-gui角色核心功能可视化操作界面:提供Web图形化界面(通过/manager路径访问),支持部署/卸载WAR包、启动/停止应用、查看实时日志等操作。典型应用场景:开发调试时快速部署应用,无需重启Tomcat;生产环境需谨慎配置权限。安全风险:默认密码(如示例中的123456)需修改,避免未授权访问。2.其他关键角色对比角色功能描述manager基础管理角色,支持脚本化操作(如通过HTTP请求部署应用)admin-gui高级管理界面,可修改全局配置(如server.xml)
2025-09-09 18:31:59
1412
原创 H2数据库:针对多线程并发问题的系统化解决方案
此问题常见于高并发场景,特别是在使用网络文件系统(NAS)存储数据库文件时更为突出。以上是针对H2数据库多线程并发问题的全面解决方案,建议根据实际业务场景分阶段实施。:H2的MVStore采用文件锁机制确保数据一致性,不支持真正的并发写入。在多线程环境下对H2数据库执行修改操作时,出现文件锁定异常(),根本原因是MVStore引擎的文件锁冲突(:NAS存储的I/O延迟可能导致锁释放不及时。:应用层缺乏有效的并发访问控制机制。:数据库连接未正确关闭导致锁残留。迁移数据库到本地SSD存储。
2025-09-08 17:14:56
381
原创 tomcat下载
注意:32位与64位版本的主要区别在于内存寻址能力(32位最大支持3.5GB,64位支持更高)和系统兼容性。下载方框里的版本,下载都是比较简单的,重点给大家讲解一下这几个版本的不同。若需详细文档,可单独下载。需要嵌入式功能时选择。常规开发或部署推荐。
2025-09-07 11:34:39
446
原创 请求超过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
1050
3
原创 Spring线程池ThreadPoolTaskExecutor详解
通过编程方式动态设置参数,适合需要运行时调整的场景(如根据系统负载动态修改线程数)。静态声明式配置,适用于部署时确定的固定参数,修改需重启应用。)的行为规则完全相同49。差异仅体现在配置方式和扩展灵活性上。方法链式调用,可直接嵌入业务逻辑中进行条件判断。标签注入值,与Spring IOC容器深度集成。
2025-09-04 17:32:58
412
原创 Spring配置线程池
2.打印项目启动具体信息(根据自己不同日志包方法不同,我用的logback,因为每个人不一样所以就不具体说明了,不明白的可以留言问我)表明你的 Spring 项目中。测试线程池是否配置完成。
2025-09-04 15:54:02
282
java连接sqlserve,db2,及orecal数据库代码和jar包
2018-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅