Skip to content

Commit

Permalink
Merge pull request #31 from jiangwu10057/linux
Browse files Browse the repository at this point in the history
feat:更新linux内存管理、多线程机制
  • Loading branch information
colinlet authored Jul 3, 2021
2 parents 05662a6 + 7b277fa commit b0e1073
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 4 deletions.
4 changes: 4 additions & 0 deletions docs/03.PHP/QA.md
Original file line number Diff line number Diff line change
Expand Up @@ -598,3 +598,7 @@ WINDOWS自带的记事本,在保存一个以 UTF-8 编码的文件时,会在
去除方法:$result = trim($result, "\xEF\xBB\xBF");

### 模板引擎是什么,解决什么问题、实现原理(Smarty、Twig、Blade)


### 写一个函数,尽可能高效的从一个标准 URL 中取出文件的扩展名
parse_str,explode
7 changes: 7 additions & 0 deletions docs/05.MySQL/QA.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,3 +286,10 @@ MySQL 单表容量在`500万`左右,性能处于最佳状态,此时,MySQL
### my.cnf 配置

### 慢查询


### 优化 MYSQL 的方法
- 数据超过一定数量或者体积,请拆分表,垂直或者水平分
- 务必有自增主键。通过自增主键来查数据是最快的。
- 常用的查询字段建立联合索引,写 SQL 一定要尊从最左原则,用到这个索引。
- 不要把逻辑运算放到 sql 里
11 changes: 10 additions & 1 deletion docs/06.Redis/QA.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Redis 是一个高性能的 key-value 数据库。每秒可执行操作高达 10

### 持久化策略

#### 快照持久化
#### 快照持久化 RDB

将某一时刻的所有数据写入硬盘。使用`BGSAVE`命令,随着内存使用量的增加,执行 BGSAVE 可能会导致系统长时间地停顿

Expand Down Expand Up @@ -190,6 +190,15 @@ Redis 是基于内存的操作,CPU 不是 Redis 的瓶颈,Redis 瓶颈最有
|ZREM|遍历压缩列表,删除所有包含给定成员的节点,以及被删除成员节点旁边的分值节点|遍历跳跃表,删除所有包含了给定成员的跳跃表节点。并在字典中解除被删除元素的成员和分值关联|
|ZSCORE|遍历压缩列表,查找包含了给定成员的节点,然后取出成员节点旁边的分值节点保存的元素分值|直接从字典中取出给定成员的分值|


### redis 跳跃表

跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。

跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。

在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都使用跳跃表来代替平衡树。

### redis.conf 配置

### 慢查询
29 changes: 26 additions & 3 deletions docs/07.Linux/QA.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,20 +148,43 @@ X 个 CPU 的电脑,可接受的系统负荷最大为 `X.0` 。将`15分钟`

### Linux 内存管理

### 函数
malloc分配虚拟内存
mmap虚拟内存映射方法
hugepage虚拟内存映射方法,分配2MB或1GB
#### 虚拟内存

一种实现在计算机软硬件之间的内存管理技术,将程序使用到的内存地址映射到计算机内存中的物理地址
32位虚拟内存大小为0-4g,一个内存也默认大小为4kb

##### 优点
提高内存安全性

##### 特点
每个进程都有它自己的虚拟内存
虚拟内存的大小取决于系统的体系结构

### 进程、线程、协程区别

#### 进程

进程是一个程序在一个数据集中的一次动态执行过程,可以简单理解为“正在执行的程序”,它是CPU 资源分配和调度的独立单位

是一个动态概念;由程序、数据和进程控制块组成。系统进行资源分配、调度和管理的最小单位。
#### 线程

线程是在进程之后发展出来的概念。 线程也叫轻量级进程,它是一个基本的 CPU 执行单元,也是程序执行过程中的最小单元,由线程 ID、程序计数器、寄存器集合和堆栈共同组成。一个进程可以包含多个线程
是进程的活动成分,是处理器分配资源的最小单位;可以共享进程的资源与地址空间。

#### 协程

协程是一种用户态的轻量级线程,又称微线程,英文名 Coroutine,协程的调度完全由用户控制


#### 并发执行机制

把一个处理器划分为若干个短的时间片,每个时间片依次轮流地执行处理各个应用程序,由于一个时间片很短,相对于一个应用程序来说,就好像是处理器在为自己单独服务一样,从而达到多个应用程序在同时进行的效果。
#### 多线程原理

多线程就是把操作系统中的这种并发执行机制原理运用在一个程序中,把一个程序划分为若干个子任务,多个子任务并发执行,每一个任务就是一个线程

### 进程间通信与信号机制

#### 通信方式
Expand Down

0 comments on commit b0e1073

Please sign in to comment.