数据库索引优化入门

4 篇文章 0 订阅
订阅专栏

一 前言

      本篇文章主要讲述数据库索引的基本原,及基本的数据库优化的知识。


二.基础知识

2.1 页

   数据库文件存储是以页为存储单元的,一个页是8K(8192Byte),一个页就可以存放N行数据。我们常用的页类型就是数据页和索引页。一个页中除了存放基本数据之外还需要存放一些其他的数据,如页的信息、偏移量等,如下图所示。

   虽然SQLServer是以为单位存储数据,但是其分配空间是以一个盘区为单位的(8个页=64K),这样做的目的主要是为提高I/O的性能

 

2.2 B树

   B树即二叉搜索树,所有非叶子节点最低拥有两个子节点,基本信息如下图所示。都是小的元素放左边,大的元素放右边。比如说要查找某个元素,其时间复杂度就对应该元素的深度,如要查询9,从根节点开始,只要比较三次就找到他了,其查询效率是非常高的

   子节点:最多两个子节点(指针分别指向Left和Right)

阶数(节点子节点个数):2

深度:就是层数,各个叶子节点不一定一样,如节点21的深度为4,40的深度为3

 

2.2 B-树

B-树是一种多路搜索树,其阶数可以自定义(>2),是很多数据及文件系统应用的一种常用的索引结构,基本特征如:

1) 阶数(M)>2,即孩子数量大于2个

2) 每个结点存放至少M/2-1(取上整)和至多M-1个关键字,即[M/2-1,M-1](取上整)个关键字;(至少2个关键字)

3) 非叶子结点上的多个关键字是按照顺序排列的:K[1], K[2], …, K[M-1];且K[i] < K[i+1];

4) 所有叶子节点都位于同一层,因此叶子节点的深度都是一样的

5) 非叶子结点的关键字个数=指向儿子的指针个数-1;

6) 非叶子结点的指针:P[1], P[2], …, P[M];其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于K[M-1]的子树,其它P[i]指向关键字属于(K[i-1], K[i])的子树;

如下图是一个三阶的B-树,节点[18]有两个指针分别指向其2个子节点。

 

这时如果要插入一个值17,其处理步骤:

1) 从根节点进入,17小于22,进入左边的节点[18];

2) [18]不是叶子节点,继续向下搜索,17小于18,进入其左边的子节点[12,16];

3) [12,16]为叶子节点,插入到该节点;

4) 节点[12,16,17]元素大于2了(3阶树的节点关键字数量应>3/2-1,<3-1),因此该节点需要分裂,分裂中间的元素16到父节点18中去;

5) 12,17分裂成了两个子节点了;

分裂后的效果如下图

   以上图片效果来自一个外国大学里面的的在线版B-树的测试,网站:http://www.cs.usfca.edu/~galles/visualization/BTree.html ,大家可以去这个网站测试,效果很直观,外国人就是牛。

2.3 B+树

B+树是B-树的变体,也是一种多路搜索树,一棵m阶的B+树和m阶的B-树的差异在于: 

l) 非叶子节点的子节点和其关键字相同,即节点有三个元素(关键字),他就肯定有三个子节点; 

2) 非叶子节点的子节点P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间); 

3) 所有叶子节点增加一个链指针; 

4) 所有关键字的数据都在叶子节点中;

 如下图所示,图片来自网络( http://www.cnblogs.com/chjw8016/archive/2011/03/08/1976891.html)。

 


 

三 索引存储

   B+树和B-树是数据库广发应用的索引存储结构,它可以极大的提高数据查找的效率。关于B-树、B+树的原理与应用的详细可以参考文档: http://blog.csdn.net/hguisu/article/details/7786014

前面2.1中我们讲了SQLServer中使用页为存储单元的,那么在建立索引时,其索引节点就是页了,然后树的键值就是存放到这些页(节点)中的。就是说表中的数据行就是存放到页上的,一个表有多个页构成,这些页以树的结构存放。

3.1 聚集索引

   如下图为聚集索引的存储结构(图片来自网络)。其中可以看出页有两种:Index Rows(索引页)、data rows(数据页),所有非叶子节点都存放着索引项,数据行是存放在叶子节点中的,只有叶子节点才真实存放着表中的每一行数据,而其他非叶子节点的页都存放着聚集索引的键值。因此查询数据的时间复杂度都是一样的,就是该树的深度。

   叶子节点存放表中的真实的数据,非叶子节点的页存放索引项。

   在4.2中有说明,聚集索引决定了表数据的存储顺序,具体可以参考4.2。若表没有创建聚集索引,则表数据时一个无序的堆结构。

3.2 非聚集索引

   与聚集索引的存储结构唯一不一样的,就是非聚集索引中不存储真正的数据行,因为在聚集索引中已经存放了数据,非聚集索引只包含一个指向数据行的指针即可。如下图所示(图片来源: http://www.cnblogs.com/ashou706/archive/2010/06/08/1754164.html):

 


 

四 数据库优化

   数据库优化的一个重要参数指标就是“逻辑读”(Logical Reads),可以使用命令SET STATISTICS IO ON来打开消息提示,如下图所示。

逻辑读(Logical Reads):我们在查询数据时,数据时从缓冲区(内存)中读取的,而不是直接从磁盘读取数据的。数据库会预先把数据读取到数据缓冲区中,存放到8K字节的页中。逻辑读就是从缓冲区中读取页的页数,这个才是真正反映查询效率的指标,一般情况下,一个查询的逻辑读越小,其效率越高、速度就越快。同时,同样的SQL查询同样数据集,每次的逻辑读是一样的。

   物理读取(Physical Reads):真正的从磁盘读取数据到期缓冲区,在SQLServer执行查询前,会先检查其需要的数据是否在缓冲区中,若不在,就会从磁盘读取数据到缓冲区。这一块是数据库本身的职责,我们在做查询优化的时候不用太关注的,只要给数据库服务器提供足够的内存就OK了。

   预读(Read-Ahead Reads):数据库为优化查询,预先读取一部分数据,这个值在优化中可以不用关注。由于存储介质的特性,磁盘本身存取就比主存慢很多,再加上机械运动耗费,磁盘的存取速度往往是主存的几百分分之一,因此为了提高效率,要尽量减少磁盘I/O。为了达到这个目的,磁盘往往不是严格按需读取,而是每次都会预读,即使只需要一个字节,磁盘也会从这个位置开始,顺序向后读取一定长度的数据放入内存。由于磁盘顺序读取的效率很高(不需要寻道时间,只需很少的旋转时间),因此对于具有局部性的程序来说,预读可以提高I/O效率。

   数据优化的一个主要手段就是查看SQL的执行计划,通过查看具体SQL执行过程,可以看出索引的使用是否正确,了解查询中性能问题在哪,从而解决问题。

 

4.1 T-SQL优化基本常识

1.在Where条件中尽量不要在=号左边进行函数、运算符、或表达式计算,如Where DATEDIFF(DD,StartTime,GetDate())=6  ;或Where Num/2=100;

2.在Where中尽量避免出现!=或<>操作符;

3.在Where中尽量避免对字段进行null值判定;

4.使用Like关键字进行模糊查找时,不要使用前置百分号,如Like ‘%123%’;

5.数据库字段的长度尽量的小(保证应用的前提下);

6.不要使用Selecte*,不要使用*号来查询数据;

7.尽量避免使用游标,游标的效率是很差的,可以使用While循环来代替;

8.尽量避免返回大量数据(查询数据(Select)优化,分页处理等);

9.使用Exists代替in和not in;

4.2 聚集索引

   聚集索引决定了表数据的物理存储顺序,也就是说表的物理存储时根据聚集索引结构进行顺序存储的,因此一个表只能有一个聚集索引,SQLServer的聚集索引属性如下图。

 

该索引的的创建脚本:

复制代码
/****** Object:  Index [Index_KeyId]    Script Date: 08/12/2013 15:25:59 ******/
CREATE UNIQUE CLUSTERED INDEX [Index_KeyId] ON [dbo].[User] 
(
    [KeyId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO
复制代码

 

  因此我们可以得出一个个结论:根据聚集索引的查找效率是比较高的。若表没有建立聚集索引,则表的数据存储是乱的,数据就是一个堆,没有任何顺序可言,对表的查询经常会扫描全表,造成性能较低。一般我们在实际使用中,大多会对主键建立聚集索引,一般这么做就足够了,但实际应用应该尊从一个原则就是“频繁使用的、排序的字段上”,如果要深究的话,可以参见文章结尾的参考目录其他同学的文章。 

  对应与聚集索引,所有其他的索引可以统称为非聚集索引,非聚集索引的创建会单独创建索引文件来存储索引结构,因此在创建其他索引的时候也要注意硬盘空间。比如一个表的容量是2000w行,大概有800Mb,创建的一个非聚集索引可能数据立马增加好几个G。具体如下4.3、4.4所述。 

4.3 覆盖索引

   覆盖索引就是在原本索引的基础上,把Select中需要的字段放到索引包含列中,这样就不需要再到数据表中读取数据了,这个就叫做覆盖索引了。 比如,我们查询User表中的字段UserName、Age,其中UserName上创建了非聚集索引,查询语句及索引脚本如下:

复制代码
Select UserName,Age from [User] where UserName ='Ryan'
--UserName的索引
CREATE UNIQUE NONCLUSTERED INDEX [Index_UserName] ON [dbo].[User] 
(
    [UserName] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO
复制代码

通过UserName条件查询到数据后,还需要Age字段的值,该非聚集索引没有她的数据,还要到数据页中取其Age数据(就是图中的键查找),这样会造成额外的开销,查询计划如下图。

若把Age放到该索引的包含列中,该索引就会包含Age的值,查询的时候就可以直接返回UserName、Age的值了,UserName、Age的覆盖索引脚本及SQLServer的管理视图如下:

 

复制代码
CREATE UNIQUE NONCLUSTERED INDEX [Index_UserName] ON [dbo].[User] 
(
    [UserName] ASC
)
INCLUDE ( [Age]) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO
复制代码

创建了覆盖索引后的查询效率明显高了,执行计划如下图,其中就没有了循环键查找了:

关于覆盖索引更详细的文章,可以参考文章: SQL Server 查询性能优化——覆盖索引

 

4.4 复合索引

在上面的索引例子中都只是在一个键上建立索引,但实际情况中往往一个查询会有多个查询条件,如下的sql语句中,多了条件Password:

Select UserName,Age from [User] where UserName ='Ryan' and Password='123456'

该索引中是没有关于Password字段的任何信息,因此查询也会引发键查找,查询计划如下图

对于这种情况,复合索引的用途就来了,简单来所,复合索引就是在多个列上建立索引。Sql脚本及SqlServer的索引属性视图如下:

复制代码
CREATE UNIQUE NONCLUSTERED INDEX [Index_UserName] ON [dbo].[User] 
(
    [UserName] ASC,
    [Password] ASC
)
INCLUDE ( [Age]) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO
复制代码

创建复合索引后再次执行刚的查询,观看查询计划,查询有明显的改善:

在使用复合索引时,应注意多个索引键的顺序问题,这个是会影响查询效率的,一般的原则是唯一性高的放前面,还有就是SQl语句中Where条件的顺序应该和索引顺序一致。

4.5 页填充因子

   通过前面的了解我们知道数据时存放到树上的页中,当插入数据时,如果该页已经存储满了,就要进行页的拆分,频繁的拆分,会产生较多的索引碎片,影响修改和查询数据的效率。

   填充因子就是用来描述这种页中填充数据的一个比例,一般默认是100%填充的。如果我们修改填充因子为80%,那么页在存储数据时,就会剩余20%的剩余空间,这样在下次插入的时候就不会拆分页了。 那么是不是我们可以把填充因子设置第一点,留更多的剩余空间,不是很好嘛?当然也不好,填充因子设置的低,会需要分配更多的存储空间,叶子节点的深度会增加,这样是会影响查询效率的,因此,这是要根据实际情况而定的。那么一般我们是怎么设置填充因子的呢,主要根据表的读写比例而定的。如果读的多,填充因子可以设置高一点,如100%,读写各一半,可以80~90%;更改多可以设置50~70%。SQlServer的的索引属性中有一个设置填充因子的项,如下图。

更详细的信息可以参考:http://www.cnblogs.com/cxd4321/archive/2010/08/16/1800677.html

4.6 索引碎片

   我们在前面了解到索引的结构就是B树,当树在增加、删除的时候,会触发页的拆分或合并,这种频繁的操作会产生索引碎片,造成索引不连续,当索引碎片曾多时,是会影响查询效率的因此,访问使用的是随机的i/o,而不是有顺序的i/o,这样访问索引页会变得更慢。因此要定期的清理索引碎片,一般的方法就是重建索引。关于索引碎片的整理,可参考: http://www.cnblogs.com/mywebname/archive/2007/11/13/958463.html 

4.7 索引优化注意事项

Ø 建立索引的字段尽量的小,最好是数值;

Ø 尽量在唯一性高的字段上创建索引,不要在性别这种唯一性很低的字段上创建索引;

mysql索引详解
学Java,找哪吒
07-07 10万+
MySQL的存储引擎架构将查询处理与数据的存储/提取相分离
《MySQL 入门教程》第 30 篇 数据库索引
Tony.Dong的专栏
09-23 2357
数据库索引(Index)就像书籍后面的关键字索引,按照关键字进行排序,并且提供了指向具体内容的页码。索引可以用于提高数据库的查询性能;但是索引需要占用额外的磁盘空间,修改数据时也需要进行索引的维护。本篇介绍 MySQL 索引的创建、查看、修改以及删除操作。
MySQL索引性能优化分析
热门推荐
张彦峰的博客
04-07 172万+
总结MySQL索引性能优化,主要集中在索引的背景介绍以及索引的高效创建、使用和查询等,最有给出除了索引的一些其他优化思路
数据库索引及基础优化入门
song_myth的博客
01-04 3507
数据库索引及基本优化入门 一前言 经常在面试中发现很多人工作了好多年了,项目经验也不少,用过各种数据库,但大都不知道这些SQL语句背后的基本原理,更别说数据库优化了。平时做项目只知道实现功能,懒得学习,懒得思考,懒得看书(其实本人也是,不要找借口说这是China国情,项目是给boss做的,但技术和成长是你自己的)。 本篇文章主要讲...
数据库索引详细介绍
lucky多多的博客
08-31 1万+
方法重载和重写的区别 方法重载:同一个类中,方法名相同,参数(类型或数量)不同,方法体不同; 方法重写:不同的类中,方法名相同,参数(类型和数量)相同,方法体不同; 构造方法可重载但不可重写 平衡二叉树: 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 ......
数据库索引入门
m0_62888305的博客
03-29 510
什么是索引? 索引是在数据库字段上添加的,一种由于提升查询效率的机制。 可以给需要的表的字段添加索引,当然多字段可以添加——复合索引索引有什么用? 可以缩小扫描查询范围,做到局域性扫描,例如目录于书。通过目录(索引)进行范围扫描,快速查找。——这种查找方式就是索引查询。 使用需要知道什么? 任何数据库的主键都会自动添加索引,id字段上也会有索引,因为id是主键。在mysql当中,如果一个字段上有唯一约束,那么他也会自动添加索引。 在任何数据库中,任何一张表的的任何一条数据存储在硬盘上都会带有一个物
数据库索引及基本优化入门
Baple的专栏
09-25 885
http://www.cnblogs.com/anding/p/3254674.html
MySQL 索引入门
格物致知,知行合一。
06-07 433
简单介绍了索引分类、使用场景、结构,欢迎阅读斧正。
【MySql系列】深入解析数据库索引
颜淡慕潇
10-16 5万+
数据库中,索引是一种数据结构,用于快速查找表中的数据。索引包含表中一列或多列的值,这些值按照一定的顺序进行排序,以便优化数据的检索速度。通过使用索引数据库可以避免全表扫描,从而提高查询性能。
数据库入门到精通03
cgblpx的博客
05-31 7万+
事务 transaction 什么是事务 数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 简单的说:事务就是将一堆的SQL语句(通常是增删改操作)绑定在一起执行,要么都执行成功,要么都执行失败,即都执行成功才算成功,否则就会恢复到这堆SQL执行之前的状态。 下面以银行转账为例,A转100块到B的账户,这至少需要两条SQL语句: 给A的账户减去100元; update 账户表 set money=money**-1
MySQL数据库性能优化入门.pdf
12-20
重点讲解了慢查询、索引、Multi Range Read、Index Merge、ICP,等相关功能。这里均为本人的学习总结。内容有2附图1个来自书本、一个来自网络,其余均为本人原创。 未经运行不得商业使用。
完整精品数据库课件 MySQL从入门到精通 第09章 索引(共11页).ppt
10-12
第09章 索引(共11页).pptMySQL从入门到精通 第10章 存储过程和函数(共19页).pptMySQL从入门到精通 第11章 视图(共20页).pptMySQL从入门到精通 第12章 触发器(共11页).pptMySQL从入门到精通 第13章 用户管理...
完整精品数据库课件 MySQL从入门到精通 第16章 性能优化(共18页).ppt
10-12
第09章 索引(共11页).pptMySQL从入门到精通 第10章 存储过程和函数(共19页).pptMySQL从入门到精通 第11章 视图(共20页).pptMySQL从入门到精通 第12章 触发器(共11页).pptMySQL从入门到精通 第13章 用户管理...
完整精品数据库课件 MySQL从入门到精通 第03章 数据库的基本操作(共11页).ppt
10-12
第09章 索引(共11页).pptMySQL从入门到精通 第10章 存储过程和函数(共19页).pptMySQL从入门到精通 第11章 视图(共20页).pptMySQL从入门到精通 第12章 触发器(共11页).pptMySQL从入门到精通 第13章 用户管理...
快速学习MySQL索引入门超级教程
12-15
所谓索引就是为特定的mysql字段进行...EXPLAIN可以帮助开发人员分析SQL问题,explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上Ex
头歌python本月天数.doc
05-29
头歌python本月天数 头歌Python本月天数计算教程 一、引言 在Python编程中,经常需要处理与时间相关的任务,包括日期的计算。其中,一个常见的需求是计算某个月份的天数。由于不同月份的天数可能不同(例如,2月有28天或29天,取决于是否为闰年),因此编写一个能够准确计算本月天数的Python程序是非常有用的。本教程将详细介绍如何使用Python来实现这一目标。 二、Python中的日期和时间处理 在Python中,日期和时间通常使用内置的datetime模块来处理。datetime模块提供了许多类和方法,用于表示和操作日期和时间。其中,datetime.date类用于表示日期,包括年、月和日三个部分。 三、计算本月天数 要计算本月天数,我们可以使用datetime.date类的一些方法和属性。具体步骤如下: 获取当前日期 首先,我们需要获取当前的日期。这可以通过datetime.date.today()方法来实现。该方法返回一个表示当前日期的datetime.date对象。 python from datetime import date tod
h5py-3.0.0-cp39-cp39-manylinux1_x86_64.whl
最新发布
05-29
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
小程序项目源码之投融圈小程序(投资、融资类).zip
05-29
小程序项目源码之投融圈小程序(投资、融资类).zip小程序项目源码之投融圈小程序(投资、融资类).zip小程序项目源码之投融圈小程序(投资、融资类).zip小程序项目源码之投融圈小程序(投资、融资类).zip小程序项目源码之投融圈小程序(投资、融资类).zip小程序项目源码之投融圈小程序(投资、融资类).zip小程序项目源码之投融圈小程序(投资、融资类).zip小程序项目源码之投融圈小程序(投资、融资类).zip小程序项目源码之投融圈小程序(投资、融资类).zip小程序项目源码之投融圈小程序(投资、融资类).zip
debugpy-1.4.1-cp37-cp37m-manylinux2014_i686.whl
05-29
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
mysql数据库入门 第二版
04-23
《MySQL数据库入门 第...6. 数据库高级特性:介绍MySQL数据库的高级特性,如事务处理、索引优化、视图和存储过程等。 7. 数据库安全性:讲解如何保护数据库的安全性,包括用户权限管理、数据加密和防止SQL注入攻击等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 快餐刷卡消费之触摸屏实现(含关键源码) 10372
  • 基于Jax-WS和Mysql数据库的WEB服务开发 7353
  • 堂食快餐连锁店系统(一)业务流程分析 4452
  • 联想Y470清灰大法 3376
  • 《浅谈HTTP协议》 3186

分类专栏

  • 【技能】
  • ————『面试常见算法』 2篇
  • ————『网络原理』 1篇
  • ————『操作系统』 1篇
  • ————『数据库』 4篇
  • ————『设计模式』 1篇
  • ————『Spring』 2篇
  • ————『Java中间件』 1篇
  • ————『JBPM工作流』 1篇
  • ————『WerbService』 2篇
  • ————『mina框架』
  • ————『JVM』
  • ————『并发编程』
  • ————『编程训练记录』 4篇
  • ————『数据挖掘』 1篇
  • ————『JAVA』 7篇
  • 【实践】
  • ————『门店连锁系统』 4篇
  • ————『健康大数据』 5篇
  • ————『04-05记录』 1篇
  • 【思考】
  • 【心得】
  • 【计算机基础技能】 3篇

最新评论

  • 基于Jax-WS和Mysql数据库的WEB服务开发

    出门向东看: String address = "http://127.0.0.1:8989/hdfs/webservice"; 这个发布地址是随便定义的吗

  • 快餐刷卡消费之触摸屏实现(含关键源码)

    cdh4869: 太好了,刚好想弄这么个东西练手,提供了个好思路,谢谢!

大家在看

  • 在javascript中定义三个状态机 15
  • C语言:IO操作
  • C语言内存函数(与上篇字符函数及字符串函数一起食用效果更佳哦~) 1031
  • linux下can-utils的使用以及can接口的配置(以ubuntu20.04为例)
  • 网络工程师:网络可靠性技术 1042

最新文章

  • 分页sql
  • 项目开发注意事项
  • 决策树算法(JAVA)
2017年2篇
2016年29篇
2015年4篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司横岗外贸网站制作报价枣庄模板网站建设多少钱坂田企业网站建设公司霍邱至尊标王报价平凉百度标王公司佛山seo优化价格武汉百度标王公司鞍山网站优化按天计费推荐松岗网站建设设计推荐日照网站优化推广哪家好南阳seo网站推广益阳网页设计报价无锡网站排名优化公司武威建设网站公司塘坑英文网站建设公司固原网站排名优化哪家好益阳网站制作龙岗网站定制推荐邯郸外贸网站制作报价金昌外贸网站制作南平企业网站制作价格通化网站关键词优化哪家好聊城网站建设设计哪家好抚州设计网站报价阳江百度爱采购多少钱衢州网站优化按天扣费价格淮北百度竞价包年推广伊春SEO按天收费公司晋中营销型网站建设多少钱宿迁营销型网站建设报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化