戊辰人博客

青,取之于蓝而青于蓝;冰,水为之而寒于水。

sql server 2000错误2812 未能找到存储过程sp_password

日期:2015年5月25日 作者: 分类:数据库 阅读:726

在帮助朋友解决管家婆问题时,管家婆报错未能登录’sa’账户,看到这个提示后的第一个想法就是可能是什么原因数据库’sa’账户密码被修改或者密码忘记导致连接失败。

既然是账号问题时,那去改一下密码就好啊,于是打开数据库的企业管理器,进入数据库的 SQL Server组→安全性→登陆,找到sa用户,右键属性,修改密码,可是出现如下错误:

sql server 2000错误2812

Google之,网上给出的答案是:

现在有很多自动扫描1433端口的软件,会破坏sp_password。造成在修改SA密码的时候出现2812错误。

解决方法是重建sp_password,用WINDOWS身份验证登陆到SQL SERVER的查询工具。复制–粘贴–执行如下代码就OK。

阅读全文…

C语言程序代码优化11种实用方法

日期:2015年5月22日 作者: 分类:编程 阅读:1,059

1、选择合适的算法和数据结构

选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。

在许多种情况下,可以用指针运算代替数组索引,这样做常常能产生又快又短的代码。与数组索引相比,指针一般能使代码速度更快,占用空间更少。使用多维数组时差异更明显。下面的代码作用是相同的,但是效率不一样。

数组索引 指针运算

for(;;)
{ 
	p=array;
	A=array[t++];
	for(;;)
	{
		a=*(p++);
		。。。。。。。。。 。。。。。。
	}
}

指针方法的优点是,array的地址每次装入地址p后,在每次循环中只需对p增量操作。在数组索引方法中,每次循环中都必须根据t值求数组下标的复杂运算。

阅读全文…

越过长城,走向世界每一个角落

日期:2015年5月21日 作者: 分类:互联网 阅读:1,873

1987年9月14日 ,中国成功发送了第一条电子邮件,内容是:

“Across the Great Wall, we can reach every corner in the world”(越过长城,走向世界每一个角落)

这可以算是一个里程碑的时刻,这封邮件的意义之于中国互联网,不亚于1949年10月1日毛主席在开国大典上说的那句“中国人民从此站起来了!”。20多年已经过去了,可看看现在国内互联网的现状,给我们的只有一个无力的叹息:长城依然在,大炮正在开。GFW下的大中华局域网已经形成。

越过长城,走向世界每一个角落

 

中文维基百科被屏蔽事件

越过长城,走向世界每一个角落2015年5月19日,中文维基百科的域名zh.wikipedia.org被关键字屏蔽和DNS污染,目前从中国已无法正常访问中文维基百科,中文维基百科的域名也无法解析出正确的IP地址。维基百科是一个自由内容可公开编辑,且多语言的网络百科全书,由非营利组织维基媒体基金会负责营运,并接受捐赠。其口号为“维基百科,自由的百科全书”。中文则附加“海纳百川,有容乃大。”

维基百科自2001年1月15日正式成立,由维基媒体基金会负责维持,因为维基用户的广泛参与共建、共享,维基百科也被称为创新2.0时代的百科全书。这本全球各国人民参与编写,自由、开放的在线百科全书也是知识社会条件下用户参与、大众创新、开放创新、协同创新的生动诠释。目前维基百科的词条数量已经达到3111+万(所有语言版本)条。

阅读全文…

为什么只有 Linux 内核获得成功

日期:2015年5月14日 作者: 分类:互联网 阅读:461

过去几十年涌现了许多类Unix内核,除了Linux内核外,我们所知道的类Unix内核还有GNU HURD、BSD、微软授权开发的Unix版本Xenix、学术性的Unix克隆Mini,以及Unix本身。但为什么只有Linux内核最终取得成功?这是自由开源软件领域中一个令人不解的谜团。

为什么只有 Linux 内核获得成功

SR(Eric S. Raymond)的一个观点是Linux采用了去中心化的开发模式,而GNU HURD失败的原因之一是开发方法过于集中化,但这一观点有缺陷,Linux作者在引导Linux开发上起着至关重要的作用。

另一个观点是Linux是实用主义,而GNU过于理想主义,但为什么理想主义的GNU开发出了许多成功的自由软件?

第三种观点是Linux在操作系统设计上比Unix更优越,RMS(Richard Stallman)曾指出GNU HURD没有成功的部分理由是它的基本设计更像是一个研究项目。

第四个观点是社区选择支持Linux。

阅读全文…

linux命令批量改名与批量文字替换实战

日期:2015年5月12日 作者: 分类:运维 阅读:787

情景:开发的一个项目中,文件名的命名规则为“tbuxxx.x”,即所有文件名中有“tbu”这个字符串,现在要将“tbu”改为“wcr”,即更改后文件名规则应为“wcrxxx.x”,同时,由于文件中存在文件引用,故也要将文件中相应的“tbu”改为“wcr”。

第一步:批量更改文件名(rename)

rename tbu wcr *

* 为通配符,代表所有文件,该命令的意思是将当前文件夹中所有文件名中的tbu替换为wcr。

第二步:批量更改文件中相关字符串(sed)

sed -i "s/tbu/wcr/g" *

* 含义和上面相同;

“s/tbu/wcr/g” 字符替换匹配规则,规则为”s/要替换掉的字符串/要替换成的字符串/g”,s为命令开头,g代表全部匹配的字符串。

阅读全文…

Linus:利用二级指针删除单向链表

日期:2015年5月12日 作者: 分类:编程 阅读:449

Linus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level coding

下面是Linus的教学原文及翻译——

“At the opposite end of the spectrum, I actually wish more people understood the really core low-level kind of coding. Not big, complex stuff like the lockless name lookup, but simply good use of pointers-to-pointers etc. For example, I’ve seen too many people who delete a singly-linked list entry by keeping track of the “prev” entry, and then to delete the entry, doing something like。(在这段话的最后,我实际上希望更多的人了解什么是真正的核心底层代码。这并不像无锁文件名查询(注:可能是git源码里的设计)那样庞大、复杂,只是仅仅像诸如使用二级指针那样简单的技术。例如,我见过很多人在删除一个单项链表的时候,维护了一个”prev”表项指针,然后删除当前表项,就像这样)”

if (prev)
    prev->next = entry->next;
else
    list_head = entry->next;

and whenever I see code like that, I just go “This person doesn’t understand pointers”. And it’s sadly quite common.(当我看到这样的代码时,我就会想“这个人不了解指针”。令人难过的是这太常见了。)

People who understand pointers just use a “pointer to the entry pointer”, and initialize that with the address of the list_head. And then as they traverse the list, they can remove the entry without using any conditionals, by just doing a “*pp = entry->next”. (了解指针的人会使用链表头的地址来初始化一个“指向节点指针的指针”。当遍历链表的时候,可以不用任何条件判断(注:指prev是否为链表头)就能移除某个节点,只要写)

*pp = entry->next;

So there’s lots of pride in doing the small details right. It may not be big and important code, but I do like seeing code where people really thought about the details, and clearly also were thinking about the compiler being able to generate efficient code (rather than hoping that the compiler is so smart that it can make efficient code *despite* the state of the original source code). (纠正细节是令人自豪的事。也许这段代码并非庞大和重要,但我喜欢看那些注重代码细节的人写的代码,也就是清楚地了解如何才能编译出有效代码(而不是寄望于聪明的编译器来产生有效代码,即使是那些原始的汇编代码))。

Linus举了一个单向链表的例子,但给出的代码太短了,一般的人很难搞明白这两个代码后面的含义。正好,有个编程爱好者阅读了这段话,并给出了一个比较完整的代码。他的话我就不翻译了,下面给出代码说明。

阅读全文…