reCAPTCHA 释疑
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了reCAPTCHA 释疑相关的知识,希望对你有一定的参考价值。
参考技术A 这两天登陆一个网站,总是要输入验证码,那种两个单词,一个清楚,一个模糊还加条横线,特难认,每次总错要输一两回。很烦人,虽然知道这样做是为了防止机器输入的,但真有必要搞这么难浪费时间吗? 这次顺手查了下为啥做reCAPTCHA。原来reCAPTCHA之前还有CAPTCHA。就是很多网站还在使用的普通验证码,字母或数字都很清晰的那种。
这个项目最初叫做CAPTCHA,源于10多年前,根据Wiki的说法,似乎同时有两个团队都宣称发明了验证码。其中一个,就是卡内基梅隆大学Luis von Ahn 所在的团队进一步发明了reCHPTCHA产生了一个创业公司,在2009年被Google收购。
reCHPTCHA最早是卡内基梅隆大学的一个项目,输入验证码时,难辨识的那部分,实际是OCR扫描古老文献时电脑无法辨认的部分,通过由人工辨识,同时打到两个目的:
根据其作者之一的 Luis von Ahn 2011年在TED 上的演讲,有35万网站使用reCAPTCHA作为验证码登陆使用,每天有两亿次的使用量,可以辨识250万单词,每年有250万图书就是这样数字化的。
通过浪费所有人一点时间去做一点贡献,真是个奇妙的主义。
了解了reCAPTCHA背后的意义,每次输错所浪费的几秒钟似乎有了意义。不再抱怨,人可能真是唯一需要意义来支撑行动的动物。
Luis von Ahn 介绍的另一个类似想法的项目是 Duolingo 。
wiki链接 CAPTCHA
wiki链接 reCAPTCHA
Luis von Ahn 在TED 上的演讲
类的派生释疑
一个关于继承的例子,所以继承,到底有什么用...?
#include<iostream> #include<string> #include<vector> using namespace std; class Book { public: void page() { cout<<"有一百页哦"<<endl; } void name() { cout<<"名字是:自动化控制原理"<<endl; } }; class Toolbook :public Book { public: void page() { cout<<"这里会不会显示出来我也不知道"<<endl; } void name() { cout<<"同样的还有这里"<<endl; } }; int main() { cout<<"你从来不曾认真修炼过自身"<<endl; Book book1; book1.page(); book1.name(); Toolbook book2; book2.name(); book2.page(); return 0; }
但是派生的类里面如果不定义基类的函数或者定义了没有函数体就不能执行,就算重新定义了也与之前的类没有关系,还不如自己重新写一个类来得方便,那么,类的派生到底有什么用?
书上说的是,可以拥有基类的数据类型,以及执行基类的构造函数用来构造自身的对象,
吸收基类成员(除构造析构函数以外的所有成员);
改造基类成员(根据继承方式调整基类成员的访问,函数在子类中的覆盖,以及虚函数在子类中的覆盖);
添加新的成员;
可是为什么......
好吧我理解了,如果派生类里面没有定义任何东西,是可以直接建立派生类的基类对象的。
emmm.....看来之前只看书不动手,模糊的记了一堆概念真的是远远不够的..
多练多反思才是正道..
以上是关于reCAPTCHA 释疑的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.NET 的服务器端验证 Recaptcha 2 (No CAPTCHA reCAPTCHA)