mysql运行原理笔记-连接的原理

连接的原理连接过程简介从本质上来说,连接就是把各个表中的记录都取出来进行依次匹配,并把匹配后的组合发送给客户端。把t1和t2两个表连接起来的过程如图所示。这个过程看起来就是把t1表中的记录和t2表中的记录连起来组成一个新的更大的记录,所以这个查询过程称为连接查询。如果连接查询的结果集中包含一个表中的

初识RPC

基本概念RPC(Remote Procedure Call)远程过程调用,简单来说就是一个节点请求另一个节点提供的服务,像本地方法调用一样调用远程的服务。详细说明:请求方没有服务实现的细节,执行目标行为还是服务提供的节点。请求服务的节点和服务提供的节点以某种方式进行通信,请求方把行为及行为参数传递给

网络通信 - IO模型

基本概念I/O输入输出(input/output)的对象可以是文件(file)、网络(socket)、进程之间的管道。在Linux系统中,都用文件描述符(fd)来表示。阻塞与非阻塞没有数据传过来时,读会阻塞直到有数据;缓冲区满了,写操作也会阻塞。非阻塞都是直接返回。阻塞和非阻塞强调的是调用者是否等待

Java并发实现原理笔记-多线程基础

线程的优雅关闭stop()与destory()函数线程是一段运行中的代码,或者说是一个运行中的函数。既然是在运行中,就存在一个最基本的问题:运行到一半的线程能否强制杀死?答案是肯定不能。Java中,有stop()、destory()之类的函数,但这些函数都是官方明确不建议使用的。原因很简单,如果强制

Java并发编程实战笔记-基础构建模块

并发容器Java5.0提供了多种并发容器来改进同步容器性能。同步容器将所有对容器状态的访问都串行化,以实现它们的线程安全性。这种方法的代价是严重降低并发性,当多个线程竞争容器的锁时,吞吐量将严重降低。另一方面,并发容器是针对多个线程并发访问设计的。在Java5.0中增加了ConcurrentHash

Java并发编程实战笔记-对象的共享

概述要编写正确的并发操作,关键问题在于:在访问共享的可变状态时需要进行正确的管理。我们已经知道了同步代码块和同步方法可以确保以原子的方式执行操作,但一种常见的误解是,认为关键字synchronized只能用于实现原子性或者确定临界区。同步还有另一个重要的方面:内存可见性(Memory Visibil

软件架构设计杂记

缓冲IO和直接IO对于缓冲IO,一个读操作会有3次数据拷贝:读:磁盘->内核缓冲区->用户缓冲区->应用程序内存写:应用程序内存->用户缓冲区->内核缓冲区->磁盘对于直接IO,一个读操作,会有2次数据拷贝,一个写操作,有反向的2次数据拷贝:读:磁盘->内核

mysql运行原理笔记-基于规则的优化

外连接消除前文说过,内连接的驱动表和被驱动表的位置可以相互交换,而左外连接和右外连接的驱动表与被驱动表是固定的。这就导致了内连接可以通过优化表的连接顺序来降低整体的查询成本,而外连接却无法优化表的连接顺序。外连接和内连接的本质区别就是:对于外连接的驱动表的记录来说,如果无法在被驱动表中找到匹配ON子