版本号

接口幂等性的解决方案

余生长醉 提交于 2020-02-17 09:00:55
接口幂等性的解决方案 在编程中,幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数指的是那些使用相同参数重复执行也能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。比如说getIdCard()函数和setTrue()函数就是幂等函数。 幂等在我的理解里就是,一个操作不论被执行多少次,产生的效果和返回的结果都是一样的。 一个幂等的操作典型如:把编号为5的记录的A字段设置为0这种操作不管执行多少次都是幂等的。 一个非幂等的操作典型如:把编号为5的记录的A字段增加1这种操作显然就不是幂等的。 幂等的方案 1.查询操作:Select是天然的幂等操作。 查询一次和查询多次,在数据不变的情况下,查询的结果都是一样的。 2.删除操作:删除操作也是幂等的,删除一次和删除多次都是把数据删除。 因为删除操作通常是定向的,比如通过id去删除数据,如果该id在数据库中存在对应记录,则删除该记录;如果该id在数据库中不存在对应记录,也是执行的删除记录操作,只是没有实质性地删除到记录而已,却也不会有其他的副作用。 但是如果删除操作具有返回值的话,可能返回的结果会不一样,比如删除一条记录之后返回这条记录中的某个值,如果删除的数据不存在(已经在第一次的删除请求中被删除了),返回的就是空值了。 3.唯一索引

JVM(19)之 Class文件常量池

ぃ、小莉子 提交于 2020-02-17 07:34:01
开发十年,就只剩下这套架构体系了! >>> 在上一博文Class文件中,我们了解了Class文件的一些基础知识。他的整个内部结构就是一张很大的表,我们就是从这张表入手,一一分析每个部分的结构。继续看这张表:   接着上一博文所说,魔数后面分别是次版本号和主版本号。由上图可知其分别占用两个字节。   被蓝色框框住的就是次版本号,划红线的就是主版本号。再次说明,Class文件内部的数据是按照规则紧凑排列的,中间不会有空隙。   接下来就是说明常量的个数了。代表着常量池中有多少个常量,由于常量池中的常量数量不确定,所以才会有这个数据项。依然看上图可知该数据项是占用2个字节,因此顺着主版本号往后面数两个字节得到:0x002E(16进制),即十进制的51,也就是说常量池中有50项常量,索引从1到50。   这里所指的常量与JAVA代码中所说的常量有所不同,这里的常量主要包括字面量和符号引用,这两个概念很好理解。 字面量跟JAVA代码中的常量概念类似,如字符串、常量的值等等。 符号引用指的是类与接口的全限定名、字段、方法的名词和描述符。可以暂时理解为类、接口、字段、方法的名字。这里我们来回忆一下类加载机制中的解析阶段:他是将符号引用转化为直接引用。直接引用指的就是可以直接指向目标的指针。可以粗略的理解为:符号引用只是用一些符号来描述他要引用的目标,而直接引用才是真正的指向了他要引用的目标。

类文件结构简介

旧街凉风 提交于 2020-02-17 06:46:36
理解类加载机制的基础 类文件结构 java编译后会生成字节码文件(*.class,即类文件),其之所以能够“一次编写,到处运行”是因为字节码文件时平台无关的,这些类文件被各个平台上的虚拟机加载执行,即 字节码平台无关,虚拟机平台相关 。 任何一个 .class文件对应一个类/接口,但是类/接口可能通过 类加载器 直接生成,不一定定义在 .class文件中。 1.1 类文件结构 *.class 文件是一组8位为基础单位的二进制流(4位标识一个16进制数,所以两个16进制数标识一个8位)。如果一个数据项需要一个以上的8位存储空间,则按照高位在前big-endian的方式使用若干个8位进行存储。 数据类型 Class文件有两种数据类型: 无符号数:基本数据类型,u1/u2/u4/u8分别代表1/2/4/8个字节的无符号数,用来描述数字、索引引用、数量之和按照utf-8编码构成的字符串值。 表:有多个无符号数和其他表组成的复合数据类型,以“_info”结尾。用于描述有层次关系的复合结构的数据。 class文件结构 class文件本质就是一张表,构成class文件的数据项如图所示: 描述同一类型但是数量不定的多个数据时,经常使用一个前置的容量计数器加若干个连续的数据项的形式——称这一系列连续的数据为某一类型的集合。 如下代码编译: package org.fenixsoft.clazz;

查看Eclipse版本号的方法

空扰寡人 提交于 2020-02-16 06:54:49
查看Eclipse版本号的方法如下所示: 1:假设Eclipse已打开 Eclipse的菜单栏: Help-->About Eclipse 弹出框中会显示一排logo,点击eclipse的那个logo(鼠标悬停,提示“Eclipse.org”)即可显示你的eclipse的版本(Eclipse Platform)。如下图所示: 2:在Eclipse的安装目录下有.eclipseproduct文件,里面就有Eclipse的version(版本)信息,如下图所示: 3:Eclipse的目录中有一个readme的文件夹,里面有个html文件就可以看到当前eclipse的版本信息。如下所示:.../eclipse/readme/readme_eclipse.html 来源: https://www.cnblogs.com/godtrue/p/3330902.html

乐观锁和悲观锁的区别

余生颓废 提交于 2020-02-15 06:36:54
乐观锁 在关系数据库管理系统里,乐观并发控制(又名”乐观锁”,Optimistic Concurrency Control,缩写”OCC”)是一种并发控制的方法。它假设多用户并发的事务在处理时不会彼此互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。在提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事务又修改了该数据。如果其他事务有更新的话,正在提交的事务会进行回滚。乐观事务控制最早是由孔祥重(H.T.Kung)教授提出。 乐观并发控制的阶段 乐观并发控制的事务包括以下阶段: 1. 读取:事务将数据读入缓存,这时系统会给事务分派一个时间戳。 2. 校验:事务执行完毕后,进行提交。这时同步校验所有事务,如果事务所读取的数据在读取之后又被其他事务修改,则产生冲突,事务被中断回滚。 3. 写入:通过校验阶段后,将更新的数据写入数据库。 乐观并发控制多数用于数据争用不大、冲突较少的环境中,这种环境中,偶尔回滚事务的成本会低于读取数据时锁定数据的成本,因此可以获得比其他并发控制方法更高的吞吐量。 相对于悲观锁,在对数据库进行处理的时候,乐观锁并不会使用数据库提供的锁机制。一般的实现乐观锁的方式就是记录数据版本。 数据版本,为数据增加的一个版本标识。当读取数据时,将版本标识的值一同读出,数据每更新一次,同时对版本标识进行更新。当我们提交更新的时候

SpringCloud 的版本问题 (深入)

自作多情 提交于 2020-02-15 00:52:38
学过SpringCloud 的 同学 ,就应该知道,SpringCloud是一个生态 。 Spring Cloud 是一个由众多独立子项目组成的大型综合项目,每个子项目都维护着自己的发布版本号。Spring Cloud通过一个资源清单BOM(Bill of Materials) 来管理每个版本的子项目清单 。 为避免与子项目的发布号混淆,所以没有采用版本号的方式,而是通过命名的方式。这些版本名称的命名方式采用了伦敦地铁站的名称,同时根据字母表的顺序来对应版本时间顺序 比如:最早的发行版本: Angel ,第二个发行版本: Brixton ,然后是 Camden 、 Dalston 、 Edgware , Finchley , Greenwich , Hoxton.SR1 现在 最新的是Hoxton.SR1版本, 在上面的图片中,我们看到几个关于版本号的英文,这里解释一下 SNAPSHOT : 代表快照,也就是未完成的意思 GA :代表稳定版 RELEASE :最终版本,没有太大的问题。 当然 还有 一些不常见的,例如, Base :设计阶段。只有相应的设计没有具体的功能实现。 Alpha :软件的初级版本。基本功能已经实现,但存在较多的bug。 Bate :相对于Alpha已经有了很大的进步,消除了严重的BUG,但还存在一些潜在的BUG,还需要不断测试。 SR :  正式发布版

Docker常用命令

笑着哭i 提交于 2020-02-15 00:46:22
归纳总结docker安装的常用命令,包括一些容器的拉取 docker安装命令 yum -y install docker docker容器查询 docker search XXXX docker 拉取容器 docker pull XXXX:版本号 注: 不添加版本号则默认拉取最新版本,且下面搭建环境也无需添加版本号 查看已下载的镜像 docker images mysql环境搭建 docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:版本号 redis环境搭建 docker run -di --name=redis -p 6379:6379 redis:版本号 mongodb环境搭建 docker run -di --name=mongo -p 27017:27017 mongo:版本号 elasticsearch环境搭建 docker run -di --name=elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch:版本号 rabbitmq环境搭建 docker run -di --name=rabbitmq -p 5671:5617 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p

SqlServer_查看SQLServer版本信息

寵の児 提交于 2020-02-13 14:04:53
方法一: 执行sql语句 SELECT @@VERSION 方法二: 连接SQL Server Management Studio利用Object Explorer显示的主要版本号信息,显示当前实例产品版本号事11.0.6020 方法三: 看代理日志 方法四: 在 SQL Server Management Studio 中通过执行[sys].[xp_msver]获取版本号信息 [sys].[xp_msver] 方法五: SELECT SERVERPROPERTY('servername') AS 实例名, SERVERPROPERTY('ProductVersion') AS 实例版本, SERVERPROPERTY('Edition') AS 产品版本, SERVERPROPERTY('ProductLevel') AS 版本级别, @@VERSION AS 版本信息 来源: https://www.cnblogs.com/xysr-tom/p/10592447.html

【转载】如何查看sqlserver客户端的版本号信息

故事扮演 提交于 2020-02-13 14:03:14
在sqlserver的使用过程中,有时候可能会因为sqlserver版本过低等原因的导致无法附加以及还原数据库,我们可以通过sql server management studio软件的帮助菜单参看到详细的sqlserver版本号、数据访问组件等版本号信息。 首先打开你本地的sql server management studio软件,可以看到顶部菜单栏有一个【帮助】的菜单按钮,在其子菜单中找到【关于】,具体如下: 进入【关于】菜单页面后,我们可以看到详细的sqlserver版本号信息,还包含操作系统版本号、Microsoft MSXML版本号、Microsoft数据访问组件(MDAC)版本号等等,具体如下: 备注:原文转载自博主个人站 IT技术小趣屋 ,原文链接为 如何查看sqlserver客户端的版本号信息_IT技术小趣屋 。 博主个人技术交流群:960640092,博主微信公众号如下: 来源: https://www.cnblogs.com/xu-yi/p/11182879.html

innodb解决幻读

只愿长相守 提交于 2020-02-12 12:45:15
1. 结论 首先说结论,在RR的隔离级别下,Innodb使用MVVC和next-key locks解决幻读,MVVC解决的是普通读(快照读)的幻读,next-key locks解决的是当前读情况下的幻读。 2. 幻读是什么 事务A,先执行: update table set name=“hh” where id>3; 结果为: OK row xx 表名成功影响多少行数据 事务B,后执行,并且提交: insert into table values(11, uu); commit; 事务A,然后再select一下: select * from table where id>3 结果集为: … 11,uu … 事务A懵了,我特么不是id>3全部更新了吗 这次是已提交事务B对事务A产生的影响,这个影响叫做“幻读”。 幻读和不可重复读的区别是,前者是一个范围,后者是本身 3. 怎么解决的? 3.1. 当前读 所谓当前读,指的是加锁的select(S或者X), update, delete等语句。在RR的事务隔离级别下,数据库会使用next-key locks来锁住本条记录以及索引区间。 拿上面那个例子来说,在RR的情况下,假设使用的是当前读,加锁了的读 select * from table where id>3 锁住的就是id=3这条记录以及id>3这个区间范围,锁住索引记录之间的范围