幻象客 - 博客

    思维导图—在复习时的作用


    in 干货 , 闲谈 2017-03-14

    你信不信思维导图用于复习是非常好用的工具?内含下载地址!

    阅读更多...

    是的,“极致分享”正式发布


    in 闲谈 2017-03-11

    极致分享正式发布,分享最优秀的资源

    阅读更多...

    <求最大子序列>告诉你如何将复杂度从O(n^3)杀到O(n)


    in 算法 2017-02-27

    将时间复杂度从O(n^3)一直优化到O(n)

    阅读更多...

    什么是“洋葱路由器(TOR)”


    in 闲谈 2017-02-25

    洋葱路由器(TOR)做什么用的?

    洋葱路由器可以实现匿名对外连接、匿名隐藏服务。也就是说,你可以完全匿名地利用洋葱路由器(以下简称TOR)进行上网。甚至去访问一些正常网络无法访问的网站。它已经成为目前为止最安全可靠的上网工具。

    TOR的实现原理是什么?

    Tor用户在本机运行一个洋葱代理服务器,这个服务器周期性地与其他Tor用户交流,从而实现数据交流的目的。Tor之所以会被称作洋葱路由器,就是因为它由一层层“外皮“组成,“外皮”之间的数据传输都进行了对点秘钥加密。所以你只能看得到它的外表,如果你想要看到它的核心(客户端)就必须把它层层剥开。然而需要注意的是,在它的出口节点,数据以明文的方式传送给客户端,这就使得数据有可能被拦截。当然,尽管如此,它依然是目前最安全可靠的上网方式。其实通俗点来讲,Tor就是通过全球各地数百台服务器来中继你的流量,从而避免了用户的真实IP泄露。而且,它可以让你访问到你在正常网络中无法访问到的隐藏内容(暗网)。

    我能使用吗?

    很遗憾,中国现在已经屏蔽了洋葱网络。如果你想要连入,需要一些特别的方法。不过没关系,你如果上网去搜索一下,我们还有许多可以替代Tor的软件,比如说Epic浏览器和Yandex浏览器。不过需要注意的是,他们并不能完全替代Tor。

    欢迎关注微信公众号:幻象客www.huanxiangke.com

    幻象客 二维码

    阅读更多...

    使用python破解一些密码问题的例子


    in Python , 程序语言 2017-02-23

    这是pythonchallenge上的第二关,比较简单。

    题目给了下面这个HINT:

    Python 破解密码

    以及一串看起来很乱的字母:

    g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyr

    q ufyr amknsrcpq ypcdmp. bmgle gr gl zw fyl

    b gq glcddgagclr ylb rfyr'q ufw rfgq rcvr g

    q qm jmle. sqgle qrpgle.kyicrpylq() gq pcam

    kkclbcb. lmu ynnjw ml rfc spj.

    根据图片里的规律,我们得知其是字母向右移动两位。那么原文也就是ASCII码减二的加密方式。这就是凯撒密码。

    你如果有耐心的话,可以一个一个的往右移两个字母,从而得出答案。但我们应该更追求更高效的方法。

    Python中有这样的两个函数:

    ord():返回一个字符的ASCII码

    chr():获取一个ASCII码,将它转换为字符

    我们或许可以利用这两个函数解密。

    核心代码:

    for each in text:
    
        if ord(each) >= ord('a') and ord(each) <= ord('z'):
    
            answer = answer + chr(ord(each) + 2)

    代码意思是这样的:检测字符串内的每一个字符,若它是小

    阅读更多...

    在未来,是否语言翻译的工作会被机器替代?


    in 闲谈 2017-02-15

    在微博上突然看到有人向管鑫Sam询问这个问题,下面是他的回答。

    老师您好,以前看到这样一则新闻 《9 月 27 日,谷歌发布了谷歌神经机器翻译系统(GNMT:Google Neural Machine Translation)在官方博客中Google称该系统使用了当前最先进的训练技术,能够实现到当下机器翻译质量上最大的提升。》 突然觉得学英语都没有任何动力了,届时人工智能厉害到代替人类(完全有可能 阿尔法狗都无敌了) 那我们英语专业的不都得纷纷失业。学英语的意义何在?

    管鑫Sam 回答:

    首先要更清晰准确地界定这个话题,只有很好地界定了这个话题,才有办法来回答。如果你的问题是,机器或者人工智能,在现在或者短期的未来是否可以取代最基础的文本翻译工作,我认为是很可能的。尽管截止到目前为止,机器翻译仍然很难达到我们一般要求的水准,大部分情况下,机翻还只能作为一种辅助工具,后期还需要大量的人工校对修正,甚至重写。机翻的笑话之多,多到不需举例子。各公司所显示的demo,也要看你愿不愿意成全它的演出,如果你想耍个小聪明摆机器一道,也并不难。谷歌现在的技术,GMNT,目前是骄傲地宣称将错误率降低了55%-85%。这仍是一个可以让甲方掀桌子、拒绝付款的水准。

    当然,我们在现在的时间讨论一个问题,就会出现思维的锚定效应。所谓锚定效应,就像在汪洋大海上我们的船抛下一个锚,我们所看见的所有事物都是

    阅读更多...

    使用“向量空间搜索引擎”做字符识别


    in Python , 程序语言 2017-02-09

    参考文档:http://ondoc.logand.com/d/2697/pdf

    不要被这标题吓到了,其实核心内容非常简单。

    如果我们想要确认验证码是什么,就要有一个识别图片字符的过程。我们这里使用向量空间搜索引擎进行识别。

    参考文档中举了一个例子。三篇文章中cat,dog,mouse出现的频率分别是(3,1,4),(1,2,5),(2,3,0).那怎么计算哪两篇比较相似呢?

    参考文档给了一个解决方案是将文章cat、dog、mouse出现的频率看做“向量”,然后计算两个向量之间的余弦值(cos),越接近1则越相似。

    cos<文章1,文章2> = 0.895

    cos<文章2,文章3> = 0.405

    cos<文章1,文章3> = 0.490

    因此可以看出文章1和文章2更相似。

    把它转化成python代码:

    class VectorCMP:
    
        def ValueOfVector(self,Vector):
    
            total = 0.0
    
            for count in Vector.items():
    
                total = total + count ** 2
    
            return math.sqrt(total)
    
        def relation(self,Vector1,Vector2):
    
            DotP...

    阅读更多...

    使用python求出图片每一个像素的RGB颜色


    in Python , 程序语言 2017-02-07

    使用Python识别出图片中的每个像素的颜色,能够用来攻克验证码。

    阅读更多...

    详解argc,argv和C/C++几道易错题


    in C/C++ , 程序语言 2017-01-11

    argc即argument count. 顾名思义,是用户在命令行内输入的参数个数。argv即argument vector. 是用户输入的参数vector库(数组)

    int main(int argc ,char *argv[])

    char argv[] 即指针数组([]优先级别高于,于是就里面的每个元素都是char类型,要理解好 char (argv)[] 和 char *argv[]的区别),每一个元素内,存的都是参数,这些参数都是字符串。其实就是vector库。如果你这里暂时不理解,没关系,往下看。

    它其实就是记录了程序被执行时所传入的参数。包括打开程序的那条语句。如我保存了一个程序为test.exe, 在命令行执行这个程序并顺便带几个参数:

    test.exe x y z

    这样的话argc就是四个参数,分别为text.exe、x、y、z. 输出的话将是这样的:代码:

    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char* argv[]) {
    
        cout << "参数个数是: " << argc << endl << "分别是:" << endl;
    
      for (int i = 0; i < argc; ++i)
    
           cout << argv[i] << endl;
    
       ...

    阅读更多...

    <分析>计算机男表白神器,用C/C++画出心型


    in C/C++ , 程序语言 , 闲谈 2017-01-09

    参考文档:http://mathworld.wolfram.com/HeartCurve.htmlhttps://www.zhihu.com/question/20187195

    使用的公式:

    用C++画心

    效果图:

    用C++画心

    公式仅仅是画出弧度,如果我们想要填充里面的东西,仅需要判断公式是否小于0,若小于零则打印星号:

    cout<< (a \* a \* a - x \* x \* y \* y \* y <= 0.0f ? '*' : ' ');

    (a即x^2+y^2-1,见下图完整代码)

    完整代码:

    用C++画心

    其中,第一个循环输出的是行,按照这个算法,应该是40行,第二个循环输出的是列,应该有80列。

    如果我们把行数改小,图形就会变矮。如:

    for (float y = 2.0f; y > -2.0f; y = y - 0.2f)

    用C++画心

    若我们把列等比例缩小。

    for (float x = -2.0f; x < 2.0f; x = x + 0.1f)

    其效果就是整个图形缩小。如图:

    用C++画心

    这样似乎理解依旧不够透彻,让我们更深刻地理解这个代码。修改代码为:

    用C++画心

    我们看运行结果是:

    用C++画心

    可见x=0,y=0就是图像的中心。其实这个程序是按照坐标轴进行绘制的。那我们就能做一些更有趣的改动了。

    cout << (a \* a \* a - x \* x \* y \* y \* y <= 0.0f && a \* a \*...

    阅读更多...