Linux 系统为我们提供五种可用的 IO 模型: 阻塞式 IO 模型 非阻塞式 IO 模型 IO 多路复用模型 信号驱动 IO 模型 异步 IO 模型 IO处理过程 在聊IO模型之前,需要先了解一下Linux系统是怎么进行IO处理的: 当某个程序或已存在的进程/线程(后文将不加区分的只认为是进程)需要某段数据时,它只能在用户空间中属于它自己的内存中访问、修改,这段内存暂且称之为app buffer。假设需要的数据在磁盘上,那么进程首先得发起相关系统调用,通知内核去加载磁盘上的文件。但正常情况下,数据只能加载到内核…

2021年8月25日 0条评论 176点热度 3人点赞 agedcat_xuanzai 阅读全文

一般情况下,github.com已经被官方节流,正常的访问速度非常慢。我们可以用一些方法来进行加速,同时raw.githubusercontent.com也是可以正常访问的。 就在刚刚,要在raw.githubusercontent.com下一个文件,发现这个网站无法访问了!!!! 这不能忍啊,想办法解决一下吧。 首先,遇事不决先ping一下,出现如下错误: Ping 请求找不到主机 raw.githubusercontent.com。请检查该名称,然后重试。 这就是这个网址直接没法解析了啊。 然后考虑改hosts…

2021年8月24日 1条评论 650点热度 2人点赞 agedcat_xuanzai 阅读全文

InnoDB存储引擎在可重复读的隔离级别下解决了幻读问题,实现的方式正是多版本并发控制。多版本并发控制对读这个操作进行了优化,对写操作仍然是通过加锁来保证隔离性的,这样解决了读写冲突的问题。 多版本并发控制(MVCC) 是通过保存数据在某个时间点的快照来实现并发控制的。也就是说,不管事务执行多长时间,事务内部看到的数据是不受其它事务影响的,根据事务开始的时间不同,每个事务对同一张表,同一时刻看到的数据可能是不一样的。 简单来说,多版本并发控制 的思想就是保存数据的历史版本,通过对数据行的多个版本管理来实现数据库的并…

2021年8月22日 0条评论 302点热度 1人点赞 agedcat_xuanzai 阅读全文

在数据库的实际使用过程中,我们常常会遇到不希望数据被同时写或者读的情景,也就是读写冲突问题,例如秒杀场景下,两个请求同时读到系统还有库存1个,然后又先后把库存更新为0,这时候就会出现超卖的情况,这时候货物的实际库存和我们的记录就会对应不上了。 为了解决这种资源竞争导致的数据不一致等问题,我们需要有一种机制来进行保证数据的正确访问和修改,而在数据库中,这种机制就是数据库的并发控制。其中乐观并发控制,悲观并发控制和多版本并发控制是数据库并发控制主要采用的技术手段。 悲观并发控制 本质 维基百科:在关系数据库管理系统里,…

2021年8月22日 0条评论 229点热度 1人点赞 agedcat_xuanzai 阅读全文
页面

全站资源

2021年8月22日 0条评论 97点热度 0人点赞 agedcat_xuanzai 阅读全文

¶ 必读 如果要问一本就可以学习Git的书或者文章,毫无疑问我会推荐Git Pro2,绝对是良心之作啊 Git Pro 2 Git Pro2英文Github仓库 (opens new window) Git Pro2中文Gitbook (opens new window) Git Pro2对应的中文Markdown版本的仓库地址 (opens new window) Git Pro中文阅读 (opens new window) 其它资料 99%的时间在使用的Git命令 (opens new window) GIT分…

2021年8月19日 0条评论 136点热度 2人点赞 agedcat_xuanzai 阅读全文

题目描述 给你一个整数数组 nums,请你运用堆排序将该数组升序排列。 示例 1: 输入:nums = [5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:nums = [5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 提示: 1 <= nums.length <= 50000 -50000 <= nums[i] <= 50000 算法思路 运用堆排序在原数组的基础上完成排序的思路主要分为两步: 建立大根堆; 然后将大根堆最大的元素,也就是第一个元素,与大根堆中最后一…

2021年8月15日 0条评论 202点热度 0人点赞 agedcat_xuanzai 阅读全文

题目描述 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。 示例: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出: [1,2,4,7,5,3,6,8,9] 说明: 给定矩阵中的元素总数不会超过 100000 。 解题思路 这道题只需要模拟就可以了。这道题需要做的是三部分:一个是变向,一个是怎么对角移动坐标,最后一个是怎么处理边界条件。 先说变向问题,这个很好处理。首先用一个变量direc…

2021年8月15日 0条评论 202点热度 1人点赞 agedcat_xuanzai 阅读全文

题目描述 给定一个包含了一些 0 和 1 的非空二维数组 grid 。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。 找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。) 示例 1: [[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1,0,1,0,0,0,0,0,0,0,0], [0,1…

2021年8月14日 0条评论 118点热度 1人点赞 agedcat_xuanzai 阅读全文

题目描述 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例 2: 输入:head = [] 输出:[] 示例 3: 输入:head = [1] 输出:[1] 提示: 链表中节点的数目在范围 [0, 100] 内 0 <= Node.val <= 100 解题思路 这道题是关于链表操作的题。思路上比较简单,注意边界条件就好。 具体的方法如下: 如上图…

2021年8月14日 0条评论 102点热度 1人点赞 agedcat_xuanzai 阅读全文
12