Python中的字典和集合


Python标准库中的所有映射类型都是使用dict来实现的,因此他们都有一个共同的限制,即只有可散列的数据类型才可以作为映射的键,那么什么是可散列的数据类型呢?下面介绍下:
在python词汇表中,关于可散列类型的定义有这么一段话:

如果一个对象是可散列的,那么在这个对象的生命周期中,他的可散列值是不变的,而且这个对象需要实现hash()方法。另外可散列对象还要有__eq__()方法,这样才可以和别的键做比较,如果两个可散列对象的值是相等的,那么他们的散列值一定是相等的。

原子不可变数据类型(strbytes和数值类型)都是可散列类型,frozenset也是可散列的,因为根据其定义,...

Read more

Python中的序列


内置序列类型概述:

Python标准库使用C实现了丰富的序列类型,列举如下:

  • 容器序列
    listtuplecollsctions.deque这些序列能存放不同的数据类型。
  • 扁平序列
    str,bytes,bytearray,memoryview和array.array,这些序列只能存放一种类型。

容器序列存放的是他们所包含的任意类型的对象引用,而扁平序列存放的是值而不是引用,也就是说,扁平序列其实是一段连续的内存空间,因此扁平序列其实更加紧凑,但是他们里面只能存放例如字符,字节和数值这种基础类型。
序列类型还可以按照是否可以修改赖分类。

  • 可变序列
    listbytearraya...

Read more

tmux 简介


以前只是听说过tmux的大名,但是一直没有用过,今天试用了下发现简直是神器,再也不用傻傻的开窗口了,一个窗口就可以搞定了。

Tmux 简单来说就是终端里的『窗口管理器』,如果我使用终端登录到远程主机并运行前台程序,那么这个窗口等于就被占用了,想要看一下 CPU 的使用率,就得再连接一次。但是如果在远程主机上运行 tmux,那么就可以开启多个控制台(类似于窗口),相当高效。而窗口管理只是 tmux 功能的一小部分,另一个很有用的功能就是,连接到远程主机之后,一旦断开,那么当前账户登录的任务就被取消了,但是使用 tmux 可以在断开之后继续工作,下次登录可以查看,功能有点类似于screen。...

Read more

Ajax跨域请求


首先说明下什么是跨域?其实就是两个不同的站,比如a.abc.com,另外一个b.abc.com。a站需要请求b站的接口,这时就发生了跨域,那么跨域一般是怎么解决的呢?下面简单介绍下。

通过jsonp跨域

什么是jsonp?维基百科的定义是:JSONP(JSON with Padding)是资料格式 JSON 的一种“使用模式”,可以让网页从别的网域要资料。 JSONP也叫填充式JSON,是应用JSON的一种新方法,只不过是被包含在函数调用中的JSON,例如:

callback({"name","trigkit4"});

JSONP由两部分组成:回...

Read more

申请Let's Encrypt通配符证书


Let's Encrypt终于支持通配符证书了,也就是说你只需要为你的网站申请*.example.com这样一个证书,所有的子域名都可以支持,下面介绍下申请方法:

首先需要获取acme.sh

curl https://get.acme.sh | sh

acme.sh支持自动配置DNS,这样需要在域名控制后台获取AppKey和AppSecret.常见的阿里,Dnspod等都支持,这里有更详细的介绍:传送门 下面以Dnspod为例,首先获取AppKey和AppSecret 传送门.然后执行如下命令:

# 替换成从Dnspod后台获取的密钥
export DP_Id="DP_Id&...

Read more

网站搬家小记


前段时间阿里云做活动,300多就可以买到3年的服务器,果断注册一个新用户入坑,选的地区是在上海,平均延迟就几十毫秒的样子,比以前在linode的服务器爽的多了。远程登录也没有很强的延迟感

最近开始研究了下Docker,可以很方便的集成各种开发环境,于是用Docker重新部署了下服务器,现在运行所依赖的Mysql,Memcache,Python环境等等都使用Docker跑了起来,而且可以本地写好配置文件,服务器重新build,本地和服务器可以无缝切换,这种感觉真的太爽了。 Docker的主要配置在: https://github.com/liangliangyy/docker_config...

Read more