木子屋 Dnawo's BLOG

2011-12 归档

共 23 篇

T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他

简介 在SQLServer中,索引是一种增强式的存在,这意味着,即使没有索引,SQLServer仍然可以实现应有的功能。但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索引的概念,需要了解大量原理性的知识,包括B树,堆,数据库页,区,填充因子,碎片,文件组等等一系列相关知识,这些知识写一本小书也不为过。所以本文并不会深入讨论这些主题。 索引是什么 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 精简来说,索引是一种结构.在SQLServer中,索引和表(这里指的是加了聚集索引的表)的存储结构是一样的,都是B树,B树是一种用于查找的平衡多叉树.理解B树的概念如下图:…

C#使用BinaryWriter.Write存取数字示例

下边代码用4个字节在文件中保存了一个数字(0xAABBCC): 按正常理解,文件内容应是这样: 00 AA BB CC 所以,当按字节读取并进行转化时应是这样: 显示结果为:0xCCBBAA00,和原先的0xAABBCC不一样,为什么呢?用UltraEdit打开1.txt,可以看到实际保存为: 所以正确读取转化方法应为: 测试下: 这回正常了。 为什么文件中保存的是CC BB AA 00,而不是00 AA BB CC呢? 用Reflector查看BinaryWriter.Write(int value)方法,代码如下: 例如上边例子,经方法拆分后,this._buffer=0xCC、this._buffer=0xBB、this._buffer=0xAA、this._buffer=0,所以才会出现我们上边看到的结果。…

浅谈HASH算法与CSDN密码泄漏事件

在CSDN密码泄漏事件中,网友评论提到密码的明文保存和MD5保存问题。目前,很多站点都用MD5算法保存密码,但对于HASH(哈希)算法的认识还存在很多误区,很有必要重新认识。 一、HASH算法不是加密算法 HASH算法是一种消息摘要算法,不是一种加密算法,但由于其单向运算,具有一定的不可逆性,成为加密算法中的一个构成部分,完整的加密机制不能仅依赖HASH算法。 二、HASH算法的碰撞现象 HASH算法可以理解为将任意的信息经过提炼后,成为一个定长的字符串。世界上的信息数量为无穷大,所以定长的字符串不可能表达所有的摘要,因此存在所谓的"碰撞",即2个同样的信息源摘要是一样的。 2004年山东大学王晓云提出有关快速查找"碰撞对"的算法,引起安全界对于HASH算法的极大关注,NIST提出到2010年不再使用MD5和SHA-1。目前仍可使用的HASH算法包括:SHA-256,SHA-512,SHA-224,SHA-384。2011年2月FIPS180-4草案还增加了SHA-512/224,SHA-512/256。这些算法都是SHA-2系列算法,SHA3-256算法也即将到来。关于碰撞必须还要说的是,有几率找到碰撞对,但并不意味着HASH算法整体被否定,例如将合同文本整体HASH并数字签名,如果找到碰撞对,很难还原成一个正常的文本,如果是一堆乱码,没有人会认可此文件,在不篡改HASH的前提下无法有实际意义的修改合同。…

在没有安装SQL Server的机子上使用客户端网络实用工具的方法

SQL Server自带的客户端网络实用工具中有个"别名"工具非常好用,你可以为任意一个数据库服务器设置一个别名,这样在程序中连接数据库的地方都可以使用这个别名,例如: 然后在程序中使用(web.config): 别名不仅易记,和服务器IP地址相比也易写,除此之外,还有一个实用的地方,就是当某天数据库移到另一台服务器IP换了,也只需修改下别名对应的地址即可,程序不必做任何修改。但这边有个问题: 客户端网络实用工具是SQL Server自带的,也就是说,如果你的程序想使用客户端网络实用工具,那程序和SQL Server必须在同一台机子上,但在WEB应用程序布署中,WEB程序和数据库服务器放在两台服务器上是很常见的,这时总不能为了使用客户端网络实用工具而在WEB程序所在服务器上安装个SQL Server吧?有什么办法能在没有安装SQL Server的机子上使用客户端网络实用工具呢?…

VSS2005忘记管理员密码解决方法

用UltraEdit打开data\um.dat,切换到十六进制编辑,修改00000080h到000000a0h这三行内容,例如原先为: 00000080h: 55 55 03 29 41 64 6D 69 6E 00 00 00 00 00 00 00 00000090h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000000a0h: 00 00 00 00 56 6B 00 00 A8 01 00 00 00 00 00 00 替换为: 00000080h: 55 55 BC 7F 41 64 6D 69 6E 00 00 00 00 00 00 00…

解释为什么冬天电动车行驶里程变短?

今年6月份买的电动自行车,大都是上下班时骑,以前可以骑两天(电还有剩)再充一次电,最近发现骑两天后完全没电了,到售后问,都说是正常现象,电动车行驶里程变短具体原因是: 目前市场上所出售的电动自行车大部分使用的是铅酸电池,这种电池受外界温度影响比较大,在冬天低温环境下,蓄电池的储电能力会降低,所以电动车行驶里程变短。

无法复制XXX:访问被拒绝

重装系统后,想把一个数据库文件移到另一个分区中,但移动老是失败,就尝试复制,然而复制都不行,提示:无法复制XXX:访问被拒绝。 查看安全选项卡,发现只有一个莫名奇妙的用户: 组或用户名称列表中没有当前登录用户Administrator,没有权限,移动和复制当然失败了,添加Administrators组并赋予所有权限,再复制,成功了。

SQL Server 2000:以前的某个程序安装已在安装计算机上创建挂起的文件操作

安装SQL Server 2000错误,提示:以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机。然而系统重启后运行安装程序,仍是这个提示。 解决方法 点击"确定"按钮,打开注册表编辑器,依次打开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager,在右侧删除PendingFileRenameOperations值,再回到SQL Server 2000安装界面,点下一步即可。 说明:安装SQLsp4时也可能出现同样的情况,可用同样的方法处理。

巧用having解决统计问题

有一张学员考试分数表结构如下: 给表中添加一些测试数据: ①.统计已经参加过科目一、科目二和科目三考试的学员: UserId ----------- 2 3 (所影响的行数为 2 行) ②.统计过了三个科目的学员: UserId ----------- 3 (所影响的行数为 1 行)

FastCGI Error:无效索引

按《IIS6.0上安装配置PHP 5.3.8示例》一文安装好后,浏览php页面时显示: FastCGI Error The FastCGI Handler was unable to process the request. -------------------------------------------------------------------------------- Error Details: ·Could not find entry for "php" on site 224000619 in section. ·Error Number: 1413 (0x80070585).…