mirror of
https://github.com/Estom/notes.git
synced 2026-04-08 21:39:17 +08:00
括号里面
This commit is contained in:
13
Latex/algorithme_and_equation/kuohao.tex
Normal file
13
Latex/algorithme_and_equation/kuohao.tex
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
\documentclass{article}
|
||||
\title{括号里面}
|
||||
\author{应用}
|
||||
\usepackage{ctex}
|
||||
\newcommad\degree{^\circ}
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
|
||||
\section{hello}
|
||||
hello world殷康龙
|
||||
\end{document}
|
||||
18
code_segment/shili.cpp
Normal file
18
code_segment/shili.cpp
Normal file
@@ -0,0 +1,18 @@
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
int add(int a,int b){
|
||||
int c = a+b;
|
||||
return c;
|
||||
}
|
||||
|
||||
int main(){
|
||||
int a=10,b=11;
|
||||
add(a,b);
|
||||
int m = 10;
|
||||
while(m--){
|
||||
if(m>5){
|
||||
cout<<m<<endl;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
0
code_segment/signal_test.cpp
Normal file
0
code_segment/signal_test.cpp
Normal file
@@ -25,7 +25,7 @@
|
||||
* [ ] 操作系统
|
||||
* [ ] 基础知识
|
||||
* [ ] 关于同步异步机制的理解。总结各种语言、库、中间件、设计模式、数据库、操作系统的同步异步方式。
|
||||
* [ ] Linux底层原理和常见函数
|
||||
* [ ] Linux底层原理和常见函数。为什么说一切皆文件
|
||||
* [x] 数据库
|
||||
* [x] 基础知识
|
||||
* [x] MySQL
|
||||
|
||||
34
工作日志/2021年9月4日-括号里面.md
Normal file
34
工作日志/2021年9月4日-括号里面.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# 括号里面
|
||||
|
||||
|
||||
|
||||
## 括号概念
|
||||
|
||||
|
||||
## 括号历史
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 括号作用
|
||||
|
||||
### 文学表达上
|
||||
|
||||
|
||||
### 常用的含义
|
||||
|
||||
|
||||
|
||||
### 数学运算中
|
||||
|
||||
|
||||
|
||||
### 计算机中
|
||||
|
||||
|
||||
|
||||
|
||||
## 括号故事与文字游戏
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
> 5. OS结构设计
|
||||
|
||||
## 1 操作系统的目标和作用
|
||||
|
||||

|
||||
### 定义
|
||||
|
||||
* 操作系统(Operating System,OS)是计算机系统最基础的系统软件,管理软硬件资源、控制程序执行,改善人机界面,合理组织计算机工作流程,为用户使用计算机提供良好运行环境。
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
### 进程的特征
|
||||
|
||||
* 结构特征:由程序段、数据段和 PCB 三部分便构成了进程实体。
|
||||
* 动态性:进程的实质是进程实体的一次执行过程,包含创建、调度、撤销。进程具有一定的声明周期。程序是一组指令的集合,是静态的。
|
||||
* 并发性:这是指多个进程实体同存于内存中,且能在一段时间内同时运行。
|
||||
* 动态性:进程的实质是进程实体的一次执行过程,包含创建、调度、撤销。进程具有一定的声明周期。程序是一组指令的集合,是静态的。
|
||||
* 独立性:独立性是指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。
|
||||
* 异步性:这是指进程按各自独立的、 不可预知的速度向前推进,或说进程实体按异步方式运行。
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 2.2 进程控制
|
||||
|
||||
> 上一节主要从状态的角度介绍了静态的状态有哪些。这一节朱啊哟介绍状态之间如何切换,引起切换的原因,和切换的步骤。
|
||||
> 上一节主要从状态的角度介绍了静态的状态有哪些。这一节介绍状态之间如何切换,引起切换的原因,和切换的步骤。
|
||||
> 7中状态主要包括创建、终止、就绪、阻塞、执行、静态阻塞、静态就绪。
|
||||
> 状态转换主要包括:创建、终止(释放)、阻塞、唤醒、调度、挂起、激活。
|
||||
|
||||
@@ -73,8 +73,8 @@
|
||||
|
||||
### 进程挂起的过程
|
||||
|
||||
1. 首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪; 对于活动阻塞状态的进程,则将之改为静止阻塞。为
|
||||
2. 了方便用户或父进程考查该进程的运行情况而把该进程的 PCB 复制到某指定的内存区域。
|
||||
1. 首先检查被挂起进程的状态,若处于活动就绪状态,便将其改为静止就绪; 对于活动阻塞状态的进程,则将之改为静止阻塞。
|
||||
2. 为了方便用户或父进程考查该进程的运行情况而把该进程的 PCB 复制到某指定的内存区域。
|
||||
3. 最后,若被挂起的进程正在执行,则转向调度程序重新调度
|
||||
|
||||
### 进程激活的过程
|
||||
|
||||
@@ -5,9 +5,11 @@
|
||||
### 两种制约关系
|
||||
> 针对两种制约关系,合作制约关系和互斥制约关系,需要通过同步机制实现。
|
||||
|
||||
- 直接制约关系(合作/同步)。由于多个进程相互合作产生,使得进程有一定的先后执行关系。
|
||||
- 直接制约关系(同步)。由于多个进程相互合作产生,使得进程有一定的先后执行关系。
|
||||
- 间接制约关系(互斥)。由于多个进程资源共享产生,多个进程在同一时刻只有一个进程能进入临界区。
|
||||
|
||||
|
||||
> 显然,同步是一种更为复杂的互斥,而互斥是一种特殊的同步。也就是说互斥是两个任务之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要安照某种次序来运行相应的线程(也是一种互斥)!因此互斥具有唯一性和排它性,但互斥并不限制任务的运行顺序,即任务是无序的,而同步的任务之间则有顺序关系。
|
||||
### 临界资源和临界区
|
||||
* 共享的互斥资源称为**临界资源**。
|
||||
* 对临界资源进行访问的那段代码称为**临界区**。
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
### 进程通信的实现划分
|
||||
* 基础进程通信机制。只能传递状态和整数值(控制信息)。特点:传送信息量小,效率低,每次通信传递的信息量固定,若传递较多信息则需要进行多次通信。编程复杂:用户直接实现通信的细节,容易出错。
|
||||
* 条件变量、信号量、管程
|
||||
* 锁、信号量、条件变量
|
||||
* 信号signal wait notify
|
||||
* 共享内存通信机制
|
||||
* 共享内存。(可以通过信号量控制)
|
||||
|
||||
1
操作系统/Linux系统分析.md
Normal file
1
操作系统/Linux系统分析.md
Normal file
@@ -0,0 +1 @@
|
||||
##
|
||||
43
操作系统/Readme.md
Normal file
43
操作系统/Readme.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# 同步异步
|
||||
|
||||
> 经过长久的观察发现。同步异步,是一个跨越所有领域的知识的共同点。
|
||||
|
||||
> 发现,这一系列同步异步相关内容。可以抽象成一些共通的模型和方式。这些模型和方式,应该是凌驾于语言和应用场景之上的。
|
||||
|
||||
|
||||
> 而我要做的是,对这一系列的同步异步场景,抽象出共通的模式模型,然后针对每一种模式模型,总结相关的场景和操作。对相关内容进行跨领域跨语言各个场景的总结。
|
||||
|
||||
|
||||
## 本质原理
|
||||
### 相关领域
|
||||
|
||||
|
||||
1. 操作系统的进程线程协程之间可以同步异步(Linux并发编程)
|
||||
2. IO也可以同步异步(LinuxIO编程)
|
||||
3. 计算机网络通信可以是同步异步(Linux网络编程)
|
||||
|
||||
4. 设计模式中可能包含同步异步的模式(reactor、Proactor)、
|
||||
|
||||
5. 数据库中的数据读取可以是同步异步、
|
||||
6. C++中的多线程同步异步和异步IO、
|
||||
7. Python的多线程和协程asyncio的实现、
|
||||
8. go的channel并发机制、
|
||||
9. nodejs的单线程并发、
|
||||
10. java的多线程同步io和异步io
|
||||
|
||||
|
||||
### 该领域相关的问题或者说概念名词
|
||||
|
||||
|
||||
* 并发与并行
|
||||
* 单线程并发
|
||||
* 多线程并发(并行)
|
||||
* 机制:
|
||||
* 事件响应机制(event handler)
|
||||
* 消息传递机制(消息队列IPC)
|
||||
* 回调机制(call back)
|
||||
* IO
|
||||
* IO多路复用Poll、epoll、select
|
||||
* 异步?非阻塞。
|
||||
* 同步?阻塞
|
||||
* 同步?轮询
|
||||
BIN
操作系统/image/2021-09-04-08-49-51.png
Normal file
BIN
操作系统/image/2021-09-04-08-49-51.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 333 KiB |
Binary file not shown.
@@ -17,9 +17,9 @@
|
||||
|
||||
3. OS实现了对计算机资源的抽象
|
||||
|
||||
**3.为什么说OS实现了对计算机资源的抽象?**
|
||||
**3.为什么说OS实现了对计算机资源的抽象?为什么说Linux一切皆文件?**
|
||||
|
||||
答:OS首先在裸机上覆盖一层I/O设备管理软件,实现了对计算机硬件操作的第一层次抽象;在第一层软件上再覆盖文件管理软件,实现了对硬件资源操作的第二层次抽象。OS 通过在计算机硬件上安装多层系统软件,增强了系统功能,隐藏了对硬件操作的细节,由它们共同实现了对计算机资源的抽象。
|
||||
答:OS首先在裸机上覆盖一层I/O设备管理软件,实现了对计算机硬件操作的第一层次抽象;在第一层软件上再覆盖文件管理软件,实现了对硬件资源操作的第二层次抽象。OS 通过在计算机硬件上安装多层系统软件,增强了系统功能,隐藏了对硬件操作的细节,由它们共同实现了对计算机资源的抽象。不同的资源实现相同的接口,就可以实现可扩展性。
|
||||
|
||||
**4.试说明推动多道批处理系统形成和发展的主要动力是什么?**
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ this 不是指向类。而是在实例化的时候与当前类的实例也就是
|
||||
在C++和java这种只能传递基本数据类型和构造数据类型的语言中,即函数不作为数据类型的语言中,可以通过传递整个对象的方法,使得被调用者,能够通过调用者对象的指针,进行回调,这也是设计模式的一种。(观察者模式?)
|
||||
|
||||
|
||||
关于回调函数的本质理解:当其他程序执行时,能够通过回调函数,转移进程控制权限,给调用者。可以把调用者与被调用者分开。调用者能够显式调用被调用者,同时被调用这能通过回调函数隐式调用调用者。
|
||||
关于回调函数的本质理解:当其他程序执行时,能够通过回调函数,转移进程控制权限,给调用者(这里并没有转移控制权,而是保留控制权在本地,完成不可知的后续处理)。可以把调用者与被调用者分开。调用者能够显式调用被调用者,同时被调用这能通过回调函数隐式调用调用者。
|
||||
|
||||
关于回调函数的本质理解:回调函数在同一个层次内是没有用的,或者说没有必要的。如果一个人,在实现一个层次内部的函数执行权限转移过程中,可以直接进行相互调用,因为本质上,两个部分是完全可知的。但是在不同层次的调用中,例如用户层与系统层中,用户层调用系统层,可以通过显式调用,但是系统层并不会考虑用户层的具体实现,对用户层是不可知的。这个时候,系统层会通过传递来的回调函数,将进程控制权交给用户层。
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
2. 当然两者似乎也有重合的部分。例如在socket编程(网络编程)网络进程通信过程中,即是一种**网络进程通信(两个远程进程)**,也是一种**网络IO过程(一个进程与网卡设备IO)**。可以看成两个远程的网络进程通信,也可以看成单个线程与本地网卡设备的IO过程。
|
||||
|
||||
3. 所以在某种程度上。可以把两个进程的通信,看成某一个用户进程的IO过程,而另一个进程看成是设备。
|
||||
3. 所以在某种程度上。可以把两个进程的通信,看成某一个用户进程的IO过程,而另一个进程看成是内核。
|
||||
|
||||
## 4 实现方式
|
||||
### 同步阻塞通信
|
||||
@@ -75,10 +75,10 @@
|
||||
> 此种方式下是指应用发起一个IO操作以后,不等待内核IO操作的完成,等内核完成IO操作以后会通知应用程序,这其实就是同步和异步最关键的区别,同步必须等待或者主动的去询问IO是否完成,那么为什么说是阻塞的呢?因为此时是通过select系统调用来完成的,而select函数本身的实现方式是阻塞的,而采用select函数有个好处就是它可以同时监听多个文件句柄,从而提高系统的并发性!
|
||||
|
||||
|
||||
### 实现并行编程的几种方法
|
||||
### 实现并发编程的几种方法
|
||||
|
||||
1. java 多线程。
|
||||
2. nodejs 单线程异步回调。非阻塞异步回调。Proactor模式
|
||||
3. linux 单线程IO复用。select/poll/epoll事件回调。多路堵塞,同步回调。reactor模式
|
||||
|
||||
> 这里所谓的什么机制、什么方法。都是设计模式的一部分。通过某种设计模式,实现并行编程:异步回调模式、事件回调模式等。
|
||||
> 这里所谓的什么机制、什么方法。都是设计模式的一部分。通过某种设计模式,实现并发编程:异步回调模式、事件回调模式等。
|
||||
@@ -1,3 +1,5 @@
|
||||
## 操作系统的基本特征
|
||||
|
||||
## 1 进程的三态模型、五态模型、七态模型
|
||||
|
||||
1. 创建
|
||||
|
||||
@@ -300,3 +300,13 @@ Stream 是新增加的数据类型,它与其它数据类型一样,每个写
|
||||
|
||||
* 生产者限流:避免消费者处理不及时,导致持续积压
|
||||
* 丢弃消息:中间件丢弃旧消息,只保留固定长度的新消息
|
||||
|
||||
|
||||
在发布消息时,你可以指定队列的最大长度,防止队列积压导致内存爆炸。
|
||||
```
|
||||
// 队列长度最大10000
|
||||
127.0.0.1:6379> XADD queue MAXLEN 10000 * name zhangsan
|
||||
"1618473015018-0"
|
||||
当队列长度超过上限后,旧消息会被删除,只保留固定长度的新消息。
|
||||
```
|
||||
这么来看,Stream 在消息积压时,如果指定了最大长度,还是有可能丢失消息的。
|
||||
Reference in New Issue
Block a user