![](https://img-blog.csdnimg.cn/2a4524b75a1643939b2b9f423baed0bc.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
重要的知识点
文章平均质量分 96
重要的知识点
Java程序员廖志伟
我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主等头衔。拥有多年一线研发和团队管理经验,研究过主流框架的底层源码(Spring、SpringBoot、Spring MVC、SpringCloud、Mybatis、Dubbo、Zookeeper),消息中间件底层架构原理(RabbitMQ、RocketMQ、Kafka)、Redis缓存、MySQL关系型数据库、 ElasticSearch全文搜索、MongoDB非关系型数据库、ShardingSphere分库分表读写分离、设计模式、领域驱动DDD、容器编排Kubernetes等。
展开
-
单线程模型想象不到的高并发能力、多路复用是效率杠杆
想象不到的高并发能力、多路复用是效率杠杆原创 2023-10-23 18:02:55 · 127 阅读 · 0 评论 -
解密redisObject属性和五大数据类型编码:让你彻底了解redis
解密redisObject属性和五大数据类型编码:让你彻底了解redis原创 2023-10-23 17:32:02 · 150 阅读 · 0 评论 -
Redis不止能存储字符串,还有List、Set、Hash、Zset,用对了能给你带来哪些优势?
Redis不止能存储字符串,还有List、Set、Hash、Zset,用对了能给你带来哪些优势?原创 2023-10-23 21:00:00 · 278 阅读 · 0 评论 -
Redis调优大揭秘:掌握这几十种技巧,让你的Redis更快更稳定!
Redis调优大揭秘:掌握这几十种技巧,让你的Redis更快更稳定!原创 2023-10-24 07:45:00 · 322 阅读 · 0 评论 -
深入理解Redis集群模式、协议、元数据维护方式
深入理解Redis集群模式、协议、元数据维护方式原创 2023-10-23 20:30:00 · 373 阅读 · 0 评论 -
Redis哨兵机制详解:极致高可用和数据保护的神器
Redis哨兵机制是Redis的高可用解决方案之一,可以监控和管理Redis集群中的多个节点,并在发现主节点出现宕机等异常情况时,自动将从节点提升为主节点,继续提供服务。这个过程是自动化的,不需要人为干预,所以能够有效提高Redis的可用性和稳定性,避免因主节点宕机而导致业务受到影响。原创 2023-10-23 18:45:00 · 78 阅读 · 0 评论 -
从零开始,探究Redis分布式锁底层原理!
从零开始,探究Redis分布式锁底层原理!原创 2023-10-24 13:45:00 · 83 阅读 · 0 评论 -
从根本上解决Redis和MySQL结果不一致的问题
从根本上解决Redis和MySQL结果不一致的问题原创 2023-10-24 11:30:00 · 140 阅读 · 0 评论 -
Redis过期处理策略、惰性删除、定期删除、RDB和AOF、内存淘汰机制
🔥Redis过期处理策略 🚀惰性删除、定期删除 💡RDB和AOF 🌟内存淘汰机制原创 2023-10-24 20:15:00 · 153 阅读 · 0 评论 -
Redis持久化解析:全面了解Redis的数据持久化机制
首先,我们需要明确一下持久化的概念。简单来说,持久化就是将数据保存到磁盘或其他介质中,以便在系统宕机、电源故障等异常情况下,能够快速恢复数据并提供服务。举个例子来说,如果你在微信上写了一篇长篇大论的文章,但是没保存,突然电脑蓝屏或者微信崩溃了,那你的辛苦劳动就全都白费了。而如果你在写文章的时候,能够将它保存到云盘或者本地磁盘上,即使出现了问题,你也可以轻松地恢复数据。原创 2023-10-23 12:30:00 · 94 阅读 · 0 评论 -
Redis数据结构完全解析:底层实现细节揭秘
如果我们使用SDS来存储这个字符串,我们只需要调用一个函数就可以获取字符串长度,而且在需要更改字符串大小时,SDS会自动地为其准备缓冲区,不需要我们手动操作。此外,链表还可以实现高效的分页查询操作。但是,如果我们使用跳跃表来存储这个排行榜,我们可以将分值作为节点的分值,将用户ID作为节点的值,这样排序的时间复杂度就会降到O(log N),大大提高了排序效率。跳跃表的建立是在原有的有序链表的基础上建立索引,每两个节点提取一个节点到上一级,抽出来的这一级就是索引,每个节点的层高都是随机生成的。原创 2023-10-23 12:30:00 · 142 阅读 · 0 评论 -
调优攻略:10个提高MySQL性能的实用技巧
调优攻略:10个提高MySQL性能的实用技巧原创 2023-10-23 20:00:00 · 861 阅读 · 0 评论 -
一条SQL执行是如何执行的?它的执行流程是什么?跟我一起探索吧!
一条SQL执行是如何执行的?它的执行流程是什么?跟我一起探索吧!原创 2023-10-23 12:30:00 · 246 阅读 · 0 评论 -
提高查询性能的秘密:深入剖析聚集、辅助、覆盖和联合索引
联合索引,指的是对表上的多个列进行索引。通常在设计数据库表的时候,我们会根据表的结构和需求来选择哪些列需要进行索引,而当需要同时对多个列进行筛选和排序时,就需要使用联合索引。比如,在一个购物网站的数据库中,有一个购买记录的表(buy_log),其中包含用户ID(userid)和购买日期(buy_date)两个字段。如果需要根据用户ID来查询购买记录,并按购买日期降序排列,那么就需要使用联合索引对userid和buy_date进行索引,以提高查询效率。原创 2023-10-23 19:15:00 · 152 阅读 · 0 评论 -
高效访问数据的关键:解析MySQL主键自增长的运作机制!
高效访问数据的关键:解析MySQL主键自增长的运作机制!原创 2023-10-23 12:15:00 · 186 阅读 · 0 评论 -
MySQL性能优化指南:深入分析重做日志刷新到磁盘的机制
MySQL性能优化指南:深入分析重做日志刷新到磁盘的机制原创 2023-10-23 08:30:00 · 231 阅读 · 0 评论 -
MySQL高效运行的秘密:BufferPool缓存机制深度剖析!
MySQL高效运行的秘密:BufferPool缓存机制深度剖析!原创 2023-10-23 09:45:00 · 462 阅读 · 2 评论 -
揭秘MySQL的神秘面纱:深入探究ACID底层实现原理!
持久性底层实现原理主要依靠redo log机制来实现,通过重做日志保证了事务的持久性。而事务隔离性则通过锁来实现。InnoDB作为事务的存储引擎,通过Force Log at Commit机制实现事务的持久性,同时还提供了double write机制保证了数据的一致性。这些机制的实现,保证了数据库在发生宕机等不可预测事件时,数据不会丢失,从而保证了数据的可靠性和一致性。原创 2023-10-24 20:00:00 · 133 阅读 · 0 评论 -
MySQL隔离级别:提高数据库性能与数据安全的必备技能!
MySQL的隔离级别是指在多个会话(transaction)同时访问同一份数据时,数据库系统为了维护数据的一致性,采用的一种隔离机制。MySQL支持四种隔离级别,分别为:读未提交(Read uncommitted)、读已提交(Read committed)、可重复读(Repeatable Read)和串行化(Serializable)。不同的隔离级别对应了不同的事务并发访问时数据一致性和可见性的处理方式。随着隔离级别的提高,数据库的数据安全性和一致性会得到更好的维护,但同时也会增加系统的开销,降低系统的并发原创 2023-10-24 19:45:00 · 98 阅读 · 0 评论 -
解锁高效检索技能:掌握MySQL索引数据结构的精髓
树形结构中有一个叫做根节点的节点,它是整个树的顶端,相当于我们卡片盒子的盖子。而B树无论是叶子节点还是非叶子节点,都会保存数据,这就导致在非叶子节点中能保存的指针数量变少,指针少的情况下要保存大量数据,只能增加树的高度,导致IO操作变多,查询性能变低。原创 2023-10-24 19:30:00 · 112 阅读 · 0 评论 -
解密分布式事务:CAP理论、BASE理论、两阶段提交(2PC)、三阶段提交(3PC)、补偿事务(TCC)、MQ事务消息、最大努力通知
如果发送消息成功,但是本地事务执行失败,那么订单记录就会丢失,而如果本地事务执行成功,但是消息发送失败,MQ中也没有对应的订单记录。资源管理器提供访问事务资源的方法,事务管理器协调参与全局事务的各个事务,并与参与全局事务的所有资源管理器进行通信,应用程序定义事务的边界,指定全局事务中的操作。例如,你的客户A在网站上查询自己快递的状态,此时客户A的请求被分配到了一个从节点上处理,但是这个从节点上存储的快递信息还没有更新,因此客户A看到的信息可能不是最新的,这就是数据的最终一致性。原创 2023-10-24 19:15:00 · 102 阅读 · 0 评论 -
大揭秘:HashMap原理解析
但是,如果很多联系人的名字都是相似的,就像张三、张三三、张三四等,这时候用Hash算法就会遇到一个问题:如果两个联系人的名字经过Hash算法计算后得到的数字一样,就会出现“冲突”,也就是两个联系人的名字被映射到同一个页面上了。其中,键是唯一的,值可以重复。原创 2023-10-24 19:00:00 · 117 阅读 · 0 评论 -
疯狂飙高!怎么排查CPU导致系统反应缓慢的问题?
使用系统监控工具或命令行工具查看Java程序占用CPU的情况,如果发现CPU占用率很高,那么问题可能就出在Java程序上。在Linux系统中,可以使用以下几种方法查看CPU占用率:打开终端输入top命令,可以看到进程列表,其中CPU占用率最高的进程排在最上面。在top命令下,我们可以使用“%cpu”进行占用率排序,按照CPU占用率从高到低排序,并可以查看该进程的PID、用户、内存、虚拟内存和进程名称等。htop是top的一个增强版,它可以显示更多的进程信息,支持鼠标操作和更加友好的用户界面。首先需要安装ht原创 2023-10-24 13:15:00 · 106 阅读 · 0 评论 -
深入了解JVM调优:解锁Java应用程序性能的秘诀
注意 了,这批对象的年龄才1岁,很有可能再多等1次MGC 就能被回收了,可是却进入了老年代,只能等到Full GC 进行回收,很可怕。还有一种情况会导致对象在未达到15岁之前,直接进入老年代,就是S1区的对象,相同年龄的对象所占总空间大小>s1区空间大小的一半,所以为了应对这种情况,对于S区的大小的调整就要考虑:尽量保证峰值状态下,S1区的对象所占空间能够在MGC的过程中,相同对象年龄所占空间不大于S1区空间的一半, 因此对于S1空间大小的调整,也是十分重要的。接下来,我将为大家呈现正文内容。原创 2023-10-24 13:00:00 · 181 阅读 · 0 评论 -
警惕内存泄漏与溢出!你的代码是否隐藏着致命危机?
内存泄漏和内存溢出是 Java 开发中常见的问题,可以通过关闭对象、避免使用静态集合类、避免使用匿名内部类、善用垃圾回收器和使用内存管理工具来避免。需要注意对象的生命周期,及时清理不再需要的对象,避免占用过多内存。同时,也可以通过学习常见的例子和使用内存管理工具来提高对于内存泄漏和内存溢出的诊断和处理能力。🔔如果您需要转载或者搬运这篇文章的话,非常欢迎您私信我哦~💂博客主页我是廖志伟👉开源项目java_wxid🌥哔哩哔哩我是廖志伟🎏个人社区幕后大佬🔖个人微信号SeniorRD📥博主的人生感悟和目标。原创 2023-10-24 12:45:00 · 100 阅读 · 0 评论 -
探究跨代引用和逃逸分析如何提升程序性能!
在Java虚拟机中,跨代引用指的是老年代中的对象引用了年轻代中的对象。当进行年轻代的垃圾回收时,需要扫描老年代中所有引用年轻代的对象,在老年代里面做大量的遍历和扫描操作,这是非常消耗性能的。为了优化这个问题,JVM引入了记忆集(Card Table)的抽象数据结构。记忆集记录了从非收集区域指向收集区域的一个指针集合,这个指针集合是由一组连续的内存卡片(Card)组成的。每个内存卡片的大小是2^18个字节,可以理解为一个内存页面。记忆集能够记录指向年轻代的内存卡片中所有的指针,将这些指针标记为"dirty"。原创 2023-10-24 12:30:00 · 63 阅读 · 0 评论 -
提高Java程序性能!了解可达性分析算法、强软弱虚引用和三色标记GC的过程,避免不可达对象阻碍程序性能!
垃圾回收算法是一种自动内存管理技术,它的目的是确保在运行程序时不会发生内存泄漏和内存溢出。Java虚拟机通过垃圾回收算法回收不再被引用的对象,以便更好地利用内存空间。当对象不再被引用时,它可以被回收。垃圾回收过程可以分为标记、清除、压缩和回收4个阶段,其中回收阶段是最后一次机会,它执行的是finalize()方法,以便在对象被回收时进行清理工作或日志记录。一旦对象被回收,它就不能再被引用了。原创 2023-10-24 12:15:00 · 142 阅读 · 0 评论 -
清除你的烦恼!深入探讨垃圾回收算法、垃圾回收器和空间分配担保策略
JVM分代是为了更好地管理Java对象的内存分配和回收。Java对象可以分为新生代和老年代两种,新生代又可以分为Eden区、Survivor区1和Survivor区2。大多数Java对象在创建后都会被分配到新生代的Eden区,经过一次Minor GC后,存活的对象会被移动到Survivor区1或Survivor区2。当Survivor区1或Survivor区2满了之后,会触发一次Minor GC,并把还存活的对象移动到另一个Survivor区。当一个对象从新生代被移动到老年代时,就需要考虑其年龄。原创 2023-10-24 12:00:00 · 70 阅读 · 0 评论 -
揭秘Java类加载机制与双亲委派:知其所以然,舞动代码世界
当应用程序需要使用一个 java.util.Date 类的实例时,Java 虚拟机会先检查该类是否已经被加载,如果没有加载,就会按照加载流程加载该类,并将其返回给应用程序使用。例如,Object类是所有类的父类,需要被各种类访问,因此它也需要一个被访问的入口。原创 2023-10-24 11:45:00 · 62 阅读 · 0 评论 -
深入探究Java内存模型
Java虚拟机(JVM)是一种能够在不同平台上运行Java程序的虚拟机。JVM内部有一个内存模型,用于管理其内部的内存分配。原创 2023-10-24 09:00:00 · 258 阅读 · 0 评论 -
深入解析Java代码执行过程,揭开神秘的黑匣子!
📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。🌎跑过十五公里、徒步爬过衡山、🔥有过三个月减肥20斤的经历、是个喜欢躺平的狠人。原创 2023-10-24 08:45:00 · 221 阅读 · 0 评论 -
高效并发处理之必备利器:线程池
线程池相当于银行网点,常驻核心数相当于今日当值窗口,线程池能够同时执行的最大线程数相当于银行所有的窗口,任务队列相当于银行的候客区,当今日当值窗口满了,多出来的客户去候客区等待,当候客区满了,银行加开窗口,候客区先来的客户去加班窗口,当银行所有的窗口满了,其他客户在候客区等待,同时拒绝其他客户进入银行。当用户少了,加班的窗口等待时间(相当于多余线程存活的时间)(等待时间的单位相当于unit参数)假设超过一个小时还是没有人来,就取消加班的窗口。原创 2023-10-24 08:30:00 · 115 阅读 · 0 评论 -
深入探索:AbstractQueuedSynchronizer 同步器的神秘面纱
AQS(AbstractQueuedSynchronizer)是Java提供的一个同步框架,它可以用来实现锁和其他同步工具。AQS的核心思想是共享状态的管理,它通过一个int型的volatile变量来描述同步状态,同时维护一个FIFO队列,用来存放等待线程。在AQS的实现中,同步状态的修改和FIFO队列的维护是通过CAS(Compare-And-Swap)操作实现的。AQS提供了两种同步方式:独占模式和共享模式。独占模式指的是同一时间只有一个线程可以获取锁,其他线程需要等待独占锁的释放。原创 2023-10-24 08:15:00 · 166 阅读 · 0 评论 -
解锁高效检索技能:掌握MySQL索引数据结构的精髓
在Java中,synchronized关键字是一种同步锁,在多线程编程中,用于解决多个线程同时访问同一个资源的问题。当一个线程持有锁时,其他线程将会被阻塞,直到当前线程释放锁为止。synchronized可以加在方法上或对象上,作用的对象是非静态的,则取得的锁是对象锁;作用的对象是静态方法或类,则取到的锁是类锁,这个类所有的对象用的是同一把锁。原创 2023-10-27 13:14:04 · 135 阅读 · 0 评论 -
解密Java中神奇的Synchronized关键字
在Java中,synchronized关键字是一种同步锁,在多线程编程中,用于解决多个线程同时访问同一个资源的问题。当一个线程持有锁时,其他线程将会被阻塞,直到当前线程释放锁为止。synchronized可以加在方法上或对象上,作用的对象是非静态的,则取得的锁是对象锁;作用的对象是静态方法或类,则取到的锁是类锁,这个类所有的对象用的是同一把锁。原创 2023-10-24 08:00:00 · 780 阅读 · 2 评论 -
探索Java中神奇的ThreadLocal:为什么它是多线程编程的重要工具?
ThreadLocal是一种Java中实现线程间数据隔离的机制。它可以让每个线程都拥有自己的变量副本,从而避免了线程安全问题。在Java中,每个Thread对象都有一个ThreadLocalMap对象,用于存放该线程的局部变量。原创 2023-10-22 10:14:22 · 175 阅读 · 0 评论 -
【深入探究Java集合框架】从List到Map的完整指南
📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。🌎跑过十五公里、徒步爬过衡山、🔥有过三个月减肥20斤的经历、是个喜欢躺平的狠人。原创 2023-10-22 08:00:00 · 481 阅读 · 0 评论