mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-16 18:10:13 +08:00
commit
a3de2cdeb0
15
README.md
15
README.md
@ -1,4 +1,4 @@
|
|||||||
👍推荐 [0.73折购买阿里云服务器!1核2G 84元即可薅1年,力度很大,推荐3年(新用户优惠更大,非新人的话可用朋友/亲人的身份证购买)](https://www.aliyun.com/1111/pintuan-share?ptCode=MTUyNTA5NzQ1MTc4MDE0OHx8MTE0fDE%3D&userCode=hf47liqn)
|
👍推荐 [送你一个 0.73折购买阿里云服务器的机会](https://www.aliyun.com/1111/pintuan-share?ptCode=MTUyNTA5NzQ1MTc4MDE0OHx8MTE0fDE%3D&userCode=hf47liqn) 。1核2G 84元即可薅1年,力度很大,推荐3年(不建议非人新购买,非人新可以注关一下其他云厂商活动或者用朋友/人亲的身份证购买)
|
||||||
|
|
||||||
👍推荐 [在线阅读](https://snailclimb.gitee.io/javaguide) (Github 访问速度比较慢可能会导致部分图片无法刷新出来)
|
👍推荐 [在线阅读](https://snailclimb.gitee.io/javaguide) (Github 访问速度比较慢可能会导致部分图片无法刷新出来)
|
||||||
|
|
||||||
@ -17,24 +17,21 @@
|
|||||||
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-3/logo - 副本.png" width=""/>
|
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-3/logo - 副本.png" width=""/>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://snailclimb.gitee.io/javaguide"><img src="https://img.shields.io/badge/阅读-read-brightgreen.svg" alt="阅读"></a>
|
<a href="https://snailclimb.gitee.io/javaguide"><img src="https://img.shields.io/badge/阅读-read-brightgreen.svg" alt="阅读"></a>
|
||||||
<a href="#公众号"><img src="https://img.shields.io/badge/%E5%85%AC%E4%BC%97%E5%8F%B7-JavaGuide-lightgrey.svg" alt="公众号"></a>
|
<a href="#公众号"><img src="https://img.shields.io/badge/%E5%85%AC%E4%BC%97%E5%8F%B7-JavaGuide-lightgrey.svg" alt="公众号"></a>
|
||||||
<a href="#公众号"><img src="https://img.shields.io/badge/PDF-Java面试突击-important.svg" alt="公众号"></a>
|
<a href="#公众号"><img src="https://img.shields.io/badge/PDF-Java面试突击-important.svg" alt="公众号"></a>
|
||||||
<a href="#投稿"><img src="https://img.shields.io/badge/support-投稿-critical.svg" alt="投稿"></a>
|
<a href="#投稿"><img src="https://img.shields.io/badge/support-投稿-critical.svg" alt="投稿"></a>
|
||||||
|
<img src="https://img.shields.io/github/stars/Snailclimb/JavaGuide" alt="投稿">
|
||||||
<a href="https://xiaozhuanlan.com/javainterview?rel=javaguide"><img src="https://img.shields.io/badge/Java-面试指南-important" alt="投稿"></a>
|
<a href="https://xiaozhuanlan.com/javainterview?rel=javaguide"><img src="https://img.shields.io/badge/Java-面试指南-important" alt="投稿"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<h3 align="center">Sponsor</h3>
|
<h3 align="center">Sponsor</h3>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="center" valign="middle">
|
|
||||||
<a href="https://t.1yb.co/5p8J">
|
|
||||||
<img src="./media/sponsor/xiangxue.png" style="margin: 0 auto;width:450px" /></a>
|
|
||||||
</td>
|
|
||||||
<td align="center" valign="middle">
|
<td align="center" valign="middle">
|
||||||
<a href="https://w.url.cn/s/AS6JeXA">
|
<a href="https://w.url.cn/s/AS6JeXA">
|
||||||
<img src="./media/sponsor/kaikeba.png" style="margin: 0 auto;width:450px" /></a>
|
<img src="./media/sponsor/kaikeba.png" style="margin: 0 auto;width:450px" /></a>
|
||||||
@ -44,6 +41,7 @@
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->
|
<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->
|
||||||
|
|
||||||
<!-- code_chunk_output -->
|
<!-- code_chunk_output -->
|
||||||
@ -178,7 +176,7 @@
|
|||||||
### 数据结构
|
### 数据结构
|
||||||
|
|
||||||
1. [不了解布隆过滤器?一文给你整的明明白白!](docs/dataStructures-algorithms/data-structure/bloom-filter.md)
|
1. [不了解布隆过滤器?一文给你整的明明白白!](docs/dataStructures-algorithms/data-structure/bloom-filter.md)
|
||||||
2. [数据结构知识学习与面试](docs/dataStructures-algorithms/数据结构.md)
|
2. 常见数据结构总结(正在路上)
|
||||||
|
|
||||||
### 算法
|
### 算法
|
||||||
|
|
||||||
@ -393,7 +391,8 @@ CAP 也就是 Consistency(一致性)、Availability(可用性)、Partiti
|
|||||||
|
|
||||||
1. **Java** :[JAD 反编译](docs/java/JAD反编译tricks.md)、[手把手教你定位常见 Java 性能问题](./docs/java/手把手教你定位常见Java性能问题.md)
|
1. **Java** :[JAD 反编译](docs/java/JAD反编译tricks.md)、[手把手教你定位常见 Java 性能问题](./docs/java/手把手教你定位常见Java性能问题.md)
|
||||||
2. **Git** :[Git 入门](docs/tools/Git.md)
|
2. **Git** :[Git 入门](docs/tools/Git.md)
|
||||||
3. **Docker** : [Docker 基本概念解读](docs/tools/Docker.md) 、[一文搞懂 Docker 镜像的常用操作!](docs/tools/Docker-Image.md)
|
3. **Github** : [我使用Github 5 年总结了这些骚操作](docs/tools/Github技巧.md)
|
||||||
|
4. **Docker** : [Docker 基本概念解读](docs/tools/Docker.md) 、[一文搞懂 Docker 镜像的常用操作!](docs/tools/Docker-Image.md)
|
||||||
|
|
||||||
## 面试指南
|
## 面试指南
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ public class ArrayList<E> extends AbstractList<E>
|
|||||||
|
|
||||||
- `RandomAccess` 是一个标志接口,表明实现这个这个接口的 List 集合是支持**快速随机访问**的。在 `ArrayList` 中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。
|
- `RandomAccess` 是一个标志接口,表明实现这个这个接口的 List 集合是支持**快速随机访问**的。在 `ArrayList` 中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。
|
||||||
- `ArrayList` 实现了 **`Cloneable` 接口** ,即覆盖了函数`clone()`,能被克隆。
|
- `ArrayList` 实现了 **`Cloneable` 接口** ,即覆盖了函数`clone()`,能被克隆。
|
||||||
- `ArrayList` 实现了 java.io.Serializable `接口,这意味着`ArrayList`支持序列化,能通过序列化去传输。
|
- `ArrayList` 实现了 `java.io.Serializable `接口,这意味着`ArrayList`支持序列化,能通过序列化去传输。
|
||||||
|
|
||||||
### 1.1. Arraylist 和 Vector 的区别?
|
### 1.1. Arraylist 和 Vector 的区别?
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ public String readAllCookies(HttpServletRequest request) {
|
|||||||
|
|
||||||
这是一道经典的面试题!
|
这是一道经典的面试题!
|
||||||
|
|
||||||
一般是通过 Cookie 来保存 SessionID ,假如你使用了 Cookie 保存 SessionID的方案的话, 如果客户端禁用了Cookie,那么Seesion就无法正常工作。
|
一般是通过 Cookie 来保存 SessionID ,假如你使用了 Cookie 保存 SessionID的方案的话, 如果客户端禁用了Cookie,那么Session就无法正常工作。
|
||||||
|
|
||||||
但是,并不是没有 Cookie 之后就不能用 Session 了,比如你可以将SessionID放在请求的 url 里面`https://javaguide.cn/?session_id=xxx` 。这种方案的话可行,但是安全性和用户体验感降低。当然,为了你也可以对 SessionID 进行一次加密之后再传入后端。
|
但是,并不是没有 Cookie 之后就不能用 Session 了,比如你可以将SessionID放在请求的 url 里面`https://javaguide.cn/?session_id=xxx` 。这种方案的话可行,但是安全性和用户体验感降低。当然,为了你也可以对 SessionID 进行一次加密之后再传入后端。
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ POST /classes:新建一个班级
|
|||||||
|
|
||||||
### 一、重要概念
|
### 一、重要概念
|
||||||
|
|
||||||
REST,即 **REpresentational State Transfer** 的缩写。这个词组的翻译过来就是"表现层状态转化"。这样理解起来甚是晦涩,实际上 REST 的全称是 **Resource Representational State Transfe** ,直白地翻译过来就是 **“资源”在网络传输中以某种“表现形式”进行“状态转移”** 。如果还是不能继续理解,请继续往下看,相信下面的讲解一定能让你理解到底啥是 REST 。
|
REST,即 **REpresentational State Transfer** 的缩写。这个词组的翻译过来就是"表现层状态转化"。这样理解起来甚是晦涩,实际上 REST 的全称是 **Resource Representational State Transfer** ,直白地翻译过来就是 **“资源”在网络传输中以某种“表现形式”进行“状态转移”** 。如果还是不能继续理解,请继续往下看,相信下面的讲解一定能让你理解到底啥是 REST 。
|
||||||
|
|
||||||
我们分别对上面涉及到的概念进行解读,以便加深理解,不过实际上你不需要搞懂下面这些概念,也能看懂我下一部分要介绍到的内容。不过,为了更好地能跟别人扯扯 “RESTful API”我建议你还是要好好理解一下!
|
我们分别对上面涉及到的概念进行解读,以便加深理解,不过实际上你不需要搞懂下面这些概念,也能看懂我下一部分要介绍到的内容。不过,为了更好地能跟别人扯扯 “RESTful API”我建议你还是要好好理解一下!
|
||||||
|
|
||||||
|
121
docs/tools/Github技巧.md
Normal file
121
docs/tools/Github技巧.md
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
我使用 Github 已经有 5 年多了,今天毫无保留地把自己觉得比较有用的 Gihub 小技巧送给关注 JavaGuide 的各位小伙伴。
|
||||||
|
|
||||||
|
这篇文章肝了很久,就挺用心的,大家看内容就知道了。
|
||||||
|
|
||||||
|
如果觉得有收获的话,不要白嫖!点个赞/在看就是对我最大的鼓励。你要是可以三连(点赞+在看+转发)的话,我就更爽了(_我在想屁吃?_)。
|
||||||
|
|
||||||
|
## 1. 一键生成 Github 简历
|
||||||
|
|
||||||
|
通过 [http://resume.github.io/](http://resume.github.io/) 这个网站你可以一键生成一个在线的 Github 简历。
|
||||||
|
|
||||||
|
当时我参加的校招的时候,个人信息那里就放了一个在线的 Github 简历。我觉得这样会让面试官感觉你是一个内行,会提高一些印象分。
|
||||||
|
|
||||||
|
但是,如果你的 Github 没有什么项目的话还是不要放在简历里面了。生成后的效果如下图所示。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 2. 个性化 Github 首页
|
||||||
|
|
||||||
|
Github 目前支持在个人主页自定义展示一些内容。展示效果如下图所示。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
想要做到这样非常简单,你只需要创建一个和你的 Github 账户同名的仓库,然后自定义`README.md`的内容即可。
|
||||||
|
|
||||||
|
展示在你主页的自定义内容就是`README.md`的内容(_不会 Markdown 语法的小伙伴自行面壁 5 分钟_)。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
这个也是可以玩出花来的!比如说:通过 [github-readme-stats](https://hellogithub.com/periodical/statistics/click/?target=https://github.com/anuraghazra/github-readme-stats) 这个开源项目,你可以 README 中展示动态生成的 GitHub 统计信息。展示效果如下图所示。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
关于个性化首页这个就不多提了,感兴趣的小伙伴自行研究一下。
|
||||||
|
|
||||||
|
## 3. 自定义项目徽章
|
||||||
|
|
||||||
|
你在 Github 上看到的项目徽章都是通过 [https://shields.io/](https://shields.io/) 这个网站生成的。我的 JavaGuide 这个项目的徽章如下图所示。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
并且,你不光可以生成静态徽章,shield.io 还可以动态读取你项目的状态并生成对应的徽章。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
生成的描述项目状态的徽章效果如下图所示。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 4. Github 表情
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
如果你想要在 Github 使用表情的话,可以在这里找找 :[www.webfx.com/tools/emoji-cheat-sheet/ ](www.webfx.com/tools/emoji-cheat-sheet/)。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 5. 高效阅读 Github 项目的源代码
|
||||||
|
|
||||||
|
Github 前段时间推出的 Codespaces 可以提供类似 VS Code 的在线 IDE,不过目前还没还没完全开发使用。
|
||||||
|
|
||||||
|
简单介绍几种我最常用的阅读 Github 项目源代码的方式。
|
||||||
|
|
||||||
|
### 5.1. Chrome 插件 Octotree
|
||||||
|
|
||||||
|
这个已经老生常谈了,是我最喜欢的一种方式。使用了 Octotree 之后网页侧边栏会按照树形结构展示项目,为我们带来 IDE 般的阅读源代码的感受。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 5.2. Chrome 插件 SourceGraph
|
||||||
|
|
||||||
|
我不想将项目 clone 到本地的时候一般就会使用这种方式来阅读项目源代码。SourceGraph 不仅可以让我们在 Github 优雅的查看代码,它还支持一些骚操作,比如:类之间的跳转、代码搜索等功能。
|
||||||
|
|
||||||
|
当你下载了这个插件之后,你的项目主页会多出一个小图标如下图所示。点击这个小图标即可在线阅读项目源代码。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
使用 SourceGraph 阅读代码的就像下面这样,同样是树形结构展示代码,但是我个人感觉没有 Octotree 的手感舒服。不过,SourceGraph 内置了很多插件,而且还支持类之间的跳转!
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 5.3. 克隆项目到本地
|
||||||
|
|
||||||
|
先把项目克隆到本地,然后使用自己喜欢的 IDE 来阅读。可以说是最酸爽的方式了!
|
||||||
|
|
||||||
|
如果你想要深入了解某个项目的话,首选这种方式。一个`git clone` 就完事了。
|
||||||
|
|
||||||
|
### 5.4. 其他
|
||||||
|
|
||||||
|
如果你要看的是前端项目的话,还可以考虑使用 [https://stackblitz.com/](https://stackblitz.com/) 这个网站。
|
||||||
|
|
||||||
|
这个网站会提供一个类似 VS Code 的在线 IDE。
|
||||||
|
|
||||||
|
## 6. 一键开启 Github 夜间模式
|
||||||
|
|
||||||
|
通过 **GitHub Dark Theme** 这个 Chrome 插件你可以将 Github 的主题变为夜间样式。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 7. 扩展 Github 的功能
|
||||||
|
|
||||||
|
**Enhanced GitHub** 可以让你的 Github 更好用。这个 Chrome 插件可以可视化你的 Github 仓库大小,每个文件的大小并且可以让你快速下载单个文件。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 8. 自动为 Markdown 文件生成目录
|
||||||
|
|
||||||
|
如果你想为 Github 上的 Markdown 文件生成目录的话,通过 VS Code 的 **Markdown Preview Enhanced** 这个插件就可以了。
|
||||||
|
|
||||||
|
生成的目录效果如下图所示。你直接点击目录中的链接即可跳转到文章对应的位置,可以优化阅读体验。
|
||||||
|
|
||||||
|
.png>)
|
||||||
|
|
||||||
|
## 9. 后记
|
||||||
|
|
||||||
|
这篇文章是我上周六的时候坐在窗台写的,花了一下午时间。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
除了我提到的这些技巧之外,像 Github 搜索技巧、GitHub Actions 等内容的话,我这里没有提,感兴趣的小伙伴自行研究一下。
|
||||||
|
|
||||||
|
这里多说一句心里话: **Github 搜索技巧不必要记网上那些文章说的各种命令啥的,真没啥卵用。你会发现你用的最多的还是关键字搜索以及 Github 自带的筛选功能。**
|
Loading…
x
Reference in New Issue
Block a user