木子屋 Dnawo's BLOG

2008-12 归档

共 34 篇

SQL Server存储过程命名方法

下边两种方法是从网上搜集的,个人觉得都还不错,大家可以看下选择其中一种方法或是综合两种方法的优点总结出自己的命名方法。 方法一 A、“表”单数形式命名 语法:__(_) -- 创建/删除/更新/等操作采用单数表形式命名 proc_OfferThread_Create proc_OfferThread_Update proc_OfferThread_Delete 其他辅助操作: proc_OfferThread_Status_Update proc_OfferThread_PrevNext proc_OfferThread_Get (如果不用ByID指明则默认是ID) B、“表”复数形式命名 语法:__…

编码的邪恶: 复制与粘帖

在侃侃而谈OO,侃侃而谈设计模式,侃侃而谈面向对象的诸多原则之前,我们首先应该掌握一点:封装。掌握好封装的原则和技巧之后,就算使用的不是OO语言,也能构造出框架优美的程序。将这些原则用在程序之外,也能得到出奇的效果。《设计规则-模块化的力量》(http://www.douban.com/subject/1737636/)将封装与模块化放在神坛的高位,它们配得上这个位置。这是我们解决复杂性问题的最基本的方法(没有之一)。 程序是一种复杂性系统。“道生一,一生二,二生三,三生(四,四生…)万物”。若将复杂性的根源当作“道”的化,那么这个“一”必然是封装。不同的程序语言以及由这些程序语言衍生的方法,则处于“二”的地位,比如 OO 设计范式、FP(函数编程)范式、分层的原则等等。OO设计准则,什么里氏替换原则,什么组合优先于继承,这些处于“三”的地位,具体的设计模式什么之类的处于“三”之后“四”的地位。 本人愚笨,至今尚记不清那些原则,如里氏替换原则是什么,那些这个模式那个模式怎么实现。设计模式中,俺只对策略模式感兴趣,对其它模式兴趣索然。实质上这些模式也好、准则也好,只是给我们提供了一种方法、一种工具去更好的实现封装。…

动态执行Sql语句创建临时表提示对象名无效

上边存储过程执行的时候老是提示: 将@strSQL语句输出再在查询分析器中执行却没有问题,其原因是临时表有作用域的,上边临时表的作用域只在exec内部有效!解决方法:改用全局临时表!

图片不存在对页面加载速度的影响

测试10次的结果(mzwu123.com不存在,单位:ms): 22531 22516 22516 22515 22516 22532 22531 22516 22531 22547 测试10次结果(mzwu.com存在,单位:ms): 187 78 140 62 93 110 62 78 125 94

委托进阶:匿名方法的使用

我们现在来做一个小程序:创建一个Windows窗体应用程序,然后在默认创建的Form1上添加两个按钮,分别命名为btnClickMe1和btnClickMe2,显示的文本为“点击我1”、“点击我2”,如下图所示: 然后我们希望在点击这两个按钮的时候,能够弹出一个对话框,向用户显示一个提示,例如“您好,我的读者,希望您能喜欢本书!”(顺便一提,我是真心这么希望的^^)。如果在往常,你可能会毫不犹豫的在按钮上双击,然后编写按钮的事件处理代码,但是我们现在在讲委托和事件,所以让我们换一种方式,像下面这样修改Form1.cs文件: 我知道这段代码现在已经不会为你造成任何障碍了,所以就不费时间解释它了。但是我们的第一个反应就是代码重用了,因为两个Click事件共享了同一个事件处理方法。接下来我们再思考一下,像这种两个按钮共用同一个Click事件处理方法的情况并不多见,现在让我们删除掉btnClickMe2,仅保留一个btnClickMe1,好了,现在你看出问题了么?btnClickMe_Click()方法仅仅是为btnClickMe1服务,但是它们却离得如此之远,以至于我们在窗体代码很多的情况下(你可以想像一下窗体有几百行代码,而btnClickMe_Click()隐藏在一个小角落里)不得不花些时间来寻找它。我们会想,要是有一种语法,能够直接将方法体付给btnClickMe1的Click事件就好了,比如说像下面这样:…

C# 中的委托和事件

引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。 将方法作为方法的参数 我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问候的话语:…

SIM卡背面的20位数字所代表的含义

中国移动 例如:8986 00 79 09 04 4 9311287 8986代表国家中国 00代表运营商中国移动 79代表手机号码第三四位,如此卡为1379 09代表发卡省份编号 04代表发(制)卡年份2004年 4代表生产厂家 9311287代表用户识别号,比较随意 中国联通 例如:8986 01 04 05 021 063908 S 8986代表国家中国 01代表运营商中国联通 04代表发(制)卡年份2004年 05代表手机号码第三四位,如此卡为1305 021代表发卡地区号 063908代表用户识别号,比较随意 S代表生产厂家 --------------------------------------------------------------------…

怎么从进程判断病毒和木马

任何病毒和木马存在于系统中,都无法彻底和进程脱离关系,即使采用了隐藏技术,也还是能够从进程中找到蛛丝马迹,因此,查看系统中活动的进程成为我们检测病毒木马最直接的方法。但是系统中同时运行的进程那么多,哪些是正常的系统进程,哪些是木马的进程,而经常被病毒木马假冒的系统进程在系统中又扮演着什么角色呢?请看本文。 病毒进程隐藏三法 当我们确认系统中存在病毒,但是通过"任务管理器"查看系统中的进程时又找不出异样的进程,这说明病毒采用了一些隐藏措施,总结出来有三法: 1.以假乱真 系统中的正常进程有:svchost.exe、explorer.exe、iexplore.exe、winlogon.exe等,可能你发现过系统中存在这样的进程:svch0st.exe、explore.exe、iexplorer.exe、winlogin.exe。对比一下,发现区别了么?这是病毒经常使用的伎俩,目的就是迷惑用户的眼睛。通常它们会将系统中正常进程名的o改为0,l改为i,i改为j,然后成为自己的进程名,仅仅一字之差,意义却完全不同。又或者多一个字母或少一个字母,例如explorer.exe和iexplore.exe本来就容易搞混,再出现个 iexplorer.exe就更加混乱了。如果用户不仔细,一般就忽略了,病毒的进程就逃过了一劫。…

写出漂亮代码的七种方法

首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术、逻辑等。以下为写出漂亮代码的七种方法: 1、尽快结束 if语句 例如下面这个JavaScript语句,看起来就很恐怖: 但如果这么写就好看得多: 你可能会很不喜欢第二种的表述方式,但反映出了迅速返回if值的思想,也可以理解为:避免不必要的else陈述。 2、如果只是简单的布尔运算(逻辑运算),不要使用if语句 例如: 可以写为: 3、使用空白,这是免费的 例如: 很多开发者不愿意使用空白,就好像这要收费一样。我在此并非刻意地添加空白,粗鲁地打断代码的连贯性。在实际编写代码的过程中,会很容易地发现在什么地方加入空白,这不但美观而且让读者易懂,如下:…

常见网络广告定价模式

CPA(Cost-per-Action):每次行动的费用,即根据每个访问者对网络广告所采取的行动收费的定价模式。对于用户行动有特别的定义,包括形成一次交易、获得一个注册用户、或者对网络广告的一次点击等。 CPC(Cost-per-click):每次点击的费用。根据广告被点击的次数收费。如关键词广告一般采用这种定价模式。 CPS(Cot Per Sales):以实际销售产品数量来换算广告刊登金额。 CPM(Cost per Thousand Impressions):每千次印象费用。广告条每显示1000次(印象)的费用。CPM是最常用的网络广告定价模式之一。 CPO(Cost-per-Order):也称为Cost-per-Transaction,即根据每个订单/每次交易来收费的方式。…