
学习笔记篇
文章平均质量分 81
学习新的技能,学习笔记
My LQS
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Phaser、CountDownLatch 和 CyclicBarrier 区别对比
Phaser、CountDownLatch 和 CyclicBarrier 区别对比原创 2025-02-10 08:45:00 · 342 阅读 · 0 评论 -
ForkJoinTask 并行计算使用案例
适用于将大任务拆分成多个小任务并行执行,然后合并结果。是 Java 并行计算框架。原创 2025-02-10 09:15:00 · 262 阅读 · 0 评论 -
分布式中的两阶段提交协议(2PC)与三阶段提交协议(3PC)
无论是2PC还是3PC,它们都是实现分布式事务的重要方法。2PC更简单,但在高可靠场景下可能显得笨重;3PC容错性更高,但实现复杂度也更大。在实际工程中,选择使用哪种协议,或者是否需要分布式事务,还需要结合业务需求和系统架构权衡利弊。例如,在一些高性能、高可用的分布式系统中,我们可能更倾向于使用BASE理论(基本可用、软状态、最终一致性)来替代强一致性。希望这篇文章能让你对2PC和3PC有一个更清晰的认识,也欢迎大家在评论区讨论你的见解!原创 2025-02-08 08:00:00 · 903 阅读 · 0 评论 -
Java 常见的创建多线程的方式
在 Java 中,创建多线程的方式有多种,常见的有以下 5 种方式原创 2025-02-08 08:45:00 · 456 阅读 · 0 评论 -
MySQL 如何深度分页问题
深度分页是 MySQL 中一个常见且棘手的问题,使用子查询和滚动 ID 这两种方式可以在不同的场景下有效解决该问题。子查询适用于需要跳页的场景,通过在二级索引上操作减少回表次数和扫描数据量;滚动 ID 方式适用于顺序分页的场景,通过记录上一页的最后一条记录的 ID 避免大量的偏移操作。在实际应用中,我们需要根据具体的业务需求选择合适的解决方案。原创 2025-02-01 20:59:58 · 1023 阅读 · 0 评论 -
理解 InnoDB 如何处理崩溃恢复
在数据库领域,数据的一致性与可靠性至关重要。InnoDB 存储引擎的崩溃恢复机制是保障数据安全的核心,其中 Doublewrite Buffer 和 Redo Log 发挥着关键作用。下面,我们将详细探讨 InnoDB 从写入到崩溃恢复的全过程。原创 2025-02-01 20:07:06 · 1187 阅读 · 0 评论 -
如何在 Kafka 中实现自定义分区器
Kafka 中的分区器()决定了每条消息应该被发送到哪个分区。按照消息内容的某个字段按照消息发送的时间按照某种哈希算法或外部因素这时候,我们就可以自己实现一个分区器来替代 Kafka 默认的分区策略。实现了自定义分区器后,接下来我们需要在 Kafka Producer 的配置中指定我们自己实现的分区器类。原创 2025-01-31 19:22:43 · 1003 阅读 · 0 评论 -
MySQL 间隙锁避免“可重复读”出现“幻读”
可重复读导致幻读可重复读级别中的行锁仅保护已存在记录,未锁定查询范围的“间隙”,导致可能插入新记录而出现幻读。MySQL 的解决方案MySQL 的Next-Key Lock(间隙锁 + 行锁)机制,在“可重复读”级别下,防止在查询范围内插入新数据,从而避免幻读。注意事项间隙锁仅在事务隔离级别为可重复读或更高时启用。在性能与隔离性之间,需要根据实际业务需求权衡是否使用这种机制。原创 2025-01-03 08:30:00 · 656 阅读 · 0 评论 -
时间轮(TimeWheel)的设计
在不同层次的时间轮中,由于槽所代表的时间精度不同,通过降级操作可以确保任务在接近执行时刻时,能够在精度更高的时间轮层中进行管理和调度,从而避免因长时间等待在低精度层而导致的时间误差积累,提高定时任务执行的准确性和及时性。在任务插入过程中,计算槽位的方式也十分巧妙。假设存在一个有八个槽(编号为 0 - 7)且槽的时间单位为 1 秒的时间轮,若要加入一个延时 5 秒的任务,其计算方式为 5 % 8 + 1 = 6,即该任务应放置在槽位为 6(下标为 5)的槽中,并拼接到槽的双向链表的尾部。原创 2025-01-03 08:00:00 · 1320 阅读 · 0 评论 -
Redis 实现分布式锁(内有java实现)
在Redis中实现分布式锁的常见方法是通过set ex nx命令+lua脚本组合使用。确保多个客户端不会获得同一个资源钱锁的同时,也保证了安全解锁和意外情况下锁的自动释放。原创 2024-12-20 08:30:00 · 981 阅读 · 0 评论 -
领域模型设计方法 充血模式和贫血模式怎么选
充血模式是一种强调将业务逻辑封装在领域对象中的设计模式。领域对象不仅仅存储数据,还负责实现与自身相关的业务行为。贫血模式是一种将领域对象设计为仅仅包含数据(属性),不包含业务逻辑的模式。业务逻辑被放在服务层或其他独立组件中。原创 2024-12-18 23:09:23 · 1070 阅读 · 0 评论 -
牢记面向对象五大原则 SOLID
良好的单一职责设计可以帮助实现接口隔离,而开闭原则的实现通常依赖于依赖倒置原则。在实际开发中,遵循 SOLID 原则可以让我们在需求变化时减少改动成本,提升代码质量,同时也让测试和重构更加轻松。然而,遵守设计原则并不意味着过度设计。开发人员需要在项目的复杂性、规模和团队经验之间找到平衡,在遵循原则的同时,确保代码的实际可用性和效率。设计优雅的系统不仅是技术能力的体现,更是对团队和业务的责任。原创 2024-12-18 23:08:57 · 872 阅读 · 0 评论 -
Redis 5 种数据结构的用法&场景
Redis 提供了五种基本数据类型:String、Hash、List、Set、Sorted Set。以下是每种类型的定义、使用场景和常用命令。原创 2024-12-13 08:30:00 · 2647 阅读 · 0 评论 -
Java 开发不可不知的 7 个 JDK 命令
jmap 主要用于生成 Java 进程的内存映射信息,包括堆内存的使用情况、对象分布等,也可以用于获取堆转储文件(heap dump),以便后续使用其他工具(如 jhat 或专业的内存分析工具)进行深入的内存分析,找出内存泄漏、高内存占用等问题。:jcmd 是一个多功能的命令行工具,它可以用于向运行中的 Java 进程发送诊断命令,获取进程的相关信息,执行一些特定的操作,如生成堆转储文件、获取线程信息等,并且它能够适应不同版本的 JVM,提供了统一的操作接口。原创 2024-12-05 22:31:25 · 997 阅读 · 0 评论 -
ElasticSearch 写数据过程和正确创建索引
Elasticsearch 写入数据的过程涉及客户端请求、路由、节点缓冲区、分片处理和段文件管理原创 2024-11-27 08:00:00 · 1360 阅读 · 0 评论 -
ClickHouse入门学习笔记
学习目标:clickhouseclickhouse入门clickhouse特点:列式存储,clickhouse cpu占有率非常高,性能好吞吐大clickhous inset一批数据的时候会保证原子性docker使用命令:1.docker run -it clickhouse/clickhouse-server /bin/bash 2.clickhouse --help 3.clickhouse start 4.clickhouse-cl原创 2022-05-04 17:20:28 · 2866 阅读 · 0 评论