redis安装redis集群

NoSql数据库之Redis
1、什么是nosql,nosql的应用场景
2、Nonsql数据库的类型
a) Key-value
b) 文档型(类似于json)
c) 列式存储
d) 图式
3、redis的相关概念kv型的。
4、Redis的安装及部署
5、Redis的使用方法及数据类型
a) Redis启动及关闭
b) Redis的数据类型
i. String类型
ii. Hash类型
iii. List类型
iv. Set类型
v. SortedSet(zset)
6、redis数据库的持久化
a) Rdb快照形式
b) Aof命令形式
7、主从复制
8、Redis集群

2 什么是nosql
2.1 nosql

Nosql=Not only sql,非关系型数据库。
Web1.0:内容输出型网站。类似于搜狐、网页、新浪。
Web2.0:交互型的网站。例如人人网、微博等。

关系型数据库遇到的问题:
1、High performance - 对数据库高并发读写的需求
2、大数据量存储。
3、High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求

此时nosql数据出现了。

2.2 Nosql数据库的类型

1、key-value类型。常用的就是redis。可以用作缓存使用。
2、文档型。Mongodb。存储的是类似于json的数据bson。
3、列式存储。Hbase。基于hadoop的数据库。
4、图式存储。典型应用:社交网络

3 Redis的相关概念
3.1 什么是redis

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如
下:
字符串类型
散列类型
列表类型
集合类型
有序集合类型。

3.2 Redis的应用场景

缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
分布式集群架构中的session分离。
聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)

4 Redis的安装及部署
4.1 Redis部署环境

需要linux系统,centos6.4
Redis同样也有windows版本,可以练习使用。官方不典型支持。推荐使用linux版本。

需要gcc的开发环境。

4.2 Redis的下载

http://redis.io/

clipboard.png

在这里插入图片描述
最新版本:3.0.3
本课程的版本:3.0.0

clipboard.png

在这里插入图片描述
是一个redis的源码包,c语言开发的。

4.3 安装步骤

第一步:安装linux虚拟机。Centos6.4(32位)
第二步:把源码包上传到服务器。
第三步:解压源码包。
tar -zxvf redis-3.0.0.tar.gz
第四步:编译源码,需要gcc的环境。如果没有就安装一个,需要联网。
安装gcc:yum install gcc-c++
编译源码:进入源码目录,make。
第五步:安装
make install PREFIX=/usr/local/redis
PREFIX:指定安装目录

在这里插入图片描述
4.4 启动和关闭

4.4.1 前端启动模式

在bin 目录下执行:
./redis-server

在这里插入图片描述
4.4.2 后端启动模式

需要redis.conf配置文件:

在这里插入图片描述把此文件复制到redis的目录。
修改redis.conf文件:daemonize yes(默认是no)
启动:
./redis-server redis.conf
需要指定一个配置文件。

4.4.3 关闭redis

1、kill进程
2、正常关闭
./redis-cli -h 192.168.25.147 -p 6379 shutdown
-h:服务的ip地址
-p:端口号
如果是本地服务,而且端口是6379这些参数可以省略。

4.5 Redis的客户端

4.5.1 Redis自带客户端:redis-cli

简单命令:
Ping:测试服务器是否还活着。
Set:命令,添加一个key
Set key value
例子:
127.0.0.1:6379> set key1 100
OK
Get命令,取一个key的值
Get key
例子:
127.0.0.1:6379> get key1
“100”

4.5.2 Java的客户端Jedis

如果远程连接失败,查看linux 的防火墙是否开放redis的服务端口。
第一种方法:关闭防火墙:
service iptables stop
第二种方法:修改配置文件开放指定端口。
第一步:修改:
vim /etc/sysconfig/iptables

在这里插入图片描述第二步:重启防火墙服务
[root@localhost ~]# service iptables restart
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]

4.6 图像客户端

clipboard.png

在这里插入图片描述
Redis中默认有16个数据库。0-15号。默认操作0号库。
使用命令切换数据库:
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 16
(error) ERR invalid DB index
127.0.0.1:6379> select 15
OK
127.0.0.1:6379[15]>
库和库之间相互隔离,不同的库中可以有相同的key。

数据库的数量在redis.conf中配置:

clipboard.png

在这里插入图片描述

5 Redis中的数据类型
5.1 String类型

基础数据类型。在redis中所有的值都是字符串。在redis中命令不区分大小写。
1、set命令:添加一个key
2、get命令:取一个key
3、Incr命令:加一命令。如果key的值是数值类型可以使用此命令。
127.0.0.1:6379> incr a
(integer) 101
4、decr命令:减一命令
127.0.0.1:6379> decr a
(integer) 100
5、del命令:删除key
127.0.0.1:6379> del a
(integer) 1
127.0.0.1:6379> get a
(nil)

5.2 Hash类型

Key-value(hash)-key-value
|-key-value
|-key-value

命令:
1、Hset命令:添加一个key
Hset key hashkey value
127.0.0.1:6379> hset hash1 a 1
(integer) 1
2、hmset:批量添加key
Hmset key hkey1 value hkey2 value hkey3 value …
127.0.0.1:6379> hmset hash2 a 1 b 2 c 3 d 4
OK
3、hget命令:取一个hash key
127.0.0.1:6379> hget hash1 a
“1”
4、hmget命令:取多个hash key
127.0.0.1:6379> hmget hash2 a b c

“1”
“2”
“3”
4、自增命令:hincrby
127.0.0.1:6379> hmget hash2 a b c
“1”
“2”
“3”
127.0.0.1:6379> hincrby hash2 a 10
(integer) 11

clipboard.png

5.3 List类型

Redis中是链表形式的存储。
可以当做队列使用,也可以当做栈使用。

1、在左边添加元素:lpush
Lpush key value1 value2 value3
127.0.0.1:6379> lpush list1 a b c d e f
(integer) 6
127.0.0.1:6379>
2、右边添加元素:rpush
127.0.0.1:6379> rpush list1 1 2 3 4 5
(integer) 11

在这里插入图片描述3、取最左边元素:lpop,取完列表中此元素删除。
127.0.0.1:6379> lpop list1
“f”
4、取最右元素:rpop
127.0.0.1:6379> rpop list1
“5”
127.0.0.1:6379>
5、查看列表中的元素:lrange
Lrange key 起始下标 结束下标(取全部的结束下标就是-1)
127.0.0.1:6379> lrange list1 0 3

“e”
“d”
“c”
“b”
127.0.0.1:6379> lrange list1 0 -1
“e”
“d”
“c”
“b”
“a”
“1”
“2”
“3”
“4”
127.0.0.1:6379>

5.4 Set类型

特点:集合中的元素是无序的并且没有重复的。
5.4.1 命令

1、向集合中添加元素:sadd
Sadd key value1 value2 value3 …
127.0.0.1:6379> sadd set1 a b c d e
(integer) 5
2、删除元素:srem
Srem key value
127.0.0.1:6379> srem set1 a
(integer) 1
3、查看集合中的元素:smembers
Smembers key
127.0.0.1:6379> smembers set1

“c”
“d”
“b”
“e”
127.0.0.1:6379>

5.4.2 集合的运算

1、差集运算
属于A并且不属于B的元素构成的集合。

clipboard.png

在这里插入图片描述SDIFF key [key …]
127.0.0.1:6379> sadd seta a b c d e
(integer) 5
127.0.0.1:6379> sadd setb c d e f g
(integer) 5
127.0.0.1:6379> sdiff seta setb

“a”
“b”
2、交集运算
属于A且属于B的元素构成的集合。

clipboard.png

在这里插入图片描述SINTER key [key …]
127.0.0.1:6379> sinter seta setb

“c”
“d”
“e”
127.0.0.1:6379>

5.4.3 并集运算

属于A或者属于B的元素构成的集合

clipboard.png

在这里插入图片描述
SUNION key [key …]
127.0.0.1:6379> sunion seta setb

“c”
“d”
“b”
“a”
“f”
“e”
“g”

5.5 SortedSet类型(zset)

特点集合但是是有序的。在此集合中每个元素都有一个分数,可以根据分数升序排列。

5.5.1 命令

1、添加元素命令:zadd
Zadd key 得分 元素 得分 元素 。。。。。
127.0.0.1:6379> zadd zset1 1 a 2 b 3 c 4 d
(integer) 4
2、删除元素:zrem
127.0.0.1:6379> zrem zset1 a
(integer) 1
3、查看计划中的元素:zrange
Zrange key 起始下标 结束下标(-1全部)withscores(带分数)
127.0.0.1:6379> zrange zset1 0 -1

“b”
“c”
“d”
127.0.0.1:6379> zrange zset1 0 -1 withscores
“b”
“2”
“c”
“3”
“d”
“4”
4、降序排列:zrevrange
127.0.0.1:6379> zrevrange zset1 0 -1 withscores
“d”
“4”
“c”
“3”
“b”
“2”

适用于应用排行榜。

6 Keys命令
6.1 可以设置key的有效期。

1、设置有效期:expire
Expire key 生存期(以秒为单位)
127.0.0.1:6379> set a 100
OK
127.0.0.1:6379> expire a 30
(integer) 1
2、查看key的生存期
Ttl key
-1:永久
-2:key不存在
3、持久化keypersist,可以把key持久化保存
127.0.0.1:6379> persist a
(integer) 1

6.2 其他keys命令

Keys命令,可以查看数据库中所有的可以列表。
127.0.0.1:6379> keys *

“list1”
“zset1”
“a”
“hash2”
“key1”
“setb”
“seta”
“list”
“hash1”
“hello”
“set1”

7 Redis的持久化
两种方案:
1、快照形式RDB形式。(默认开启)
2、Aof形式。命令形式存储。(需要手动开启)

Rdb:速度快。丢失数据的概率大。
Aof:默认每秒钟保存一次命令。性能低,可靠性高。最多丢失一秒的数据。

需要在redis.conf中配置。

Rdb:

clipboard.png

在这里插入图片描述
Aof方案:(append only file)

clipboard.png

在这里插入图片描述

两种方案同时开启,使用aof恢复数据。

8 主从复制
只需要修改redis.conf文件就可以。
需要配置两个虚拟机,如果不能实现,至少需要两个数据库实例。

第一步:创建slave服务器的实例。
1、把redis的bin目录复制一份。
2、修改redis.conf文件。修改端口号。

clipboard.png

在这里插入图片描述第二步:配置从服务器,主服务器不需要做任何修改。修改从服务器的redis.conf文件。

clipboard.png

在这里插入图片描述第三步:启动从服务器

9 redis集群
9.1 集群架构图

clipboard.png

在这里插入图片描述
9.2 集群中的槽slot

槽是用来存储key。

clipboard.png

9.3 redis-cluster投票:容错

clipboard.png

在这里插入图片描述
(1)领着投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.
(2):什么时候整个集群不可用(cluster_state:fail)?
a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完成时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.
b:如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.
ps:当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误

9.4 安装步骤

第一步:需要6台虚拟机。至少需要6个redis实例。

clipboard.png

在这里插入图片描述第二步:修改每个实例的端口7001~7006。需要修改redis.conf文件。
第三步:安装ruby环境
安装ruby
yum install ruby
yum install rubygems

安装ruby和redis的接口程序
拷贝redis-3.0.0.gem至/usr/local下
执行:
gem install /usr/local/redis-3.0.0.gem
第四步:在/root/redis-3.0.0/src目录下有一个redis-trib.rb文件就是一个ruby的脚本文件,是用来创建redis集群的脚本文件。把此文件复制到/usr/local/redis-cluster目录下。
第五步:修改每个实例的redis.conf文件。

clipboard.png

在这里插入图片描述第六步:启动每个实例。

clipboard.png

在这里插入图片描述第七步:使用redis-trib.rb脚本创建集群。
./redis-trib.rb create --replicas 1 192.168.25.147:7001 192.168.25.147:7002 192.168.25.147:7003 192.168.25.147:7004 192.168.25.147:7005 192.168.25.147:7006

[root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.147:7001 192.168.25.147:7002 192.168.25.147:7003 192.168.25.147:7004 192.168.25.147:7005 192.168.25.147:7006

        Creating clusterConnecting to node 192.168.25.147:7001: OKConnecting to node 192.168.25.147:7002: OKConnecting to node 192.168.25.147:7003: OKConnecting to node 192.168.25.147:7004: OKConnecting to node 192.168.25.147:7005: OKConnecting to node 192.168.25.147:7006: OKPerforming hash slots allocation on 6 nodes…Using 3 masters:192.168.25.147:7001192.168.25.147:7002192.168.25.147:7003Adding replica 192.168.25.147:7004 to 192.168.25.147:7001Adding replica 192.168.25.147:7005 to 192.168.25.147:7002Adding replica 192.168.25.147:7006 to 192.168.25.147:7003M: a96e224fe9aa5667a908a721c18aeeb78c0e628d 192.168.25.147:7001slots:0-5460 (5461 slots) masterM: 22f03de15a3fd7260f5efa83539a342b94f07032 192.168.25.147:7002slots:5461-10922 (5462 slots) masterM: 75ccb72ea57cce1fbd951117c021d385f126b894 192.168.25.147:7003slots:10923-16383 (5461 slots) masterS: 2525654870fee9fa3a06d96c08f39e5c0912afea 192.168.25.147:7004replicates a96e224fe9aa5667a908a721c18aeeb78c0e628dS: f153fb80c15168d6701d7ef2b5fddaff2f82ffef 192.168.25.147:7005replicates 22f03de15a3fd7260f5efa83539a342b94f07032S: 6d6565162bd0550f29fff20fe52ea6178f748fa1 192.168.25.147:7006replicates 75ccb72ea57cce1fbd951117c021d385f126b894Can I set the above configuration? (type ‘yes’ to accept): yesNodes configuration updatedAssign a different config epoch to each nodeSending CLUSTER MEET messages to join the clusterWaiting for the cluster to join…Performing Cluster Check (using node 192.168.25.147:7001)M: a96e224fe9aa5667a908a721c18aeeb78c0e628d 192.168.25.147:7001slots:0-5460 (5461 slots) masterM: 22f03de15a3fd7260f5efa83539a342b94f07032 192.168.25.147:7002slots:5461-10922 (5462 slots) masterM: 75ccb72ea57cce1fbd951117c021d385f126b894 192.168.25.147:7003slots:10923-16383 (5461 slots) masterM: 2525654870fee9fa3a06d96c08f39e5c0912afea 192.168.25.147:7004slots: (0 slots) masterreplicates a96e224fe9aa5667a908a721c18aeeb78c0e628dM: f153fb80c15168d6701d7ef2b5fddaff2f82ffef 192.168.25.147:7005slots: (0 slots) masterreplicates 22f03de15a3fd7260f5efa83539a342b94f07032M: 6d6565162bd0550f29fff20fe52ea6178f748fa1 192.168.25.147:7006slots: (0 slots) masterreplicates 75ccb72ea57cce1fbd951117c021d385f126b894[OK] All nodes agree about slots configuration.Check for open slots…Check slots coverage…[OK] All 16384 slots covered.[root@localhost redis-cluster]#

9.5 连接集群

9.5.1 使用redis-cli连接集群

redis01/redis-cli -p 7005 -c
连接集群必须添加-c参数。

9.5.2 查看集群信息

192.168.25.147:7003> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:3
cluster_stats_messages_sent:827
cluster_stats_messages_received:827

9.5.3 查看集群节点状态

192.168.25.147:7003> cluster nodes
22f03de15a3fd7260f5efa83539a342b94f07032 192.168.25.147:7002 master - 0 1438330186924 2 connected 5461-10922
6d6565162bd0550f29fff20fe52ea6178f748fa1 192.168.25.147:7006 slave 75ccb72ea57cce1fbd951117c021d385f126b894 0 1438330185914 6 connected
f153fb80c15168d6701d7ef2b5fddaff2f82ffef 192.168.25.147:7005 slave 22f03de15a3fd7260f5efa83539a342b94f07032 0 1438330186420 5 connected
a96e224fe9aa5667a908a721c18aeeb78c0e628d 192.168.25.147:7001 master - 0 1438330188440 1 connected 0-5460
75ccb72ea57cce1fbd951117c021d385f126b894 192.168.25.147:7003 myself,master - 0 0 3 connected 10923-16383
2525654870fee9fa3a06d96c08f39e5c0912afea 192.168.25.147:7004 slave a96e224fe9aa5667a908a721c18aeeb78c0e628d 0 1438330187431 1 connected

9.6 添加节点

9.6.1 第一步:

创建一个新的redis实例,如果文件中存在nodes.conf,需要删除。
9.6.2 第二步:

修改redis.conf文件。修改端口,允许集群。
9.6.3 第三步:

启动服务器
9.6.4 第四步:

使用redis-trib.rb向集群添加节点。
[root@localhost redis-cluster]# ./redis-trib.rb add-node 192.168.25.147:7007 192.168.25.147:7001

        Adding node 192.168.25.147:7007 to cluster 192.168.25.147:7001Connecting to node 192.168.25.147:7001: OKConnecting to node 192.168.25.147:7006: OKConnecting to node 192.168.25.147:7002: OKConnecting to node 192.168.25.147:7003: OKConnecting to node 192.168.25.147:7005: OKConnecting to node 192.168.25.147:7004: OKPerforming Cluster Check (using node 192.168.25.147:7001)M: a96e224fe9aa5667a908a721c18aeeb78c0e628d 192.168.25.147:7001slots:0-5460 (5461 slots) master1 additional replica(s)S: 6d6565162bd0550f29fff20fe52ea6178f748fa1 192.168.25.147:7006slots: (0 slots) slavereplicates 75ccb72ea57cce1fbd951117c021d385f126b894M: 22f03de15a3fd7260f5efa83539a342b94f07032 192.168.25.147:7002slots:5461-10922 (5462 slots) master1 additional replica(s)M: 75ccb72ea57cce1fbd951117c021d385f126b894 192.168.25.147:7003slots:10923-16383 (5461 slots) master1 additional replica(s)S: f153fb80c15168d6701d7ef2b5fddaff2f82ffef 192.168.25.147:7005slots: (0 slots) slavereplicates 22f03de15a3fd7260f5efa83539a342b94f07032S: 2525654870fee9fa3a06d96c08f39e5c0912afea 192.168.25.147:7004slots: (0 slots) slavereplicates a96e224fe9aa5667a908a721c18aeeb78c0e628d[OK] All nodes agree about slots configuration.Check for open slots…Check slots coverage…[OK] All 16384 slots covered.Connecting to node 192.168.25.147:7007: OKSend CLUSTER MEET to node 192.168.25.147:7007 to make it join the cluster.[OK] New node added correctly.

9.6.5 第五步:分配槽。

添加完主节点需要对主节点进行hash槽分配这样该主节才可以存储数据。
redis集群有16384个槽,集群中的每个结点分配自已槽,通过查看集群结点可以看到槽占用情况。

clipboard.png

在这里插入图片描述

给刚添加的7007结点分配槽:

1:连接上集群
./redis-trib.rb reshard 192.168.101.3:7001(连接集群中任意一个可用结点都行)

2:输入要分配的槽数量

clipboard.png

在这里插入图片描述
输入 500表示要分配500个槽

3:输入接收槽的结点id

clipboard.png

在这里插入图片描述这里准备给7007分配槽,通过cluster nodes查看7007结点id为15b809eadae88955e36bcdbb8144f61bbbaf38fb
输入:15b809eadae88955e36bcdbb8144f61bbbaf38fb

4:输入源结点id

clipboard.png

在这里插入图片描述这里输入all

5:输入yes开始移动槽到目标结点id

clipboard.png

在这里插入图片描述
9.6.6 第六步:给7007实例添加一个新的从服务器

1、创建一个新的redis实例
2、配置实例的端口号为7008
3、使用ruby脚本添加从节点。
执行如下命令:
./redis-trib.rb add-node --slave --master-id a66a2d3239122ad51f88fb6d1a0428effc18f98d 192.168.25.147:7008 192.168.25.147:7001

9.7 删除结点:

./redis-trib.rb del-node 127.0.0.1:7005 4b45eb75c8b428fbd77ab979b85080146a9bc017

删除已经占有hash槽的结点会失败,报错如下:
[ERR] Node 127.0.0.1:7005 is not empty! Reshard data away and try again.

需要将该结点占用的hash槽分配出去(参考hash槽重新分配章节)。

作者:kruppwang1
来源:CSDN
原文:https://blog.csdn.net/kruppwa...
版权声明:本文为博主原创文章,转载请附上博文链接!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习实践一 logistic regression regularize

Logistic regression 数据内容: 两个参数 x1 x2 y值 0 或 1 Potting def read_file(file):data pd.read_csv(file, names[exam1, exam2, admitted])data np.array(data)return datadef plot_data(X, y):plt.figure(figsize(6, 4), dpi150)X1 X[y 1, :]X2 X[…

深度学习数据扩张_适用于少量数据的深度学习结构

作者:Gorkem Polat编译:ronghuaiyang导读一些最常用的few shot learning的方案介绍及对比。传统的CNNs (AlexNet, VGG, GoogLeNet, ResNet, DenseNet…)在数据集中每个类样本数量较多的情况下表现良好。不幸的是,当你拥有一个小数据集时&…

基于边缘计算的实时绩效_基于绩效的营销中的三大错误

基于边缘计算的实时绩效We’ve gone through 20% of the 21st century. It’s safe to say digitalization isn’t a new concept anymore. Things are fully or at least mostly online, and they tend to escalate in the digital direction. That’s why it’s important to…

为什么Facebook的API以一个循环作为开头?

作者 | Antony Garand译者 | 无明如果你有在浏览器中查看过发给大公司 API 的请求,你可能会注意到,JSON 前面会有一些奇怪的 JavaScript:为什么他们会用这几个字节来让 JSON 失效?为了保护你的数据 如果没有这些字节,那…

城市轨道交通运营票务管理论文_城市轨道交通运营管理专业就业前景怎么样?中职优选告诉你...

​​城市轨道交通运营管理专业,专业就业前景怎么样?就业方向有哪些?有很多同学都感觉很迷忙,为了让更多的同学们了解城市轨道交通运营管理专业的就业前景与就业方向,整理出以下内容希望可以帮助同学们。城市轨道交通运…

计算机视觉对扫描文件分类 OCR

通过计算机视觉对扫描文件分类 一种解决扫描文档分类问题的深度学习方法 在数字经济时代, 银行、保险、治理、医疗、法律等部门仍在处理各种手写票据和扫描文件。在业务生命周期的后期, 手动维护和分类这些文档变得非常繁琐。 对这些非机密文档进行简…

笑话生成器_爸爸笑话发生器

笑话生成器(If you’re just here for the generated jokes, scroll down to the bottom!)(如果您只是在这里生成笑话,请向下滚动到底部!) I thought: what is super easy to build, yet would still get an approving chuckle if someone found it on …

机器学习实践二 -多分类和神经网络

本次练习的任务是使用逻辑归回和神经网络进行识别手写数字(form 0 to 9, 自动手写数字问题已经应用非常广泛,比如邮编识别。 使用逻辑回归进行多分类分类 练习2 中的logistic 回归实现了二分类分类问题,现在将进行多分类,one vs…

Hadoop 倒排索引

倒排索引是文档检索系统中最常用的数据结构,被广泛地应用于全文搜索引擎。它主要是用来存储某个单词(或词组)在一个文档或一组文档中存储位置的映射,即提供了一种根据内容来查找文档的方式。由于不是根据文档来确定文档所包含的内…

koa2异常处理_读 koa2 源码后的一些思考与实践

koa2的特点优势什么是 koa2Nodejs官方api支持的都是callback形式的异步编程模型。问题:callback嵌套问题koa2 是由 Express原班人马打造的,是现在比较流行的基于Node.js平台的web开发框架,Koa 把 Express 中内置的 router、view 等功能都移除…

上凸包和下凸包_使用凸包聚类

上凸包和下凸包I recently came across the article titled High-dimensional data clustering by using local affine/convex hulls by HakanCevikalp in Pattern Recognition Letters. It proposes a novel algorithm to cluster high-dimensional data using local affine/c…

幸运三角形 南阳acm491(dfs)

幸运三角形 时间限制:1000 ms | 内存限制:65535 KB 难度:3描述话说有这么一个图形,只有两种符号组成(‘’或者‘-’),图形的最上层有n个符号,往下个数依次减一,形成倒置…

决策树有框架吗_决策框架

决策树有框架吗In a previous post, I mentioned that thinking exhaustively is exhausting! Volatility and uncertainty are ever present and must be factored into our decision making — yet, we often don’t have the time or data to properly account for it.在上一…

8 一点就消失_消失的莉莉安(26)

文|明鸢Hi,中午好,我是暖叔今天是免费连载《消失的莉莉安》第26章消失的莉莉安▶▶往期链接:▼ 向下滑动阅读1:“消失的莉莉安(1)”2: 消失的莉莉安(2)3:“消失的莉莉安(3)”4:“消失的莉莉安…

mysql那本书适合初学者_3本书适合初学者

mysql那本书适合初学者为什么要书籍? (Why Books?) The internet is a treasure-trove of information on a variety of topics. Whether you want to learn guitar through Youtube videos or how to change a tire when you are stuck on the side of the road, …

语音对话系统的设计要点与多轮对话的重要性

这是阿拉灯神丁Vicky的第 008 篇文章就从最近短视频平台的大妈与机器人快宝的聊天说起吧。某银行内,一位阿姨因等待办理业务的时间太长,与快宝机器人展开了一场来自灵魂的对话。对于银行工作人员的不满,大妈向快宝说道:“你们的工…

c读取txt文件内容并建立一个链表_C++链表实现学生信息管理系统

可以增删查改&#xff0c;使用链表存储&#xff0c;支持排序以及文件存储及数据读取&#xff0c;基本可以应付期末大作业&#xff08;狗头&#xff09; 界面为源代码为一个main.cpp和三个头文件&#xff0c;具体为 main.cpp#include <iostream> #include <fstream>…

阎焱多少身价_2020年,数据科学家的身价是多少?

阎焱多少身价Photo by Christine Roy on Unsplash克里斯汀罗伊 ( Christine Roy) 摄于Unsplash Although we find ourselves in unprecedented times of uncertainty, current events have shown just how valuable the fields of Data Science and Computer Science truly are…

单据打印_Excel多功能进销存套表,自动库存单据,查询打印一键操作

Hello大家好&#xff0c;我是帮帮。今天跟大家分享一张Excel多功能进销存管理套表&#xff0c;自动库存&#xff0c;单据打印&#xff0c;查询统算一键操作。为了让大家能更稳定的下载模板&#xff0c;我们又开通了全新下载方式(见文章末尾)&#xff0c;以便大家可以轻松获得免…

卡尔曼滤波滤波方程_了解卡尔曼滤波器及其方程

卡尔曼滤波滤波方程Before getting into what a Kalman filter is or what it does, let’s first do an exercise. Open the google maps application on your phone and check your device’s current location.在了解什么是卡尔曼滤波器或其功能之前&#xff0c;我们先做一个…