名词解释:
野路子:口语,指的是非科班出身的,非正规的。
暴力的调试:
很多人一开始跟我一样,喜欢用这样的方式调试程序:
1 | print "*****************" |
别小看这几行代码,两边的*号,方便自己一眼就能看到想打印的值,之后的代码不但打印了值,还打印了类型,对于调试python这样的动态语言再好不过了。
之后我们使用二分查找的方法,逐步逼近问题。。。还自我感觉很聪明。
1 | CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'test623'; |
1 | -- 修改一个字段属性 |
初学tornado的我,曾经一直好奇tornado到底适合什么样的开发,stackoverflow的一个提问曾经给了我解答。
Ok, Tornado is non-blocking and quite fast and it can handle a lot of standing requests easily.
好吧,tornado是一个非阻塞的而且可以快速的处理大量并发请求。
But I guess it’s not a silver bullet and if we just blindly run Django-based or any other site with Tornado it won’t give any performance boost.
但是我猜测它并非银弹,并且如果我们把其他的web站点,类似django这样的运行在tornado上,并不会提升效率
I couldn’t find comprehensive explanation of this, so I’m asking it here:
我不能得到一个全面的解释,所以我在这里这样提问。
一开始我一直以为tornado在调用write之后就表示此handler终结了,后来我发现错了。
首先,我发现write方法可以被调用两次:
1 | self.write("hello") |
即使是finsh方法,后面的代码也会继续执行。
而且self.finish()
是用来主动与客户端断开连接的,一般也是因为@tornado.web.asynchronous
装饰器会一直保持连接而配合使用。
所以还是要加return:
1 | self.write("give me five") |
首先明确一点,此博客讨论的非对称秘钥只限于RSA,而非DSA。
如果我们不谈公钥和私钥,仅仅谈非对称秘钥:假如你用一个算法,生成了两把key,key1和key2。那么key1加密的数据,只有key2能解开,而key2加密的数据只有key1能解开。
当然我思考过如果把公钥当私钥使用,私钥当公钥使用会怎样的问题,讨论请看这里:传送门
简单的来说,通过私钥推算出公钥是非常容易的。
此处是为了安全性,比如对称加密,那就只有一种钥匙,那么传播传播着,大家就都知道了。而如果是非对称加密,我将自己的公钥公开,而只有私钥才能打开,这样我维护好自己的私钥不让别人知道,就一定可以保证数据的安全性。
大学的时候想过做c,c++和底层,因为书上说c++很难。还想过实现自己的梦想,做游戏。也研究过些算法,还写过些android程序,打算做手机app。也跟着学校做jsp开发。
不知不觉已经毕业快两年,也明白自己的许多。所以在这里规划自己的学习路线和发展方向。
我的web方向,不是以流程业务为主的web开发,此类开发java和c#,php的开发较多,大多外包企业做管理系统。这方面我最多可能也就用django。
我主要做的是面向协议接口的web开发。这些用python开发居多,比如tornado,或者flask。这些web主要提供某些专一的服务,比如支付相关的url-api。
这里的技术要点,还要能够处理大量的连接请求。能够高效的使用数据库。这就需要掌握,python语言本身,保证代码易扩展易维护,关注于web框架,web服务器本身。