- 博客(823)
- 收藏
- 关注
原创 threadpoolexecutor
执行完毕后在finishCompletion方法中唤醒等待在futureTask实例的线程。在runWorker方法中执行futureTask的run方法,如果是同步等待,futureTask.get()方法被执行,futureTask.get()方法被执行会导致线程被挂起;启动线程就是执行的woker的run方法。worker作为线程的构造参数。所以,线程的启动时机是在调用。
2025-09-19 10:01:10
353
原创 有哪些公司哪些业务表用到了分库分表,同时又面临哪些挑战呢?
这些大厂的实践经验表明,分库分表虽能解决大数据量和高并发问题,但也带来了复杂性挑战,需要在架构设计时权衡利弊。
2025-09-17 14:53:19
924
原创 大厂分库分表挑战解决方案
技术创新:自研中间件和工具解决特定问题架构演进:从简单分片到复杂分布式架构平台化:构建统一平台降低使用门槛标准化:制定规范减少重复造轮子自动化:运维自动化减少人工干预服务化:抽象复杂性提供简单接口这些解决方案体现了大厂在面对复杂分布式系统时的技术实力和工程实践能力。
2025-09-17 11:58:11
903
原创 Fork/Join框架是Java 7引入的并行计算框架,专门用于分治任务:用法详解
可分治的任务:能够递归分解为子任务计算密集型:CPU 密集型操作效果最好大数据集处理:处理大量数据的场景合理设置阈值避免过多小任务使用invokeAll简化多个子任务的执行注意异常处理和资源管理理解工作窃取机制的优势根据实际场景选择合适的并发工具compute() 方法:定义分治逻辑,决定何时拆分、何时直接计算fork() 方法:将子任务异步提交到工作队列,不阻塞当前线程join() 方法:等待子任务完成并获取结果,必要时阻塞当前线程工作窃取机制。
2025-09-17 09:58:21
742
原创 seata分布式事务解决方案
微服务框架支持目前已支持Dubbo、Spring Cloud、Sofa-RPC、Motan 和 gRPC 等RPC框架,其他框架持续集成中AT 模式提供无侵入自动补偿的事务模式,目前已支持MySQL、Oracle、PostgreSQL、TiDB、MariaDB、DaMeng、PolarDB-X 2.0、SQLServer。DB2开发中TCC 模式 支持 TCC 模式并可与 AT 混用,灵活度更高SAGA 模式为长事务提供有效的解决方案,提供编排式与注解式(开发中)XA 模式。
2025-09-16 15:33:49
424
原创 消息队列rocketmq
RocketMQ Producer是RocketMQ消息系统中负责发送消息的组件。它支持多种发送方式,可以满足不同场景下的消息发送需求。
2025-09-16 11:59:14
688
原创 消息队列kafka的事务特性
Kafka事务主要用于实现精确一次语义(Exactly Once Semantics, EOS),确保消息在分布式系统中的处理既不会丢失也不会重复。:确保多个消息的原子性发送:实现端到端的精确一次处理依赖幂等性:事务功能基于幂等性实现配置要求:需要设置唯一的错误处理:需要正确处理等异常通过使用Kafka事务,可以确保在分布式系统中消息处理的准确性和一致性。原子性:确保一组相关操作要么全部成功,要么全部失败一致性:维护系统数据的一致状态隔离性:防止并发操作相互干扰持久性。
2025-09-16 10:42:17
1081
原创 消息队列kafka
单一工作线程:每个实例只有一个Sender线程生命周期管理:通过方法管理线程生命周期优雅关闭:支持正常关闭和强制关闭两种模式线程间通信:通过wakeup()机制实现线程间通信异常处理:统一的异常处理机制保证线程稳定性这种设计避免了传统线程池的复杂性,同时保证了消息发送的顺序性和一致性。Future模式send()方法立即返回阻塞等待:调用时阻塞主线程线程间通信:通过机制实现线程同步异步处理:实际发送由Sender线程异步完成结果通知:Sender线程完成后通过Future通知主线程。
2025-09-16 09:32:28
1179
原创 seata分布式事务管理AT模式
因为是快照保存,避免前一次失败了但是后一次成功了这种情况下的把后一次成功的记录给回滚了。一、AT模式为啥要在第一阶段加行锁?
2025-07-22 16:02:49
184
原创 seata分布式事务解决方案
最成熟模式:AT 和 TCC 是 Seata 中应用最广泛、稳定性最高的模式,尤其 AT 模式因其无侵入性成为 Java 微服务的首选。场景适配:追求开发效率 → AT 模式;需要高性能补偿 → TCC 模式;长事务最终一致 → SAGA 模式;强一致性刚性需求 → XA 模式。未来趋势:Seata 持续优化 AT 模式的锁机制(如异步化提交),并增强多语言支持(如通过 Sidecar 代理非 Java 服务)。
2025-07-22 09:54:10
1086
原创 在intelliJ idea开发springboot项目,启动项目,run/debug configurations配置窗口里,vm options / program arguments / env
参数类型作用范围影响对象常见用法适用场景VM options整个 JVM 实例JVM、所有应用模块内存设置、GC 设置、系统属性设置、调试选项性能调优、环境配置、远程调试当前 Spring Boot 应用当前应用传递配置文件路径、指定运行模式、传递标志位灵活配置、特殊模式、初始化任务整个操作系统进程所有应用模块配置数据库连接信息、配置 API 密钥/Token、配置外部服务地址、配置运行环境安全性、环境隔离、配置中心集成。
2025-02-07 16:51:20
2767
原创 python导入包
(对于 Python 来说,包含__init__.py文件的文件夹被视为一个包)。这个文件可以为空,也可以用于初始化一些全局变量或者导入必要的模块。
2024-12-31 11:43:42
950
原创 python输入并输出打印
函数会先在控制台打印出括号内的提示信息“请输入你的名字: ”,等待用户输入内容,用户输入完成并按下回车键后,输入的内容会被当作字符串赋值给变量。方法去除换行符,再进行后续处理。读取一行数据,包含末尾的换行符。指定了输出内容之间的分隔符,指定了输出内容的结尾字符。
2024-12-31 11:01:39
620
原创 python环境搭建
安装完成Python后,还可以使用一些集成开发环境(IDE)来方便地编写和运行Python代码,如PyCharm、Visual Studio Code等。以Visual Studio Code为例,需要先下载并安装(https://code.visualstudio.com/),然后在扩展商店中安装Python插件,这样就可以在Visual Studio Code中编写和调试Python程序了。
2024-12-31 10:10:12
1118
原创 Bean创建过程中调的方法
将beanName添加到defaultSingletonBeanRegistry的成员变量singletonCurrentlyInCreation集合中。然后调singletonFactory.getObject方法,调到匿名beanFactory实例,DefaultSingletonBeanRegistry.addSingleton方法。调beforeSingletonCreation方法,在AbstractBeanFactory中。getSingleton方法中,将已创建的Bean加入到容器。
2024-12-23 17:13:04
309
原创 数据库优化、sql优化
4、对于单表超过5000万条的数据要使用分布式数据库;如果业务简单,利用中间件读写分离、分库分表等。6、更新和删除用id主键更新,避免出现未建立索引的字段出现在where条件里导致锁表。2、不要在sql里执行复杂逻辑,在程序里执行复杂逻辑;5、减少join操作。可以用id查询关联表数据。1、限制查询返回条数、要分页;7、避免使用存储过程、外键等。3、建立合适的索引;
2024-12-09 15:27:57
236
原创 java hashmap的hash方法的作用是为了让哈希表分布更均匀
java hashmap的hash方法的作用是为了让哈希表分布更均匀。为什么要对key的hashCode无符号右移16位呢?
2024-12-05 10:39:51
186
原创 Java NIO channel
在 Java NIO 中扮演着至关重要的角色,它不仅记录了通道的兴趣操作和就绪状态,还提供了附加对象的功能,便于开发者在处理 I/O 事件时携带额外的上下文信息。通过,你可以高效地管理和响应多个通道的 I/O 操作,从而实现高性能的网络应用程序。
2024-12-03 15:34:00
1180
原创 Java IO操作和使用方法
write系统调用是 Linux 系统中最基本的写入操作之一,广泛用于文件、管道、套接字等 I/O 操作。通过理解其参数和返回值,你可以更好地控制和优化 I/O 操作,确保程序的正确性和性能。read系统调用是 Linux 系统中最基本的读取操作之一,广泛用于文件、管道、套接字等 I/O 操作。通过理解其参数和返回值,你可以更好地控制和优化 I/O 操作,确保程序的正确性和性能。无论是字节流还是字符流,最终的操作都是由操作系统执行的,但字符流在应用程序和操作系统之间增加了一层字符编码/解码的逻辑。
2024-12-03 11:38:31
1015
原创 ConfigurationClassEnhancer
代理生成使用CGLIB生成类的代理对象。代理对象继承自类,并重写所有方法。方法拦截实现接口,拦截对@Bean方法的调用。拦截器检查方法调用,确保通过Spring容器管理。Bean 创建和管理当Spring容器需要创建某个Bean时,会通过代理对象调用相应的@Bean方法。拦截器调用Spring容器的方法来创建和管理Bean。通过这种方式,Spring确保了类中的所有@Bean方法调用都由Spring容器管理,从而实现了灵活和强大的Bean管理机制。
2024-11-15 17:20:35
977
原创 希尔排序与插入排序优化在哪里?
第一步,先对后一部分和前一部分比较,实现了后一部分较小的提前插入到前面,降低了移动次数。希尔排序与插入排序优化在哪里?
2024-10-28 10:49:42
324
原创 mybatis在springboot项目中的批次操作
UserMapper和都是 MyBatis 的 Mapper 接口,定义批量插入的单条 SQL 操作。@Mapper// 单条插入用户数据@Mapper// 单条插入订单数据事务控制确保了两个批量操作都在同一个事务中进行。批量插入:通过执行批量插入,使用和commit()来控制批处理的执行和事务提交。性能优化:批处理可以减少数据库交互次数,显著提升批量插入性能。通过这种方式,你可以在方法中对两个表执行批量插入,并在一个事务中提交所有操作,从而保证数据的一致性和批处理性能。
2024-10-16 11:01:50
1706
原创 mybatis的缓存机制
一级缓存是 MyBatis 的默认缓存,它在SqlSession级别起作用,生命周期与SqlSession相同。也就是说,同一个SqlSession对象在多次执行相同的查询时,如果参数相同,第一次查询的结果会被缓存起来,后续的相同查询会直接从缓存中获取数据,而不再发送查询请求到数据库。二级缓存作用范围是Mapper(映射器)级别,多个SqlSession可以共享相同的缓存数据。也就是说,同一个Mapper对象的查询结果可以跨SqlSession复用。一级缓存:默认开启,作用在SqlSession。
2024-10-16 10:42:27
969
原创 linux日志查询搜索view
view命令实际上是vim编辑器的一个只读模式。当你使用view打开一个文件时,实际上是在用vim查看该文件,只是不能编辑内容。因此,view下的搜索操作与vim类似。以下是如何在viewviewviewvimerrornNview:qview举个例子,如果你想在日志文件然后在viewerrornN如果你需要退出view模式,可以按:q后按 Enter 键。
2024-09-24 17:19:17
1133
原创 varchar 修改后字段值变长了或变短了
原文链接:https://blog.youkuaiyun.com/liuche1/article/details/121502439。mysql变长类型字段varchar值更新变长或变短底层文件存储原理。
2024-08-23 16:09:57
322
原创 rotcketmq实践 吞吐量 发送重试 重试消费 异步 批量发送
性能:批量发送通常比单笔发送更高效,尤其是在消息体较小的情况下。资源消耗:批量发送减少了网络IO次数,降低了系统资源消耗。错误处理:单笔发送更容易实现精确的错误处理逻辑;批量发送则需要更复杂的逻辑来确保消息的正确性。在实际应用中,可以根据业务需求和性能要求选择合适的消息发送方式。例如,在对实时性和准确性要求非常高的场景下,可以选择单笔发送;而在追求高吞吐量且能接受一定延迟的场景下,则可以采用批量发送。
2024-08-16 16:46:12
1109
原创 elasticsearch 字段类型的索引、字段类型修改、字段类型、分页、排序、分组、聚合
Elasticsearch 支持多种数据类型,用于处理和存储不同格式的文档数据。主要的数据类型分为三大类:核心数据类型、复杂数据类型和特殊数据类型。
2024-08-16 11:00:41
2363
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅