Python己亥杂说3(续)

1、list tuple dict set 是可迭代对象,字符串是不是可迭代对象

是 。

from collections import Iterable

print(isinstance('abc', Iterable))  # True
print(isinstance('', Iterable))  # True

2、集合的定义,创建空集合

由一系列不重复的不可变类型变量组成的可变散列容器。相当于只有键没有值的字典(键则是集合的数据)。

集合名 = set()  。

3、list A为[1,2,3,4],获取A的最后一个数据,向A的末尾插入数字 5

A[-1] 。

A = [1, 2, 3, 4]

print(A[-1])  # 4

A.append(5) 。

A = [1, 2, 3, 4]

A.append(5)

print(A)  # [1, 2, 3, 4, 5]

试试插入:

 

A = [1, 2, 3, 4]

A.insert(-1, 5)

print(A)  # [1, 2, 3, 5, 4]

从插入效果看都是在被索引的元素前面位置插入

A = [1, 2, 3, 4]

A.insert(0, 5)

print(A)  # [5, 1, 2, 3, 4]

append()方法是值在列表的末尾增加一个数据项,insert()方法是指在某个特定位置前加一个数据项。

4、Redis数据库实现持久化

Redis支持RDB和AOF两种持久化机制。持久化功能有效地避免因进程退出造成的数据丢失问题,下次重启时利用之前持久化的文件即可实现数据恢复。

5、Redis数据库支持的数据类型

Redis支持 5 种数据类型,分别是String(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)。

6、Redis使用AOF方式持久化,aof文件不断增大,处理

向Redis发送BGREWRITEAOF命令,这个命令会通过移除AOF文件中的冗余命令来重写(rewrite)AOF文件,使AOF文件的体积变得尽可能地小。Redis中的数据是有一定限量的,不可能说Redis中的数据无限增长,进而导致AOF文件无限增长。内存大小是一定的,等到了一定大小Redis 会采用淘汰策略lru,自动将内存中的数据清除掉。AOF是存放每条写命令的,所以会不断的增大,当大到一定程度时,AOF会做rewrite操作,rewrite操作就是基于当时Redis的数据重新构造一个小的AOF文件,然后将大的AOF文件删除。

7、Redis 数据库设置密码

初始化Redis密码,在配置文件中有个参数 requirepass  ,这个就是配置redis访问密码的参数,比如 requirepass test123456,需重启Redis才能生效。修改 redis.conf 文件,找到 requirepass 这一行,取消注释,并加入自己的密码,保存退出。

8、生成hash 表

哈希表 hashtable(key,value)  的做法其实很简单,就是把 Key 通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将 value 存储在以该数字为下标的数组空间里。

9、MySQL数据库使用 sql 语句插入一条数据

insert into 表名 values(值1),(值2),...;
insert into 表名(字段1,...) values(值1),...;
e.g.
insert into class_1 values (2,'Baron',10,'m',91),(3,'Jame',9,'m',90);

10、MySQL 数据库慢查询

MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阀值的语句。

long_query_time的默认值为10,意思是记录运行10秒以上的语句。默认情况下,MySQL数据库并不启动慢查询日志,需要手动来设置这个参数。当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件和数据库表。

11、MySQL数据库进行查询优化

a. 选取最适用的字段属性

MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为 CHAR(255) ,显然给数据库增加了不必要的空间,甚至使用 VARCHAR 这种类型也是多余的,因为 CHAR(6) 就可以很好的完成任务了。同样的,如果可以的话,我们应该使用 MEDIUMINT 而不是BIGIN 来定义整型字段。另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为 not null ,这样在将来执行查询的时候,数据库不用去比较NULL 值 。对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为 ENUM 类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。  

b. 使用连接(JOIN)来代替子查询 ( Sub-Queries )

c. 使用联合(UNION)来代替手动创建的临时表

d. 事务

e. 锁定表

f. 使用外键

g. 使用索引

h. 优化的查询语句

 

 

 


 


 



 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值