SQL 进阶
我们都知道 select 的基本用法 select <字段名> from <表名> [where <限制条件>]
,然而 select
语句后面还可以跟很多限制条件。我们这次用 user 表来作为示范,下面是 user 表的结构:
我们都知道 select 的基本用法 select <字段名> from <表名> [where <限制条件>]
,然而 select
语句后面还可以跟很多限制条件。我们这次用 user 表来作为示范,下面是 user 表的结构:
Python 内置了字典 Dict(全称 Dictionary),使用键 - 值(key-value)存储,具有极快的查找速度。Dict 的查找原理和查字典类似,key 就相当于字典的索引,Python 可以通过 key 计算出所对应的 value 存放的内存地址,直接取出,所以查找速度快。
Dict 的初始化很简单,语法如下:
>>> dict = {key1' : value1, 'key2' = value2, 'key3' = value3}
>>> dict['key2']
value2
一个 key 只能对应一个 value,所以当我们对一个 key 多次赋值时会将前一个 value 覆盖掉。由于需要查找的 key 不存在时,dict 会报错,为了避免 key 不存在的情况,Python 提供了两种方法:
in
判断,如果 key 存在,就返回 True
,反之返回 False
:>>> `key` in dict
get
判断,如果 key 不存在就返回 None(返回 None 的时候交互式命令行不显示结果),也可以是自己指定返回的内容:>>> dict.get('key') #返回None
>>> dict.get('key',-1) #返回自己指定的值`-1`
删除 Dict 可以使用 dict.pop(key)
方法,对应的 value 也会从 dict 中删除。
Dict 内部的存放顺序和 key 的放入没有关系,Dict 的查找和插入速度不会随着 key 的增加而变慢,需要占用大量的内存,是一种用空间来换取时间的方法。
Set 和 Dict 类似,也是一组 key 的集合,但是不存储 value。由于 key 不能重复,所以在 set 中没有重复的 key。要创建一个 set 需要提供一个 list 作为输入的集合:
>>> s = set([1,2,3,4,5])
重复的元素会被 set 自动过滤,可以通过 add(key)
方法向 set 添加元素,通过 remove(key)
方法删除元素。我们可以将 set 看作数学意义上的集合,因此,两个 set 之间可以做数学意义上的交 (&)、并 (|) 集等运算
CREATE DATABASE <数据库名> [其他选项]
USE <数据库名>
ALTER DATABASE <数据库名>
DROP DATABASE <数据库名>
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
)
ALTER TABLE <表名> add <列名> <列数据类型> [after 插入位置]; --增加列
ALTER TABLE <表名> change <列名> <列新名> <新数据类型>; --修改列
ALTER TABLE <表名> drop <列名>; --删除列
ALTER TABLE <表名> rename <新表名>; --重命名表
DROP TABLE <表名> --删除表
insert [into] <表名> [(列名1,列名2,列名3……)] values (值1,值2,值3……);
update <表名> set 列名=新值 where 更新条件;
delete from <表名> where 删除条件;
select <列名> from <表名> [查询条件];
互联网协议族(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
都会出现
ERROR Deployer not found: git
这样的报错,Google 了半天都没有找到解决的办法,最后在找到了 Github 上的一条 issue,终于发现了解决办法:只要将配置文件_config.yml 中 plugins 的那段给注释掉就 OK 了,即
#plugins:
#- hexo-qiniu-sync
还是希望开发者能早点修改文档吧,不然还真的挺容易出事,不过说一句,我的 Hexo 是 3.2.2 的版本的,不知道 2.x 版本会不会出现类似的情况
今天把 Ubuntu 从 16.04 更新到 16.10 之后卸载了些软件,之后蛋疼的发现系统设置打不开了,真是欲哭无泪。去网上搜了下发现是我之前由于卸载了 iBus 导致的,虽然我不懂为什么 iBus 和 Ubuntu 之间的关系为什么会如此紧密,但是既然发生了这种事情我也很绝望啊,只能按照网上的方法
sudo apt-get install ubuntu-desktop #这个会把Ubuntu预装的软件office还有Amazon什么的装回来,装完自己再慢慢卸载吧
或者他也提供了一次性的安装办法
sudo apt-get install ibus-pinyin unity-control-center unity-control-center-signon webaccounts-extension-common xul-ext-webaccounts
但是我眉头一皱,发现事情并不简单,我继续搜了下去,也有很多人遇到这种问题,发现还有更简单的办法
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
cfdisk #使用cfdisk进行分区
笔者前段时间安装了 sqli-labs,就想把 sqli-labs 和 lamp 环境的搭建都写出来,其实这两个东西都很简单,感觉比我折腾 hexo 要简单的得多了(手动滑稽)。
sqli 即 sql injection (sql 注入),sqli-labs 是一个印度程序员写的用来学习 sql 注入的游戏教程,Youtube 上有一套视频教程 (需要科学上网),github 上也有开源的项目。
那么接下来就可以进行安装了:
最近笔者在 “温习 TP 框架”(其实就是不会然后抓紧时间啃),从最简单 Blog 开始做起,以前学习的时候是跟着教程,用 time () 函数获取当前时间戳,然后用 int 型数据来存储。这一次我突然想用 Mysql 内置的时间类型的数据 ——timestamp。