|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。第一个反应是考证码的这些属性是不是能够设置(也就是说是封装成一个类,然后以表露私有属性和办法的体例来利用的,仍是在间接在一样平常处置程序中完成了考证码的天生到输入),了局对照惋惜,是后者......内里的算法感到挺不错,最少关于我这类对算法几近是不懂的人来讲是如许,因而想到往封装一下她然后无耻地归入本人的类库中往^^
old原文件以下:点击下载
起首剖析一下这份代码中的不敷(本人以为的):
1、面向历程式的编程,假如要修正考证码的属性,比方修正字体的巨细、背景色彩等细节的器材,必要往一样平常处置程序中找到相干的代码,修正之。不外这份代码对照好,把天生考证码字符串和天生图片用分歧的办法分隔,很简单找到要修正的中央。
2、假如我想把这个功效使用到其他中央,比方winform程序中,那末这份代码没办以一个组件(一个dll)情势被复用,而是被复制粘贴然后修正...
3、没有发明考证码天生以后有存起来(--!)
固然,所谓的不敷是绝对而言的,就是偶然间来思索然后渐渐计划一个考证码类的话一定能作出一个对照不错的类出来的,但假如是在做项目而且项目很告急的话,如许的代码实际上是对照给力的,那些所谓的面向工具计划形式代码解耦啥的都是浮云~~~
接上去是我对这份代码的修正,起首断定本人要甚么样的效果,就是说封装起来后我但愿如何来利用他。起首我但愿在利用的时分只必要new一个考证码实例(必要的话能够对考证码的各个属性能够恣意设置),然后能够挪用这个实例的某些办法分离以字符串、流、位图工具、byte数组的情势猎取到这个考证码(申明,这个考证码类不包含把考证码存进高低文的功效,团体以为天生考证码和把考证码存到高低文是两种分歧的功效,没需要把这功效做到考证码类中往)。如许的话在一样平常处置程序中代码就变得非常复杂了,起首只需new出一个考证码,然后挪用办法以字符串的情势猎取到这个考证码,然后存到高低午中,至于存在Session中大概Cookie中就依照必要来了,考证码类不论这些的;然后是挪用别的一个办法以byte数组的情势猎取到这个考证码,如许经由过程context.Response.BinaryWrite()办法就能够输入图片了,也就是说一样平常处置程序中只要三句代码。挪用的代码大抵以下:
复制代码代码以下:
///<summary>
///猎取考证码(一样平常处置程序出口函数)
///</summary>
///<paramname="context">以后高低文</param>
publicvoidProcessRequest(HttpContextcontext)
{
//创立考证码
ValidateCodevalidateCode=newValidateCode();
//猎取考证码(字符串),写进Session
context.Session["SomeValidateCode"]=validateCode.GetString();
//输入考证码(图片)
context.Response.BinaryWrite(validateCode.GetByteArray());
}
这里附上考证类的源码(VS2010),内里供应的属性其实不周全,别的图片的输入以BMP的格局输入,比本来的那份代码输入的要明晰良多,必定水平上对功效举行封装但纷歧定封装得很好,供交换进修用:点击下载new
PS:记得刚出来事情的时分代码写得很差(比如今差),一样平常拿到一份代码都是间接用,历来没有想过是不是要把代码举行修正大概封装,当时候被我的徒弟教训了一次印象很深入。团体感到实在用他人的代码没甚么欠好的,一来他人用过最少证实代码的可用性,别的智商无限,有些器材本人想破头皮也没有他人想的好,可是用他人的代码必定不要自觉地拿了就用,最好依据本人的实践情形举行需要的修正大概封装,哪怕是复杂的隔一层也好。固然了,仍是那句话,假如项目告急的话如许做分明是华侈工夫的,总之就是不要不思索,拿了就用,最少看把关头的代码大概代码的全体布局弄分明。
剧本之家间接都给打包了。下面是old文件夹,上面的是new文件夹的内容。下载地点/201012/yuanma/yanzhengma.rar对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。 |
|