Moonike's Blog
  • 首页
  • 归档
  • 分类
  • 关于
  • 友链

执行一条 SQL 的流程

概述从图上可以看出 MySQL 其实分为了 Server 层和存储引擎层。Server 层负责建立连接、分析和执行 SQL;而存储引擎层负责数据的存储和提取。 一条 SQL 可以分为简单分为以下几个阶段:连接、查询缓存、解析 SQL 和执行 SQL。 连接 建立连接:客户端通过 IP、端口号、用户名、密码等信息,通过 TCP 协议连接到 MySQL Server。 管理连接:Linux 控制台中
2025-04-21
MySQL

乐观锁和悲观锁

乐观锁乐观锁认为共享资源每次被访问的时候不会出现问题,线程可以不停地执行,无需加锁也无需等待,只是在提交修改的时候去验证对应的资源是否被其它线程修改了。乐观锁可以通过版本号机制和 CAS 算法实现。 CAS V:要更新的变量值(Var) E:预期值(Expected) N:拟写入的新值(New) 当且仅当 V 的值等于 E 时,CAS 通过原子方式用新值 N 来更新 V 的值。如果不等,说明已经
2025-04-15
Java > Java并发编程

分布式事务解决方案

分布式一致性的级别 强一致性:系统写入了什么,读出来的就是什么。 弱一致性:不一定可以读取到最新写入的值,也不保证多少时间之后读取到的数据是最新的,只是会尽量保证某个时刻达到数据一致的状态。 最终一致性:弱一致性的升级版,系统会保证在一定时间内达到数据一致的状态。 CAP 一致性(Consistency) : 所有节点访问同一份最新的数据副本 可用性(Availability): 非故障的节点在
2025-04-08
分布式

JVM 的垃圾收集器

没有最好的垃圾收集器,更没有万能的垃圾收集器,我们要做的就是根据具体应用场景选择适合自己的垃圾收集器。试想一下:如果有一种四海之内、任何场景下都适用的完美收集器存在,那么我们的 HotSpot 虚拟机就不会实现那么多不同的垃圾收集器了。 不同版本 JDK 的默认垃圾收集器(使用 java -XX:+PrintCommandLineFlags -version 命令查看): JDK 8: Para
2025-04-08
Java > JVM虚拟机

JVM 的垃圾回收算法

标记-清除算法标记-清除(Mark-and-Sweep)算法分为“标记(Mark)”和“清除(Sweep)”阶段:首先标记出所有不需要回收的对象,在标记完成后统一回收掉所有没有被标记的对象。 它是最基础的收集算法,后续的算法都是对其不足进行改进得到。这种垃圾收集算法会带来两个明显的问题: 效率问题:标记和清除两个过程效率都不高。 空间问题:标记清除后会产生大量不连续的内存碎片。 复制算法为了
2025-04-08
Java > JVM虚拟机

JVM 的对象存活判定算法

引用计数法给对象中添加一个引用计数器: 每当有一个地方引用它,计数器就加 1 当引用失效,计数器就减 1 任何时候,计数器为 0 的对象不可能再被使用 这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因是:很难解决对象之间循环引用的问题。因为互相引用对方,导致二者的引用计数器都不为 0,于是引用计数算法无法通知 GC 回收器回收他们。 可达性分析算法这
2025-04-08
Java > JVM虚拟机

Java 线程间的通信方式

线程间通信指的是多个线程之间相互传递信息或共享资源的机制,通信是多线程编程中的重要概念,用于实现线程之间的协作和数据共享。在谈到线程间通信时,我们主要关注的是 线程间的同步和互斥。 共享变量多个线程可以通过共享变量来进行通信。共享变量可以是全局变量或类的静态变量,多个线程可以同时读取和写入这些变量,通过变量的值来进行信息传递和共享数据。共享变量一般需要搭配 volatile 关键字进行使用。 1
2025-04-07
Java > Java并发编程

TCP 传输控制协议

TCP 协议的特点:面向连接、面向字节流、可靠传输、流量控制、拥塞控制。 面向连接面向连接 是指在 TCP 通信前,通信双方必须先通过三次握手 建立连接(连接建立阶段),确保通信双方都准备好进行数据传输;在数据传输完后再通过四次挥手 关闭连接(连接释放阶段),确保双方都完成了数据的发送和接收。 TCP 连接建立后,通信双方会维护连接的状态信息,包括序列号、窗口大小等,以便进行可靠的数据传输和流量控
2025-04-03
计算机网络

谈谈 TCP 传输控制协议的特点

TCP 协议的特点:面向连接、可靠传输、基于字节流、流量控制、拥塞控制。 面向连接面向连接 是指在 TCP 通信前,通信双方必须先通过三次握手 建立连接(连接建立阶段),确保通信双方都准备好进行数据传输;在数据传输完后再通过四次挥手 关闭连接(连接释放阶段),确保双方都完成了数据的发送和接收。 TCP 连接建立后,通信双方会维护连接的状态信息,包括序列号、窗口大小等,以便进行可靠的数据传输和流量控
2025-04-03
计算机网络

MVCC 和锁是如何最大程度避免幻读的

幻读的产生举个例子,假设一个事务在 T1 时刻和 T2 时刻分别执行了下面查询语句,途中没有执行其他任何语句: 1SELECT * FROM t_test WHERE id > 100; 只要 T1 和 T2 时刻执行产生的结果集是不相同的,那就发生了幻读的问题,比如: T1 时间执行的结果是有 5 条记录,而 T2 时间执行的结果是有 6 条记录,那就发生了幻读。 T1 时间执行的结
2025-04-02
MySQL > 事务
1234567

搜索

Copyright 2025 Moonike. All rights reserved.
Powed by Hexo Fluid
载入天数... 载入时分秒...
总访问量 次 总访客数 人