- 告别if-else逻辑分支,让编程更优雅
java干货
javaandroid开发语言
在开发过程中,我们常常会遇到遗留系统中充斥着大量if-else语句的代码。这些代码不仅难以维护,还容易引入错误。本文将介绍如何通过多种方式优化if-else的使用,使代码更具可读性、可维护性和扩展性。原始代码:包含过多if-else语句的示例以下是一个典型的if-else代码片段,用于根据运输类型计算运费:public class ShippingCostCalculator { public
- Maven部署SpringBoot应用至K8s完全手册(Jenkins或bamboo)
茶尼
一键部署远程控制网络相关Spring系列+深度CodingK8s云原生与容器
愿众卿此去前程似锦、不负少年壮志凌云。在SpringCloud微服务的项目过程中,根据前期的调研和讨论,决定使用K8s作为服务编排的工具(更贴切的讲应该是容器编排,因为使用Docker进行服务容器化)。经过几番的测试和试验之后,从开发到部署的过程逐渐清晰,特形成此文,以后备查,也供大家参考。在查看下方之前,请确保K8s集群及Docker仓库已经部署完成,如果在部署教程中遇到任何问题,可查看本人相关
- VMD插件—DensityCalculator:计算模拟轨迹的粒子密度分布图
咸鱼啦啦
经验分享开发语言材料工程
一、DensityCalculator简介“在分子动力学(MD)模拟中,原子级的结构信息表征是材料建模和模拟领域研究人员的一项必要任务。密度分布的可视化通常是结构表征中最重要的属性之一。VisualMolecularDynamics(VMD)是一种广泛使用的分子可视化程序包,它不仅可以可视化复杂的分子系统,还可以通过集成特殊插件或运行内部生成的TCL脚本来执行分析。但是,密度分析仍不是VMD的内置
- Python3 【数学运算】项目实战:5个实战项目案例
李智 - 重庆
Python精讲精练-从入门到实战python经验分享案例学习编程技巧项目实战
Python3【数学运算】项目实战:5个实战项目案例本文展示5个实用性强且代码简洁的Python数学运算迷你项目,涵盖金融、教育、工程等场景,每个项目均提供完整代码、注释和测试案例:项目1:房贷计算器(金融数学)目标:计算每月还款额和总利息importmathdefmortgage_calculator(principal,annual_rate,years):monthly_rate=annua
- 利用多态和普通方式实现计算器功能
长河落日O
c++算法开发语言
//利用普通方式和多态方式实现计算器功能#include#includeusingnamespacestd;//利用普通方式实现classcalculator{public://输入两个数字intnum1;intnum2;intresult(stringoper){intres;boolvalidInput=false;while(!validInput)//验证输入运算符的有效性{switch(
- python数据分析之matplotlib绘图 plt 的使用
OpenCv学堂
视觉_Opencv
废话不多说,先上一张图:完整代码以及数据:https://download.csdn.net/download/bamboo265925/11548633(提供支持,公众号:海之鹰工作室)importosimportmathimportmatplotlib.pyplotaspltdefreadTxtShow(rootdir):withopen(rootdir,'r',encoding='utf-8
- OpenHarmony开发自测试执行框架_openharmony tdd testsize
2401_89317507
tdd
staticvoidSetUpTestCase(void);staticvoidTearDownTestCase(void);voidSetUp();voidTearDown();};voidCalculatorSubTest::SetUpTestCase(void){//inputtestsuitsetupstep,setupinvokedbeforealltestcases}voidCalcu
- Day33【AI思考】-函数求导过程 的优质工具和网站
一个一定要撑住的学习者
#AI深度思考学习方法人工智能
文章目录**函数求导过程**的优质工具和网站**一、动态图形工具**1.**Desmos(网页端)**2.**GeoGebra(全平台)****二、分步推导工具**3.**WolframAlpha(网页/App)**4.**Symbolab(网页/App)****三、专项练习工具**5.**DerivativeCalculator(网页)**6.**Photomath(移动端)****四、编程工具
- ARC碱金属Rydberg状态计算器软件包-2.0.1
夏勇兴
本文还有配套的精品资源,点击获取简介:此标题"ARC_Alkali_Rydberg_Calculator-2.0.1-cp27-macosx_10_6_x86_64.whl"为一个特定版本的PythonWheel软件包,旨在计算碱金属原子的Rydberg状态。适用于Python2.7版本,专为macOS10.6(SnowLeopard)64位架构设计。Rydberg状态是原子物理学中的一个重要概念
- java枚举实现简单的控制台计算器
Roc-xb
java开发语言
本文教程主要是用java枚举的方式实现一个简单的加减乘除计算器。packagecom.ruoyi;importjava.util.Scanner;publicenumCalculator{ADDITION
- Go语言开发高效的RPC服务的方法
ac-er8888
golangrpc开发语言
在Go语言中开发高效的RPC(远程过程调用)服务,可以通过以下几个关键步骤和方法来实现:一、定义服务接口首先需要定义需要提供的RPC方法及其参数和返回值。可以使用Go语言的interface类型来定义RPC接口,同时也可以为其添加必要的标记(如rpc)以便使用框架自动生成相关代码。例如:typeCalculatorinterface{Add(a,bint)int}二、注册服务使用Go语言的反射机制
- python程序设计期末大作业,python大作业代码100行
chatgpt001
人工智能
大家好,小编来为大家解答以下问题,python期末大作业代码200行带批注,python程序设计期末大作业,今天让我们一起来看看吧!#题目:利用Python实现一个计算器,可以计算小数复数等importredefcalculator(string):#去除括号函数defget_grouping(string):flag=Falseret=re.findall('\(([^()]+)\)',stri
- Privacy Policy
Green_Mage
The"CentripetalForceCalculator"apprespectsandprotectstheprivacyofalluserswhousetheservice.Inordertoprovideyouwithmoreaccurateandmorepersonalizedservices,the"CentripetalForceCalculator"appwilluseanddis
- JS 实现链式调用
朝阳39
#JavaScriptjavascript
什么是链式调用?链式调用(ChainingMethodCalls)是一种编程技巧,即连续调用一个类中的多个方法,比如//创建一个计算机对象实例constcalc=newCalculator();//使用链式调用add方法,实现连续累加constresult=calc.add(1).add(2).result;console.log(result);//输出:3技术要点支持链式调用的对象方法,必须返
- Flutter之CRC校验
AiFlutter
网络
在线CRC校验网站链接:OnlineCRC-8CRC-16CRC-32CalculatorSunshine'sHomepage-OnlineCRCCalculatorJavascript1.CRC算法介绍CRC(CyclicRedundancyCheck)校验算法是一种广泛应用于数据通信和存储系统中的错误检测方法,主要用于检测数据在传输过程中是否发生了变化。CRC算法的具体实现过程如下1.将待发送
- C#按引用传递参数
Jarrett_Zheng
C#与上位机c#
与按值传递参数,实参和形参使用的是两个不同内存中的值不同,按引用传递参数,引用参数是一个对变量的内存位置的引用,不会创建新的存储位置。按引用传递参数的使用方式是在方法声明和引用时在传参前加ref修饰usingSystem;namespaceCalculatorApplication{classNumberManipulator{publicvoidswap(refintx,refinty){int
- 用Linux shell编的一个小计算器
deflag
Linuxshelllinuxinput
#!/bin/shecho-n"welcometomyprogrammingworld"echo-n"Thisprogramisacalculator"operator="+-x/exit"echo"pleaseinputtwodigits:"readnumber1number2selectiin$operatordocase$iin+)result=$(($number1+$number2))e
- Qt 简约美观的加载动画 小沙漏风格 第六季
Halsey Walker
QTqt数据库开发语言
这次和大家分享一个沙漏风格的加载动画效果如下:这是本系列的第六季了,本次内容的关键在于cubicTo函数的使用,在这里分享一个非常好用的网站https://www.desmos.com/calculator/cahqdxeshd在这上面可以手动拖动贝塞尔曲线的控制点,并且显示了起终点和两个控制点的精确坐标,这样来使用qt的cubicTo函数就非常方便了.一共三个文件,可以直接编译运行//main.
- CSE13S c++ programme
zhuyu0206girl
c++开发语言
Assignment4Calculator1IntroductionItiscommonknowledgethatcomputerscientistshaveveryfewhobbies.Oneofthehobbiesthatalmosteverycomputersciencemajorhasismakingworseversionsofsoftwarethatalreadyexists.Whil
- 嵌入式Qt 计算器界面设计代码重构
嵌入式_笔记
Qt重构
一.计算器界面设计代码重构计算器界面设计:嵌入式Qt计算器界面设计-CSDN博客重构的概念:代码实现与代码重构的不同:软件开发过程:什么样的代码需要重构:计算器界面代码重构的框架设计:实验:计算器界面设计代码重构目录:QCalculatorUI.h:#ifndef_QCALCULATORUI_H_#define_QCALCULATORUI_H_#include#include#includecla
- 等额本金VS等额本息计算器来了
勇敢的打工人海励
python开发语言
最近大家都在讨论存量房贷下调利率的事情,今天我们来算一下房贷利率下调之后能省下多少钱一、贷款计算器-等额本金VS等额本息#贷款计算器classLoanCalculator:#等额本金还款方式defaverage_capital(self,loan_amount,loan_years,rate_year):"""每月还款金额=(借款金额/期数)+(借款本金-累计已还款金额)*月利率:paramloa
- 9.4 GWAS:显著性阈值确定——GEC
Wei_Sun
常用的显著性阈值确定方法是:Bonferronicorrection=显著性水平(0.01/0.05)/检验次数(numberofdetectedmarkers)Bonferroni校正P值是最严格的多重检验校正方法,由于SNP实际上不全是独立事件,可以通过LD计算,得到有效SNP个数,即Me,可以降低Bonferroni校正的严格性。GEC(GeneticTypeIerrorcalculator
- Pytest fixture使用
Jenny测试开发
pytestpython职场和发展
fixture脚手架(夹具)其实就是自定义前面的前置和后置操作:当然,我可以给你一个使用pytest的Python测试框架中的fixture的实例。假设我们有一个简单的类Calculator,它有基本的加法和减法方法,我们想为这些方法编写测试。首先是我们的Calculator类,通常这将保存在你的项目中的一个文件里,比如calculator.py:classCalculator:defadd(se
- C++类和对象-多态->案例1计算器类、案例2制作饮品、案例3电脑组装需求分析和电脑组装具体实现
�西瓜�
c++开发语言visualstudio
#includeusingnamespacestd;#include//分别利用普通写法和多态技术实现计算器//普通写法classCalculator{public:intgetResult(stringoper){if(oper=="+"){returnm_Num1+m_Num2;}elseif(oper=="-"){returnm_Num1-m_Num2;}elseif(oper=="*"){
- Single layer coil calculator
逍遥alan
Averyprofessionalandpracticalcalculator.Canhelpuserscalculatetheparametersofsinglelayercoilinductanceandotherrelatedparameters.Theuserinputsparameterssuchasinductance,bobbindiameter,andcoillength.Clic
- java.构造器的调用
好问者
java开发语言
importjava.util.Scanner;publicclassInput{publicstaticvoidmain(String[]args){calculatorcal=newcalculator("xiaohong",23.6);System.out.println(cal.name+"\t"+cal.n);}}classcalculator{Stringname;doublen;pu
- CFA一级前导:: 计算器使用教程1~7 第一节
weixin_52505631
CFAI级职场和发展学习方法金融笔记其他经验分享
OverviewofCalculatorOperations00:26:20点击观看00:34:04点击观看00:42:11点击观看最常用的计算器系列:BAIIPlusiOSapp:BAFinancialCalculator考场推荐:德州仪器TexasInstrumentsBAII+标题按键上方的符号:第二功能键通过先按2ND键,再按每个按钮,切换到该按钮的第二功能键计算机——功能切换区按钮功能K
- AWS云创建EC2与使用注意事项-踩坑记录
weixin_30511039
运维数据库大数据
目录AWS一创建EC2(云服务器)二、AWS注意事项三、AWS申请SSL证书AWS文章GitHub地址:点我AWS云服务器价格计算器AWSWEB价格计算器网址https://calculator.s3.amazonaws.com/index.htmlAWS免费套餐详情AWS新注册账号,12个月免费套餐详情https://amazonaws-china.com/cn/free/faqs/一创建EC2
- 用ipad 开启师生间的科学之旅
三门峡745沈莉红
参加勇气读书会第224天书名:杨晓哲的《五维突破》时间:2019年8月23日晚上9点到10点阅读内容:第四章《第三维度/工具立体》:“工具立体策略单”之精心选择丰富多彩的APP第131页到138页读书笔记分享2.用ipad开启师生间的科学之旅实用的物理仿真:Algodoo简易的机械搭建:ForceEffectM强大的数学应用:WolframAlpha简单的手写计算机:Calculator直观的人体
- 215 - Spreadsheet Calculator (UVA)
天天AZ
UVA算法
题目链接如下:OnlineJudge写了两个版本(都能AC),都感觉不太利索,但暂时想不出更好的了:版本一:#include#include#include#include//#definedebugintr,c;std::stringinput[20][10];intans[20][10];std::vectorneed[200];std::vectorvec;voidprocess(intlo
- Hadoop(一)
朱辉辉33
hadooplinux
今天在诺基亚第一天开始培训大数据,因为之前没接触过Linux,所以这次一起学了,任务量还是蛮大的。
首先下载安装了Xshell软件,然后公司给了账号密码连接上了河南郑州那边的服务器,接下来开始按照给的资料学习,全英文的,头也不讲解,说锻炼我们的学习能力,然后就开始跌跌撞撞的自学。这里写部分已经运行成功的代码吧.
在hdfs下,运行hadoop fs -mkdir /u
- maven An error occurred while filtering resources
blackproof
maven报错
转:http://stackoverflow.com/questions/18145774/eclipse-an-error-occurred-while-filtering-resources
maven报错:
maven An error occurred while filtering resources
Maven -> Update Proje
- jdk常用故障排查命令
daysinsun
jvm
linux下常见定位命令:
1、jps 输出Java进程
-q 只输出进程ID的名称,省略主类的名称;
-m 输出进程启动时传递给main函数的参数;
&nb
- java 位移运算与乘法运算
周凡杨
java位移运算乘法
对于 JAVA 编程中,适当的采用位移运算,会减少代码的运行时间,提高项目的运行效率。这个可以从一道面试题说起:
问题:
用最有效率的方法算出2 乘以8 等於几?”
答案:2 << 3
由此就引发了我的思考,为什么位移运算会比乘法运算更快呢?其实简单的想想,计算机的内存是用由 0 和 1 组成的二
- java中的枚举(enmu)
g21121
java
从jdk1.5开始,java增加了enum(枚举)这个类型,但是大家在平时运用中还是比较少用到枚举的,而且很多人和我一样对枚举一知半解,下面就跟大家一起学习下enmu枚举。先看一个最简单的枚举类型,一个返回类型的枚举:
public enum ResultType {
/**
* 成功
*/
SUCCESS,
/**
* 失败
*/
FAIL,
- MQ初级学习
510888780
activemq
1.下载ActiveMQ
去官方网站下载:http://activemq.apache.org/
2.运行ActiveMQ
解压缩apache-activemq-5.9.0-bin.zip到C盘,然后双击apache-activemq-5.9.0-\bin\activemq-admin.bat运行ActiveMQ程序。
启动ActiveMQ以后,登陆:http://localhos
- Spring_Transactional_Propagation
布衣凌宇
springtransactional
//事务传播属性
@Transactional(propagation=Propagation.REQUIRED)//如果有事务,那么加入事务,没有的话新创建一个
@Transactional(propagation=Propagation.NOT_SUPPORTED)//这个方法不开启事务
@Transactional(propagation=Propagation.REQUIREDS_N
- 我的spring学习笔记12-idref与ref的区别
aijuans
spring
idref用来将容器内其他bean的id传给<constructor-arg>/<property>元素,同时提供错误验证功能。例如:
<bean id ="theTargetBean" class="..." />
<bean id ="theClientBean" class=&quo
- Jqplot之折线图
antlove
jsjqueryWebtimeseriesjqplot
timeseriesChart.html
<script type="text/javascript" src="jslib/jquery.min.js"></script>
<script type="text/javascript" src="jslib/excanvas.min.js&
- JDBC中事务处理应用
百合不是茶
javaJDBC编程事务控制语句
解释事务的概念; 事务控制是sql语句中的核心之一;事务控制的作用就是保证数据的正常执行与异常之后可以恢复
事务常用命令:
Commit提交
- [转]ConcurrentHashMap Collections.synchronizedMap和Hashtable讨论
bijian1013
java多线程线程安全HashMap
在Java类库中出现的第一个关联的集合类是Hashtable,它是JDK1.0的一部分。 Hashtable提供了一种易于使用的、线程安全的、关联的map功能,这当然也是方便的。然而,线程安全性是凭代价换来的――Hashtable的所有方法都是同步的。此时,无竞争的同步会导致可观的性能代价。Hashtable的后继者HashMap是作为JDK1.2中的集合框架的一部分出现的,它通过提供一个不同步的
- ng-if与ng-show、ng-hide指令的区别和注意事项
bijian1013
JavaScriptAngularJS
angularJS中的ng-show、ng-hide、ng-if指令都可以用来控制dom元素的显示或隐藏。ng-show和ng-hide根据所给表达式的值来显示或隐藏HTML元素。当赋值给ng-show指令的值为false时元素会被隐藏,值为true时元素会显示。ng-hide功能类似,使用方式相反。元素的显示或
- 【持久化框架MyBatis3七】MyBatis3定义typeHandler
bit1129
TypeHandler
什么是typeHandler?
typeHandler用于将某个类型的数据映射到表的某一列上,以完成MyBatis列跟某个属性的映射
内置typeHandler
MyBatis内置了很多typeHandler,这写typeHandler通过org.apache.ibatis.type.TypeHandlerRegistry进行注册,比如对于日期型数据的typeHandler,
- 上传下载文件rz,sz命令
bitcarter
linux命令rz
刚开始使用rz上传和sz下载命令:
因为我们是通过secureCRT终端工具进行使用的所以会有上传下载这样的需求:
我遇到的问题:
sz下载A文件10M左右,没有问题
但是将这个文件A再传到另一天服务器上时就出现传不上去,甚至出现乱码,死掉现象,具体问题
解决方法:
上传命令改为;rz -ybe
下载命令改为:sz -be filename
如果还是有问题:
那就是文
- 通过ngx-lua来统计nginx上的虚拟主机性能数据
ronin47
ngx-lua 统计 解禁ip
介绍
以前我们为nginx做统计,都是通过对日志的分析来完成.比较麻烦,现在基于ngx_lua插件,开发了实时统计站点状态的脚本,解放生产力.项目主页: https://github.com/skyeydemon/ngx-lua-stats 功能
支持分不同虚拟主机统计, 同一个虚拟主机下可以分不同的location统计.
可以统计与query-times request-time
- java-68-把数组排成最小的数。一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的。例如输入数组{32, 321},则输出32132
bylijinnan
java
import java.util.Arrays;
import java.util.Comparator;
public class MinNumFromIntArray {
/**
* Q68输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。
* 例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题
- Oracle基本操作
ccii
Oracle SQL总结Oracle SQL语法Oracle基本操作Oracle SQL
一、表操作
1. 常用数据类型
NUMBER(p,s):可变长度的数字。p表示整数加小数的最大位数,s为最大小数位数。支持最大精度为38位
NVARCHAR2(size):变长字符串,最大长度为4000字节(以字符数为单位)
VARCHAR2(size):变长字符串,最大长度为4000字节(以字节数为单位)
CHAR(size):定长字符串,最大长度为2000字节,最小为1字节,默认
- [强人工智能]实现强人工智能的路线图
comsci
人工智能
1:创建一个用于记录拓扑网络连接的矩阵数据表
2:自动构造或者人工复制一个包含10万个连接(1000*1000)的流程图
3:将这个流程图导入到矩阵数据表中
4:在矩阵的每个有意义的节点中嵌入一段简单的
- 给Tomcat,Apache配置gzip压缩(HTTP压缩)功能
cwqcwqmax9
apache
背景:
HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,
- SpringMVC and Struts2
dashuaifu
struts2springMVC
SpringMVC VS Struts2
1:
spring3开发效率高于struts
2:
spring3 mvc可以认为已经100%零配置
3:
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现r
- windows常用命令行命令
dcj3sjt126com
windowscmdcommand
在windows系统中,点击开始-运行,可以直接输入命令行,快速打开一些原本需要多次点击图标才能打开的界面,如常用的输入cmd打开dos命令行,输入taskmgr打开任务管理器。此处列出了网上搜集到的一些常用命令。winver 检查windows版本 wmimgmt.msc 打开windows管理体系结构(wmi) wupdmgr windows更新程序 wscrip
- 再看知名应用背后的第三方开源项目
dcj3sjt126com
ios
知名应用程序的设计和技术一直都是开发者需要学习的,同样这些应用所使用的开源框架也是不可忽视的一部分。此前《
iOS第三方开源库的吐槽和备忘》中作者ibireme列举了国内多款知名应用所使用的开源框架,并对其中一些框架进行了分析,同样国外开发者
@iOSCowboy也在博客中给我们列出了国外多款知名应用使用的开源框架。另外txx's blog中详细介绍了
Facebook Paper使用的第三
- Objective-c单例模式的正确写法
jsntghf
单例iosiPhone
一般情况下,可能我们写的单例模式是这样的:
#import <Foundation/Foundation.h>
@interface Downloader : NSObject
+ (instancetype)sharedDownloader;
@end
#import "Downloader.h"
@implementation
- jquery easyui datagrid 加载成功,选中某一行
hae
jqueryeasyuidatagrid数据加载
1.首先你需要设置datagrid的onLoadSuccess
$(
'#dg'
).datagrid({onLoadSuccess :
function
(data){
$(
'#dg'
).datagrid(
'selectRow'
,3);
}});
2.onL
- jQuery用户数字打分评价效果
ini
JavaScripthtmljqueryWebcss
效果体验:http://hovertree.com/texiao/jquery/5.htmHTML文件代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery用户数字打分评分代码 - HoverTree</
- mybatis的paramType
kerryg
DAOsql
MyBatis传多个参数:
1、采用#{0},#{1}获得参数:
Dao层函数方法:
public User selectUser(String name,String area);
对应的Mapper.xml
<select id="selectUser" result
- centos 7安装mysql5.5
MrLee23
centos
首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安装mysql的步骤。
#列出所有被安装的rpm package rpm -qa | grep mariadb
#卸载
rpm -e mariadb-libs-5.
- 利用thrift来实现消息群发
qifeifei
thrift
Thrift项目一般用来做内部项目接偶用的,还有能跨不同语言的功能,非常方便,一般前端系统和后台server线上都是3个节点,然后前端通过获取client来访问后台server,那么如果是多太server,就是有一个负载均衡的方法,然后最后访问其中一个节点。那么换个思路,能不能发送给所有节点的server呢,如果能就
- 实现一个sizeof获取Java对象大小
teasp
javaHotSpot内存对象大小sizeof
由于Java的设计者不想让程序员管理和了解内存的使用,我们想要知道一个对象在内存中的大小变得比较困难了。本文提供了可以获取对象的大小的方法,但是由于各个虚拟机在内存使用上可能存在不同,因此该方法不能在各虚拟机上都适用,而是仅在hotspot 32位虚拟机上,或者其它内存管理方式与hotspot 32位虚拟机相同的虚拟机上 适用。
- SVN错误及处理
xiangqian0505
SVN提交文件时服务器强行关闭
在SVN服务控制台打开资源库“SVN无法读取current” ---摘自网络 写道 SVN无法读取current修复方法 Can't read file : End of file found
文件:repository/db/txn_current、repository/db/current
其中current记录当前最新版本号,txn_current记录版本库中版本