MySQL索引及其优化总结 – CFC例会2022.4.17
MySQL索引及其优化 MySQL的基础架构 Server层 :核心服务功能与跨引擎功能的实现(如所有的内置函数、存储过程、触发器等) 连接器:管理连接,权限验证 命中缓存:命中缓存则直接返回结果(8.0版本后删除) 分析器:词法分析,语法分析 优化器:执行计划生成,索引选择 执行器:操作引擎返回结果 存储引擎:数据的存储与提取,插件式的架构模式 InnoDB * MyISMA SQL语句的执行流…
《Java并发编程的艺术》学习笔记(四) – Volatile 全解读
Volatile 全解读 Volatile 的定义 在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用恰当的话,它比synchronized的使用和执行成本更低,…
《Java并发编程的艺术》学习笔记(三) – Java内存模型 – JMM
Java内存模型 - JMM Java内存模型技术 Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明。 在Java中,所有实例域、静态域和数组元素都存储在堆内存中,堆内存在线程之间共享(“共享变量”这个术语代指实例域,静态域和数组元素)。局部变量(Local Variables),方法定义参数(Java语言规范称之为Formal Method P…
《Java并发编程的艺术》学习笔记(二) – synchronized 全解读
synchronized 全解读 Synchronized的特性 有序性 读读、写写、写读、读写 都是互斥的,只有一条线程拿到当前的锁,当前锁不释放,其他线程只能处于BLOCK状态,等待锁的释放,然后加入下一步的竞争 可见性 完全排他 原子性 本质上是线程互斥保证的原子性 可重入性 Synchronized锁升级 - Mark Word(32bit) Synchronized锁升级 - 偏向锁 至…
《Java并发编程的艺术》学习笔记(一) – 并发编程初探
并发编程初探 Java天生的多线程 一个main函数就是一个JVM进程,在IDEA中可以看到共有6条线程 查看线程信息:jps(拿到线程的tid) + jstack(查看线程日志) prio是进程中的优先级,os_prio是操作系统给线程定义的优先级,prio前加上deamo则为守护线程 [6] Monitor Ctrl-Break (跟JVM 关系不大,他是 IDEA 通过反射的方式,开启一个随…
Redis学习笔记(一)–基础命令
Redis 基础 第一节 基本命令 通用命令 select 示例: select 0 # 选择0号数据库 keys 示例: keys he* keys he[h-l]* keys ph? # 根据Pattern表达式查询符合条件的Key # 注意:不要在生产环境中使用,会阻塞线程 dbsize 示例: dbsize # 返回key的总数 exists 示例: exists a # 查询key=a是…
并发编程学习笔记
Java 创建线程的三种方式 先看一看在Thread类源码中的注释是怎么写的 There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread. This subclass should override the run method of cla…
从零开始学习MySQL(七) – 浅谈MySQL锁机制
第七章 浅谈 MySQL 锁机制 * 在MySQL中,就很容易出现多线程同时操作表中数据的情况,如果要避免潜在的并发问题,那么我们可以使用之前讲解的事务隔离级别来处理,而事务隔离中利用了锁机制。 读未提交(Read Uncommitted):能够读取到其他事务中未提交的内容,存在脏读问题。 读已提交(Read Committed RC):只能读取其他事务已经提交的内容,存在不可重复读问题。 可重复…
从BST、AVL树、2-3树杀到BLT(红黑树),常见树状数据结构解读 – CFC例会2021.10.10
让我们开始吃树~ 提起树状数据结构的家族,我们不得不从二叉树开始说起。 在学二叉树的时候,我们知道,二叉树是指每个结点最多只有两个子结点的树。 二叉树,是指树中每个结点最多只有两个结点的树。当然,二叉树本身好像没有什么太大的作用。我们平时所说的二叉树,基本上就是指二叉排序树(二叉查找树)。 二叉查找树(BST) 二叉查找树就是在二叉树的基础上增加有序性,这个有序性一般是指自然顺序,有了有序性,我们…
从零开始学习MySQL(六) – 数据库设计
第六章 数据库设计 第一节 设计数据库 1. 什么是实体 实体就是软件开发过程中所涉及到的事物,通常都是一类数据对象的个体。 2. 什么是数据库设计 数据库设计就是将实体与实体之间的关系进行规划和结构化的过程 3. 为什么要对数据库进行设计 当存储的数据比较少的时候,当然不需要对数据库进行设计。但是,当对数据的需求量越来越大时,对数据库的设计就很有必要性了!如果数据库的设计不当,会造成数据冗余、修…