sql server分页

Wikipedia Pagination is the process of dividing content (i.e. website search results, newspaper article etc.) into separate yet related pages. The major benefit to such dividing of content is usually a cleaner and clearer structuring of content which enhances the reading (or browser-navigation) experience to the consumer of such content. Wikipedia分页是将内容(即网站搜索结果,报纸文章等)划分为单独但相关的页面的过程。 这种内容划分的主要好处通常是更清晰的内容结构,从而增强了此类内容消费者的阅读(或浏览器导航)体验。

An example of pagination in a website search results is illustrated in Figure S1 which shows a Microsoft Bing search engine results regarding a search for “ApexSQL”. The numbers at the bottom of image indicate to the user that there are further search results regarding “ApexSQL”. It is then up to the user to navigate to more of these search result pages.

在网站搜索结果中进行分页的示例在图S1中进行了说明,该示例显示了有关“ ApexSQL”搜索的Microsoft Bing搜索引擎结果 。 图像底部的数字向用户表明还有关于“ ApexSQL”的搜索结果。 然后由用户来导航到更多这些搜索结果页面。

Figure S1

图S1

非Microsoft数据库平台中的分页 (Pagination in non-Microsoft database platforms)

In most database platforms, pagination refers to reducing the number of records from a structured query language (SEQUEL or SQL) query result sets. Similarly, the implementation of pagination has been mostly consistent across database platforms. For instance, most database platforms implements SQL result set pagination by using the OFFSET/FETCH and LIMIT clauses.

在大多数数据库平台中,分页是指减少结构化查询语言( SEQUEL或SQL )查询结果集的记录数。 同样,分页的实现在数据库平台之间基本保持一致。 例如,大多数数据库平台都使用OFFSET / FETCH和LIMIT子句实现SQL结果集分页。

The following sub-section provides examples of how the OFFSET/FETCH and LIMIT clauses is used in database platforms such as IBM’s DB2, MySQL, Oracle and PostgreSQL.

以下小节提供了在数据库平台(例如IBM的DB2,MySQL,Oracle和PostgreSQL)中如何使用OFFSET / FETCH和LIMIT子句的示例。

  1. Pagination using the OFFSET/FETCH clause in Oracle and DB2

    在Oracle和DB2中使用OFFSET / FETCH子句进行分页

    Figure S2 shows a sample pagination SQL query in Oracle:

    图S2显示了Oracle中的一个分页SQL查询示例:

    Figure S2

    图S2

    DB2 has different implementation of pagination: one method is by specifying the OFFSET clause (i.e. as shown in Figure S3) whereas another method is by using only the LIMIT clause with two comma-separated values – as shown in Figure S4:

    DB2具有不同的分页实现方式:一种方法是通过指定OFFSET子句(即, 如图S3所示),而另一种方法是仅使用具有两个逗号分隔值的LIMIT子句– 如图S4所示:

    td, tr { border-style: hidden; } td, tr { border-style: hidden; }

    Figure S3

    Figure S4
    图S3

    图S4
  2. Pagination using the LIMIT clause in MySQL and PostgreSQL

    在MySQL和PostgreSQL中使用LIMIT子句进行分页

    Figure S5 shows a sample pagination of MySQL query:

    图S5显示了MySQL查询的分页示例:

    Figure S5

    图S5

    Finally, Figure S6 shows a sample pagination script in PostgreSQL:

    最后, 图S6显示了PostgreSQL中的示例分页脚本:

    Figure S6

    图S6

Microsoft SQL Server中的分页 (Pagination in Microsoft SQL Server)

Unlike other database platforms that conveniently handled pagination through the OFFSET/FETCH and LIMIT clauses, you’ve had to jump through a lot of hoops (i.e. use ranking functions) in order to get the pagination of query result sets to work in SQL Server. The following sub-section takes a closer look at some of the pagination work-around options that have been implemented in SQL Server prior to the SQL Server 2012 version.

与其他通过OFFSET / FETCH和LIMIT子句方便地处理分页的数据库平台不同,您必须跳过很多圈(即使用排名函数)才能使查询结果集的分页在SQL Server中工作。 以下小节将仔细研究在SQL Server 2012之前的版本中在SQL Server中实现的某些分页解决方法。

  1. Pagination-Work Around in SQL Server Versions Prior to SQL Server 2012

    分页-在SQL Server 2012之前SQL Server版本中变通

    A popular work-around technique to paginating result sets in SQL Server has been by using the ROW_NUMBER function. The ROW_NUMBER function, like many of its siblings (i.e. RANK etc.), is a window function that returns a sequential integer value per row of a given partition of result set. The windows function was introduced in the ISO SQL:2003 revision of SQL database query language. Figure S7 shows a T-SQL query that returns the first 10 rows from SalesOrderDetail table of sample AdventureWorks2012 database.

    在SQL Server中分页结果集的一种流行的变通方法是使用ROW_NUMBER函数。 像其许多同级物品(例如RANK等)一样,ROW_NUMBER函数是一个窗口函数,它在结果集给定分区的每一行中返回一个连续的整数值。 Windows函数是在SQL数据库查询语言的ISO SQL:2003修订版中引入的。 图S7显示了一个T-SQL查询,该查询从示例AdventureWorks2012数据库的SalesOrderDetail表返回前10行。

    Figure S7

    图S7

  2. Pagination in SQL Server 2012 Using the OFFSET-FETCH Filter

    使用OFFSET-FETCH筛选器在SQL Server 2012中进行分页

    The OFFSET-FETCH filter is Microsoft’s implementation of the ISO SQL:2008 standardised FETCH FIRST clause. The standardised clause works by limiting the result set in a given SQL query. Prior to the introduction of OFFSET-FETCH filter, Microsoft had introduced the TOP clause for limiting the result set of a T-SQL query. The syntax for using the OFFSET-FETCH clause is as follows:

    OFFSET-FETCH筛选器是Microsoft对ISO SQL:2008标准化FETCH FIRST子句的实现。 标准化子句通过限制给定SQL查询中的结果集来工作。 在引入OFFSET-FETCH过滤器之前,Microsoft引入了TOP子句以限制T-SQL查询的结果集。 使用OFFSET-FETCH子句的语法如下:

    Figure S8

    图S8

    A detail description of the parameters of the [<offset_fetch>] argument is available in the Microsoft TechNet site.

    Microsoft TechNet网站上提供了[<offset_fetch>]参数的详细说明。

    The OFFSET and the FETCH clauses have different usages in the OFFSET-FETCH filter. For instance, the OFFSET argument is used to indicate the number of rows to omit whereas the FETCH clause is used to indicate the number of rows that ought to be retrieved after the OFFSET is applied. Figure S9 shows a T-SQL query that extracts the top 10 rows off the SalesOrderDetail table.

    OFFSET和FETCH子句在OFFSET-FETCH过滤器中的用法不同。 例如,OFFSET参数用于指示要省略的行数,而FETCH子句用于指示在应用OFFSET之后应检索的行数。 图S9显示了一个T-SQL查询,该查询从SalesOrderDetail表中提取了前10行。

    Figure S9

    图S9

    Similarly to T-SQL functions, there are always terms and conditions to successfully using the OFFSET-FETCH filter. Some of the rules that you ought to bear in mind when applying the OFFSET-FETCH filter are as follows:

    与T-SQL函数类似,成功使用OFFSET-FETCH过滤器总是有一些条款和条件。 应用OFFSET-FETCH滤波器时应牢记的一些规则如下:

    1. Rule Number 1: You can’t have it both ways

      规则1:不能同时兼顾

      Since the OFFSET-FETCH clause was introduced as an alternative to the TOP clause, it makes perfect sense then that you are not allowed to have both the OFFSET-FETCH and TOP clauses in the same T-SQL query.

      由于OFFSET-FETCH子句是作为TOP子句的替代项引入的,因此完全可以避免在同一T-SQL查询中同时拥有OFFSET-FETCH和TOP子句。

      Should you decide to go ahead (thus, defying Rule Number 1) and implement both the OFFSET-FETCH and TOP clauses in the same T-SQL query then you are likely to run into an error message as shown Figure S10.

      如果您决定继续(因此,违反规则1)并在同一T-SQL查询中同时实现OFFSET-FETCH和TOP子句,则很可能会遇到如图S10所示的错误消息。

      Figure S10

      图S10

    2. Rule Number 2: Mind your Data Types

      规则2:注意您的数据类型

      If you want to successfully paginate your results in SQL Server 2012 then you need to comply with data type usage: the integer or expression values for the OFFSET arguments are not allowed to be less than zero (i.e. negative numbers) and the integer or expression values for the FETCH are not allowed to be less than one (1).

      如果要在SQL Server 2012中成功分页结果,则需要遵守数据类型的用法:OFFSET参数的整数或表达式值不允许小于零(即负数),并且整数或表达式值FETCH的值不得小于一(1)。

      Figure S11 illustrates what would when happen when incorrect integer values are provided in an OFFSET-FETCH filter. In this example, I asked SQL Server to skip negative one (-1) rows.

      图S11说明了在OFFSET-FETCH滤波器中提供不正确的整数值时会发生什么情况。 在此示例中,我要求SQL Server跳过负一(-1)行。

      Figure S11

      图S11

      In Figure S12 I have asked SQL Server to skip the first 5 rows and then fetch nothing (zero rows). SQL Server stands up to me and questions why I would want zero rows to be returned especially after I had asked it to skip the first 5.

      图S12中,我已要求SQL Server跳过前5行,然后不获取任何内容(零行)。 SQL Server站起来对我提出质疑,为什么我要返回零行,尤其是在我要求它跳过前5个之后。

      Figure S12

      图S12

    3. Rule Number 3: You can’t have one without the other

      规则三:一个不能没有另一个

      For a T-SQL query with an OFFSET-FETCH filter to successfully parse, both the OFFSET and FETCH clause should be included in a given query. In scenarios whereas no rows are intended to be omitted then zero (0) should be provided along with the OFFSET argument. For instance Figure S13 shows an incorrect implementation of fetching 10 records without skipping any records whereas Figure S14 shows the correct implementation of fetching 10 records without skipping any records.

      为了使带有OFFSET-FETCH过滤器的T-SQL查询成功解析,OFFSET和FETCH子句都应包含在给定查询中。 在不希望省略任何行的情况下,则应提供零(0)以及OFFSET参数。 例如,图S13显示了不跳过任何记录而获取10条记录的错误实现,而图S14显示了不跳过任何记录而获取10条记录的正确实现。

      td, tr { border-style: hidden; } td, tr { border-style: hidden; }

      Figure S13

      Figure S14
      图S13

      图S14
    4. Rule Number 4: Without ORDER, you are nothing

      规则4:没有ORDER,您什么都不是

      If you want to successfully paginate your results in SQL Server 2012 then you need to include the ORDER by clause. Figure S15 shows the error message that SQL Server 2012 will return whenever an ORDER By clause is omitted in a T-SQL query that ought to paginate a given result set.

      如果要在SQL Server 2012中成功分页结果,则需要包括ORDER by子句。 图S15显示了错误消息,当应该对给定结果集进行分页的T-SQL查询中省略ORDER By子句时,SQL Server 2012将返回错误消息。

      Figure S15

      图S15

    5. Rule Number 5: Know your ORDER

      规则5:了解您的订单

      The OFFSET-FETCH filter should always succeed the ORDER BY clause and not the other way around. Figure S16 shows the error message that SQL Server 2012 will return whenever an ORDER By clause is forced to succeed the OFFSET-FETCH filter in a T-SQL query that ought to paginate a given result set.

      OFFSET-FETCH过滤器应始终接在ORDER BY子句之后,而不是反之。 图S16显示了错误消息,每当强迫ORDER By子句在T-SQL查询中的OFFSET-FETCH筛选器后继执行时,该错误消息应分页给定的结果集。

      Figure S16

      图S16

    6. Rule Number 6: These Interchangeable Clauses Still Do the Same Thing

      规则6:这些可互换的子句仍然具有相同的作用

      The OFFSET-FETCH filter does not dictate on whether ROW or ROWS argument should be used – anyone of the aforementioned arguments are valid. However, it would grammatically be correct to use ROW instead of ROWS when you intend fetching/skipping one (1) row. Both the syntax used in Figure S17 and Figure S18 is correct but if you are very pedantic about the usage of English grammar in T-SQL – the syntax shown in Figure S18 should be most desirable for you.

      OFFSET-FETCH过滤器不决定应使用ROW还是ROWS自变量–上述任何一个自变量均有效。 但是,在打算获取/跳过一(1)行时,使用ROW而不是ROWS在语法上是正确的。 图S17图S18中使用的语法都是正确的,但是如果您对T-SQL中英语语法的使用非常痴迷– 图S18中显示的语法对您来说是最理想的。

      td, tr { border-style: hidden; } td, tr { border-style: hidden; }

      Figure S17

      Figure S18
      图S17

      图S18

      Furthermore, usage of FIRST and NEXT clauses is interchangeable in a T-SQL query with OFFSET-FETCH filter. Consequently, both syntaxes in Figure S19 and Figure S20 are valid.

      此外,在带有OFFSET-FETCH过滤器的T-SQL查询中,FIRST和NEXT子句的用法可以互换。 因此, 图S19图S20中的两个语法均有效。

      Figure S19

      图S19

      Figure S20

      图S20

分页T-SQL查询结果集的查询执行计划 (The query execution plan of a paginated T-SQL query result set)

In SQL Server, the query execution plan illustrates the steps undertaken by the SQL Server query optimiser to execute a given T-SQL query. In this section we will take a look at the execution plan of T-SQL queries that use the OFFSET-FETCH filter versus the queries that uses the TOP and the ROW_NUMBER clauses. For the purposes of this query execution demo, I have started off by clearing all existing cached entries. SQL Server 2012 permits the use of Database Console Command (DBCC) to clear the cache. Figure S21 shows the sample script that we have ran to clear all plan cache.

在SQL Server中,查询执行计划说明了SQL Server查询优化器执行的步骤,以执行给定的T-SQL查询。 在本节中,我们将看一下使用OFFSET-FETCH过滤器的T-SQL查询与使用TOP和ROW_NUMBER子句的查询的执行计划。 出于此查询执行演示的目的,我首先清除了所有现有的缓存条目。 SQL Server 2012允许使用数据库控制台命令( DBCC )清除缓存。 图S21显示了我们为清除所有计划缓存而运行的示例脚本。

Figure S21

图S21

  1. The Execution Plan of a Paginated T-SQL Query Result Set: OFFSET-FILTER filter vs TOP Clause

    分页T-SQL查询结果集的执行计划:OFFSET-FILTER过滤器与TOP子句

    Remember that the OFFSET-FETCH has been introduced in SQL Server 2012 as an alternative against the usage of the TOP clause? So how does SQL Server handle a T-SQL query that uses a TOP clause versus a T-SQL that uses OFFSET-FETCH clause? Well, it would seem that the execution plan of a T-SQL query that uses both these data limiting clauses (i.e. TOP and OFFSET-FETCH clauses) is the same.

    还记得在SQL Server 2012中引入了OFFSET-FETCH作为使用TOP子句的替代方法吗? 那么,SQL Server如何处理使用TOP子句的T-SQL查询与使用OFFSET-FETCH子句的T-SQL? 好吧,似乎使用这两个数据限制子句(即TOP和OFFSET-FETCH子句)的T-SQL查询的执行计划是相同的。

    Figure S22 and Figure S23 illustrate execution plans for T-SQL queries that use a TOP and OFFSET-FETCH clause, respectively. You will notice that similar steps are taken to return a result set – regardless of the fact that one query uses TOP clause and the other uses the OFFSET-FETCH clause.

    图S22图S23分别说明了使用TOP和OFFSET-FETCH子句的T-SQL查询的执行计划。 您会注意到,采取了类似的步骤来返回结果集-不管一个查询使用TOP子句,而另一个查询使用OFFSET-FETCH子句的事实。

    Figure S22

    图S22

    Figure S23

    图S23

  2. The Execution Plan of a Paginated T-SQL Query Result Set: OFFSET-FILTER filter vs ROW_NUMBER Clause

    分页T-SQL查询结果集的执行计划:OFFSET-FILTER过滤器与ROW_NUMBER子句

    Unlike the similar execution plans of OFFSET-FETCH vs TOP clause, the execution plan for a T-SQL query that uses the OFFSET-FETCH filter is different from a T-SQL query that uses the ROW_NUMBER ranking function. Figure S24 and Figure S25 show the T-SQL pagination queries that have been implemented via the ROW_NUMBER and OFFSET-FETCH clauses respectively. The queries are basically returning the top 10001 rows after skipping the first 100000 rows.

    与OFFSET-FETCH与TOP子句的类似执行计划不同,使用OFFSET-FETCH筛选器的T-SQL查询的执行计划与使用ROW_NUMBER排序功能的T-SQL查询不同。 图S24和图S25显示了分别通过ROW_NUMBER和OFFSET-FETCH子句实现的T-SQL分页查询。 在跳过前100000行之后,查询基本上返回前10001行。

    Figure S24

    图S24

    Figure S25

    图S25

    Prior to looking at the execution plans of both queries, I have analysed the IO and Time statistics of both queries. Figure S26 and Figure S27 show that for both queries, SQL Server reads data pages from a cache (logical read) instead of a hard disk (physical read). Figure S26 shows that the T-SQL pagination query that uses the OFFSET-FETCH filter performs less logical reads to extract the data from the SalesOrderDetail object (i.e. 15 logical reads) as compared to the query that uses the ranking function (i.e. 1371 logical reads). Noticeably too are the differences in the scan counts that are done: the plan of the query that uses the ranking function causes the SalesOrderDetail object to be read 5 times as compared to a single scan which is performed by the query that uses OFFSET-FETCH filter.

    在查看两个查询的执行计划之前,我已经分析了两个查询的IO和时间统计信息 。 图S26图S27显示,对于这两个查询,SQL Server都从缓存(逻辑读取)而不是硬盘(物理读取)读取数据页。 图S26显示,与使用排名函数的查询(即1371逻辑读取)相比,使用OFFSET-FETCH过滤器的T-SQL分页查询执行较少的逻辑读取以从SalesOrderDetail对象提取数据(即15逻辑读取)。 )。 值得注意的是,完成的扫描计数也存在差异:与使用OFFSET-FETCH过滤器的查询执行的单次扫描相比,使用排名函数的查询计划使SalesOrderDetail对象的读取次数是5次。

    Figure S26

    图S26

    Figure S27

    图S27

    Finally, Figure S28 shows that the graphical execution plan for paginating a T-SQL query result set that uses the OFFSET-FETCH filter is significantly different from the plan (Figure S29a and Figure S29b – the image of the plan was dissected into two parts so to fit into the width of this article) used for the result set that uses the ROW_NUMBER ranking function. Some of the significant differences are as follows:

    最后, 图S28显示用于使用OFFSET-FETCH过滤器对T-SQL查询结果集进行分页的图形执行计划与计划有很大不同( 图S29a图S29b –计划的图像分为两部分,因此以适合本文的宽度 )(用于使用ROW_NUMBER排名函数的结果集)。 一些重要区别如下:

    1. Tim Ford highlights this point – Despite most operations in the query that uses the ROW_NUMBER clause having a cost of zero percent – there was still some time incurred to carry out those operations.蒂姆·福特强调这一点一样 -尽管查询中使用ROW_NUMBER子句的大多数操作的成本为零,但仍然需要一些时间来执行这些操作。
    2. The clustered index scan performed by the plan that uses the OFFSET-FETCH clause costs 2% less than the one conducted by the ROW_NUMBER function
    3. 由使用OFFSET-FETCH子句的计划执行的聚集索引扫描的成本比ROW_NUMBER函数执行的聚集索引扫描的成本低2%
    4. Gather Streams) whereas the other query incurred less costs of parallelism.Gather Streams ),而其他查询的并行成本则更低。
    5. For both queries, the majority of the costs were incurred during sorting the result sets. However, the query that uses the ROW_NUMBER clause incurred 12 percent more to sort the result sets as compared to the other query

      对于这两个查询,大部分成本是在对结果集进行排序时产生的。 但是,与其他查询相比,使用ROW_NUMBER子句的查询对结果集进行排序要多花费12%

      Figure S28

      图S28

      Figure S29a

      图S29a

      Figure S29b

      图S29b

结论 (Conclusion)

The notion of pagination has been around in many forms and across different professional bodies. In Structured Query Language, the ISO standard on SQL has provided some level of consistency in as far as the implementation of pagination across database platforms is concerned. Paginating a T-SQL query result set in SQL Server 2012 has provided a much more flexible alternative to the TOP clause. However, for a successful implementation of the pagination feature in SQL Server 2012 – rules governing the usage of the OFFSET-FETCH filter should be obeyed. Finally, in terms of the execution plan, SQL Server 2012 handles the queries that implement the OFFSET-FETCH filter similarly to those T-SQL queries that uses the TOP clause but the cost of a query that uses OFFSET-FETCH filter is significantly less compared to a T-SQL pagination query that uses the ROW_NUMBER ranking function.

分页的概念以多种形式出现在不同的专业机构中。 在结构化查询语言中,就跨数据库平台的分页实现而言,SQL的ISO标准提供了一定程度的一致性。 在SQL Server 2012中分页T-SQL查询结果集为TOP子句提供了更灵活的替代方法。 但是,为了在SQL Server 2012中成功实现分页功能,应遵守用于控制OFFSET-FETCH筛选器使用的规则。 最后,在执行计划方面,SQL Server 2012与使用TOP子句的T-SQL查询类似地处理实现OFFSET-FETCH筛选器的查询,但与使用OFFSET-FETCH筛选器的查询相比,成本要低得多到使用ROW_NUMBER排序功能的T-SQL分页查询。

翻译自: https://www.sqlshack.com/introduction-pagination-sql-server/

sql server分页

sql server分页_SQL Server中的分页简介相关推荐

  1. sql server分页_SQL Server中的分页

    sql server分页 Pagination is a process that is used to divide a large data into smaller discrete pages ...

  2. sql server序列_SQL Server中的Microsoft时间序列

    sql server序列 The next topic in our Data Mining series is the popular algorithm, Time Series. Since b ...

  3. sql server序列_SQL Server中的序列对象功能

    sql server序列 序列介绍 (Introduction to Sequences) 序列是SQL Server 2012中引入的用于密钥生成机制的新对象. 它已在所有版本SQL Server ...

  4. sql数据透视_SQL Server中的数据科学:取消数据透视

    sql数据透视 In this article, in the series, we'll discuss understanding and preparing data by using SQL ...

  5. sql语句截断_SQL Server中SQL截断和SQL删除语句之间的区别

    sql语句截断 We get the requirement to remove the data from the relational SQL table. We can use both SQL ...

  6. sql server 群集_SQL Server中的Microsoft群集

    sql server 群集 Microsoft Clustering is the next data mining topic we will be discussing in our SQL Se ...

  7. sql server 加密_SQL Server 2016中的新功能–始终加密

    sql server 加密 There are many new features in SQL Server 2016, but the one we will focus on in this p ...

  8. sql server 内存_SQL Server内存性能指标–第6部分–其他内存指标

    sql server 内存 Memory Manager metrics, the memory pressure can be indicated via the 内存管理器指标,可以通过Buffe ...

  9. sql server 内存_SQL Server内存性能指标–第5部分–了解惰性写入,空闲列表停顿/秒和待批内存授予

    sql server 内存 SQL Server performance metrics series with the SQL Server memory metrics that should b ...

最新文章

  1. python 根据地址求经纬度 谷歌_利用google的API获取世界城市经纬度(python实现)
  2. SQLite API
  3. java comparator_Java 中如何指定集合元素的排序策略
  4. Android底层隐私数据,Android Intent传递数据底层分析详细介绍_Android_脚本之家
  5. java 序列化 clone_利用java序列化进行对象深Clone
  6. Android之Inflate()方法用途+setContentView和inflate区别
  7. IAR 下C中嵌入汇编
  8. OSG+VS2013+Win7 环境搭建,osgvs2013
  9. SpringBoot执行流程
  10. hihoCoder 1014trie树(字典树)
  11. Java基础学习总结(90)——Java单元测试技巧
  12. ruby map, reduce, select, reject, group_by
  13. 蓝牙模块耳机做蓝牙透传_WiFi、蓝牙在工业领域的数据透传应用_SKYLAB 无线模块...
  14. Java软件工程师面试题:Java运行时异常与一般异常有什么不一样?
  15. 设计模式之(Composite)组合模式
  16. 432.全O(1)的数据结构
  17. n9 android rom,美如画N9盒子线刷固件rom升级包下载(全志H8芯片)
  18. (hightopo)学习笔记(1)
  19. 虾皮「光速大裁员」:7分钟大会后,软件瞬间查无此人
  20. 苹果录屏没声音_苹果iPhone手机没声音不会响 电话扬声器无法正常工作的修复方法...

热门文章

  1. linux中lsattr命令,在Linux中用chattr和lsattr命令管理文件和目录属性
  2. redis 3.0 java 工具包_redis分布式锁工具包,提供纯Java方式调用
  3. java 复写hashcode_java 重写equals()和hashCode()
  4. 自动基线校正 python_核磁共振谱自动基线校正新方法
  5. Codeforces Round #465 (Div. 2) F. Fafa and Array
  6. 前端走向后台,node.js基本
  7. 你误解了Windows的文件后缀名吗?
  8. Uber CEO博鳌论坛采访:看好中国市场共享经济的发展模式
  9. 5.1作业5 四则运算 测试与封装
  10. 性能测试之LoardRunner 手动关联二