More: More Dengqinghua

Java知识树

2018-03-19

该文档涵盖了Java从初级程序员至高级程序员, 最终成为系统架构师需要掌握的知识点.

阅读完该文档后,您将会了解到:

部分和Ruby知识树重叠

1 提问的智慧

如何提问很重要, 在学习任何知识之前, 需要先学会正确地提问.

  • 提问的智慧原文: 这里
  • 提问的智慧中文版本: 这里

2 IDEA学习

2.1 idea

judasn/IntelliJ-IDEA-Tutorial

2.2 vim

您可以参考或者使用我的ideavimrc配置

3 Linux操作

建议推荐学习鸟哥私房菜础篇

3.1 基础命令

ls
history
su/sudo
mkdir/rmdir
touch
chmod
chown
apt-get/apt-cache,
tar
date
cat
cp
mv
pwd
cd
grep
man,
ps aux|grep
kill/pkill
whereis
alias
df/du
rm
echo
diff
wget
ifconfig
netstat
top
crontab
scp
curl
tail -f
ssh
yum

关于每个命令的具体用法,可以查询下方给出的网站: Linux命令便捷查询手册。 需要了解linux的标准输入,标准输出,标准错误。

3.2 资料

4 git和git-flow

4.1 git

4.1.1 常用命令
git --help

usage: git [--version] [--help] [-C <path>] [-c name=value]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           <command> [<args>]

The most commonly used git commands are:
   add        Add file contents to the index
   bisect     Find by binary search the change that introduced a bug
   branch     List, create, or delete branches
   checkout   Checkout a branch or paths to the working tree
   clone      Clone a repository into a new directory
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   fetch      Download objects and refs from another repository
   grep       Print lines matching a pattern
   init       Create an empty Git repository or reinitialize an existing one
   log        Show commit logs
   merge      Join two or more development histories together
   mv         Move or rename a file, a directory, or a symlink
   pull       Fetch from and integrate with another repository or a local branch
   push       Update remote refs along with associated objects
   rebase     Forward-port local commits to the updated upstream head
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index
   show       Show various types of objects
   status     Show the working tree status
   tag        Create, list, delete or verify a tag object signed with GPG

4.1.2 问题
  • Git的三颗树: working dir, Index, HEAD分别是什么?
  • git add, git commit, git stash 做了什么操作,文件是如何标志和转移的?
4.1.3 资料

4.2 git-flow

4.2.1 工作原理
4.2.2 常用命令
  • git flow init
  • git flow feature start
  • git flow feature publish
  • git flow feature track
  • git flow feature finish
  • git flow release [start|publlish|track|finish]
4.2.3 问题
  • Git Flow 解决了什么问题, 其基本思想是什么?
  • Git Flow中的分支从哪里而来,最后到哪里去?
  • Git Flow中的命令和Git中的命令是如何对应的?

5 Java语言

5.1 基础语法

5.2 Maven

5.3 JUnit测试

5.3.1 JUnit5

官方推荐第三方的 Assertion: AssertJ, HamcrestTruth, 在 spring-boot-starter-test 中, 引用了前两者

+- org.springframework.boot:spring-boot-starter-test:jar:2.2.1.RELEASE:test
|  +- org.junit.jupiter:junit-jupiter:jar:5.5.2:test
|  |  \- org.junit.jupiter:junit-jupiter-params:jar:5.3.2:test
|  +- org.mockito:mockito-junit-jupiter:jar:3.1.0:test
|  +- org.assertj:assertj-core:jar:3.13.2:test
|  +- org.hamcrest:hamcrest:jar:2.1:test
|  +- org.mockito:mockito-core:jar:3.1.0:test
|  |  +- net.bytebuddy:byte-buddy:jar:1.10.2:test
|  |  +- net.bytebuddy:byte-buddy-agent:jar:1.10.2:test
|  |  \- org.objenesis:objenesis:jar:2.6:test

5.3.2 Mockito

wiki

5.4 类库

5.4.1 The Collection Framework

Collection Reference Collection_interfaces

List, Stack 是Java常使用的数据结构, 在Data Structures and Algorithm Analysis in Java这本书讲解了她的基本实现.

5.4.2 Java 8 Lambdas

个人觉得lambda表达式大大简化了Java, 建议阅读 Java 8 Lambdas 这本书

关键词:

  • Optional
  • Predicate/Consumer/Function/Runnable/Supplier/UnaryOperator/BinaryOperator
  • Stream/filter/map/max/min/sort
  • Default methods in Interface
  • Method References
  • peek(和ruby的tap很相似)

5.5 JVM

JVM剖析

5.6 Concurrency

6 代码规范

7 Spring

8 服务间通信

  • 设计原则及实例
  • 接口
  • 队列
    • kakfa

9 Web前端

  • 浏览器:firebug、渲染模型
  • html
  • css
  • javascript
  • ajax
  • 提高篇
    • Web流行框架
    • node
    • react
    • angular
    • vue

10 数据库

  • 数据库表结构设计
  • 如何建立高效索引
  • 慢查询优化
  • 主从
  • 高可用

11 网络安全

  • 白帽子讲web安全
  • 黑客攻防技术宝典
  • 数据库注入
  • XXS攻击

12 设计原则

  • Head first设计模式
  • 重构
  • 敏捷软件开发:原则、模式与实践

13 计算机基础

  • 操作系统
    • 深入理解计算机系统
  • 算法结构
    • Java
    • 编程珠玑
    • 框架核心算法

14 HTTP协议

  • HTTP The Definitive Guide
  • TCP/IP详解

15 缓存框架

  • 浏览器端
  • CDN
  • varnish
  • nginx
  • Redis

16 异步处理框架

  • Redis
  • Kafka

17 搜索框架

ElasticSearch

18 服务器框架

  • nginx
  • passenger