REDIS学习总结(一)单机集群搭建
一、概述
  单机集群搭建实践
    思考问题一:六节点实现三主三从-减少一个节点会发生什么?
    思考问题二:如何实现动态增减redis节点?
二、redis单机集群搭建实践
  1.下载redis https://redis.io/download或http://www.redis.cn/download.html(当前版本5.0.3)redis-5.0.3.tar.gz
  2.解压redis (下载到路径 /usr/local/redis/)
    [root@localhost redis]# tar -zxvf redis-5.0.3.tar.gz
  3.安装编译依赖
    yum install gcc
  4.编译redis
    [root@localhost redis]# cd redis-5.0.3/
    [root@localhost redis-5.0.3]# make MALLOC=libc
    [root@localhost redis-5.0.3]# cd src && make install
  5.控制台启动redis
    [root@localhost src]# ./redis-server
  以上完成redis的简单单机、单实例安装与启动,下面完成redis的单机集群安装与测试
  6.创建redis集群文件夹
    [root@localhost src]# mkdir -p /usr/local/redis-cluster
    [root@localhost redis-cluster]# mkdir 27001
    [root@localhost redis-cluster]# mkdir 27002
    [root@localhost redis-cluster]# mkdir 27003
    [root@localhost redis-cluster]# mkdir 27004
    [root@localhost redis-cluster]# mkdir 27005
    [root@localhost redis-cluster]# mkdir 27006
  7.在27001~27006中放入配置文件redis.conf
    初步实现集群,将元redis.conf的注释删除了,剩下的配置中需要改的地方:
    port、dir、节点配置参数、节点进程文件

bind 192.168.31.132
protected-mode yesport 27005
tcp-backlog 511
timeout 0
tcp-keepalive 300daemonize yes
supervised nopidfile /var/run/redis_27005.pid
loglevel notice
logfile ""
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdbdir /usr/local/redis-cluster/27005/
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush noappendonly yesappendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000cluster-enabled yescluster-config-file nodes-27005.conf
cluster-node-timeout 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

8.编写启动文件
    cd /usr/local/redis-cluster
    vim start-cluster.sh
    输入:

#! /bin/bash
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis-cluster/27001/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis-cluster/27002/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis-cluster/27003/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis-cluster/27004/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis-cluster/27005/redis.conf
/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis-cluster/27006/redis.conf

Esc :wq Enter

start-cluster.sh
  9.创建集群(只需第一次)

cp /usr/local/redis/redis-5.0.3/src/redis-cli /usr/local/redis-cluster/
cd /usr/local/redis-cluster
redis-cli --cluster create 192.168.31.132:27001 192.168.31.132:27002 192.168.31.132:27003 192.168.31.132:27004 192.168.31.132:27005 192.168.31.132:27006 --cluster-replicas 1

10.检查集群状态
    # -c:操作集群 -h:ip -p任意节点的port
    [root@localhost redis-cluster]# redis-cli -c -h 192.168.31.132 -p 27006
    192.168.31.132:27006> CLUSTER NODES

f1bc208e60311a374cd5c34cabb1a52cb518241a 192.168.31.132:27005@37005 master - 0 1547915984000 7 connected 0-5460
068acabd33e02684ad9f8b2dbdef0e30508853aa 192.168.31.132:27004@37004 slave b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b 0 1547915984000 4 connected
67878d35ba5ed57ec4f788195189f7f86aa6b6fb 192.168.31.132:27002@37002 master - 0 1547915983814 2 connected 5461-10922
3edebeb75eb348ca7ff87ff5eb328f2bd71c2a4f 192.168.31.132:27001@37001 slave f1bc208e60311a374cd5c34cabb1a52cb518241a 0 1547915983511 7 connected
da1e20037f6c41ca45fd5af9f2a479475fc82cf8 192.168.31.132:27006@37006 myself,slave 67878d35ba5ed57ec4f788195189f7f86aa6b6fb 0 1547915983000 6 connected
b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b 192.168.31.132:27003@37003 master - 0 1547915984826 3 connected 10923-16383

可以发现创建了三主三从的redis集群 
三、问题解答
    思考问题一:六节点实现三主三从-减少一个节点会发生什么?
      [root@localhost redis-cluster]# ./redis-cli -c -h 192.168.31.132 -p 27002
      192.168.31.132:27002> CLUSTER NODES

67878d35ba5ed57ec4f788195189f7f86aa6b6fb 192.168.31.132:27002@37002 myself,master - 0 1547975761000 2 connected 5461-10922
b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b 192.168.31.132:27003@37003 master - 0 1547975761066 3 connected 10923-16383
068acabd33e02684ad9f8b2dbdef0e30508853aa 192.168.31.132:27004@37004 slave b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b 0 1547975760061 4 connected
3edebeb75eb348ca7ff87ff5eb328f2bd71c2a4f 192.168.31.132:27001@37001 slave f1bc208e60311a374cd5c34cabb1a52cb518241a 0 1547975760000 7 connected
f1bc208e60311a374cd5c34cabb1a52cb518241a 192.168.31.132:27005@37005 master - 0 1547975761167 7 connected 0-5460
da1e20037f6c41ca45fd5af9f2a479475fc82cf8 192.168.31.132:27006@37006 slave 67878d35ba5ed57ec4f788195189f7f86aa6b6fb 0 1547975761568 6 connected

可以看出关系 - 
    主:192.168.31.132:27002  192.168.31.132:27003  192.168.31.132:27005
    从:192.168.31.132:27006  192.168.31.132:27004  192.168.31.132:27001
      现在减少主节点192.168.31.132:27002 - 
      192.168.31.132:27002> SHUTDOWN
      not connected> quit
      [root@localhost redis-cluster]# ./redis-cli -c -h 192.168.31.132 -p 27003
      192.168.31.132:27003> CLUSTER NODES

068acabd33e02684ad9f8b2dbdef0e30508853aa 192.168.31.132:27004@37004 slave b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b 0 1547976083802 4 connected
da1e20037f6c41ca45fd5af9f2a479475fc82cf8 192.168.31.132:27006@37006 master - 0 1547976082592 8 connected 5461-10922
f1bc208e60311a374cd5c34cabb1a52cb518241a 192.168.31.132:27005@37005 master - 0 1547976083600 7 connected 0-5460
3edebeb75eb348ca7ff87ff5eb328f2bd71c2a4f 192.168.31.132:27001@37001 slave f1bc208e60311a374cd5c34cabb1a52cb518241a 0 1547976083000 7 connected
67878d35ba5ed57ec4f788195189f7f86aa6b6fb 192.168.31.132:27002@37002 master,fail - 1547976058636 1547976058535 2 disconnected
b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b 192.168.31.132:27003@37003 myself,master - 0 1547976083000 3 connected 10923-16383

可以看出关系 - 
    主:192.168.31.132:27003  192.168.31.132:27005  192.168.31.132:27006
    从:192.168.31.132:27004  192.168.31.132:27001
    当删除主节点192.168.31.132:27002时,192.168.31.132:27006从节点变成主节点且slots->[5461,10922]正常工作
    思考问题二:如何实现动态增减redis节点?(水平扩容)
    例:新增节点:192.168.31.132:27007、192.168.31.132:27008
    [root@localhost redis-cluster]# mkdir 27007
    [root@localhost redis-cluster]# mkdir 27008

bind 192.168.31.132
protected-mode yesport 27007
tcp-backlog 511
timeout 0
tcp-keepalive 300daemonize yes
supervised nopidfile /var/run/redis_27007.pid
loglevel notice
logfile ""
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdbdir /usr/local/redis-cluster/27007/
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush noappendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-27007.conf
cluster-node-timeout 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

1.动态增加主节点(192.168.31.132:27007)
      启动192.168.31.132:27007 redis节点:
      /usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis-cluster/27007/redis.conf
      将节点加入集群:
      redis-cli --cluster add-node 192.168.31.132:27007 192.168.31.132:27004
      给新加入的节点分配slots
      [root@localhost redis-cluster]# redis-cli -c reshard 192.168.31.132:27005
      Could not connect to Redis at 127.0.0.1:6379: Connection refused
      [root@localhost redis-cluster]# vi /usr/local/redis/redis-5.0.3/redis.conf
      [root@localhost redis-cluster]# redis-cli -c reshard 192.168.31.132:27005
      Could not connect to Redis at 127.0.0.1:6379: Connection refused
      [root@localhost redis-cluster]# vi /usr/local/redis/redis-5.0.3/redis.conf
      [root@localhost redis-cluster]# ./redis-cli --cluster  reshard 192.168.31.132:27005

>>> Performing Cluster Check (using node 192.168.31.132:27005)
M: f1bc208e60311a374cd5c34cabb1a52cb518241a 192.168.31.132:27005slots:[0-5460] (5461 slots) master1 additional replica(s)
M: da1e20037f6c41ca45fd5af9f2a479475fc82cf8 192.168.31.132:27006slots:[5461-10922] (5462 slots) master
S: 068acabd33e02684ad9f8b2dbdef0e30508853aa 192.168.31.132:27004slots: (0 slots) slavereplicates b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b
M: b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b 192.168.31.132:27003slots:[10923-16383] (5461 slots) master1 additional replica(s)
S: 3edebeb75eb348ca7ff87ff5eb328f2bd71c2a4f 192.168.31.132:27001slots: (0 slots) slavereplicates f1bc208e60311a374cd5c34cabb1a52cb518241a
M: 9e8621c944181141793bb6218971220dce19a15f 192.168.31.132:27007slots: (0 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 4000
What is the receiving node ID? 9e8621c944181141793bb6218971220dce19a15f
Please enter all the source node IDs.Type 'all' to use all the nodes as source nodes for the hash slots.Type 'done' once you entered all the source nodes IDs.
Source node #1: f1bc208e60311a374cd5c34cabb1a52cb518241a
Source node #2: da1e20037f6c41ca45fd5af9f2a479475fc82cf8
Source node #3: b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b
Source node #4: doneReady to move 4000 slots.Source nodes:M: f1bc208e60311a374cd5c34cabb1a52cb518241a 192.168.31.132:27005slots:[0-5460] (5461 slots) master1 additional replica(s)M: da1e20037f6c41ca45fd5af9f2a479475fc82cf8 192.168.31.132:27006slots:[5461-10922] (5462 slots) masterM: b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b 192.168.31.132:27003slots:[10923-16383] (5461 slots) master1 additional replica(s)Destination node:M: 9e8621c944181141793bb6218971220dce19a15f 192.168.31.132:27007slots: (0 slots) masterResharding plan:Moving slot 5461 from da1e20037f6c41ca45fd5af9f2a479475fc82cf8Moving slot 5462 from da1e20037f6c41ca45fd5af9f2a479475fc82cf8......

2.动态增加从节点(192.168.31.132:27008)

bind 192.168.31.132
protected-mode yesport 27008
tcp-backlog 511
timeout 0
tcp-keepalive 300daemonize yes
supervised nopidfile /var/run/redis_27008.pid
loglevel notice
logfile ""
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdbdir /usr/local/redis-cluster/27008/
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush noappendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes-27008.conf
cluster-node-timeout 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes

启动192.168.31.132:27008 redis节点:
      /usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis-cluster/27008/redis.conf
      将节点加入集群:
      redis-cli --cluster add-node 192.168.31.132:27008 192.168.31.132:27004
      [root@localhost redis-cluster]# redis-cli add-node --slave 192.168.31.132:27008 192.168.31.132:27006
      Could not connect to Redis at 127.0.0.1:6379: Connection refused
      [root@localhost redis-cluster]# redis-cli --cluster add-node --slave 192.168.31.132:27008 192.168.31.132:27006

>>> Adding node 192.168.31.132:27008 to cluster 192.168.31.132:27006
>>> Performing Cluster Check (using node 192.168.31.132:27006)
M: da1e20037f6c41ca45fd5af9f2a479475fc82cf8 192.168.31.132:27006slots:[6795-10922] (4128 slots) master
M: f1bc208e60311a374cd5c34cabb1a52cb518241a 192.168.31.132:27005slots:[1333-5460] (4128 slots) master1 additional replica(s)
M: 9e8621c944181141793bb6218971220dce19a15f 192.168.31.132:27007slots:[0-1332],[5461-6794],[10923-12255] (4000 slots) master1 additional replica(s)
S: 068acabd33e02684ad9f8b2dbdef0e30508853aa 192.168.31.132:27004slots: (0 slots) slavereplicates b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b
S: 67878d35ba5ed57ec4f788195189f7f86aa6b6fb 192.168.31.132:27002slots: (0 slots) slavereplicates 9e8621c944181141793bb6218971220dce19a15f
S: 3edebeb75eb348ca7ff87ff5eb328f2bd71c2a4f 192.168.31.132:27001slots: (0 slots) slavereplicates f1bc208e60311a374cd5c34cabb1a52cb518241a
M: b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b 192.168.31.132:27003slots:[12256-16383] (4128 slots) master1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
>>> Send CLUSTER MEET to node 192.168.31.132:27008 to make it join the cluster.
[OK] New node added correctly.
[root@localhost redis-cluster]# redis-cli -c -h 192.168.31.132 -p 27008
192.168.31.132:27008> CLUSTER NODES
b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b 192.168.31.132:27003@37003 master - 0 1547984011896 3 connected 12256-16383
989a8fed9f974878685b208e79e8ce3cd1ada4bd 192.168.31.132:27008@37008 myself,master - 0 1547984011000 0 connected
67878d35ba5ed57ec4f788195189f7f86aa6b6fb 192.168.31.132:27002@37002 slave 9e8621c944181141793bb6218971220dce19a15f 0 1547984011594 9 connected
da1e20037f6c41ca45fd5af9f2a479475fc82cf8 192.168.31.132:27006@37006 master - 0 1547984011594 8 connected 6795-10922
9e8621c944181141793bb6218971220dce19a15f 192.168.31.132:27007@37007 master - 0 1547984011594 9 connected 0-1332 5461-6794 10923-12255
3edebeb75eb348ca7ff87ff5eb328f2bd71c2a4f 192.168.31.132:27001@37001 slave f1bc208e60311a374cd5c34cabb1a52cb518241a 0 1547984010388 7 connected
068acabd33e02684ad9f8b2dbdef0e30508853aa 192.168.31.132:27004@37004 slave b7e3fae2b3e87c54c42e20d416a1761d6dd81c8b 0 1547984011394 3 connected
f1bc208e60311a374cd5c34cabb1a52cb518241a 192.168.31.132:27005@37005 master - 0 1547984010085 7 connected 1333-5460
192.168.31.132:27008> CLUSTER REPLICATE da1e20037f6c41ca45fd5af9f2a479475fc82cf8
OK

四、参考文献
  redis 5.0.3 讲解、集群搭建 https://www.cnblogs.com/zy-303/p/10273167.html
  redis搭建集群ERROR: Could not find a valid gem 'redis-3.0.0' (>= 0) in any repository https://blog.csdn.net/qqxyy99/article/details/78962846
  redis cli命令 https://www.cnblogs.com/kongzhongqijing/p/6867960.html

REDIS学习总结(一)单机集群搭建相关推荐

  1. Redis 学习笔记八:集群模式

    Redis 学习笔记八:集群模式 作者:Grey 原文地址: 博客园:Redis 学习笔记八:集群模式 CSDN:Redis 学习笔记八:集群模式 前面提到的Redis 学习笔记七:主从复制和哨兵只能 ...

  2. Redis 多机多节点集群搭建方案(5.0版本)

    >搭建环境: a)redis的安装包,redis-5.0.8.tar.gz b)gcc安装包gcc_rpm.tar.gz c)VM10 d)CentOS镜像文件 >搭建步骤: 1.准备工作 ...

  3. Redis三主三从集群搭建

    一.引子 主从复制以及哨兵,他们可以提高读的并发,但是单个master容量有限,数据达到一定程度会有瓶颈,这个时候可以通过水平扩展为多master-slave集群(看原理图). 所以一起来学习redi ...

  4. MongoDB单机集群搭建

    一.单机副本集部署方案: 单台物理机,一个主节点,一个副本节点,一个仲裁节点. 二.部署步骤 1.在mongodb目录下新建config目录(目录及位置可随意指定,在此按照config目录搭建),在c ...

  5. Redis 单机集群搭建步骤(五)

    一. 安装环境信息 Linux 操作系统: centos 6.1 Redis版本:redis-4.0.6.tar.gz 本案例使用到时一台服务器搭建3主3从到redis集群服务 二.redis 集群配 ...

  6. Redis三主三从集群搭建(三台机器)

    介绍 redis三种模式 一.主从模式 Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构. ...

  7. REDIS三主三从集群搭建笔记(redis版本5.0.8)

    mkdir -p /app/redis tar -zxvf redis-5.0.8.tar.gz -C /app/redis cd /app/redis/redis-5.0.8编译安装: make & ...

  8. Redis【第二篇】集群搭建

    第一步:准备 1.安装包 ruby-2.4.0.tar.gz rubygems-2.6.10.tgz zlib-1.2.11.tar.gz redis-3.3.2.gem 2. 架构: 名称 IP 端 ...

  9. Nacos 单机集群搭建及常用生产环境配置 | Spring Cloud 3

    一.Nacos 概览 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现.配置管理 ...

  10. Redis【有与无】【AC2】Redis 安装、配置、集群搭建

    本文章基于Redis 6.0.9版本,对Redis配置进行说明 目录 序: 1.准备阶段 2.安装阶段 3.配置 4.创建集群 5.测试 6.防火墙开放端口(选) 7.关闭redis 附录 T.术语 ...

最新文章

  1. (转)数组指针和指针数组的区别
  2. 第四范式发布Sage AIOS 2.0及智能应用市场Sage App Store
  3. 【C/C++】实型变量
  4. Gym - 101775J Straight Master(差分数组)
  5. 页面跳转的方法以及301 和 302的区别
  6. windows主机加固和评测
  7. 【.NET Core项目实战-统一认证平台】第十五章 网关篇-使用二级缓存提升性能
  8. 聊聊一直困扰前端程序员的浏览器兼容-【css】
  9. 交换机两个链路相连一些设置
  10. 爬虫实例5 爬取58房源信息(xpath)
  11. linux shell编程文本处理命令grep
  12. MSP430 F5529 单片机 OLED 音乐播放器 八音盒 蜂鸣器 音乐
  13. 渗透第一个靶机 shop1.0 (还是简单渗透版)
  14. 合作动态 | 方正璞华与日立签订战略合作协议,加快推进数字化管理变革!
  15. 米联ZYNQ7Z020系列的以太网网口芯片RTL8211FD自适应速度的问题
  16. [9i]多练扎马步,预防膝盖疼痛
  17. 服务器网卡支持25G,25G服务器网卡光模块解决方案
  18. clientX,clientY,screenX,screenY,offsetX,offsetY 区别测试
  19. 教师资格证报名照片有什么要求?这些小细节要注意
  20. TransE模型的python代码实现

热门文章

  1. Jenkins整合Sonar
  2. Matlab从入门到精通(六)--矩阵基本运算
  3. RouterOS利用(L2TP)实现异地组网
  4. php+mysql模板个人记账系统
  5. android电视机清理内存,电视盒子总是内存不足?五大清理方法释放更多内存
  6. 如何更换tomcat版本
  7. Java文件快速copy复制
  8. flask 接收文件
  9. 万字详解自动驾驶定位技术
  10. EPS学习笔记2----------常用地物绘制基础