注: 部分概念介绍来源于网络

一、常用管理命令
1、启动Redis
#redis-server [--port 6379]
如果命令参数过多,建议通过配置文件来启动Redis。
#redis-server [xx/xx/redis.conf]
6379是Redis默认端口号。

2、连接Redis客户端
#./redis-cli [-h 127.0.0.1 -p 6379 <-a password>]

3、停止Redis
#redis-cli shutdown
#kill redis-pid
以上两条停止Redis命令效果一样。

4、发送命令
给Redis发送命令有两种方式:
4.1、redis-cli带参数运行,如:
#redis-cli shutdown
not connected#
这样默认是发送到本地的6379端口。
4.2、redis-cli不带参数运行,如:
#./redis-cli
127.0.0.1:6379#shutdown
not connected#

5、测试连通性
127.0.0.1:6379#ping
PONG

二、key操作命令
1、获取所有键
语法:keys pattern
127.0.0.1:6379#keys *
1) "age"
查找匹配给定模式pattern的所有key。
KEYS * 匹配数据库中所有 key 。
KEYS h?llo 匹配 hello , hallo 和 hxllo 等。
KEYS h*llo 匹配 hllo 和 heeeeello 等。
KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
特殊符号用 \ 隔开

2、获取键总数
语法:dbsize
127.0.0.1:6379#dbsize
(integer) 6
获取键总数时不会遍历所有的键,直接获取内部变量,时间复杂度O(1)。

3、查询键是否存在
语法:exists key [key ...]
127.0.0.1:6379#exists age java
(integer) 2
查询多个,返回存在的个数。

4、删除键
语法:del key [key ...]
127.0.0.1:6379#del java age
(integer) 1
可以删除多个,返回删除成功的个数。

5、查询键类型
语法:type key
127.0.0.1:6379#type age
string

6、移动键
语法:move key db
如把age移到2号数据库。
127.0.0.1:6379#move age 2
(integer) 1
127.0.0.1:6379#select 2
OK
语法:SELECT index
切换数据库(redis默认16个数据库  编号从0开始)
127.0.0.1:6379[2]#keys *
1) "age"

7、查询key的生命周期(秒)
秒语法:ttl key
毫秒语法:pttl key
127.0.0.1:6379[2]#ttl age
(integer) -1
-1:永远不过期。

8、设置过期时间
秒语法:expire key seconds
毫秒语法:pexpire key milliseconds
127.0.0.1:6379[2]#expire age 60
(integer) 1
127.0.0.1:6379[2]#ttl age
(integer) 55
设置永不过期
语法:persist key
127.0.0.1:6379[2]#persist age
(integer) 1

9、更改键名称
语法:rename key newkey
127.0.0.1:6379[2]#rename age age123
OK

三、字符串操作命令
字符串是Redis中最基本的数据类型,单个数据能存储的最大空间是512M。
1、存放键值
语法:set key value [EX seconds] [PX milliseconds] [NX|XX]
nx:如果key不存在则建立,xx:如果key存在则修改其值,也可以直接使用setnx/setex命令。
127.0.0.1:6379#set age 666
OK

2、获取键值
语法:get key
127.0.0.1:6379#get age
"666"

3、值递增/递减
如果字符串中的值是数字类型的,可以使用incr命令每次递增,不是数字类型则报错。
语法:incr key
127.0.0.1:6379#incr age
(integer) 667
一次想递增N用incrby命令,如果是浮点型数据可以用incrbyfloat命令递增。
同样,递减使用decr、decrby命令。

4、批量存放键值
语法:mset key value [key value ...]
127.0.0.1:6379#mset java1 1 java2 2 java3 3
OK
获取键值
语法:mget key [key ...]
127.0.0.1:6379#mget java1 java2
1) "1"
2) "2"
Redis接收的是UTF-8的编码,如果是中文一个汉字将占3位返回。

5、获取值长度
语法:strlen key
127.0.0.1:6379#strlen age
(integer) 3

6、追加内容
语法:append key value
127.0.0.1:6379#append age hi
(integer) 5
向键值尾部添加,如上命令执行后由666变成666hi

7、获取部分字符
语法:getrange key start end
#127.0.0.1:6379#getrange age 0 4
"javas"

四、散列/哈希(Hash)操作命令
redis字符串类型键和值是字典结构形式,这里的散列类型其值也可以是字典结构。
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
hash使我们最常用的,因为他可以存储对象,字典等。hash里面是一个string类型的key value映射集合,每一个都叫做域。
同时将多个 field-value (域-值)对设置到哈希表 key 中
1、存放键值
单个语法:hset key field value
127.0.0.1:6379#hset user name age
(integer) 1
多个语法:hmset key field value [field value ...]
127.0.0.1:6379#hmset user name age age 20 address china
OK
不存在时语法:hsetnx key field value
127.0.0.1:6379#hsetnx user tall 180
(integer) 0

2、获取字段值
单个语法:hget key field
127.0.0.1:6379#hget user age
"20"
多个语法:hmget key field [field ...]
127.0.0.1:6379#hmget user name age address
1) "age"
2) "20"
3) "china"

3、获取所有键与值语法:hgetall key
127.0.0.1:6379#hgetall user
1) "name"
2) "age"
3) "age"
4) "20"
5) "address"
6) "china"
在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍

4、获取所key 中的所有域语法:hkeys key
127.0.0.1:6379#hkeys user
1) "name"
2) "address"
3) "tall"
4) "age"

5、获取所有值语法:hvals key
127.0.0.1:6379#hvals user
1) "age"
2) "china"
3) "170"
4) "20"

6、判断域是否存在
语法:hexists key field
127.0.0.1:6379#hexists user address
(integer) 1
如果哈希表含有给定域,返回 1 。
如果哈希表不含有给定域,或 key 不存在,返回 0 。

7、获取字段数量
语法:hlen key
127.0.0.1:6379#hlen user
(integer) 4

8、递增/减
语法:hincrby key field increment
127.0.0.1:6379#hincrby user tall -10
(integer) 170

9、删除字段
语法:hdel key field [field ...]
127.0.0.1:6379#hdel user age
(integer) 1

10、HINCRBY key field increment
为哈希表 key 中的域 field 的值加上增量 increment 。
增量也可以为负数,相当于对给定域进行减法操作。
如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。

11、HINCRBYFLOAT key field increment
为哈希表 key 中的域 field 加上浮点数增量 increment 。
如果哈希表中没有域 field ,那么 HINCRBYFLOAT 会先将域 field 的值设为 0 ,然后再执行加法操作。
如果键 key 不存在,那么 HINCRBYFLOAT 会先创建一个哈希表,再创建域 field ,最后再执行加法操作。

五、列表操作命令
列表类型是一个有序的字段串列表,内部是使用双向链表实现,所有可以向两端操作元素,获取两端的数据速度快,通过索引到具体的行数比较慢。
列表类型的元素是有序且可以重复的。
1、存储值
左端存值语法:lpush key value [value ...]
127.0.0.1:6379#lpush number 1 2 3 4
(integer) 4
右端存值语法:rpush key value [value ...]
127.0.0.1:6379#rpush number 5 6 7 8
(integer) 8

2、索引存值
语法:lset key index value
127.0.0.1:6379#lset number 4 10
OK

3、弹出元素
左端弹出语法:lpop key
127.0.0.1:6379#lpop number
4
右端弹出语法:rpop key
127.0.0.1:6379#rpop number
8

4、获取元素个数
语法:llen key
127.0.0.1:6379#llen number
(integer) 6

5、获取列表元素
查看范围段的value。(可以用来分页)
两边获取语法:lrange key start stop
127.0.0.1:6379#lrange number 0 3
1) "3"
2) "2"
3) "1"
4) "10"

6、获取所有
127.0.0.1:6379#lrange number 0 -1
1) "3"
2) "2"
3) "1"
4) "10"
5) "6"
6) "7"

7、从右端索引
127.0.0.1:6379#lrange number -3 -1
1) "10"
2) "6"
3) "7"

8、索引获取语法:lindex key index
127.0.0.1:6379#lindex number 3
"10"

9、从右端获取
127.0.0.1:6379#lindex number -4
"1"

10、删除元素
根据值删除语法:lrem key count value
// count #0 从左端删除前count个
127.0.0.1:6379#lrem number 4 2
(integer) 4
// count < 0 从右端删除前count个
127.0.0.1:6379#lrem number -3 2
(integer) 3
// count=0 删除所有
127.0.0.1:6379#lrem number 0 2
(integer) 5
范围删除语法:ltrim key start stop
// 只保留1-2之间的元素
127.0.0.1:6379#ltrim list 1 2
OK

11、RPOPLPUSH source destination
移除列表的最后一个元素,并将该元素添加到另一个列表并返回

12、BRPOPLPUSH source destination timeout
从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

13、LINSERT key BEFORE|AFTER pivot value
将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。
当 pivot 不存在于列表 key 时,不执行任何操作。多个pivot时只操作第一个。
当 key 不存在时, key 被视为空列表,不执行任何操作。
如果 key 不是列表类型,返回一个错误。

14、BLPOP key1 [key2 ] timeout 
移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

15、BRPOP key1 [key2 ] timeout 
移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

六、集合操作命令
集合类型和列表类型相似,只不过是集合是无序且不可重复的。
1、集合存储值
语法:sadd key member [member ...]
// 这里有9个值(2个java),只存了8个
127.0.0.1:6379#sadd strings java python shell C c++ Linux go elasticsearch java
(integer) 8

2、获取元素
获取所有元素语法:smembers key
127.0.0.1:6379#smembers strings
1) "shell"
2) "C"
3) "c++"
4) "go"
5) "Linux"
6) "python"
7) "java"
8) "elasticsearch"

3、随机获取语法:srandmember strings count
127.0.0.1:6379#srandmember strings 3
1) "c++"
2) "java"
3) "elasticsearch"
如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 SRANDMEMBER 则仅仅返回随机元素,而不对集合进行任何改动。

4、判断集合是否存在元素,返回1 表示存在  0表示不存在。
语法:sismember key member
127.0.0.1:6379#sismember strings go
(integer) 1

5、获取集合元素个数
语法:scard key
127.0.0.1:6379#scard strings
(integer) 8

6、删除集合元素
语法:srem key member [member ...]
127.0.0.1:6379#srem strings Linux elasticsearch
(integer) 2

7、弹出元素
语法:spop key [count]
127.0.0.1:6379#spop strings 2
1) "go"
2) "java"
移除并返回集合中的一个随机元素。
如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。

8、SMOVE source destination member
将 member 元素从 source 集合移动到 destination 集合。
SMOVE 是原子性操作。
如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。
当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。
当 source 或 destination 不是集合类型时,返回一个错误。

集合运算
9、SDIFF key [key ...]
返回一个集合的全部成员,该集合是所有给定集合之间的差集。返回给定所有集合的差集

10、SDIFFSTORE destination key [key ...]
这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
如果 destination 集合已经存在,则将其覆盖。
destination 可以是 key 本身。(如果destination不存在 则新建一个)

11、SINTER key [key ...]
返回一个集合的全部成员,该集合是所有给定集合的交集。
不存在的 key 被视为空集。
当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。

12、SDIFFSTORE destination key [key ...]
这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
如果 destination 集合已经存在,则将其覆盖。
destination 可以是 key 本身。

13、SUNION key [key ...]
返回一个集合的全部成员,该集合是所有给定集合的并集。
不存在的 key 被视为空集。

14、SUNIONSTORE destination key [key ...]
这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
如果 destination 已经存在,则将其覆盖。
destination 可以是 key 本身。

15、SSCAN key cursor [MATCH pattern] [COUNT count] 
迭代集合中的元素

七、有序集合和列表的区别:
1、列表使用链表实现,两头快,中间慢。有序集合是散列表和跳跃表实现的,即使读取中间的元素也比较快。
2、列表不能调整元素位置,有序集合能。
3、有序集合比列表更占内存。
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
1、存储值
语法:zadd key [NX|XX] [CH] [INCR] score member [score member ...]
127.0.0.1:6379#zadd key 16011 tid 20082 huny 2893 nosy
(integer) 3

2、获取元素分数
语法:zscore key member
127.0.0.1:6379#zscore key tid
"16011"
如果 tid 元素不是有序集 key 的成员,或 key 不存在,返回 nil 。

3、获取排名范围排名语法:zrange key start stop [WITHSCORES]
// 获取所有,没有分数
127.0.0.1:6379#zrange key 0 -1
1) "nosy"
2) "tid"
3) "huny"
// 获取所有及分数
127.0.0.1:6379#zrange key 0 -1 Withscores
1) "nosy"
2) "2893"
3) "tid"
4) "16011"
5) "huny"
6) "20082"
这个可以用来做分页。
通过索引区间返回有序集合成指定区间内的成员。
返回有序集 key 中,指定区间内的成员。
其中成员的位置按 score 值递增(从小到大)来排序。
具有相同 score 值的成员按字典序(lexicographical order )来排列。
如果你需要成员按 score 值递减(从大到小)来排列,请使用 ZREVRANGE 命令。
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
超出范围的下标并不会引起错误。
比如说,当 start 的值比有序集的最大下标还要大,或是 start > stop 时, ZRANGE 命令只是简单地返回一个空列表。
另一方面,假如 stop 参数的值比有序集的最大下标还要大,那么 Redis 将 stop 当作最大下标来处理。
可以通过使用 WITHSCORES 选项,来让成员和它的 score 值一并返回,返回列表以 value1,score1, ..., valueN,scoreN 的格式表示。
客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。

4、ZREVRANGE key start stop [WITHSCORES]
可以做分页
返回有序集 key 中,指定区间内的成员。
其中成员的位置按 score 值递减(从大到小)来排列。
具有相同 score 值的成员按字典序的逆序(reverse lexicographical order)排列。
除了成员按 score 值递减的次序排列这一点外, ZREVRANGE 命令的其他方面和 ZRANGE 命令一样。

5、获取指定分数范围排名语法:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
127.0.0.1:6379#zrangebyscore key 3000 30000 withscores limit 0 1
1) "tid"
2) "16011"
返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
具有相同 score 值的成员按字典序(lexicographical order)来排列(该属性是有序集提供的,不需要额外的计算)。
可选的 LIMIT 参数指定返回结果的数量及区间(就像SQL中的 SELECT LIMIT offset, count ),注意当 offset 很大时,定位 offset 的操作可能需要遍历整个有序集,此过程最坏复杂度为 O(N) 时间。
可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回。
该选项自 Redis 2.0 版本起可用。

6、增加指定元素分数
语法:zincrby key increment member
127.0.0.1:6379#zincrby key 2000 tid
"18011"
为有序集 key 的成员 member 的 score 值加上增量 increment 。
可以通过传递一个负数值 increment ,让 score 减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。
当 key 不存在,或 member 不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。
当 key 不是有序集类型时,返回一个错误。
score 值可以是整数值或双精度浮点数。

7、获取集合元素个数
语法:zcard key
127.0.0.1:6379#zcard key
(integer) 3

8、获取指定范围分数个数
语法:zcount key min max
127.0.0.1:6379#zcount key 2000 20000
(integer) 2

9、删除指定元素
语法:zrem key member [member ...]
127.0.0.1:6379#zrem key huny
(integer) 1

10、获取元素排名
语法:zrank key member
127.0.0.1:6379#zrank key tid
(integer) 1
使用 ZREVRANK 命令可以获得成员按 score 值递减(从大到小)排列的排名。

11、ZREVRANK key member
返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序。
排名以 0 为底,也就是说, score 值最大的成员排名为 0 。
使用 ZRANK 命令可以获得成员按 score 值递增(从小到大)排列的排名。

12、ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
返回有序集 key 中, score 值介于 max 和 min 之间(默认包括等于 max 或 min )的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列。
具有相同 score 值的成员按字典序的逆序(reverse lexicographical order )排列。
除了成员按 score 值递减的次序排列这一点外, ZREVRANGEBYSCORE 命令的其他方面和 ZRANGEBYSCORE 命令一样。

13、ZLEXCOUNT KEY MIN MAX
计算有序集合中指定字典区间内成员数量。

14、ZREMRANGEBYRANK key start stop
移除有序集 key 中,指定排名(rank)区间内的所有成员。
区间分别以下标参数 start 和 stop 指出,包含 start 和 stop 在内。
下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。
你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。

15、ZREMRANGEBYSCORE key min max
移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。
自版本2.1.6开始, score 值等于 min 或 max 的成员也可以不包括在内,详情请参见 ZRANGEBYSCORE 命令。

下面 集合运算
16、ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。
默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之和.
关于 WEIGHTS 和 AGGREGATE 选项的描述,参见 ZUNIONSTORE 命令。

17、ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。
默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之 和 。

18、WEIGHTS
使用 WEIGHTS 选项,你可以为 每个 给定有序集 分别 指定一个乘法因子(multiplication factor),每个给定有序集的所有成员的 score 值在传递给聚合函数(aggregation function)之前都要先乘以该有序集的因子
如果没有指定 WEIGHTS 选项,乘法因子默认设置为 1 。

19、AGGREGATE
使用 AGGREGATE 选项,你可以指定并集的结果集的聚合方式。
默认使用的参数 SUM ,可以将所有集合中某个成员的 score 值之 和 作为结果集中该成员的 score 值;使用参数 MIN ,可以将所有集合中某个成员的 最小 score 值作为结果集中该成员的 score 值;而参数 MAX 则是将所有集合中某个成员的 最大 score 值作为结果集中该成员的 score 值。

Redis基础操作命令相关推荐

  1. redis基础命令和数据操作命令学习笔记

    redis基础命令和数据操作命令学习笔记 基础命令 安装成功后,redis的启动命令:先修改配置文件.将服务改成默认运行.然后以配置文件启动服务 redis-server config/redis-c ...

  2. mysql主从复制、redis基础、持久化和主从复制

    一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...

  3. 【redis】redis基础命令,分布式锁,缓存问题学习大集合

    写在前面 Redis是一个高速的内存数据库,它的应用十分广泛,可以说是服务端必学必精的东西.然而,学以致用,无用则无为.学了的东西必须反复的去用,去实践,方能有真知.这篇文章记录了我在redis学习过 ...

  4. Redis基础篇(万丈高楼平地起):核心底层数据结构

    微信原文链接,排版更舒适. 大家好,我是小龙.近期有很多小伙伴私信我Redis怎么做持久化?集群方案怎么做?分布式锁怎么实现?可是我发现,每次简答完一个问题他还有其他类似问题,或则各个知识点不能串通形 ...

  5. Redis基础与高可用集群架构进阶详解

    一.NoSQL简介 1.问题引入 每年到了过年期间,大家都会自觉自发的组织一场活动,叫做春运!以前我们买票都是到火车站排队,后来呢,有了 12306,有了它以后就更方便了,我们可以在网上买票,但是带来 ...

  6. 学一点Redis基础

    文章目录 学一点Redis基础 **Redis介绍** **安装** **配置文件详解** **数据类型** **字符串类型(string)** **==位图操作bitmap==** **列表数据类型 ...

  7. Redis基础及原理详解

    Redis基础及原理详解 前言:以下是最近学习redis的一些笔记总结,文中如有不当的地方欢迎批评指正,重在记录与学习,笔芯~~ Nosql概述 演进历史 单机mysql Memcached(缓存)+ ...

  8. Redis基础用法、高级特性与性能调优以及缓存穿透等分析

    目录 一.Redis介绍 二.Redis数据结构及常用的命令 三.Redis持久化策略选择 四.内存管理与数据淘汰机制 五.Redis过期策略及实现原理 1  说明 2  设置过期时间 3  三种过期 ...

  9. redis基础知识点

    *redis基础知识点 ping 检查redis服务器的连接是否正常如果正常返回----pong info 查看redis服务器的统计信息 redis-benchmark 测试redis服务的性能 r ...

最新文章

  1. iOS开发 关于启动页和停留时间的设置
  2. less14 颜色函数2
  3. 使用ActivityGroup需要注意的地方
  4. Paper:2017年的Google机器翻译团队《Transformer:Attention Is All You Need》翻译并解读
  5. 基于Boost::beast模块的协程HTTP服务器
  6. c 数据压缩算法_CCSDS图像压缩算法之我见(一)
  7. Oracle数据库迁移问题(备份、还原、数据导入导出、PLSQL)IMP - 0009 错误
  8. MongoDB限制与阈值
  9. MySQL5.7.17源码编译安装与配置
  10. UITableView 点击选中改变字体颜色并记录
  11. bkwin设置文本控件为多行模式
  12. java schema名_关于Schema的名字空间
  13. mybatis学习笔记(1)-对原生jdbc程序中的问题总结
  14. BZOJ1036[ZJOI2008]树的统计——树链剖分+线段树
  15. 那些很重要,但是不常用的技术,websocket
  16. 跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
  17. 计算机课怎么管纪律,作为班主任,班级纪律应该怎么管?丨班级圆桌派
  18. python代码画人物_Python绘制可爱的卡通人物 | 【turtle使用】
  19. centos7对普通用户授权sudo权限
  20. Python 在线免费批量美颜,不比某秀秀方便好用一些吗!

热门文章

  1. html页面特效代码,html特效代码大全
  2. 中国所有城市json,名称,拼音+邮编
  3. 6项发展助推中国成为“全球数据中心”
  4. 循环结构while及do...while的用法
  5. C语言函数返回值与参数传递
  6. Android实现Excel表格样式
  7. 基于MyEclipse+Tomcat+Mysql+JSP开发得高校快餐店订餐系统
  8. OPPOA57_官方线刷包_救砖包_解账户锁
  9. 基础算法-Xgboost
  10. vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别(上)