sql的普通索引和复合索引的问题

假如我在字段A中创建普通单索引,然后又在字段A创建复合索引,但是A不是复合索引
的初始列,现在我只用字段A作为查询条件进行查询,请问会用到索引么,还是全表查询

3个回答

会用你A的普通索引来查询

返回主页 农夫和白菜
博客园首页新随笔联系订阅管理
随笔 - 3 文章 - 0 评论 - 0
mySql的普通索引和复合索引
有关普通索引和组合索引问题:
索引分单列索引和组合索引:单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引;组合索引,即一个索包含多个列。
MySQL索引类型包括:
(1)普通索引是最基本的索引,它没有任何限制。它有以下几种创建方式:
◆创建索引
  CREATE INDEX indexName ON mytable(username(length));
   如果是 CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length,下同。
◆修改表结构
  ALTER mytable ADD INDEX [indexName] ON (username(length))
◆ 创建表的时候直接指定
  CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX indexName) );
删除索引的语法:
   DROP INDEX [indexName] ON mytable;
(2)唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
◆创建索引
   CREATE UNIQUE INDEX indexName ON mytable(username(length))
◆修改表结构
   ALTER mytable ADD UNIQUE [indexName] ON (username(length))
◆创建表的时候直接指定
   CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE indexName) );
(3)主键索引是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:
   CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );
当然也可以用 ALTER 命令。记住:一个表只能有一个主键。
(4)组合索引
  为了形象地对比单列索引和组合索引,为表添加多个字段:
   CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL );
为了进一步榨取MySQL的效率,就要考虑建立组合索引。就是将 name, city, age建到一个索引里:
   ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age);
建表时,usernname长度为 16,这里用 10。这是因为一般情况下名字的长度不会超过10,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。
如果分别在 usernname,city,age上建立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率也会大不一样,远远低于我们的组合索引。虽然此时有了三个索引,但MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。
建立这样的组合索引,其实是相当于分别建立了下面三组组合索引:
   usernname,city,age usernname,city usernname
为什么没有 city,age这样的组合索引呢?这是因为MySQL组合索引“最左前缀”的结果。简单的理解就是只从最左面的开始组合。并不是只要包含这三列的查询都会用到该组合索引,下面的几个SQL就会用到这个组合索引:
  SELECT * FROM mytable WHREE username="admin" AND city="郑州"   SELECT * FROM mytable WHREE username="admin"
而下面几个则不会用到:
  SELECT * FROM mytable WHREE age=20 AND city="郑州"   SELECT * FROM mytable WHREE city="郑州"
(5)建立索引的时机
   到这里我们已经学会了建立索引,那么我们需要在什么情况下建立索引呢?一般来说,在WHERE和JOIN中出现的列需要建立索引,但也不完全如此,因为MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引。例如:
SELECT t.Name FROM mytable t LEFT JOIN mytable m ON t.Name=m.username WHERE m.age=20 AND m.city='郑州'
此时就需要对city和age建立索引,由于mytable表的 userame也出现在了JOIN子句中,也有对它建立索引的必要。
刚才提到只有某些时候的LIKE才需建立索引。因为在以通配符%和_开头作查询时,MySQL不会使用索引。例如下句会使用索引:
  SELECT * FROM mytable WHERE username like'admin%'
而下句就不会使用:
   SELECT * FROM mytable WHEREt Name like'%admin'
因此,在使用LIKE时应注意以上的区别。
(6)索引的不足之处
上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:
   ◆虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行 INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
   ◆建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。
   索引只是提高效率的一个因素,如果你的 MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。
(7)使用索引的注意事项
使用索引时,有以下一些技巧和注意事项:
   ◆索引不会包含有NULL值的列
只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有 NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。
◆使用短索引
对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。
◆索引列排序
MySQL查询只使用一个索引,因此如果 where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
◆like语句操作
一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。
◆不要在列上进行运算
   select * from users where YEAR(adddate) 将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成
   select * from users where adddate ◆不使用NOT IN和操作
引用: http://zhidao.baidu.com/link?url=xF1BrmM9CNSE_ptqmRcEZQgTHIw5UK7WbMI_iAOMWzYS8MdNYbVMrpv820wzn6nxlkpyx2JAH_OXmAqFbfR32K

标签: 普通索引和复合索引
好文要顶 关注我 收藏该文

农夫和白菜
关注 - 1
粉丝 - 0
+加关注
0 0
« 上一篇:Linux常用命令
posted @ 2016-08-21 21:05 农夫和白菜 阅读(630) 评论(0) 编辑 收藏
刷新评论刷新页面返回顶部
注册用户登录后才能发表评论,请 登录 或 注册,访问网站首页。
【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【推荐】Google+GitHub联手打造前端工程师课程

最新IT新闻:
· 离开顺丰京东的日子
· 刘强东微博发声:电子商务不是法外之地
· 支付宝员工登记“器官捐献” 一招让妈妈从崩溃到骄傲
· LEGO Worlds登陆Xbox One平台
· Kindle包月服务上线一年后 中国成为全球第三大市场
» 更多新闻...

最新知识库文章:
· 垃圾回收原来是这么回事
· 「代码家」的学习过程和学习经验分享
· 写给未来的程序媛
· 高质量的工程代码为什么难写
· 循序渐进地代码重构
» 更多知识库文章...
公告
昵称:农夫和白菜
园龄:7个月
粉丝:0
关注:1
+加关注
< 2017年3月 >
日 一 二 三 四 五 六
26 27 28 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
搜索

常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
Linux(1)
常用命令(1)
普通索引和复合索引(1)
随笔档案
2016年8月 (2)
2016年7月 (1)
阅读排行榜
1. mySql的普通索引和复合索引(630)
2. logback.xml解读----日志配置解读(323)
3. Linux常用命令(16)
Copyright ©2017 农夫和白菜

专注,勤学,慎思
导航
博客园
首页
新随笔
联系
订阅订阅
管理
< 2017年3月 >
日 一 二 三 四 五 六
26 27 28 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
统计
随笔 - 42
文章 - 0
评论 - 136
引用 - 0
公告
昵称:MSSQL123
园龄:5年
粉丝:77
关注:81
+加关注
搜索

最新随笔
1. PowerShell 连接SQLServer数据库执行DML,DDL,DCL操作
2. SQL Server 用角色(Role)管理数据库权限
3. sp_executesql 或者 EXECUTE 执行动态sql的权限问题
4. 关于T-SQL重编译那点事,内联函数和表值函数在编译生成执行计划的区别
5. 关于T-SQL重编译那点事,WITH RECOMPILE和OPTION(RECOMPILE)区别仅仅是存储过程级重编译和SQL语句级重编译吗
6. Nested Loops join时显示no join predicate原因分析以及解决办法
7. T-SQL字符串相加之后被截断的那点事
8. 浅析SQL查询语句未显式指定排序方式,无法保证同样的查询每次排序结果都一致的原因
9. PowerShell 数组以及XML操作
10. 野路子出身PowerShell 文件操作实用功能
我的标签
SQL Server管理(3)
统计信息 Statistics(3)
PowerShell(2)
自动参数化(1)
no join predicate(1)
parallel 并行(1)
Parameter Embedding Optimization(1)
parameter sniff(1)
pivot(1)
表值函数(1)
更多
随笔分类
MySQL(1)
oracle
PowerShell(3)
SQL Server 管理(4)
SQL Server 基础(3)
SQL Server 权限(2)
SQL Server 优化(21)
T-SQL(6)
工作随想(1)
其他(2)
随笔档案
2017年2月 (3)
2017年1月 (2)
2016年12月 (5)
2016年11月 (4)
2016年10月 (4)
2016年9月 (4)
2016年8月 (2)
2016年7月 (4)
2016年6月 (4)
2016年5月 (2)
2016年4月 (2)
2016年3月 (1)
2015年11月 (1)
2015年10月 (1)
2015年9月 (1)
2015年2月 (1)
2015年1月 (1)
积分与排名
积分 - 31439
排名 - 8411
最新评论
1. Re:T-SQL字符串相加之后被截断的那点事
@Uest感谢!知道这个问题之后,就提示小伙伴们避免直接对字符串相加,赋值给(n)varchar(max)之后再用变量相加了。...
--MSSQL123
2. Re:T-SQL字符串相加之后被截断的那点事
整理文件补充群里小伙伴提供
--Uest
3. Re:SQL Server 用角色(Role)管理数据库权限
如果对权限限制要求比较高,需要按业务划分帐户、分配不同的权限,比如应用程序只能有对应数据库执行存储过程的权限,开发人员只有查询、查看定义的权限、作业执行也是专门的帐户…所有帐户需定期修改密码、遇到离职......
--Uest
4. Re:关于T-SQL重编译那点事,内联函数和表值函数在编译生成执行计划的区别
支持
--坦荡
5. Re:SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法
@Uest我测试环境是sqlserver 2014declare @p_costomerId varchar(20)set @p_costomerId='C86'select * from SaleO......
--MSSQL123
阅读排行榜
1. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因(1404)
2. SQL优化 查询语句中,用 inner join 作为过滤条件和用where作为过滤条件的区别(1285)
3. SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法(1150)
4. SQL Server创建复合索引时,复合索引列顺序对查询的性能影响(1056)
5. sqlserver 存储过程中使用临时表到底会不会导致重编译(1036)
评论排行榜
1. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因(15)
2. SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法(14)
3. SQL Server中参数化SQL写法遇到parameter sniff ,导致不合理执行计划重用的一种解决方案(13)
4. Sql Server 聚集索引扫描 Scan Direction的两种方式------FORWARD 和 BACKWARD(11)
5. SELECT TOP 1 比不加TOP 1 慢的原因分析以及SELECT TOP 1语句执行计划预估原理(7)
推荐排行榜
1. SQL Server 存储过程中处理多个查询条件的几种常见写法分析,我们该用那种写法(20)
2. SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率(14)
3. SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因(11)
4. SQL Server SQL性能优化之--数据库在“简单”参数化模式下,自动参数化SQL带来的问题(10)
5. 连接SQLServer时,因启用连接池导致孤立事务的原因分析和解决办法(9)
SQL Server创建复合索引时,复合索引列顺序对查询的性能影响

说说复合索引

写索引的博客太多了,一直不想动手写,有一下两个原因:
一是觉得有炒剩饭的嫌疑,有兄弟曾说:索引吗,只要在查询条件上建索引就行了,真的可以这么暴力吗?
二来觉得,索引是个非常大的话题,很难概括出所有的情况,你不整出点新意来,倒是有抄袭照搬的嫌疑

既然写了,就写一点稍微不一样的东西出来,
好了,废话打住,开搞

/*

  20160814备注:今天发现一个类似的文章:http://www.cnblogs.com/fly_zj/archive/2012/08/11/2633629.html

  可以理解为:添加组合索引时,做相等运算字段应该放在最前面

*/

搭建测试环境:

创建一张表,模拟实际业务中的一个表,往里面填入数据,
时间字段上,相对按照时间均匀地填充,其他字段以GUID填充

复制代码
Create table BusinessInfoTable
(
BuniessCode1 varchar(50),
BuniessCode2 varchar(50),
BuniessCode3 varchar(50),
BuniessCode4 varchar(50),
BuniessStatus1 tinyint,
BuniessStatus2 tinyint,
BuniessDateTime1 Datetime,
BuniessDateTime2 Datetime,
OtherColumn1 varchar(50),
OtherColumn2 varchar(50),
OtherColumn3 varchar(50)
)

declare @i int=0
while @i<1000000
begin
insert into BusinessInfoTable
values
(
NEWID(),NEWID(),NEWID(),NEWID(),RAND()*100,RAND()*100,
DATEADD(MI,@i,GETDATE()),DATEADD(MI,@i,GETDATE()),NEWID(),NEWID(),NEWID()
)
set @i=@i+1
end
复制代码
现在有这么一个查询(实际上查询远比这个复杂,我简化一点,不要说我刻意造环境)

复制代码
select OtherColumn2,
BuniessStatus1,
BuniessStatus2,
BuniessDateTime1,
BuniessDateTime2
from BusinessInfoTable
where BuniessDateTime1 between '2016-6-21' and '2016-6-28'
and BuniessDateTime2 between '2016-6-21' and '2016-6-28'
and BuniessStatus1 = 55
and BuniessStatus2 = 66
复制代码
郑重的说明一点:

暂时不考虑聚集索引,毕竟一个表上只能有一个聚集索引,
别人也不是傻子,不会轻易去建聚集索引,聚集索引早被占用了
既然被占用了,我的原则是一般不去动别人现有的东西的,比如别人建了聚集索引,你给人家删了,根据自己的情况建聚集索引
这不是找骂么

有经验的你一定考虑符合索引了,同时考虑到为避免Key Lookup导致的书签查找,我们把查询索要的OtherColumn2列include进来
比如这样

CREATE NONCLUSTERED INDEX IDX_1 ON BusinessInfoTable
(BuniessStatus1,BuniessStatus2,BuniessDateTime1,BuniessDateTime2)
INCLUDE(OtherColumn2)

或者这样,只是索引列顺序不一样

CREATE NONCLUSTERED INDEX IDX_1 ON BusinessInfoTable
(BuniessDateTime1,BuniessDateTime2,BuniessStatus1,BuniessStatus2)
INCLUDE(OtherColumn2)

当然可以随意调整四个列的顺序,我就不过多地做演示了,有兴趣的自己试

这里的前导列的顺序并不会影响到索引的使用,查询的时候都是非聚集索引Seek,绝对的

那么问题来了,完全一样的查询条件,结果一样,使用不同的索引,索引的区别仅仅是列顺序不一样,其代价一样吗,先猜测一下,有区别吗?

  同样查询,使用不同索引的结果(分别是上面的IDX_1和IDX_2):

下面看图说话

看看IO情况

原因分析

  看来是有点差别吧,好似乎这个差别还真不小(以往写文章,我测试环境弄不好,对比出来的效果不明显,感觉没啥说服力,这次对比还是比较明显的)

  究竟原因在何?

  索引是以平衡树(B树)的方式存在的,复合索引的列的顺序决定了B树的信息的存储的顺序

  如果是以BuniessStatus1列为前导列,因为BuniessStatus1分布的范围(相对)较小,

  这样在查询的时候通过BuniessStatus1=55就可以过滤出来一个比较小的结果集,后面依次用其他条件过滤就相对较快了

  比如BuniessStatus1=55过滤出来符合条件的数据有5条,

  加上BuniessStatus2 BuniessDateTime1 BuniessDateTime2 这三个条件再过滤,出来一条数据。

  如果BuniessDateTime1 是索引的前导列,用BuniessDateTime1 between '2016-6-21' and '2016-6-28'过滤

  可能会有10000条数据,然后依次再用 BuniessDateTime2,BuniessStatus1, BuniessStatus2过滤

  最后也只有一条符合条件的数据。

  差别就在于:一开始的过滤条件,决定了查询多少page初步确定满足条件的数据,再进一步的进行过滤

  如果最开始就相对精确地确定了满足查询条件的数据范围,后面可以通过相对较小的代价来最终确认出满足条件的数据

  如果最开始相对模糊地却确定了满足查询条件的数据范围,那么这个过程的代价就相对比较大,虽然后面通过每一个条件的过,结果是一样的

  当然这种索引的建立跟数据分布有关,

  但是,我没有下结论说,复合索引一定要按照什么什么顺序来是最好的

  还是那句话:具体问题具体分析,避免经验主义,没有一刀切的手段可以解决所有的问题。

总结:

  本文通过一个简单的例子,分析了创建符合索引时,列的顺序对查询的影响,说明在创建索引的时候,不仅仅要考虑在哪些列上创建索引,同时也要注意到,索引列的顺序,是否会对查询产生影响。避免一说到索引,就是“在查询条件上建索引”的暴力做法。

分类: SQL Server 优化
好文要顶 关注我 收藏该文

MSSQL123
关注 - 81
粉丝 - 77
+加关注
5
发表评论
« 上一篇:SQL Server在执行SQL语句时,表之间驱动顺序对性能的影响
» 下一篇:SQL Server中参数化SQL写法遇到parameter sniff ,导致不合理执行计划重用的一种解决方案
posted on 2016-06-21 17:43 MSSQL123 阅读(1056) 评论(2) 编辑 收藏

评论

#1楼 2016-06-21 18:53 Double_K

赞一个
支持(1)反对(0)

#2楼[楼主] 2016-06-21 19:44 MSSQL123

@ Double_K
多谢支持,没记错的话我应该是你的第一个关注者,看你写的文章,学到了好多。
支持(0)反对(0)

刷新评论刷新页面返回顶部
注册用户登录后才能发表评论,请 登录 或 注册,访问网站首页。
【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
【推荐】Google+GitHub联手打造前端工程师课程

最新IT新闻:
· 离开顺丰京东的日子
· 刘强东微博发声:电子商务不是法外之地
· 支付宝员工登记“器官捐献” 一招让妈妈从崩溃到骄傲
· LEGO Worlds登陆Xbox One平台
· Kindle包月服务上线一年后 中国成为全球第三大市场
» 更多新闻...

最新知识库文章:
· 垃圾回收原来是这么回事
· 「代码家」的学习过程和学习经验分享
· 写给未来的程序媛
· 高质量的工程代码为什么难写
· 循序渐进地代码重构
» 更多知识库文章...
Powered by:
博客园
Copyright © MSSQL123

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于sql复合索引没有生效的问题
-
sql server 索引的问题
-
sql语句循环建普通索引
-
mysql 的索引相关问题
-
navicat的sqlserver视图如何建立索引
-
dataframe.to_sql过程中遇到的索引问题
-
如何用SQL语句查询MySQL数据库中的表的索引信息。
-
急求关于SQL Server2005主键和聚簇索引设置的问题,谢
-
关于Sql Server 聚簇索引使用的问题
-
Mysql中sql优化以及索引失效问题
-
sql进行非空判断后,就不能使用索引了,该如何破?(我想使用索引)
-
sql dintinct走索引吗
-
表A两个字段分别a与b,字段a与b都是单独索引,请描述一下sql的语句的问题
-
sql 表中同一个字段已经创建了单字段索引还能在字段创建组合索引吗?
-
关于是否走索引的问题
-
SQL Server 2014 大牛们,线上环境重建碎片较多的索引会不会影响业务。有没有实践过的解答下,
-
mysql数据库索引的建立和使用
-
sql server全文索引,分词
-
ORACLE数据库性能 查询无索引sql
-
程序员真是太太太太太有趣了!!!
网络上虽然已经有了很多关于程序员的话题,但大部分人对这个群体还是很陌生。我们在谈论程序员的时候,究竟该聊些什么呢?各位程序员大佬们,请让我听到你们的声音!不管你是前端开发...
史上最详细的IDEA优雅整合Maven+SSM框架(详细思路+附带源码)
网上很多整合SSM博客文章并不能让初探ssm的同学思路完全的清晰,可以试着关掉整合教程,摇两下头骨,哈一大口气,就在万事具备的时候,开整,这个时候你可能思路全无 ~中招了咩~ ,还有一些同学依旧在使用eclipse或者Myeclipse开发,我想对这些朋友说IDEA 的编译速度很快,人生苦短,来不及解释了,直接上手idea吧。这篇文章每一步搭建过程都测试过了,应该不会有什么差错。本文章还有个比较优秀的特点,就是idea的使用,基本上关于idea的操作都算是比较详细的,所以不用太担心不会撸idea!最后,本文
史上最全的后端技术大全,你都了解哪些技术呢?
| 导语工欲善其事,必先利其器;士欲宣其义,必先读其书。后台开发作为互联网技术领域的掌上明珠,一直都是开发者们的追逐的高峰。本文将从后台开发所涉及到的技术术语出发,基于...
吃人的那些 Java 名词:对象、引用、堆、栈
作为一个有着 8 年 Java 编程经验的 IT 老兵,说起来很惭愧,我被 Java 当中的四五个名词一直困扰着:**对象、引用、堆、栈、堆栈**(栈可同堆栈,因此是四个名词,也是五个名词)。每次我看到这几个名词,都隐隐约约觉得自己在被一只无形的大口慢慢地吞噬,只剩下满地的衣服碎屑(为什么不是骨头,因为骨头也好吃)。
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
团队中的 Git 实践
在 2005 年的某一天,Linux 之父 Linus Torvalds 发布了他的又一个里程碑作品——Git。它的出现改变了软件开发流程,大大地提高了开发流畅度!直到现...
不识 Pandas,纵是老手也枉然?
作者 |周志鹏 责编 | 郭 芮 这段时间和一些做数据分析的同学闲聊,我发现数据分析技能入门阶段存在一个普遍性的问题,很多凭着兴趣入坑的同学,都能够很快熟悉Python基础语法,然后不约而同的一头扎进《利用Python进行数据分析》这本经典之中,硬着头皮啃完之后,好像自己什么都会了一点,然而实际操作起来既不知从何操起,又漏洞百出。 至于原因嘛,理解不够,实践不够是两条老牌的拦路...
接班马云的为何是张勇?
上海人、职业经理人、CFO 背景,集齐马云三大不喜欢的张勇怎么就成了阿里接班人? 作者|王琳 本文经授权转载自燃财经(ID:rancaijing) 9月10日,张勇转正了,他由阿里巴巴董事局候任主席正式成为阿里巴巴董事局主席,这也意味着阿里巴巴将正式开启“逍遥子时代”。 从2015年接任CEO开始,张勇已经将阿里巴巴股价拉升了超过200%。但和马云强大的个人光环比,张勇显得尤其...
程序员终极面试指南!
身为技术人,如何拿下自己心仪的 offer? 作者|James Bedford 译者 |苏本如,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 介绍 最近半年以来,我一直在积极指导开发人员,包括新手和有经验的开发人员。我发现,所有开发人员最关心的问题之一通常都是寻找工作。 如果你已经被录用了,很有可能你经历了一个令人精疲力竭的过程。...
我在快手认识了 4 位工程师,看到了快速发展的公司和员工如何彼此成就!
作者 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 从西二旗地铁站B口出来,步行700多米可以看到一个工业建筑风格的院子。这个独立的院子和后厂村各大互联网公司的高楼林立有些不同。 院子里有7栋6层高的楼,几栋楼之间打通,可以从A栋自由穿行到F栋。这里就是快手总部。这个园区可以容纳6000多名员工,目前40%以上是研发人员。 这些研发人员维护着快手这款日活超过2亿的ap...
让程序员崩溃的瞬间(非程序员勿入)
今天给大家带来点快乐,程序员才能看懂。 来源:https://zhuanlan.zhihu.com/p/47066521 1. 公司实习生找 Bug 2.在调试时,将断点设置在错误的位置 3.当我有一个很棒的调试想法时 4.偶然间看到自己多年前写的代码 5.当我第一次启动我的单元测试时 ...
分享一个 pycharm 专业版的永久使用方法
刚开始接触Python,首先要解决的就是Python开发环境的搭建。 目前比较好用的Python开发工具是PyCharm,他有社区办和专业版两个版本,但是社区版支持有限,我们既然想好好学python,那肯定得用专业的不是。 但他专业版要么只能试用一个月,要么就是 $ , 身为猿军中的一员怎么能让他们这些小伎俩阻碍了我们继续前进的步伐呢?所以我在度娘的引导下,一步步实现了PyCharm的永久使用(虽...
用Python分析2000款避孕套,得出这些有趣的结论
到现在为止,我们的淘宝教程已经写到了第四篇,前三篇分别是: 第一篇:Python模拟登录淘宝,详细讲解如何使用requests库登录淘宝pc端。 第二篇:淘宝自动登录2.0,新增Cookies序列化,教大家如何将cookies保存起来。 第三篇:Python爬取淘宝商品避孕套,教大家如何爬取淘宝pc端商品信息。 今天,我们来看看淘宝系列的第四篇 我们在上一篇的时候已经将淘宝数据爬取下来了,...
无需安装,仅需 1 条指令,秒实现内网穿透的神器,你有用过吗?
什么是 ServeoServeo 是一个免费的内网穿透服务,Serveo 可以将本地计算机暴露在互联网上,官方声称其为 Ngrok 的绝佳替代品。Serveo 其最大优点...
作为曾经的 Web 开发“王者”,jQuery 的传奇怎么续写?
作为世界上使用最广泛的JavaScript库,jQuery曾经帮助过一代开发人员创建了适用于每种浏览器的网站,可以说,Web开发之所以能有今天,jQuery可谓功不可没。但是随着新的库、框架和范例的不断涌现,jQuery作为Web开发首选工具的地位已经逐渐不保......任何事物都有其自身发展的兴盛与衰落,短期内jQuery并不会消失,但是对于其来说,又该如何维稳逆袭呢? 作者|Da...
重磅:硬核前端面试开源项目汇总(进大厂必备)
复习前端面试的知识,是为了巩固前端的基础知识,最重要的还是平时的积累!”开源项目https://github.com/InterviewMap/CS-Interview...
为什么平头哥做芯片如此迅猛?
作者 | 胡巍巍 发自杭州云栖大会责编 | 唐小引出品 | CSDN(ID:CSDNnews)2018年10月31日,阿里旗下的平头哥半导体有限公司成立。如今,平头哥成立...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
技术人员要拿百万年薪,必须要经历这9个段位
很多人都问,技术人员如何成长,每个阶段又是怎样的,如何才能走出当前的迷茫,实现自我的突破。所以我结合我自己10多年的从业经验,总结了技术人员成长的9个段位,希望对大家的职...
多线程编程是后台开发人员的基本功
这里先给大家分享一个小故事:在我刚开始参加工作的那年,公司安排我开发一款即时通讯软件(IM,类似于 QQ 聊天软件),在这之前我心里也知道如果多线程操作一个整型值是要加锁...
Java 网络爬虫,就是这么的简单
这是 Java 网络爬虫系列文章的第一篇,如果你还不知道 Java 网络爬虫系列文章,请参看 学 Java 网络爬虫,需要哪些基础知识。第一篇是关于 Java 网络爬虫入门内容,在该篇中我们以采集虎扑列表新闻的新闻标题和详情页为例,需要提取的内容如下图所示: 我们需要提取图中圈出来的文字及其对应的链接,在提取的过程中,我们会使用两种方式来提取,一种是 Jsoup 的方式,另一种是 httpcli...
相关热词 c#二进制字符转字节 c# rc4 c#中md5加密 c# 新建mvc项目 c# 引用mysql c#动态加载非托管dll c# 两个表数据同步 c# 返回浮点json c# imap 链接状态 c# 漂亮字