Fate部署实战——从零开始实现Fate cluster部署,代码设计思路 示例

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

  • 6 测试

    • 6.1 Toy_example部署验证
    • 6.1.1 单边测试
  • 6.1.2 双边测试

  • 6.2 最小化测试

    • **6.2.1 上传预设数据:**
  • **6.2.2 快速模式:**

  • **6.2.3 正常模式**:

  • 6.3 Fateboard testing

  • 7 系统运维

    • 7.1 服务管理
    • 7.1.1 服务管理
  • 7.2 查看进程和端口

    • 7.2.1 查看进程
  • 7.2.2 查看进程端口

  • 7.2.3 服务日志

    • 7.2.4 文件目录说明
  • 8. 卸载

        • 8.1 概述
  • 8.2 执行卸载

摘要

=============================================================

这篇文章是我对Fate cluster部署方式的总结。从零开始,一步一步实现Fate cluster的部署,如果有不对的地方请给我留言。PDF版本我上传到CSDN了,有需要的可以下载,地址:

https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/21314477

1 总体介绍

=================================================================

1.1.系统介绍


1)FATE

FATE (Federated AI Technology Enabler) 是微众银行AI部门发起的开源项目,

提供了一种基于数据隐私保护的安全计算框架,为机器学习、深度学习、迁移学习算法提供强有力的安全计算支持。

安全底层支持同态加密、秘密共享、哈希散列等多种多方安全计算机制,算法层支持多方安全计算模式下的逻辑回归、Boosting、联邦迁移学习等。

2)EggRoll

Eggroll 是一个适用于机器学习和深度学习的大规模分布式架构,包括了计算、存储和通信等模块。为FATE框架提供底层支撑。

3)FATE官方网站:https://fate.fedai.org/

本文将介绍使用ansible部署脚本进行FATE集群的部署。

1.2.组件说明


| 软件产品 | 组件 | 端口 | 说明 |

| — | — | — | — |

| fate | fate_flow | 9360;9380 | 联合学习任务流水线管理模块 |

| fate | fateboard | 8080 | 联合学习过程可视化模块 |

| fate | FederatedML | | 算法代码包 |

| eggroll | clustermanager | 4670 | cluster manager管理集群 |

| eggroll | nodemanger | 4671 | node manager管理每台机器资源 |

| eggroll | rollsite | 9370 | 跨站点或者跨party通讯组件 |

| mysql | mysql | 3306 | 数据存储,clustermanager和fateflow依赖 |

1.3.系统架构


2 详细设计

=================================================================

2.1.部署规划


本示例是每端只有一台主机,每端可以多台主机,目前只支持nodemanager多节点部署,其他组件都是单节点。

| role | partyid | IP地址 | 操作系统 | 主机配置 | 存储 | 部署模块 |

| — | — | — | — | — | — | — |

| host | 10000 | 192.168.65.161 (有外网) | CentOS 7.2/Ubuntu 18.04 | 8C16G | 500G | fate_flow,fateboard,clustermanager,nodemanger,rollsite,mysql |

| guest | 9999 | 192.168.65.162 | CentOS 7.2/Ubuntu 18.04 | 8C16G | 500G | fate_flow,fateboard,clustermanager,nodemanger,rollsite,mysql |

2.2.主机资源和操作系统要求


| 类别 | 说明 |

| — | — |

| 主机配置 | 不低于8C16G500G,千兆网卡 |

| 操作系统 | CentOS linux 7.2及以上同时低于8/Ubuntu 18.04 |

| 依赖包 | 需要安装如下依赖包:

#centos

gcc gcc-c++ make openssl-devel gmp-devel mpfr-devel libmpc-devel libaio

numactl autoconf automake libtool libffi-devel ansible

#ubuntu

gcc g++ make openssl ansible libgmp-dev libmpfr-dev libmpc-dev

libaio1 libaio-dev numactl autoconf automake libtool libffi-dev

cd /usr/lib/x86_64-linux-gnu

if [ ! -f “libssl.so.10” ];then

ln -s libssl.so.1.0.0 libssl.so.10

ln -s libcrypto.so.1.0.0 libcrypto.so.10

fi |

| 用户 | 用户:app,属主:apps(app用户需可以sudo su root而无需密码) |

| 文件系统 | 1、数据盘挂载在/data目录下。

2、创建/data/projects目录,目录属主为:app:apps。

3、根目录空闲空间不低于20G。 |

| 虚拟内存 | 不低于128G |

| 系统参数 | 1、文件句柄数不低于65535。

2、用户进程数不低于65535。 |

2.3.网络要求


| 类别 | 说明 |

| — | — |

| 防火墙策略 | 1、如果通过公网互通,两端rollsite所部署主机需互相开通出和入防火墙策略。

2、防火墙设备需要支持长连接和需要对连接数无限制。 |

| 外网带宽 | 入通过公网互通,公网带宽不低于20Mb |

| 负载均衡设备 | 1、如果出或入口有负载均衡设备则此设备需要支持grpc或者支持透明转发。

2、fate为双向通讯,需支持出和入方向主动请求。 |

3 搭建虚拟环境

===================================================================

3.1 硬件要求


准备一台至少12核CPU、24G内存、1T硬盘(最好SSD)和一个不低于10MB能上互联网的网络。(最好能满足上面的条件,要不然即使安装的没有问题,也可能跑不起来)。

3.2 软件


Xshell 、VMware Workstation 16 Pro,这两款软件的下载地址: https://pan.baidu.com/s/1j6j4n4TMlxxvtSFb-r_G5A 提取码:52bv

Centos,下载地址:http://vault.centos.org/7.5.1804/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso

3.3 安装 VMWare虚拟机安装


从我给的网盘地址将VMWare软件下载下来安装即可,自行激活,如果有问题问度娘。

安装完成后,点击“编辑→虚拟网络编辑器”,如下图:

img

查找网关

img

选择VMnet8,然后点击NAT设置。

img

在这里找到网关:192.168.65.2 记住这个网关,后面配置网络的时候要用到。

3.4 CentOS安装


打开vwmare软件,点击创建新的虚拟机

img

选择“典型(推荐)“,然后选择”下一步“。

img

选择“下一步“

img

如下图,选择“Linux“、”Centos7 64位“、然后选择”下一步“

img

给虚拟机命名,第一台命名为“fate01”,第二台虚拟机命名为“fate02”。

然后选择安装路径,安装在空间较大的盘符。然后选择“下一步”

img

最大磁盘大小设置为“500G”,选择“将磁盘拆分成多个文件”,然后选择“下一步”.

img

选择“自定义硬件”,如下图:

img

然后设置内存为8G,处理器数量设置为1,每个处理器的内核数量设置为4,在“新CD/DCD(IDE)”选项中设置“CentOS-7-x86_64-DVD-1804.iso”文件的路径,完成上面的设置后选择关闭。

imgimg

img

然后我们就能看到虚拟机的配置,如果没有问题,则选择”完成”,等待虚拟机安装结束。

img

出现下图则说明安装完成,选择“开启此虚拟机”,你就可以看到Centos7的安装页面。

img

选择“Install CentOS 7”,然后按“Enter”键。

img

出下面如下画面,选择“中文”,在右侧选择“简体中文(中国)”,然后选择“继续”。

img

选择“键盘”,点击“+”,选择“英语(英国)”,然后点击“添加”,再选择“完成”。

img

img

img

接下来,点击“软件选择”。在左侧选择“最小安装”,在右侧选择“调试工具”和”系统管理工具”。然后选择“完成”。

img

img

设置“安装位置”,然后选择“我要配置分区”,选择“完成”。

img

img

然后出现如下画面,选择“点这里自动创建他们”

img

选择“home”,设置期望容量为100GiB,然后点击“+”

img

添加新的挂载点“/data”,容量为“341.12GiB”,然后点击“添加挂载点”。

img

然后点击“完成”,选择“接受更改”

img

img

点击“网路和主机名”

img

以太网,选择“打开”,设置主机名为“fate01”,点击“应用”,然后选择“配置”。

img

点击“IPv4设置”,方法设置为“手动”,点击“Add”,增加IP地址,如下图,ip地址为“192.168.65.161”,另一台的ip地址设置为192.168.65.162,子网掩码和网关相同都,分别设置为“24”和“192.168.65.2”(这个网关我们在前面提到过)。DNS服务器设置为“192.168.65.2”,勾选“需要IPv4地址完成这个连接”。

img

点击”IPv6设置”,方法选择“忽略”。然后选择“保存”。

img

然后观察IP设置是否正确,如果没有问题则选择“完成”。

img

完成上面的设置后,选择“开始安装”。然后设置root密码。

img

将密码设置为“123456”,然后点击“完成”,等待安装完成。

img

安装完成后,点击“重启”。

img

重启之后,出现如下画面,输入“root”,密码“123456”登录root账户。

img

另一台虚拟机的安装步骤和第一台一样只是名字是“fate02”,IP地址为“192.168.65.162”。

安装完成后,安装Xshell,用Xshell登录。个人认为用xshell执行命令方便一些。

4 虚拟环境配置

===================================================================

4.1 hostname配置


1)修改主机名

在192.168.65.161 root用户下执行:

hostnamectl set-hostname VM_0_1_centos

在192.168.65.162 root用户下执行:

hostnamectl set-hostname VM_0_2_centos

2)加入主机映射

在目标服务器(192.168.65.161 192.168.65.162)root用户下执行:

vi /etc/hosts

添加内容

192.168.0.1 VM_0_1_centos

192.168.0.2 VM_0_2_centos

img

添加完成后,执行"su root"命令重新登录。

4.2 关闭selinux


在目标服务器(192.168.65.161 192.168.65.162)root用户下执行:

确认是否已安装selinux

centos系统执行:rpm -qa | grep selinux

ubuntu系统执行:apt list --installed | grep selinux

如果已安装了selinux就执行:setenforce 0

img

4.3 配置yum仓库


在目标服务器(192.168.65.161 192.168.65.162)root用户下执行:

1)备份CentOS-Base.repo文件

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

img

2)修改yum仓库配置

vi /etc/yum.repos.d/CentOS-Base.repo

添加内容:

CentOS-Base.repo

The mirror system uses the connecting IP address of the client and the

update status of each mirror to pick mirrors that are updated to and

geographically close to the client. You should use this for CentOS updates

unless you are manually picking other mirrors.

If the mirrorlist= does not work for you, as a fall back you can try the

remarked out baseurl= line instead.

[base]

name=CentOS-$releasever - Base

baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/ r e l e a s e v e r / o s / releasever/os/ releasever/os/basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=os

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates

[updates]

name=CentOS-$releasever - Updates

baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/ r e l e a s e v e r / u p d a t e s / releasever/updates/ releasever/updates/basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=updates

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras

baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/ r e l e a s e v e r / e x t r a s / releasever/extras/ releasever/extras/basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=extras

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-$releasever - Plus

baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/ r e l e a s e v e r / c e n t o s p l u s / releasever/centosplus/ releasever/centosplus/basearch/

#mirrorlist=http://mirrorlist.centos.org/?release=KaTeX parse error: Expected 'EOF', got '&' at position 11: releasever&̲arch=basearch&repo=centosplus

gpgcheck=1

enabled=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

3)使新仓库配置生效

yum clean all

yum makecache

img

4.4 修改Linux系统参数


在目标服务器(192.168.65.161 192.168.65.162)root用户下执行:

1)清理20-nproc.conf文件

cd /etc/security/limits.d

ls -lrt 20-nproc.conf

存在则:

mv 20-nproc.conf 20-nproc.conf_bak

img

2)修改limits.conf文件

vi /etc/security/limits.conf

添加下面的信息:

  • soft nofile 65535

  • hard nofile 65535

  • soft nproc 65535

  • hard nproc 65535

img

重新登陆,ulimit -a查看是否生效

img

4.5 修改系统mysql配置


mv /etc/my.cnf /etc/my.cnf_bak

img

4.6 关闭防火墙(可选)


在目标服务器(192.168.65.161 192.168.65.162)root用户下执行

systemctl disable firewalld.service

systemctl stop firewalld.service

systemctl status firewalld.service

img

4.7 创建APP用户


在目标服务器(192.168.65.161 192.168.65.162)root用户下执行

groupadd -g 6000 apps

useradd -s /bin/bash -g apps -d /home/app app

passwd app

app初识密码设置为123456

img

4.8 给APP用户配置sudo


在目标服务器(192.168.65.161 192.168.65.162)root用户下执行

vi /etc/sudoers.d/app

添加内容:

app ALL=(ALL) ALL

app ALL=(ALL) NOPASSWD: ALL

Defaults !env_reset

img

给文件sudoers文件增加写入权限

chmod u+w /etc/sudoers

编辑 sudoers文件

vi /etc/sudoers

在root ALL=(ALL) ALL下面追加:

root ALL=(ALL) NOPASSWD: ALL

app ALL=(ALL) ALL

app ALL=(ALL) NOPASSWD: ALL

给文件sudoers文件删除写入权限

chmod u-w /etc/sudoers

img

4.9 增加虚拟内存


在目标服务器(192.168.65.161 192.168.65.162)root用户下执行

生产环境使用时,因内存计算需要增加128G虚拟内存,执行前需检查存储空间是否足够。

手工创建,root用户执行:

cd /data

dd if=/dev/zero of=/data/swapfile128G bs=1024 count=134217728

mkswap /data/swapfile128G

swapon /data/swapfile128G

cat /proc/swaps

echo ‘/data/swapfile128G swap swap defaults 0 0’ >> /etc/fstab

img

4.10 安装依赖包


目标服务器(192.168.65.161 192.168.65.162)root用户执行

#安装基础依赖包

#centos

yum install -y gcc gcc-c++ make openssl-devel gmp-devel mpfr-devel libmpc-devel libaio numactl autoconf automake

#ubuntu

apt-get install -y gcc g++ make openssl libgmp-dev libmpfr-dev libmpc-dev libaio1 libaio-dev numactl autoconf automake libtool libffi-dev

#如果有报错,需要解决依赖安装源问题。

#安装ansible和进程管理依赖包

#centos

yum install -y ansible

#ubuntu

apt-get install -y ansible

#如果安装有报错同时服务器有外网,没有外网的需要解决yum源不全的问题,执行:

#centos

yum install -y epel-release

#增加一个更全面的第三方的源,然后再重新安装ansible

4.11 设置projects目录


在目标服务器(192.168.65.161 192.168.65.162)root用户下执行

cd /data

mkdir projects

chown app:apps projects

ls -l

chown -R app /data

img

4.12 配置ssh无密登录


1)配置自身免密

在目标服务器(192.168.65.161 192.168.65.162)app用户下执行

在虚拟机VM_0_1_centos 上以app用户身份在home目录下执行

su app

ssh-keygen -t rsa

cat ~/.ssh/id_rsa.pub >>/home/app/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

img

使用ssh 192.168.65.161命令测试,第一次需要确认yes ,之后应可以不需密码登录为成功。

img

在VM_0_2_centos 上执行相同步骤配置VM_0_2_centos 的自身免密登录。

2)配置VM_0_1_centos 免密登录VM_0_2_centos

VM_0_1_centos app用户下执行

scp ~/.ssh/authorized_keys app@192.168.65.162:/home/app/.ssh

输入VM_0_2_centos的app密码

VM_0_2_centos app用户下执行

cat ~/.ssh/id_rsa.pub >> /home/app/.ssh/authorized_keys

scp ~/.ssh/authorized_keys app@192.168.65.161:/home/app/.ssh

输入VM_0_1_centos 的app密码完成文件传输。

VM_0_1_centos app用户下执行

ssh 192.168.65.162

应不需要密码即可登录fate02机。到这里我们已经完成环境的配置了。

5 项目部署

=================================================================

5.1 系统检查


在目标服务器(192.168.65.161 192.168.65.162)app用户下执行

#虚拟内存,size不低于128G,如不满足需参考3.6章节重新设置

cat /proc/swaps

Filename Type Size Used Priority

/data/swapfile128G file 134217724 384 -1

#文件句柄数,不低于65535,如不满足需参考3.3章节重新设置

ulimit -n

65535

#用户进程数,不低于64000,如不满足需参考3.3章节重新设置

ulimit -u

65535

#检查进程是否有fate进程残留,如有则需要停止服务

ps -ef| grep -i fate

netstat -tlnp | grep 4670

netstat -tlnp | grep 4671

netstat -tlnp | grep 9370

netstat -tlnp | grep 9371

netstat -tlnp | grep 9360

netstat -tlnp | grep 8080

netstat -tlnp | grep 3306

#检查部署目录,如有需先进行mv

ls -ld /data/projects/fate

ls -ld /data/projects/data

ls -ld /data/projects/snmp

#检查supervisord配置文件,如有则需要mv或者删除掉

ls -lrt /data/projects/common/supervisord/supervisord.d/fate-*.conf

5.2 获取项目


在目标服务器(192.168.65.161 具备外网环境)app用户下执行

进入执行节点的/data/projects/目录,执行:

#注意:URL链接有换行,拷贝的时候注意整理成一行

cd /data/projects/

wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/ansible_nfate_1.6.0_release-1.0.0.tar.gz

tar xzf ansible_nfate_1.6.0_release-1.0.0.tar.gz

5.3 配置文件修改和示例


5.3.1 初始化配置文件

cd ansible-nfate-*

#init.sh文件不需要修改,主要是辅助生成一些配置文件

#生产环境加prod参数执行

sh ./tools/init.sh prod

sh ./tools/init.sh prod

clean old config

init environments/prod

init var_files/prod

init project_prod.yml

5.3.2 证书制作配置(可选)(这一步我没有做,官方给的有)

1)证书制作

vi /data/projects/ansible-nfate-1.*/tools/make.sh

#1、自定义安全证书需同时部署两端,只部署一端需要手工处理证书,手工处理部分暂不介绍。

#2、安全证书支持如下部署方式:

1)部署host+guest,host和guest使用安全证书通讯。

2)部署host+exchange+guest,其中host和exchange使用安全证书通讯,guest和exchange普通通讯。

3)部署host+exchange+guest,其中guest和exchange使用安全证书通讯,host和exchange普通通讯。

guest_host=“192.168.65.161” —根据实际IP修改

host_host=“192.168.65.162” —根据实际IP修改

exchange_host=“192.168.65.160” —根据实际IP修改,本示例不部署无需修改

2)执行脚本制作证书

cd tools

sh ./make.sh

在keys/host,guest目录下会产生证书文件。

3)拷贝证书到部署目录

sh cp-keys.sh host guest

证书文件会拷贝到roles/eggroll/files/keys目录

特别说明:

1、目前脚本部署只支持2方设置证书认证。(host&guest、host&exchange、guest&exchange)

5.3.3 修改配置文件

1)修改初始化主机IP

vi /data/projects/ansible-nfate-1.*/environments/prod/hosts

#ansible格式配置文件

[fate] —把需要部署的主机IP填入fate组

192.168.65.161

192.168.65.162

[deploy_check] —把执行ansible的本机IP填入deploy_check组

192.168.65.161

[all:vars]

ansible_connection=ssh

ansible_ssh_port=22 —根据实际情况修改

ansible_ssh_user=app

#ansible_ssh_pass=test —如果未做免密登陆需提供密码

##method: sudo or su

ansible_become_method=sudo

ansible_become_user=root

ansible_become_pass= —各个主机未做免密sudo需填写root密码

2)修改host方参数

注意:默认是不启用安全证书的配置,如果启用安全证书通讯需把server_secure,client_secure,is_secure设置为true,以及is_secure对应的port设置为9371

#不部署host方则不用修改

#除了nodemanger可以设置多个IP外,其他都是单个IP

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

vi /data/projects/ansible-nfate-1.*/environments/prod/hosts

#ansible格式配置文件

[fate] —把需要部署的主机IP填入fate组

192.168.65.161

192.168.65.162

[deploy_check] —把执行ansible的本机IP填入deploy_check组

192.168.65.161

[all:vars]

ansible_connection=ssh

ansible_ssh_port=22 —根据实际情况修改

ansible_ssh_user=app

#ansible_ssh_pass=test —如果未做免密登陆需提供密码

##method: sudo or su

ansible_become_method=sudo

ansible_become_user=root

ansible_become_pass= —各个主机未做免密sudo需填写root密码

2)修改host方参数

注意:默认是不启用安全证书的配置,如果启用安全证书通讯需把server_secure,client_secure,is_secure设置为true,以及is_secure对应的port设置为9371

#不部署host方则不用修改

#除了nodemanger可以设置多个IP外,其他都是单个IP

(1)Python所有方向的学习路线(新版)

这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

最近我才对这些路线做了一下新的更新,知识体系更全面了。

在这里插入图片描述

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

在这里插入图片描述

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-m9ac1GVp-1713134605609)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 30
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值