版本号

怎样查看 MySQL 版本号

僤鯓⒐⒋嵵緔 提交于 2019-11-30 10:16:45
1. 在命令行中直接查看版本号 mysql -V 2. 在 mysql --help 中查找与版本相关的信息 mysql --help | grep Ver 3. 在mysql命令行里面查看版本信息 mysql -u root -p select version(); 4. 在mysql命令号里面查看status中的版本信息 mysql -u root -p status; 来源: https://www.cnblogs.com/aisowe/p/11578152.html

git项目版本操作

别来无恙 提交于 2019-11-30 08:35:01
1.git版本回退操作: <1>在master分支上修改test.txt,vim test.txt,添加说明"version1",保存并退出编辑 <2>追加目录下所有的文件: git add . <3>git commit -m "v1" <4>git push 此时,github上master分支下test.txt的版本号为V1 <5>继续修改test.txt文件,vim test.txt,添加说明"V2",保存并退出编辑 <6>追加目录下所有的文件: git add . <7>git commit -m "v2" <8>git push 此时,github上master分支下test.txt的版本号为V2 <9>现在如果需要回退到上个版本号V1,git 命令是:git reset --hard HEAD^,f58d703指的是版本ID号,是唯一的,此时发现版本已经回退到V1了,可以查看test.txt   如果需要回退多次版本号,只需在HEAD后修改git reset --hard HEAD~1000(回退到版本号1000,即具体的版本号) <10>如果需要回退到某一个版本(指定版本)号,可以使用git 命令:git reflog,显示所有的版本ID号: git reset --hard d0b3abf,可以回退到v2版本(git reset --hard

Java----IO流

萝らか妹 提交于 2019-11-30 04:29:17
1、标准设备输入、输出流: 2、 打印流 :把不同类型的数据 打印到控制台(标准输出设备)或者 文件中。 System.out————>标准输出流。out的类型为PrintStream类型。 3、 数据流 :用来读取 / 写出 基本数据类型和String的变量。 4、 对象流:用来持久化 和 反持久化对象 相比于比DataInput/OutStream更强大: 数据流只能持久化 和 反持久化 基本类型变量。 而对象流:还可以持久 和 反持久化一个对象。对象中可以包含基本类型的变量 和 引用变量。 可序列化的对象要满足的要求: 要 实现Serializable 接口 为类提供一个全局常量:可序列化版本号:private static final long serialVersionUID = 1122L; 序列化版本号的目的: 让序列化 和 反序列化时,有一个相同的版本号,反序列化时,能够成功还原成 原来的版本对象。 假若 没有显示定义这个序列化版本号,则程序运行时会自己生成一个版本号,若我们修改了类的属性,则下次运行程序的序列化版本号就会改变。那么我们再反序列化时,就会失败。 static 和 transient修饰属性,属性不能倍序列化。 5、 任意存取文件流:RandomAccessFile 继承体系: 应用:迅雷多线程断点下载文件 来源: https://blog.csdn

设计线程安全的类

◇◆丶佛笑我妖孽 提交于 2019-11-30 03:04:47
设计线程安全的类 有时调用是非线程安全的,此时必须把有安全隐患的方法用同步代码块包括起来,所谓线程安全的类就是将同步机制封装在类内部,这样方法调用时就不存在线程安全问题了。 要设计线程安全的类首先寻找可能暴露在外的字段,包括private但是内部方法修改的。然后将这些字段用同步手段保护起来,不仅仅要在修改时保护,在访问时也要保护,以保证时刻读到正确的值。 在保护时注意维护不变性条件,例如当一个类存在缓存机制时,会有版本号和缓存值一一对应的情况,取值时根据版本号取缓存,如果不一致再计算新值并更新版本号,但是这种更新不是完全同步的,多线程下会有两者不一致的情况,此时要把涉及更新的步骤同步起来保证一致。 volatile volatile并不保证原子性,只保证可见性。所以使用时必须保证对该字段的每次更新都不依赖从前的值,且不构成不变性条件,此时这种保护是足够的。 final 以不可变的方式保证线程安全(对于引用类型必须把它内部的字段全部设置成final才能绝对保证线程安全) threadlocal 它解决了线程共享的问题,new一个threadlocal方法set一个值再get就能得到,它相当于一个线程私有的容器。 避免this引用溢出 在一个类的构造方法中将this赋值给其他字段,这样其他线程可能获取该字段的值来获取this,一旦获取到this其中的final字段也就变成不安全的

java里面的悲观锁和乐观锁

不问归期 提交于 2019-11-29 23:58:03
最近面试,面试官提到了悲观锁和乐观锁,感觉回答的不是很好,特此总结记录. 简单来说,悲观锁就是凡事都认为会出现最坏的情形,而乐观锁就是认为凡事都以最好的情形发展,对应一个消极,一个积极. 悲观锁 具有强烈的独占和排他特性。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态.(摘自百度百科) 传统关系型数据库里面的很多锁就是采用的这种机制,例如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。java里面的synchronize和ReentrantLock等重入锁就是采用的这种机制; 乐观锁 总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本号机制或CAS操作实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。在Java中java.util.concurrent.atomic包下面的原子变量类就是使用了乐观锁的一种实现方式CAS实现的。 乐观锁的两种实现方式: 1.版本号机制 即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个 “version” 字段来实现

软件版本命名规范详解

核能气质少年 提交于 2019-11-29 23:37:46
1. 软件版本阶段说明 Base版: 此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是页面中的功能都没有做完整的实现,只是做为整体网站的一个基础架构。 Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。 Beta版: 该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI。 RC版: 该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几。 Release版: 该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。 2. 版本命名规范   软件版本号由四部分组成,第一个1为主版本号,第二个1为子版本号,第三个1为阶段版本号,第四部分为日期版本号加希腊字母版本号,希腊字母版本号共有5种,分别为:base、alpha、beta、RC、release。例如:1.1.1.051021_beta。 版本号定修改规则: 主版本号(1): 当功能模块有较大的变动,比如增加多个模块或者整体架构发生变化

pom.xml文件中properties有什么用

戏子无情 提交于 2019-11-29 23:37:23
properties标签的作用: 在标签内可以把版本号作为变量进行声明,后面dependency中用到版本号时可以用${变量名}的形式代替,这样做的好处是:当版本号发生改变时,只有更新properties标签中的变量就行了,不用更新所有依赖的版本号 来源: https://www.cnblogs.com/wskb/p/11539694.html

02_git查看提交版本记录和回退版本

核能气质少年 提交于 2019-11-29 22:35:32
查看版本记录和回退版本 1. 查看版本提交记录 git log # 显示每个版本的详情信息, 可以有些版本显示不全, 那么此时就可以使用 git reflog git log --graph --pretty=onelin # 把版本以一行显示 git reflog # 以第一行显示一个版本记录,显示所有的版本记录 2. 版本回退 版本回退有两种方法,一种是使用相对于HEAD的多少个版本, 另一种是使用版本号 git reset --hard HEAD^ HEAD 当前最新版本 HEAD^ / HEAD~1 当前版本的上一个版本 HEAD^ 当前版本的前两个版本,以此类推 HEAD~6 当前版本的前6个版本,以此类推 git reset --hard 版本号 当版本非常多时选择这种方法。版本号就是每次commit生成的hash值,只需要取前几位数就可以了,不需要全取完。 git reset --hard b636 来源: https://www.cnblogs.com/nichengshishaonian/p/11538136.html

秒杀系统分析

时光毁灭记忆、已成空白 提交于 2019-11-29 22:10:08
/*--> */ /*--> */ 一、秒杀核心业务分析 应用:商品抢购、优惠券的领取 技术难点: 短时高并发、负载压力大 读多写少 竞争资源有限,不能多买,不能少买,不能重买 重要点:修改库存 二、关于锁的那些事: 1、悲观锁:在数据处理过程中,将数据处于锁定状态【依靠数据库提供的锁机制】 使用场景:写多读少,保证数据安全 2、乐观锁:在数据提交更新是,才会正式对数据的冲突与否进行检测。如果发现冲突,让用户决定如何去做或者程序自动重试。 使用场景:读多写少,提高系统吞吐量 乐观锁只是在更新表的那一刻锁表,其他时间不锁表,所以相对于悲观锁,吞吐量更高。 三、秒杀核心服务实战: 1、基于mysql通过版本号实现 update t_goods_info set amount = amount - #{buys} , version = version+1 where code = #{code} and version = #{version} 缺点:需要加version字段 2、基于mysql通过状态实现 update t_goods_info set amount = amount - #{buys} where code = #{code} and amount - #{buys} >=0 3、使用缓存: 基于redis实现:利用watch指令在redis事务中提供CAS的能力