分类 编程视频资料 下的文章

编程资料,视频资料,编程学习,软件开发,自学编程,编程实战,编程视频,前端开发,后端开发,数据结构,算法,运维开发,操作系统,网络编程,c++,c,java,python,go,html,js,mysql,redis,shopee,spring,vue

截屏2021-11-23 00.25.03.png

目录

第01部分:算法基础
第02部分:线性表
第03部分:栈与队列
第04部分:数组
第05部分:字符串
第06部分:二叉树
第07部分:树 贪心
第08部分:图的存储
第09部分:图搜索
第10部分:图的连通性
第11部分:图 贪心
第12部分:图的应用
第13部分:查找 分治
第14部分:数表查找
第15部分:简单排序
第16部分:排序 分治
第17部分:树形排序

获取方式

链接: https://pan.baidu.com/s/1m4krh7ualnhxSiMyOfoy7A

鸭哥聊Java 反爬虫抓取,人机验证,请输入验证码查看内容:
验证码:
请关注本站公众号回复关键字:“2021”,获取验证码。
【注】微信搜索公众号:“鸭哥聊Java”或者“yage2708” 或微信扫描右侧二维码关注微信公众号

编程资料,视频资料,编程学习,软件开发,自学编程,编程实战,编程视频,前端开发,后端开发,数据结构,算法,运维开发,操作系统,网络编程,c++,c,java,python,go,html,js,mysql,redis,shopee,spring,vue

截屏2021-11-23 00.32.26.png

目录

第1章 数据结构与算法简介
本章中介绍了什么是数据结构与算法、为什么要用数据结构与算法、如何学习数据结构与算法。此外,还介绍了如何高效刷 LeetCode。总之,关于这门课,你想知道的都在这里!
1-1 课程介绍
1-2 数据结构与算法简介
1-3 如何刷 LeetCode?

第2章 时间/空间复杂度计算
只会做题可不行,还得会分析时间复杂度和空间复杂度,快来做个追求极致的程序员吧!
2-1 时间复杂度计算
2-2 空间复杂度计算
2-3 【勤于思考,夯实学习成果】阶段思考题

第3章 数据结构之“栈”
从本章开始将进入数据结构学习的阶段。栈是最简单的数据结构,让我们用后进先出的栈来解决各种问题吧!
3-1 栈简介
3-2 什么场景下用栈
3-3 LeetCode:20.有效的括号
3-4 前端与栈:JS 中的函数调用堆栈
3-5 LeetCode:144. 二叉树的前序遍历
3-6 栈-章节总结
3-7 【勤于思考,夯实学习成果】阶段思考题

第4章 数据结构之“队列”
先进先出,是数据结构中队列的特性,如何更好的应用这个与栈相反的特性解决实际问题?这个章节将为你答疑解惑!
4-1 队列简介
4-2 什么场景用队列
4-3 LeetCode:933. 最近的请求次数
4-4 前端与队列:JS 异步中的任务队列
4-5 队列-章节总结
4-6 【勤于思考,夯实学习成果】阶段思考题

第5章 数据结构之“链表”
与栈和队列不同,链表元素的存储不是连续的。链表是非常高频的考点,在前端的日常工作中也有举足轻重的地位,这章一定要好好学习呦!
5-1 链表简介
5-2 LeetCode:237.删除链表中的节点
5-3 LeetCode:206.反转链表
5-4 LeetCode:2. 两数相加
5-5 LeetCode:83. 删除排序链表中的重复元素
5-6 LeetCode:141. 环形链表
5-7 前端与链表:JS 中的原型链 试看
5-8 前端与链表:使用链表指针获取 JSON 的节点值
5-9 链表-章节总结
5-10 【勤于思考,夯实学习成果】阶段思考题

第6章 数据结构之“集合”
前面的数据结构都是有序的,这次我们要学一个无序且唯一的数据结构——集合,快来一起认识一下他在前端中如何应用吧!
6-1 集合简介
6-2 LeetCode:349. 两个数组的交集
6-3 前端与集合:使用 ES6 中 Set
6-4 集合章节总结
6-5 【勤于思考,夯实学习成果】阶段思考题

第7章 数据结构之“字典”
字典主要存储键值对,可以用来建立各种映射关系。不管是面试还是工作中实战,字典都是重点关注对象,小伙伴们要注意力集中喽!!!
7-1 字典简介
7-2 LeetCode:349. 两个数组的交集
7-3 LeetCode:20.有效的括号
7-4 LeetCode:1. 两数之和 试看
7-5 LeetCode:3. 无重复字符的最长子串
7-6 LeetCode:76. 最小覆盖子串
7-7 字典-章节总结
7-8 【勤于思考,夯实学习成果】阶段思考题

第8章 数据结构之“树”
在我们前端的工作中,树这个数据结构无处不在,级联选择器、DOM树、树插件……,让我们好好再来认识一下这个既熟悉又陌生的“朋友”吧!
8-1 树简介
8-2 深度与广度优先遍历
8-3 二叉树的先中后序遍历
8-4 二叉树的先中后序遍历(非递归版)
8-5 LeetCode:104. 二叉树的最大深度
8-6 LeetCode:111. 二叉树的最小深度
8-7 LeetCode:102. 二叉树的层序遍历
8-8 LeetCode:94. 二叉树的中序遍历
8-9 LeetCode:112. 路径总和
8-10 前端与树:遍历 JSON 的所有节点值
8-11 前端与树:渲染 Antd 中的树组件
8-12 树-章节总结
8-13 【勤于思考,夯实学习成果】阶段思考题

第9章 数据结构之“图”
生活中的航班、道路、朋友圈都是图,图这个数据结构将世界万物“连接”起来。如何将它与前端应用高效组合,在这章中将向大家解开面纱~~
9-1 图简介
9-2 图的深度广度优先遍历
9-3 LeetCode:65. 有效数字
9-4 LeetCode:417. 太平洋大西洋水流问题
9-5 LeetCode:133. 克隆图
9-6 图-章节总结
9-7 【勤于思考,夯实学习成果】阶段思考题~~

第10章 数据结构之“堆”
堆是一种特殊的树。可以帮助我们解决排序问题和Kth 类问题。作为面试中的常客,有哪些需要注意点和适用场景呢?快来一起了解一下吧!
10-1 堆简介
10-2 JavaScript 实现:最小堆类
10-3 LeetCode:215. 数组中的第 K 个最大元素
10-4 LeetCode:347. 前 K 个高频元素
10-5 LeetCode:23. 合并K个排序链表
10-6 堆-章节总结
10-7 【勤于思考,夯实学习成果】阶段思考题

第11章 进阶算法之“搜索排序”
面试中还不会手写快排、归并和二分?别急,快来跟着老师学套路,轻松搞定经典排序与搜索算法。
11-1 排序和搜索简介
11-2 JavaScript 实现:冒泡排序
11-3 JavaScript 实现:选择排序
11-4 JavaScript 实现:插入排序
11-5 JavaScript 实现:归并排序
11-6 JavaScript 实现:快速排序
11-7 JavaScript 实现:顺序搜索
11-8 JavaScript 实现:二分搜索
11-9 LeetCode:21. 合并两个有序链表
11-10 LeetCode:374. 猜数字大小
11-11 排序与搜索-章节总结
11-12 【勤于思考,夯实学习成果】阶段思考题

第12章 算法设计思想之“分而治之”
从本章开始我们就要进入算法设计学习阶段啦!分而治之的口诀一旦背下来,解题只在瞬息之间!还在等什么,快来享受学习的乐趣!
12-1 分而治之简介
12-2 LeetCode:374. 猜数字大小
12-3 LeetCode:226. 翻转二叉树
12-4 LeetCode:100. 相同的树
12-5 LeetCode:101. 对称二叉树
12-6 分而治之-章节总结
12-7 【勤于思考,夯实学习成果】阶段思考题

第13章 算法设计思想之“动态规划”
斐波那契数列问题、爬楼梯问题……无数经典问题都可以用动态规划来解!还在等什么,快来听老司机讲经~~
13-1 动态规划简介
13-2 LeetCode:70. 爬楼梯
13-3 LeetCode:198. 打家劫舍
13-4 动态规划-章节总结
13-5 【勤于思考,夯实学习成果】阶段思考题~~

第14章 算法设计思想之“贪心算法”
“贪婪”是人的本性,也是算法的精华。干嘛要想得很远?快来看看,贪心算法如何带你今朝有酒今朝醉!
14-1 贪心算法简介
14-2 LeetCode:455. 分饼干
14-3 LeetCode:122. 买卖股票的最佳时机 II
14-4 贪心算法-章节总结
14-5 【勤于思考,夯实学习成果】阶段思考题

第15章 算法设计思想之“回溯算法”
遇到岔路,先选择一条路走,走不通拐回来走另一条路,直到走通为止。所谓“拐回来”,就是回溯。听起来很高大上?不不不,很简单,来听听老司机怎样逐步剖析吧!
15-1 回溯算法简介
15-2 LeetCode:46. 全排列
15-3 LeetCode:78. 子集
15-4 回溯算法-章节总结
15-5 回顾与总结
15-6 【勤于思考,夯实学习成果】阶段思考题

获取方式

链接: https://pan.baidu.com/s/1m4krh7ualnhxSiMyOfoy7A

鸭哥聊Java 反爬虫抓取,人机验证,请输入验证码查看内容:
验证码:
请关注本站公众号回复关键字:“2021”,获取验证码。
【注】微信搜索公众号:“鸭哥聊Java”或者“yage2708” 或微信扫描右侧二维码关注微信公众号

编程资料,视频资料,编程学习,软件开发,自学编程,编程实战,编程视频,前端开发,后端开发,数据结构,算法,运维开发,操作系统,网络编程,c++,c,java,python,go,html,js,mysql,redis,shopee,spring,vue

截屏2021-11-23 00.28.29.png

目录

阶段一:算法与数据结构基础
试看

第1周 线性查找法
开课第一周,我们将学习最简单的算法:线性查找法。在学习这样一个最简单的算法的过程中,我们也将接触诸多概念:循环不变量,复杂度分析,如何使用泛型让我们的算法更通用,以及简单的性能测试方式。
课程安排:
1、什么是算法
2、为什么要学习算法和数据结构
3、线性查找算法
4、使用泛型让算法更通用
5、自定义类测试算法
6、循环不变量
7、复杂度分析
8、常见算法复杂度举例

第2周 排序基础
在这一周,我们将接触两个最基础的排序算法:选择排序法和插入排序法。虽然这两个排序算法很简单,但在这一周,我们将巩固我们之前学习的知识,将循环不变量的思路和复杂度分析应用在这些算法中。
课程安排:
1、选择排序法
2、原地排序
3、使用泛型约束
4、Comparable 接口的使用
5、插入排序法
6、插入排序法的优化
7、排序算法的测试数据生成
8、排序算法的性能测试和比较

第3周 数据结构基础:动态数组,栈和队列
这一周,我们开始接触最基础的数据结构:线性数据结构。这些数据结构看似简单,但是通过对他们的学习,会接触很多新的概念,包括对静态数组的扩容和缩容;均摊复杂度分析;数据结构的接口设计;循环队列,等等。
课程安排:
1、理解静态数组和动态数组
2、如何封装属于自己的数据结构
3、动态数组的扩容和缩容
4、均摊复杂度分析
5、数据结构的接口设计
6、栈和栈的应用
7、队列和队列的应用
8、队列的优化:循环队列
9、双端队列
10、Java 语言中的设计问题讨论

第4周 动态数据结构基础:链表
在这一周,我们将接触最基础的动态数据结构:链表。在学习链表的过程中,我们将更深入透彻地理解程序设计中“引用”的概念,更会开始接触程序设计中最常用的一种逻辑搭建方式:递归
课程安排:
1、什么是链表
2、链表的更删改查
3、抽象数据接口
4、使用链表实现栈和队列
5、链表的性能问题
6、链表天然的递归结构
7、通过链表深入理解递归
8、经典链表相关的面试问题
阶段二:递归无处不在

第5周 归并排序法
我们将学习第一个高级排序算法:归并排序法。将看到更通用的递归算法的设计方法,理解自顶向下和自底向上,理解分治。看到归并排序法的优化,接触 O(nlogn) 这一复杂度的分析方式,归并排序思想的实际应用
课程安排:
1、归并排序的算法思想
2、归并过程
3、复杂的递归算法运行机制解读
4、归并排序法的复杂度分析
5、归并排序法的优化
6、自顶向下和自底向上
7、使用归并排序法求逆序数对

第6周 快速排序法
本周,我们将学习第二个高级排序算法:快速排序法。将逐渐优化,完成四个版本的快速排序算法,并看到算法对不同数据表现出的差异。同时,也会简单介绍面对随机算法,我们的复杂度分析有何不同
课程安排:
1、快速排序算法的基本思想
2、随机化的快速排序算法
3、二路快排
4、三路快排
5、不同快速排序算法的性能比较
6、快排的复杂度分析
7、快排思想的实际应用

第7周 二分查找法
我们将学一个看似基础但“变化多端”的算法:二分搜索法 我们将探索基础二分搜索算法的递归和非递归写法理解循环不变量和如何处理边界问题等等,很多算法面试甚至竞赛问题,本质都是二分搜索问题
课程安排:
1.二分搜索法的基本思想
2.二分搜索的递归实现
3.二分搜索的非递归实现
4.深刻理解程序设计中的边界问题
5.二分搜索在浮点数据中的应用
6.使用二分搜索解决寻界问题
7.避免死循环
8.二分搜索的模板
9.使用二分搜索法的思路解决实际问题

第8周 二分搜索树
我们学习第一个基础树结构:二分搜索树。在学习二分搜索树的过程中,我们将大量使用递归,深入理解递归。同时我们会学习经典的数据遍历方式:DFS 和 BFS。还会接触两个最为常见的抽象数据类型:集合和映射
课程安排:
1.什么是树结构
2.在数据结构中使用递归
3.深度优先遍历
4.广度优先遍历
5.Hubbard Deletion
6.抽象数据结构:集合
7.抽象数据结构:映射
8.集合和映射的经典应用
阶段三:算法与数据结构进阶

第9周 堆,优先队列和堆排序
我们将学习一个特殊的树结构:堆。学习后我们将看到数组也可以表示树结构。同时我们还会引出另外一种高级排序算法:堆排序。最后,我们将使用堆组建一种应用极其广泛的重要数据结构:优先队列,并拓展对队列的认识
课程安排:
1、数组也可以表示树结构
2、堆的基本操作
3、Sift Up 和 Sift Down
4、Heapify
5、堆排序
6、优先队列
7、优先队列的应用
8、广义队列

第10周 冒泡排序,希尔排序和排序算法大总结
我们将再学习两个排序算法:冒泡排序和希尔排序法。其中希尔排序法是一种重要的排序方法,插入排序法的优势如何被应用乃至改造成一个全新的高效算法。同时进行一个大总结更加系统地梳理和排序算法相关的系列概念。
课程安排:
1、冒泡排序的基本思想
2、冒泡排序的优化
3、希尔排序的基本思想
4、希尔排序的优化
5、什么是增量序列
6、基于比较的排序算法总结
7、稳定排序

第11周 线段树,Trie 和并查集
我们将学习三种应用在不同场合的树结构:线段树,Trie 和并查集。学习后将看到不同的数据结构拥有解决不同问题的能力,了解如何根据问题不同的问题,选择合适的数据结构。
课程安排:
1、线段树的基本操作
2、区间查询问题
3、Trie 树的基本操作
4、使用 Trie 解决模式匹配问题
5、并查集的基本原理
6、不断优化六个版本的并查集
7、并查集的应用

第12周 AVL 树和红黑树
我们将学习两种高级的二分搜索树结构:AVL 树和红黑树。理解二分搜索树的局限性,接触平衡树的概念。我们还会学习一种树结构:2-3 树,看到 2-3 树和红黑树的等价性也是后续我们学习 B 类树的基础
课程安排:
1、什么是平衡树
2、左旋转和右旋转
3、AVL 树
4、2-3 树
5、2-3 树和红黑树的等价性
6、红黑树保持平衡的基本操作
7、红黑树的添加操作实现
8、二分搜索树,AVL 树和红黑树的性能对比
9、词频统计应用
10、使用真实数据测试不同底层封装的集合和映射结构

第13周 哈希表和 SQRT 分解
我们将首先学习哈希表这种重要的数据结构深入理解哈希的概念,并使用链地址法设计出属于我们自己的哈希表结构。同时将学习到分块这一概念并接触另外一个经典的使用分块的思想解决区间问题的数据结构:SQRT 分解
课程安排:
1、哈希的基本思想
2、哈希函数的设计
3、链地址法
4、Java 中的哈希表
5、分块思想
6、SQRT 分解
7、使用 SQRT 分解处理区间问题
阶段四:更广阔的算法和数据结构世界

第14周 非比较排序
在这一周,我们将看到:排序算法不一定基于比较,不进行元素的比较也可以对某类特殊的对象进行排序,即非比较排序算法。我们将学习计数排序法,桶排序法和基数排序法。
课程安排:
1、非比较排序
2、计数排序法
3、桶排序法
4、基数排序法
5、LSD 和 MSD
6、非比较排序的性能测试
7、非比较排序和比较排序的性能对比

第15周 模式匹配
我们将学习一类重要的算法:模式匹配。从基本的模式匹配出发,引出大名鼎鼎的 KMP 算法。对于 KMP 算法,我们会学习两种实现方式,并接触到计算机领域的一个重要的概念:状态机。
课程安排:
1.朴素模式匹配算法
2.KMP 算法
3.KMP 算法中的 LPS 数组
4.状态机
5.状态机的其他应用
6.滚动哈希
7.RK 算法
8.RK 算法的经典问题
第16周 随机算法,外存算法和更多

获取方式

链接: https://pan.baidu.com/s/1m4krh7ualnhxSiMyOfoy7A

鸭哥聊Java 反爬虫抓取,人机验证,请输入验证码查看内容:
验证码:
请关注本站公众号回复关键字:“2021”,获取验证码。
【注】微信搜索公众号:“鸭哥聊Java”或者“yage2708” 或微信扫描右侧二维码关注微信公众号

编程资料,视频资料,编程学习,软件开发,自学编程,编程实战,编程视频,前端开发,后端开发,数据结构,算法,运维开发,操作系统,网络编程,c++,c,java,python,go,html,js,mysql,redis,shopee,spring,vue

截屏2021-11-23 00.55.09.png

目录

开篇词
开篇词 | 为什么大厂面试必考操作系统?
课前必读 | 构建知识体系,可以这样做!

模块一:(前置知识)计算机组成原理
01 | 计算机是什么:“如何把程序写好”这个问题是可计算的吗?
02 | 程序的执行:相比 32 位,64 位的优势是什么?(上)
03 | 程序的执行:相比 32 位,64 位的优势是什么?(下)
04 | 构造复杂的程序:将一个递归函数转成非递归函数的通用方法
05 | 存储器分级:L1 Cache 比内存和 SSD 快多少倍?
加餐 | 练习题详解(一)

模块二: Linux 指令入门
06 | 目录结构和文件管理指令:rm / -rf 指令的作用是?
07 | 进程、重定向和管道指令:xargs 指令的作用是?
08 | 用户和权限管理指令: 请简述 Linux 权限划分的原则?
09 | Linux 中的网络指令:如何查看一个域名有哪些 NS 记录?
10 | 软件的安装: 编译安装和包管理器安装有什么优势和劣势?
11 | 高级技巧之日志分析:利用 Linux 指令分析 Web 日志
12 | 高级技巧之集群部署:利用 Linux 指令同时在多台机器部署程序
加餐 | 练习题详解(二)

模块三:操作系统基础知识
13 | 操作系统内核:Linux 内核和 Windows 内核有什么区别?
14 | 用户态和内核态:用户态线程和内核态线程有什么区别?
15 | 中断和中断向量:Java/js 等语言为什么可以捕获到键盘输入?
16 | Win/Mac/Unix/Linux 的区别和联系:为什么 Debian 漏洞排名第一还这么多人用?
加餐 | 练习题详解(三)

模块四: 进程和线程
17 | 进程和线程:进程的开销比线程大在了哪里?
18 | 锁、信号量和分布式锁:如何控制同一时间只有 2 个线程运行?
19 | 乐观锁、区块链:除了上锁还有哪些并发控制方法?
20 | 线程的调度:线程调度都有哪些方法?
21 | 哲学家就餐问题:什么情况下会触发饥饿和死锁?
22 | 进程间通信: 进程间通信都有哪些方法?
23 | 分析服务的特性:我的服务应该开多少个进程、多少个线程?
加餐 | 练习题详解(四)

模块五:内存管理
24 | 虚拟内存 :一个程序最多能使用多少内存?
25 | 内存管理单元: 什么情况下使用大内存分页?
26 | 缓存置换算法: LRU 用什么数据结构实现更合理?
27 | 内存回收上篇:如何解决内存的循环引用问题?
28 | 内存回收下篇:三色标记-清除算法是怎么回事?
加餐 | 练习题详解(五)

模块六:文件系统
29 | Linux 下的各个目录有什么作用?
30 | 文件系统的底层实现:FAT、NTFS 和 Ext3 有什么区别?
31 | 数据库文件系统实例:MySQL 中 B 树和 B 树有什么区别?
32 | HDFS 介绍:分布式文件系统是怎么回事?
加餐 | 练习题详解(六)

模块七: 网络与安全
33 | 互联网协议群(TCP/IP):多路复用是怎么回事?
34 | UDP 协议:UDP 和 TCP 相比快在哪里?
35 | Linux 的 I/O 模式:select/poll/epoll 有什么区别?
36 | 公私钥体系和网络安全:什么是中间人攻击?
加餐 | 练习题详解(七)

模块八:虚拟化和其他
37 | 虚拟化技术介绍:VMware 和 Docker 的区别?
38 | 容器编排技术:如何利用 K8s 和 Docker Swarm 管理微服务?
39 | Linux 架构优秀在哪里?
40 | 商业操作系统:电商操作系统是不是一个噱头?
加餐 | 练习题详解(八)

结束语
结束语 | 论程序员的发展——信仰、选择和博弈

获取方式

链接: https://pan.baidu.com/s/1oSJi7Hb2MEQ1pHdrbnv6Jg

鸭哥聊Java 反爬虫抓取,人机验证,请输入验证码查看内容:
验证码:
请关注本站公众号回复关键字:“2021”,获取验证码。
【注】微信搜索公众号:“鸭哥聊Java”或者“yage2708” 或微信扫描右侧二维码关注微信公众号

编程资料,视频资料,编程学习,软件开发,自学编程,编程实战,编程视频,前端开发,后端开发,数据结构,算法,运维开发,操作系统,网络编程,c++,c,java,python,go,html,js,mysql,redis,shopee,spring,vue

截屏2021-11-23 00.58.18.png

目录

1.1 docker介绍、安装及要素讲解.flv

1.2 Django应用容器化实践.flv

1.3 docker实现原理与网络.flv

2.1 kubernetes架构、工作流程介绍及集群搭建.flv

2.2 使用pod管理业务应用(上).flv

2.3 使用pod管理业务应用(下).flv

2.4 kubernetes workload的使用.flv

2.5 kubernetes调度策略.flv

2.6 集群服务发现及Ingress的实现服务访问.flv

2.7 Kubernetes集群的认证和授权及Admission Control.flv

3.1 使用efk实现k8s集群服务日志采集.flv

3.2 fluentd工作原理及参数详解.flv

4.1 DevOps及CICD介绍.flv

4.2 Jenkins on k8s的部署及插件的使用.flv

4.3 Jenkins与Gitalb集成示例.flv

4.4 Jenkins的Master-Slaves模式执行任务构建.flv

4.5 Pipeline及Jenkinsfile实现docker镜像构建.flv

4.6 老司机将给运维同学们的话.flv

4.7 Jenkinsfile凭据的使用及实现k8s服务的部署.flv

4.8 多分支流水线的使用及Jenkins与Gitlab-CI的集成.flv

5.1 Jenkinsfile集成k8s实现动态jnlp-slave pod.flv

5.2 Jenkinsfile定制自定义jnlp-slave的PodTemplate的实现.flv

5.3 Jenkins与sonarqube的集成及在Jenkinsfile中实现代码质量的检测.flv

5.4 Jenkinsfile中集成RobotFramework实现自动化集成测试.flv

6.1 sharedLibrary的代码结构及Groovy语法介绍.flv

6.2 sharedLibaray实现helloworld.flv

6.3 sharedLibrary实现docker容器的构建.flv

6.4 sharedLibrary实现钉钉消息推送.flv

6.5 利用library及模板化yaml实现多环境(开发、测试、生产)的k8s服务部署.flv

6.6 课程回顾及DevOps的感想20206121831311.flv

14小时所有课件.zip

获取方式

链接: https://pan.baidu.com/s/1oSJi7Hb2MEQ1pHdrbnv6Jg

鸭哥聊Java 反爬虫抓取,人机验证,请输入验证码查看内容:
验证码:
请关注本站公众号回复关键字:“2021”,获取验证码。
【注】微信搜索公众号:“鸭哥聊Java”或者“yage2708” 或微信扫描右侧二维码关注微信公众号