diff --git a/docs/.vitepress/config/sidebar.ts b/docs/.vitepress/config/sidebar.ts index 829f044aa..e8207bb34 100644 --- a/docs/.vitepress/config/sidebar.ts +++ b/docs/.vitepress/config/sidebar.ts @@ -5,6 +5,8 @@ export const sidebar: DefaultTheme.Config['sidebar'] = { '/categories/issues/': getItemsByDate("categories/issues"), '/categories/fragments/': getItemsByDate("categories/fragments"), '/categories/solutions/': getItemsByDate("categories/solutions"), + + '/courses/java/': getItems("courses/java"), '/courses/mybatis/': getItems("courses/mybatis") } diff --git a/docs/.vitepress/theme/components/Archive.vue b/docs/.vitepress/theme/components/Archive.vue index b5a7db63b..41bd750d6 100644 --- a/docs/.vitepress/theme/components/Archive.vue +++ b/docs/.vitepress/theme/components/Archive.vue @@ -68,7 +68,7 @@ {{ article.title }}
- + diff --git a/docs/courses/java/01-Java语法入门/01-开发环境搭建.md b/docs/courses/java/01-Java语法入门/01-开发环境搭建.md new file mode 100644 index 000000000..511897dcc --- /dev/null +++ b/docs/courses/java/01-Java语法入门/01-开发环境搭建.md @@ -0,0 +1,379 @@ +--- +title: 开发环境搭建 +author: 查尔斯 +date: 2020/10/02 21:29 +categories: + - Java基础快速入门 +tags: + - Java + - Java基础 + - JDK + - 开发环境 +--- + +# 开发环境搭建 + +## 前言 + +**C:** 上篇的介绍是否能让你对 Java 语言有一个初步的认识呢?认识完后,大家可能着急想上手编程了吧?但就像你要去游泳,也得先找到一个泳池?所以还是先耐下性子,听笔者说,在正式开发一个 Java 程序前,我们首先应该在计算机中,准备好对应的开发环境,Java 语言所需要的开发环境是 JDK / JRE。 + +这是万里长征的第一步,搭好 Java 基础开发环境是 Java 系开发者必须掌握的技能,所以笔者建议你,收藏好本篇教程,JDK 多安装个几遍,它又不是流氓软件,不影响(卸载不残留,重装如新装)。 + +![202010011219728](../../../public/img/2020/10/02/202010021219728.jpg) + + + +## JDK和JRE的概念 + +首先我们介绍一下我们要安装的 JDK / JRE 的概念。 + +`JDK` 的全称是 `Java Development Kit`,即 Java 开发工具包,是 Sun 公司提供的一套用于开发 Java 应用程序的开发包,它提供了编译、运行 Java 程序所需的各种工具和资源,包括 Java 编译器、Java 运行时环境(`JRE`),以及常用的 Java类库 等。 + +`JRE`,全称 `Java Runtime Environment` ,Java 运行时环境。它是运行 Java 程序的必须条件。如果只是运行Java 程序,可以只安装 `JRE`,无需安装 `JDK`。 + +::: tip 笔者说 +在业内,一般都是直接安装 `JDK`,因为 `JDK` 内置了一个 `JRE`,我们亦是如此。 +::: + +## JDK的选择 + +### 选择谁家的? + +了解完 `JDK` 概念之后,我们还要了解下目前 `JDK` 的现状。Sun 公司当初开发了 Java 语言,作为 Java 语言的开发工具包, `JDK` 在发展中被 Sun 公司分化为了两大分支。( 可延伸阅读 [Java 终于开源了,采用GPLv2授权协议](https://www.51cto.com/specbook/11/35089.htm) ) + +- `Open JDK` ,开源(源代码公开)版本,以 GPL V2(General Public License)协议的形式开源 +- `Sun JDK` ,使用 JRL(Java Research License,Java 研究授权协议)发布。 + +::: tip 笔者说 +GPL 协议,在开源协议里被称为"病毒"协议,只要是基于 GPL 协议 **开源** 的代码来开发,那么这项目也必须开源。 + +JRL 协议,是 Sun 公司自己搞出来的协议,理解起来就是 Sun 公司公开代码,但是代码的所有权完全归它自己所有,你们能看。 + +不过上述协议对我们使用 JDK 没有什么影响,它影响的是那些想改动 JDK 或基于 JDK 代码二次开发的个人或公司群体,我们又不动 JDK 代码。 +::: + +其实两个分支版本,在发展中有很大部分的相同代码,不过`Open JDK`不如 `Sun JDK` 完整是肯定的(缺少一些特性API),且一部分代码由于产权等原因无法授权给 `Open JDK` 使用,便在 `Open JDK` 中替换为没有产权问题的代码。 + +很多大公司为了避免版权问题,都在使用基于 `Open JDK` 开发或自主开发的 JDK 版本,例如亚马逊的 Corretto、阿里巴巴的 Dragonwell、华为的毕昇、腾讯的 Kona等(咱们国内今年井喷式开源 JDK)。 + +另外我们都知道,Sun (升阳公司)在2009年被 Oracle(甲骨文公司)收购了,Java 相关业务及版权也就归Oracle 所有。后续的 `JDK` 更新当然也就由 Oracle 负责了,但是 Oracle 在行业内有一个"不太好"的名声,"什么都要钱,什么都死贵"(实际上,商业公司的本质就是盈利,Sun 公司当初还没做到怎么盈利就没了,Oracle 后面继续做这件事也无可厚非)。 + +在2009年到2019年期间,Oracle 没有做什么收费的大动作,但是这种情况在2019年1月1日出现了点变化。Oracle 宣布从2019年1月1日起,`Oracle JDK 8` 的后续更新将需要收费。`Oracle JDK 8` 的 `8u211` 和 `8u212`更新,开始把许可协议从 `BCL` 换成了 `OTN`,这就意味着,你不能在生产环境使用这类版本了。 + +::: tip Oracle 采用的许可协议介绍 +BCL协议,即Oracle Binary Code License Agreement,协议规定你可以使用JDK,但是不能进行修改(和上文的JRL类似),私用和商用都可以,但是JDK中的某些商业特性,是需要付费才可以使用的。 + +OTN协议,即Oracle Technology Network License Agreement,目前新发布的JDK用的都是这个协议,可以私用,商用需要付费。[1] +::: + +一石激起千层浪,本来就担心的事终于发生了,很多公司更是开始进行 `JDK` 版本转移和考虑以后的选择。 + +下图是2020年初,Jrebel 在 Java 生态报告中,对 `JDK` 选择的调查结果(中国内也差不多,仅供参考)。根据结果表示,`Oracle JDK(Sun JDK)`和`Oracle Open JDK(Sun Open JDK)`还是占据比较大的市场地位,但`AdoptOpenJDK`的占有率也在迅速提升中。 + +我们现在学习选择用 `Oracle JDK` 就可以了,公司内就看公司的架构师或领导想法了。[可延伸阅读,了解更多的 [JDK 发行版](https://www.oschina.net/news/99836/time-to-look-beyond-oracles-jdk)] + +![202010021221992](../../../public/img/2020/10/02/202010021221992.png) + +### 选择哪个版本? + +每个版本的对应 `Open JDK` 更新也不是无限期,是有支持期限的。`Oracle JDK 8` 还有个人版、商业版。这些事其实还挺头疼的,不过我们现在学习用 `Oracle JDK` 没有问题,进公司到时候就"入乡随俗"吧。 + +选定好发行版之后,那我们用第几版本呢?下面是 Jrebel 的报告,其中很明显是 `JDK 8` 应用最广。虽然截止笔者调整教程今天,JDK 已经快要发布到了 `JDK 16`,但是公司追求的是稳定,所以没有太大更新或修复的情况,一般升级就非常慢,你想想 Windows 7 到 Windows 10 的用户升级之路就理解了。另外 JDK 9、JDK 10 都没人用,是因为它们都是过渡版本,类似于 Windows8 一样,不是长期支持(维护)版本。 + +![202010021222666](../../../public/img/2020/10/02/202010021222666.png) + +## JDK下载 + +既然我们选择了 `Oralce JDK 8`,那就前往Oracle官网下载吧。 + +1.打开下方的链接,或者自行百度搜索 `JDK`,找到类似下方页面。 + +- [Oracle国际官网](http://www.oracle.com/technetwork/java/javase/downloads/index.html ) + +- [Oracle中国官网](http://www.oracle.com/technetwork/cn/java/javase/downloads/index.html ) + +![202010021222777](../../../public/img/2020/10/02/202010021222777.png) + +2.下拉到页面最下方,找到`Java Archive`点击进入`JDK`历史版本存档页面。 + +![202010021222888](../../../public/img/2020/10/02/202010021222888.png) + +你看 `Java SE 8` 分为了两个链接,`8u211及之后 `(收费)和`8u202及之前`(免费)。 + +![202010021223666](../../../public/img/2020/10/02/202010021223666.png) + +3.点击 `Java SE 8(8u2020 and earlier)` 进入下载页面,然后选择你所需的平台版本。大多数同学应该用的都是 Windows 64 位的系统,选择下方箭头指示的版本即可。 + +![202010021223777](../../../public/img/2020/10/02/202010021223777.png) + +记得勾选 `卖身协议` 。 + +![202010021224888](../../../public/img/2020/10/02/202010021224888.png) + +Oracle 现在要求下载 `JDK` 必须先登录,没有帐号的同学,自己先注册一个吧。网络是真慢!忍忍! + +![202010021224999](../../../public/img/2020/10/02/202010021224999.png) + +4.终于下载好了,笔者家里开的热点网络,太慢了。 + +![202010021225560](../../../public/img/2020/10/02/202010021225560.png) + +## JDK安装 + +下载好了,开始安装 `JDK` 吧,和安装 QQ 等软件一样,而且它不是流氓软件,不会静默给你下载一个"全家桶"。 + +1.双击程序安装包,开始进行 `JDK` 安装,点击下一步。 + +![202010021225676](../../../public/img/2020/10/02/202010021225676.png) + +2.点击更改,更改 `JDK` 的安装位置。 + +::: warning 笔者说 +为了防止出现,你自己安装的软件自己都找不到在哪儿这种问题,我们统一安装位置,任选一个磁盘,在其下新建一个 `develop` 的文件夹,用于以后安装所有开发软件。笔者演示时将 `develop` 文件夹放在了 `d` 盘下。 +::: + +![202010021226600](../../../public/img/2020/10/02/202010021226600.png) + +在弹出的更改安装目录对话框中,只需要修改前面的盘符 `d:` 和文件夹 `develop`,后面的子文件夹 `Java\jdk1.8.0_xxx\` 不需要修改,然后点击确定。如果文件夹不存在,安装时会自动创建。 + +::: danger 笔者说 +安装路径不要出现空格,中文,特殊符号等! +::: + +![202010021226999](../../../public/img/2020/10/02/202010021226999.png) + +这个时候程序将要安装的位置已经更改,点击下一步即可开始安装。 + +![202010021227666](../../../public/img/2020/10/02/202010021227666.png) + +### **关于我们安装JDK时到底安装了些什么?** + +我们选中第一个 `开发工具` 时,右侧给出了提示,这是安装的 `JDK`。它是最主要的,甚至我们可以说只需要有它就可以。 + +![202010021227777](../../../public/img/2020/10/02/202010021227777.png) + +当我们选中第二个 `源代码` 时右侧给出提示,这是 Java 8 的源代码,因为 Java 是公开源代码的。 + +![202010021227888](../../../public/img/2020/10/02/202010021227888.png) + +当我选中第三个 `公共JRE` 时,右边给出提示,这是一个独立的 `JRE`,我们可以不用安装。不过一般情况我们都选择安装,目的是为了以后如果有一些 Java 程序想单独运行,那么必须配套一个 `JRE`,到那时候就可以用上了。 + +![202010021228963](../../../public/img/2020/10/02/202010021228963.png) + +比如下方是做支付宝第三方支付支持时,支付宝官方给提供的一个做签名校验的 Java 程序。后缀名为 `.jar` 的是 Java 程序,但是如果想运行此程序就必须依赖上方的一个独立 `jre`,我们刚才安装选择界面看到的就是它。(支付宝官方下载下来的这工具,就给你带着这个 JRE ) + +![202010021228999](../../../public/img/2020/10/02/202010021228999.png) + +4.等待安装,这步只是在安装 `JDK`。 + +![202010021229777](../../../public/img/2020/10/02/202010021229777.png) + +安装完 `JDK` 后,会弹出一个提示框,提示我们安装的 `JDK` 版本不受到收费影响,点确定即可。 + +![202010021232169](../../../public/img/2020/10/02/202010021232169.png) + +5.因为刚才我们没有放弃独立 `JRE` 的安装,所以现在开始安装它,自己更改好安装路径。最好类似我下方示例,然后点击下一步。 + +![202010021232222](../../../public/img/2020/10/02/202010021232222.png) + +等待安装。 + +![202010021232586](../../../public/img/2020/10/02/202010021232586.png) + +点击关闭,即完成安装。 + +![202010021233888](../../../public/img/2020/10/02/202010021233888.png) + +安装完成后,你的桌面不会出现任何图标,不用大惊小怪,`JDK` 是开发环境,不是 QQ 这类软件。 + +`JDK` 的安装目录如下。 + +::: tip 笔者说 +刚才之所以说可以不安装那个独立 `JRE`,因为 `JDK` 本身自己就自带一个 `JRE`,为什么`JDK` 会自带一个?我们就不讨论 JDK 内自带的 Java 程序,就说我们用 `JDK` 开发 Java 程序,开发好后也需要进行测试运行啊,所以自然需要这 `JRE` 了。 +::: + +![202010021234766](../../../public/img/2020/10/02/202010021234766.png) + +独立 `JRE` 的安装目录如下。 + +![202010021234888](../../../public/img/2020/10/02/202010021234888.png) + +安装完之后,我们想测试一下 `JDK` 是否安装成功,可以运行 `JDK` 安装目录下 `bin` 目录内的 `java.exe` 程序。如果你看不到 `.exe`,记得自行开启下计算机的扩展名显示。 + +在 `Windows` 中我们习惯双击运行程序,但是却发现 `java.exe` 双击后会弹出一个黑窗口一闪而过。这是因为这种程序,它们需要在特别的系统内运行,比如说我们的 `DOS` 系统,下面就和笔者去学一下基本的 `DOS` 使用吧。 + +![202010021234999](../../../public/img/2020/10/02/202010021234999.png) + +## DOS系统 + +### 什么是DOS? + +那 `DOS` 是什么呢?它的全称是 `Disk Operating System` ,即磁盘操作系统。简单点说,你看过的电影里,黑客们是不是在计算机的一个黑窗口中"运指如飞"?这个所谓的黑窗口不是 `DOS` 那就是 Linux 系。 + +实际上 `DOS` 它就是早期主流的计算机操作系统,后来 Windows 等主打可视化的系统出现,才让计算机逐渐摆脱专业的概念,变得"平民化",走入千家万家。之前之所以专业化,就是因为这个系统需要通过命令来进行计算机操作,而不能使用鼠标点来点去,所以非专业人士去背命令和习惯这使用方式,简直"太难"了。 + +![202010021235666](../../../public/img/2020/10/02/202010021235666.png) + +### 进入DOS系统 + +在Windows 系统任何位置,可以通过按下 `Windows` 键 + `r` 键,在左下角弹出的运行窗口输入 `cmd` 然后回车,就可以弹出 `DOS` 命令行。 + +![202010021235777](../../../public/img/2020/10/02/202010021235777.png) + +另外,还可以通过在 `开始菜单` 中直接搜索 `cmd`,然后 `右键以管理员身份运行` 的方式打开。 + +![202010021235888](../../../public/img/2020/10/02/202010021235888.png) + +进入了 `DOS` 命令行。要求左上方有管理员标识(如果没有此标识,你创建文件等都没有权限,有些命令甚至提示不存在)。当你是 `Windows 10` 系统,那么很可能没有,因为 `Windows 10` 对于权限的把控比较严格,所以你可以采取上方的第二种方法进入 `DOS` 命令行。 + +![202010021235999](../../../public/img/2020/10/02/202010021235999.png) + +进入了 `DOS` 命令行,先认识下组成,前部分是当前你在 `DOS` 系统所处的路径(当前目录/文件夹,目录就是文件夹的意思,之后不再解释),后部分就是可以输入命令的位置。 + +![202010021236761](../../../public/img/2020/10/02/202010021236761.png) + +上方的路径,等价于你在 `Windows` 系统中进入了如下位置。 + +![202010021236888](../../../public/img/2020/10/02/202010021236888.png) + +### DOS常用命令 + +#### 查看列表 + +在上图中,如果我们在 `Windows` 系统中进入了某个路径,可以很直观的看到当前路径下的所有文件和文件夹。那么在 `DOS` 中如何实现这一目的呢? + +输入 `dir` 命令,即可列出当前所处位置的文件和文件夹列表,如下图所示。 + +![202010021236999](../../../public/img/2020/10/02/202010021236999.png) + +#### 切换目录 + +那如果不想待在默认的路径了,想切换到其它位置。 + +- 相同磁盘的目录切换,直接通过 `cd 目录路径` 来切换。(这个路径必须存在,不然切换不过去) + + 例如:我想切换到当前目录下的 `Documents` 目录。 + + ![202010021237281](../../../public/img/2020/10/02/202010021237281.png) + +- 不同磁盘的目录切换,先通过 `盘符:` 来切换磁盘,然后 `cd 目录路径` (注意 cd 后有空格)再切换到对应位置。 + + 例如:我想切换到刚才 `JDK` 的安装目录。 + +::: tip 笔者说 +如果路径长,在输入的时候,还可以通过 `Tab` 键来进行内容补全。例如下方的输入,输入完 `De` 就可以按一下 `Tab` 键快速补全。因为 DOS 会自动识别所在目录下的内容名字,如果能匹配到就可以快速补全,当然如果有多个 `De ` 打头的内容,那就尽量输入多一些字母后再按 `Tab` ,这样就更精准。 +::: + + ![202010021237777](../../../public/img/2020/10/02/202010021237777.png) + +还有一些特别的路径切换,比如返回上一级目录。在 `Windows` 系统中,鼠标点一下返回键就可以了,在 `DOS`中,可以通过 `cd ..` 命令来切换。`..`和`.` 是每个目录下都存在的两个隐藏文件夹,它们一个代表上一级目录,一个代表当前目录。 + +![202010021237888](../../../public/img/2020/10/02/202010021237888.png) + +![202010021238777](../../../public/img/2020/10/02/202010021238777.png) + +还有在磁盘比较深的路径时,可以输入 `cd /` 来快速回到磁盘根目录下。 + +![202010021238999](../../../public/img/2020/10/02/202010021238999.png) + +#### 运行程序 + +在 `Windows` 中如果想运行程序,我们都是双击程序快捷方式或程序启动文件。而在 `DOS` 中,如果我们想要运行程序,只需要输入程序启动文件路径,然后回车即可。 + +例如:我想运行钉钉程序,我知道它的启动程序地址,那么就可以利用 `Tab` 快速提示着来输入好地址。下图的 `""` 是按 `Tab` 自动生成的,`DOS `里为了防止空格产生的影响,可以加 `""` 进行包裹,表示一个整体。 + +![202010021239111](../../../public/img/2020/10/02/202010021239111.png) + +这个路径实在太长了,如果在 `DOS` 中,使用过了且没关闭 `DOS` 窗口的情况下,还需要使用时,建议按 `↑` 或 `↓` 方向键,翻一翻历史命令。 + +### 测试JDK是否安装成功 + +OK,掌握了 `DOS` 基本使用,这时候我们再来通过它运行下 `java.exe`,输入 `java.exe` 路径太长了,我们可以偷点懒。 + +先通过 `Windows` 找到 `java.exe`,然后在地址栏输入 `cmd`,回车后就可以快速进入程序所在的位置了。 + +![202010021240572](../../../public/img/2020/10/02/202010021240572.png) + +![202010021241888](../../../public/img/2020/10/02/202010021241888.png) + +然后就可以运行 `java.exe `了,后面追加一个 `-version` 可以用来查看 `JDK` 的版本,如果出现下方所示内容,说明 `JDK` 的安装是完全正常的。 + +::: tip 笔者说 +`DOS` 中可以省略 `exe` 之类的后缀 +::: + +![202010021241999](../../../public/img/2020/10/02/202010021241999.png) + +## 环境变量 + +### 概述 + +在刚才的内容搞定后,其实我们的 Java 开发环境已经搭建完了,我们之后开发 Java 程序会一直使用刚才的`java.exe `程序。不过现在使用还是挺麻烦的,每次都要在 `DOS` 中先找到程序或输入程序路径才能运行,有没有什么办法可以在 `DOS` 任意目录使用 `java.exe` 呢? + +看看百度百科了解一下环境变量吧,其实环境变量就是操作系统里存储的一些参数或关键值,每个在操作系统里运行的程序都可以获取到这些存储的内容。(后面我们学到变量这一程序概念时,就可以更好的理解它的作用了,到时候记得回来再看看) + +![202010021242277](../../../public/img/2020/10/02/202010021242277.png) + +### 找到环境变量设置 + +在 `开始菜单` 中搜索 `环境变量`,点击 `编辑系统环境变量`,打开 `系统属性` 对话框。 + +![202010021243229](../../../public/img/2020/10/02/202010021243229.png) + +在 `高级` 选项卡中,点击 `环境变量` 就可以进入修改环境变量的对话框。 + +![202010021243777](../../../public/img/2020/10/02/202010021243777.png) + +![202010021243888](../../../public/img/2020/10/02/202010021243888.png) + +### path环境变量 + +其中 `path` 环境变量就是用来存储路径列表的,里面存储了一个个的路径。当我们在 `DOS` 命令行中直接输入程序的名字然后回车,这时候 `DOS` 会先在当前目录下搜索该文件,若找到则运行之,若找不到该文件,则根据 `path` 环境变量所设置的路径列表,顺序逐条地搜索这些路径下是否有该程序,有的话也能运行。 + +这就是我们现在需要的,可以有效解决我们为了运行 `java.exe` 而很麻烦的输入路径等,一劳永逸。有些同学还把一些游戏启动程序存到了 `path` 环境变量。 + +### 配置JAVA_HOME + +接下来就将 `java.exe` 的程序目录存储到 `path` 环境变量吧。 + +1.点击 `系统变量` 下的 `新建`,在弹出 `新建系统变量` 窗口后,将变量值设为 JDK 安装路径(bin 目录上一级),变量名设为 `JAVA_HOME` (之所以叫这名,是因为Maven、Tomcat等日后所用开发程序大多会使用到此环境变量),所以名称不允许修改。 + +![202010021245777](../../../public/img/2020/10/02/202010021245777.png) + +2.上方存储的环境变量还不完整,并且没添加到 `path` 环境变量。所以我们需要在 `path` 环境变量中再做些处理。 + +点击系统变量中的 `path` 环境变量,然后点击 `编辑`,删除其中 Oracle 默认生成的一个目录配置(JDK 1.8之后就开始自动加上了,但是这个地址对我们用处不大,删掉)。 + +![202010021245888](../../../public/img/2020/10/02/202010021245888.png) + +点击 `新增 `,添加一条 `%JAVA_HOME%\bin` 变量,`%JAVA_HOME%` 表示引用 `JAVA_HOME` 环境变量的值,这一条变量等价于在 `path` 中添加了 `D:\Develop\Java\jdk1.8.0_202\bin`。 + +![202010021245999](../../../public/img/2020/10/02/202010021245999.png) + +::: danger 笔者说 +`Win7`系统的 `path` 环境变量是全部在一起的,而不是像 `Win10` 这样一条条很清晰。自己去新加入一条:`%JAVA_HOME%\bin;`(结尾这一定要用英文`;`来分隔其他的环境变量啊!)。 + +还有我们在配置 Java 安装路径的时候,需要格外注意不要将之前的还有一些系统的 `path` 配置删除,也不要写错。(不要在蓝色选中状态时直接输入,会全部替换的!!!)否则有很多系统命令就没法在 DOS 中便捷愉快的使用了。 +::: + +![202010021246666](../../../public/img/2020/10/02/202010021246666.png) + +### 测试效果 + +配置好 `path` 环境变量之后,关闭所有的 `DOS` 窗口。再重新打开 `DOS` 后,输入 `java -version` ,我们看到和之前一样的效果,而且我们不用在输入 `java.exe` 冗长的路径了! + +![202010021246777](../../../public/img/2020/10/02/202010021246777.png) + +## 参考文献 + +[1]闷瓜蛋子. Oracle如何对JDK收费[EB/OL]. https://zhuanlan.zhihu.com/p/64731331. 2019-06-18 + +## 后记 + +`JDK` 的安装环节也就介绍到这。补充了一些基础内容,比较杂的感觉,但实际是顺序流程的学习,好好看看本篇文章大纲!每个步骤一定要实践一下!加油!有问题可以邮箱或订阅号联系笔者。 + +::: info 笔者说 +对于技术的学习,笔者一贯遵循的步骤是:先用最最简单的 demo 让它跑起来,然后学学它的最最常用 API 和 配置让自己能用起来,最后熟练使用的基础上,在空闲时尝试阅读它的源码让自己能够洞彻它的运行机制,部分问题出现的原因,同时借鉴这些技术实现来提升自己的代码高度。 + +所以在笔者的文章中,前期基本都是小白文,仅仅穿插很少量的源码研究。当然等小白文更新多了,你们还依然喜欢,后期会不定时专门对部分技术的源码进行解析。 +::: \ No newline at end of file diff --git a/docs/courses/java/index.md b/docs/courses/java/index.md index 7ea9bb909..5cfc39164 100644 --- a/docs/courses/java/index.md +++ b/docs/courses/java/index.md @@ -19,6 +19,8 @@ tags: ![202010011205888](../../public/img/2020/10/01/202010011205888.jpg) + + ## 程序概述 好了,言归正传。从看到本篇的那一刻起,你就已经推开了 IT 编程的大门。自此,程序一词或将改变你未来的人生轨迹。未来的你,按键行云流水,脑内 CPU 高速运转,屏幕切换间,高可用、高扩展、高安全性的” 完美”程序,将由你所著。[[未来的你](http://www.acfun.cn/v/ac4552801)] diff --git a/docs/public/img/2020/10/02/202010021219728.jpg b/docs/public/img/2020/10/02/202010021219728.jpg new file mode 100644 index 000000000..cf9125f4f Binary files /dev/null and b/docs/public/img/2020/10/02/202010021219728.jpg differ diff --git a/docs/public/img/2020/10/02/202010021221992.png b/docs/public/img/2020/10/02/202010021221992.png new file mode 100644 index 000000000..f86884512 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021221992.png differ diff --git a/docs/public/img/2020/10/02/202010021222666.png b/docs/public/img/2020/10/02/202010021222666.png new file mode 100644 index 000000000..7693fc55d Binary files /dev/null and b/docs/public/img/2020/10/02/202010021222666.png differ diff --git a/docs/public/img/2020/10/02/202010021222777.png b/docs/public/img/2020/10/02/202010021222777.png new file mode 100644 index 000000000..a0187717e Binary files /dev/null and b/docs/public/img/2020/10/02/202010021222777.png differ diff --git a/docs/public/img/2020/10/02/202010021222888.png b/docs/public/img/2020/10/02/202010021222888.png new file mode 100644 index 000000000..69271719f Binary files /dev/null and b/docs/public/img/2020/10/02/202010021222888.png differ diff --git a/docs/public/img/2020/10/02/202010021223666.png b/docs/public/img/2020/10/02/202010021223666.png new file mode 100644 index 000000000..ebed400cb Binary files /dev/null and b/docs/public/img/2020/10/02/202010021223666.png differ diff --git a/docs/public/img/2020/10/02/202010021223777.png b/docs/public/img/2020/10/02/202010021223777.png new file mode 100644 index 000000000..879a9b484 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021223777.png differ diff --git a/docs/public/img/2020/10/02/202010021224888.png b/docs/public/img/2020/10/02/202010021224888.png new file mode 100644 index 000000000..9feebcf0d Binary files /dev/null and b/docs/public/img/2020/10/02/202010021224888.png differ diff --git a/docs/public/img/2020/10/02/202010021224999.png b/docs/public/img/2020/10/02/202010021224999.png new file mode 100644 index 000000000..ed2d10b45 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021224999.png differ diff --git a/docs/public/img/2020/10/02/202010021225560.png b/docs/public/img/2020/10/02/202010021225560.png new file mode 100644 index 000000000..6d6f43455 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021225560.png differ diff --git a/docs/public/img/2020/10/02/202010021225676.png b/docs/public/img/2020/10/02/202010021225676.png new file mode 100644 index 000000000..f1e0f19ef Binary files /dev/null and b/docs/public/img/2020/10/02/202010021225676.png differ diff --git a/docs/public/img/2020/10/02/202010021226600.png b/docs/public/img/2020/10/02/202010021226600.png new file mode 100644 index 000000000..921656d32 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021226600.png differ diff --git a/docs/public/img/2020/10/02/202010021226999.png b/docs/public/img/2020/10/02/202010021226999.png new file mode 100644 index 000000000..61b7877d1 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021226999.png differ diff --git a/docs/public/img/2020/10/02/202010021227666.png b/docs/public/img/2020/10/02/202010021227666.png new file mode 100644 index 000000000..cc74fd014 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021227666.png differ diff --git a/docs/public/img/2020/10/02/202010021227777.png b/docs/public/img/2020/10/02/202010021227777.png new file mode 100644 index 000000000..de181b758 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021227777.png differ diff --git a/docs/public/img/2020/10/02/202010021227888.png b/docs/public/img/2020/10/02/202010021227888.png new file mode 100644 index 000000000..5da7abe7a Binary files /dev/null and b/docs/public/img/2020/10/02/202010021227888.png differ diff --git a/docs/public/img/2020/10/02/202010021228963.png b/docs/public/img/2020/10/02/202010021228963.png new file mode 100644 index 000000000..1ebc3b856 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021228963.png differ diff --git a/docs/public/img/2020/10/02/202010021228999.png b/docs/public/img/2020/10/02/202010021228999.png new file mode 100644 index 000000000..4f3ee0ebb Binary files /dev/null and b/docs/public/img/2020/10/02/202010021228999.png differ diff --git a/docs/public/img/2020/10/02/202010021229777.png b/docs/public/img/2020/10/02/202010021229777.png new file mode 100644 index 000000000..3c5e160c6 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021229777.png differ diff --git a/docs/public/img/2020/10/02/202010021232169.png b/docs/public/img/2020/10/02/202010021232169.png new file mode 100644 index 000000000..7d223ad97 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021232169.png differ diff --git a/docs/public/img/2020/10/02/202010021232222.png b/docs/public/img/2020/10/02/202010021232222.png new file mode 100644 index 000000000..7917fc0de Binary files /dev/null and b/docs/public/img/2020/10/02/202010021232222.png differ diff --git a/docs/public/img/2020/10/02/202010021232586.png b/docs/public/img/2020/10/02/202010021232586.png new file mode 100644 index 000000000..d63615cc5 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021232586.png differ diff --git a/docs/public/img/2020/10/02/202010021233888.png b/docs/public/img/2020/10/02/202010021233888.png new file mode 100644 index 000000000..ce6844c9a Binary files /dev/null and b/docs/public/img/2020/10/02/202010021233888.png differ diff --git a/docs/public/img/2020/10/02/202010021234766.png b/docs/public/img/2020/10/02/202010021234766.png new file mode 100644 index 000000000..96a4a9be2 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021234766.png differ diff --git a/docs/public/img/2020/10/02/202010021234888.png b/docs/public/img/2020/10/02/202010021234888.png new file mode 100644 index 000000000..f979b41e5 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021234888.png differ diff --git a/docs/public/img/2020/10/02/202010021234999.png b/docs/public/img/2020/10/02/202010021234999.png new file mode 100644 index 000000000..cacc9a41d Binary files /dev/null and b/docs/public/img/2020/10/02/202010021234999.png differ diff --git a/docs/public/img/2020/10/02/202010021235666.png b/docs/public/img/2020/10/02/202010021235666.png new file mode 100644 index 000000000..743f17912 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021235666.png differ diff --git a/docs/public/img/2020/10/02/202010021235777.png b/docs/public/img/2020/10/02/202010021235777.png new file mode 100644 index 000000000..e00a76767 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021235777.png differ diff --git a/docs/public/img/2020/10/02/202010021235888.png b/docs/public/img/2020/10/02/202010021235888.png new file mode 100644 index 000000000..a94e9bcde Binary files /dev/null and b/docs/public/img/2020/10/02/202010021235888.png differ diff --git a/docs/public/img/2020/10/02/202010021235999.png b/docs/public/img/2020/10/02/202010021235999.png new file mode 100644 index 000000000..3b5b16128 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021235999.png differ diff --git a/docs/public/img/2020/10/02/202010021236761.png b/docs/public/img/2020/10/02/202010021236761.png new file mode 100644 index 000000000..8a1bb416e Binary files /dev/null and b/docs/public/img/2020/10/02/202010021236761.png differ diff --git a/docs/public/img/2020/10/02/202010021236888.png b/docs/public/img/2020/10/02/202010021236888.png new file mode 100644 index 000000000..58aee59ae Binary files /dev/null and b/docs/public/img/2020/10/02/202010021236888.png differ diff --git a/docs/public/img/2020/10/02/202010021236999.png b/docs/public/img/2020/10/02/202010021236999.png new file mode 100644 index 000000000..16134bf4a Binary files /dev/null and b/docs/public/img/2020/10/02/202010021236999.png differ diff --git a/docs/public/img/2020/10/02/202010021237281.png b/docs/public/img/2020/10/02/202010021237281.png new file mode 100644 index 000000000..f70dcee2c Binary files /dev/null and b/docs/public/img/2020/10/02/202010021237281.png differ diff --git a/docs/public/img/2020/10/02/202010021237777.png b/docs/public/img/2020/10/02/202010021237777.png new file mode 100644 index 000000000..99444533e Binary files /dev/null and b/docs/public/img/2020/10/02/202010021237777.png differ diff --git a/docs/public/img/2020/10/02/202010021237888.png b/docs/public/img/2020/10/02/202010021237888.png new file mode 100644 index 000000000..a24240191 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021237888.png differ diff --git a/docs/public/img/2020/10/02/202010021238777.png b/docs/public/img/2020/10/02/202010021238777.png new file mode 100644 index 000000000..12ec5a53d Binary files /dev/null and b/docs/public/img/2020/10/02/202010021238777.png differ diff --git a/docs/public/img/2020/10/02/202010021238999.png b/docs/public/img/2020/10/02/202010021238999.png new file mode 100644 index 000000000..7f1ea3adb Binary files /dev/null and b/docs/public/img/2020/10/02/202010021238999.png differ diff --git a/docs/public/img/2020/10/02/202010021239111.png b/docs/public/img/2020/10/02/202010021239111.png new file mode 100644 index 000000000..d7bf9536e Binary files /dev/null and b/docs/public/img/2020/10/02/202010021239111.png differ diff --git a/docs/public/img/2020/10/02/202010021240572.png b/docs/public/img/2020/10/02/202010021240572.png new file mode 100644 index 000000000..d88766c79 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021240572.png differ diff --git a/docs/public/img/2020/10/02/202010021241888.png b/docs/public/img/2020/10/02/202010021241888.png new file mode 100644 index 000000000..421467d52 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021241888.png differ diff --git a/docs/public/img/2020/10/02/202010021241999.png b/docs/public/img/2020/10/02/202010021241999.png new file mode 100644 index 000000000..f2d51b48c Binary files /dev/null and b/docs/public/img/2020/10/02/202010021241999.png differ diff --git a/docs/public/img/2020/10/02/202010021242277.png b/docs/public/img/2020/10/02/202010021242277.png new file mode 100644 index 000000000..6b4e2a918 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021242277.png differ diff --git a/docs/public/img/2020/10/02/202010021243229.png b/docs/public/img/2020/10/02/202010021243229.png new file mode 100644 index 000000000..b76b4f950 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021243229.png differ diff --git a/docs/public/img/2020/10/02/202010021243777.png b/docs/public/img/2020/10/02/202010021243777.png new file mode 100644 index 000000000..a7f48f9d6 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021243777.png differ diff --git a/docs/public/img/2020/10/02/202010021243888.png b/docs/public/img/2020/10/02/202010021243888.png new file mode 100644 index 000000000..f7b8a74fa Binary files /dev/null and b/docs/public/img/2020/10/02/202010021243888.png differ diff --git a/docs/public/img/2020/10/02/202010021245777.png b/docs/public/img/2020/10/02/202010021245777.png new file mode 100644 index 000000000..ae63ccf91 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021245777.png differ diff --git a/docs/public/img/2020/10/02/202010021245888.png b/docs/public/img/2020/10/02/202010021245888.png new file mode 100644 index 000000000..8882f1084 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021245888.png differ diff --git a/docs/public/img/2020/10/02/202010021245999.png b/docs/public/img/2020/10/02/202010021245999.png new file mode 100644 index 000000000..5978b968d Binary files /dev/null and b/docs/public/img/2020/10/02/202010021245999.png differ diff --git a/docs/public/img/2020/10/02/202010021246666.png b/docs/public/img/2020/10/02/202010021246666.png new file mode 100644 index 000000000..f678675a1 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021246666.png differ diff --git a/docs/public/img/2020/10/02/202010021246777.png b/docs/public/img/2020/10/02/202010021246777.png new file mode 100644 index 000000000..edac7c3c1 Binary files /dev/null and b/docs/public/img/2020/10/02/202010021246777.png differ diff --git a/package.json b/package.json index 65b36dc07..67636b440 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "unplugin-vue-components": "^0.22.4", - "vitepress": "^1.0.0-alpha.8", + "vitepress": "^1.0.0-alpha.9", "vue": "^3.2.37" }, "dependencies": { diff --git a/yarn.lock b/yarn.lock index b978a7180..f1991ff47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2042,10 +2042,10 @@ vite@^3.0.8: optionalDependencies: fsevents "~2.3.2" -vitepress@^1.0.0-alpha.8: - version "1.0.0-alpha.8" - resolved "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-alpha.8.tgz#b6a3b503c2ea3ed0a44a16539849c02fa996c090" - integrity sha512-kTRN5DCagvMqr9OjylSV9/waGg0IHrxL0hBVuJoz7ykleZq2qR02n5CaiFq5QrSB/VRBGqiVsFQzet9vJsXS8g== +vitepress@^1.0.0-alpha.9: + version "1.0.0-alpha.9" + resolved "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-alpha.9.tgz#3426c8c6da2a63a811356f27e42fb9d521038aeb" + integrity sha512-+VxgjflIcssbuyUBRYjZRpQ8w25v6XnIbXFmm9qwLVaqZdC0rN6qViEp7oRwA3HUlrGxj7GEzqQjW7xj4+E83w== dependencies: "@docsearch/css" "^3.2.1" "@docsearch/js" "^3.2.1"