18.1 集群介绍

  • 根据功能划分为两大类:高可用和负载均衡

  • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务

  • 实现高可用的开源软件有:heartbeat、keepalived

  • 负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务器处理,在这个集群里,除了分发器外,就是给用户提供服务的服务器了,这些服务器数量至少为2

  • 实现负载均衡的开源软件有 LVS、keepalived、haproxy、nginx,商业的有 F5、Netscaler

18.2 keepalived介绍

  • 在这里我们使用 keepalived 来实现高可用集群,因为 heartbeat 在 centos6 上有一些问题,影响实验效果

  • keepalived通过 VRRP(Virtual Router Redundancy Protocl)来实现高可用。

  • 在这个协议里会将多台功能相同的路由器组成一个小组,这个小组里会有1个 master 角色和N(N>=1)个backup角色。

  • master 会通过组播的形式向各个 backup 发送 VRRP 协议的数据包,当 backup 收不到master 发来的 VRRP 数据包时,就会认为 master 宕机了。此时就需要根据各个 backup 的优先级来决定谁成为新的 mater。

  • Keepalived 要有三个模块,分别是 core、check 和 vrrp。其中 core 模块为 keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析,check 模块负责健康检查,vrrp 模块是来实现 VRRP 协议的。

18.3/18.4/18.5 用keepalived配置高可用集群

1、准备两台机器 130 和 132,130 为 master,132 为 backup

2、两台机器都安装 keepalived

[root@arslinux-01 ~]# yum install -y keepalived
[root@arslinux-02 ~]# yum install -y keepalived

3、两台机器都需要安装 nginx,130 之前已经编译安装过,132 需要 yum 安装

[root@arslinux-02 ~]# yum install -y nginx

4、重新编辑主上的 /etc/keepalived/keepalived.conf

[root@arslinux-01 ~]# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@arslinux-02 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
arslinux@arslinux.com
}
notification_email_from root@arslinux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux>com
}
virtual_ipaddress {
192.168.194.100
}
track_script {
chk_nginx
}
}

参考链接:http://note.youdao.com/noteshare?id=196f3a77c4d99a8c21286d50704690b9&sub=EEAC512A00D54B3B98BFCB6E0B67DE26


notification_email     有问题,发邮件给哪个邮箱,可以不定义

notification_email_from     有问题用哪个邮箱发邮件,可以不定义

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL     都可以不定义

vrrp_script chk_nginx     检测服务是否正常 interval 3 检测间断为3秒

vrrp_instance VI_1     master相关的配置

state     角色是master,如果是从的话就是 backup

interface     发送广播使用的网卡

virtual_router_id     路由id

priority 100     权重

authentication     认证相关信息

auth_type PASS 认证类型,密码形式

auth_pass 密码,定义一个字符串

virtual_ipaddress 主从共有ip,也就是vip,主宕机,从解析到该ip上去,两个主机都194段

track_script 加载脚本,之前定义的chk_nginx检查nginx


5、编辑检查 nginx 是否正常的脚本

[root@arslinux-01 ~]# vim /usr/local/sbin/check_ng.sh
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
/etc/init.d/nginx start
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0"  ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi

执行ps -C nginx --no-heading|wc -l命令计算nginx进程数,如果进程数等于0,则说明nginx服务没有启动,那么需要启动nginx服务,启动之后再查看进程数值,如果还是0,说明nginx依然没有启动,那么需要写一个日期的错误提示到日志里,方便排查问题。之后停止keepalived,主keepalived一停,从就会自动起来服务,以免主从都有keepalived启动,产生紊乱,脑裂。

参考链接:https://note.youdao.com/ynoteshare1/index.html?id=17b7d082afd8d31b4fd5c48b5f93bcc1&type=note

6、给 /usr/local/sbin/check_ng.sh 更改权限 755

[root@arslinux-01 ~]# chmod 755 /usr/local/sbin/check_ng.sh

7、启动 keepalived

[root@arslinux-01 ~]# systemctl start keepalived
[root@arslinux-01 ~]# ps aux|grep keepalived
root       8138  0.0  0.1 122980  1412 ?        Ss   22:43   0:00 /usr/sbin/keepalived -D
root       8139  0.0  0.3 133940  3328 ?        S    22:43   0:00 /usr/sbin/keepalived -D
root       8140  0.1  0.2 133880  2860 ?        S    22:43   0:00 /usr/sbin/keepalived -D
root       8174  0.0  0.0 112724   992 pts/0    R+   22:43   0:00 grep --color=auto keepalived

8、查看 nginx 是否会自动加载

[root@arslinux-01 ~]# ps aux|grep nginx
root       7988  0.0  0.1  46052  1292 ?        Ss   21:48   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody     7989  0.0  0.3  48540  3932 ?        S    21:48   0:00 nginx: worker process
nobody     7990  0.0  0.3  48540  3932 ?        S    21:48   0:00 nginx: worker process
root       8357  0.0  0.0 112724   988 pts/0    R+   22:45   0:00 grep --color=auto nginx
[root@arslinux-01 ~]# /etc/init.d/nginx stop
Stopping nginx (via systemctl):                            [  确定  ]
[root@arslinux-01 ~]# ps aux|grep nginx
root       8395  0.0  0.0 112724   984 pts/0    S+   22:45   0:00 grep --color=auto nginx
[root@arslinux-01 ~]# ps aux|grep nginx
root       8417  0.0  0.1  46052  1296 ?        Ss   22:45   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody     8421  0.0  0.3  48540  3932 ?        S    22:45   0:00 nginx: worker process
nobody     8422  0.0  0.3  48540  3932 ?        S    22:45   0:00 nginx: worker process
root       8466  0.0  0.0 112724   988 pts/0    R+   22:46   0:00 grep --color=auto nginx

9、https://blog.51cto.com/11530642/2096227

10、日志都在 /var/log/messages 下

11、vip 不能用 ipconfig 查看,只能用 ip add 看到

[root@arslinux-01 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:24:ea:f2 brd ff:ff:ff:ff:ff:ff
inet 192.168.194.130/24 brd 192.168.194.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.194.100/32 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.194.150/24 brd 192.168.194.255 scope global secondary noprefixroute ens33:0
valid_lft forever preferred_lft forever
inet6 fe80::c905:5e78:b916:41da/64 scope link noprefixroute
valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:24:ea:fc brd ff:ff:ff:ff:ff:ff
inet 192.168.100.1/24 brd 192.168.100.255 scope global noprefixroute ens37
valid_lft forever preferred_lft forever
inet6 fe80::f41:9da7:d8e3:10ba/64 scope link noprefixroute
valid_lft forever preferred_lft forever

12、配置之前,一定要检查防火墙主从 iptables 和 getenforce 是否关闭

13、编辑从上的配置文件 /etc/keepalived/keepalived.conf

[root@arslinux-02 ~]# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@arslinux-02 ~]# vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
aming@aminglinux.com
}
notification_email_from root@aminglinux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux>com
}
virtual_ipaddress {
192.168.194.100
}
track_script {
chk_nginx
}
}

参考链接:https://note.youdao.com/ynoteshare1/index.html?id=b12b72e89f72aca6896e4f250f7b4ce2&type=note


state         为BACKUP

virtual_router_id,vip     都和主一致

priority         主是100,从是90,要低于主


14、编辑检查 nginx 是否正常的脚本

[root@arslinux-02 ~]# vim /usr/local/sbin/check_ng.sh
#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
systemctl start nginx
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0"  ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi

如果nginx是yum 安装的,可以用systemctl start nginx为启动命令

参考链接:http://note.youdao.com/noteshare?id=abf23beadd51b4ec2a510b5e395f9d46&sub=C046236E7A14453FADEF8DADDD81C840

15、给 /usr/local/sbin/check_ng.sh 更改权限 755

[root@arslinux-02 ~]# chmod 755 /usr/local/sbin/check_ng.sh

16、启动 keepalived

[root@arslinux-02 ~]# systemctl start keepalived
[root@arslinux-02 ~]# ps aux|grep keepalived
root       7836  0.0  0.1 122876  1412 ?        Ss   23:14   0:00 /usr/sbin/keepalived -D
root       7837  0.0  0.3 133836  3340 ?        S    23:14   0:00 /usr/sbin/keepalived -D
root       7838  0.0  0.2 133776  2872 ?        S    23:14   0:00 /usr/sbin/keepalived -D
root       7878  0.0  0.0 112724   992 pts/0    S+   23:14   0:00 grep --color=auto keepalived

17、检查从上的 nginx 是否启动

[root@arslinux-02 ~]# ps aux|grep nginx
root       7813  0.0  0.2 125004  2108 ?        Ss   23:11   0:00 nginx: master process /usr/sbin/nginx
nginx      7814  0.0  0.3 125392  3148 ?        S    23:11   0:00 nginx: worker process
root       7976  0.0  0.0 112724   984 pts/0    R+   23:15   0:00 grep --color=auto nginx

18、浏览器访问主

此时访问的是主的默认虚拟服务器,在 nginx 中定义

19、从上的默认页在 /usr/share/nginx/html/index.html ,将默认页改为 backup,backup

[root@arslinux-02 ~]# cat /usr/share/nginx/html/index.html
backup,backup

20、浏览器访问从

21、ip add 查看从上 ip

[root@arslinux-02 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:14:4f:d9 brd ff:ff:ff:ff:ff:ff
inet 192.168.194.132/24 brd 192.168.194.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::4c99:ed43:5757:e772/64 scope link noprefixroute
valid_lft forever preferred_lft forever

22、浏览器访问 vip 192.168.194.100,实际上就是 master,vip 在 master 上

23、测试高可用

测试1:关闭 主上 nginx,会重新启动,因为 keepalived

测试2:增加规则:iptables -I OUTPUT -p vrrp -j DROP,从上出现出现了 vip ,但 主上 vip 依然没有释放

访问 vip,依然是主上的默认虚拟服务器

测试3:停止主上的 keepalived,主上的 vip 被释放了

此时访问 vip 则是 从上的默认虚拟服务器

测试4:重启主上的 keepalived,访问 vip,马上回到了主上的默认虚拟服务器

24、mysql 也可以弄高可用,但是要确保两边数据一致

18.6 负载均衡集群介绍

  • 主流开源软件 LVS、keepalived、haproxy、nginx等

  • 其中LVS 属于4层(网络OSI 7层模型),nginx 属于7层,haproxy 既可以认为是4层,也可以当做7层使用

  • keepalived 的负载均衡功能其实就是 lvs

  • lvs 这种4层的负载均衡是可以分发除80外的其他端口通信的,比如 MySQL 的,而 nginx 仅仅支持 http,https,mail,haproxy 也支持MySQL这种

  • 相比较来说,LVS 这种4层的更稳定,能承受更多的请求,而 nginx 这种7层的更加灵活,能实现更多的个性化需求

18.7 LVS介绍

  • LVS 是由国人章文嵩开发

  • 流行度不亚于 apache 的 httpd,基于 TCP/IP 做的路由和转发,稳定性和效率很高

  • LVS 最新版本基于 Linux 内核2.6,有好多年不更新了

  • LVS 有三种常见的模式:NAT、DR、IP Tunnel

  • LVS 架构中有一个核心角色叫做分发器(Load balance),它用来分发用户的请求,还有诸多处理用户请求的服务器(Real Server,简称 rs)

LVS NAT模式(10台以下)

  • 这种模式借助 iptables 的 nat 表来实现

  • 用户的请求到分发器后,通过预设的 iptables 规则,把请求的数据包转发到后端的 rs 上去

  • rs 需要设定网关为分发器的内网 ip

  • 用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈

  • 在 nat 模式中,只需要分发器有公网 ip 即可,所以比较节省公网 ip 资源

LVS IP Tunnel模式

  • 这种模式,需要有一个公共的 IP 配置在分发器和所有rs上,我们把它叫做 vip

  • 客户端请求的目标 IP 为 vip,分发器接收到请求数据包后,会对数据包做一个加工,会把目标 IP 改为 rs 的 IP,这样数据包就到了 rs 上

  • rs 接收数据包后,会还原原始数据包,这样目标 IP 为 vip,因为所有 rs 上配置了这个 vip,所以它会认为是它自己

  • 结果反馈给客户端

NAT 就是 iptables 转发,IP Tunnel 把模板 ip 做更改

LVS DR模式

  • 这种模式,也需要有一个公共的 IP 配置在分发器和所有 rs 上,也就是 vip

  • 和IP Tunnel 不同的是,它会把数据包的 MAC 地址修改为 rs 的 MAC 地址

  • rs接收数据包后,会还原原始数据包,这样目标 IP 为 vip ,因为所有 rs 上配置了这个 vip,所以它会认为是它自己

  • 结果反馈给客户端

18.8 LVS调度算法

  • 轮询 Round-Robin  rr

  • 加权轮询 Weight Round-Robin wrr

  • 最小连接 Least-Connection lc

  • 加权最小连接 Weight Least-Connection wlc

  • 基于局部性的最小连接 Locality-Based Least Connections lblc

  • 带复制的基于局部性最小连接 Locality-Based Least Connections with Replication  lblcr

  • 目标地址散列调度 Destination Hashing dh

  • 源地址散列调度 Source Hashing  sh

18.9/18.10 LVS NAT模式搭建

准备工作

1、准备三台机器

分发器,简称 dir 192.168.194.130

rs1 192.168.194.132

rs2 192.168.194.133

2、给分发器添加一块网卡

ens37:192.168.174.100,本地 windows 上能 ping 通

3、三台机器上全部关闭 firewalld

4、三台机器安装 iptables-services,保存空规则

[root@arslinux-02 ~]# yum install -y iptables-services

[root@arslinux-02 ~]# systemctl start iptables

[root@arslinux-02 ~]# systemctl enable iptables

[root@arslinux-02 ~]# iptables -F

[root@arslinux-02 ~]# service iptables save

5、关闭selinux,编辑 /etc/selinux/config,状态改为 disable

6、将 rs1 和 rs2 的网关设置为分发器的 ip 地址 192.168.194.130

搭建工作

1、在 dir 上安装 ipvsadm

[root@arslinux-01 ~]# yum install -y ipvsadm

2、主上写脚本 /usr/local/sbin/lvs_nat.sh

[root@arslinux-01 ~]# vim /usr/local/sbin/lvs_nat.sh
#! /bin/bash
# director 服务器上开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭icmp的重定向
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
# 注意区分网卡名字,阿铭的两个网卡分别为ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/ens37/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.194.0/24  -j MASQUERADE
# director设置ipvsadm
IPVSADM='/usr/sbin/ipvsadm'
$IPVSADM -C
$IPVSADM -A -t 192.168.174.100:80 -s lc -p 3
$IPVSADM -a -t 192.168.174.100:80 -r 192.168.194.132:80 -m -w 1
$IPVSADM -a -t 192.168.174.100:80 -r 192.168.194.133:80 -m -w 1

3、测试

确保 rs1 和 rs2 上 nginx 都已经启动,并已监听 80端口

rs1 上

[root@arslinux-02 ~]# curl localhost
backup,backup

rs2 上

rs2 上的默认页要和 rs1 上区分开,先编辑默认页,再 curl

[root@arslinux-03 ~]# mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.bak
[root@arslinux-03 ~]# vim /usr/share/nginx/html/index.html
backup2,backup2
[root@arslinux-03 ~]# curl localhost
backup2,backup2

访问 192.168.174.100

4、ipvsadm的规则:

[root@arslinux-01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.174.174:80 wlc persistent 3
-> 192.168.65.132:80            Masq    1      0          0
-> 192.168.65.133:80            Masq    1      0          1

5、可能连续几次访问该ip结果都是RS2,也许是缓存的原因

可以把lvs_nat.sh的IPVSADM规则第一条改为:轮询

$IPVSADM -A -t 192.168.174.100:80 -s rr

6、重新sh一下

[root@arslinux-01 ~]# sh /usr/local/sbin/lvs_nat.sh

7、用curl来连外网ip,看看结果

[root@arslinux-01 ~]# curl 192.168.174.100
backup2,backup2
[root@arslinux-01 ~]# curl 192.168.174.100
backup,backup
[root@arslinux-01 ~]# curl 192.168.174.100
backup2,backup2
[root@arslinux-01 ~]# curl 192.168.174.100
backup,backup
[root@arslinux-01 ~]# curl 192.168.174.100
backup2,backup2
[root@arslinux-01 ~]# curl 192.168.174.100
backup,backup
[root@arslinux-01 ~]# curl 192.168.174.100
backup2,backup2
[root@arslinux-01 ~]# curl 192.168.174.100
backup,backup

访问还是非常平均的,这是 rr 起作用了

实验成功!


课堂笔记

1、集群以及分类

高可用、负载均衡、分布式

2、高可用架构的意义

保证服务长久可用,稳定性,双机热备

3、Keepalived 的实现原理

VRRP协议 虚拟路由协议

A 工作中,B C 探测 A 是否正常工作,A 出现问题,会从 B/C 中根据权重选一个顶上

https://blog.csdn.net/u013920085/article/details/21184143

4、LVS 三种模式图解

https://blog.51cto.com/jiekeyang/1839583

5、fullnat 模式

https://ieevee.com/tech/2015/12/08/fullnat.html

lvs四种集群有点及使用场景

https://www.jianshu.com/p/ce7ba9dfe103

转载于:https://blog.51cto.com/11530642/2405243

0604课的预习任务 + 课堂笔记相关推荐

  1. 0521课的预习任务 + 课堂笔记

    13.1 设置更改root密码 默认 mysql 密码为空,但不安全,因此需要设置密码 启动 mysql 服务 [root@arslinux-01 ~]# ps aux|grep mysqld [ro ...

  2. 0606课的预习任务 + 课堂笔记

    18.11 LVS DR模式搭建 生产环境中 DR 模式使用比较多,IP tunnel 模式比较少,NAT 模式也不多 试验环境: 分发器:192.168.194.130 rs1 :192.168.1 ...

  3. 潭州课堂25班:Ph201805201 爬虫基础 第十五课 js破解 二 (课堂笔记)

    PyExecJs使用 PyExecJS是Ruby的ExecJS移植到Python的一个执行JS代码的库. 安装 pip install PyExecJS 例子 >>> import ...

  4. 潭州课堂25班:Ph201805201 第十四课 异常,处理 (课堂笔记)

    程序难免会出现错误 : 语法错误 : 逻辑错误: AttributeError  -->>  试图访问一个对象没有的属性, IOError  ---->>  输入输出异常 In ...

  5. 潭州课堂25班:Ph201805201 django 项目 第三十二课 后台站点管理(课堂笔记)

    一.后台站点模版抽取 1.获取静态站点模版 可以使用git clone到本地 git clone https://github.com/almasaeed2010/AdminLTE.git 也可以在g ...

  6. 潭州课堂25班:Ph201805201 第七课:控制流程 (课堂笔记)

    # 条件判断 s = '储蓄卡' if s == '男': # 如果if 表达式成立 ,则执行下级语句 print('男性') elif s == '女': # 如果上面表达式不成立,执行本次判断,本 ...

  7. 如何把微课应用到计算机课堂,浅谈微课在信息技术课堂中的应用

    浅谈微课在信息技术课堂中的应用 溧阳市横涧小学 夏春芳 计算机的发展有两个趋势,巨型化和微型化,"巨型化"指计算机的功能和容量正越来越强大,"微型化"指计算机的 ...

  8. 0611课的预习任务 + 0612课堂笔记

    5.1~5.9 监控 Linux 系统状态 监控 CPU 的命令 w 查看系统负载 [root@arslinux-01 ~]# w 20:13:49 up 1 min, 1 user, load av ...

  9. AI公开课:19.05.16漆远-蚂蚁金服集团CF《金融智能的深度与温度》课堂笔记以及个人感悟—191017再次更新

    AI公开课:19.05.16漆远-蚂蚁金服集团CF<金融智能的深度与温度>课堂笔记以及个人感悟-191017再次更新 导读         漆远,麻省理工学院博士后,39岁被评为美国普渡大 ...

最新文章

  1. 动手实现Kotlin协程同步切换线程,以及Kotlin协程是如何实现线程切换的
  2. 3DSlicer14:Loadable Module
  3. boost::fibers模块实现适配方法调用的测试程序
  4. java黄油刀_一篇文章玩转ButterKnife,让代码更简洁
  5. Java里面的静态代码块
  6. 完爆 Best Fit,看阿里如何优化 Sigma 在线调度策略节约亿级成本
  7. VueJS项目报错解决:router.map is not a function - 方法大全
  8. 【Selenium 爬爬 猪 八 戒】
  9. SpringBoot2.1.5 (21)---使用 devtools 热部署
  10. 最大回撤,最大回撤恢复时间与最大回撤持续期
  11. STL的算法补充笔记-1
  12. 云计算vs雾计算:物联网的发展能否「云开雾散」?
  13. ubuntu 安装 wkhtmltopdf 的方法
  14. 程序员进阶之路的10本必读书目
  15. w ndows系统启动日志ID,查看windows系统日志方法
  16. Python 实现生命游戏
  17. Python3.x 标准模块库目录(下篇)
  18. 选中exchange缓存模式后 GAL不会更新
  19. 计算机创建只读用户,如何把电脑的文件夹在局域网共享成只读,别人不能删除和修改?...
  20. 远程桌面连接:提示出现身份验证错误,要求的函数不受支持。这可能是由于CredSSP加密数据库修正错误。

热门文章

  1. win7开启和关闭休眠的方法
  2. windows系统下批量删除MacOS系统产生的垃圾文件
  3. Linux驱动---Makefile
  4. 万字长文揭秘:阿里如何实现海量数据实时分析?
  5. SSM整合之企业级后台管理系统(18) - 上传头像前端部分
  6. 电脑桌面不显示任何东西
  7. CodeIgniter源码解读
  8. ARM2440触摸屏编程(裸机编程)
  9. html左右超出显示滚动条,div内容宽度超出边界后怎样设置为左右滑动,而且不显示滚动条?...
  10. c++如何以回车作为循环结束的标志