2014年7月28日星期一

ASP.NET 如何做出简单的验证码 - 我不会抽烟Oscar

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
ASP.NET 如何做出简单的验证码 - 我不会抽烟Oscar  阅读原文»

如果说要做验证码,那不得不提的就是GDI+绘图了。我们都知道验证码是以图片形式展示的,而且是动态生成的,这样就需要我们去画出它。

科普一下,什么是GDI+?

GDI+是图形设备接口(GDI)的高级版本, 提供了各种丰富的图形图像处理功能。GDI+主要由二维矢量图形、图像处理和版式3部分组成。GDI+为使用各种字体、字号和样式来显示文本这种复杂任务提供了大量的支持。

下面说说验证码,对于验证码这样的图片,我觉得是由两部分组成的,一部分是矩形的背景,另一部分是在其上的字母数字组合(有的时候有汉字,有的时候是纯字母或者纯数字,这个没有统一规定,怎么选择看你~)。对于矩形的背景我们可以直接把其当成画布,字母数字组合呢?我们可以利用随机数去拼出一组新组合。这样整个过程我们都想好了,下面看下代码吧:

声明一下,我写的这个验证码为5个字符长度,由大小写英文字母+数字随机组合。

private readonly char[] constant = {
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};//一个由数字和大小写英文字母组成的字符数组

protected void Page_Load(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(100, 25);//创建一个位图,宽100,高25,就是我所说的第一部分,矩形背景
Graphics g = Graphics.FromImage(bitmap);//创建画布
g.Clear(Color.YellowGreen);//为画布填充黄绿色

Font font1 = new Font("Arial", 15);//设置字体类型和大小
Brush brush = new SolidBrush(Color.Blue);//设置画刷颜色
Pen myPen = new Pen(Color.Blue, 5);//创建画笔对象

StringBuilder random = new StringBuilder(5); //创建可变字符串对象,用于存放随机生成的验证码
Random rd = new Random();//创建一个随机数生成器对象
for (int i = 0; i < random.Capacity; i++)
{
random.Append(constant[rd.Next(62)]);//生成一个随机字符加到random里
}

g.DrawString(random.ToString(), font1, brush, 10, 5);//在画布上画出字符串

System.IO.MemoryStream ms = new System.IO.MemoryStream();//创建数据流MemoryStream
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);//指定图像的输出格式为gif

Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());//输出二进制数据流
}

生成的效果是这样的:

大家可能会觉得这样看起来很容易辨识,跟我们平时登录网站时输入的验证码比起来有点像个小学生。当然,我们可以做些改变,比较加上一定的角度。

private readonly char[] constant = {
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};//一个由数字和大小写英文字母组成的字符数组

protected void Page_Load(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(100, 25);//创建一个位图,宽100,高25,就是我所说的第一部分,矩形背景
Graphics g = Graphics.FromImage(bitmap);//创建画布
g.Clear(Color.YellowGreen);//为画布填充黄绿色

Font font1 = new Font("Arial", 15);//设置字体类型和大小
float angle = 60;//旋转的一个基础角度
float length = 0;//显示字符的基础位置,往后看
Brush brush = new SolidBrush(Color.Blue);//设置画刷颜色
Pen myPen = new Pen(Color.Blue, 5);//创建画笔对象

StringBuilder random = new StringBuilder(5); //创建可变字符串对象,用于存放随机生成的验证码
Random rd = new Random();//创建一个随机数生成器对象
for (int i = 0; i < random.Capacity; i++)
{
random.Append(constant[rd.Next(62)]);//生成一个随机字符加到random里

g.ResetTransform();//将画布重置矩阵
SizeF size = g.MeasureString(random[random.Length - 1].ToString(), font1);//得到新生成字符的尺寸
g.TranslateTransform(length + size.Width / 2, size.Height / 2);//选择此次旋转的中心位置
g.RotateTransform((float)rd.NextDouble() * angle * 2 - angle);//进行随机角度旋转
地球人找工作之番外篇 - 倾剑飞血  阅读原文»

地球人找工作系列是本人去年毕业时,为本校学弟学妹们总结的一点求职心得。转眼一年了,很多人通过本文获得了帮助,所以今天拿出来与更多的朋友来分享。

地球人找工作1之前期准备:http://www.cnblogs.com/jacklandrin/p/3866454.html

地球人找工作2简历的秘密:http://www.cnblogs.com/jacklandrin/p/3870159.html
地球人找工作3笔霸传奇:http://www.cnblogs.com/jacklandrin/p/3870982.html

地球人找工作4面试风云:http://www.cnblogs.com/jacklandrin/p/3872442.html

本篇文章将是地球人找工作系列的最后一篇,作为对其他注意事项和技巧的介绍,也为之前忽略的一些问题作为补充。

  • 择业观

择业观从顺序上来讲,其实应该放在第一篇文章去讲,但是觉得刚上来讲这个东西不太会受到关注,大家应该还是更喜欢看一些实实在在的“干货”。但是刚你真的 用心看完前面几篇文章之后,有些人也许会思考一些问题,我真的适合去干技术吗。专业对不对口问题说实在的是老生常谈了,我个人觉得我自己很幸运的选择了一 个自己了解并且喜欢的专业,并从事了相关的工作,但是很大一部分人是被学了计算机的,他们仍然为自己是否还要从事相关的专业犹豫迷茫着。

我很欣赏超哥曾经说的一句话,“每个人都是有天赋的。”,每个人都有适合自己的工作,如果你喜欢并且擅长一种技能,那么这项技能就是你的天赋,你如果从事这方面的工作,在付出同等的努力下,可能会比那些没有天赋的人做的更好,而且你会很享受你的工作。

因此,在选择职业时,或者更具体为选择你所从事的工作内容时,最优的选择是遵循三个条件:

  1. 适合你的工作
  2. 社会需要的工作
  3. 你喜欢的工作

首先,从各方面评估权衡,这项工作最好是适合你的,不适合的工作是很难被承担的,比如让一个身体瘦弱的女生去当搬砖盖楼的建筑工人,显然是不怎么适合的; 再如招聘ios程序员往往是需要相关经验的,如果他之前只搞过python,连其他的手机客户端也没开发过,显然也是不适合的。无论从外在的客观条件,还 是内在的技术经验,适合应该是第一位的。

然后,我们需要考虑适合我们的这些工作中,哪些是社会比较需要的,一般越需要的工作,机会就越多。这反过来也告诉我们,尽量学一些社会所急需的知识和技 能。我小学时,看过一个小故事,叫《学杀龙》,故事的主人公为了能在故乡出人头地,于是背井离乡外出学艺,几年后学成归来,当着全村人的面舞刀弄剑,表演 他的杀龙技法,但看完他的表演后,大家只是随便笑了笑,就都转身离开了,而他并没有受到村里人的敬仰,而成为了村中的笑柄,他不解的去问村中的老者,这是 为什么,老者说:“这世界上根本就没有龙,你学的杀龙的技法根本没有任何用处啊。”这个故事告诉了我们,择业之前必须认清需求。

最后就是,你所干的工作最好是你喜欢的,有人可能会问这是不是跟第一点重复了,其实不然。有人可能很擅长去做一项工作,但是却不一定能从中得到快乐。就好 比你打字打的又准又快,但是你不一定喜欢去做一名打字员一样。我们的工作是为了生活,生活要生活的快乐,没有人会去刻意的追求痛苦,所以去做自己喜欢的事 情吧,不要让工作成为生活的负担,即使这种工作给你带来大量的财富,人不能穷的就省钱了。很多人盲目的攀比和追逐,实际上他们根本不清楚什么是自己所想要 的,所以在争取金钱和名利的同时,也奉劝大家思考一下,这是不是自己想要的生活。

  • 择业态度

当你从上面三个条件中权衡出自己目标的职业时,就马上为之努力吧。择业中我们必须要抱有积极的态度,事实上如果你确实已经认认真真的思考三个条件之后,它 们就已经帮助你消除了很多消极的烦恼。所以,千万不要在大四下半学期没有找到工作的情况下,还整天在宿舍里打电脑游戏,最后在家里闲了一年之后找一个自己 也不相干,又累还不挣钱的工作,那时的你只剩下向同事或者街坊四邻整天抱怨社会的本事了。如果对自己的人生负责的话,就认认真真的对待它吧。

我个人在大四求职的道路上受过很多挫折,被拒过,被悔过,5月的时候工作还没有着落,但是我会总结经验,并且调动我所能够调动的资源来帮助我求职。只要有 信念在,方法和机会总是有的。我周围还有很多同学,他们没有什么项目和实习经验,但是他们有信念和目标,没有技术,他们去参加培训班,没有正式 offer,可以找实习单位先干着,这些都要比坐以待毙强的多。

  • 关于前期准备的补充

有 些人有端正的择业态度,但是缺乏方法。其实我之前几篇文章着重突出的就是经验与方法,这里在前期准备中需要补充的一点就是,学会统计、分析与总结。你可以 列一张表格,把提供给适合你岗位的企业做一个统计,尽可能的搜索企业和此岗位的相关信息,然后加以比对,这里面分智网是我十分推荐的网站,里面提供了许多 企业的相关信息,包括岗位薪资等大家比较关注的问题。建议将你之前听说过的企业和没听说过名字的企业分来进行分析,一般你听说过名字的企业应该都比较 nb,很容易干扰你对其他企业的评估结果,没听过名字的企业中肯定也不乏nb的企业,只是你之前没有去了解。当你掌握这些企业的一手资料之后,有时会颠覆 一下三观,使你会产生对企业新的认识,这种认识会给你对公司的选择和求职面试带来许多帮助。

  • 关于面试的补充

面试方面补充两点,称谓和诚实。

面试时,为了保证互相尊重,需要注意称谓的使用,一般需要用敬语“您”作为第二人称代词,如果你不知道面试官的职位,一般就称之为经理。然后就是,尽可能 用亲近的称谓,比如不要对你应聘的公司称为“贵公司”,你不是谈生意去的,最好用“咱们公司”来替代,显得比较亲近。

然后就是诚实,在面试时,千万不要撒谎,尤其是重要的一些信息。你可以避轻就重,但不要夸大其词。否则,如果你入职之后,你的谎言被拆穿之后,你的信誉度会受到沉重的打击。

  • 关于内推

现在大多数的企业都有内推制度,就是公司内部的工作人员推荐你应聘某个岗位,有的内推可以免除笔试,会让用人方优先考虑你。而作为推荐人的好处是,假如推荐成功,会有几千元的奖金。所以内推是一种互赢互利的招聘方式,但是这里需要注意几点。

第一,推荐人最好和你应聘的岗位在同一部门,或者跟这个部门的人很熟。

第二,滥竽充数可是过不了面试的,部门的管理人员会深入考察你是否有真才实学的,别给推荐人丢脸。

第三,推荐成功之后,你别最后不来这家公司,弄得大家都不合适。

  • 关于选择

选择本身是一个烦恼,校招季有的人可能一个offer都没拿到,有的人拿了好几个。有人可能一周内就要给用人方回复接不接offer,而另一个企业的 offer还没下来。有时选择会有一些运气的成分在里面,但是更重要的是人心,你需要清楚什么是你想要的,根据自己的内心去做选择,摒弃外界的一切干扰, 放下烦躁与紧迫感,想想哪个工作更有发展,哪个工作更适合自己,回到你最原始的原则上来。

这里还要说的一点时,选择要尽早的下决定, 不要拖拖拉拉,最后让对方去毁约,因为一般应聘者接offer的比率是30%,也就是说校招中一个岗位招30人,他可能会发100个offer,尤其像搜 狐、美团这样的大公司。如果秋季给你发了offer,春季的实习你没来,当实习的报道数超过他计划招生时,他是有可能毁约的。所以,在抉择上,你要尽早抉 择,尽早回复,如果有实习的话,尽早过去实习。

好了,地球人找工作系列到这了就此就结束了,希望这会对即将面临找工作的学弟学妹们有所帮助,有什么疑问的话可以联系我或者给我留言,其中说的不对的一些地方,也请批评指正。最后,祝学弟学妹们都能找到一个满意理想的工作!


本文链接:地球人找工作之番外篇,转载请注明。

阅读更多内容

没有评论:

发表评论