Dict

Python内置了字典Dict(全称Dictionary),使用键-值(key-value)存储,具有极快的查找速度。Dict的查找原理和查字典类似,key就相当于字典的索引,Python可以通过key计算出所对应的value存放的内存地址,直接取出,所以查找速度快。
Dict的初始化很简单,语法如下:

1
2
3
>>> dict = {key1' : value1, 'key2' = value2, 'key3' = value3}
>>> dict['key2']
value2

一个key只能对应一个value,所以当我们对一个key多次赋值时会将前一个value覆盖掉。由于需要查找的key不存在时,dict会报错,为了避免key不存在的情况,Python提供了两种方法:

  • 通过in判断,如果key存在,就返回True,反之返回False
    1
    >>> `key` in dict
  • 通过get判断,如果key不存在就返回None(返回None的时候交互式命令行不显示结果),也可以是自己指定返回的内容:
    1
    2
    >>> dict.get('key')     #返回None
    >>> dict.get('key',-1) #返回自己指定的值`-1`
    删除Dict可以使用dict.pop(key)方法,对应的value也会从dict中删除。
    Dict内部的存放顺序和key的放入没有关系,Dict的查找和插入速度不会随着key的增加而变慢,需要占用大量的内存,是一种用空间来换取时间的方法。

Set

Set和Dict类似,也是一组key的集合,但是不存储value。由于key不能重复,所以在set中没有重复的key。要创建一个set需要提供一个list作为输入的集合:

1
>>> s = set([1,2,3,4,5])

重复的元素会被set自动过滤,可以通过add(key)方法向set添加元素,通过remove(key)方法删除元素。我们可以将set看作数学意义上的集合,因此,两个set之间可以做数学意义上的交(&)、并(|)集等运算

最近在自学Python,所以一边学也一边总结一些知识点

Python的输出

Python的输出和C语言类似,在print()函数里加上字符串(用单引号或者双引号,但是不能混用),例如:

1
>>> print('Hello world!')

print()函数也可以接受多个字符串,用逗号隔开即可。print()函数依次打印字符串,每遇到逗号就会输出一个空格。
print()也可以打印整数或者计算结果,例如:

阅读全文 »

数据库操作

  1. 创建数据库: CREATE DATABASE <数据库名> [其他选项]
  2. 使用数据库: USE <数据库名>
  3. 修改数据库: ALTER DATABASE <数据库名>
  4. 删除数据库: DROP DATABASE <数据库名>

数据表操作

  1. 创建表:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE <表名>

    <列名1><数据类型>[<列级完整性约束>],
    [<列名n><数据类型>[<列级完整性约束>]]
    );
    例:
    create table studets
    (
    id int not null auto_increment primary key,
    name varchar(8) not null,
    sex varchar(5) not null,
    score int(5) not null
    )
  2. 修改基本表
    1
    2
    3
    4
    5
    ALTER TABLE <表名> add <列名> <列数据类型> [after 插入位置];         --增加列
    ALTER TABLE <表名> change <列名> <列新名> <新数据类型>; --修改列
    ALTER TABLE <表名> drop <列名>; --删除列
    ALTER TABLE <表名> rename <新表名>; --重命名表
    DROP TABLE <表名> --删除表
  3. 表的基本操作
  • 插入数据:insert [into] <表名> [(列名1,列名2,列名3……)] values (值1,值2,值3……);
  • 更新数据:update <表名> set 列名=新值 where 更新条件;
  • 删除数据:delete from <表名> where 删除条件;
  • 查询数据:select <列名> from <表名> [查询条件];
  • 特定条件查询:where 不仅支持 “where 列名=值” 这种名等于值的查询形式,对一般的比较运算的运算符都是支持的,如=、<、>、!= 等以及一些扩展运算符 is[not] null、in、like 等,还可以对查询条件使用 or 和 and 进行组合查询。

互联网协议族(Internet Protocol Suite,缩写IPS)是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP协议集。因为该协议家族的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈(TCP/IP Protocol Stack)

阅读全文 »

将七牛的插件配置好后我写了上一篇博客试一试效果,结果发现怎么也没部署到github,每次hexo d都会出现

1
ERROR Deployer not found: git

这样的报错,Google 了半天都没有找到解决的办法,最后在找到了 Github 上的一条 issue,终于发现了解决办法:只要将配置文件_config.yml中plugins的那段给注释掉就 OK 了,即

1
2
#plugins:
#- hexo-qiniu-sync

还是希望开发者能早点修改文档吧,不然还真的挺容易出事,不过说一句,我的 Hexo 是 3.2.2 的版本的,不知道 2.x 版本会不会出现类似的情况

今天把博客的图片存储搞了一下,利用的七牛存储,相对来说还是比较简单,但是为了测试成功与否就只好写这篇博客了。
七牛 是一个云存储服务商,注册并实名认证之后后,你将免费享有 10GB 存储空间,每月 10GB 下载流量、100 万次 GET 请求、 10 万次 PUT/DELETE 请求。如果想要注册可以点击这里,这样可以为我增加每月5GB的容量。

阅读全文 »

今天把Ubuntu从16.04更新到16.10之后卸载了些软件,之后蛋疼的发现系统设置打不开了,真是欲哭无泪。去网上搜了下发现是我之前由于卸载了iBus导致的,虽然我不懂为什么iBus和Ubuntu之间的关系为什么会如此紧密,但是既然发生了这种事情我也很绝望啊,只能按照网上的方法

1
sudo apt-get install ubuntu-desktop         #这个会把Ubuntu预装的软件office还有Amazon什么的装回来,装完自己再慢慢卸载吧

或者他也提供了一次性的安装办法

1
sudo apt-get install ibus-pinyin unity-control-center unity-control-center-signon webaccounts-extension-common xul-ext-webaccounts

但是我眉头一皱,发现事情并不简单,我继续搜了下去,也有很多人遇到这种问题,发现还有更简单的办法

1
2
sudo apt-get install gnome-control-center           #如果系统设置打不开,请重新安装gnome-control-center
sudo apt-get install unity-control-center #如果设置里只有很少的几个图标请重新安装unity-control-center

当然上面两个方法并没有尝试过,我也无从得知导致我系统设置打不开的原因是不是卸载了iBus

这几天觉得wordpress作为博客实在是太臃肿了,而且访问的后台以及更新都极其的慢,以至于想把博客迁到Hexo上去。
Hexo 是个简洁快速且高效的博客框架,是个台湾的学生写的,所以对中文还是挺友好的,我们用起来也很方便,而且Hexo仅依赖node,易于安装。
首先准备的工具仅需要node.js,git即可,在ubuntu上安装这两样工具也是极其简单:

阅读全文 »

最近由于听信了别人的“谗言”,心血来潮想试一试Arch,所以便准备在虚拟机上装一个Arch来看看效果,也算是一次艰难的装系统之路了吧。

那么下面打开虚拟机,进入安装界面:

首先是分区,Arch给我们提供了一个很好的分区交互工具cfdisk

1
2
cfdisk        #使用cfdisk进行分区

阅读全文 »

笔者前段时间安装了 sqli-labs,就想把 sqli-labs 和 lamp 环境的搭建都写出来,其实这两个东西都很简单,感觉比我折腾 hexo 要简单的得多了(手动滑稽)。

sqli 即 sql injection(sql注入),sqli-labs是一个印度程序员写的用来学习sql注入的游戏教程,Youtube上有一套视频教程(需要科学上网),github上也有开源的项目

那么接下来就可以进行安装了:

阅读全文 »

最近笔者在“温习TP框架”(其实就是不会然后抓紧时间啃),从最简单Blog开始做起,以前学习的时候是跟着教程,用time()函数获取当前时间戳,然后用int型数据来存储。这一次我突然想用Mysql内置的时间类型的数据——timestamp。

阅读全文 »
0%