版本号

轻松理解MYSQL MVCC 实现机制

久未见 提交于 2019-12-06 02:24:38
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/whoamiyang/article/details/51901888 1. MVCC简介 1.1 什么是MVCC MVCC是一种多版本并发控制机制。 1.2 MVCC是为了解决什么问题? 大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和MVCC–多版本并发控制来一起使用. 大家都应该知道,锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,能降低其系统开销. 1.3 MVCC实现 MVCC是通过保存数据在某个时间点的快照来实现的. 不同存储引擎的MVCC. 不同存储引擎的MVCC实现是不同的,典型的有乐观并发控制和悲观并发控制. 2.MVCC 具体实现分析 下面,我们通过InnoDB的MVCC实现来分析MVCC使怎样进行并发控制的. InnoDB的MVCC,是通过在每行记录后面保存两个隐藏的列来实现的,这两个列,分别保存了这个行的创建时间,一个保存的是行的删除时间。这里存储的并不是实际的时间值,而是系统版本号(可以理解为事务的ID),没开始一个新的事务,系统版本号就会自动递增

Redis Sentinel机制与用法(一)

≯℡__Kan透↙ 提交于 2019-12-06 01:51:45
Sentinel spring 集群配置: 见下方留言代码。 概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自懂切换。 它的主要功能有以下几点 不时地监控redis是否按照预期良好地运行; 如果发现某个redis节点运行出现状况,能够通知另外一个进程(例如它的客户端); 能够进行自动切换。当一个master节点不可用时,能够选举出master的多个slave(如果有超过一个slave的话)中的一个来作为新的master,其它的slave节点会将它所追随的master的地址改为被提升为master的slave的新地址。 Sentinel支持集群 很显然,只使用单个sentinel进程来监控redis集群是不可靠的,当sentinel进程宕掉后(sentinel本身也有单点问题,single-point-of-failure)整个集群系统将无法按照预期的方式运行。所以有必要将sentinel集群,这样有几个好处: 即使有一些sentinel进程宕掉了

乐观锁与悲观锁的简单区别

最后都变了- 提交于 2019-12-05 21:50:40
乐观锁和悲观锁都是用于解决并发场景下的数据竞争问题,但是却是两种完全不同的思想。它们的使用非常广泛,也不局限于某种编程语言或数据库。 乐观锁的概念 所谓的乐观锁,指的是在操作数据的时候非常乐观,乐观地认为别人不会同时修改数据,因此乐观锁不会上锁,只有在执行更新的时候才会去判断在此期间别人是否修改了数据,如果别人修改了数据则放弃操作,否则执行操作。 悲观锁的概念 所谓的悲观锁,指的是在操作数据的时候比较悲观,悲观地认为别人一定会同时修改数据,因此悲观锁在操作数据时是直接把数据上锁,直到操作完成之后才会释放锁,在上锁期间其他人不能操作数据。 乐观锁的实现方式 乐观锁的实现方式主要有两种,一种是CAS(Compare and Swap,比较并交换)机制,一种是版本号机制。 CAS机制 CAS操作包括了三个操作数,分别是需要读取的内存位置(V)、进行比较的预期值(A)和拟写入的新值(B),操作逻辑是,如果内存位置V的值等于预期值A,则将该位置更新为新值B,否则不进行操作。另外,许多CAS操作都是自旋的,意思就是,如果操作不成功,就会一直重试,直到操作成功为止。 版本号机制 版本号机制的基本思路,是在数据中增加一个version字段用来表示该数据的版本号,每当数据被修改版本号就会加1。当某个线程查询数据的时候,会将该数据的版本号一起读取出来,之后在该线程需要更新该数据的时候

SpringCloud Caused by: org.springframework.boot.web.server.WebServerException: Unable to start embedded

柔情痞子 提交于 2019-12-05 21:01:41
出现此问题,有可能是spring cloud 与spring boot 版本不匹配引发的问题,此次用的版本是: Finchley.RC1 经过一番关键字查找,发现spring cloud 与spring boot有着比较严格的版本匹配。不能再像开发单体应用时,随时变更spring boot的版本。 现将版本对应规则写下来,引用的是其他网友的博客。 来源:https://www.cnblogs.com/it-taosir/p/9979579.html 一、常见版本号说明   举个瓜:2.0.3 RELEASE   2:主版本号,当功能模块有较大更新或者整体架构发生变化时,主版本号会更新   0:次版本号。次版本表示只是局部的一些变动。   2:修改版本号。一般是bug的修改或者是小的变动   RELEASE:希腊字母版本号。此版本号用户标注当前版本的软件处于哪个开发阶段 二、希腊字母版本号   Base:设计阶段。只有相应的设计没有具体的功能实现。   Alpha:软件的初级版本。基本功能已经实现,但存在较多的bug。   Bate:相对于Alpha已经有了很大的进步,消除了严重的BUG,但还存在一些潜在的BUG,还需要不断测试。   RELEASE:最终版本,没有太大的问题。 三、SpringCloud的版本号   1)为什么springcloud版本用的是单词而不是数字呢?   

毛阳阳11月27日随笔

放肆的年华 提交于 2019-12-05 20:25:22
Linux一般有三个主要部分,内核命令解释成实用工具。内核是系统的心脏,是运行程序和管理磁盘机打印机等硬件设备的核心程序。shell是系统的用户界面提供了用户与内核进行交互操作的一种接口。编辑器用于编辑文件,过滤器用于接收数据并过滤数据交互程序允许用户发送信息或接收来自其他用户的信息。Linux的版本分为内核版本和发行版本两种。版本号的格式通常为主,版本号,翅膀买号修正好,其中四版本号还有特定的意义,如果是偶数,则就表示该内核是一个可以放心使用的稳定吧,如果是奇数,则表示该内核加入了某些测试的新功能,是一个内部可能存在bug的测试版。Linux准备两个分区,一个是用户保存系统和数据的跟分局,另一个是交换分区。 来源: https://www.cnblogs.com/206740a/p/11945234.html

android studio 初印象

旧街凉风 提交于 2019-12-05 20:05:53
ANSROID STUDIO sdk 目录 build-tools目录,存放各版本Android的各种编译工具。 docs目录,存放开发说明文档。 extras\android目录,存放兼容低版本的新功能支持库,比如android-support-v4.jar、v7的各种支持库、 v13以上兼容库等。 platforms目录,存放各版本Android的资源文件。 platform-tools目录与tools目录,存放常用的开发辅助工具,如数据库管理工具sqlite3.exe、模拟器管 理工具emulator.exe samples目录,存放各版本Android常用功能的demo源码。 sources目录,存放各版本Android的API开放接口源码。 system-images目录,存放模拟器各版本的系统镜像与管理工具 androidStudio 编译 选择菜单Build→Make Project,编译整个项目下的所有模块。 选择菜单Build→Make Module ***,编译指定名称的模块。 选择菜单Build→Clean Project,然后选择菜单Build→Rebuild Project,先清理项目,再对整个项目 重新编译。 AS下的目录结构 manifests子目录,下面只有一个xml文件,即AndroidManifest.xml,是App的运行配置文件。

NPM

与世无争的帅哥 提交于 2019-12-05 17:53:32
官方网站,package.json guide: https://docs.npmjs.com/files/package.json ===== 以下转自; http://www.runoob.com/nodejs/nodejs-npm.html NPM 使用介绍 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用。 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。 由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装。命令如下,出现版本提示表示安装成功: $ npm -v 2.3.0 如果你安装的是旧版本的 npm,可以很容易得通过 npm 命令来升级,命令如下: $ sudo npm install npm -g /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js npm@2.14.2 /usr/local/lib/node_modules/npm 如果是 Window 系统使用以下命令即可: npm install npm

产品需求文档 PRD(上)

末鹿安然 提交于 2019-12-05 17:39:08
•  深刻理解三大文档的写作目的与应用场景 •  理解并掌握PRD文档的用途与作用 •  理解并掌握PRD文档:     – 写作思路   – 写作方法   – 写作格式 ♦  产品需求文档(Product Requirement Document, PRD)的英文简称    –  PRD文档向上是对MRD内容的继承与发展,向下则是要把MRD文档里面的各种理论要求     技术化,向研发部门与设计部门说明产品的功能和性能要求。   –  PRD文档是产品文档中最底层最细致的文档,所以写作的时候,需要细致耐心。 --------------------------------------------------------------- 再看下这三个文档的区别 •  BRD-这么做有什么好处,并说明好处在哪里    –  举例:唐僧出发前,参见唐黄,告诉唐黄西去取经的重要意义与大兴佛法的好处,唐黄答应,并发放免签     护照,于是唐僧带着任务出发了。 •  MRD- 通过BRD明确了这个事情值得一做后,描述应该怎么做,并说明这么做的原因    –  举例:唐僧上路了,但是他需要选择走哪条路线,带几个人,为什么这么走,为什么带这些人,要说清楚       •  A路线:妖怪多     •  B路线:神仙多     •  C路线:美女多     •  经过分析,唐三藏决定C路线 • 

u-boot

冷暖自知 提交于 2019-12-05 17:28:42
1.解压好u-boot后,打开uboot根目录的README文件,在software configuration 里有写明,如果要针对某个单板进行配置,需要执行:make <board_name>_config 其中uboot支持的board_name可以在根目录的include/configs/下查看。 2.makefile 2.1 uboot version确定 (Makefile 24-29行) U_BOOT_VERSION “1.3.4xyz” 1)uboot版本号分为4个级别: VERSION : 主板号 PATCHLEVEL : 次版本号 SUBLEVEL : 再次版本号 EXTRAVERSION : 另外附加的版本信息 这4个用 . 分隔开共同构成了最终的版本号。 2)makefile中版本号最终生成一个变量U_BOOT_VERSION,这个变量记录了Makefile中配置的版本号。 Include/version_autogenerated.h文件是编译过程中自动生成的一个文件,所有源目录中没有,但是编译过后的uboot中就有了。它里面的内容是一个宏定义,宏定义的值就是我们在Makefile中配置的uboot版本号。 3)验证方法:自己修改主makefile中几个version有关的变量,然后编译uboot,然后烧录到SD卡中,从SD卡中启动