《mysql高性能》系列4:字符集和校对
摘要:对于字符串类型,有一个字符集的概念在里面。字符集是指,一种从二进制编码到某类字符符号的映射。例如,中文符号,在计算机底层用二进制存储,那么,就需要有一个映射表,来表示哪个中文符号用哪个二进制编码来表示。校对,是指一组用于某个字符集的排序规则。 1 mysql如何使用字符集 只有基于字符的值才有字符集
阅读全文
《mysql高性能》系列3:创建合适的索引
摘要:1 概述 索引可以认为是存储引擎建立的一种数据结构,用来快速的根据查询条件来找到所需要的数据。由于数据一般存放在磁盘中,每次访问磁盘的时间都会比较长,因此,为了减少对磁盘的访问次数,存储引擎一般使用B-树结构来保存索引。索引可以减少服务器层需要扫描的数据量,可以帮助服务器避免排序,将随机IO变为顺序
阅读全文
《mysql高性能》系列2:选择合适的数据类型
摘要:1 选择数据类型的几个原则 选择更小的数据类型比如,存储城市id可以用int,那就不要使用bigint了。更小的数据类型占用的磁盘、内存和CPU缓存都会比较小,处理起来也更快。但是,要记得不要低估需要存储的值的范围。 简单的数据类型更好例如,能用整型存储ip地址,就不要用字符存储ip地址。因为,字符
阅读全文
电影《狮子王》观后感
摘要:故事梗概 故事讲述了荣耀王国的小狮子王–辛巴出生,老狮子王带着辛巴巡游王国。但是,辛巴的叔叔却不服老狮子王的统领,于是,勾结鬣狗王国,哄骗辛巴,害死了老狮子王,赶走了辛巴,霸占了荣耀王国,以及王后。辛巴以为自己害死了自己的父亲,于是,终日沉沦,幸好结识了朋朋和丁满这两个朋友,开始了无忧无虑、不关心其
阅读全文
《mysql高性能》系列1:mysql总体构架
摘要:1 mysql构架 mysql构架可以分为三层,分别是客户端、服务层和存储引擎层,如下图所示。 客户端可以认为是提供给用户使用的一个工具,方便用户使用,同时,提供了连接管理、授权认证和安全的功能。比如,对于每一个客户端发过来的请求,服务层都会从线程池中取出一个线程来处理请求。客户端连接到服务层时,需
阅读全文
异步编程学习4:Spring提供的异步方法注解
摘要:为了快速的将同步方法变为异步方法,Spring提供了@Async和@EnableAsync注解。两个注解搭配,就可以快速实现一个异步方法。 1 初步体验@Async注解 下面,我们假设有一个异步记录日志的方法,需要异步输出日志,代码如下。 定义异步日志输出类,需要是一个spring bean。 //
阅读全文
异步编程学习3:使用Future和CompletableFuture来获取结果
摘要:在计算图比较复杂的时候,如下图所示,任务之间存在相互依赖,即任务C依赖于任务A的执行结果。这时候,需要获取异步任务A的执行结果之后再执行任务C。一种方式是通过Future来获取,另一种方式是CompletableFuture 1 初步体验Future 如果要执行下面的计算图, 可以考虑将任务A在线程
阅读全文
异步编程学习2:线程池方式
摘要:想象一下我们有两个任务A和B,A和B之间没有依赖关系。如果想要异步执行,那么最容易想到的是使用将A和B在不同的线程中执行。代码如下所示。 public class ThreadDemo { public static void main(String[] args) { var start = Sy
阅读全文
异步编程学习1:概述
摘要:概述 先来看看异步、同步、阻塞和非阻塞的区别。 同步和异步 同步和异步是针对通信方式而言的,表示调用方和服务方之间是同步通信还是异步通信。同步通信是指,调用方调用服务方的方法之后,调用方会等待服务方返回结果。异步通信是指,调用方调用服务方的方法之后,就直接返回了,不会继续等待,结果一般是通过状态和消
阅读全文