X Tutup
Skip to content

Commit 3095eb3

Browse files
committed
🚚 梳理文档结构
1 parent 6d0ecc3 commit 3095eb3

20 files changed

+165
-333
lines changed

Jenkinsfile

Lines changed: 0 additions & 13 deletions
This file was deleted.

README.md

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,17 @@
11
# javase-notes
22

3-
> :book: JavaSE 学习笔记。
4-
>
5-
6-
<p align="center">
7-
<a href="https://dunwu.gitbooks.io/javase-notes" target="_blank">
8-
:point_right: 在线电子书
9-
</a>
10-
</p>
3+
> javase-notes 是一个 javase 学习笔记。
114
125
## 内容
136

14-
基础
15-
16-
进阶
17-
18-
JDK8
19-
20-
Effective Java
7+
- [x] [Java 基础篇](docs/basics/)
8+
- [x] [Java 进阶篇](docs/advanced/)
9+
- [ ] [Java 虚拟机](docs/jvm/)
10+
- [ ] [Java 并发编程](docs/concurrent/)
11+
- [ ] [Java 编程规范](docs/style/)
12+
- [ ] [思维导图](docs/xmind/)
2113

2214
## 说明
2315

24-
### 目录结构
25-
26-
- **codes** 代码目录。包含本笔记中涉及的示例代码。
27-
- **docs** 文档目录。文档遵循 [**GitBook**](https://github.com/GitbookIO/gitbook) 规范。
28-
29-
### 运行环境
30-
31-
- **jdk** 1.8
32-
- **maven** 3.5
33-
34-
### 电子书
35-
36-
本教程已使用 Gitbook 生成电子书。:point_right:  [**在线电子书**](https://dunwu.gitbooks.io/javase-notes)
37-
38-
## 规约
39-
40-
### License
41-
42-
Apache-2.0
16+
- **`/codes`**:代码目录。
17+
- **`/docs`**:文档目录。

book.json

Lines changed: 0 additions & 70 deletions
This file was deleted.

docs/README.md

Lines changed: 2 additions & 142 deletions
Original file line numberDiff line numberDiff line change
@@ -1,143 +1,3 @@
1-
# javase-notes
1+
# 说明
22

3-
## 如何学习一门编程语言
4-
5-
很多人喜欢争论什么什么编程语言好,我认为这个话题如果不限定应用范围,就毫无意义。
6-
7-
每种编程语言必然有其优点和缺点,这也决定了它有适合的应用场景和不适合的应用场景。现代软件行业,想一门编程语言包打天下是不现实的。这中现状也造成了一种现象,一个程序员往往要掌握多种编程语言。
8-
9-
学习任何一门编程语言,都会面临的第一个问题都是:如何学习 XX 语言?
10-
11-
我不想说什么多看、多学、多写、多练之类的废话。世上事有难易乎?无他,唯手熟尔。谁不知道熟能生巧的道理?
12-
13-
我觉得有必要谈谈的是:如何由浅入深的学习一门编程语言?学习所有编程语言有没有一个相对统一的学习方法?
14-
15-
曾几何时,当我还是一名小菜鸟时,总是叹服那些大神掌握多门编程语言。后来,在多年编程工作和学习中,我陆陆续续也接触过不少编程语言:C、C++、Java、C#、Javascript、shell 等等。每次学习一门新的编程语言,掌握程度或深或浅,但是学习的曲线却大抵相似。
16-
17-
下面,我按照个人的学习经验总结一下,学习编程语言的基本步骤。
18-
19-
## 学习编程语言的步骤
20-
21-
### 基本语法
22-
23-
首先当然是了解语言的最基本语法。
24-
25-
控制台输出,如 C 的 printf,Java 的 System.out.println 等。
26-
27-
普通程序员的第一行代码一般都是输出 “Hello World” 吧。
28-
29-
- 基本数据类型
30-
31-
不同编程语言的基本数据类型不同。基本数据类型是的申请内存空间变得方便、规范化。
32-
33-
- 变量
34-
35-
不同编程语言的声明变量方式有很大不同。有的如 Java 、C++ 需要明确指定变量数据类型,这种叫强类型定义语言。有的语言(主要是脚本语言),如 Javascript、Shell 等,不需要明确指定数据类型,这种叫若类型定义语言。
36-
37-
还需要注意的一点是变量的作用域范围和生命周期。不同语言变量的作用域范围和生命周期不一定一样,这个需要在代码中细细体会,有时会为此埋雷。
38-
39-
- 逻辑控制语句
40-
41-
编程语言都会有逻辑控制语句,哪怕是汇编语言。
42-
43-
掌握条件语句、循环语句、中断循环语句(break、continue)、选择语句。一般区别仅仅在于关键字、语法格式略有不同。
44-
45-
- 运算符
46-
47-
掌握基本运算符,如算术运算符、关系运算符、逻辑运算符、赋值运算符等。
48-
49-
有些语言还提供位运算符、特殊运算符,视情节掌握。
50-
51-
- 注释(没啥好说的)
52-
53-
- 函数
54-
55-
编程语言基本都有函数。注意语法格式:是否支持出参;支持哪些数据作为入参,有些语言允许将函数作为参数传入另一个参数(即回调);返回值;如何退出函数(如 Java、C++的 return,)。
56-
57-
### 数组、枚举、集合
58-
59-
枚举只有部分编程语言有,如 Java、C++、C#。
60-
61-
但是数组和集合(有些语言叫容器)一般编程语言都有,只是有的编程语言提供的集合比较丰富。使用方法基本类似。
62-
63-
### 常用类
64-
65-
比较常用的类(当然有些语言中不叫类,叫对象或者其他什么,这个不重要,领会精神)请了解其 API 用法,如:字符串、日期、数学计算等等。
66-
67-
### 语言特性
68-
69-
语言特性这个特字反映的就是各个编程语言自身的"独特个性",这涉及的点比较多,简单列举一些。
70-
71-
**编程模式**
72-
73-
比较流行的编程模式大概有:
74-
75-
面向对象编程,主要是封装、继承、多态;函数式编程,主要是应用 Lambda;过程式编程,可以理解为实现需求功能的特定步骤。
76-
77-
每种编程模式都有一定的道理,我从不认为只有面向对象编程才是王道。
78-
79-
Java 是面向对象语言,从 Java8 开始也支持函数编程(引入 Lambda 表达式);C++ 可以算是半面向对象,半面向过程式语言。
80-
81-
**语言自身特性**
82-
83-
每个语言自身都有一些重要特性需要了解。例如,学习 C、C++,你必须了解内存的申请和释放,了解指针、引用。而学习 Java,你需要了解 JVM,垃圾回收机制。学习 Javascript,你需要了解 DOM 操作等。
84-
85-
### 代码组织、模块加载、库管理
86-
87-
一个程序一般都有很多个源代码文件。这就会引入这些问题:如何将代码文件组织起来?如何根据业务需要,选择将部分模块启动时进行加载,部分模块使用懒加载(或者热加载)?
88-
89-
最基本的引用文件就不提了,如C、C++的#include,Java 的 import 等。
90-
91-
针对代码组织、模块加载、库管理这些问题,不同语言会有不同的解决方案。
92-
93-
如 Java 可以用 maven、gradle 管理项目依赖、组织代码结构;Javascript (包括 Nodejs、jquery、react 等等库)可以用 npm、yarn 管理依赖,用 webpack 等工具管理模块加载。
94-
95-
### 容错处理
96-
97-
程序总难免会有 bug。
98-
99-
所以为了代码健壮性也好,为了方便定位问题也好,代码中需要有容错处理。常见的手段有:
100-
101-
- 异常
102-
- 断言
103-
- 日志
104-
- 调试
105-
- 单元测试
106-
107-
### 输入输出和文件处理
108-
109-
这块知识比较繁杂。建议提纲挈领的学习一下,理解基本概念,比如输入输出流、管道等等。至于 API,用到的时候再查一下即可。
110-
111-
### 回调机制
112-
113-
每种语言实现回调的方式有所不同,如 .Net 的 delegate (大量被用于 WinForm 程序);Javascript 中函数天然支持回调:Javascript 函数允许传入另一个函数作为入参,然后在方法中调用它。其它语言的回调方式不一一列举。
114-
115-
### 序列化和反序列化
116-
117-
首先需要了解的是,序列化和反序列化的作用是为了在不同平台之间传输对象。
118-
119-
其次,要知道序列化存在多种方式,不同编程语言可能有多种方案。根据应用的序列化方式,选择性了解即可。
120-
121-
### 进阶特性
122-
123-
以下学习内容属于进阶性内容。可以根据开发需要去学习、掌握。需要注意的是,学习这些特性的态度应该是不学则已,学则死磕。因为半懂半不懂,特别容易引入问题。
124-
125-
*对于半桶水的同学,我想说:放过自己,也放过别人,活着不好吗?*
126-
127-
**并发编程:**好处多多,十分重要,但是并发代码容易出错,且出错难以定位。要学习还是要花很大力气的,需要了解大量知识,如:进程、线程、同步、异步、读写锁等等。
128-
129-
**反射:**让你可以动态编程(慎用)。
130-
131-
**泛型:**集合(或者叫容器)的基石。精通泛型,能大大提高你的代码效率。
132-
133-
**元数据**:描述数据的数据。Java 中叫做注解。
134-
135-
### 库和框架
136-
137-
学习一门编程语言,难免需要用到围绕它构建的技术生态圈——库和框架。这方面知识范围太庞大,根据实际应用领域去学习吧。比如搞 JavaWeb,你多多少少肯定要用到 Spring、Mybatis、Hibernate、Shiro等大量开发框架;如果做 Javascript 前端,你可能会用到 React、Vue、Angular 、jQuery 等库或框架。
138-
139-
## 小结
140-
141-
总结以上,编程语言学习的道路是任重而道远的,未来是光明的。
142-
143-
最后一句话与君共勉:路漫漫兮其修远,吾将上下而求索。
3+
> JavaSE 文档目录。

docs/SUMMARY.md

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)
X Tutup