部分和Ruby知识树重叠
1 提问的智慧
如何提问很重要, 在学习任何知识之前, 需要先学会正确地提问.
2 IDEA学习
2.1 idea
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
, Hamcrest
和 Truth
, 在 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
5.4 类库
5.4.1 The Collection Framework
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
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