Python算法教程学习笔记_第一章

为什么要读这本书

  当我们在工作中使用算法时,通常都是希望能更有效地解决问题,使程序运行得更快,并且让解决方案更为简短.便实际情况如何呢?我们获得所需要的效率,速度和简洁性了吗?为什么人们在使用Python这种语言时依然要在乎这些事呢?选择这种语言对于追求高速度的人是一个好的开端吗?为什么不选择C或JAVA这样的语言呢? 首先,可能是因为Python语言本身很讨人喜欢,以至于人们不想换别的语言,或者他们目前也没有更好的选择。但最为重要的可能还是第二点,即在这里,算法设计者们首先要担心的并不是常数级别的性能差异。即便相关程序完成任务所需要的时间是另一程序的两倍,甚至十倍但这样的速度可能依然是够快的,况且,那个较慢的程序(或语言)中可能恰好有某些我们所需要的特性,如它可能有更好的可读性,而调整和优化程序在很多时候会非常费幼,其代价是不容小视的。然而,无论选择什么语言,我们都得考虑一下程序自身的弹性问题。也就是说,如果我们将程序的输入量翻倍,会发生什么呢?程序运行时间会是之前的两倍?四倍?还是更多?或者即便增加那么一丁点的输入量也会导致程序运行时间的成倍增长?当您遇到的问题足够大的时候,这样的性能差异显然就不能再靠简单的语言选择或硬件选择来解决了,在面对一个“足够大”的问题(在某些情况下,当问题还没有特别大的时候,它就已经“足够大”了)时,我们能抑制运行时间增长的主要武器就只有一您猜对了一份扎实的算法设计功底了。

Read More

三大API设计工具对比

API设计工具中常常会拿RAML、Swagger、API-Blueprint这三种工具进行讨论比较,它们都是用来描述和辅助API开发的,只是它们之间的侧重有所不同。

Read More

django-rest-framework的JWT认证跨域问题解决

公司准备搞前后端分离,我想写一个ajax跨域请求远程接口的例子,我首先想到了2年多前写的APP服务端接口,那是一个JWT认证的接口,但是我写ajax测试的时候,登录请求总是失败! 错误信息为:

Failed to load http://10.1.1.102:8080/api/api-token-auth/: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 400.

但是这个接口在用CURL命令测试,IOS和Android客户端请求都是好用的! 百度到,这是因为服务端需要设置"跨域资源共享 CORS”的原因! 又搜索到 django设置CORS非常简单,只要安装配置一下django-cors-headers就可以. 可是我配置完django-cors-headers,启动工程一直出错! 查半天没发现原因,最后才看到文档里的一句,此组件只支持django1.8及以上版本. 我两年前的项目是用django1.6写的,我只好用最新版本的2.0.1重新写的一个测试的服务接口.

Read More