笔者接着

RobotFramework自动化测试框架-DatabaseLibrary库的使用(对数据库的操作)

继续分享robotframework 对数据库中的MongoDB的详细操作。

MongoDB是非常常用的一个非关系型数据库,在RobotFramework中,也提供了对MongoDB数据库测试操作的支持。我们可以通过在浏览器中访问github的网站地址

https://github.com/iPlantCollaborativeOpenSource/Robotframework-MongoDB-Library 即可以看到该库的相关安装说明和API介绍,如下图2-2-1所示。

图2-2-1

作者的原创文章,转载须注明出处。原创文章归作者所有,欢迎转载,但是保留版权。对于转载了博主的原创文章,不标注出处的,作者将依法追究版权,请尊重作者的成果,转载请注明链接:

RobotFramework自动化测试框架-MongoDBLibrary库的使用

安装完成后,在使用MongoDBLibrary库时,需要在测试套件中,预先导入该库,才可以在用例中使用MongoDBLibrary库中的关键字,如下图2-2-2所示。

图2-2-2

2.1.1        MongoDB数据库的连接和断开

在MongoDB Libray中通过Connect To Mongodb 关键字来连接到MongoDB数据库,该关键字接收[ dbHost=localhost | dbPort=27017 | dbMaxPoolSize=10 | dbNetworkTimeout=None | dbDocClass= | dbTZAware=False ]

这六个参数,dbHost参数指的是MongoDB数据库的IP地址,dbPort参数指的是MongoDB数据库的端口号,不输入时默认为27017,dbMaxPoolSize参数指的是数据库连接的最大线程池大小,不输入时默认大小为10。

示例1:我们连接到本地电脑上一个已经启动好的MongoDB数据库上,这里预先启动了一个3.2版本的MongoDB数据库,如下图2-2-3所示。

图2-2-3

在RIDE中,使用Connect To Mongodb来连接刚刚启动好的数据库,如下图2-2-4所示。

图2-2-4

运行结果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase001

20180825 17:47:32.470 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase001

我们执行完成后,然后我看下MongoDB服务端的日志,从如下的MongoDB服务端的日志可以看到,已经成功和MongoDB数据库建立了连接。

2018-08-25T17:45:30.134+0800 I CONTROL  [main] Hotfix KB2731284 or later update is not installed, will zero-out data files

2018-08-25T17:45:30.138+0800 I CONTROL  [initandlisten] MongoDB starting : pid=8964 port=27017 dbpath=D:\MongoDB\Server\3.2\data 64-bit host=yongqing-PC

2018-08-25T17:45:30.138+0800 I CONTROL  [initandlisten] targetMinOS: Windows Vista/Windows Server 2008

2018-08-25T17:45:30.139+0800 I CONTROL  [initandlisten] db version v3.2.4

2018-08-25T17:45:30.139+0800 I CONTROL  [initandlisten] git version: e2ee9ffcf9f5a94fad76802e28cc978718bb7a30

2018-08-25T17:45:30.140+0800 I CONTROL  [initandlisten] allocator: tcmalloc

2018-08-25T17:45:30.140+0800 I CONTROL  [initandlisten] modules: none

2018-08-25T17:45:30.140+0800 I CONTROL  [initandlisten] build environment:

2018-08-25T17:45:30.161+0800 I CONTROL  [initandlisten]     distarch: x86_64

2018-08-25T17:45:30.162+0800 I CONTROL  [initandlisten]     target_arch: x86_64

2018-08-25T17:45:30.162+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "D:\MongoDB\Server\3.2\data" }, systemLog: { destination: "file", path: "D:\MongoDB\Server\3.2\logs\log.log" } }

2018-08-25T17:45:30.164+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=4G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),

2018-08-25T17:45:31.202+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory 'D:/MongoDB/Server/3.2/data/diagnostic.data'

2018-08-25T17:45:31.202+0800 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker

2018-08-25T17:45:31.359+0800 I NETWORK  [initandlisten] waiting for connections on port 27017

2018-08-25T17:46:53.205+0800 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:2621 #1 (1 connection now open)

2018-08-25T17:46:53.730+0800 I NETWORK  [conn1] end connection 127.0.0.1:2621 (0 connections now open)

2018-08-25T17:47:32.471+0800 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:2650 #2 (1 connection now open)

2018-08-25T17:47:33.031+0800 I NETWORK  [conn2] end connection 127.0.0.1:2650 (0 connections now open)

在MongoDB Libra中通过Disconnect From Mongodb 关键字来断开已经建立的MongoDB数据库连接。

示例2:通过Disconnect From Mongodb关键字断开MongoDB的数据库连接,如下图2-2-5所示。

图2-2-5

运行结果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase001

20180825 17:57:04.680 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 17:57:04.684 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase001

从MongoDB的日志可以看到,在执行Disconnect From Mongodb关键字操作后,数据库服务端日志中已经显示数据库连接已经终止。

[conn3] end connection 127.0.0.1:2945 (0 connections now open)

2.1.2        Get Mongodb Databases和Get Mongodb Collections

在MongoDB Libray中通过Get Mongodb Databases关键字来获取当前MongoDB下的所有在用的数据库。

示例1:我们通过Get Mongodb Databases关键字来获取我们上面自己启动的MongoDB下的所有数据库,如下图2-2-6所示。

图2-2-6

运行结果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase003

20180825 21:55:34.867 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 21:55:34.873 :  INFO : | @{allDBs} | Get Mongodb Databases |

20180825 21:55:34.873 :  INFO : @{DBs} = [ local ]

20180825 21:55:34.875 :  INFO : local

20180825 21:55:34.877 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase003

从运行结果可以看到只获取到了一个名叫local的数据库,我们通过客户端连接到MongoDB服务端,然后执行show databases命令,可以看到得到的结果和我们通过 Get Mongodb Databases关键字来获取到的数据库信

息是一致的,如下图2-2-7所示。

图2-2-7

通过Get Mongodb Collections关键字可以获取到指定MongoDB数据库下的所有Collection,该关键字接收[ dbName ]一个参数。

示例2:我们通过Get Mongodb Collections关键字来获取到local库下的所有Collection,如下图2-2-8所示。

图2-2-8

运行结果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase002

20180825 22:03:31.189 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 22:03:31.197 :  INFO : | @{allDBs} | Get Mongodb Databases |

20180825 22:03:31.198 :  INFO : @{DBs} = [ local ]

20180825 22:03:31.200 :  INFO : local

20180825 22:03:31.205 :  INFO : | @{allCollections} | Get MongoDB Collections | local |

20180825 22:03:31.206 :  INFO : @{allCollections} = [ startup_log ]

20180825 22:03:31.208 :  INFO : startup_log

20180825 22:03:31.210 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase002

从运行结果可以看到,获取到了local库下的Collection名叫startup_log,然后我们通过客户端连接到服务端后,通过客户端show collections命令来获取一下Collection,如下图所示,我们可以看到获取到的Collection是完

全一致的,如下图2-2-9所示。

图2-2-9

2.1.3      Save Mongodb Records

Save MongoDB Records关键字用来向指定的Collection中保存插入的记录,该关键字接收[ dbName | dbCollName | recordJSON ]这三个参数。

示例:我们向startup_log这个Collection中插入一条记录,如下图2-2-10所示。

图2-2-10

运行结果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase004

20180825 22:16:34.333 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 22:16:34.344 :  INFO : | ${allResults} | Save MongoDB Records | local | startup_log | {u'book': u'RobotFramework', '_id': ObjectId('5b8164c2685b132ec4739503')} |

20180825 22:16:34.347 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase004

执行完成后,我们通过MongoDB客户端连接到服务端,执行db.startup_log.find()命令来查看startup_log这个Collection下的记录,如下图所示,可以看到{"book":"RobotFramework"}这条数据记录已经成功插入到了

MongoDB中,如下图2-2-11所示。

图2-2-11

2.1.4        Retrieve All Mongodb Records

Retrieve All Mongodb Records关键字用来获取指定Collection下的所有数据记录,该关键字接收[ dbName | dbCollName | returnDocuments=False ]这三个参数。

示例:我们通过Retrieve All Mongodb Records关键字来获取startup_log下的数据记录,如下图2-2-12所示。

图2-2-12

运行结果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase005

20180825 22:38:05.197 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 22:38:05.213 :  INFO : ${allResults} = [{u'hostname': u'yongqing-PC', u'pid': 8964L, u'startTimeLocal': u'Sat Aug 25 17:45:31.203', u'cmdLine': {u'storage': {u'dbPath': u'D:\\MongoDB\\Server\\3.2\\data'}, u'systemLog': {u'path': u'D:\\Mong...

20180825 22:38:05.215 :  INFO : [{u'hostname': u'yongqing-PC', u'pid': 8964L, u'startTimeLocal': u'Sat Aug 25 17:45:31.203', u'cmdLine': {u'storage': {u'dbPath': u'D:\\MongoDB\\Server\\3.2\\data'}, u'systemLog': {u'path': u'D:\\MongoDB\\Server\\3.2\\logs\\log.log', u'destination': u'file'}}, u'startTime': datetime.datetime(2018, 8, 25, 9, 45, 31), u'_id': u'yongqing-PC-1535190331203', u'buildinfo': {u'storageEngines': [u'devnull', u'ephemeralForTest', u'mmapv1', u'wiredTiger'], u'maxBsonObjectSize': 16777216, u'bits': 64, u'sysInfo': u'deprecated', u'modules': [], u'openssl': {u'compiled': u'disabled', u'running': u'disabled'}, u'javascriptEngine': u'mozjs', u'version': u'3.2.4', u'gitVersion': u'e2ee9ffcf9f5a94fad76802e28cc978718bb7a30', u'versionArray': [3, 2, 4, 0], u'debug': False, u'buildEnvironment': {u'cxxflags': u'/TP', u'cc': u'cl: Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x64', u'linkflags': u'/nologo /DEBUG /INCREMENTAL:NO /LARGEADDRESSAWARE /OPT:REF', u'distarch': u'x86_64', u'cxx': u'cl: Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x64', u'ccflags': u'/nologo /EHsc /W3 /wd4355 /wd4800 /wd4267 /wd4244 /wd4290 /wd4068 /wd4351 /we4013 /we4099 /we4930 /Z7 /errorReport:none /MT /O2 /Oy- /Gw /Gy /Zc:inline', u'target_arch': u'x86_64', u'distmod': u'', u'target_os': u'windows'}, u'targetMinOS': u'Windows Vista/Windows Server 2008', u'allocator': u'tcmalloc'}}, {u'_id': ObjectId('5b8164c2685b132ec4739503'), u'book': u'RobotFramework'}]

20180825 22:38:05.217 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase005

如下图2-2-13所示,运行结果与我们在客户端通过db.startup_log.find()命令行获取到结果是一致的。

图2-2-13

2.1.5       Update Many Mongodb Records

Update Many Mongodb Records关键字用来更新Collection中的数据记录,该关键字接收[ dbName | dbCollName | queryJSON | updateJSON | upsert=False ]这五个参数。

示例1:我们更新上面示例中插入的这条{"book":"RobotFramework"}记录为{"book":"robotFramework"},即将RobotFramework变为robotFramework,如下图2-2-14所示。

图2-2-14

运行结果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase006

20180825 23:05:53.692 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180825 23:05:53.700 :  INFO : ${newJson} = {"$set": {"book":"robotFramework"}}

20180825 23:05:53.708 :  INFO :

Matched: 1 documents

| ${allResults} | Update Many MongoDB Records | local | startup_log | {u'book': u'RobotFramework'} | {u'$set': {u'book': u'robotFramework'}} |

20180825 23:05:53.710 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase006

更新完成后,我们通过客户端的db.startup_log.find()命令行来进行重新查询,如下图2-2-15所示,从查询的结果可以看到指定的记录已经更新完成了。

图2-2-15

2.1.6        Remove Mongodb Records

Remove Mongodb Records关键字用来删除指定Collection中的数据记录,该关键字接收[ dbName | dbCollName | recordJSON ]这三个参数。

示例:我们重新创建一个capped属性为false的Collection,因为之前的Collection的capped属性为true,会导致数据记录无法被删除,客户端创建一个Collection的命令为db.createCollection("RobotFramework",{capped :

false}),如下图2-2-16所示新的名叫RobotFramework的Collection的已经创建完成。

图2-2-16

如下图2-2-17所示,创建完成后,我们使用Remove Mongodb Records关键字来删除{"book":"robotFramework"}这条记录,如下图2-2-18所示。

图2-2-17

图2-2-18

运行结果如下:

Starting test: RobotFrameworkTest1.TestSute13.TestCase007

20180826 09:40:05.945 :  INFO :

| Connect To MondoDB | dbHost | dbPort | dbMaxPoolSize | dbNetworktimeout | dbDocClass | dbTZAware |

| Connect To MondoDB | 127.0.0.1 | 27017 | 2 | None | <type 'dict'> | False |

20180826 09:40:05.947 :  INFO : ${Json} = {"book":"RobotFramework"}

20180826 09:40:05.970 :  INFO : | ${allResults} | Remove MongoDB Records | local | RobotFramework | {u'book': u'RobotFramework'} |

20180826 09:40:05.972 :  INFO : | Disconnect From MongoDB |

Ending test:   RobotFrameworkTest1.TestSute13.TestCase007

执行完成后,我们在客户端执行db.RobotFramework.find()进行查询时,如下图2-2-19所示,从查询的结果可以看到{"book":"robotFramework"}这条记录已经被删除了

图2-2-19

2.1.7       MongoDB Libray库的其它关键字介绍

下表2-2-1中介绍了MongoDBLibrary库中其它关键字的使用示例

关键字

使用描述

Drop Mongodb Database

该关键字用来删除指定的MongoDB数据库,接收[ dbDelName ]一个参数,示例:

Drop Mongodb Database

Local

Drop Mongodb Collection

该关键字用来删除指定的Collection,接收[ dbName | dbCollName ]两个参数,示例:

Drop Mongodb Collection

local

RobotFramework

Get Mongodb Collection Count

该关键字用来获取指定Collection下的数据记录总数,接收[ dbName | dbCollName ]两个参数,示例:

${counts}

Get Mongodb Collection Count

local

RobotFramework

log

${counts}

Retrieve And Update One Mongodb Record

该关键字用来获取并且更新指定的数据记录,关键字接收[ dbName | dbCollName | queryJSON | updateJSON | returnBeforeDocument=False ]这五个参数,示例:

${queryJson}

Set Variable

{"book":"RobotFramework"}

${newJson}

Set Variable

{"$set": {"book":"robotFramework"}}

Retrieve and Update One Mongodb Record

local

RobotFramework

${queryJson}

${newJson}

Retrieve Mongodb Records With Desired Fields

该关键字用来从Collection中根据指定的字段查询出对应的满足要求的数据记录,接收[ dbName | dbCollName | recordJSON | fields | return__id=True | returnDocuments=False ]六个参数,示例:

${result}

Retrieve Mongodb Records With Desired Fields

local

RobotFramework

{}

book

log

${result}

Retrieve Some Mongodb Records

该关键字用来从Collection中查询出根据指定json匹配到的数据记录,接收

[ dbName | dbCollName | recordJSON | returnDocuments=False ]这四个参数,示例:

${result}

Retrieve Some Mongodb Records

local

RobotFramework

{"book":"robotFramework"}

log

${result}

表2-2-1

 更多精彩,敬请关注作者新书:

<br>
<br>
作者新书上架
<a href="https://item.jd.com/12588888.html"><img src="http://img2018.cnblogs.com/blog/1200756/201904/1200756-20190407181104027-987593518.jpg" width="200" height="300"></a>
<br>
<a href="https://item.jd.com/12588888.html">Robot Framework自动化测试框架核心指南京东官方购买</a>
<br>
<a href="http://www.tup.tsinghua.edu.cn/upload/books/yz/081809-01.pdf">Robot Framework自动化测试框架核心指南电子版试读</a>
<br>
<a href="https://detail.tmall.com/item.htm?spm=a1z10.1-b.w9858442-8055933095.4.fH3HiL&amp;id=591529213327">Robot Framework自动化测试框架核心指南天猫官方旗舰店购买</a>
<br>
<a href="http://product.dangdang.com/27854334.html">Robot Framework自动化测试框架核心指南当当网购买</a>
<br>
<a href="https://2.taobao.com/item.htm?id=594037730885&amp;spm=a2oq0.12575281.0.0.25911debzUrVgP&amp;ft=t">Robot Framework自动化测试框架核心指南 作者签名版本购买</a>

RobotFramework自动化测试框架-MongoDBLibrary库的使用的更多相关文章

  1. RobotFramework自动化测试框架-DatabaseLibrary库的使用(对数据库的操作)

    在自动化过程中,我们经常需要连接不同的数据库,并且对数据库进行很多不同的操作,RobotFramework中,提供了DatabaseLibrary这个库来操作数据库,我们可以按照官网中的说明来安装Da ...

  2. RobotFramework自动化测试框架-移动手机自动化测试AppiumLibrary介绍

    在使用AppiumLibrary库时,需要预先安装好Appium自动化工具,Appium官网地址为:http://appium.io/ Appium的GitHub地址为:https://github. ...

  3. RobotFramework自动化测试框架-使用Python编写自定义的RobotFramework Lib

    使用Python构建Lib工程 可以用来开发Python Lib的IDE工具有很多,常见的有Pycharm,Eclipse with PyDev插件等,而且在RobotFramework官网中也已经提 ...

  4. RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)

    好久没有继续分享关于自动化测试相关的东西了,自动化在现今的测试领域已经越来越重要了,大部分公司在测试岗位招聘中都需要会相关的自动化测试知识.而 RobotFramework自动化测试框架 是自动化测试 ...

  5. RobotFramework自动化测试框架-Selenium Web自动化(三)关于在RobotFramework中如何使用Selenium很全的总结(下)

    本文紧接着RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)继续分享RobotFramewor ...

  6. RobotFramework自动化测试框架(1)- RobotFramework简介

    对于RobotFramework自动化测试框架,我这里会从三个单元进行阐述,希望能对你有帮助. RobotFramework简介 RobotFramework是什么? Robotframework 是 ...

  7. RobotFramework自动化测试框架-Selenium Web自动化(-)-Open Browser和Close Browser

    Selenium出来已经有很多年了,从最初的Selenium1到后来的Selenium2,也变得越来越成熟,而且也已经被很多公司广泛使用.Selenium发展的过程中,分了很多模块,这里我们主要介绍W ...

  8. RobotFramework自动化测试框架-移动手机自动化测试AppiumLibrary库其它的常见自动化关键字

    关键字 使用描述 Close Application 关闭掉当前已经打开的APP Application,该关键字不需要接收任何的参数,但是使用该关键字的前提是已经打开了一个APP Applicati ...

  9. RobotFramework自动化测试框架(3)- RobotFramework扩展测试库、资源文件、变量文件

    扩展测试库 扩展测试库可使用python或java语言编写.后直接导入需要使用的测试用例文件即可. 具体的实现和操作,后续补充.请参考官网. 资源文件 在资源文件中定义用户关键字,它提供了共享机制,即 ...

随机推荐

  1. JVM和GC的工作原理

    转载于https://uestc-dpz.github.io JVM Java 虚拟机 Java 虚拟机(Java virtual machine,JVM)是运行 Java 程序必不可少的机制.JVM ...

  2. ubuntu18.04下安装matlab2018a

    一.下载 百度网盘链接:https://pan.baidu.com/s/1M6KafnsljmYV9_5m_1pXMw 提取玛:jp76 二.安装 下载下来的文件夹中有三个文件,分别是破解文文件与映像 ...

  3. 浅谈微服务架构与服务治理的Eureka和Dubbo

    前言 本来计划周五+周末三天自驾游,谁知人算不如天算,周六恰逢台风来袭,湖州附近的景点全部关停,不得已只能周五玩完之后,于周六踩着台风的边缘逃回上海.周末过得如此艰难,这次就聊点务虚的话题,一是浅谈微 ...

  4. Go中的命名规范

    1.命名规范 1.1 Go是一门区分大小写的语言. 命名规则涉及变量.常量.全局函数.结构.接口.方法等的命名. Go语言从语法层面进行了以下限定:任何需要对外暴露的名字必须以大写字母开头,不需要对外 ...

  5. Netty学习(五)-DelimiterBasedFrameDecoder

    上一节我们说了LineBasedframeDecoder来解决粘包拆包的问题,TCP以流的方式进行数据传输,上层应用协议为了对消息进行区分,一般采用如下4种方式: 消息长度固定,累计读取到消息长度总和 ...

  6. [转载]ActiveMQ实现负载均衡+高可用部署方案

    转载于 http://www.open-open.com/lib/view/open1400126457817.html 一.架构和技术介绍 1.简介 ActiveMQ 是Apache出品,最流行的, ...

  7. 实验:keepalived双主抢占模式和非抢占模式和IPVS

    内容: 一:概念.原理   二:实验过程 一.概念 一.keepalived原理及配置解析 keepalived:vrrp协议的实现 vrrp协议:virtual router redundancy ...

  8. 页面性能监控之performance

    页面性能监测之performance author: @TiffanysBear 最近,需要对业务上的一些性能做一些优化,比如降低首屏时间.减少核心按钮可操作时间等的一些操作:在这之前,需要建立的就是 ...

  9. Java 在spring cloud中使用Redis,spring boot同样适用

    1.本地安装redis服务,官网下载. 2.在开发中要使用redis,首先要启动本地redis服务,启动后页面如下: 3.在spring boot项目pom.xml文件中添加Redis需要的依赖包,可 ...

  10. Sublime Text 3 使用手册

    Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...