Skip to content

Commit fe1338f

Browse files
committed
add linux
1 parent 34613d5 commit fe1338f

4 files changed

Lines changed: 68 additions & 18 deletions

File tree

README.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44

55
| 🏖 | 🌁| 📮 | 🌈 | 🚀 |⚔️ | 🖥 | 🚏 |
66
| :--------: | :---------: | :---------: | :---------: | :---------: | :---------:| :---------: | :-------: |
7-
| [Java](#Java) | [数据库](#数据库)|[计算机网络](#计算机网络) | [数据结构与算法](#数据结构与算法) |[操作系统](#操作系统)|[设计模式](#设计模式)| [场景题和设计题](#场景题和设计题) |[框架和中间件底层原理](#框架和中间件底层原理)|
7+
| [Java](#Java) | [数据库](#数据库)|[网络](#网络) | [算法](#算法) |[操作系统](#操作系统)|[设计模式](#设计模式)| [系统设计](#系统设计)
8+
|[框架原理](#框架原理)|
89

910

1011
### Java
@@ -26,24 +27,26 @@
2627

2728
- [MySQL数据库开发规范](https://github.com/zaiyunduan123/Java-Interview/blob/master/notes/database/DataBaseDesign.md)
2829

29-
### 计算机网络
30+
### 网络
3031
- [计算机网络](https://github.com/zaiyunduan123/Java-Interview/blob/master/notes/network/Computer-Network.md)
3132

32-
### 数据结构与算法
33+
### 算法
3334
- [数据结构与算法](https://github.com/zaiyunduan123/Java-Interview/blob/master/notes/algorithms/DataStructures-Algorithms.md)
3435

3536
- [LeetCode解题总结](https://github.com/zaiyunduan123/leetcode-java)
3637

3738
### 操作系统
3839
- [操作系统](https://github.com/zaiyunduan123/Java-Interview/blob/master/notes/os/Operating-System.md)
3940

41+
- [Linux](https://github.com/zaiyunduan123/Java-Interview/blob/master/notes/os/Linux.md)
42+
4043
### 设计模式
4144
- [设计模式](https://github.com/zaiyunduan123/Java-Interview/blob/master/notes/design/Design-Patterns.md)
4245

43-
### 场景题和设计题
44-
- [场景题和设计题](https://github.com/zaiyunduan123/Java-Interview/blob/master/notes/scene/Scene-Design.md)
46+
### 系统设计
47+
- [系统设计](https://github.com/zaiyunduan123/Java-Interview/blob/master/notes/scene/Scene-Design.md)
4548

46-
### 框架和中间件底层原理
49+
### 框架原理
4750
- [SSM实现原理](https://github.com/zaiyunduan123/Java-Interview/blob/master/notes/framework/Framework.md)
4851

4952
- [Solr实现原理](https://github.com/zaiyunduan123/Java-Interview/blob/master/notes/framework/Solr.md)

notes/algorithms/DataStructures-Algorithms.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@ v[i]表示物品i的价值,w[i]表示物品i的重量,W 为背包的重量
2424
```java
2525
   dp[i][W] = max{dp[i − 1][W],  dp[i − 1][W − w[i]] + v[i]}
2626
```
27-
 
2827

29-
优化空间复杂度
28+
#### 优化空间复杂度
3029

3130
以上方法的时间和空间复杂度均为O(n*W),其中时间复杂度基本已经不能再优化了,但空间复杂度却可以优化到O(W):
3231

notes/os/Linux.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
## Linux 系统的顶层目录结构
2+
/ 根目录
3+
├── bin 存放用户二进制文件
4+
├── boot 存放内核引导配置文件
5+
├── dev 存放设备文件
6+
├── etc 存放系统配置文件
7+
├── home 用户主目录
8+
├── lib 动态共享库
9+
├── lost+found 文件系统恢复时的恢复文件
10+
├── media 可卸载存储介质挂载点
11+
├── mnt 文件系统临时挂载点
12+
├── opt 附加的应用程序包
13+
├── proc 系统内存的映射目录,提供内核与进程信息
14+
├── root root 用户主目录
15+
├── sbin 存放系统二进制文件
16+
├── srv 存放服务相关数据
17+
├── sys sys 虚拟文件系统挂载点
18+
├── tmp 存放临时文件
19+
├── usr 存放用户应用程序
20+
└── var 存放邮件、系统日志等变化文件
21+
Linux 与其他类 UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件。使用命 令 mkdir 创建目录时,若期望创建的目录的名称与现有的文件名(或目录名)重复,则会创建失败。
22+
23+
24+
## linux内核map图
25+
26+
http://makelinux.net/kernel_map/
27+
![](https://github.com/zaiyunduan123/Java-Interview/blob/master/image/os-2.png)
28+
29+
## Linux中软链接和硬链接的区别
30+
我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。
31+
- 用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;
32+
- 元数据,则是文件的附加属性,如文件大小、创建时间、所有者等信息;
33+
34+
在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是 \文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块
35+
36+
为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若一个 inode 号对应多个文件名,则称这些文件为 硬链接。换言之,硬链接就是同一个文件使用了多个别名。
37+
38+
39+
由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:
40+
- 文件有相同的 inode 及 data block;
41+
- 只能对已存在的文件进行创建;
42+
- 不能交叉文件系统进行硬链接的创建;
43+
- 不能对目录进行创建,只可对文件创建;
44+
- 删除一个硬链接文件并不影响其他有相同 inode 号的文件。
45+
46+
ln -s source dist # 建立软连接
47+
ln source dist # 建立硬连接
48+
49+
- 硬链接: 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接
50+
- 软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。(简单地理解为 Windows 中常见的快捷方式)
51+
52+
53+
54+
### kill进程杀不掉的原因
55+
1. 进程已经成为僵死进程,当它的父进程将它回收或将它的父进程kill掉即可在ps输出看不到了;
56+
2. 进程正处在内核状态中,Linux进程运行时分内核和用户两种状态,当进程进入内核状态后,会屏蔽所有信号,包括SIGKIL,所以这个时候kill -9也变得无效了
57+
58+

notes/os/Operating-System.md

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,6 @@
3131
8. 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
3232

3333

34-
## Linux中软链接和硬链接的区别
35-
ln -s source dist # 建立软连接
36-
ln source dist # 建立硬连接
37-
建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接
38-
1. 硬连接就像一个文件有多个文件名,
39-
2. 软连接就是产生一个新文件(这个文件内容,实际上就是记当要链接原文件路径的信息),这个文件指向另一个文件的位置
4034

4135

4236
## 内核态与用户态
@@ -57,7 +51,3 @@ ln source dist # 建立硬连接
5751
4. 这些指令称之为陷阱(trap)或者系统调用处理器(system call handler). 他们会读取程序放入内存的数据参数, 并执行程序请求的服务
5852
5. 系统调用完成后, 操作系统会重置CPU为用户态并返回系统调用的结果
5953

60-
## linux内核map图
61-
62-
http://makelinux.net/kernel_map/
63-
![](https://github.com/zaiyunduan123/Java-Interview/blob/master/image/os-2.png)

0 commit comments

Comments
 (0)