自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 问答 (1)
  • 收藏
  • 关注

原创 Leetcode中级算法排序与搜索(3-8)动态规划(1-2)

写个最小堆呗,构建堆时用上浮算法(就是添加于末尾,若小于父节点,交换,直到到根节点为止),堆构建完成后,使用下沉算法,若大于根节点,与它交换,然后判断是否大于下面的值,直到最后一层。父节点 = 子结点-1>>1 子结点 = (父节点<<1)+1 or 前一个节点+1.class Solution(object): class heap: __slots__ = ['k','h','size'] def __init__(self,k): .

2020-09-13 13:30:31 244

原创 每周LeetCode 中级算法 回溯算法1~5 和排序算法1~2

电话号码组合思路:遍历每层的输入,当层次“溢出”回溯class Solution(object): def letterCombinations(self, digits): """ :type digits: str :rtype: List[str] """ if len(digits)==0: return [] dic = {str(i+1):[chr(ord('a'

2020-09-06 00:22:09 208

原创 每周LeetCode 中级算法 链表(1~3) 以及 树和图(1~5)

1.链表思路: 每个节点对应相加再加上上一次进位的值。然后再保存这次进位,下次用,可以用另外个链表存,也可以存在其中一个链表上,不过第二个有一个问题,不晓得最后哪个链表长。同样...

2020-08-29 23:06:52 253

原创 《计算机网络自顶向下方法》应用层——电子邮件

五层协议栈模型1. 应用层应用程序以及应用层协议停留的地方。HTTP,SMTP,FTP,DNS等该层的信息分组称为报文2.传输层应用程序端点之间传送应用层报文。有两种传输协议:TCP,UDP。TCP:提供面向连接的的服务,确保传递和流量控制(发送接收方速率匹配),长报文拆分为短报文。UDP:提供无连接服务,不提供不必要服务的服务,只保证尽最大努力交付。本层的分组称为报文段。3.网络层本层数据称为数据报。包含IP协议,该协议定义了再数据报中的各个字段以及端系统和路由器如何作用于这些字段。

2020-08-27 15:51:27 900

原创 《Redis深度历险》原理篇——线程IO模型 笔记

Redis作为一个用于高并发的中间缓存件自身确是单线程的(6之后支持多线程,只是将一些网络IO等交给工作线程了,数据上的交互还是会交还给主线程的),这是因为并发性能瓶颈大多不是在CPU上,而是内存以及IO上,这就需要考虑使用异步的方式。多路复用或者叫事件轮询,简单的说就是给一个死循环,不断的查看是否存在新的事件到来,有些还会提供一个timeout参数,在没有事件到来时,会阻塞一段时间,以节省cpu资源,这个死循环一次就叫一个周期,当采用类似的系统处理多种事件时,就可称这套系统调用称为多路复用API。指

2020-08-22 18:27:29 106

原创 本周算法题总结——中级算法专题(1~6 数组和字符串)

思路:三个数字和为0,必然除非仨0,要不然就是就肯定至少一个与其他符号相反,这样就需要统计正负数,那排个序呗,然后双指针扫,不过需要仨数,那就用一个数字当桩,然后另外俩在左右两边,小于0则左指针右移,大右左…...

2020-08-22 01:25:18 164

转载 git指令入门

18.04安装等常用命令教程大佬给俺推荐了一个有意思的网站,本文文本内容皆转自该网站git学习git commitGit 仓库中的提交记录保存的是你的目录下所有文件的快照,就像是把整个目录复制,然后再粘贴一样,但比复制粘贴优雅许多!Git 希望提交记录尽可能地轻量,因此在你每次进行提交时,它并不会盲目地复制整个目录。条件允许的情况下,它会将当前版本与仓库中的上一个版本进行对比,并把所有的差异打包到一起作为一个提交记录。Git 还保存了提交的历史记录。这也是为什么大多数提交记录的上面都有父节点的原

2020-07-19 19:27:11 568

原创 SpringBoot入门(2)自动装载简介,YAML语法等

自动装载点开@SpringBootApplication

2020-07-16 17:44:58 204

原创 SpringBoot入门(1)RESTful风格api基本注解使用,Mockito测试,Swagger2文档

啊快入职了还是把框架学一下…虽然还不晓得是啥方向…俺是跟着B站字母哥的视频梳理的(感觉他的视频比较精简的亚子)概念知识不得不说SpringBoot写CRUD还真比不用框架方便好多。首先这玩意与Spring不同的地方在于它内置了Tomcat,所以无需另外启动Tomcat,而且可以自动装配(然后这玩意就又是个面试考点…算了以后再学),这就又比Spring方便不少。只需引入一个Spring Boot Starter基本上就可以干活了,它引入了一些常用的类库。SpringBoot若使用Maven,它的

2020-07-13 02:58:27 622

原创 《鸟哥Linux私房菜》第五章:权限管理、文件种类与拓展名、目录

权限管理主要仨命令,chgrp(更改文件的所属用户组),chmod(更改文件的权限信息),chown(更改文件的所属)。其中d和-表示文件类型,d:文件夹,-:文件,|:链接,b:设备文件里面的可供存储的设备(可按快随机读写的设备),c:设备文件里的串行端口设备,键盘鼠标(一次性读取设备)后续跟三组rwx权限信息,分别是拥有者所具有的权限,同组用户具有的权限,其他用户具有的权限,权限顺序是不会更改的,如果没有对应的权限,则用-表示,还可用数字表示,rwx从左到右分别是421,那么第一行,换为数字就是

2020-07-11 02:25:46 127

原创 《深入分析Java WEB技术内幕》第三章深入分析Java Web中的中文编码问题

常用编码格式ASCII总共128个,用一个字节的第7位表示,0~31是控制字符,32 ~126是打印字符ISO-8859-1256字符,单字节编码,涵盖绝对大多数西欧编码GB3212中文编码字符集,双字节编码,A1~A9符号区,B0 ~F7汉字区,包含6763个汉字GBK汉字内码扩展规范为了拓展GB3212,加入更多汉字,与GB2312兼容UTF-16Unicode,统一码,试图包含世界中所有的编码。UTF-16用两个字节来表示Unicode的转化格式,采用定长表示法,Java就是以U

2020-07-06 20:53:01 117

原创 《深入分析JavaWeb技术内幕》第二章深入Java I/O的工作机制 (下)

NIO的工作方式上一章学的全是BIO(阻塞式I/O)写入和读取都可能会被阻塞,比如Socket的read方法等消息接收完后也被阻塞(失去CPU的控制权,类似于多线程锁竞争失败被阻塞),一直等待新消息,可是访问量较大和性能要求较高时,当然可以用多个线程来维护收和发,不过在现在需要大量长连接的情况下,不可能保持这么多连接,而且线程开启的数量必然也是有限的。这时候便需要使用NIO了。NIO工作机制主要有仨部分,1.缓冲区ByteBuffer等(除了boolean其他基本类型都有)2.通道Channe

2020-07-04 03:18:01 165

原创 《深入分析JavaWEB 技术内幕》第二章深入分析Java I/O的工作机制(上)

基本架构基于字节操作的I/O接口:InputStream和OutputStream基于字符操作的I/O接口:Writer和Reader基于磁盘操作的I/O接口:FIle基于网络操作的I/O接口:Socket前两组主要是传输数据的数据格式,后两组主要是传输数据的方式。InputStream的类结构图大概如下所示(版本Jdk11)OutputStream的类结构图大概如下所示(版本Jdk11)字符写入操作Writer读字符Reader...

2020-07-02 03:50:02 163

原创 《深入分析JavaWeb 技术内幕》第一章深入Web请求

B/S架构概述输入一个网址到获得对应的结果,中间都经历了什么过程呢?(没想到第一章就get到一个面试常问题型2333)用户输入一个URL后,首先查询本地host是否记录了对应的ip地址,如若没有就去DNS服务器上查找,找到地址后向该ip对应服务器发起请求,由该服务器决定返回默认数据给用户。而服务器那边的处理也会些许复杂,因为可能使用了多台服务器,需要由一个负债均衡设备来平均分配所有用户的请求。不同的架构不同可能采取的技术不一样,但是一些原则是不会变的URL:统一资源定位符,发布一个服务或者资源到互

2020-06-30 04:21:37 327

原创 《高性能MySQL》第6章查询性能优化(4)

优化特定类型的查询优化SQL_CALC_FOUND_ROWS前文提到使用这个提示符可以获取限制前的行数,但是它会扫描符合条件的所有行。这个可用来做一个是分页时,后续还有多少页的功能,不过更好的方式是只显示个下一页,如果有数据显示到下一页的数据,如果没有提示到达了末尾。优化UNIONMySQL通过创建并填充临时表的方式来执行UNION,因此很多优化无法在UNION查询中很好应用。所以需要手动将WHERE、LIMIT、ORDER BY等语句下推到UNION子查询中。如果不是需要对结果去重,请使用UNI

2020-06-29 02:55:40 92

原创 《剑指Offer》第1,2章面试流程与基础知识

第一章项目介绍可按照STAR模型。S:背景T:自己完成的任务A:为了完成任务怎么做的(什么工具什么平台什么技术)R:成果,实现了怎样的效果,最好能够量化高质量的代码边界值的处理,特殊输入,负面输入,最好先写单元测试再写实现。遇到复杂问题有三个理解的思路:1.画图 2.举例 3.分解而且还需要关注时间复杂度,空间复杂度等。提问环节问相应的人,相应的问题。基础知识第一章可能是基础知识吧,都比较简单,书中给出的一些解决思路还是有点妙妙。突然觉得这书用于入门也挺好的实现Singleto

2020-06-29 02:09:24 216

原创 《高性能MySQL》第6章查询性能优化(3)查询优化器的提示,优化汇总(上)

查询优化器的提示如果对于执行计划不是很满意,可以使用优化器提供的几个提示来控制最终执行计划。以下为常见的提示:HIGH_PRIORITY和LOW_PRIORITY: 类似于线程优先级,LOW_PRIORITY可能让该语句一直处于等待状态(可作用于全局,可用HIGH_PRIORITY取消),查询优先顺序:HIGH_PRIORITY>无设置>LOW_PRIORITY 其他顺序:无设置>LOW_PRIORITY 。仅对表锁有效,不过可能会引起MyIASM并发插入被禁用导致失效DELA

2020-06-28 03:58:37 300

原创 《高性能MySQL》第六章查询性能优化(2)MySQL查询优化器的局限性

MySQL查询优化器的局限性关联子查询5.5及之前,MySQL中子查询实现得非常糟糕。最糟糕的一类是WHERE条件中包含IN的子查询。它的执行过程并不是如预想的那样是先执行IN中子查询,再根据IN的优化来寻找,而是将外查询压到子查询中。可以使用 JOIN语句来重写子查询不过本机是5.7,好像没有这么问题了?EXPLAIN SELECT SQL_NO_CACHE * FROM sakila.film WHERE film_id IN(SELECT film_id FROM sakila.film_a

2020-06-27 03:18:05 107

原创 《高性能MySQL》查询性能优化(上),慢查询的原因,重构查询的方式,查询的流程。

为什么会慢

2020-06-26 03:11:20 203

原创 LeetCode探索下的字节跳动面试专题全记录

前几天做完了这个专题,还是整理一下吧,虽然说着是字节专题,不过感觉题目都不算难,不过有一定的启发性,题目比较连惯,像数据结构那一节就是循序渐进的。字符串1.无重复字符的最长子串比较简单粗暴的想法就是没尝试添加一个字符,则回溯与前面比较,如果出现重复的,则将开始点设为重复字符位置+1,这样的时间复杂度为O(n2).当然还有巧妙的方法,滑动窗口,时间复杂度O(n)借助HashMap完成,map的key为字符,value为上一次出现的索引。如果遇到存在了,则更新start为重复元素的索引+1 和 .

2020-06-24 23:22:54 535

原创 《Redis深度历险》scan

Redis中的keys命令可以列出满足特定正则表达式所有的key.命令的格式为keys pattern但是它存在俩显著的缺点没有偏移量与限制个数时间复杂度是O(n)为解决此问题,2.8版本便加入年Scan指令。它有如下特点:时间复杂度仍为O(n),且通过游标分布进行。提供limit参数提供模式匹配功能服务器不需要为游标保存状态。返回结果会有重复遍历过程中若有数据修改,改动后的数据不一定会便利到。单次返回的结果是空的并不意味着遍历结束,而看返回的游标值。基本用法scan

2020-06-21 15:29:28 153

原创 LRU使用LinkedHashMap实现(主要分析LinkedHashMap的原理)

LC上有这么一道题让实现一个LRU,LRU如上描述就是一个有容量限制当容量满时会自动移除最后一次时间时间最晚的缓存结构。想到Redis中的ZSET结构(主要是想到了昨天学的漏斗限流…),不过只能存储key不能存储value…在Java中也有排序表的结构,可以使用一个TreeMap,key为一个HashMap,HashMap存储题目中的key和value,TreeMap的value为操作时间戳,每访问一次或者修改一次就更新。如果超出容量设定了就移除时间戳最靠前的那一个。不过Java中有种更合适于干这事.

2020-06-17 02:51:42 454

原创 《Redis深度历险》漏斗限流、GeoHash

漏斗限流上次学习的使用zset存储时间戳,比对滑动(时间)窗口内的操作数是否超出规定的方式来限流对于规定时间内操作不多的情况还是比较好用的,可是如果时间窗口内允许的规定操作次数太多了,就会引起耗费大量的内存空间,这时就需要使用到漏斗限流的方式。思想上大概就是,想象一个漏斗,如果容量(允许操作的次数之类)满了,为了不让它溢出必然只能暂停灌水(用户行为或者某种限流),漏斗下面也也有开口,当它流速大于灌水速度时,就不会暂停灌水,可是如果灌水速度大于了流速,那么就需要暂停一段时间灌水直到有可以容纳下一次灌水空间

2020-06-16 03:33:14 205

原创 《Redis深度历险》布隆过滤器,简单限流

布隆过滤器如果需要依据需要判断某个信息存不存在,则就无法使用HyperLogLog,它只能估测出大概存在多少个不同的值,但是由于数据都被处理过了,无法进行还原,且基于一定的概率性。比如如果需要对用户数据推荐某些东西,而不能推荐一些重复的内容时,HyperLogLog就无法使用了,这时就需要使用到布隆过滤器了,它是一种高级数据结构,布隆过滤器课节省90%的空间,只是稍微有点不精确,存在一定的误判率。是什么不是完全精确的SET可能会把没存在过的误判为存在,不会把存在误判不存在。在上述场景中,就可能会

2020-06-15 03:35:59 441

原创 《高性能MySQL》第五章创建高性能索引

索引的优点除了快速查找,索引还有一些其他附带功能。比如BTree索引,由于它具有顺序性,所以可以使用ORDER BY进行排序和GROUP BY进行分组。索引大大减少了服务器需要扫描的数据量索引可以帮助服务器避免排序和临时表索引可以将随机I/O变为顺序I/O对于中大型的表索引都是比较好用的,但是对于小型表或者特大型表就不尽然,小型表可能全表扫描的整体效率会高于使用索引,因为维护索引本身也是需要成本的。特大型的表,维护成本也必然很大,这种可采用分区的技术。高性能的索引策略有一个索引建立的评

2020-06-14 01:46:43 179

原创 《高性能MySQL》第五章创建高性能索引——索引的类型

好的加快检索速度,坏的索引再数据量较大时使性能急剧下降(与磁盘的读写有关)。索引类型索引实在存储引擎层实现的,所以没有统一的索引标准,依据不同的存储引擎的索引的工作方式并不一样。BTree索引一般默认的便是这个索引。底层实现是基于BTree实现的(大多是B+Tree),它的优势在于它本身是多路查找树,查找的速度会很快,劣势是插入时由于需要维护树,所以会多消耗一些时间。MyISAM是非聚簇索引,就是索引里没有之间存储数据,而是通过数据的物理位置引用被索引的行。(注意24下的索引值错了,该为0X56

2020-06-13 03:03:08 135

原创 《Redis深度历险》HyperLogLog

HyperLogLog基本使用如果需要统计UV(每日访问用户数),而不需要过于精确数据量又比较大的情况下可以采用这种结构,它的标准误差为0.81%,但是set结构要节省空间。它是Redis的一种高级数据结构。使用pfadd key element [element...] 来向key中增添emement(可增添多个)使用pfcount key获取数量可就能够很好的解决日活用户的问题还有pfmerge destkey sourcekey [sourcekey....]可用于汇总多个pf计数,注意

2020-06-12 06:17:44 151

原创 《Redis深度历险》——位图用法

近似可看为byte类型是数组,可用于存储用户签到之类的非此即彼的信息,而且比价节省空间。本质上还是个字符串类型。它是自动拓展的,如果偏移位置超出了现有的内容范围就会自动将位数组进行零扩充。零存整取setbit key offset value注意ASCII码的二进制顺序与这里是逆向映射的。(也就说位数是从高到低)零存零取getbit指令…整存零取因为本质是个字符串嘛,所以可以存储,按位取即可如果无法以字符的方式显示,则显示它的十六进制格式查找与统计bitcount key [s

2020-06-11 06:16:01 124

原创 设计模式——单例模式

单例模式可以说是除了工厂模式以外最最最让人们熟知的设计模式了。他的特点很简单,就是一个类只有唯一一个实例对象,一般对于比较消耗资源由没有配置上的变动的对象,就比较适合单例模式,Spring Bean的默认就是单例。像而且为了防止有一些不必要的线程同步,单例模式都是比较好的,比如win下的任务管理器。实现单例模式的方式也是五花八门的,整体分为懒汉式和饿汉式。懒汉式懒汉,懒汉顾名思义,不到必要的时候就不初始化,概括点说就是延迟加载。实现方式有经典的双重检测,静态内部类也算是懒汉式,因为静态内部类是延后加

2020-06-10 21:21:00 104

原创 《高性能MySQL》第四章Schema与数据结构优化——数据类型部分

选择优化的数据结构选择某个字段的类型时,有几个原则可以尝试遵守1.更小通常更好,因为它们占有更小的磁盘、内存和CPU缓存,且处理时所需的时间周期比较少2.尽量选择结构简单的数据结构,比如整型就比字符简单,字符有编码格式和排序规则。3.尽量避免NULL,尤其对于需要建索引的列,可为NULL的列,会使得索引、索引统计和值比较都更复杂。只有在大量稀疏数据且使用INNODB的场景下,使用该列为null才会带来一定的空间效率。如非必须,大多数情况,都不要置某列可为NULL。整数类型TINYINT(8bit

2020-06-10 07:18:00 131

原创 《Redis深度历险》分布式锁、延时队列

分布式锁有多线程的地方,必有资源竞争,有竞争的地方必然需要锁。作者提出了一个比喻,还挺到位的,Redis中的锁就相对于一个坑,如果想要获取锁,就看坑是否被占了,如果没有种个萝卜下去,如果占了就等着。命令使用setnx key velue来设置锁,使用del key来释放锁由于担心如果某个获取了锁的线程时崩了,没有释放,就会出现该锁其他的线程都无法获取的情况,这就形成了死锁(满足那4个条件(互斥,非剥夺,循环等待,保持与请求)都算死锁)。那么久应该设置一个过期时间,由于过期时间和获取锁是两个操作

2020-06-09 06:59:31 179

原创 《高性能MySQL》第三章服务器性能剖析

性能优化简介用响应时间来衡量性能优劣。性能优化就是指在一定的负载下尽可能的降低相应时间。优化的第一步是测量。优化有两个方面:1.执行时间,去除子任务,降低子任务频率,提升子任务效率等 2.等待时间,比如锁竞争等通过性能剖析进行优化性能剖析一般有两个方面:1.测量任务所需时间2.对结果进行统计和排序,重要的靠前。使用explan 语句可看是否走了索引,使用SHOW PROFILES可看执行该语句前所有语句的执行时间排名,使用show profile cpu,block io for QUER

2020-06-08 06:26:14 153

原创 maven里配置mybaitsGenerator插件遇到的坑(主要还是maven和我家的垃圾网的坑)

镜像源的锅?1.一旦下载spring相关的一些jar包(之前做下载spark相关的包好像也遇到过类似的问题),本机上阿里云镜像源就不好使了,将镜像换为华为云或者其他一般就行了,不过这次还是不好使,我参考了最后一种方法,总算能够下载大多数jar包了(当时主要是org.mybatis.spring.boot下不下来)。贴一波我现在好使的镜像源:<mirror> <id>nexus</id> <name>internal

2020-06-07 20:06:25 602

原创 MySQL建表时遇到的坑[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause...

我写了一个建表语句如下所示:CREATE TABLE IF NOT EXISTS `user`( id int NOT NULL auto_increment PRIMARY KEY , `name` VARCHAR(64) NOT NULL DEFAULT '', gender int NOT NULL DEFAULT '0' COMMENT '0男性,1女性', telphone VARCHAR(13) NOT NULL DEFAULT '', register_mode VARCHAR(

2020-06-07 06:13:18 469 1

原创 LeetCode刷题记录,复原IP地址(深搜+回溯)

由于IP必须有4段,且大小范围为0~255之间,所以s的长度必须在 4 ~12之间。那么我们可以每一段可以尝试截取1 ~3位,至少需要保证当前剩余的数字不会超出剩余的段数的最大要求。而且截取的数字需要在大小范围内,如果这俩条件满足的话,就是一种正确的情况。class Solution { List<String> ans = new ArrayList<>(); public List<String> restoreIpAddresses(Strin.

2020-06-07 01:10:46 149

原创 CodeForces #647 Div.2 ABC

A题意描述问一个数能否通过有限次左移1,2,3位或者右移1,2,3位变成另一个数。思路只需要知道较小那个数通过左移(扩大为原来的2倍)操作能否变成较大那个数就行了,然后为了使得操作次数最少,所以能移动3次就不移动2次。import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in

2020-06-05 17:17:40 113

原创 LeetCode刷题记录,字符串相乘(模拟竖式计算),简化路径(栈)

这种用字符串模拟数字,无论加法乘法一般都是模拟人竖式计算的过程,比如加法可以拆解为每一位对应的加法,然后只保留余数,进位就放到下一位之后一起加。这里乘法也是一个道理,乘法根据分配律可以拆分为,比如123 x 456 = 123x(400+50 +6) ,只需要用被拆开的数字分别与123的每一位相乘即可,如果存在进位就加到下一位的结果上。当每个位数乘完再全部加起来就是答案了。class Solution { public String multiply(String num1, String n.

2020-06-05 16:53:12 159

原创 字符串的排列(双指针 滑动窗口)

用双指针来完成这题。既然顺序无关也就说使串中所有元素的和为零即可。可以使用一个长度为256的数组来装字符元素,可以使用HashMap来完成,首先清点一下s1,每个字符的数量。然后用右指针遍历s2串,left指针则指向right的前面,如果right所指的位置是目标元素,则就可以该处字符减小1,要不然map中该元素就为-1,则就说明当前字符不是在目标范围内的,左指针需要右移,并将它们还原为0。一直到left和right构成的滑动窗口的范围达到s1数组的长度时,这时就算找到了,如果遍历完s2串都没有找到.

2020-06-03 01:22:37 99

原创 CodeForces #646 Div.2 B

B题给定一个数列,该数列由0和1构成,如果其中含有010或者101的子序列,则是不好的序列, 需要用最少的操作将它变为好序列。思路,有三种格式的序列是好的,比如00000…0000,111…111 ,1…110…000,000…0111…1;那么其他的形式只要能转换为这四种之一即可。那么可以求1的前缀和,然后先判断转换为全0或者全1的情况,然后再尝试逐一转换为前部分全0后部分全1 或者 前部分全1后部分全0.来看这2n+2种情况谁最小。import java.util.Scanner;

2020-06-01 18:16:00 96

原创 《高性能MySQL》第一章MySQL架构与历史(概括性描述)

MySQL逻辑架构第一层:连接处理,授权认证,安全等第二层:核心服务所在层,查询解析、分析、优化、缓存以及所有的内置函数,所有跨存储引擎的功能都在此层实现。第三层:存储引擎,负责数据的存储与提取,它是可根据应用场景自行选择的,甚至可以自己实现。并发控制支持读写锁。锁的颗粒可分为表锁与行锁。表锁: 锁的开销小,但是并发度低,读写锁,写锁的优先级高于读锁,所以写锁有可能会插入读锁队列,进而阻塞后面的读锁。行锁: 锁的开销大,但是并发度高。事务四个特性事务是的四个特性:ACID:A:原

2020-06-01 04:00:06 106

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除